:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;font-variant-numeric:tabular-nums;color-scheme:light;--paper: #fafafa;--surface: #fff;--ink: #202124;--muted: #676b73;--soft: #eff0f2;--line: #d9dce1;--accent: #415ed1;--on-accent: #fff;--grid: #bfc3cb;--grid-major: #6c727d;--fill: #282b31;--danger: #b43243;--wash: #e9edfc;background:var(--paper);color:var(--ink);-webkit-tap-highlight-color:transparent}:root[data-theme=dark]{color-scheme:dark;--paper: #191b1f;--surface: #22252a;--ink: #f3f4f6;--muted: #adb2bd;--soft: #2c3037;--line: #414650;--accent: #a3b4ff;--on-accent: #192146;--grid: #535966;--grid-major: #9da5b5;--fill: #e3e6ed;--danger: #ff9da9;--wash: #2d354d}@media(prefers-color-scheme:dark){:root[data-theme=system]{color-scheme:dark;--paper: #191b1f;--surface: #22252a;--ink: #f3f4f6;--muted: #adb2bd;--soft: #2c3037;--line: #414650;--accent: #a3b4ff;--on-accent: #192146;--grid: #535966;--grid-major: #9da5b5;--fill: #e3e6ed;--danger: #ff9da9;--wash: #2d354d}}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none}button,input,select{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;touch-action:manipulation;user-select:none;min-height:44px}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button svg{flex-shrink:0}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:600;letter-spacing:-.04em}h1{font-size:38px;line-height:1.1}h2{font-size:25px}h3{font-size:21px}p{line-height:1.5}small,.subtle,.setting-hint{color:var(--muted);font-size:13px;line-height:1.5}.app{--app-width: clamp(440px, 36vw, 1100px);width:min(100%,var(--app-width));height:100dvh;margin:auto;padding:max(12px,env(safe-area-inset-top)) 24px max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column}.icon{width:44px;height:44px;padding:10px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;border-radius:8px;padding:12px 18px;font-weight:600}.primary{background:var(--accent);color:var(--on-accent)}.secondary{background:var(--soft)}.primary:active,.secondary:active{filter:brightness(.93)}.full{width:100%}.text-button{color:var(--muted);padding:10px 12px;border-radius:8px}.home-header,.page-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;min-height:44px}.header-actions{display:flex;gap:4px}.brand{color:var(--ink)}.header-spacer{width:44px}.home-intro{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;min-height:0}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:10px;color:var(--muted)}.home-intro h1{font-size:clamp(44px,5vw,72px)}.home-intro p{font-size:clamp(18px,1.6vw,24px);color:var(--muted)}.home-intro small{margin-top:10px}.home-actions{display:grid;gap:10px}.resume-card{display:flex;flex-direction:column;gap:4px}.resume-detail{font-size:13px;font-weight:400}.home-nav{display:flex;gap:12px;margin:12px 0}.home-nav button{flex:1;color:var(--muted)}.home-footer{margin-top:8px;color:var(--muted);font-size:12px;min-height:24px}.page-title{margin:28px 0 24px}.page-title p{margin-top:10px;color:var(--muted)}.difficulty-list{display:grid;gap:0}.difficulty-row{display:flex;align-items:center;width:100%;padding:18px 0;border-bottom:1px solid var(--line);gap:18px;text-align:left}.difficulty-row>span:nth-child(2){flex:1}.difficulty-row>svg{transform:rotate(180deg);color:var(--muted)}.difficulty-row strong{display:block;font-size:18px;font-weight:500}.difficulty-row small{display:block;margin-top:4px}.difficulty-symbol{width:40px;height:40px;display:grid;place-items:center;color:var(--accent)}.grid-symbol{width:24px;height:24px;border:1px solid currentColor;background:repeating-linear-gradient(0deg,transparent 0 6px,currentColor 6px 7px),repeating-linear-gradient(90deg,transparent 0 6px,currentColor 6px 7px)}.grid-symbol.medium{background-size:5px 5px}.grid-symbol.hard{background-size:4px 4px}.rules-note{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.rules-note button{color:var(--accent)}.game-header{display:grid;grid-template-columns:88px 1fr 88px}.game-header>button{justify-self:start}.game-header>span{text-align:center;font-size:14px}.game-header>span small{display:block;font-size:11px}.game-header>div{display:flex}.game-meta{display:flex;justify-content:space-between;align-items:center;margin:12px 0;font-size:14px;color:var(--muted)}.lives{display:flex;gap:6px;color:var(--danger)}.lives span{display:inline-flex}.lives svg{opacity:.35}.lives .full-heart svg{fill:currentColor;opacity:1}.relaxed-label{color:var(--muted);font-size:12px}.game-content{position:relative;min-height:0;flex:1}.board-section{margin:0}.board-viewport{width:100%;touch-action:none;user-select:none}.board-space{margin-inline:auto}.puzzle-grid{position:relative;display:grid}.clue{display:flex;color:var(--ink);font-weight:600;line-height:1.25;background:transparent}.clue.column{align-items:flex-end;justify-content:center;padding:0 0 8px}.clue.row{align-items:center;justify-content:flex-end;padding-right:10px}.clue-values{display:inline-flex;align-items:center;justify-content:center}.clue.column .clue-values{flex-direction:column;gap:2px}.clue-values span{display:block}.clue.done{color:var(--muted);font-weight:400}.clue.highlight:not(.done){color:var(--accent)}.clue.row.highlight{background:linear-gradient(to left,var(--wash),transparent)}.clue.column.highlight{background:linear-gradient(to top,var(--wash),transparent)}.clue-corner{background:none}.cell{min-height:0;padding:0;border:0;border-radius:0;background:var(--surface);display:grid;place-items:center;color:var(--muted);touch-action:none}.cell.filled{background:var(--fill)}.cell svg{width:48%;height:48%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.cell.mistake{background:var(--danger)}.cell:focus-visible{outline-offset:-3px;z-index:1}.grid-lines{position:absolute;pointer-events:none;fill:none;stroke:var(--grid);stroke-width:1}.grid-lines .major{stroke:var(--grid-major);stroke-width:2}.play-dock{width:var(--board-width);max-width:100%;margin-inline:auto}.segmented{display:flex;position:relative;border-radius:8px;padding:3px;background:var(--soft);isolation:isolate}.segmented .selection{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:6px;background:var(--ink);transition:transform .13s ease-out}.segmented button{display:flex;align-items:center;justify-content:center;gap:8px;flex:1;z-index:1;background:transparent;min-height:46px;color:var(--muted)}.segmented button[aria-pressed=true]{color:var(--paper)}.concealed{visibility:hidden;pointer-events:none}.pause-panel{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--paper);padding:24px}.pause-panel>button{max-width:320px}.pause-panel p{color:var(--muted)}.result-panel{text-align:center;padding:12px 0;display:grid;gap:8px}.result-panel p{font-size:13px;color:var(--muted)}.result-panel>div{display:flex;gap:10px}.result-panel>div button{flex:1}.result-symbol{display:none}.filter-tabs,.theme-picker,.settings-tabs{display:flex;gap:4px;padding:4px;border-radius:8px;background:var(--soft)}.filter-tabs button,.theme-picker button,.settings-tabs button{flex:1;border-radius:5px;padding:6px}.filter-tabs button[aria-pressed=true],.theme-picker button[aria-pressed=true],.settings-tabs button[aria-pressed=true]{background:var(--surface)}.stats-select{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin:12px 0;gap:12px}select{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:10px;min-height:44px}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);margin:4px 0 16px;border-top:1px solid var(--line)}.stat{padding:20px 12px;border-bottom:1px solid var(--line);display:grid;gap:6px}.stat strong{font-size:28px;font-weight:500}.stat span{font-size:12px;color:var(--muted)}.dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);border:1px solid var(--line);border-radius:12px;padding:0;color:var(--ink);background:var(--paper);overflow:hidden;box-shadow:0 12px 48px #0002}.dialog[open]{display:flex;flex-direction:column}.dialog::backdrop{background:#10121880}.dialog header{display:flex;align-items:center;gap:8px;padding:12px 12px 8px 20px;flex-shrink:0}.dialog header h2{flex:1;font-size:21px}.dialog-body{padding:16px 20px 20px;overflow:hidden}.dialog-body>p{margin-bottom:16px}.dialog-body>button+button{margin-top:8px}.settings-panel section{display:grid;gap:16px;margin-top:20px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:48px}.setting-row small{display:block}.switch{display:inline-flex;align-items:center;justify-content:flex-start;width:48px;min-width:48px;height:44px;padding:10px 4px;background:none;position:relative}.switch:before{content:"";position:absolute;inset:10px 0;background:var(--line);border-radius:20px}.switch span{width:18px;height:18px;border-radius:50%;background:var(--surface);z-index:1;transition:transform .13s ease-out}.switch.checked:before{background:var(--accent)}.switch.checked span{transform:translate(22px);background:var(--on-accent)}.volume-row{display:grid;gap:12px}.volume-row>span{display:flex;justify-content:space-between;font-size:14px}.volume-row output{color:var(--muted)}input[type=range]{accent-color:var(--accent);width:100%;height:44px;margin:0}.tutorial{display:grid;gap:14px}.tutorial p{font-size:15px}.lesson-line{display:flex;align-items:center;justify-content:center;gap:4px;margin:8px 0}.lesson-line strong{min-width:52px;text-align:center;white-space:pre;font-weight:600}.lesson-cell{border:1px solid var(--grid-major);width:54px;height:54px;padding:10px;border-radius:0}.lesson-cell.filled,.tutorial-diagram .filled{background:var(--fill)}.lesson-feedback{color:var(--muted);min-height:22px}.tutorial-diagram{display:grid;grid-template-columns:repeat(4,36px);grid-template-rows:repeat(4,36px);margin:0 auto;gap:2px}.tutorial-diagram b,.tutorial-diagram i{display:grid;place-items:center;font-style:normal}.tutorial-diagram i{border:1px solid var(--grid);color:var(--muted)}.notice{display:flex;align-items:center;gap:10px;font-size:12px;border:1px solid var(--line);padding:8px;border-radius:8px;margin-bottom:8px;flex-shrink:0}.notice .icon{margin-left:auto}.loading-pattern{display:grid;grid-template-columns:repeat(3,14px);gap:4px;justify-content:center;margin:20px 0}.loading-pattern i{width:14px;height:14px;background:var(--accent);animation:pulse 1s ease-in-out infinite alternate}.boot{min-height:100dvh;display:grid;place-content:center;text-align:center;gap:16px;padding:24px}.boot p{color:var(--muted)}.portrait-guard{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:24px;background:var(--paper)}.portrait-guard>span{font-size:48px}@keyframes pulse{to{opacity:.3}}@media(hover:hover){.icon:hover,.text-button:hover,.difficulty-row:hover{background:var(--soft)}.home-nav button:hover{color:var(--ink)}}@media(pointer:coarse),(max-width:900px){.app{--app-width: min(100vw, 78dvh)}}@media(max-width:600px){.app{--app-width: 100vw;padding-inline:16px}}@media(max-height:700px){.page-title{margin:18px 0}.page-title h1{font-size:30px}.difficulty-row,.stat{padding-block:12px}.game-meta{margin:6px 0}.tutorial{gap:10px}.tutorial p{font-size:14px}.dialog-body{padding:10px 18px 16px}}@media(orientation:landscape)and (max-height:500px)and (pointer:coarse){.app>:not(.portrait-guard),dialog{visibility:hidden;pointer-events:none}}:root[data-motion=reduced] *,:root[data-motion=reduced] *:before{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before{animation:none!important;transition:none!important}}.brand{display:grid;grid-template-columns:repeat(3,7px);gap:2px}.brand i{width:7px;height:7px;background:var(--line)}.brand .ink{background:var(--ink)}.offline-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px}.offline-dot{width:5px;height:5px;border-radius:50%;background:var(--muted)}.offline-dot.ready{background:var(--accent)}.offline-status button{color:var(--accent);margin-left:auto}.home-middle,.game-viewport{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}.home-group,.game-group{width:100%;flex:0 0 auto;min-height:0}.home-group .home-intro{flex:none;padding:12px 0 24px}.game-group .game-content{flex:none}.home-nav{display:grid;grid-template-columns:1fr 1fr}.home-nav button{width:100%}.difficulty-rules{margin-top:12px;padding-top:12px}.difficulty-rules .setting-row small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.home-group>.home-header,.home-group>.brand-row{margin-bottom:20px}.home-group>.home-footer,.home-group>.menu-footer{margin-top:12px;padding-top:0}.game-group>.game-header{margin-bottom:8px}.selection-middle{flex:1;height:100%;min-height:0;display:flex;flex-direction:column;justify-content:center}.selection-group{width:100%;flex:none;height:auto}.settings-single{display:grid;gap:8px}.setting-label{color:var(--muted);font-size:12px}.settings-single .setting-row{padding:4px 0;min-height:48px}.settings-single .volume-row,.settings-single .volume{margin:4px 0}.settings-footer{border-top:1px solid var(--line);margin-top:8px;padding-top:12px}.settings-footer p{margin-top:8px;font-size:12px;color:var(--muted);line-height:1.5}.dialog .stats-grid{gap:10px;border:0;margin:12px 0 18px}.dialog .stat{border:0;border-radius:10px;background:var(--soft);padding:16px;min-height:80px}.dialog .stat:nth-child(2n){padding-left:16px;border-left:0}.dialog .stat strong{font-size:26px}.dialog .stat span{font-size:12px}@media(max-height:700px){.home-group>.home-header,.home-group>.brand-row{margin-bottom:12px}.home-group .home-intro{padding:6px 0 16px}.selection-group .page-title{margin:16px 0}.selection-group .difficulty-row{min-height:58px;padding-block:10px}.settings-single{gap:4px}.settings-single .setting-row{min-height:44px;padding:0}.dialog .stat{padding:12px;min-height:68px}}@media(max-height:600px){.selection-group>header{margin-bottom:8px}.selection-group h1{font-size:26px;line-height:1.2;margin:8px 0 4px}.selection-group>.intro{font-size:13px;line-height:1.4;margin:4px 0 8px}.selection-group .page-title{margin:8px 0 12px}.selection-group .page-title h1{margin:0}.selection-group .page-title p{font-size:13px;margin-top:8px}.selection-group .difficulty-list{margin-top:4px}.selection-group .difficulty-row{min-height:48px;padding-block:6px}.selection-group .difficulty-row strong{font-size:16px;line-height:1.2}.selection-group .difficulty-row small{font-size:11px;line-height:1.3;margin-top:3px}.selection-group .difficulty-rules{margin-top:8px;padding-top:4px}.selection-group .difficulty-rules .setting-row{min-height:44px;padding-block:0}.selection-group .difficulty-rules .fine-print,.selection-group .difficulty-rules .setting-hint{font-size:11px;line-height:1.4;margin-top:4px}}@media(max-height:600px){.dialog .stat{min-height:0;padding:10px;gap:4px}.dialog .stat strong{font-size:22px}.dialog .stats-grid{gap:8px;margin:10px 0}.dialog-body>.subtle{font-size:11px;line-height:1.4;margin-top:8px;margin-bottom:0}}.selection-group .difficulty-list{display:grid;gap:4px}.selection-group .difficulty-row{border:1px solid var(--line);border-radius:12px;padding-inline:16px;background:var(--soft)}.selection-group .difficulty-row>:last-child{flex-shrink:0;margin-left:12px}@media(hover:hover){.selection-group .difficulty-row:hover{background:var(--line)}}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea,[contenteditable=true],[contenteditable=true] *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.play-dock{margin-top:12px}.game-meta{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;margin:12px 0 8px}.game-meta .lives{justify-self:start}.game-meta .grid-size{font-size:11px;letter-spacing:.04em;color:var(--muted)}.game-meta time{justify-self:end}.play-dock{margin-top:16px}.play-dock .segmented{border:1px solid var(--line);border-radius:999px}.play-dock .selection{border-radius:999px;background:var(--accent)}.play-dock .segmented button{border-radius:999px}.play-dock .segmented button[aria-pressed=true]{color:var(--on-accent)}@media(max-height:650px){.game-meta{margin:6px 0}.play-dock{margin-top:12px}}
