:root{--ink:#0b0a10;--bone:#f3eee6;--muted:#f3eee69e;--glass:#16131d99;--line:#f3eee624;--grad:linear-gradient(100deg, #cb79c1, #f0991b, #fca513, #d5cfd6, #79629a, #c38038);--display:"Italiana", "Didot", serif;--sans:"Manrope", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--ease-drawer:cubic-bezier(.32, .72, 0, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--ink);height:100%;color:var(--bone);font:400 15px/1.45 var(--sans);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}button{font:inherit;color:inherit}.world{-webkit-user-select:none;user-select:none;width:100%;height:100dvh;position:relative;overflow:hidden}#scene{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}#scene:active{cursor:grabbing}.glass{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px)}.hud-top{z-index:5;padding:calc(var(--safe-t) + 16px) 18px 0;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;top:0;left:0;right:0}.brand img{opacity:.92;height:13px;display:block}.modes{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);border-radius:999px;padding:3px;display:flex}.modes button{cursor:pointer;font:600 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:7px 14px;transition:background .25s,color .25s}.modes button[aria-selected=true]{background:var(--bone);color:var(--ink)}.icon-btn{cursor:pointer;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.icon-btn svg{width:18px;height:18px}.place{top:calc(var(--safe-t) + 70px);text-align:center;z-index:4;pointer-events:none;padding:0 24px;position:absolute;left:0;right:0}.place-eyebrow{font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0}.place-title{font:400 34px/1 var(--display);letter-spacing:.01em;margin:6px 0 0}.place-status{font:500 12px var(--mono);color:var(--muted);margin:8px 0 0}.hud-bottom{z-index:5;width:min(100%,460px);padding:0 16px calc(var(--safe-b) + 16px);gap:10px;display:grid;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.action{cursor:pointer;height:52px;font:700 15px var(--sans);letter-spacing:.01em;border:0;border-radius:18px;transition:transform .15s,opacity .2s}.action:active{transform:scale(.97)}.action.locked{background:var(--glass);color:var(--muted);border:1px solid var(--line);box-shadow:none;-webkit-backdrop-filter:blur(12px)}.action.shake{animation:.45s shake}.action[hidden]{display:none}.hint{text-align:center;font:500 11px var(--mono);color:var(--muted);letter-spacing:.04em;margin:0}.hint:empty{display:none}.card{border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);background:#16131dd1;border-radius:20px;grid-template-columns:52px 1fr 32px;align-items:center;gap:12px;padding:10px;animation:.35s cubic-bezier(.2,.9,.3,1) rise;display:grid}.card[hidden]{display:none}.card-swatch{border-radius:26px 26px 8px 8px;width:52px;height:68px;display:block}.card-body{min-width:0}.card-eyebrow{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0}.card-title{font:400 24px/1.05 var(--display);margin:2px 0 0}.card-status{font:500 12px var(--mono);color:var(--muted);margin:5px 0 0}.card-status.has{color:#ffd27a}.card-status.open{color:#9ff0c0}.card-close{cursor:pointer;background:#f3eee614;border:0;border-radius:50%;align-self:start;place-items:center;width:32px;height:32px;display:grid}.card-close svg{width:14px;height:14px}.keyring{scrollbar-width:none;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:18px;gap:6px;padding:7px;display:flex;overflow-x:auto}.keyring::-webkit-scrollbar{display:none}.keyring-count{font:600 11px var(--mono);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;flex:none;place-items:center;padding:0 10px;display:grid}.chip{cursor:pointer;font:600 11px var(--mono);letter-spacing:.04em;background:#f3eee612;border:1px solid #0000;border-radius:12px;flex:none;align-items:center;gap:6px;padding:5px 10px 5px 6px;display:flex}.chip.used{opacity:.45}.chip.pop{animation:.6s cubic-bezier(.2,1.6,.4,1) pop}.chip[aria-pressed=true]{border-color:var(--bone)}@keyframes pop{0%{transform:scale(.5)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:none}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.veil{z-index:15;opacity:0;pointer-events:none;transition:opacity .35s;position:absolute;inset:0}.veil.on{opacity:.85;transition:opacity .12s}.veil.hold{opacity:1;transition:opacity .4s ease-in}.toast{left:50%;top:calc(var(--safe-t) + 160px);z-index:25;opacity:0;pointer-events:none;color:var(--ink);font:600 12px var(--mono);white-space:nowrap;background:#f3eee6f2;border-radius:999px;padding:9px 15px;transition:all .3s;position:absolute;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.loading{z-index:30;background:var(--ink);font:500 12px var(--mono);color:var(--muted);letter-spacing:.1em;text-transform:uppercase;place-items:center;transition:opacity .6s;display:grid;position:absolute;inset:0}.loading.done{opacity:0;pointer-events:none}.world:before,.world:after{content:"";z-index:3;pointer-events:none;position:absolute;left:0;right:0}.world:before{background:linear-gradient(#0b0a10bf,#0b0a1000);height:170px;top:0}.world:after{background:linear-gradient(#0b0a1000,#0b0a10b8);height:230px;bottom:0}@media (width<=420px){.brand img{height:11px}.modes button{padding:7px 11px}.place-title{font-size:30px}}.toast{color:#fbf6ee;letter-spacing:.03em;background:linear-gradient(110deg,#1a1030,#3a1f5c 28%,#5b2a6e 50%,#2c1a52 72%,#1a1030) 0 0/300% 100%;border:1px solid #cb79c159;animation:6s linear infinite toast-drift;box-shadow:0 10px 34px -10px #5b2a6ee6,inset 0 1px #ffffff14}@keyframes toast-drift{to{background-position:300% 0}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.place-title:empty,.place-status:empty{display:none}.world[data-mode=walk] .place-eyebrow{color:var(--bone);letter-spacing:.16em}.world[data-mode=walk] .place-status{margin-top:4px}@property --spin{syntax:"<angle>";inherits:false;initial-value:0deg}.action{isolation:isolate;color:var(--bone);letter-spacing:.02em;background:radial-gradient(120% 160% at var(--mx,50%) var(--my,-20%), #fff4e229, transparent 55%), repeating-linear-gradient(90deg, #ffffff06 0 1px, transparent 1px 3px), linear-gradient(180deg, #221a2c, #120e18 60%, #0d0a12);font-weight:600;position:relative;box-shadow:0 12px 34px -14px #cb79c18c,inset 0 1px #ffffff1a,inset 0 -8px 18px -10px #000c}.action:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--spin), #cb79c1, #fff3e6 7%, #f0991b 14%, #4a2a10 21%, #fca513 29%, #fffaf0 35%, #d5cfd6 43%, #2e2540 52%, #79629a 60%, #f6e9ff 67%, #c38038 76%, #3a220e 84%, #cb79c1);-webkit-mask-composite:xor;padding:2px;animation:5s linear infinite metal-spin;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.action:after{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--spin), #cb79c12e, transparent 20%, #fca51324 35%, transparent 55%, #79629a2e 70%, transparent 88%);filter:blur(8px);animation:5s linear infinite metal-spin;position:absolute;inset:2px}@keyframes metal-spin{to{--spin:360deg}}.action.locked:before{filter:saturate(.2)brightness(.7);animation-duration:14s}.action.locked:after{opacity:.3}@media (prefers-reduced-motion:reduce){.action:before,.action:after{animation:none}}.keyring{cursor:pointer;text-align:left;width:100%;color:var(--bone);align-items:center;transition:border-color .2s,transform .15s;overflow:hidden}.keyring:hover{border-color:#f3eee647}.keyring:active{transform:scale(.985)}.keyring:after{content:"";border-left:1.5px solid var(--muted);border-top:1.5px solid var(--muted);flex:none;width:7px;height:7px;margin:3px 12px 0 auto;transform:rotate(45deg)}.chip{cursor:inherit;gap:7px;padding:5px 9px 5px 7px}.chip .key-svg{filter:drop-shadow(0 1px 2px #0009);width:40px;height:auto;display:block}.chip b{font-weight:600}.chip.more{color:var(--muted);padding:5px 10px}.drawer-overlay{z-index:20;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(3px);transition:opacity .5s var(--ease-drawer);background:#06050a99;position:absolute;inset:0}.drawer{z-index:21;width:min(100%,520px);max-height:min(80dvh,660px);padding:8px 0 calc(var(--safe-b) + 12px);border:1px solid var(--line);transition:transform .5s var(--ease-drawer);background:linear-gradient(#1c1526,#100c16 40%);border-bottom:0;border-radius:26px 26px 0 0;outline:none;flex-direction:column;margin:0 auto;display:flex;position:absolute;bottom:0;left:0;right:0;transform:translateY(100%);box-shadow:0 -24px 60px -24px #000000e6}.drawer:before{content:"";background:var(--grad);opacity:.55;height:1px;position:absolute;top:-1px;left:24px;right:24px}.drawer-overlay.is-open{opacity:1;pointer-events:auto}.drawer.is-open{transform:translateY(0)}.drawer-handle{background:#f3eee638;border-radius:3px;width:40px;height:5px;margin:2px auto 12px}.drawer-head{touch-action:none;cursor:grab;justify-content:space-between;align-items:flex-start;gap:12px;padding:0 18px 14px 20px;display:flex}.drawer-title{font:400 32px/1 var(--display);margin:0}.drawer-sub{font:500 11px var(--mono);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:7px 0 0}.drawer-list{overscroll-behavior:contain;gap:10px;margin:0;padding:2px 14px 6px;list-style:none;display:grid;overflow-y:auto}.drawer-key{border:1px solid var(--line);background:#f3eee609;border-radius:18px;grid-template-columns:120px 1fr auto;align-items:center;gap:14px;padding:12px 12px 12px 8px;display:grid}.drawer-key-art{background:radial-gradient(closest-side, color-mix(in srgb, var(--glow) 30%, transparent), transparent);place-items:center;height:76px;display:grid}.drawer-key-art .key-svg{filter:drop-shadow(0 6px 10px #0000008c);width:112px;height:auto}.drawer-key-body{min-width:0}.drawer-key-title{font:400 23px/1.05 var(--display);margin:0}.drawer-key-meta{font:500 12px var(--sans);color:var(--muted);margin:4px 0 0}.drawer-key-origin{font:500 11px var(--mono);color:#ffd27a;letter-spacing:.02em;margin:7px 0 0}.drawer-key-state{font:500 11px var(--mono);color:var(--muted);margin:3px 0 0}.drawer-key.used .drawer-key-art{opacity:.45;filter:saturate(.6)}.drawer-key.used .drawer-key-state{color:#9ff0c0}.drawer-key-go{border:1px solid var(--line);cursor:pointer;font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;background:#f3eee612;border-radius:999px;padding:8px 14px;transition:background .15s,transform .15s}.drawer-key-go:hover{background:#f3eee624}.drawer-key-go:active{transform:scale(.96)}@media (width<=420px){.drawer-key{grid-template-columns:88px 1fr auto;gap:10px}.drawer-key-art{height:60px}.drawer-key-art .key-svg{width:84px}.drawer-key-title{font-size:20px}}@media (prefers-reduced-motion:reduce){.drawer,.drawer-overlay{transition-duration:10ms}}.sheet{width:min(100%,560px);max-height:min(88dvh,820px)}.sheet-eyebrow{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin:0 0 6px}.sheet-body{overscroll-behavior:contain;padding:0 20px 8px;overflow-y:auto}.sheet-art{background:#07060a;border-radius:6px;place-items:center;margin:0;display:grid;overflow:hidden;box-shadow:0 18px 40px -18px #000000e6}.sheet-art img{object-fit:contain;width:100%;max-height:52dvh;display:block}.sheet-price{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#9ff0c0;align-items:baseline;gap:10px;margin:16px 0 0;display:flex}.sheet-price span{font:400 34px/1 var(--display);letter-spacing:0;text-transform:none;color:var(--bone)}.sheet-actions{flex-wrap:wrap;gap:8px;margin:14px 0 4px;display:flex}.sheet-btn{border:1px solid var(--line);min-height:44px;color:var(--bone);cursor:pointer;font:600 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;background:#f3eee60f;border-radius:22px;align-items:center;gap:6px;padding:0 18px;text-decoration:none;transition:background .2s,transform .15s;display:inline-flex}.sheet-btn:hover{background:#f3eee61f}.sheet-btn:active{transform:scale(.97)}.sheet-btn.primary{background:var(--bone);color:var(--ink);border-color:#0000}.sheet-btn.primary:hover{background:#fff}.sheet-artist{border-top:1px solid var(--line);margin-top:26px;padding-top:20px}.sheet-artist.lead{border-top:0;margin-top:4px;padding-top:0}.sheet-h{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin:0 0 12px}.sheet-quote{font:400 25px/1.2 var(--display);margin:0 0 14px}.sheet-quote cite{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#ffd27a;margin-top:8px;font-style:normal;display:block}.sheet-p{color:#f3eee6d1;margin:0 0 10px;font-size:14px;line-height:1.6}.sheet-media{scroll-snap-type:x mandatory;scrollbar-width:none;gap:8px;margin:16px -20px 0;padding:0 20px 6px;display:flex;overflow-x:auto}.sheet-media::-webkit-scrollbar{display:none}.sheet-shot{aspect-ratio:720/792;scroll-snap-align:start;background:#07060a;border-radius:6px;flex:none;width:168px;margin:0;overflow:hidden}.sheet-shot.is-video{width:208px}.sheet-shot img,.sheet-shot video{object-fit:cover;width:100%;height:100%;display:block}.sheet-caption{font:500 11px/1.5 var(--mono);color:var(--muted);margin:10px 0 0}.sheet-caption b{color:var(--bone);font-weight:600}.sheet-links{flex-wrap:wrap;gap:8px;margin:16px 0 6px;display:flex}.sheet-link{border:1px solid var(--line);min-height:40px;color:var(--bone);font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;border-radius:20px;align-items:center;gap:6px;padding:0 14px;text-decoration:none;display:inline-flex}.sheet-link:hover{background:#f3eee614}@media (width>=900px){.sheet{border-bottom:1px solid var(--line);border-radius:24px;margin:0;bottom:16px;left:auto;right:16px;transform:translateY(calc(100% + 24px))}}
