@font-face{font-family:Milyuna;src:url(/fonts/Milyuna-Regular.otf) format("opentype");font-display:swap}@font-face{font-family:Milyuna;src:url(/fonts/Milyuna-Italic.otf) format("opentype");font-style:italic;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Regular.ttf) format("truetype");font-weight:400;font-display:swap}:root{--canvas:#FFFCFA;--ink:#1a1a1a;--ink-soft:#5a5a5a;--navy:#2F4156;--navy-ink:#192431;--burgundy:#48182F;--sky:#C8D9E6;--beige:#F5EFEB;--lilac:#E4DEEF;--highlight-blue:#DFEAF2;--hairline:rgba(26,26,26,.1);font-family:Inter,sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible,summary:focus-visible{outline:3px solid var(--navy);outline-offset:3px}button{border:0}svg{width:22px;height:22px;flex-shrink:0}p{line-height:1.6}button:active{transform:translateY(1px)}.topbar{background:linear-gradient(#2f41560b,#2f41560b),var(--canvas);border-bottom:1px solid rgba(47,65,86,.45);padding-top:env(safe-area-inset-top)}.nav{max-width:1080px;padding:18px clamp(20px,4vw,40px);margin:auto;display:flex;align-items:center;justify-content:space-between}.wordmark>span{font-family:Milyuna,serif;font-size:29px}.wordmark i{font-size:13px;color:var(--navy)}.nav-note{display:flex;align-items:center;gap:12px;font-size:10px;color:var(--navy)}.nav-note svg{width:15px;height:15px}main{width:min(100% - 32px,440px);margin:auto;padding-bottom:max(26px,env(safe-area-inset-bottom))}.intro{text-align:center;padding:32px 0 26px}.eyebrow{font-size:9px;letter-spacing:.18em;color:var(--navy);margin:0 0 13px}.intro h1{font-family:Milyuna,serif;font-weight:400;font-size:clamp(43px,11.6vw,60px);line-height:1.13;letter-spacing:-.035em;margin:0 0 12px}.highlight{background:linear-gradient(var(--highlight-blue),var(--highlight-blue)) no-repeat 0 72% / 100% 42%;padding:0 .12em;margin:0 -.04em}.intro>p:last-child{font-size:12px;color:var(--ink-soft);margin:0}.level-picker{display:grid;grid-template-columns:1fr 1.2fr 1fr;padding:4px;border:1px solid var(--hairline);border-radius:12px;background:var(--beige);gap:3px}.level-picker button{min-height:42px;background:transparent;border-radius:9px;font-size:12px;color:var(--ink-soft);transition:background .15s,box-shadow .15s}.level-picker button[aria-pressed=true]{background:var(--canvas);color:var(--navy-ink);box-shadow:0 2px 5px #2f41561f}.stats{display:flex;align-items:center;justify-content:space-between;padding:22px 4px 18px}.stat-label{display:block;font-size:9px;letter-spacing:.14em;color:var(--ink-soft);margin-bottom:8px}.stat-value{display:flex;align-items:center;gap:8px;font-size:25px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.05em;color:var(--navy)}.stat-value svg{width:18px;height:18px}.time{text-align:right}.restart{border:1px solid var(--hairline);background:var(--canvas);width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--navy);box-shadow:0 2px 4px #2f41560d}.board-shell{padding:7px;border-radius:12px;background:var(--beige);border:1px solid rgba(47,65,86,.15);box-shadow:0 10px 25px -16px #2f415666,inset 0 1px 3px #2f415614}.board{display:grid;grid-template-columns:repeat(var(--size),minmax(0,1fr));gap:3px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}.cell{padding:0;aspect-ratio:1;min-width:0;display:grid;place-items:center;border-radius:4px;font-size:clamp(10px,calc(215px / var(--size)),20px);font-weight:400;touch-action:none;position:relative;transition:background .12s,transform .12s;line-height:1}.cell.covered{background:var(--canvas);box-shadow:0 2px #2f41562e,0 2px 3px #2f415617;border:1px solid rgba(47,65,86,.08)}.cell.covered:active{transform:translateY(1px);box-shadow:none;background:var(--highlight-blue)}.cell.revealed{background:#c8d9e63b;color:var(--navy);box-shadow:inset 0 0 0 1px #2f415609}.cell[data-count="2"],.cell[data-count="5"]{color:var(--burgundy)}.cell[data-count="3"],.cell[data-count="6"]{color:var(--navy-ink)}.cell[data-count="4"],.cell[data-count="7"],.cell[data-count="8"]{color:var(--ink)}.cell svg{width:65%;height:65%;max-width:23px;max-height:23px}.cell.flagged{color:var(--navy);background:var(--highlight-blue)}.cell.exploded{color:var(--canvas);background:var(--burgundy)}.cell.wrong:after{content:"";position:absolute;width:85%;height:2px;background:var(--burgundy);transform:rotate(-45deg)}.won .board-shell,.board-shell.won{border-color:var(--navy)}.board-caption{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--ink-soft);padding:13px 2px 23px}.dot{padding:0 4px}.flag-toggle{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:12px 16px;background:var(--canvas);border:1px solid rgba(47,65,86,.25);border-radius:10px;color:var(--navy);font-size:13px}.flag-toggle.active{background:var(--highlight-blue);border-color:var(--navy)}.toggle-state{margin-left:auto;font-size:9px;letter-spacing:.08em}.switch{width:30px;height:18px;border-radius:20px;background:var(--beige);border:1px solid rgba(47,65,86,.3);padding:2px}.switch span{display:block;width:12px;height:12px;border-radius:50%;background:var(--navy);transition:transform .15s}.active .switch{background:var(--navy)}.active .switch span{background:var(--canvas);transform:translate(12px)}.hint{font-size:11px;color:var(--ink-soft);text-align:center;margin:12px 0 24px}.personal-best{display:flex;align-items:center;justify-content:center;gap:10px;padding:18px 0;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.personal-best svg{width:15px;height:15px;color:var(--navy)}.personal-best span{font-size:9px;letter-spacing:.12em;color:var(--ink-soft)}.personal-best strong{font-size:12px;font-weight:400;color:var(--navy);font-variant-numeric:tabular-nums}.guide{margin-top:12px;font-size:12px;color:var(--ink-soft)}.guide summary{min-height:44px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;list-style:none}.guide summary::-webkit-details-marker{display:none}.guide[open] summary span{transform:rotate(45deg)}.guide>div{padding-bottom:8px}.guide p{margin:8px 0 16px}footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--hairline);padding-top:18px;color:var(--ink-soft);font-size:9px}footer>span:first-child{font-style:italic}.offline{max-width:65%;text-align:right}.notice{font-size:12px;background:var(--lilac);padding:12px;border-radius:10px}.notice button{padding:12px;background:var(--navy-ink);color:var(--canvas);border-radius:8px}dialog{color:var(--ink);background:var(--canvas);border:1px solid rgba(47,65,86,.2);border-radius:18px;padding:30px 24px 18px;width:min(calc(100% - 32px),360px);text-align:center;box-shadow:0 20px 80px #1924312e;max-height:calc(100dvh - 48px);overflow:auto}dialog::backdrop{background:#19243159;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog[open]{animation:arrive .22s ease-out}.result-mark{width:58px;height:58px;display:grid;place-items:center;margin:0 auto 24px;background:var(--lilac);color:var(--navy);border-radius:50%}.result-mark svg{width:31px;height:31px}dialog h2{font-family:Milyuna,serif;font-size:39px;line-height:1.1;font-weight:400;letter-spacing:-.025em;margin:18px 0}dialog p{font-size:12px;color:var(--ink-soft)}dialog .eyebrow{font-size:8px}.result-stats{display:flex;justify-content:space-between;align-items:center;border-block:1px solid var(--hairline);padding:16px 0;margin:22px 0;font-size:12px;color:var(--navy)}.result-stats strong{font-size:23px;font-weight:400;font-variant-numeric:tabular-nums}.primary{background:var(--navy-ink);color:var(--canvas);border:1px solid var(--navy-ink);padding:14px 24px;border-radius:10px;min-height:48px;font-size:13px}.full{width:100%}.text-button{display:block;width:100%;background:transparent;min-height:44px;font-size:12px;color:var(--ink-soft);margin-top:6px}.record{color:var(--burgundy)}@keyframes arrive{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:700px){.intro{padding-top:44px}.game{padding:24px;border:1px solid var(--hairline);border-radius:18px;box-shadow:0 16px 50px -30px #2f41564d}main{width:460px}.level-picker{margin-top:0}.stats{padding-top:24px}.guide,footer{margin-inline:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-width:350px){.nav-note{font-size:9px;gap:6px}.board{gap:2px}.board-shell{padding:5px}.intro{padding-top:25px}.board-caption{font-size:9px}.cell{border-radius:3px}}[hidden]{display:none!important}.wordmark-button{background:transparent;padding:0;min-height:44px}.back-games{background:transparent;color:var(--navy);font-size:12px;min-height:44px;padding:0 4px}.collection-page .intro{padding-bottom:30px}.game-menu{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.game-card{min-width:0;display:flex;gap:24px;width:100%;padding:24px;text-align:left;align-items:center;background:var(--canvas);border:1px solid rgba(47,65,86,.18);border-radius:14px;box-shadow:0 6px 18px -12px #2f41564d;transition:transform .15s,box-shadow .15s}.game-card:hover{box-shadow:0 8px 24px -12px #2f415666}.game-card:active{transform:translateY(2px)}.card-art{flex:0 0 100px;display:grid;gap:3px;aspect-ratio:1;padding:7px;border-radius:10px;background:var(--beige);transform:rotate(-5deg)}.art-mines,.art-sudoku{grid-template-columns:repeat(3,1fr)}.card-art>span{display:grid;place-items:center;border-radius:3px;color:var(--navy);font-size:17px}.art-mines>span{background:var(--canvas);box-shadow:0 2px #2f415626}.art-mines>span:nth-child(5){background:var(--sky)}.art-mines svg{width:17px;height:17px}.art-sudoku{background:var(--lilac);gap:1px;transform:rotate(4deg)}.art-sudoku>span{background:var(--canvas);border-radius:0}.art-tetris{grid-template-columns:repeat(4,1fr);transform:rotate(-4deg);background:var(--beige)}.art-tetris .tile-navy{background:var(--navy)}.art-tetris .tile-lilac{background:var(--lilac);border:1px solid rgba(47,65,86,.2)}.card-copy{min-width:0;flex:1}.card-copy .eyebrow{font-size:7px;letter-spacing:.1em;display:block;margin-bottom:10px}.card-copy h2{font:400 31px/1 Milyuna,serif;letter-spacing:-.03em;margin:0 0 10px}.card-copy p{font-size:11px;color:var(--ink-soft);line-height:1.5;margin:0 0 14px}.card-action{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--navy)}.card-action>span{font-size:20px}.collection-note{display:flex;align-items:center;justify-content:center;gap:10px;margin:22px 0 0;color:var(--ink-soft)}.collection-note svg{width:14px;height:14px;color:var(--navy)}.collection-note p{font-size:10px}.collection-footer{width:min(100% - 32px,440px);margin:0 auto;padding-bottom:max(26px,env(safe-area-inset-bottom))}.collection-update{width:min(100% - 32px,440px);margin:0 auto 24px}button:disabled{cursor:default;opacity:.5;transform:none}.sudoku-page .stats{padding-top:0}.sudoku-board{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));border:2px solid var(--navy);border-radius:5px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.sudoku-cell{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:0;background:var(--canvas);padding:0;border-right:1px solid rgba(47,65,86,.18);border-bottom:1px solid rgba(47,65,86,.18);font-size:clamp(17px,5.4vw,25px);touch-action:none;font-variant-numeric:tabular-nums}.sudoku-cell:nth-child(9n){border-right:0}.sudoku-cell:nth-child(n+73){border-bottom:0}.sudoku-cell.box-right{border-right:2px solid var(--navy)}.sudoku-cell.box-bottom{border-bottom:2px solid var(--navy)}.sudoku-cell.given{color:var(--navy-ink)}.sudoku-cell.entered{color:var(--burgundy)}.sudoku-cell.unit{background:var(--beige)}.sudoku-cell.matching{background:var(--lilac)}.sudoku-cell.selected{background:var(--sky);box-shadow:inset 0 0 0 2px var(--navy);z-index:1}.sudoku-cell:focus-visible{outline:2px solid var(--navy);outline-offset:-3px;z-index:2}.sudoku-cell.invalid{color:var(--burgundy)}.error-dot{position:absolute;width:4px;height:4px;background:var(--burgundy);border-radius:50%;right:3px;bottom:3px}.pencil-grid{display:grid;grid-template-columns:repeat(3,1fr);width:100%;height:100%;padding:2px}.pencil-grid>span{font-size:8px;line-height:1;display:grid;place-items:center;color:var(--navy)}.number-pad{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:3px;margin:18px 0 12px}.number-pad button{min-height:46px;border-radius:6px;background:var(--beige);color:var(--navy);font-size:21px;box-shadow:0 2px #2f415624;padding:0}.sudoku-tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.sudoku-tools button{min-height:46px;border-radius:8px;font-size:11px;background:var(--canvas);border:1px solid rgba(47,65,86,.2);padding:5px;color:var(--navy)}.sudoku-tools button[aria-pressed=true]{background:var(--sky);border-color:var(--navy)}.sudoku-tools small{font-size:8px;display:block;margin-top:4px}.sudoku-message{min-height:36px;margin:14px 0 6px}.tetris-page .intro{padding:22px 0 20px}.tetris-top{display:flex;justify-content:space-between;gap:14px;align-items:start;margin-bottom:14px}.tetris-top .stat-value{font-size:22px;font-weight:400}.next-piece{width:46px}.mini-piece{display:grid;gap:1px;width:42px;height:32px;align-content:start}.mini-piece>span{aspect-ratio:1;border-radius:1px;max-height:12px}.tetris-stage{position:relative;width:min(100%,230px);margin:auto;border:1px solid rgba(47,65,86,.25);border-radius:8px;overflow:hidden;box-shadow:0 8px 20px -12px #2f415666}.tetris-board{display:grid;grid-template-columns:repeat(10,1fr);gap:1px;background:var(--beige);padding:5px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.tetris-board:focus-visible{outline:3px solid var(--navy);outline-offset:-3px}.tetris-square{aspect-ratio:1;min-width:0;background:#fffcfa99;border-radius:2px}.block-I{background:var(--sky);box-shadow:inset 0 0 0 1px #2f41564d,inset 0 -2px #2f415633}.block-O{background:var(--lilac);box-shadow:inset 0 0 0 1px #2f41564d,inset 0 -2px #2f415633}.block-T{background:var(--navy);box-shadow:inset 0 0 0 1px #fffcfa33,inset 0 -2px 0 var(--navy-ink)}.block-S{background:#567c8d;box-shadow:inset 0 0 0 1px #2f415666,inset 0 -2px 0 var(--navy)}.block-Z{background:var(--burgundy);box-shadow:inset 0 0 0 1px #fffcfa33,inset 0 -2px 0 var(--navy-ink)}.block-J{background:#a79bc8;box-shadow:inset 0 0 0 1px #2f41564d,inset 0 -2px #2f41564d}.block-L{background:var(--navy-ink);box-shadow:inset 0 0 0 1px #fffcfa40,inset 0 -2px 0 var(--navy)}.tetris-square.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--navy)}.tetris-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fffcfaf0;padding:16px;text-align:center}.tetris-overlay>svg{color:var(--navy);width:30px;height:30px;margin-bottom:16px}.tetris-overlay h2{font:400 34px/1.1 Milyuna,serif;margin:0 0 8px}.tetris-overlay p{font-size:11px;color:var(--ink-soft);margin:0 0 20px}.tetris-controls{display:grid;grid-template-columns:repeat(3,1fr) 1.4fr;gap:7px;margin-top:16px}.tetris-control{min-height:48px;background:var(--beige);border:1px solid rgba(47,65,86,.12);border-radius:9px;color:var(--navy);font-size:23px;box-shadow:0 2px #2f415629;touch-action:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}.control-down{grid-column:2;grid-row:2}.control-drop{grid-column:4;grid-row:1 / 3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--navy-ink);color:var(--canvas);font-size:13px}.control-drop>span:last-child{font-size:25px}.tetris-actions{display:flex;justify-content:space-between;gap:12px;margin:10px 0}.tetris-actions button{display:flex;gap:7px;align-items:center;justify-content:center;min-height:44px;flex:1;background:transparent;color:var(--navy);font-size:12px}.tetris-actions svg{width:16px;height:16px}@media(max-width:350px){.game-card{padding:18px;gap:17px}.card-art{flex-basis:80px}.card-copy h2{font-size:26px}.card-copy .eyebrow{font-size:6px}.tetris-stage{width:200px}}@media(max-height:800px){.tetris-page .intro{padding:15px 0}.tetris-page .intro h1{font-size:42px}.tetris-stage{width:190px}.tetris-top .stat-value{font-size:20px}.tetris-top{margin-bottom:10px}.tetris-controls{margin-top:12px}}@media(min-width:700px){.sudoku-page .stats{padding-top:0}.tetris-page .game{padding-top:20px}}.tetris-stage{width:clamp(120px,calc((100svh - 480px)/2),230px)}@media(min-width:700px){.tetris-stage{width:clamp(150px,calc((100svh - 500px)/2),230px)}}
