:root{
  color-scheme:dark;
  --ink:#f5f1e7;
  --muted:#aaa99f;
  --deep:#101514;
  --field:#171d1b;
  --panel:rgba(29,35,32,.93);
  --panel-soft:rgba(245,241,231,.055);
  --line:rgba(228,219,196,.16);
  --thread:#d6aa66;
  --thread-soft:#a67c47;
  --sage:#9fc1a7;
  --sage-strong:#c6ddca;
  --danger:#ef947d;
  --danger-deep:#a95147;
  --tile:#ead9b1;
  --tile-deep:#cdbb8d;
  --tile-ink:#26281f;
  --focus:#ffe09a;
  --nudge-on:#a9d6b0;
  --nudge-off:#e1b67f;
  --shadow:0 28px 80px rgba(0,0,0,.42);
  --app-pad:max(7px,env(safe-area-inset-top)) max(7px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));
  font-family:"Segoe UI",ui-rounded,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden}
body{min-height:100dvh;color:var(--ink);background:
  radial-gradient(circle at 16% 10%,rgba(214,170,102,.12),transparent 31%),
  radial-gradient(circle at 88% 88%,rgba(159,193,167,.1),transparent 30%),
  repeating-linear-gradient(0deg,rgba(255,255,255,.012) 0 1px,transparent 1px 12px),
  repeating-linear-gradient(90deg,rgba(255,255,255,.009) 0 1px,transparent 1px 12px),
  linear-gradient(145deg,#0d1211,var(--deep));}
button,select,input{font:inherit}button{color:inherit;touch-action:manipulation}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:3px}[hidden]{display:none!important}
.app{position:relative;width:100%;height:100dvh;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:7px;padding:var(--app-pad);overflow:hidden;isolation:isolate}
.app::before,.app::after{content:"";position:absolute;z-index:-1;pointer-events:none;opacity:.3}
.app::before{left:-8vw;right:45vw;top:31%;height:1px;background:var(--thread);box-shadow:0 18px rgba(214,170,102,.12),0 36px rgba(214,170,102,.08)}
.app::after{top:8vh;bottom:-10vh;right:14vw;width:1px;background:var(--sage);box-shadow:18px 0 rgba(159,193,167,.1),36px 0 rgba(159,193,167,.06)}
.topbar{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:10px;width:min(100%,960px);margin:0 auto;padding:0 2px}
.brand{display:flex;align-items:center;gap:9px;min-width:0}.brand>div{display:grid;gap:1px}.brand-kicker{font-size:8px;letter-spacing:.17em;text-transform:uppercase;color:var(--muted);font-weight:850;white-space:nowrap}.brand strong{font-size:clamp(20px,3vw,29px);line-height:1;letter-spacing:-.055em;white-space:nowrap}.brand em{font-style:normal;color:var(--thread)}
.brand-mark{position:relative;width:40px;height:40px;border:1px solid rgba(214,170,102,.3);border-radius:13px;background:linear-gradient(145deg,rgba(214,170,102,.1),rgba(159,193,167,.06));display:block}.brand-mark i{position:absolute;background:var(--thread);opacity:.7}.brand-mark i:nth-child(1),.brand-mark i:nth-child(2){left:8px;right:8px;height:1px}.brand-mark i:nth-child(1){top:14px}.brand-mark i:nth-child(2){top:25px}.brand-mark i:nth-child(3),.brand-mark i:nth-child(4){top:8px;bottom:8px;width:1px;background:var(--sage)}.brand-mark i:nth-child(3){left:14px}.brand-mark i:nth-child(4){right:14px}
.header-actions{display:flex;align-items:center;gap:5px}.icon-button{min-width:44px;height:44px;border:1px solid var(--line);border-radius:13px;background:var(--panel-soft);display:inline-grid;place-items:center;cursor:pointer;font-weight:900;font-size:17px;box-shadow:inset 0 1px rgba(255,255,255,.05);transition:transform .16s ease,background .16s ease,border-color .16s ease}.icon-button:hover{transform:translateY(-1px);background:rgba(214,170,102,.09);border-color:rgba(214,170,102,.36)}.help-button{grid-template-columns:auto auto;gap:6px;padding:0 11px}.help-button strong{font-size:10px}
.game-panel{min-width:0;min-height:0;width:min(100%,960px);margin:0 auto;border:1px solid var(--line);border-radius:24px;background:var(--panel);box-shadow:var(--shadow);backdrop-filter:blur(13px);padding:clamp(8px,1.7vw,16px);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:clamp(5px,1vh,9px);overflow:hidden}
.mode-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;width:min(100%,540px);justify-self:center}.mode-strip button{position:relative;min-width:0;min-height:46px;border:1px solid var(--line);border-radius:13px;background:var(--panel-soft);padding:6px 9px;text-align:left;display:grid;align-content:center;gap:1px;cursor:pointer}.mode-strip button[aria-pressed="true"]{border-color:rgba(214,170,102,.6);background:rgba(214,170,102,.12);box-shadow:inset 0 0 0 1px rgba(214,170,102,.12)}.mode-strip strong{font-size:11px}.mode-strip small{font-size:8px;color:var(--muted)}.new-dot{position:absolute;right:7px;top:7px;padding:2px 5px;border-radius:999px;background:var(--sage);color:#142019;font-size:7px;font-weight:950;letter-spacing:.05em;text-transform:uppercase}
.context-bar{min-height:34px;width:min(100%,540px);justify-self:center;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px}.context-copy{display:flex;align-items:baseline;gap:6px;min-width:0}.context-copy span{font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:850}.context-copy strong{font-size:13px}.context-copy small{font-size:8px;color:var(--sage);white-space:nowrap}.context-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;min-width:0}.assist-chip,.today-button{border:1px solid rgba(159,193,167,.42);border-radius:999px;background:rgba(159,193,167,.1);color:var(--sage-strong);font-size:8px;font-weight:850}.assist-chip{min-height:28px;padding:6px 8px}.today-button{min-height:44px;cursor:pointer;padding:4px 9px}
.play-zone{min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden}.puzzle-matrix{--clue-rail:68px;--matrix-gap:4px;width:min(100%,540px,calc(100dvh - 170px));min-width:0;display:grid;grid-template-columns:minmax(0,1fr) var(--clue-rail);grid-template-rows:52px minmax(0,1fr);grid-template-areas:"columns key" "board rows";gap:var(--matrix-gap);align-items:stretch;justify-items:stretch}
.column-clues{grid-area:columns;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--matrix-gap)}.row-clues{grid-area:rows;display:grid;grid-template-rows:repeat(5,minmax(0,1fr));gap:var(--matrix-gap)}.matrix-key{grid-area:key;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.025);display:flex;align-items:center;justify-content:center;gap:6px;color:var(--muted);font-size:11px;font-weight:900}
.number-grid{grid-area:board;position:relative;min-width:0;width:100%;aspect-ratio:1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));gap:var(--matrix-gap);padding:5px;border:1px solid rgba(214,170,102,.2);border-radius:19px;background:linear-gradient(145deg,#202724,#101513);box-shadow:inset 0 1px rgba(255,255,255,.05),0 18px 46px rgba(0,0,0,.28);overflow:hidden}
.cell-slot{min-width:0;min-height:0;display:grid}.number-cell{position:relative;width:100%;height:100%;min-width:24px;min-height:44px;padding:0;border:1px solid rgba(255,255,255,.17);border-radius:clamp(8px,1.3vw,13px);background:linear-gradient(145deg,var(--tile),var(--tile-deep));color:var(--tile-ink);font-size:clamp(17px,5.2vmin,31px);font-weight:950;line-height:1;cursor:pointer;box-shadow:inset 0 1px rgba(255,255,255,.45),0 4px 10px rgba(0,0,0,.22);transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease}.number-cell:hover{transform:translateY(-1px)}.number-cell[aria-pressed="true"]{background:linear-gradient(145deg,#d2b477,#ad8b50);border-color:#f4d28c;box-shadow:inset 0 0 0 2px rgba(83,58,19,.18),0 0 0 2px rgba(214,170,102,.25),0 6px 15px rgba(0,0,0,.28)}.number-cell[aria-pressed="true"]::after{content:"◆";position:absolute;right:4px;bottom:2px;color:#694d22;font-size:8px}.number-cell.is-nudge-on{box-shadow:inset 0 0 0 3px rgba(43,94,55,.34),0 0 0 3px rgba(169,214,176,.42),0 0 18px rgba(169,214,176,.2)}.number-cell.is-nudge-on::before{content:"+";position:absolute;left:4px;top:2px;color:#285337;font-size:10px;font-weight:1000}.number-cell.is-nudge-off{box-shadow:inset 0 0 0 3px rgba(120,72,25,.25),0 0 0 3px rgba(225,182,127,.38)}.number-cell.is-nudge-off::before{content:"–";position:absolute;left:4px;top:1px;color:#754b20;font-size:12px;font-weight:1000}
.clue-chip{min-width:0;min-height:44px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.032);padding:3px 4px;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"glyph sum" "glyph count" "state state";align-items:center;column-gap:3px;overflow:hidden;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.clue-glyph{grid-area:glyph;width:16px;height:16px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:1000}.clue-sum{grid-area:sum}.clue-count{grid-area:count}.clue-sum,.clue-count{font-size:8px;white-space:nowrap;font-weight:850}.clue-state{grid-area:state;font-size:6.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clue-chip[data-state="exact"]{border-color:rgba(159,193,167,.6);background:rgba(159,193,167,.1)}.clue-chip[data-state="exact"] .clue-glyph,.clue-chip[data-state="exact"] .clue-state{color:var(--sage-strong)}.clue-chip[data-state="over"]{border-style:double;border-color:rgba(239,148,125,.72);background:rgba(239,148,125,.08)}.clue-chip[data-state="over"] .clue-glyph,.clue-chip[data-state="over"] .clue-state{color:var(--danger)}.clue-chip[data-state="impossible"]{border-style:dashed;border-color:rgba(239,148,125,.68);background:repeating-linear-gradient(135deg,rgba(239,148,125,.08) 0 4px,transparent 4px 8px)}.clue-chip[data-state="impossible"] .clue-glyph,.clue-chip[data-state="impossible"] .clue-state{color:var(--danger)}.clue-chip.is-nudge-line{box-shadow:0 0 0 2px rgba(214,170,102,.35),0 0 16px rgba(214,170,102,.16)}
.board-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;width:min(100%,540px);justify-self:center}.board-actions:has(.skip-button:not([hidden])){grid-template-columns:repeat(4,minmax(0,1fr))}.board-actions:has(.next-button:not([hidden])){grid-template-columns:minmax(0,1fr)}.board-actions button{min-width:0;min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--panel-soft);display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;font-size:10px}.board-actions button:hover:not(:disabled){background:rgba(214,170,102,.09);border-color:rgba(214,170,102,.32)}.board-actions button:disabled{opacity:.4;cursor:default}.board-actions span{font-size:15px;color:var(--thread)}.next-button{background:var(--thread)!important;color:#2b220f!important;border-color:transparent!important;font-weight:950}.next-button span{color:#2b220f!important}
.feedback-zone{min-height:34px;text-align:center;display:grid;align-content:center;gap:1px;width:min(100%,620px);justify-self:center}.status-message,.control-hint{margin:0}.status-message{font-size:clamp(9px,1.5vw,12px);font-weight:800;line-height:1.28}.status-message.success{color:var(--sage-strong)}.status-message.error{color:var(--danger)}.status-message.neutral{color:var(--thread)}.control-hint{font-size:7px;color:var(--muted)}.control-hint span{border:1px solid var(--line);border-radius:4px;padding:1px 3px;margin-right:3px;letter-spacing:1px;font-weight:900}
.game-tip{position:fixed;z-index:8;left:50%;bottom:max(12px,calc(env(safe-area-inset-bottom) + 7px));transform:translate(-50%,14px);width:min(90vw,520px);min-height:44px;border:1px solid rgba(214,170,102,.34);border-radius:14px;background:#25271f;color:var(--ink);padding:9px 13px;display:flex;align-items:center;justify-content:center;gap:8px;opacity:0;pointer-events:none;box-shadow:0 18px 46px rgba(0,0,0,.42);font-size:10px;font-weight:750;transition:opacity .26s ease,transform .26s ease}.game-tip.is-visible{opacity:1;transform:translate(-50%,0);pointer-events:auto}.game-tip.is-fading{opacity:0;transform:translate(-50%,8px)}.game-tip>span:first-child{color:var(--thread)}
.app-dialog{width:min(94vw,650px);max-height:min(90dvh,780px);padding:0;border:0;border-radius:24px;background:transparent;color:var(--ink);overflow:visible}.app-dialog::backdrop{background:rgba(4,7,6,.75);backdrop-filter:blur(7px)}.dialog-card{max-height:min(90dvh,780px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:linear-gradient(145deg,#29302c,#151a18);border:1px solid rgba(214,170,102,.24);border-radius:24px;box-shadow:0 34px 90px rgba(0,0,0,.55);overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px;border-bottom:1px solid var(--line)}.dialog-header>div{display:grid;gap:2px}.dialog-kicker{font-size:8px;letter-spacing:.15em;text-transform:uppercase;color:var(--sage);font-weight:900}.dialog-header h2{margin:0;font-size:clamp(23px,4vw,34px);letter-spacing:-.045em}.dialog-close{width:44px;height:44px;border:1px solid var(--line);border-radius:12px;background:var(--panel-soft);font-size:24px;cursor:pointer}.dialog-content{padding:15px 18px;overflow:auto;color:var(--muted);font-size:12px;line-height:1.48}.dialog-content h3{margin:15px 0 6px;color:var(--ink);font-size:12px}.dialog-content p{margin:0 0 10px}.dialog-actions{display:flex;justify-content:flex-end;gap:7px;padding:12px 18px 16px;border-top:1px solid var(--line)}.dialog-actions button{min-width:105px;min-height:44px;border:1px solid var(--line);border-radius:11px;background:var(--panel-soft);padding:0 13px;font-weight:850;font-size:10px;cursor:pointer}.dialog-actions button.primary{background:var(--thread);color:#2b220f;border-color:transparent}.dialog-actions button.danger{background:rgba(239,148,125,.12);border-color:rgba(239,148,125,.5)}
.rule-stack{display:grid;gap:8px}.rule-row{display:grid;grid-template-columns:38px minmax(0,1fr);gap:9px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:9px;background:var(--panel-soft)}.rule-row>b{width:38px;height:38px;border:1px solid rgba(214,170,102,.28);border-radius:10px;display:grid;place-items:center;color:var(--thread);font-size:14px}.rule-row>span{display:grid;gap:2px}.rule-row strong{color:var(--ink);font-size:11px}.rule-row small{font-size:9px}.demo-box{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(10,15,13,.4);display:grid;gap:8px}.demo-tiles{display:grid;grid-template-columns:repeat(3,48px);gap:7px;justify-content:center}.demo-tile{width:48px;height:48px;border:1px solid rgba(255,255,255,.17);border-radius:11px;background:linear-gradient(145deg,var(--tile),var(--tile-deep));color:var(--tile-ink);font-weight:950;cursor:pointer}.demo-tile[aria-pressed="true"]{background:#b89457;box-shadow:0 0 0 2px rgba(214,170,102,.4)}.demo-clue{text-align:center;color:var(--ink);font-weight:850}.demo-clue[data-state="exact"]{color:var(--sage-strong)}.demo-clue[data-state="over"]{color:var(--danger)}.setting-row{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.setting-row>span:first-child{display:grid;gap:2px}.setting-row strong{color:var(--ink);font-size:10px}.setting-row small{font-size:8px}.setting-row select{min-width:145px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:#202722;color:var(--ink);padding:0 8px}.toggle-control{position:relative;width:48px;height:28px;flex:none}.toggle-control input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;z-index:1;cursor:pointer}.toggle-control i{position:absolute;inset:0;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.08);pointer-events:none}.toggle-control i::after{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:var(--muted);transition:.18s}.toggle-control input:checked+i{background:var(--sage)}.toggle-control input:checked+i::after{transform:translateX(20px);background:#fff}.toggle-control input:focus-visible+i{outline:3px solid var(--focus);outline-offset:3px}.audio-status{font-size:9px;margin:8px 0 0!important}.summary{text-align:center}.summary-mark{width:68px;height:68px;margin:0 auto 9px;border:1px solid rgba(159,193,167,.38);border-radius:19px;display:grid;place-items:center;color:var(--sage-strong);font-size:26px;background:rgba(159,193,167,.08)}.summary p{max-width:37em;margin:0 auto 11px}.result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:10px 0}.result-card{border:1px solid var(--line);border-radius:12px;background:var(--panel-soft);padding:10px;text-align:center;display:grid;gap:2px}.result-card strong{color:var(--ink);font-size:17px}.result-card span{font-size:7px;text-transform:uppercase;letter-spacing:.08em}
@media(max-width:600px){
  :root{--app-pad:max(5px,env(safe-area-inset-top)) max(5px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left))}
  .app{gap:4px}.topbar{min-height:44px}.brand-mark{width:36px;height:36px}.brand-kicker{display:none}.brand strong{font-size:18px}.header-actions{gap:3px}.icon-button{min-width:44px;height:44px}.help-button{grid-template-columns:1fr;width:44px;padding:0}.help-button strong{display:none}
  .game-panel{border-radius:17px;padding:6px;gap:4px}.mode-strip{gap:4px}.mode-strip button{min-height:44px;border-radius:10px;padding:4px 7px;text-align:center;place-content:center}.mode-strip strong{font-size:10px}.mode-strip small{font-size:7px}.new-dot{right:4px;top:4px}
  .context-bar{min-height:29px}.context-copy{gap:4px}.context-copy span{font-size:7px}.context-copy strong{font-size:11px}.context-copy small{font-size:7px}.assist-chip{min-height:25px;font-size:7px;padding:3px 6px}.today-button{min-height:44px;font-size:7px;padding:3px 6px}
  .puzzle-matrix{--clue-rail:54px;--matrix-gap:2px;width:min(100%,calc(100vw - 14px));grid-template-rows:49px minmax(0,1fr)}.number-grid{gap:2px;padding:3px;border-radius:15px}.number-cell{min-height:44px;border-radius:8px;font-size:clamp(17px,7vw,26px)}.clue-chip{min-height:42px;border-radius:8px;padding:2px;column-gap:1px}.clue-glyph{width:13px;height:13px;font-size:7px}.clue-sum,.clue-count{font-size:7.2px}.clue-state{font-size:5.8px;letter-spacing:.03em}.matrix-key{font-size:8px;gap:3px}
  .board-actions{gap:4px}.board-actions button{min-height:44px;border-radius:9px;font-size:9px}.feedback-zone{min-height:29px}.status-message{font-size:9px}.control-hint{display:none}
}
@media(max-width:350px){.brand{gap:4px}.brand strong{font-size:15px}.puzzle-matrix{--clue-rail:52px;width:min(100%,calc(100vw - 12px))}.clue-sum,.clue-count{font-size:6.8px}.clue-state{font-size:5.5px}.context-copy small{max-width:75px;overflow:hidden;text-overflow:ellipsis}.today-button{max-width:105px;white-space:normal;line-height:1.05}}
@media(max-width:600px) and (max-height:520px){.puzzle-matrix{width:min(100%,calc(100dvh - 170px));--clue-rail:48px}.number-cell{min-height:24px}.clue-chip{min-height:34px}.mode-strip small,.context-copy small{display:none}}
@media(max-height:700px) and (min-width:601px){.app{gap:4px}.topbar{min-height:44px}.game-panel{padding:7px;gap:3px}.mode-strip button{min-height:44px}.context-bar{min-height:28px}.puzzle-matrix{width:min(100%,calc(100dvh - 270px),430px);grid-template-rows:46px minmax(0,1fr)}.feedback-zone{min-height:28px}}
@media(max-width:900px) and (min-height:700px){.game-panel{grid-template-rows:auto auto auto auto auto;align-content:start}.play-zone{place-items:start center}.puzzle-matrix{margin-top:2px}}
@media(max-width:520px){.app-dialog{width:min(97vw,650px)}.dialog-header{padding:13px}.dialog-content{padding:13px}.dialog-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:10px 13px 13px}.dialog-actions button{min-width:0;width:100%;padding:0 6px}.setting-row{align-items:flex-start}.setting-row select{min-width:128px}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
:root[data-motion-profile="instant"] *,:root[data-motion-profile="instant"] *::before,:root[data-motion-profile="instant"] *::after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}
