:root{
  --ink:#111319;--steel:#242a34;--steel-2:#343b47;--red:#b51520;--red-dark:#720b13;
  --silver:#e9edf1;--white:#fff;--gold:#e0b04b;--green:#4f9d69;--muted:#aeb6c2;
  --shadow:0 24px 55px rgba(0,0,0,.34)
}
*{box-sizing:border-box}
html{min-height:100%;background:#111319}
body{min-height:100vh;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--white);background:
  radial-gradient(circle at 75% 10%,rgba(181,21,32,.22),transparent 30%),
  linear-gradient(135deg,#111319 0%,#1a1e26 48%,#27080d 100%)}
button,select{font:inherit}
button{cursor:pointer}
.skip-link{position:fixed;left:12px;top:-80px;z-index:100;padding:10px 14px;background:#fff;color:#111;border-radius:8px}.skip-link:focus{top:12px}
.app-shell{width:min(1500px,100%);min-height:100vh;margin:auto}
.topbar{min-height:76px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:12px clamp(18px,3vw,42px);border-bottom:1px solid rgba(255,255,255,.1);background:rgba(10,12,16,.78);backdrop-filter:blur(16px);position:sticky;top:0;z-index:20}
.back-link{justify-self:start;color:#fff;text-decoration:none;font-weight:900;font-size:.83rem;letter-spacing:.04em}.back-link:hover{text-decoration:underline}
.brand-lockup{display:flex;align-items:center;gap:12px;text-align:left}.brand-lockup span{display:block;color:#d5a64b;font-size:.63rem;font-weight:900;letter-spacing:.18em}.brand-lockup strong{display:block;font-family:Georgia,serif;font-size:1.35rem;line-height:1.05}
.mini-shield,.result-crest{display:grid;place-items:center;background:linear-gradient(145deg,#c31d29,#710a12);color:#fff;border:3px solid #d9dde2;box-shadow:inset 0 0 0 3px #171a20,0 5px 18px rgba(0,0,0,.35);clip-path:polygon(8% 0,92% 0,100% 73%,50% 100%,0 73%);font-family:Georgia,serif;font-weight:900}.mini-shield{width:44px;height:50px;font-size:1.4rem}
.icon-button{justify-self:end;width:44px;height:44px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.06);color:#fff;font-size:1.25rem}.icon-button:hover{background:rgba(255,255,255,.12)}
.game-layout{display:grid;grid-template-columns:minmax(290px,370px) minmax(0,1fr);gap:clamp(18px,3vw,38px);padding:clamp(18px,3vw,42px)}
.control-panel,.play-panel{border:1px solid rgba(255,255,255,.1);border-radius:28px;box-shadow:var(--shadow)}
.control-panel{align-self:start;position:sticky;top:98px;overflow:hidden;padding:0 24px 25px;background:linear-gradient(180deg,#242a34,#171a20)}
.knight-stage{height:245px;margin:0 -24px 22px;position:relative;overflow:hidden;background:linear-gradient(#171b29 0 56%,#252932 56%)}
.knight-stage:after{content:"";position:absolute;left:0;right:0;bottom:0;height:45px;background:repeating-linear-gradient(90deg,#2a2e36 0 44px,#1c2027 44px 48px);clip-path:polygon(0 35%,8% 35%,8% 0,15% 0,15% 35%,24% 35%,24% 0,31% 0,31% 35%,42% 35%,42% 0,49% 0,49% 35%,60% 35%,60% 0,67% 0,67% 35%,78% 35%,78% 0,85% 0,85% 35%,100% 35%,100% 100%,0 100%)}
.moon{position:absolute;width:84px;height:84px;border-radius:50%;right:34px;top:26px;background:#d9dde2;box-shadow:0 0 30px rgba(255,255,255,.3)}
.castle{position:absolute;left:0;right:0;bottom:32px;height:90px;display:flex;justify-content:center;align-items:end;gap:8px;opacity:.55}.castle i{display:block;width:54px;height:70px;background:#090b0f;clip-path:polygon(0 13%,18% 13%,18% 0,36% 0,36% 13%,64% 13%,64% 0,82% 0,82% 13%,100% 13%,100% 100%,0 100%)}.castle i:nth-child(2){height:105px;width:74px}
.knight-stage img{position:absolute;z-index:3;left:13px;bottom:-72px;width:185px;height:280px;object-fit:contain;filter:drop-shadow(0 16px 14px rgba(0,0,0,.55))}
.eyebrow{margin:0;color:#e0b04b;font-size:.69rem;font-weight:950;letter-spacing:.16em}
.panel-copy h1{margin:7px 0 10px;font-family:Georgia,serif;font-size:2.35rem;line-height:.96}.panel-copy p:last-child{margin:0 0 22px;color:#c7cdd6;font-size:.92rem;line-height:1.55}
.field-label{display:block;margin:14px 0 7px;color:#d8dde4;font-size:.7rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
.field-control{width:100%;min-height:46px;border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:9px 12px;background:#101319;color:#fff;font-weight:750}
.field-control:focus,.primary-button:focus,.secondary-button:focus,.bingo-cell:focus{outline:3px solid rgba(224,176,75,.55);outline-offset:2px}
.primary-button,.secondary-button{min-height:48px;border-radius:12px;padding:11px 16px;font-weight:950;letter-spacing:.035em}
.primary-button{width:100%;margin-top:20px;border:1px solid #e2323c;background:linear-gradient(#c61c28,#94101a);color:#fff;box-shadow:0 8px 20px rgba(181,21,32,.25)}.primary-button:hover{filter:brightness(1.08);transform:translateY(-1px)}
.secondary-button{width:100%;margin-top:9px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#fff}.secondary-button:hover{background:rgba(255,255,255,.11)}
.privacy-note{margin:13px 0 0;color:#939ca9;font-size:.72rem;line-height:1.45;text-align:center}
.play-panel{min-width:0;padding:clamp(16px,2.5vw,30px);background:linear-gradient(180deg,rgba(42,47,57,.96),rgba(21,24,30,.98))}
.scorebar{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.scorebar>div{border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:11px 13px;background:rgba(0,0,0,.17)}.scorebar span{display:block;color:#99a2ae;font-size:.62rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.scorebar strong{display:block;margin-top:3px;font-size:1.18rem;font-variant-numeric:tabular-nums}
.clue-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:15px;border:1px solid rgba(224,176,75,.3);border-radius:20px;padding:16px 18px;background:linear-gradient(135deg,rgba(224,176,75,.12),rgba(181,21,32,.11))}
.clue-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:#e0b04b;color:#15181e;font-family:Georgia,serif;font-size:1.55rem;font-weight:900}.clue-card p{margin:0 0 3px;color:#d4a747;font-size:.64rem;font-weight:900;letter-spacing:.12em}.clue-text{font-size:clamp(1.1rem,2vw,1.55rem);font-weight:900;line-height:1.25}.remaining-badge{border-radius:999px;padding:7px 10px;background:#101319;color:#bec5cf;font-size:.7rem;font-weight:900;white-space:nowrap}
.feedback{min-height:31px;padding:10px 3px 5px;color:#bec5cf;font-size:.87rem;font-weight:800}.feedback.good{color:#7ed095}.feedback.bad{color:#ff8e96}.feedback.info{color:#e6c36f}
.board-frame{border-radius:22px;padding:12px;background:#0f1116;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 16px 30px rgba(0,0,0,.22)}
.bingo-heading,.bingo-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.bingo-heading{margin-bottom:7px}.bingo-heading span{display:grid;place-items:center;min-height:38px;border-radius:9px;background:linear-gradient(#a7141e,#760b12);font-family:Georgia,serif;font-size:1.35rem;font-weight:900;text-shadow:0 2px 3px rgba(0,0,0,.35)}
.bingo-cell{position:relative;aspect-ratio:1.25/1;min-width:0;border:1px solid #4d5562;border-radius:11px;padding:4px;background:linear-gradient(145deg,#edf0f2,#c5cbd1);color:#171a20;font-size:clamp(.72rem,1.4vw,1.08rem);font-weight:950;line-height:1.05;box-shadow:inset 0 0 0 2px rgba(255,255,255,.45),0 3px 0 #08090c;transition:transform .12s ease,filter .12s ease}.bingo-cell:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.05)}.bingo-cell:disabled{cursor:default}.bingo-cell.marked{background:linear-gradient(145deg,#c41e2b,#7d0d15);color:#fff;border-color:#ef5961;text-shadow:0 2px 2px rgba(0,0,0,.35)}.bingo-cell.marked:after{content:"✓";position:absolute;right:5px;top:3px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:#e3b34e;color:#171a20;font-size:.72rem;text-shadow:none}.bingo-cell.free{background:linear-gradient(145deg,#262c35,#101318);color:#e3b34e;border-color:#d8ad51;font-family:Georgia,serif}.bingo-cell.free:before{content:"K";display:block;font-size:clamp(1.25rem,2.4vw,2rem)}.bingo-cell.free span{display:block;font-family:Inter,sans-serif;font-size:.54rem;letter-spacing:.12em}.bingo-cell.wrong{animation:shake .28s linear;background:linear-gradient(145deg,#fff0f0,#f2b9bd)}
.play-actions{display:flex;justify-content:center;gap:9px}.secondary-button.compact{width:auto;min-height:40px;margin-top:14px;padding:8px 14px;font-size:.78rem}
.result-dialog,.rules-dialog{width:min(520px,calc(100% - 28px));border:1px solid rgba(255,255,255,.16);border-radius:24px;padding:28px;background:linear-gradient(150deg,#282e38,#15181e);color:#fff;box-shadow:0 35px 90px rgba(0,0,0,.65)}dialog::backdrop{background:rgba(4,5,7,.78);backdrop-filter:blur(4px)}.result-dialog{text-align:center}.result-crest{width:72px;height:82px;margin:0 auto 14px;font-size:2.2rem}.result-dialog h2,.rules-dialog h2{margin:6px 0 8px;font-family:Georgia,serif;font-size:2.3rem}.result-dialog>p:not(.eyebrow),.rules-dialog p,.rules-dialog li{color:#c4cbd4;line-height:1.55}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:20px 0}.result-stats div{border-radius:12px;padding:11px;background:rgba(255,255,255,.06)}.result-stats span{display:block;color:#aab2bd;font-size:.62rem;font-weight:900;text-transform:uppercase}.result-stats strong{font-size:1.15rem}.dialog-actions{display:flex;gap:10px}.dialog-actions button{margin-top:0}.rules-dialog ol{padding-left:22px}.rules-dialog .primary-button{margin-top:8px}
.confetti{position:fixed;z-index:100;top:-15px;width:10px;height:18px;background:#e0b04b;animation:fall 2.2s ease-in forwards;pointer-events:none}
@keyframes shake{25%{transform:translateX(-5px)}50%{transform:translateX(5px)}75%{transform:translateX(-3px)}}
@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(720deg);opacity:.2}}
@media(max-width:980px){.game-layout{grid-template-columns:1fr}.control-panel{position:static;display:grid;grid-template-columns:190px minmax(0,1fr);gap:0 22px}.knight-stage{grid-row:1/9;height:auto;min-height:420px;margin:0}.panel-copy{padding-top:23px}.field-label,.field-control,.control-panel>.primary-button,.control-panel>.secondary-button,.privacy-note{grid-column:2}.knight-stage img{left:0;right:0;margin:auto}.privacy-note{padding-bottom:18px}.play-panel{padding:20px}}
@media(max-width:680px){.topbar{grid-template-columns:1fr auto}.brand-lockup{grid-column:1/-1;grid-row:1;justify-self:center}.back-link{grid-row:2}.icon-button{grid-row:2}.game-layout{padding:12px}.control-panel{display:block;padding:0 18px 20px}.knight-stage{height:190px;min-height:0;margin:0 -18px 18px}.knight-stage img{width:145px;height:220px;bottom:-58px;left:8px;right:auto}.scorebar{grid-template-columns:repeat(2,1fr)}.clue-card{grid-template-columns:auto 1fr}.remaining-badge{grid-column:1/-1;justify-self:start}.bingo-heading,.bingo-board{gap:4px}.board-frame{padding:7px}.bingo-cell{aspect-ratio:1/1;font-size:clamp(.58rem,3.2vw,.83rem);border-radius:7px}.bingo-cell.marked:after{display:none}.dialog-actions{flex-direction:column}.brand-lockup strong{font-size:1.14rem}}
@media(max-width:400px){.clue-icon{display:none}.clue-card{grid-template-columns:1fr}.bingo-cell{padding:2px}.bingo-cell.free:before{font-size:1.15rem}}
