:root{--bg:#070912;--panel:#ffffff09;--panel-line:#ffffff14;--ink:#eef2ff;--muted:#94a3b8;--pass-blue:#0b5888;--sky:#7dd3fc;--sky-soft:#e0f2fe;--violet:#a78bfa;--accent:linear-gradient(100deg, var(--sky), var(--violet));color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(48rem 32rem at 18% -6%, #7c5cff47, transparent 70%), radial-gradient(44rem 30rem at 85% 4%, #38bdf838, transparent 70%), radial-gradient(50rem 40rem at 50% 110%, #7c5cff24, transparent 70%), var(--bg);min-height:100vh;margin:0}a{color:var(--sky);text-decoration:none}a:hover{text-decoration:underline}a.topic{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline #ffffff40;text-decoration:underline #ffffff40}a.topic:hover{color:var(--sky);text-decoration-color:currentColor}abbr[title]{text-decoration:none}.shell{max-width:1180px;margin:0 auto;padding:0 24px 40px;overflow-x:clip}.topbar{justify-content:space-between;align-items:center;padding:22px 0;display:flex}.topbar .logo{color:#fff;flex-shrink:0;width:128px;display:block}@media (width<=480px){.topbar .pill{display:none}}.topbar .links{align-items:center;gap:18px;display:flex}.topbar .links>a{color:var(--muted);font-size:14px}.topbar .links>a:hover{color:var(--ink);text-decoration:none}.pill{white-space:nowrap;color:var(--muted);border:1px solid var(--panel-line);border-radius:999px;padding:6px 12px;font-size:13px}.pill.warn{color:#fcd34d;border-color:#fcd34d59}.pill .glyph{vertical-align:-2px;width:14px;height:14px;margin-right:7px}.intro{text-align:center;padding:40px 0 52px}.intro h1{letter-spacing:-.03em;margin:0;font-size:clamp(34px,5.4vw,60px);font-weight:800;line-height:1.04}.intro h1 span{background:var(--accent);color:#0000;-webkit-background-clip:text;background-clip:text}.intro p{color:var(--muted);max-width:36em;margin:18px auto 0;font-size:18px;line-height:1.5}.stage{grid-template-columns:1fr minmax(320px,380px) 1fr;align-items:center;gap:28px;display:grid}.friend{border:1px solid var(--panel-line);background:linear-gradient(#ffffff0e,#ffffff04);border-radius:24px;align-content:start;gap:14px;padding:28px;display:grid;box-shadow:inset 0 1px #ffffff0f}.friend .kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--sky);font-size:12px;font-weight:600}.friend h2{letter-spacing:-.02em;margin:0;font-size:28px;font-weight:800}.friend p{color:var(--muted);margin:0;line-height:1.55}.friend .visual{border-radius:16px;place-items:center;height:120px;display:grid}.friend.idtech .visual{background:radial-gradient(closest-side,#38bdf838,#0000)}.friend.idtech .visual img{filter:invert()hue-rotate(180deg)saturate(1.3);width:62%}.friend.ninja .visual{background:radial-gradient(closest-side,#a78bfa61,#0000)}.friend.ninja .visual img{filter:drop-shadow(0 0 1px #ffffff40);height:132px}.friend .go{justify-self:start;font-weight:600}.pass-wrap{justify-items:center;gap:18px;display:grid;position:relative}.deck{z-index:1;width:100%;display:grid;position:relative}.peek{z-index:-1;pointer-events:none;filter:drop-shadow(0 0 1px #ffffff52)drop-shadow(0 6px 18px #a78bfa47);width:104px;animation:.35s ease-out peek-in;position:absolute;top:-32px;right:-20px}.peek[data-corner=bottom-right]{top:auto;bottom:-32px;transform:scaleY(-1)}.peek[data-corner=bottom-left]{inset:auto auto -32px -20px;transform:scale(-1)}.peek[data-corner=top-left]{left:-20px;right:auto;transform:scaleX(-1)}@keyframes peek-in{0%{opacity:0;scale:.8}}.deck>.pass{opacity:0;visibility:hidden;grid-area:1/1;transition:opacity .25s,transform .25s,visibility .25s,box-shadow .3s;transform:scale(.98)}.deck>.pass.on{opacity:1;visibility:visible;transform:none}.pass{background:var(--pass-blue);color:#fff;text-align:left;width:100%;font:inherit;cursor:pointer;border:0;border-radius:18px;flex-direction:column;padding:0;display:flex;overflow:hidden;box-shadow:0 30px 60px #00000073,0 0 0 1px #ffffff14}.pass.reading{box-shadow:0 30px 60px #00000073,0 0 0 2px #7dd3fcb3,0 0 48px #a78bfa66}.pass.tapped{box-shadow:0 30px 60px #00000073,0 0 0 2px #47d18ccc,0 0 50px #47d18c59}.pass header{justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.pass header img{color:#fff;width:92px}.pass header span{letter-spacing:.1em;text-transform:uppercase;color:var(--sky-soft);font-size:11px}.pass .strip{background:50%/cover no-repeat;align-items:flex-end;height:128px;display:flex;box-shadow:inset 0 -56px 40px -16px #00000073}.pass .primary{padding:12px 16px}.pass .primary.plain{padding:6px 16px 2px}.pass .big{letter-spacing:-.01em;font-size:26px;font-weight:600}.pass .muted{color:#ffffff8c}.pass .fields{justify-content:space-between;gap:16px;padding:14px 16px 16px;display:flex}.pass .fields>div:last-child:not(:first-child){text-align:right}.pass .fields+.fields{margin-top:-10px}.pass .label{letter-spacing:.1em;text-transform:uppercase;color:var(--sky-soft);font-size:10px;font-weight:600}.pass .value{font-size:19px;font-weight:500}.pass .tap-line{background:#00000038;border-radius:12px;min-height:64px;margin:auto 16px 16px;padding:12px 14px}.pass .tap-line .value{word-break:break-word;font-size:17px}.pass .tap-line code{color:var(--sky-soft);word-break:break-all;font-size:11px}.carousel{align-items:center;gap:10px;display:flex}.carousel .quiet{box-shadow:none;color:var(--muted);padding:4px 8px}.dot{background:#ffffff40;border-radius:50%;width:9px;height:9px;padding:0}.dot.on{background:var(--accent)}.wallet-badge{padding:5px;display:block}.wallet-badge img{height:48px;display:block}.hint{color:var(--muted);text-align:center;max-width:26em;margin:0;font-size:13px}.panel{background:var(--panel);border:1px solid var(--panel-line);border-radius:24px;align-items:center;gap:18px;max-width:440px;margin:36px auto 20px;padding:22px 26px;display:flex}.panel>div{flex:1;gap:4px;display:grid}.panel h3{margin:0;font-size:18px}.panel p{color:var(--muted);margin:0;font-size:14px}button{font:inherit;background:var(--accent);color:#0b1020;cursor:pointer;border:0;border-radius:999px;justify-self:start;padding:10px 18px;font-size:14px;font-weight:600}button.quiet{color:var(--ink);box-shadow:inset 0 0 0 1px var(--panel-line);background:0 0}button:disabled{opacity:.35;cursor:default}.panel.pending>*{visibility:hidden}.panel.unsupported{opacity:.6}.panel .problem{color:#fca5a5}.panel{transition:border-color .3s}.panel.ask{align-items:flex-start}.panel .actions{gap:10px;margin-top:10px;display:flex}button.link{color:var(--muted);text-underline-offset:3px;background:0 0;margin-top:6px;padding:0;font-size:12px;font-weight:500;text-decoration:underline}.panel.miss{border-color:#fcd34d99}.panel.miss p{color:#fcd34d}.praying{filter:drop-shadow(0 0 1px #ffffff47)drop-shadow(0 4px 12px #a78bfa40);width:64px}.contact{text-align:center;color:var(--muted);margin:36px 0 12px}details.log{max-width:440px;color:var(--muted);margin:0 auto;font-size:13px}details.log summary{cursor:pointer;text-align:center}details.log pre{border:1px solid var(--panel-line);background:#00000059;border-radius:12px;max-height:240px;padding:12px;font-size:12px;overflow:auto}@media (width<=980px){.stage{grid-template-columns:1fr}.intro{padding:24px 0 28px}.pass-wrap{order:-1;width:100%;max-width:380px;margin:8px auto 0}.friend{min-height:0}}.thumb{z-index:40;pointer-events:none;transform-origin:0 62%;width:170px;animation:4.4s cubic-bezier(.3,1.35,.5,1) both thumb-peek;position:fixed}.thumb[data-corner=bottom-left]{--rot:-30deg;--flip:1;--out:-60%, 60%;bottom:-78px;left:-24px}.thumb[data-corner=bottom-right]{--rot:30deg;--flip:-1;--out:60%, 60%;bottom:-78px;left:calc(100vw + 24px)}.thumb[data-corner=top-left]{--rot:80deg;--flip:1;--out:-60%, -60%;top:-122px;left:-24px}.thumb[data-corner=top-right]{--rot:-80deg;--flip:-1;--out:60%, -60%;top:-122px;left:calc(100vw + 24px)}@keyframes thumb-peek{0%,to{transform:translate(var(--out)) rotate(var(--rot)) scaleX(var(--flip))}10%,89%{transform:translate(0, 0) rotate(var(--rot)) scaleX(var(--flip))}}.thumb.leaving{animation:.3s ease-in both thumb-leave}@keyframes thumb-leave{0%{transform:translate(0, 0) rotate(var(--rot)) scaleX(var(--flip))}to{transform:translate(var(--out)) rotate(var(--rot)) scaleX(var(--flip))}}@media (prefers-reduced-motion:reduce){.thumb{display:none}}
