:root{
  --black:#000;
  --ink:#070707;
  --soft:#121212;
  --paper:#fff;
  --milk:#f6f6f3;
  --smoke:#e7e7e2;
  --line:rgba(0,0,0,.12);
  --lineDark:rgba(255,255,255,.18);
  --muted:#74746f;
  --mutedDark:rgba(255,255,255,.58);
  --glass:rgba(255,255,255,.10);
  --glassStrong:rgba(255,255,255,.17);
  --shadow:0 32px 90px rgba(0,0,0,.18);
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --sans:Inter,Manrope,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif;
  --danger:#000;
  --ok:#000;
}

*{box-sizing:border-box}

html,body{margin:0;min-height:100%;font-family:var(--sans);background:var(--black);color:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}

button,a,input,select{font:inherit}

button,a{cursor:pointer}

a{text-decoration:none;color:inherit}

[hidden]{display:none!important}

.eyebrow{margin:0 0 10px;text-transform:uppercase;letter-spacing:.22em;font-size:10px;font-weight:800;color:var(--muted)}

.hint,.fine{font-size:12px;color:var(--muted);line-height:1.45}
.bad{color:var(--danger)}
.ok{color:var(--ok)}

.primary,.outline{min-height:46px;border-radius:999px;padding:0 18px;border:1px solid #000;background:#000;color:#fff;text-transform:uppercase;letter-spacing:.12em;font-size:10px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap}
.outline{background:#fff;color:#000;border-color:var(--line)}
.outline.danger,.danger{color:var(--danger);border-color:rgba(139,17,17,.22)}
.small{min-height:36px;padding:0 13px;font-size:9px}

input,select{width:100%;border:1px solid var(--line);background:#fff;color:#000;padding:14px 15px;border-radius:2px;outline:none}
input:focus,select:focus{border-color:#000;box-shadow:0 0 0 3px rgba(0,0,0,.07)}
label{display:grid;gap:8px;text-transform:uppercase;letter-spacing:.13em;font-size:9px;font-weight:900;color:#777}
.statusLine,.saveStatus{min-height:20px;color:var(--muted);font-size:13px}

/* PHONE CAMERA — black/white command layer */
.pickitApp{background:#000;color:#fff;overflow:hidden}
.cameraShell{position:fixed;inset:0;background:#000;overflow:hidden}
.cameraVideo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;filter:none;transform:scaleX(-1)}
.cameraShade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.42) 0%,rgba(0,0,0,.08) 28%,rgba(0,0,0,0) 54%,rgba(0,0,0,.26) 100%);pointer-events:none}
.cameraTop{position:absolute;top:calc(env(safe-area-inset-top) + 14px);left:0;right:0;z-index:8;pointer-events:none}
.wordmark{display:none}
.wordmark b,.wordmark span{display:none}
.pLogoBtn{position:absolute;right:calc(env(safe-area-inset-right) + 14px);top:0;width:58px;height:58px;padding:0;margin:0;border:0;border-radius:18px;background:transparent;color:#fff;display:grid;place-items:center;box-shadow:none;appearance:none;-webkit-appearance:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;pointer-events:auto}
.pLogoBtn:focus-visible{outline:2px solid #4db8ff;outline-offset:3px}
.pLogoBtn:active,.qrFloat:active{transform:scale(.96)}
.pLogoBtn::before{content:"";position:absolute;inset:6px;border-radius:18px;background:rgba(255,255,255,.018);box-shadow:0 10px 28px rgba(0,0,0,.18);pointer-events:none}
.pLogoAdaptive{position:relative;width:48px;height:48px;display:block;pointer-events:none}
.pLogoSkin{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 220ms ease;filter:drop-shadow(0 10px 22px rgba(0,0,0,.22));pointer-events:none;will-change:opacity}
.pLogoBtn[data-skin="dark"] .pLogoSkin--dark{opacity:1}
.pLogoBtn[data-skin="light"] .pLogoSkin--light{opacity:1}
.pMark{display:none}
.qrFloat{position:absolute;right:20px;top:calc(env(safe-area-inset-top) + 74px);z-index:4;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.34);background:rgba(0,0,0,.28);backdrop-filter:blur(18px);color:#fff;font-weight:900;letter-spacing:-.04em;font-size:12px;box-shadow:0 18px 55px rgba(0,0,0,.34)}
.shutterBtn{position:absolute;left:50%;top:53%;transform:translate(-50%,-50%);z-index:4;width:132px;height:132px;border-radius:50%;border:1px solid rgba(255,255,255,.46);background:radial-gradient(circle at 50% 48%,rgba(255,255,255,.96),rgba(255,255,255,.78) 42%,rgba(255,255,255,.16) 66%,rgba(255,255,255,.06));box-shadow:0 0 0 12px rgba(255,255,255,.07),0 40px 120px rgba(0,0,0,.42);color:#000;font-weight:950;letter-spacing:.16em;font-size:12px;text-align:center;text-transform:uppercase}
.shutterBtn:active{transform:translate(-50%,-50%) scale(.955)}
.shutterBtn:disabled{opacity:.7}
.feedback{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 72px);transform:translateX(-50%);z-index:8;min-height:40px;display:grid;place-items:center;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:#fff;text-shadow:0 16px 36px rgba(0,0,0,.64)}
.feedback.flash{font-size:42px;letter-spacing:-.05em}
.sheet{position:absolute;left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 12px);z-index:12;max-height:72vh;overflow:auto;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:rgba(0,0,0,.74);backdrop-filter:blur(26px);box-shadow:0 38px 110px rgba(0,0,0,.58);padding:12px 14px 16px}
.sheetHandle{width:40px;height:3px;border-radius:99px;background:rgba(255,255,255,.28);margin:0 auto 15px}
.sheetHead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.sheetHead h2{margin:0;color:#fff;font-size:34px;line-height:.88;letter-spacing:-.075em}
.xBtn{width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;font-size:21px}
.miniGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}
.miniGrid article{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);border-radius:18px;padding:12px}
.miniGrid span{display:block;color:var(--mutedDark);text-transform:uppercase;letter-spacing:.16em;font-size:8px;font-weight:900}
.miniGrid b{display:block;margin-top:6px;color:#fff;font-size:20px;letter-spacing:-.05em}
.walletActions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.glassAction{min-height:46px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.06);color:#fff;border-radius:16px;text-transform:uppercase;letter-spacing:.12em;font-size:9px;font-weight:900;display:flex;align-items:center;justify-content:center}
.rewardList{display:grid;gap:8px;margin-top:15px}
.rewardChoice{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;border-radius:18px;padding:15px;text-align:left}
.rewardChoice b{display:block;font-size:17px;letter-spacing:-.04em}
.rewardChoice span{display:block;margin-top:4px;color:rgba(255,255,255,.62);font-size:12px}
.qrBox{margin-top:16px;text-align:center}
.qrRender{display:inline-grid;background:#fff;padding:12px;border-radius:18px}
.qrRender canvas{width:210px!important;height:210px!important}
.qrBox code{display:block;margin:10px auto 2px;color:#fff;letter-spacing:.13em;font-family:var(--mono)}

/* DESKTOP GATEWAY */
.deskGateway{min-height:100vh;background:#000;color:#fff;display:grid;place-items:center;padding:5vw}
.gatewayHero{max-width:1040px;width:100%;border:1px solid rgba(255,255,255,.14);border-radius:2px;padding:58px;background:#050505;box-shadow:0 42px 120px rgba(0,0,0,.5)}
.gatewayHero h1{margin:0;font-size:clamp(58px,9vw,128px);line-height:.82;letter-spacing:-.09em;font-weight:900}
.gatewayHero p:not(.eyebrow){max-width:620px;font-size:18px;color:rgba(255,255,255,.64);line-height:1.5}
.gatewayLinks{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.gatewayLinks .primary{background:#fff;color:#000;border-color:#fff}
.gatewayLinks .outline{background:#000;color:#fff;border-color:rgba(255,255,255,.18)}

/* ADMIN / CONTROL DESKS */
.adminDesk,.impactWall{background:var(--milk);color:#000;min-height:100vh}
.adminShell,.impactShell{max-width:1500px;margin:0 auto;padding:32px 34px 70px}
.compactDesk{max-width:1160px}
.adminLogin{max-width:560px;margin:9vh auto;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:2px;padding:42px}
.adminLogin h1{margin:0;font-size:64px;line-height:.82;letter-spacing:-.085em;font-weight:900}
.adminLogin p:not(.eyebrow){color:var(--muted);font-size:17px}
.loginRow{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:22px}
.adminHeader,.impactHero{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;border-bottom:1px solid var(--line);padding-bottom:20px}
.adminHeader h1,.impactHero h1{margin:0;font-size:clamp(48px,6.8vw,92px);line-height:.82;letter-spacing:-.085em;font-weight:950}
.adminQuick,.impactHero nav{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.storageStatus{margin:12px 0 0;color:var(--muted);font-size:13px}
.systemReady{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}
.readyCard{background:#fff;border:1px solid var(--line);border-radius:2px;padding:16px}
.readyCard span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.14em;font-weight:900}
.readyCard b{display:block;margin-top:8px;font-size:22px;letter-spacing:-.055em}
.adminLayout{display:grid;grid-template-columns:208px 1fr;gap:16px}
.adminNav{position:sticky;top:18px;align-self:start;background:#fff;border:1px solid var(--line);border-radius:2px;padding:8px;box-shadow:0 18px 50px rgba(0,0,0,.05)}
.adminNav button{width:100%;min-height:39px;border:0;background:transparent;border-radius:0;text-align:left;padding:0 14px;color:#777;text-transform:uppercase;letter-spacing:.12em;font-size:9px;font-weight:900}
.adminNav button.active{background:#000;color:#fff}
.adminMain{display:grid;gap:16px}
.metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}
.metric{background:#fff;border:1px solid var(--line);border-radius:2px;padding:22px;box-shadow:0 16px 48px rgba(0,0,0,.05)}
.metric p{margin:0;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.16em;font-weight:950}
.metric b{display:block;margin-top:10px;font-size:38px;line-height:.9;letter-spacing:-.08em}
.metric small{display:block;margin-top:8px;color:#888}
.deskGrid{display:grid;gap:16px}
.deskGrid.two,.splitPanel{display:grid;grid-template-columns:1fr 1.35fr;gap:16px}
.tableCard,.editorCard{background:#fff;border:1px solid var(--line);box-shadow:0 18px 54px rgba(0,0,0,.05);border-radius:2px;padding:24px;overflow:auto}
.tableCard h2,.editorCard h2,.cardTitle h2{margin:0 0 14px;font-size:32px;line-height:.9;letter-spacing:-.075em;font-weight:900}
.cardTitle{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:12px}
.miniBtn{border:1px solid var(--line);border-radius:999px;background:#fff;padding:9px 12px;text-transform:uppercase;letter-spacing:.12em;font-size:9px;font-weight:900}
.editorCard{display:grid;gap:14px}
.wideEditor{max-width:920px}
.formGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;text-transform:uppercase;letter-spacing:.13em;font-size:9px;color:#777;padding:11px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:13px 10px;border-bottom:1px solid rgba(0,0,0,.08);vertical-align:top}
td b{letter-spacing:-.03em}
td small{display:block;color:#777;margin-top:4px}
.pill{display:inline-flex;align-items:center;min-height:27px;padding:0 10px;border-radius:999px;background:#efefeb;color:#000;font-size:9px;text-transform:uppercase;letter-spacing:.12em;font-weight:900}
.pill.ok{background:#000;color:#fff}
.pill.bad{background:#fff;color:#000;border:1px solid #000}
.readinessList{display:grid;gap:8px}
.readinessItem{display:flex;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,.08);padding:10px 0}
.exportGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.actionCard{border:1px solid var(--line);background:#fff;border-radius:2px;box-shadow:0 16px 52px rgba(0,0,0,.05);padding:26px;text-align:left;color:#000}
.actionCard span{font-size:30px;color:#000}
.actionCard b{display:block;margin-top:18px;font-size:28px;letter-spacing:-.075em}
.actionCard small{display:block;margin-top:7px;color:var(--muted)}
.impactHero{align-items:flex-end}
.impactHero p:not(.eyebrow){color:var(--muted);max-width:560px}
.rewarderDesk .metrics{grid-template-columns:repeat(4,1fr)}

@media(max-width:900px){.adminShell,.impactShell{padding:22px}
.adminHeader,.impactHero{display:grid}
.adminLayout,.deskGrid.two,.splitPanel{grid-template-columns:1fr}
.adminNav{position:relative;top:auto;display:flex;overflow:auto}
.adminNav button{min-width:118px;text-align:center}
.metrics,.systemReady,.exportGrid{grid-template-columns:repeat(2,1fr)}
.formGrid{grid-template-columns:1fr}
.adminLogin h1{font-size:54px}
.loginRow{grid-template-columns:1fr}
.cameraTop{left:0;right:0}
.shutterBtn{width:122px;height:122px}
}

@media(max-width:560px){.metrics,.systemReady{grid-template-columns:1fr 1fr}
.deskGateway{display:none!important}
.adminHeader h1,.impactHero h1{font-size:50px}
.adminShell,.impactShell{padding:16px}
.tableCard,.editorCard{padding:17px}
.walletActions{grid-template-columns:1fr}
.sheetHead h2{font-size:30px}
}

.miniBtn.danger{border-color:#000;background:#000;color:#fff}
.rewarderDesk .metrics{grid-template-columns:repeat(5,1fr)}

@media(max-width:900px){.rewarderDesk .metrics{grid-template-columns:repeat(2,1fr)}
}

.fieldStatus{position:absolute;left:50%;top:calc(env(safe-area-inset-top) + 92px);transform:translateX(-50%);z-index:6;border:1px solid rgba(255,255,255,.20);background:rgba(0,0,0,.22);backdrop-filter:blur(16px);color:rgba(255,255,255,.72);border-radius:999px;padding:7px 10px;text-transform:uppercase;letter-spacing:.13em;font-size:8px;font-weight:900;max-width:76vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.zoneTagFloat{position:absolute;right:20px;top:calc(env(safe-area-inset-top) + 124px);z-index:4;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.34);background:rgba(0,0,0,.28);backdrop-filter:blur(18px);color:#fff;font-weight:900;letter-spacing:-.04em;font-size:10px;box-shadow:0 18px 55px rgba(0,0,0,.34)}

.zoneTagFloat:active{transform:scale(.96)}

.tagForm{display:grid;gap:10px;margin-top:16px}
.tagForm label{display:grid;gap:6px;color:rgba(255,255,255,.62);text-transform:uppercase;letter-spacing:.13em;font-size:9px;font-weight:900}
.tagForm input{min-height:44px;border-radius:14px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.08);color:#fff;padding:0 12px;font:inherit;letter-spacing:0;text-transform:none}
.glassAction.strong{background:#fff;color:#000;border-color:#fff}
.pill.pending{background:#f1f1f1;color:#111}
.pill.rejected{background:#222;color:#fff}
.zoneSource{display:block;color:#777;font-size:11px;margin-top:4px}
.zoneActionSet{display:flex;gap:6px;flex-wrap:wrap}

.zoneCandidateBox{margin-top:18px;border-top:1px solid rgba(255,255,255,.12);padding-top:14px}
.zoneCandidateList{display:grid;gap:8px}
.zoneCandidate{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.055);border-radius:16px;padding:12px}
.zoneCandidate b{display:block;color:#fff;font-size:14px;letter-spacing:-.035em}
.zoneCandidate span{display:block;color:rgba(255,255,255,.58);font-size:11px;margin-top:3px}
.zoneVoteActions{display:flex;gap:7px}
.zoneVoteActions button{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:#fff;color:#000;font-weight:950}
.zoneVoteActions button:last-child{background:transparent;color:#fff}

.joinForm{display:grid;grid-template-columns:1fr auto auto;gap:8px;margin:10px 0 12px}
.joinForm input{min-width:0;background:rgba(255,255,255,.06);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:0 14px;height:42px}
.joinForm input::placeholder{color:rgba(255,255,255,.45)}

/* Rewarder onboarding + scanner terminal */
.applyBox{margin-top:24px;border-top:1px solid var(--line);padding-top:18px;text-align:left}
.applyBox summary{cursor:pointer;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.compactForm{margin-top:16px}
.scanActions{display:flex;gap:10px;align-items:center;margin:8px 0 14px}
.scannerPanel{border:1px solid var(--line);border-radius:22px;overflow:hidden;background:#000;margin:12px 0}
.scannerPanel video{width:100%;min-height:240px;object-fit:cover;display:block}
.scannerPanel .saveStatus{padding:10px 14px;margin:0;background:#fff;color:#000}
.pill.pending{background:#111;color:#fff;border-color:#111}
.zoneSource{display:block;margin-top:3px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}



.demoModeBadge{position:fixed;left:12px;bottom:12px;z-index:9999;padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#0b0f14;border:1px solid rgba(0,0,0,.12);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 30px rgba(0,0,0,.18)}

.habitBox{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);border-radius:18px;padding:12px;margin:12px 0}
.impactTrail{display:grid;gap:5px}
.impactTrail span{display:flex;justify-content:space-between;gap:10px}
.impactTrail b{color:#fff;font-weight:850}
