:root{--bg-gradient:linear-gradient(135deg, #f7f4ff 0%, #f0f4ff 50%, #fdf3f8 100%);--bg:#f7f4ff;--bg-surface:#ffffffd9;--bg-board:#ffffffb8;--bg-glass:#fff9;--text:#0f0f14;--text-muted:#6b7280;--text-subtle:#9ca3af;--border:#0000001a;--border-strong:#0000002e;--border-light:#0000000f;--accent:#7c3aed;--accent-strong:#6d28d9;--accent-soft:#7c3aed24;--accent-text:#fff;--glow:#7c3aed14;--cell-bg:#fff;--cell-border:#0000001a;--cell-guide:#00000052;--cell-fill:#2b2836;--cell-cross:#a5a1b2;--cell-wrong:#ef4444;--cell-reveal:#7c3aed;--clue-text:#4b4757;--clue-satisfied:#4b475752;--btn-bg:#18181b;--btn-text:#fff;--btn-hover:#27272a;--btn-shadow:0 4px 14px #0000002e, 0 1px 3px #0000001a;--mode-track:#0000000f;--mode-active-bg:#18181b;--mode-active-text:#fff;--mode-text:#6b7280;--header-bg:#fffc;--header-border:#00000014;--modal-bg:#fffffff5;--modal-backdrop:#0f0f1480;--toast-bg:#18181b;--toast-text:#fff;--shadow-xs:0 1px 2px #0000000f;--shadow-sm:0 2px 8px #00000014, 0 1px 2px #0000000a;--shadow-md:0 8px 24px #0000001a, 0 2px 8px #0000000f;--shadow-lg:0 24px 64px #00000024, 0 8px 24px #00000014}[data-theme=dark]{--bg-gradient:linear-gradient(135deg, #0a0a0f 0%, #0e0d18 50%, #120a14 100%);--bg:#0a0a0f;--bg-surface:#1c1c22e6;--bg-board:#16161ccc;--bg-glass:#1e1e28b3;--text:#f4f4f6;--text-muted:#71717a;--text-subtle:#52525b;--border:#ffffff1a;--border-strong:#ffffff2e;--border-light:#ffffff0f;--accent:#8b5cf6;--accent-strong:#7c3aed;--accent-soft:#8b5cf638;--accent-text:#fff;--glow:#8b5cf621;--cell-bg:#30303ef5;--cell-border:#ffffff1a;--cell-guide:#ffffff61;--cell-fill:#e9e6f4;--cell-cross:#6d6880;--cell-wrong:#f87171;--cell-reveal:#a78bfa;--clue-text:#b9b4c8;--clue-satisfied:#b9b4c84d;--btn-bg:#f4f4f6;--btn-text:#0f0f14;--btn-hover:#e4e4e8;--btn-shadow:0 4px 14px #00000080;--mode-track:#ffffff12;--mode-active-bg:#f4f4f6;--mode-active-text:#0f0f14;--mode-text:#71717a;--header-bg:#101016e0;--header-border:#ffffff12;--modal-bg:#16161efa;--modal-backdrop:#000000b8;--toast-bg:#f4f4f6;--toast-text:#0f0f14;--shadow-xs:0 1px 2px #0000004d;--shadow-sm:0 2px 8px #0000004d, 0 1px 2px #0003;--shadow-md:0 8px 24px #0006, 0 2px 8px #0000004d;--shadow-lg:0 24px 64px #0009, 0 8px 24px #0006}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px;overflow-x:clip}body{background:var(--bg);color:var(--text);background-image:var(--bg-gradient);background-attachment:fixed;min-height:100dvh;font-family:system-ui,Segoe UI,Roboto,Helvetica Neue,sans-serif;overflow-x:clip}body:before{content:"";pointer-events:none;background:radial-gradient(ellipse 70% 45% at 50% 0%, var(--glow), transparent 70%);z-index:0;position:fixed;inset:0}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}button:disabled{cursor:not-allowed;opacity:.38}.app{flex-direction:column;max-width:680px;min-height:100dvh;margin:0 auto;display:flex}.main{padding:1.25rem 1.25rem calc(3rem + env(safe-area-inset-bottom,0px));flex-direction:column;flex:1;align-items:center;gap:1rem;display:flex}.site-nav{background:var(--header-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(16px)saturate(180%);justify-content:space-between;align-items:center;height:70px;padding:0 2.25rem;display:flex}.site-nav__brand{letter-spacing:-.02em;color:var(--text);align-items:center;gap:.6rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.site-nav__zr{color:#7c3aed}.site-nav__builds{color:var(--text)}.site-nav__mark{flex-shrink:0}.site-nav__links{align-items:center;gap:2rem;display:flex}.site-nav__link{color:var(--text-muted);font-size:.875rem;text-decoration:none;transition:color .15s}.site-nav__link:hover{color:var(--text)}.header{background:var(--header-bg);border-bottom:1px solid var(--header-border);-webkit-backdrop-filter:blur(16px)saturate(180%);z-index:20;box-shadow:0 1px 0 var(--border-light), var(--shadow-xs);grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;padding:.875rem 1.5rem;display:grid;position:sticky;top:0;overflow-x:clip}.header__brand{align-items:center;gap:.65rem;display:flex}.header__logo{filter:drop-shadow(0 2px 4px #00000026);font-size:1.8rem;line-height:1}.header__title-block{flex-direction:column;line-height:1.1;display:flex}.header__title{letter-spacing:-.03em;color:var(--text);white-space:nowrap;font-size:1.05rem;font-weight:800}.header__center{justify-content:center;display:flex}.mode-toggle{background:var(--mode-track);border-radius:12px;gap:2px;padding:3px;display:flex}.mode-btn{letter-spacing:.01em;color:var(--mode-text);white-space:nowrap;background:0 0;border-radius:9px;padding:.35rem 1rem;font-size:.78rem;font-weight:700;transition:background .2s,color .2s,box-shadow .2s}.mode-btn--active{background:var(--mode-active-bg);color:var(--mode-active-text);box-shadow:var(--shadow-sm)}.header__nav{justify-content:flex-end;align-items:center;gap:.1rem;display:flex}.nav-btn{border-radius:10px;flex-direction:column;align-items:center;gap:1px;min-width:2.6rem;padding:.35rem .5rem;transition:background .15s;display:flex;position:relative}.nav-btn:hover:not(:disabled){background:var(--border)}.nav-btn__icon{color:var(--text-muted);font-size:1.15rem;font-style:normal;line-height:1}.nav-btn__label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);font-size:.52rem;font-weight:700}.statusbar{width:100%;max-width:560px;color:var(--text-muted);justify-content:space-between;align-items:baseline;padding:0 .25rem;font-size:.78rem;font-weight:600;display:flex}.statusbar__mode{color:var(--text);letter-spacing:-.01em;font-weight:800}.statusbar__progress{color:var(--accent);font-weight:800}.statusbar__progress-total{color:var(--text-muted);font-weight:600}.statusbar__timer{font-variant-numeric:tabular-nums}.ng-board{background:var(--bg-board);border:1px solid var(--border);width:100%;max-width:560px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(12px);border-radius:18px;padding:.875rem;transition:box-shadow .4s;container-type:inline-size}.ng-board--won{box-shadow:0 0 0 2px var(--accent), var(--shadow-md)}.ng-layout{grid-template-columns:auto repeat(var(--size), 1fr);-webkit-user-select:none;user-select:none;touch-action:none;outline:none;display:grid}.ng-layout:focus-visible{box-shadow:0 0 0 2px var(--accent);border-radius:8px}.ng-headrow,.ng-row{display:contents}.clue-corner{min-width:0}.clue{color:var(--clue-text);font-variant-numeric:tabular-nums;font-weight:700;font-size:clamp(.5rem, calc(42cqw / var(--size)), .82rem);min-width:0;line-height:1.1;transition:color .25s;display:flex}.clue--row{flex-direction:row;justify-content:flex-end;align-items:center;gap:.35em;padding-right:.45em}.clue--col{flex-direction:column;justify-content:flex-end;align-items:center;gap:.1em;padding-bottom:.4em}.clue--satisfied,.ng-board--won .clue{color:var(--clue-satisfied)}.cell{aspect-ratio:1;background:var(--cell-bg);border:1px solid var(--cell-border);justify-content:center;align-items:center;min-width:0;transition:background 80ms;display:flex;position:relative}.cell--g-left{border-left:2px solid var(--cell-guide)}.cell--g-top{border-top:2px solid var(--cell-guide)}@media (hover:hover){.ng-board:not(.ng-board--won) .cell:hover{background:var(--accent-soft)}.ng-board:not(.ng-board--won) .cell--filled:hover{background:var(--cell-fill);filter:brightness(1.25)}}.cell--filled{background:var(--cell-fill)}.cell--crossed:after{content:"✕";font-size:clamp(.4rem, calc(40cqw / var(--size)), .8rem);color:var(--cell-cross);font-weight:700;line-height:1}.cell--cursor{box-shadow:inset 0 0 0 2px var(--accent);z-index:1}.cell--wrong{box-shadow:inset 0 0 0 2px var(--cell-wrong);z-index:1}.cell--wrong.cell--filled{background:color-mix(in srgb, var(--cell-fill) 55%, var(--cell-wrong))}.cell--wrong.cell--crossed:after{color:var(--cell-wrong)}.ng-board--won .cell{background:0 0;border-color:#0000}.ng-board--won .cell--filled{background:var(--cell-reveal);border-radius:2px;animation:.5s cubic-bezier(.175,.885,.32,1.275) both pixel-pop}.ng-board--won .cell--crossed:after{content:none}@keyframes pixel-pop{0%{transform:scale(.6)}70%{transform:scale(1.08)}to{transform:scale(1)}}.toolbar{justify-content:center;align-items:center;gap:.75rem;width:100%;max-width:560px;display:flex}.paint-toggle{background:var(--mode-track);border-radius:12px;gap:2px;padding:3px;display:flex}.paint-btn{color:var(--mode-text);white-space:nowrap;background:0 0;border-radius:9px;align-items:center;gap:.45rem;padding:.5rem 1.05rem;font-size:.82rem;font-weight:700;transition:background .2s,color .2s,box-shadow .2s;display:flex}.paint-btn--active{background:var(--mode-active-bg);color:var(--mode-active-text);box-shadow:var(--shadow-sm)}.paint-btn__swatch{justify-content:center;align-items:center;width:.85rem;height:.85rem;line-height:1;display:flex}.paint-btn__swatch--fill{background:var(--accent);border-radius:3px}.paint-btn__swatch--cross{font-size:.85rem;font-weight:900}.tool-btn{border-radius:10px;flex-direction:column;align-items:center;gap:1px;min-width:2.8rem;padding:.35rem .6rem;transition:background .15s;display:flex;position:relative}.tool-btn:hover:not(:disabled){background:var(--border)}.tool-btn__icon{color:var(--text-muted);font-size:1.15rem;line-height:1}.tool-btn__label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);font-size:.52rem;font-weight:700}.check-count{color:#fff;background:#d97706;border-radius:999px;justify-content:center;align-items:center;width:1rem;height:1rem;font-size:.56rem;font-weight:900;display:flex;position:absolute;top:0;right:0}.btn{letter-spacing:.02em;white-space:nowrap;border-radius:12px;padding:.72rem 1.5rem;font-size:.9rem;font-weight:700;transition:background .15s,box-shadow .15s,transform .1s,opacity .15s}.btn--primary{background:var(--btn-bg);color:var(--btn-text);box-shadow:var(--btn-shadow)}.btn--primary:hover:not(:disabled){background:var(--btn-hover);transform:translateY(-1px);box-shadow:0 6px 20px #0003,0 2px 6px #0000001f}.btn--primary:active:not(:disabled){transform:translateY(0)}.btn--share{color:#fff;background:linear-gradient(135deg,#7c3aed,#8b5cf6);border-radius:12px;padding:.72rem 1.75rem;font-size:.9rem;font-weight:700;transition:opacity .15s,transform .1s,box-shadow .15s;box-shadow:0 4px 14px #7c3aed59,0 1px 3px #0000001a}.btn--share:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 6px 20px #7c3aed73}.btn--secondary{background:var(--bg-glass);color:var(--text);border:1px solid var(--border-strong)}.btn--secondary:hover:not(:disabled){background:var(--border);transform:translateY(-1px)}.btn--secondary:active:not(:disabled){transform:translateY(0)}.btn-text-link{color:var(--text-muted);font-size:.85rem;font-weight:600;transition:color .15s}.btn-text-link:hover{color:var(--text)}.game-over-banner{background:var(--bg-surface);border:1px solid var(--border);text-align:center;width:100%;max-width:560px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:18px;flex-direction:column;align-items:center;gap:.6rem;padding:1.5rem;display:flex}.banner--won{letter-spacing:-.03em;background:linear-gradient(135deg,#7c3aed,#ec4899);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:900}.banner__detail{color:var(--text-muted);font-size:.9rem}.toast{background:var(--toast-bg);color:var(--toast-text);pointer-events:none;opacity:0;white-space:nowrap;z-index:100;box-shadow:var(--shadow-md);letter-spacing:.01em;border-radius:999px;padding:.6rem 1.5rem;font-size:.88rem;font-weight:600;transition:opacity .2s,transform .2s;position:fixed;top:9rem;left:50%;transform:translate(-50%)translateY(-.75rem)}.toast--visible{opacity:1;transform:translate(-50%)translateY(0)}.modal-backdrop{background:var(--modal-backdrop);z-index:50;-webkit-backdrop-filter:blur(8px);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--modal-bg);border:1px solid var(--border);width:100%;max-width:390px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:22px;max-height:calc(100dvh - 2rem);padding:2rem;position:relative;overflow-y:auto}.modal h2{letter-spacing:-.03em;text-align:center;margin-bottom:1.5rem;font-size:1.2rem;font-weight:900}.modal h3{text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:.6rem;font-size:.65rem;font-weight:700}.modal__close{width:2rem;height:2rem;color:var(--text-muted);border-radius:9px;justify-content:center;align-items:center;font-size:.9rem;transition:background .15s,color .15s;display:flex;position:absolute;top:1.1rem;right:1.1rem}.modal__close:hover{background:var(--border);color:var(--text)}.modal__game-over{text-align:center;margin-bottom:1.5rem}.modal__result--won{letter-spacing:-.02em;background:linear-gradient(135deg,#7c3aed,#ec4899);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.3rem;font-weight:900}.modal__time{color:var(--text-muted);margin-top:.35rem;font-size:.85rem;font-weight:600}.modal__actions{flex-direction:column;align-items:stretch;gap:.6rem;display:flex}.modal__actions .btn{width:100%}.stats-row{grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:1.5rem;display:grid}.stat{background:var(--bg-glass);border:1px solid var(--border-light);border-radius:14px;flex-direction:column;align-items:center;gap:.25rem;padding:.875rem .35rem;display:flex}.stat__value{letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.35rem;font-weight:900;line-height:1}.stat__value--sm{letter-spacing:-.02em;font-size:.95rem}.stat__label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);text-align:center;white-space:pre-line;font-size:.58rem;font-weight:700;line-height:1.35}.settings-group{margin-bottom:1.5rem}.settings-group:last-child{margin-bottom:0}.settings-options{gap:.5rem;display:flex}.settings-option{border:1.5px solid var(--border);background:var(--bg-glass);border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:.2rem;padding:.7rem .5rem;font-size:.85rem;font-weight:700;transition:border-color .15s,background .15s;display:flex}.settings-option:hover{border-color:var(--border-strong)}.settings-option--active{border-color:var(--accent);background:var(--accent-soft)}.settings-option__hint{color:var(--text-muted);font-size:.6rem;font-weight:600}.settings-note{color:var(--text-muted);margin-top:.6rem;font-size:.72rem;line-height:1.5}.htp-modal{max-width:420px}.htp-desc{color:var(--text-muted);text-align:center;margin-bottom:1.25rem;font-size:.9rem;line-height:1.6}.htp-section{background:var(--bg-glass);border:1px solid var(--border-light);border-radius:14px;flex-direction:column;gap:.6rem;margin-bottom:1.5rem;padding:1rem;display:flex}.htp-rule{align-items:center;gap:.875rem;font-size:.9rem;line-height:1.4;display:flex}.htp-icon{flex-shrink:0;font-size:1.5rem}.htp-subhead{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.75rem;font-size:.65rem;font-weight:700}.htp-example-grid{justify-content:center;align-items:center;gap:.3rem;margin-bottom:1rem;display:flex}.htp-example-clue{color:var(--clue-text);font-variant-numeric:tabular-nums;margin-right:.5rem;font-size:.85rem;font-weight:800}.htp-cell{aspect-ratio:auto;border-radius:6px;flex:none;width:2.4rem;height:2.4rem}.htp-cell.cell--crossed:after{font-size:1rem}.htp-note{color:var(--text-muted);margin-bottom:1rem;font-size:.82rem;line-height:1.6}.htp-note strong{color:var(--text)}.htp-credit{color:var(--text-subtle);font-size:.68rem}.htp-credit a{color:var(--text-muted)}.htp-cta{width:100%;margin-top:.25rem;display:block}.confetti-wrap{pointer-events:none;z-index:200;position:fixed;inset:0;overflow:hidden}.confetti-piece{border-radius:3px;animation:linear forwards confetti-fall;position:absolute;top:-20px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}80%{opacity:1}to{transform:translateY(106vh) rotate(var(--rot,540deg));opacity:0}}@media (prefers-reduced-motion:reduce){.confetti-piece,.ng-board--won .cell--filled{animation:none!important}.confetti-wrap{display:none}*{transition-duration:.01ms!important}}@media (width<=520px){.site-nav{height:52px;padding:0 1rem}.site-nav__links{gap:1rem}.header{gap:.4rem;padding:.6rem .75rem}.header__logo{font-size:1.4rem}.header__title{font-size:.9rem}.nav-btn{min-width:2rem;padding:.4rem .35rem}.nav-btn__label{display:none}.nav-btn__icon{font-size:1.25rem}.main{padding:1rem .6rem calc(2rem + env(safe-area-inset-bottom,0px));gap:.75rem}.ng-board{border-radius:14px;padding:.5rem}.paint-btn{padding:.45rem .8rem;font-size:.78rem}.toast{top:7.5rem}}@media (width<=440px){.header__title-block{display:none}}@media (width<=380px){.site-nav__link{font-size:.78rem}.mode-btn{padding:.32rem .7rem;font-size:.72rem}.statusbar{font-size:.7rem}}
