@font-face{font-family:Archivo Black;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-black-latin-ext-400-normal-DQAASfvW.woff2)format("woff2"),url(/assets/archivo-black-latin-ext-400-normal--j5WRK12.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Black;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-black-latin-400-normal-BTVu2TQR.woff2)format("woff2"),url(/assets/archivo-black-latin-400-normal-HW9MwEcM.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-vietnamese-wght-normal-XAtsl5Q_.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-ext-wght-normal-C4zznr8T.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/archivo-latin-wght-normal-E0tuGl4L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel Decorative;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-decorative-latin-ext-700-normal-Dul5pKgq.woff2)format("woff2"),url(/assets/cinzel-decorative-latin-ext-700-normal-BaOC-94C.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel Decorative;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-decorative-latin-700-normal-CnX1aK6s.woff2)format("woff2"),url(/assets/cinzel-decorative-latin-700-normal-ov6XPGpn.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cinzel-latin-ext-600-normal-BEFdM_VE.woff2)format("woff2"),url(/assets/cinzel-latin-ext-600-normal-BY9Mq9iK.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cinzel-latin-600-normal-Dd5YO2UX.woff2)format("woff2"),url(/assets/cinzel-latin-600-normal-CH_LB4su.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-ext-700-normal-C24KFjuG.woff2)format("woff2"),url(/assets/cinzel-latin-ext-700-normal-CORa-yIv.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-700-normal-Dkw14w9r.woff2)format("woff2"),url(/assets/cinzel-latin-700-normal-C-gK7hA8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0b0b0f;--panel:#0a0a10d1;--ink:#f4f2ec;--ink-dim:#f4f2ec8c;--spirit:#8ed4ff;--cream:#f2e7cd;--gold:#d9b36c;--error:#ff5d5d;--font-title:"Cinzel Decorative", "Cinzel", serif;--font-serif:"Cinzel", serif;--font-display:"Archivo Black", system-ui, sans-serif;--font-body:"Archivo Variable", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);touch-action:none;width:100%;height:100%;font-family:var(--font-body);color:var(--ink);overflow:hidden}button{font-family:var(--font-display);cursor:pointer}.screen{z-index:100;text-align:center;background:radial-gradient(120% 100% at 50% 0,#14141f 0%,#0b0b0f 70%);flex-direction:column;justify-content:center;align-items:center;gap:32px;padding:24px;display:flex;position:fixed;inset:0}.screen.title-screen{background:var(--bg);padding-top:22vh;overflow:hidden}.title-screen:before{content:"";background:url(/img/title-bg.jpg) 50% 42%/cover no-repeat;animation:50s ease-in-out infinite alternate kenburns;position:absolute;inset:-3.5%}.title-screen:after{content:"";background:radial-gradient(115% 90% at 50% 32%,#0b0b0f00 42%,#0b0b0fbd 100%),linear-gradient(#0b0b0f6b 0%,#0b0b0f1f 45%,#0b0b0f57 68%,#0b0b0fe0 100%);position:absolute;inset:0}.title-screen>*{z-index:1;position:relative}@keyframes kenburns{0%{transform:scale(1)}to{transform:scale(1.08)}}.screen h1{font-family:var(--font-title);letter-spacing:.02em;color:var(--cream);text-shadow:0 4px 28px #000000e6,0 0 70px #8ed4ff47;font-size:clamp(42px,8.5vw,112px);font-weight:700;line-height:1}.screen h1 em{color:var(--spirit);text-shadow:0 4px 28px #000000e6,0 0 46px #8ed4ffa6;font-style:normal}.title-logo .star{color:var(--spirit);vertical-align:.42em;text-shadow:0 0 20px #8ed4fff2;margin:0 .35em;font-size:.4em;animation:3.2s ease-in-out infinite starpulse;display:inline-block}@keyframes starpulse{50%{opacity:.55;text-shadow:0 0 8px #8ed4ff80}}.screen .tagline{font-family:var(--font-serif);letter-spacing:.34em;text-transform:uppercase;color:#f2e7cdcc;text-shadow:0 2px 14px #000000e6;font-size:clamp(15px,2vw,22px);font-weight:600}.screen input{font-family:var(--font-serif);text-transform:uppercase;letter-spacing:.12em;text-align:center;color:var(--cream);text-shadow:0 2px 10px #000c;background:#0b0b0f59;border:none;border-bottom:3px solid #d9b36cd9;outline:none;width:min(420px,80vw);padding:8px 16px;font-size:clamp(24px,3vw,36px);font-weight:700}.screen input::placeholder{color:#f2e7cd4d}.screen input:focus{border-bottom-color:var(--gold)}.btn{font-family:var(--font-serif);letter-spacing:.14em;text-transform:uppercase;color:#1a1206;background:linear-gradient(#ecd29b 0%,#d9b36c 55%,#b98f47 100%);border:1px solid #f2e7cd80;border-radius:6px;padding:16px 52px;font-size:clamp(20px,2.6vw,30px);font-weight:700;transition:transform .12s,box-shadow .12s;box-shadow:0 0 34px #d9b36c59,0 4px 18px #0009}.btn:hover{transform:translateY(-2px)scale(1.02);box-shadow:0 0 52px #d9b36c8c,0 6px 22px #0009}.btn:disabled{opacity:.4;box-shadow:none;cursor:default;transform:none}.btn.ghost{color:var(--ink-dim);box-shadow:none;background:0 0;border:2px solid #f4f2ec40}.btn.ghost:hover{color:var(--ink);border-color:var(--ink)}.error-text{color:var(--error);letter-spacing:.08em;font-size:18px;font-weight:700}.intro-slide{aspect-ratio:16/9;background-position:50%;background-size:cover;border-radius:10px;width:min(900px,92vw);animation:.8s fadein;box-shadow:0 0 80px #000c,0 0 24px #7ef0d41f}.intro-text{max-width:860px;color:var(--ink);font-size:clamp(20px,2.6vw,30px);font-weight:700;line-height:1.35;animation:.8s fadein}@keyframes fadein{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.hud-timer{z-index:20;font-family:var(--font-display);letter-spacing:.12em;color:var(--ink);text-shadow:0 2px 18px #000000e6;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(28px,3.4vw,44px);position:fixed;top:20px;left:50%;transform:translate(-50%)}.hud-timer.low{color:var(--error);animation:1s infinite pulse}@keyframes pulse{50%{opacity:.5}}.hud-held{z-index:20;font-family:var(--font-display);letter-spacing:.1em;color:var(--gold);background:var(--panel);pointer-events:none;-webkit-user-select:none;user-select:none;border:2px solid #d9b36c80;border-radius:8px;padding:14px 22px;font-size:clamp(18px,2vw,26px);position:fixed;bottom:24px;right:28px}.hud-held .sub{font-family:var(--font-body);letter-spacing:.2em;color:var(--ink-dim);margin-top:4px;font-size:13px;font-weight:600;display:block}.crosshair{z-index:15;pointer-events:none;border:2px solid #f4f2eccc;border-radius:50%;width:10px;height:10px;transition:all .15s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair.focus{border-color:var(--spirit);width:20px;height:20px;box-shadow:0 0 18px #7ef0d4e6}.focus-label{z-index:15;font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--ink);text-shadow:0 2px 16px #000;pointer-events:none;-webkit-user-select:none;user-select:none;text-align:center;font-size:clamp(20px,2.4vw,30px);position:fixed;top:calc(50% + 42px);left:50%;transform:translate(-50%)}.focus-label .key{color:#0b0b0f;background:var(--spirit);vertical-align:middle;border-radius:5px;margin-right:12px;padding:2px 10px;font-size:.75em;display:inline-block}.toasts{z-index:30;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed;top:90px;left:50%;transform:translate(-50%)}.toast{font-family:var(--font-display);letter-spacing:.1em;background:var(--panel);color:var(--ink);text-align:center;border:2px solid #7ef0d466;border-radius:8px;max-width:90vw;padding:14px 28px;font-size:clamp(18px,2.2vw,26px);animation:.3s fadein}.toast.success{border-color:var(--spirit);color:var(--spirit)}.toast.error{border-color:var(--error);color:var(--error)}.overlay{z-index:50;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#050509b8;flex-direction:column;justify-content:center;align-items:center;gap:28px;display:flex;position:fixed;inset:0}.overlay h2{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;font-size:clamp(30px,4.4vw,54px)}.overlay .hint{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);font-size:clamp(16px,1.8vw,21px);font-weight:700}.piano-keys{gap:10px;display:flex}.piano-key{width:clamp(54px,7vw,86px);height:clamp(160px,24vh,240px);font-family:var(--font-display);color:#0b0b0f;background:#f4f2ec;border:none;border-radius:0 0 10px 10px;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;padding-bottom:14px;font-size:22px;transition:transform 60ms,background 60ms;display:flex}.piano-key:active,.piano-key.down{background:var(--spirit);transform:translateY(6px)}.piano-key .kb{font-family:var(--font-body);color:#0b0b0f80;font-size:14px;font-weight:800}.progress-dots{gap:14px;display:flex}.progress-dots .dot{border:3px solid #f4f2ec4d;border-radius:50%;width:22px;height:22px}.progress-dots .dot.on{background:var(--spirit);border-color:var(--spirit);box-shadow:0 0 16px #7ef0d4cc}.keypad{grid-template-columns:repeat(3,96px);gap:12px;display:grid}.keypad button{height:84px;color:var(--ink);background:#f4f2ec14;border:2px solid #f4f2ec40;border-radius:10px;font-size:34px;transition:all .1s}.keypad button:hover{border-color:var(--spirit);color:var(--spirit)}.code-display{font-family:var(--font-display);letter-spacing:.5em;color:var(--gold);min-height:80px;padding-left:.5em;font-size:64px}.mirrored-code{font-family:var(--font-display);letter-spacing:.3em;color:var(--gold);text-shadow:0 0 40px #d9b36c66;-webkit-user-select:none;user-select:none;font-size:clamp(72px,12vw,140px);transform:scaleX(-1)}.clue-text{text-align:center;max-width:820px;color:var(--ink);font-size:clamp(24px,3vw,36px);font-weight:800;line-height:1.4}.gyro-pad{grid-template-rows:repeat(3,110px);grid-template-columns:repeat(3,110px);gap:10px;display:grid}.gyro-pad .cell{font-family:var(--font-display);color:var(--ink-dim);background:#f4f2ec0f;border:2px solid #f4f2ec2e;border-radius:12px;justify-content:center;align-items:center;font-size:40px;display:flex}.gyro-pad .cell.active{color:#0b0b0f;background:var(--spirit);border-color:var(--spirit)}.gyro-pad .cell.blank{background:0 0;border:none}.shadow-controls{gap:16px;display:flex}.chat{z-index:20;flex-direction:column;gap:8px;width:min(380px,40vw);display:flex;position:fixed;bottom:24px;left:28px}.chat .log{flex-direction:column;gap:4px;max-height:30vh;font-size:16px;font-weight:700;display:flex;overflow:hidden}.chat .log .line{background:var(--panel);border-radius:6px;padding:6px 12px;animation:.2s fadein}.chat .log .line b{color:var(--spirit)}.chat input{font-family:var(--font-body);color:var(--ink);background:var(--panel);border:2px solid #7ef0d480;border-radius:6px;outline:none;padding:10px 14px;font-size:16px;font-weight:700}.admin{background:radial-gradient(120% 100% at 50% 0,#14141f 0%,#0b0b0f 70%);min-height:100vh;padding:32px clamp(16px,4vw,64px);overflow-y:auto}.admin header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.admin h2{font-family:var(--font-display);letter-spacing:.06em;font-size:clamp(28px,4vw,44px)}.admin h2 em,.admin h3 em{color:var(--spirit);font-style:normal}.admin h3{font-family:var(--font-display);letter-spacing:.15em;color:var(--ink-dim);margin:18px 0 10px;font-size:18px}.admin .row{align-items:center;gap:10px;display:flex}.admin .row.wrap{flex-wrap:wrap}.admin input{font-family:var(--font-body);letter-spacing:.06em;color:var(--ink);background:#f4f2ec0f;border:2px solid #f4f2ec33;border-radius:6px;outline:none;min-width:220px;padding:10px 14px;font-size:15px;font-weight:700}.admin input:focus{border-color:var(--spirit)}.btn.small{box-shadow:none;padding:10px 18px;font-size:14px}.btn.small.danger,.admin button.danger{color:var(--error);background:0 0;border:2px solid #ff5d5d80}.admin table{border-collapse:collapse;width:100%;font-size:15px;font-weight:700}.admin th{font-family:var(--font-display);letter-spacing:.2em;text-align:left;color:var(--ink-dim);border-bottom:2px solid #f4f2ec26;padding:10px 12px;font-size:13px}.admin td{border-bottom:1px solid #f4f2ec14;padding:12px}.admin td.code{font-family:var(--font-display);letter-spacing:.15em;color:var(--gold);font-size:20px}.admin td.actions button,.admin .puzzle-row button{font-family:var(--font-display);letter-spacing:.08em;color:var(--ink);background:#f4f2ec12;border:1px solid #f4f2ec40;border-radius:5px;margin:2px 4px 2px 0;padding:6px 12px;font-size:12px}.admin td.actions button:hover,.admin .puzzle-row button:hover{border-color:var(--spirit);color:var(--spirit)}.pill{font-family:var(--font-display);letter-spacing:.12em;border:1px solid #f4f2ec4d;border-radius:20px;margin-right:6px;padding:4px 10px;font-size:11px;display:inline-block}.pill.active{border-color:var(--spirit);color:var(--spirit)}.pill.created{border-color:var(--gold);color:var(--gold)}.pill.completed{color:#9f7ef0;border-color:#9f7ef0}.pill.expired,.pill.cancelled{border-color:var(--error);color:var(--error)}.pill.snapshot{color:var(--ink-dim);border-color:#f4f2ec4d}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:28px;display:grid}.admin-grid section{background:#f4f2ec08;border:1px solid #f4f2ec1a;border-radius:10px;padding:18px 20px}.puzzle-row{letter-spacing:.06em;align-items:center;gap:10px;padding:7px 0;font-size:14px;font-weight:800;display:flex}.puzzle-row .label{flex:1}.puzzle-row .dot{border:2px solid #f4f2ec4d;border-radius:50%;width:12px;height:12px}.puzzle-row.solved .dot{background:var(--spirit);border-color:var(--spirit);box-shadow:0 0 10px #7ef0d4cc}.puzzle-row.solved .label{color:var(--spirit)}.answers p{font-size:14px;font-weight:700;line-height:1.7}.answers b{color:var(--gold);letter-spacing:.1em}.dim{opacity:.55}.session-chip{font-family:var(--font-display);letter-spacing:.25em;color:var(--gold);border:2px solid #d9b36c80;border-radius:8px;padding:8px 18px;font-size:18px;display:inline-block}.controls-hint{z-index:12;letter-spacing:.25em;text-transform:uppercase;color:#f4f2ec66;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:15px;font-weight:800;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}
