:root{color-scheme:dark;--paper:#080808;--ink:#f5f0e5;--muted:#c2b9a5;--gold:#d9bc78;--gold-soft:#f3dda4;--line:#51452d;--panel:#13120f;--spring:cubic-bezier(.22,1.35,.42,1);font-family:system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}
body{margin:0;min-height:100svh;background:radial-gradient(circle at 50% 22%,#3b301455,transparent 38%),#080808;-webkit-tap-highlight-color:transparent}
button,a,input,select{touch-action:manipulation}button,input,select{font:inherit}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold-soft);outline-offset:3px}
.home-bar{position:sticky;top:0;z-index:30;display:flex;width:100%;min-height:calc(52px + env(safe-area-inset-top));align-items:center;justify-content:center;gap:10px;border-bottom:1px solid #f4dfa5;background:linear-gradient(110deg,#b18a38,#f0d98e 48%,#b18a38);color:#090806;padding-top:env(safe-area-inset-top);box-shadow:0 8px 28px #0009,inset 0 1px #fff8;font-size:.88rem;font-weight:850;letter-spacing:.16em;text-transform:uppercase}
.home-bar:before{content:"\2190";font-size:1.15rem}.home-bar:focus-visible{outline:3px solid #fff;outline-offset:-5px}
.game-shell{width:min(100%,470px);height:calc(100svh - 52px - env(safe-area-inset-top));min-height:520px;margin-inline:auto;padding:18px 22px calc(10px + env(safe-area-inset-bottom));display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px;flex-shrink:0}.game-identity{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.game-identity h1{margin:0;color:var(--gold);font:500 38px/1 Georgia,serif;letter-spacing:-1.5px}.player-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.player-name:empty{display:none}
.top-actions{display:flex;align-items:center;gap:5px}.icon-button{width:40px;height:40px;border:1px solid #554625;background:#15130e;color:#ecd59c;border-radius:50%;display:grid;place-items:center;flex-shrink:0;font-size:23px;line-height:1;transition:background .2s,transform .3s var(--spring)}.icon-button:hover{background:#272218}.icon-button:active{transform:scale(.92)}.info-icon{font:italic bold 21px Georgia,serif}
.scorebar{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line);flex-shrink:0}.scorebar>div{text-align:center;border-right:1px solid var(--line)}.scorebar>div:last-child{border:0}.scorebar span{display:block;color:var(--muted);font-size:12px;letter-spacing:1.4px}.scorebar strong{display:flex;align-items:baseline;justify-content:center;font-size:27px;line-height:1.1;font-weight:500;font-variant-numeric:tabular-nums}.scorebar strong span{color:inherit;font-size:inherit;letter-spacing:0}.scorebar small{color:var(--muted);font-size:15px;font-weight:500}
.play-area{display:flex;min-height:0;flex:1;flex-direction:column;align-items:center}.goal{min-height:40px;margin:0 0 12px;color:#ded5c3;font-size:14px;line-height:1.4;text-align:center}.board{display:grid;width:min(100%,390px);max-height:100%;aspect-ratio:1;grid-template-columns:repeat(var(--size),1fr);gap:clamp(7px,2.3vw,12px);padding:clamp(9px,2.8vw,14px);border:1px solid #66562f;border-radius:22px;background:linear-gradient(145deg,#171611,#0a0a09);box-shadow:0 24px 70px #000a,inset 0 1px #ffe7a522;touch-action:manipulation}
.tile{position:relative;min-width:0;min-height:0;border:1px solid #5b513d;border-radius:18%;background:linear-gradient(145deg,#171717,#0b0b0b);box-shadow:inset 0 0 0 3px #0005,0 4px 8px #0007;transition:transform .28s var(--spring),background .28s,box-shadow .28s,border-color .28s}.tile:before{content:"";position:absolute;inset:27%;border:1px solid #81785f;border-radius:50%;background:#211f19;box-shadow:0 0 0 5px #111;transition:all .3s var(--spring)}.tile.is-lit{border-color:#c7a857;background:radial-gradient(circle,#fff4bd 0 8%,#d9bc78 24%,#5c451b 68%,#17130c 100%);box-shadow:inset 0 0 12px #fff4be80,0 0 17px #d7b55a52,0 5px 10px #0008}.tile.is-lit:before{inset:30%;border-color:#fff1b2;background:#fff3bd;box-shadow:0 0 8px #fff,0 0 22px #e3bd57}.tile.is-affected{animation:pulse .34s var(--spring)}.tile.is-hint{outline:4px solid #fff2ae;outline-offset:-5px;z-index:2;animation:hintPulse 1.1s ease-in-out infinite}.tile.is-hint:after{content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:#0a0906;font-size:clamp(23px,7vw,35px);font-weight:900;text-shadow:0 0 6px #fff;z-index:3}.tile.is-hint-neighbour{outline:2px dashed #f5f0e5;outline-offset:-5px}
.assist-row{display:flex;width:100%;align-items:center;justify-content:center;gap:12px;margin-top:11px}.hint-button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:8px;border:1px solid var(--gold);border-radius:999px;background:#17140d;color:var(--gold-soft);padding:8px 15px;font-size:13px;font-weight:800}.hint-button:hover{background:#2a2416}.hint-button:disabled{cursor:default;opacity:.45}.hint{max-width:150px;margin:0;color:#aaa18f;font-size:12px;line-height:1.35}.ad-reservation{display:grid;min-height:44px;place-items:center;margin-top:10px;border:1px dashed #41371f;border-radius:10px;color:#6e6759;font-size:9px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;flex-shrink:0}
dialog{width:min(calc(100% - 28px),430px);max-height:calc(100dvh - 28px);margin:auto;overflow:auto;border:1px solid #9a7b3b;border-radius:20px;background:linear-gradient(145deg,#191713,#090909 70%);color:var(--ink);padding:22px;box-shadow:0 32px 110px #000e}dialog::backdrop{background:#000c;backdrop-filter:blur(8px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.dialog-top h2,dialog h2{margin:0;color:var(--gold-soft);font:400 32px/1.05 Georgia,serif}.dialog-top .eyebrow{margin:0}.dialog-top .icon-button{width:38px;height:38px;font-size:17px}
label{display:block;margin-bottom:7px;font-size:14px;font-weight:650}select{width:100%;height:44px;border:1px solid #75623e;border-radius:9px;background:#202020;color:var(--ink);padding:7px 10px;font-size:16px}.switch-row{display:flex;min-height:50px;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 0;border-bottom:1px solid var(--line);cursor:pointer}.switch-row input{appearance:none;width:40px;height:24px;margin:0;border:1px solid #8e836d;border-radius:20px;background:#39372f;position:relative}.switch-row input:before{content:"";position:absolute;width:16px;height:16px;top:3px;left:3px;border-radius:50%;background:#f5f0e5;transition:transform .2s}.switch-row input:checked{background:var(--gold);border-color:var(--gold)}.switch-row input:checked:before{transform:translateX(16px);background:#111}.dialog-note{color:var(--muted);font-size:12px;line-height:1.5}.primary-button{display:flex;width:100%;min-height:50px;align-items:center;justify-content:center;border:1px solid var(--gold);border-radius:11px;background:var(--gold);color:#0a0906;font-weight:800}.primary-button:hover{background:var(--gold-soft)}#settings-form>.primary-button{margin-top:16px}.secondary-button{min-height:48px;border:1px solid #8f7543;border-radius:10px;background:transparent;padding:8px 12px}.dialog-buttons{display:flex;gap:8px;margin-top:22px}.dialog-buttons .primary-button{flex:1}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:12px;font-weight:800;letter-spacing:1.5px}.record-panel{padding:14px;border:1px solid #4e422a;border-radius:12px;background:#090909}.record-mode+.record-mode{margin-top:13px;padding-top:13px;border-top:1px solid #51452d}.record-mode-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:3px}.record-mode-heading>strong{color:var(--gold-soft);font:400 20px/1 Georgia,serif}.record-mode-heading>span{color:var(--muted);font-size:11px}.record-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #30291c;font-size:12px}.record-row:last-child{border:0}.record-row>span{color:#c7bfaf}.record-row strong{max-width:64%;color:var(--gold-soft);text-align:right;font-size:12px}.record-panel>.dialog-note{margin:10px 0 0}.rules h3{margin:22px 0 8px;color:var(--gold-soft);font:400 24px/1.1 Georgia,serif}.rules p,dialog>p{color:#d6cebd;font-size:14px;line-height:1.55}.tutorial-again{width:100%;margin-top:13px;color:var(--gold-soft)}.control-rule{display:flex;align-items:flex-start;gap:12px;margin:12px 0}.control-rule p{margin:5px 0}.control-symbol{flex:0 0 36px;height:36px;display:grid;place-items:center;border:1px solid #554625;border-radius:50%;background:#15130e;color:#ecd59c;font-size:22px}.sound-muted{opacity:.55}.result-dialog{text-align:center}.result-emblem{display:grid;width:70px;height:70px;place-items:center;margin:8px auto 16px;border:1px solid var(--gold);border-radius:50%;color:var(--gold);font-size:42px;box-shadow:0 0 35px #d9bc7844}.result-best{padding:12px;border-radius:10px;background:#292318;color:var(--gold-soft)!important}.tutorial-dialog{text-align:center}.tutorial-dialog h2{margin-bottom:16px}.tutorial-grid{display:grid;width:174px;aspect-ratio:1;grid-template-columns:repeat(3,1fr);gap:6px;margin:16px auto;padding:8px;border:1px solid #66562f;border-radius:18px;background:#0a0a09}.tutorial-grid span{display:grid;place-items:center;border:1px solid #3c382e;border-radius:9px;background:#131313;color:#b9aa82;font-size:20px}.tutorial-grid .will-change{border-color:#8f7543;background:#241f14}.tutorial-grid .tutorial-centre{border-color:#f0d98e;background:radial-gradient(circle,#fff3bd,#d9bc78 40%,#493716);color:#0a0906;font-size:27px;box-shadow:0 0 16px #d9bc7866}.tutorial-steps{display:grid;gap:10px;margin:18px 0;padding:0;list-style:none;counter-reset:steps;text-align:left}.tutorial-steps li{position:relative;min-height:36px;padding-left:42px;color:#ded5c3;font-size:14px;line-height:1.45;counter-increment:steps}.tutorial-steps li:before{content:counter(steps);position:absolute;left:0;top:0;display:grid;width:29px;height:29px;place-items:center;border:1px solid var(--gold);border-radius:50%;color:var(--gold-soft);font-weight:800}
.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation:none!important;transition-duration:.01ms!important}
@keyframes pulse{50%{transform:scale(.9)}75%{transform:scale(1.06)}}
@keyframes hintPulse{50%{filter:brightness(1.25);transform:scale(.96)}}
@media(max-width:370px){.game-shell{padding-inline:12px}.top-actions{gap:3px}.icon-button{width:36px;height:40px}.game-identity h1{font-size:34px}.board{gap:7px}.goal{font-size:13px}}
@media(max-height:720px){.game-shell{padding-top:10px}.topbar{margin-bottom:10px}.scorebar{margin-bottom:9px;padding-bottom:9px}.goal{margin-bottom:7px}.assist-row{margin-top:7px}.ad-reservation{min-height:32px;margin-top:6px}}
@media(max-height:620px){.hint,.ad-reservation{display:none}.goal{min-height:0}.board{width:min(100%,310px)}.assist-row{margin-top:6px}}
@media(min-width:700px) and (orientation:portrait){.game-shell{width:min(100%,744px);padding-inline:22px}.board{width:min(100%,58svh,620px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}}
