:root{--bg:#0d1420;--ink:#f4f6fb;--muted:#a9b4c7;--accent:#ffd23f;--glass:#0d1420b8;--line:#ffffff1f;--r:14px;color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{-webkit-tap-highlight-color:transparent;touch-action:none}#c{outline:none;width:100vw;height:100vh;display:block;position:fixed;inset:0}button{font:inherit;color:inherit;cursor:pointer}kbd{background:#ffffff24;border:1px solid #ffffff2e;border-radius:5px;padding:1px 5px;font:600 11px ui-monospace,monospace}a{color:var(--accent)}#select{z-index:20;touch-action:pan-y;background:radial-gradient(1200px 700px at 50% 0,#1e3c5abf,#080c14f0);place-items:center;padding:24px 16px;transition:opacity .5s,visibility .5s;display:grid;position:fixed;inset:0;overflow-y:auto}body.ready #select{background:radial-gradient(1200px 700px at 50% 0,#14283c73,#080c14d1)}body.playing #select{opacity:0;visibility:hidden;pointer-events:none}.sel-inner{text-align:center;width:min(1000px,100%)}.kicker{text-transform:uppercase;letter-spacing:.22em;color:var(--accent);margin:0 0 6px;font-size:12px;font-weight:700}#select h1{letter-spacing:-.02em;margin:0;font-size:clamp(40px,7vw,76px);line-height:1}.lede{color:var(--muted);max-width:640px;margin:14px auto 22px;font-size:15px;line-height:1.55}.lede b{color:var(--ink)}#cards{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.card{border-radius:var(--r);border:1px solid var(--line);text-align:center;background:#ffffff0f;flex-direction:column;align-items:center;gap:6px;padding:16px 12px 14px;transition:transform .15s,background .15s,border-color .15s;display:flex}.card:hover,.card:focus-visible{border-color:var(--accent);background:#ffffff1f;outline:none;transform:translateY(-3px)}.card .ic svg{width:52px;height:52px}.card .nm{align-items:center;gap:8px;font-size:16px;font-weight:700;display:flex}.card .bl{color:var(--muted);font-size:12.5px;line-height:1.4}body:not(.ready) .card{opacity:.55}body.waiting:not(.ready) .card{cursor:progress}.loading{max-width:420px;color:var(--muted);justify-content:center;align-items:center;gap:12px;margin:20px auto 6px;font-size:13px;display:flex}.track{background:#ffffff1f;border-radius:4px;flex:1;height:4px;overflow:hidden}#load-bar{background:var(--accent);width:0;height:100%;transition:width .3s}body.ready .track{display:none}.skip{margin:10px 0 0;font-size:14px}.skip a{color:var(--muted)}@media (max-width:720px){#cards{grid-template-columns:repeat(2,1fr);gap:8px}.card{padding:12px 8px}.card .ic svg{width:40px;height:40px}.card .bl{font-size:11.5px}}#hud{pointer-events:none;z-index:10;opacity:0;transition:opacity .4s;position:fixed;inset:0}body.playing #hud{opacity:1}#hud>*,#hud .tl>*,#hud .tr>*{pointer-events:auto}.tl{align-items:center;gap:12px;display:flex;position:absolute;top:14px;left:16px;pointer-events:none!important}.brand{text-shadow:0 1px 6px #0009;flex-direction:column;line-height:1.15;display:flex}.brand b{font-size:17px}.brand span{color:#e2e8f0;opacity:.85;font-size:11.5px}.pill{background:var(--accent);color:#111;border:0;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:700;text-decoration:none;display:inline-flex;box-shadow:0 4px 16px #00000040}.pill.ghost{color:var(--ink);border:1px solid var(--line);box-shadow:none;background:#ffffff1a}.pill.ghost.dark{color:#3b2a12;background:#3c280a1f;border-color:#3c280a4d}.pill.big{padding:12px 20px;font-size:16px}.tr{flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;top:14px;right:16px;pointer-events:none!important}#map{background:#223;border:2px solid #ffffff80;border-radius:50%;width:150px;height:150px;box-shadow:0 4px 18px #00000059}.tr-btns{gap:8px;display:flex}.icon{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:50%;place-items:center;width:38px;height:38px;font-weight:800;display:grid}.icon svg{width:20px;height:20px}#btn-mute .x{display:none}#btn-mute.off .x{display:inline}#btn-mute.off .w{display:none}#compass{background:var(--glass);border:1px solid var(--line);white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:7px 14px;font-size:14px;position:absolute;top:16px;left:50%;transform:translate(-50%);pointer-events:none!important}#compass .arr{color:var(--accent);font-weight:900;transition:transform .1s linear;display:inline-block}#compass b{color:var(--accent);margin-left:4px}#ability{color:#e2e8f0;text-shadow:0 1px 4px #000;white-space:nowrap;font-size:12.5px;position:absolute;bottom:82px;left:50%;transform:translate(-50%);pointer-events:none!important}#bar{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:18px;gap:6px;padding:6px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.chip{background:#ffffff0d;border:1px solid #0000;border-radius:12px;place-items:center;width:50px;height:50px;padding:0;transition:background .15s,transform .15s;display:grid;position:relative}.chip svg{width:32px;height:32px}.chip kbd{padding:0 3px;font-size:9px;position:absolute;top:2px;right:3px}.chip:hover{background:#ffffff24;transform:translateY(-2px)}.chip.on{border-color:var(--accent);background:#ffd23f38}#toast{background:var(--glass);opacity:0;white-space:nowrap;border-radius:12px;padding:9px 16px;font-size:14px;position:absolute;top:64px;left:50%;transform:translate(-50%,-10px);pointer-events:none!important}#toast.show{animation:3.2s forwards toast}@keyframes toast{0%{opacity:0;transform:translate(-50%,-10px)}8%,85%{opacity:1;transform:translate(-50%)}to{opacity:0}}#goal-flash{color:var(--accent);text-shadow:0 4px #6b4b00,0 10px 30px #00000080;opacity:0;letter-spacing:-.01em;white-space:nowrap;font-size:clamp(32px,7vw,72px);font-weight:900;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)scale(.6);pointer-events:none!important}#goal-flash.show{animation:1.6s cubic-bezier(.2,1.4,.4,1) forwards goal}@keyframes goal{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}20%{opacity:1;transform:translate(-50%,-50%)scale(1.05)}75%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-60%)scale(1)}}#joy,.tbtn{display:none}body.touch #joy{touch-action:none;background:#ffffff14;border:2px solid #ffffff40;border-radius:50%;width:120px;height:120px;display:block;position:absolute;bottom:92px;left:22px}#joy-knob{background:#ffffff8c;border-radius:50%;width:50px;height:50px;position:absolute;top:35px;left:35px}body.touch .tbtn{touch-action:none;-webkit-user-select:none;user-select:none;border:2px solid #ffffff59;border-radius:50%;place-items:center;font-size:13px;font-weight:800;display:grid;position:absolute}body.touch .tbtn.a{color:#111;background:#ffd23fbf;width:84px;height:84px;bottom:104px;right:24px}body.touch .tbtn.b{background:#ffffff2e;width:60px;height:60px;bottom:96px;right:118px}body.touch #ability{display:none}@media (max-width:720px){#map{width:96px;height:96px}.brand span{display:none}#compass{font-size:13px;top:62px;left:16px;transform:none}.chip{width:38px;height:38px}.chip svg{width:24px;height:24px}.chip kbd{display:none}#bar{gap:3px;max-width:calc(100vw - 16px);padding:4px;bottom:10px}#ability{bottom:60px}}.panel{z-index:30;border:1px solid var(--line);border-radius:var(--r);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d1420eb;width:min(360px,100vw - 32px);padding:14px 18px;font-size:13.5px;line-height:1.5;display:none;position:fixed;top:220px;right:16px}.panel.show{display:block}.panel h3{color:var(--accent);margin:6px 0;font-size:14px}.panel ul{color:#dbe3ef;margin:0 0 8px;padding-left:18px}.overlay{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);touch-action:pan-y;background:#05080e8c;place-items:center;padding:16px;display:none;position:fixed;inset:0}.overlay.show{animation:.25s fade;display:grid}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{width:min(860px,100%);max-height:calc(100vh - 32px);color:#1b2230;overscroll-behavior:contain;background:#fbfaf7;border-radius:18px;max-height:calc(100dvh - 32px);overflow:auto;box-shadow:0 30px 80px #00000080}.sheet-bar{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1;background:#fbfaf7f0;border-bottom:1px solid #e7e3da;justify-content:space-between;gap:8px;padding:12px 16px;display:flex;position:sticky;top:0}.sheet-bar .ghost{color:#1b2230;background:#fff;border-color:#d6d1c4}.card-sheet{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;width:min(480px,100%);padding:26px;animation:.35s cubic-bezier(.2,1.4,.4,1) pop;box-shadow:0 30px 80px #00000080}@keyframes pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.card-sheet h2{margin:0;font-size:32px}.card-sheet .url{color:var(--accent);margin:4px 0 12px;font-weight:600}.card-sheet p{color:#dbe3ef;line-height:1.55}.row{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}#scroll{filter:drop-shadow(0 30px 50px #00000080);flex-direction:column;align-items:center;width:min(520px,100%);display:flex}#scroll .rod{z-index:2;background:linear-gradient(#8a5a2b,#5c3a1a 60%,#3b250f);border-radius:13px;width:106%;height:26px;position:relative}#scroll .rod:before,#scroll .rod:after{content:"";background:#3b250f;border-radius:8px;width:22px;height:34px;position:absolute;top:-4px}#scroll .rod:before{left:-12px}#scroll .rod:after{right:-12px}#scroll .paper{color:#3b2a12;background:linear-gradient(90deg,#e9d8b0,#f6ead0 12%,#f8eed7 50%,#f6ead0 88%,#e2cfa2);width:100%;max-height:0;margin:-6px 0;padding:0 28px;overflow:hidden}#scroll.open .paper{animation:1.1s cubic-bezier(.3,.8,.3,1) forwards unroll}@keyframes unroll{0%{max-height:0;padding-top:0;padding-bottom:0}to{max-height:80vh;padding-top:26px;padding-bottom:22px}}#scroll h2{text-align:center;margin:0 0 12px;font-family:Georgia,Times New Roman,serif;font-size:28px}#more-list{margin:0 0 16px;padding:0;list-style:none}#more-list a{color:#3b2a12;border-bottom:1px dashed #3b2a1259;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 6px;text-decoration:none;display:grid}#more-list a:hover{background:#3b2a1212}#more-list b{font-family:Georgia,serif;font-size:18px}#more-list span{opacity:.85;grid-column:1;font-size:13.5px}#more-list i{color:#8a5a2b;grid-area:1/2/3;align-self:center;font-size:13px;font-style:normal}.resume{padding:26px clamp(18px,4vw,44px) 40px;line-height:1.5}.resume header h1{letter-spacing:-.01em;margin:0;font-size:34px}.resume header p{color:#5b6475;margin:4px 0 0}.resume header .tag{color:#1b2230;margin-top:8px;font-weight:500}.resume h2{letter-spacing:.16em;text-transform:uppercase;color:#a3660a;border-bottom:1px solid #e7e3da;margin:26px 0 8px;padding-bottom:6px;font-size:13px}.resume h3{margin:12px 0 2px;font-size:16.5px}.resume .meta{color:#5b6475;margin:0 0 6px;font-size:13.5px}.resume ul{margin:4px 0 8px;padding-left:20px}.resume li{margin:3px 0}.resume a{color:#1f5fd6}.resume .skills p{margin:4px 0}
