@font-face{font-family:GameDigits;src:url(/fonts/fredoka-latin.woff2)format("woff2");font-weight:400 700;font-display:swap;unicode-range:U+30-39,U+78,U+2?,U+3A-40}@font-face{font-family:GameHanzi;src:url(/fonts/game-hanzi-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+4E66,U+4E91,U+4EBA,U+4F1E,U+5154,U+571F,U+5C71,U+65E5,U+661F,U+6708,U+6728,U+679C,U+6C34,U+706B,U+706F,U+725B,U+7403,U+7434,U+74DC,U+7530,U+77F3,U+7AF9,U+7C73,U+7CD6,U+7F8A,U+8239,U+82B1,U+8336,U+8349,U+864E,U+866B,U+8863,U+8C46,U+8C61,U+8D1D,U+8F66,U+949F,U+95E8,U+96E8,U+96EA,U+978B,U+98CE,U+996D,U+9A6C,U+9C7C,U+9E1F,U+9E7F,U+9F13,U+9F9F}:root{--page:#f5eee1;--surface:#fffdf8;--tray:#e8dcc6;--tray-edge:#d3c3a6;--ink:#2f2419;--ink-soft:#6f5e4b;--ink-faint:#94816a;--frame:#796b56;--box-line:#a39176;--grid-line:#dfd5c4;--board-frame-width:5px;--board-box-width:2.5px;--cell:#fffdf8;--given:#2f2419;--entered:#b5502c;--selected:#f6cfa4;--selected-ink:#7a3b1c;--given-cell:#fffdf8;--board-selected:#fff5e6;--board-selection-edge:#658a7c;--peer:#f3f6ee;--same:#e9d6b0;--clash-unit:#f7ddd2;--hint:#f3e6a4;--conflict:#e8a08c;--conflict-ink:#8f2a12;--action:#2f6f66;--action-ink:#fdfbf6;--trail:#c9772f;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--line:2px;--shadow:0 2px 0 #261a0e21,0 10px 24px -12px #261a0e47;--shadow-lift:0 3px 0 #261a0e24,0 18px 40px -16px #261a0e57;--gap-xs:6px;--gap-sm:10px;--gap-md:16px;--gap-lg:26px;--gap-xl:44px;--font-ui:"GameDigits","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,sans-serif;--font-num:"GameDigits","SF Pro Rounded",system-ui,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--page);color:var(--ink);font-family:var(--font-ui);font-synthesis-weight:none;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;font-weight:500;line-height:1.6}h1,h2,h3,h4,p,ol,ul{margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0}button:disabled{cursor:default}svg{flex-shrink:0;display:block}img{max-width:100%}::selection{background:var(--selected);color:var(--selected-ink)}:focus-visible{outline:3px solid var(--trail);outline-offset:3px;border-radius:6px}:where(.cell):focus-visible{outline-offset:-4px}.app{flex-direction:column;min-height:100svh;display:flex}.app:not(.game-screen){padding-bottom:calc(104px + env(safe-area-inset-bottom))}.screen{width:min(1120px,100% - 48px);padding:var(--gap-lg) 0 var(--gap-xl);margin:0 auto}.loading-screen{justify-content:center;align-items:center;gap:var(--gap-md);min-height:100svh;padding:var(--gap-lg);text-align:center;color:var(--ink-soft);flex-direction:column;display:flex}.loading-screen h1{color:var(--ink);font-size:30px;font-weight:700}.t-display{letter-spacing:0;font-size:clamp(26px,3vw,34px);font-weight:600;line-height:1.25}h2{letter-spacing:-.01em;font-size:clamp(24px,2.6vw,32px);font-weight:700;line-height:1.2}h3{font-size:20px;font-weight:700;line-height:1.3}.lede{color:var(--ink-soft);max-width:62ch;margin-top:var(--gap-sm);font-size:17px}.micro{color:var(--ink-faint);font-size:14px}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.button{background:var(--surface);min-height:52px;color:var(--ink);border:var(--line) solid var(--tray-edge);border-radius:var(--r-md);justify-content:center;align-items:center;gap:9px;padding:12px 20px;font-size:17px;font-weight:600;transition:transform .12s cubic-bezier(.2,.8,.3,1),background .12s,border-color .12s,box-shadow .12s;display:inline-flex;box-shadow:0 2px #261a0e1a}.button:hover:not(:disabled){border-color:var(--ink-faint)}.button:active:not(:disabled){transform:translateY(2px);box-shadow:0 0 #0000,0 4px 10px -6px #261a0e4d}.button:disabled{opacity:.42;box-shadow:none}.button svg{width:22px;height:22px}.button.primary{background:var(--action);border-color:var(--action);color:var(--action-ink);box-shadow:0 3px #1f4f48}.button.primary:hover:not(:disabled){color:var(--action-ink);background:#2a635b;border-color:#2a635b}.button.primary:active:not(:disabled){box-shadow:0 0 #1f4f48}.button.large{min-height:62px;padding:14px 26px;font-size:19px;font-weight:700}.button.large svg{width:24px;height:24px}.button.quiet{border-color:var(--tray-edge);box-shadow:none;background:0 0}.button.quiet:hover:not(:disabled){background:var(--surface)}.button.text-button{box-shadow:none;min-height:44px;color:var(--trail);text-underline-offset:4px;background:0 0;border:0;padding:8px 4px;font-weight:600;text-decoration:underline;text-decoration-thickness:2px}.button.text-button:hover:not(:disabled){color:var(--ink)}.button.icon-button{border-radius:50%;width:46px;height:46px;min-height:46px;padding:11px}.button.icon-button svg{width:22px;height:22px}.button.icon-button.quiet{border-color:#0000}.button.icon-button.quiet:hover:not(:disabled){background:var(--tray);border-color:#0000}.button.selected{background:var(--selected);border-color:var(--trail)}input[type=checkbox]{appearance:none;background:var(--tray);border:var(--line) solid var(--tray-edge);border-radius:20px;width:58px;min-width:58px;height:32px;margin:0;transition:background .15s,border-color .15s;position:relative}input[type=checkbox]:after{content:"";background:var(--surface);border-radius:50%;width:22px;height:22px;transition:left .15s cubic-bezier(.2,.8,.3,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #261a0e4d}input[type=checkbox]:checked{background:var(--action);border-color:var(--action)}input[type=checkbox]:checked:after{left:29px}select{background-color:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-md);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236f5e4b' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 13px center;background-repeat:no-repeat;background-size:18px;max-width:100%;min-height:52px;padding:10px 40px 10px 14px}.topbar{align-items:center;gap:var(--gap-sm);grid-template-columns:1fr auto 1fr;width:min(1120px,100% - 32px);margin:0 auto;padding:14px 0;display:grid}.topbar .back-button{border-radius:var(--r-md);justify-self:start;min-height:44px;padding:8px 14px 8px 10px;font-size:15px}.header-actions{justify-self:end;gap:8px;display:flex}.game-title{text-align:center;min-width:0}.game-title h1{white-space:nowrap;text-overflow:ellipsis;font-size:19px;font-weight:700;line-height:1.2;overflow:hidden}.game-title small{color:var(--ink-faint);margin-top:1px;font-size:13px;display:block}.notice{justify-content:space-between;align-items:center;gap:var(--gap-md);width:min(1120px,100% - 32px);margin:var(--gap-sm) auto 0;background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-md);padding:12px 16px;font-size:15px;display:flex}.notice.error{color:#8d3b23;background:#fbeee8;border-color:#c8816a}.home{padding-top:var(--gap-md)}.home-grid{gap:var(--gap-lg);margin-top:var(--gap-lg);grid-template-columns:minmax(0,1fr);align-items:center;display:grid}.challenge-card{align-items:flex-start;gap:var(--gap-md);background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-xl);box-shadow:var(--shadow);flex-direction:column;padding:28px;display:flex}.challenge-card .card-size{font-family:var(--font-num);letter-spacing:-.02em;font-size:38px;font-weight:700;line-height:1}.challenge-card .card-name{color:var(--ink-soft);font-size:20px;font-weight:700}.challenge-card .button{width:100%}.home-board{aspect-ratio:1;border:var(--board-frame-width) solid var(--frame);border-radius:var(--r-lg);background:var(--frame);width:100%;max-width:340px;box-shadow:var(--shadow);grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);margin-inline:auto;display:grid;overflow:hidden}.home-board span{font-family:var(--font-num);color:var(--ink);background:var(--given-cell);border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);justify-content:center;align-items:center;font-size:clamp(30px,6vw,52px);font-weight:500;display:flex}.home-board span:nth-child(4n){border-right:0}.home-board span:nth-child(n+13){border-bottom:0}.home-board span.box-right{border-right:var(--board-box-width) solid var(--box-line)}.home-board span.box-bottom{border-bottom:var(--board-box-width) solid var(--box-line)}.home-board span.blank{color:var(--board-selection-edge);background:var(--board-selected)}.stat-strip{gap:var(--gap-lg);margin-top:var(--gap-xl);flex-wrap:wrap;display:flex}.stat-strip div{flex-direction:column;gap:2px;display:flex}.stat-strip dd{font-family:var(--font-num);order:1;margin:0;font-size:28px;font-weight:700;line-height:1}.stat-strip dt{color:var(--ink-faint);order:2;font-size:13px}.resume-list{margin-top:var(--gap-xl)}.resume-list h3{margin-bottom:var(--gap-sm)}.resume-list ul{flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.resume-list .button{text-align:left;justify-content:space-between;width:100%}.trail{margin-top:var(--gap-lg);gap:var(--gap-xl);flex-direction:column;display:flex}.trail-size{gap:var(--gap-sm);grid-template-columns:minmax(0,1fr);display:grid}.trail-size h3{font-family:var(--font-num);align-items:baseline;gap:10px;font-size:26px;font-weight:700;display:flex}.trail-size h3 small{font-family:var(--font-ui);color:var(--ink-faint);font-size:14px;font-weight:500}.tier-card{align-items:center;gap:var(--gap-md);text-align:left;background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);width:100%;padding:16px 18px;transition:transform .12s cubic-bezier(.2,.8,.3,1),box-shadow .12s,border-color .12s;display:flex;box-shadow:0 2px #261a0e14}.tier-card:not(:disabled):hover{border-color:var(--ink-faint);box-shadow:var(--shadow)}.tier-card:not(:disabled):active{box-shadow:none;transform:translateY(2px)}.tier-marker{background:var(--tray);width:34px;height:34px;color:var(--ink-soft);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.tier-marker svg{width:19px;height:19px}.tier-card.done .tier-marker{background:var(--action);color:var(--action-ink)}.tier-card .tier-body{flex:1;min-width:0}.tier-card strong{font-size:18px;font-weight:700;display:block}.tier-card small{color:var(--ink-soft);margin-top:2px;font-size:14px;display:block}.tier-card .tier-go{color:var(--ink-faint)}.fun{max-width:900px;margin-top:var(--gap-lg)}.fun-row{align-items:center;gap:var(--gap-sm);margin-bottom:var(--gap-md);flex-wrap:wrap;display:flex}.fun-row label{color:var(--ink-soft);font-size:15px}.segmented{background:var(--tray);border-radius:var(--r-lg);gap:4px;padding:4px;display:inline-flex}.segmented .button{box-shadow:none;border-radius:var(--r-md);min-height:46px;color:var(--ink-soft);background:0 0;border:0;padding:8px 20px}.segmented .button.selected{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #261a0e29}.symbol-grid{gap:var(--gap-sm);margin-bottom:var(--gap-md);grid-template-columns:repeat(2,1fr);display:grid}.symbol-choice{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);flex-direction:column;align-items:center;gap:10px;padding:20px 12px;transition:transform .12s cubic-bezier(.2,.8,.3,1),border-color .12s,background .12s;display:flex;box-shadow:0 2px #261a0e14}.symbol-choice:hover:not(:disabled){border-color:var(--ink-faint)}.symbol-choice:active:not(:disabled){transform:translateY(2px)}.symbol-choice.selected{background:var(--selected);border-color:var(--trail);box-shadow:0 2px #b46e2d4d}.symbol-choice .symbol-art,.symbol-choice .symbol-text{width:56px;height:56px;font-size:48px;line-height:56px}.symbol-choice strong{font-size:17px;font-weight:700}.game-screen{--panel-w:300px;--picker-pad:14px;--picker-head:40px;--key-h:52px;--key-gap:7px;--key-rows:2;--panel-h:calc(2 * (var(--picker-pad) + 2px) + var(--picker-head) + var(--key-rows) * var(--key-h) + (var(--key-rows) - 1) * var(--key-gap));min-height:100svh}.game-screen .topbar{width:min(1120px,100% - 24px);padding:10px 0}.game-screen .game-title h1{font-size:17px}.game-screen .back-button{font-size:15px}.play-area{width:100%;min-height:0;padding:0 16px calc(16px + env(safe-area-inset-bottom));flex:1;justify-content:center;align-items:center;display:flex}.game-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto var(--panel-h);justify-items:stretch;gap:var(--gap-sm);flex:auto;width:100%;min-height:0;display:grid}.board-wrap{grid-area:1/1/auto/-1;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex}.board{min-width:0;min-height:0;width:var(--board);height:var(--board);grid-template-columns:repeat(var(--size),minmax(0,1fr));grid-template-rows:repeat(var(--size),minmax(0,1fr));background:var(--frame);border:var(--board-frame-width) solid var(--frame);border-radius:var(--r-lg);box-shadow:var(--shadow);flex:none;display:grid;overflow:hidden}.play-column{display:contents}.game-layout>.play-column>.game-tools{grid-area:2/1/auto/-1;width:100%}.game-layout>.play-column>.answer-panel{grid-area:3/1/auto/-1;align-self:start}.cell{background:var(--cell);min-width:0;min-height:0;color:var(--given);font-family:var(--font-num);font-variant-numeric:tabular-nums;font-weight:500;line-height:1;font-size:calc(var(--board) / var(--size) * .62);border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);justify-content:center;align-items:center;padding:2px;transition:background .12s,color .12s;display:flex;position:relative}.cell.given{background:var(--given-cell);color:var(--given)}.cell.editable{color:var(--entered)}.cell.box-right{border-right:var(--board-box-width) solid var(--box-line)}.cell.box-bottom{border-bottom:var(--board-box-width) solid var(--box-line)}.cell.peer{background:var(--peer)}.cell.same{background:var(--same)}.cell.clash-unit{background:var(--clash-unit)}.cell.selected{background:var(--board-selected);box-shadow:none}.cell.hint-region{background:var(--hint)}.cell.selected.hint-region:not(.conflict):not(.wrong){background:var(--board-selected)}.cell.wrong{background:var(--conflict);color:var(--conflict-ink);box-shadow:inset 0 0 0 4px var(--conflict-ink);animation:.28s cubic-bezier(.36,.07,.19,.97) 2 shake}@keyframes shake{10%,90%{transform:translate(-2px)}30%,70%{transform:translate(4px)}50%{transform:translate(-6px)}}.cell.conflict{background:var(--conflict);color:var(--conflict-ink);box-shadow:inset 0 0 0 3px var(--conflict-ink)}.assist-off .cell:is(.peer,.same,.clash-unit):not(.hint-region,.conflict,.wrong){background:var(--cell)}.assist-off .cell.given:is(.peer,.same,.clash-unit):not(.hint-region,.conflict,.wrong){background:var(--given-cell)}.assist-off .cell.conflict{background:var(--conflict)}.assist-off .cell.selected:not(.conflict):not(.wrong){background:var(--board-selected)}.cell:focus-visible{outline-color:var(--board-selection-edge)}.cell:disabled{cursor:default}.cell .symbol-art{width:76%;height:76%}.cell .symbol-text{font-size:inherit}.symbol-hanzi{font-family:GameHanzi,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-weight:400}.cell>.symbol-hanzi{font-size:calc(var(--board) / var(--size) * .48);font-weight:400}.board-9 .cell>.symbol-hanzi{font-size:calc(var(--board) / var(--size) * .44)}.notes{grid-template-columns:repeat(var(--note-cols),minmax(0,1fr));font-family:var(--font-num);font-weight:500;line-height:1;font-size:calc(var(--board) / var(--size) * .28);color:var(--entered);grid-auto-rows:1fr;align-content:center;display:grid;position:absolute;inset:2px}.notes>span{justify-content:center;align-items:center;display:flex}.notes .symbol-art{width:100%;height:100%}.notes .symbol-text{font-size:inherit}.notes .symbol-hanzi{font-weight:400}.filled-dot{background:var(--entered);border-radius:50%;width:30%;height:30%}.note-hidden{color:var(--trail)}.note-hidden svg{width:44%;height:auto}.paused-board{visibility:hidden}.answer-panel{height:var(--panel-h);opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;justify-content:flex-start;align-items:stretch;transition:opacity .16s ease-out,transform .16s cubic-bezier(.2,.8,.3,1),visibility 0s linear .16s;display:flex;transform:translateY(8px)}.game-screen.has-panel .answer-panel{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s,0s,0s;transform:none}.number-picker{width:100%;padding:var(--picker-pad);background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lift)}.picker-heading{justify-content:space-between;align-items:center;gap:var(--gap-sm);height:var(--picker-head);padding-left:4px;display:flex}.picker-heading strong{font-size:16px;font-weight:700}.picker-heading small{color:var(--ink-faint);margin-top:1px;font-size:12px;display:block}.picker-close{background:var(--tray);width:40px;height:40px;color:var(--ink-soft);border-radius:50%;place-items:center;display:grid}.picker-close svg{width:20px;height:20px}.picker-close:hover{background:var(--tray-edge)}.keypad{grid-template-columns:repeat(var(--key-cols),minmax(0,1fr));grid-auto-rows:var(--key-h);gap:var(--key-gap);display:grid}.number-picker .keypad{--key-cols:5}.number-picker.picker-4 .keypad{--key-cols:2}.number-picker.picker-6 .keypad{--key-cols:3}.number-picker.picker-4 .keypad{max-width:340px;margin-inline:auto}.number-key{min-height:var(--key-h);font-family:var(--font-num);background:var(--cell);border:var(--line) solid var(--tray-edge);border-radius:var(--r-md);place-items:center;padding:4px;font-size:30px;font-weight:700;transition:transform .1s cubic-bezier(.2,.8,.3,1),background .12s,border-color .12s;display:grid;box-shadow:0 2px #261a0e1a}.number-key:hover:not(:disabled){border-color:var(--ink-faint)}.number-key:active:not(:disabled){box-shadow:none;transform:translateY(2px)}.number-key.selected{background:var(--selected);border-color:var(--trail);color:var(--selected-ink)}.number-key:disabled{opacity:.4;box-shadow:none}.number-key .symbol-art{width:74%;height:74%}.number-key .symbol-text{font-size:30px}.number-key .symbol-hanzi{font-weight:400}.game-tools{background:var(--tray);border-radius:var(--r-lg);flex:none;justify-content:center;align-items:center;gap:2px;width:100%;padding:4px;display:flex}.game-tools>.button{min-width:64px;min-height:50px;box-shadow:none;border-radius:var(--r-md);color:var(--ink-soft);background:0 0;border:0;flex-direction:column;gap:3px;padding:8px 10px;font-size:12px;font-weight:600;display:flex}.game-tools>.button svg{width:21px;height:21px}.game-tools>.button:hover:not(:disabled){background:var(--surface);color:var(--ink)}.game-tools>.button:disabled{opacity:.38}.game-tools>.button.selected{background:var(--selected);color:var(--selected-ink)}.game-tools>.hint-button{color:var(--ink);flex:1}.game-tools>.hint-button>span{font-size:12px}.game-tools>.hint-button small{background:var(--trail);color:#fff;border-radius:9px;min-width:18px;padding:1px 5px;font-size:11px;font-weight:700;line-height:1.5;position:absolute;transform:translate(22px,-9px)}.game-tools>.hint-button{position:relative}.game-tools>.more-button{min-width:48px}.game-menu{z-index:15;background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);width:min(260px,100vw - 24px);box-shadow:var(--shadow-lift);flex-direction:column;padding:6px;display:flex;position:fixed;overflow-y:auto}.game-menu>.button{width:100%;min-height:46px;box-shadow:none;border-radius:var(--r-sm);background:0 0;border:0;justify-content:flex-start;padding:10px 12px;font-size:15px;font-weight:600}.game-menu>.button:hover:not(:disabled){background:var(--tray)}.menu-divider{background:var(--tray-edge);height:1px;margin:5px 8px}.finish-card{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);width:100%;max-width:520px;box-shadow:var(--shadow);flex-direction:column;gap:12px;margin:0 auto;padding:18px 20px;display:flex}.finish-head{align-items:center;gap:12px;display:flex}.finish-head .mark{background:var(--action);width:38px;height:38px;color:var(--action-ink);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.finish-head strong{font-size:19px;font-weight:700}.finish-stats{gap:var(--gap-lg);display:flex}.finish-stats div{flex-direction:column;display:flex}.finish-stats dt{color:var(--ink-faint);font-size:12px}.finish-stats dd{font-family:var(--font-num);margin:0;font-size:22px;font-weight:700}.finish-actions{flex-wrap:wrap;gap:8px;display:flex}.finish-actions .button{flex:1;min-width:140px}.growth-heading{justify-content:space-between;align-items:center;gap:12px;max-width:900px;display:flex}.growth-select{border-radius:var(--r-sm);background-position:right 10px center;background-size:16px;border-width:1px;max-width:160px;min-height:44px;padding:8px 32px 8px 12px;font-size:14px;font-weight:500}.growth{gap:var(--gap-lg);flex-direction:column;max-width:900px;margin-top:20px;display:flex}.growth .growth-stats{border-block:1px solid var(--tray-edge);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;max-width:540px;margin:0;padding:14px 0;display:grid}.growth-stats div{align-items:center;gap:2px}.growth-stats div+div{border-left:1px solid var(--tray-edge)}.growth-stats dd{font-size:28px;font-weight:500;line-height:1.15}.growth-stats dt{color:var(--ink-soft);font-size:12px}.growth-section-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.growth-section-heading h3{font-size:19px;font-weight:700}.growth-section-heading>span{color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px}.badge-shelf{gap:var(--gap-sm);grid-template-columns:repeat(4,minmax(0,1fr));margin-top:12px;display:grid}.badge-shelf:has(>.badge-button:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}.badge-button{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px 8px;line-height:1.35;transition:border-color .12s,background .12s,transform .12s cubic-bezier(.2,.8,.3,1);display:flex;box-shadow:0 2px #261a0e14}.badge-button:hover{border-color:var(--ink-faint)}.badge-button:active{transform:translateY(2px)}.badge-button.selected{background:var(--page);border-color:var(--ink-soft)}.badge-mark{width:36px;height:36px;color:var(--ink-soft);place-items:center;display:grid}.badge-mark>svg{width:30px;height:30px}.badge-mark.earned{color:var(--action)}.badge-button>strong{font-size:15px;font-weight:600}.badge-state{color:var(--ink-soft);justify-content:center;align-items:center;gap:4px;font-size:12px;display:flex}.badge-state svg{width:13px;height:13px}.badge-button.earned .badge-state{color:var(--action)}.badge-detail{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);margin-top:12px;padding:14px 18px}.badge-detail-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.badge-detail h4{font-size:16px;font-weight:700}.badge-detail-heading .button{width:44px;min-height:44px;padding:10px}.badge-detail p{color:var(--ink-soft);max-width:72ch;font-size:14px}.badge-detail ul{padding:0;list-style:none}.badge-detail li+li{border-top:1px solid var(--tray-edge);margin-top:12px;padding-top:12px}.badge-detail li>div{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:4px;display:flex}.badge-detail li strong{font-size:14px}.badge-detail time{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:12px}.history{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);margin-top:12px;padding:0 18px}.history article{align-items:center;gap:var(--gap-md);border-bottom:1px solid var(--tray-edge);padding:14px 0;display:flex}.history article:last-child{border-bottom:0}.history-piece{border:var(--line) solid var(--tray-edge);border-radius:var(--r-sm);background:var(--page);width:38px;height:38px;font-family:var(--font-num);flex-shrink:0;place-items:center;font-size:23px;font-weight:700;display:grid}.history-label{flex:1;min-width:0}.history strong{font-size:15px;font-weight:700}.history small{color:var(--ink-soft);font-variant-numeric:tabular-nums;margin-top:3px;font-size:12px;display:block}.history .history-time{text-align:right;font-family:var(--font-num);white-space:nowrap;font-size:16px;font-weight:600}.history .history-time small{font-family:var(--font-ui);font-weight:500}.history-empty{min-height:80px;color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex}.history-empty>svg{width:22px;height:22px}.history-empty p{font-size:14px}.history-empty .button{min-height:44px;margin-left:auto;padding:8px 0;font-size:14px}@media (max-width:699px){.badge-shelf,.badge-shelf:has(>.badge-button:nth-child(3):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}.badge-button{padding:14px 6px}.badge-button>strong{font-size:15px}.history{padding:0 14px}.history article{gap:10px}.history-piece{width:32px;height:32px;font-size:21px}.history strong{font-size:14px}.history small{font-size:11px}.history .history-time{font-size:14px}.history-empty{gap:8px}.history-empty p{font-size:13px}}.settings{max-width:760px;margin-top:var(--gap-lg);gap:var(--gap-md);flex-direction:column;display:flex}.settings-card{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);padding:22px 24px}.settings-card h3{margin-bottom:10px;font-size:18px}.settings-card p{color:var(--ink-soft);font-size:15px}.settings-card>label{justify-content:space-between;align-items:center;gap:var(--gap-md);padding:10px 0;display:flex}.settings-card>label+label{border-top:1px solid #ece1cd}.settings-card strong{font-size:16px;font-weight:700;display:block}.settings-card small{color:var(--ink-faint);margin-top:2px;font-size:13px;display:block}.tool-row{margin-top:var(--gap-md);flex-wrap:wrap;gap:8px;display:flex}.tool-row .button{flex:1;min-width:150px}.safety-backup{justify-content:space-between;align-items:center;gap:var(--gap-md);border-top:1px solid #ece1cd;padding:12px 0;font-size:14px;display:flex}.safety-backup:first-of-type{margin-top:var(--gap-md)}.safety-backup small{color:var(--ink-faint);margin-top:3px;display:block}.safety-backup .button{flex:none;min-height:44px;padding:8px 14px;font-size:14px}details.parents{margin-top:var(--gap-md)}details.parents summary{cursor:pointer;background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:var(--r-lg);align-items:center;gap:10px;padding:14px 18px;font-size:15px;font-weight:700;list-style:none;display:flex}details.parents summary::-webkit-details-marker{display:none}details.parents summary:before{content:"";border-right:2.5px solid var(--ink-soft);border-bottom:2.5px solid var(--ink-soft);flex-shrink:0;width:8px;height:8px;transition:transform .18s;transform:rotate(-45deg)}details.parents[open] summary:before{transform:rotate(45deg)}details.parents[open] summary{border-radius:var(--r-lg) var(--r-lg) 0 0;border-bottom:0}details.parents .parents-body{background:var(--surface);border:var(--line) solid var(--tray-edge);border-radius:0 0 var(--r-lg) var(--r-lg);border-top:0;padding:4px 20px 20px}details.parents p{color:var(--ink-soft);max-width:66ch;margin-top:14px;font-size:14px}.bottom-nav{z-index:8;padding:8px 16px calc(10px + env(safe-area-inset-bottom));background:var(--page);border-top:var(--line) solid var(--tray-edge);justify-content:center;gap:8px;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav .button{max-width:260px;min-height:62px;box-shadow:none;border-radius:var(--r-md);color:var(--ink-soft);background:0 0;border:0;flex:1;gap:10px;font-size:15px;font-weight:600}.bottom-nav .button span{white-space:nowrap}.bottom-nav .button svg{width:24px;height:24px}.bottom-nav .button:hover:not(:disabled):not(.active){background:var(--tray)}.bottom-nav .button.active{background:var(--action);color:var(--action-ink)}@media (max-width:699px){.bottom-nav .button{gap:6px;padding:10px 6px;font-size:13px}}.modal-backdrop{z-index:20;background:#261a0e80;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--page);border:var(--line) solid var(--ink);border-radius:var(--r-xl);width:min(540px,100%);max-height:calc(100svh - 40px);box-shadow:var(--shadow-lift);padding:24px 26px;overflow-y:auto}.modal-backdrop.anchored{background:#261a0e47;align-items:flex-end;padding:0 12px 12px}.modal-backdrop.anchored .modal{border-radius:var(--r-lg);width:min(560px,100%);max-height:calc(100svh - 96px)}.modal-title{justify-content:space-between;align-items:center;gap:var(--gap-md);margin-bottom:var(--gap-md);display:flex}.modal h2{font-size:23px}.modal>p{color:var(--ink-soft);margin-bottom:var(--gap-md);font-size:16px}.modal>.button{width:100%;margin-bottom:8px}.modal .tool-row{margin-top:var(--gap-md)}.rules{padding-left:22px;font-size:17px;line-height:1.75}.rules li{margin-bottom:12px}.rules li::marker{color:var(--trail);font-weight:700}.hint-text{margin-bottom:var(--gap-md);gap:14px;display:flex}.hint-text>svg{width:28px;height:28px;color:var(--trail);flex-shrink:0}.hint-text p{font-size:19px;line-height:1.6}.hint-answer{justify-content:center;align-items:center;gap:var(--gap-md);margin-bottom:var(--gap-md);background:var(--selected);border-radius:var(--r-md);padding:14px;display:flex}.hint-answer span{color:var(--selected-ink);font-size:15px}.hint-answer .symbol-art{width:56px;height:56px}.hint-answer .symbol-text{color:var(--selected-ink);font-size:44px}.hint-history{gap:8px;display:flex}.hint-history .button{flex:1;min-height:46px;padding:8px;font-size:15px}.result-mark{width:64px;height:64px;margin:0 auto var(--gap-md);background:var(--action);color:var(--action-ink);border-radius:50%;place-items:center;display:grid}.result-mark svg{width:34px;height:34px}.result-stats{justify-content:center;gap:var(--gap-lg);margin-bottom:var(--gap-md);display:flex}.result-stats>span{color:var(--ink-faint);flex-direction:column;align-items:center;gap:2px;font-size:13px;display:flex}.result-stats strong{font-family:var(--font-num);color:var(--ink);font-size:23px;font-weight:700}.achievement-highlight{margin-bottom:var(--gap-md);background:var(--surface);border:var(--line) solid var(--trail);border-radius:var(--r-md);gap:14px;padding:16px;display:flex}.achievement-highlight svg{width:28px;height:28px;color:var(--trail);flex-shrink:0}.achievement-highlight strong{font-size:16px}.achievement-highlight p{color:var(--ink-soft);margin-top:4px;font-size:13px}.toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:30;text-align:center;background:var(--ink);width:max-content;max-width:calc(100vw - 32px);color:var(--page);border-radius:var(--r-md);box-shadow:var(--shadow-lift);padding:13px 20px;font-size:15px;font-weight:600;position:fixed;transform:translate(-50%)}.game-screen .toast{bottom:calc(16px + env(safe-area-inset-bottom))}.celebration{z-index:25;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.celebration .skip{pointer-events:auto;position:absolute;bottom:24px;right:20px}.firework{width:10px;height:10px;position:relative}.firework span{background:var(--trail);width:10px;height:18px;animation:burst 1.3s cubic-bezier(.15,.75,.25,1) var(--delay) both;border-radius:5px;position:absolute}.firework span:nth-child(3n){background:var(--action)}.firework span:nth-child(3n+1){background:var(--entered)}@keyframes burst{0%{transform:rotate(var(--angle)) translateY(0) scaleY(.4);opacity:1}70%{opacity:1}to{transform:rotate(var(--angle)) translateY(-300px) scaleY(1);opacity:0}}.reduced-motion *{transition-duration:1ms!important;animation-duration:1ms!important}.game-screen .play-area{padding-top:2px}.game-screen{--board-max:560px;--chrome-h:calc(var(--header-h) + var(--rail-h) + var(--panel-h) + var(--grid-gaps) + var(--area-pad) + var(--size-9-extra));--board:min(calc(100vw - 32px),calc(100svh - var(--chrome-h)),var(--board-max));--header-h:62px;--rail-h:68px;--grid-gaps:20px;--area-pad:18px;--size-9-extra:0px}.game-screen.board-9{--size-9-extra:8px}.game-screen .topbar{grid-template-columns:auto minmax(0,1fr) auto;min-height:56px;padding:8px 0}.game-screen .game-title{min-width:0}.game-screen .game-title h1{white-space:nowrap;text-overflow:ellipsis;font-size:16px;overflow:hidden}.game-screen .game-title small{white-space:nowrap;font-size:11px}.game-screen .back-button span{display:none}.game-screen .back-button{justify-content:center;width:44px;padding:10px}@media (max-height:700px){.game-screen{--area-pad:14px;--grid-gaps:12px}}@media (max-height:560px) and (orientation:landscape){.modal-backdrop.anchored{padding:0 10px 10px}.modal-backdrop.anchored .modal{border-radius:var(--r-md);width:min(560px,100%);max-height:130px;padding:12px 16px;overflow-y:auto}.modal-backdrop.anchored .modal h2{font-size:16px}.modal-backdrop.anchored .modal-title{margin-bottom:6px}.modal-backdrop.anchored .hint-text{gap:10px;margin-bottom:0}.modal-backdrop.anchored .hint-text>svg{width:20px;height:20px}.modal-backdrop.anchored .hint-text p{font-size:14px;line-height:1.5}.modal-backdrop.anchored .modal>.button{min-height:44px;margin-top:8px;font-size:15px}.modal-backdrop.anchored .hint-answer{margin-bottom:0;padding:6px}.modal-backdrop.anchored .hint-answer .symbol-text{font-size:28px}.modal-backdrop.anchored .hint-answer .symbol-art{width:36px;height:36px}.modal-backdrop.anchored .hint-history{margin-bottom:4px}}@media (max-width:699px) and (orientation:portrait){.game-screen{--picker-pad:12px;--picker-head:0px;--key-gap:6px}.number-picker{padding:var(--picker-pad);padding-right:calc(var(--picker-pad) + 44px + var(--key-gap));position:relative}.picker-heading{top:calc(var(--picker-pad) + (var(--key-h) - 44px) / 2);right:var(--picker-pad);height:auto;padding:0;position:absolute}.picker-heading span{display:none}.picker-close{width:44px;height:44px}.picker-close svg{width:17px;height:17px}.number-key{font-size:27px}}.play-area>.game-layout{padding-bottom:0}.game-layout>.play-column>.game-tools{margin-top:2px}@media (min-width:700px){.topbar{padding:18px 0}.home-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.trail-size{grid-template-columns:repeat(3,minmax(0,1fr))}.trail-size h3{grid-column:1/-1}.symbol-grid{grid-template-columns:repeat(4,minmax(0,1fr));max-width:720px}.screen{padding:var(--gap-lg) 0 64px}}@media (min-width:700px) and (max-width:899px) and (min-height:700px){.game-screen{--panel-h:200px}}@media (min-width:900px) and (min-aspect-ratio:1),(min-width:700px) and (max-height:560px){.game-screen{--board-max:640px;--board:min(calc(100svh - 100px),calc(100vw - var(--panel-w) - 120px),var(--board-max))}.game-screen .play-area{justify-content:center;padding-inline:24px}.game-layout{grid-template-columns:auto var(--panel-w);justify-content:center;align-items:center;column-gap:var(--gap-lg);grid-template-rows:minmax(0,1fr);max-width:1200px;margin:0 auto;padding-bottom:0;display:grid}.game-layout>.board-wrap{grid-area:1/1;place-self:center;height:auto}.play-column{width:var(--panel-w);grid-area:1/2;align-self:start;display:block;position:relative}.game-layout>.play-column>.game-tools{grid-row:auto;width:100%;margin-top:0}.game-layout>.play-column>.answer-panel{top:calc(100% + var(--gap-sm));border-radius:var(--r-lg);background:var(--page);height:auto;box-shadow:var(--shadow-lift);grid-row:auto;place-self:auto;padding:8px;position:absolute;left:0;right:0}.number-picker{box-shadow:none;background:0 0;border:0;padding:0;position:static}.number-picker .keypad{--key-cols:3}.number-picker.picker-4 .keypad{--key-cols:2;max-width:none;margin-inline:0}.picker-heading small{display:none}.number-key{font-size:32px}.game-tools>.button{flex-direction:column;gap:3px}.game-tools>.hint-button small{position:absolute;transform:translate(22px,-9px)}}@media (min-width:700px) and (max-height:560px){.game-screen{--panel-w:264px;--board-max:440px;--panel-h:calc(2 * (10px + 2px) + var(--picker-head) + var(--key-rows) * 44px + (var(--key-rows) - 1) * 6px);--key-h:44px;--key-gap:6px;--picker-head:40px;--board:min(calc(100svh - 76px),calc(100vw - var(--panel-w) - 96px),var(--board-max))}.game-screen .topbar{padding:2px 0}.game-screen .play-area{padding-top:0;padding-bottom:6px}.game-screen .back-button span,.game-screen .game-title small{display:none}.game-screen .back-button{padding:8px 12px}.number-picker{padding:10px}.number-key{font-size:23px}.picker-heading small{display:none}.game-tools>.button{min-height:42px;padding:6px 8px}.game-tools>.button svg{width:19px;height:19px}}
