.shell{max-width:460px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 20px 0}
.head{display:flex;justify-content:space-between;align-items:center;min-height:44px}
.page{flex:1;padding:12px 0 96px}
.splash{position:fixed;inset:0;background:#6C4A6C;display:grid;place-items:center;z-index:50;animation:fade .5s ease 2.7s forwards}
.splash img{width:min(60vw,240px)}
:root[data-mode="light"] .splash{background:#EFE7F4}
@keyframes fade{to{opacity:0;visibility:hidden}}
.hero{padding-top:8vh}
.hero p{margin-top:12px;color:var(--muted);font-size:16px}
.tabs{position:fixed;left:0;right:0;bottom:0;background:var(--ink);border-top:1px solid var(--line);padding:8px 0 max(8px,env(safe-area-inset-bottom))}
.tabs div{max-width:460px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:0 12px}
.tabs button{background:none;border:0;padding:8px 4px;border-radius:12px;font-size:12px;font-weight:700;color:var(--muted);display:grid;gap:2px;justify-items:center}
.tabs button[aria-current="page"]{color:var(--fg);background:var(--card-on)}
.tabs svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7}
.pass{background:linear-gradient(135deg,var(--card-on),var(--card));border:1px solid var(--line);border-radius:24px;padding:20px;display:grid;gap:12px;text-align:left;width:100%}
.pass.off{opacity:.55}
.pass h3{font-size:20px}
.zones{display:flex;gap:6px;flex-wrap:wrap}
.overlay{position:fixed;inset:0;background:var(--ink);z-index:40;display:flex;flex-direction:column;align-items:center;padding:max(16px,env(safe-area-inset-top)) 20px 24px;overflow:auto}
.qrbox{background:#fff;padding:16px;border-radius:24px;width:min(78vw,320px);margin:18px 0 12px}
.qrbox svg{display:block;width:100%;height:auto}
.token{font-family:var(--mono);font-size:15px;letter-spacing:.06em;text-align:center;word-break:break-all}
.list{display:grid;gap:10px}
.item{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.empty{text-align:center;padding:48px 12px;color:var(--muted)}

/* Phase 1: onboarding, Around me, card */
.tabs div{grid-template-columns:repeat(6,1fr)}
.tabs button{font-size:10.5px;padding:8px 2px}
.ok-text{color:var(--ok)}
.onb h1.ob,h1.ob{font-size:34px;margin:10px 0 8px}
.seg3{display:flex;gap:6px;margin:6px 0 10px}
.seg3 i{flex:1;height:3px;border-radius:9px;background:var(--line)}
.seg3 i.on{background:var(--signal)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{cursor:pointer;font-family:inherit;color:var(--fg)}
.chip.on{background:var(--fg);color:var(--ink);border-color:var(--fg)}
.fld2{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);background:var(--card);border-radius:16px;padding:14px;margin-top:10px}
.obc{width:min(68%,260px);margin:22px auto 26px;transform:rotate(-5deg)}
.tc{aspect-ratio:1.586;border-radius:20px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 22px 34px -14px rgba(43,27,45,.55),inset 0 0 0 1px rgba(255,255,255,.18);font-size:12px;width:100%}
.tc .r1{display:flex;justify-content:space-between;align-items:center}
.tc .r1.bot{align-items:flex-end}
.tc .ico{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.2);display:grid;place-items:center}
.tc .cstat{display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:.14em;font-size:10px}
.tc .dt{width:7px;height:7px;border-radius:50%;background:#3DDC84;display:inline-block}
.tc .cname{font-size:22px;letter-spacing:-.02em;line-height:1.1;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc .cnum{letter-spacing:.14em;font-size:11px;opacity:.8;font-family:var(--mono)}
.cardwrap{width:min(100%,340px);margin:4px auto}
.orb{margin:0 -8px;color:var(--fg);border-radius:50%;max-width:380px;justify-self:center;width:100%}
.orb svg{width:100%;height:auto;overflow:visible}
.glass{display:block;width:100%;text-align:left;position:relative;border:1px solid var(--line);background:var(--card);border-radius:20px;padding:16px;cursor:pointer}
.glass .cd{position:absolute;right:16px;top:12px;text-align:center;line-height:1}
.glass .cd b{display:block;font-family:var(--display);font-size:34px}
.glass .cd small{font-size:10px;letter-spacing:.12em;color:var(--muted)}
.swrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.swc{width:32px;height:32px;border-radius:50%;border:2px solid var(--line);cursor:pointer}
.swc.on{box-shadow:0 0 0 2px var(--ink),0 0 0 4px var(--fg)}
.tapz{display:flex;flex-direction:column;align-items:center;gap:12px;margin:26px auto;background:none;border:0;cursor:pointer;color:var(--fg)}
.ringc{width:120px;height:120px;border-radius:50%;border:3px solid var(--signal);display:grid;place-items:center;font-size:40px}
.tapz.go .ringc{animation:ping 1.2s ease-out infinite}
@keyframes ping{0%{box-shadow:0 0 0 0 var(--glow)}100%{box-shadow:0 0 0 40px transparent}}
.result{border-radius:24px;padding:22px 18px;text-align:center;border:2px solid var(--ok);background:var(--ok-soft);margin:14px 0}
.result .big{font-family:var(--display);font-weight:800;font-size:32px;color:var(--ok)}
.cardwrap{width:min(100%,300px)}
.tc .cnum{white-space:nowrap}
.obc .tc .cname{font-size:15px;max-width:70%}
.obc .tc .cnum{font-size:9px}
.chips .hint{flex-basis:100%;margin:2px 0 0}

/* Live pass: a bar that runs down to the next code, so staff can see the code is moving (not a screenshot) */
.countdown{width:min(78vw,320px);height:6px;border-radius:99px;background:color-mix(in srgb,var(--fg) 15%,transparent);overflow:hidden;margin:-4px 0 10px}
.countdown i{display:block;height:100%;background:var(--signal);border-radius:99px;transition:width 1s linear}
@media (prefers-reduced-motion:reduce){.countdown i{transition:none}}
