:root{--paper:#f5ead6;--paper-edge:#e6d2ae;--panel:#fffaf1;--panel-2:#f8ecd8;--ink:#3b2b20;--ink-soft:#85705c;--stroke:#3b2b20;--faint:#3b2b2033;--accent:#e0704a;--accent-ink:#fff8ef;--select:#ffd36b;--hover:#fff0cf;--ok:#4f9a4b;--danger:#d0453a;--backdrop:#281a0e73;--grain-opacity:.55;--die-red:#dc4b3e;--die-yellow:#eeb92d;--die-green:#3e9a5a;--die-blue:#3b79cc;--die-purple:#8c58bb;--pip-light:#fffaf1;--pip-dark:#3b2b20;--clear:#fffaf1;--clear-edge:#3b2b2033;--font-display:"Fraunces", "Iowan Old Style", Georgia, serif;--font-body:"Nunito", ui-rounded, system-ui, "Segoe UI", sans-serif;--cell:88px;--gap:8px;--piece:clamp(44px, 12vw, 56px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#1d1a25;--paper-edge:#14121a;--panel:#2c2836;--panel-2:#25212e;--ink:#f1e5cf;--ink-soft:#a99985;--stroke:#0d0b12;--faint:#f1e5cf2e;--accent:#f08a5d;--accent-ink:#1d1a25;--select:#b8892a;--hover:#3a3345;--ok:#6cb863;--danger:#ef6352;--backdrop:#05040899;--grain-opacity:.25;--die-red:#e65a4c;--die-yellow:#f1c343;--die-green:#4cae69;--die-blue:#4f8ce0;--die-purple:#a06fd0;--pip-dark:#221c16;--clear:#2c2836;--clear-edge:#f1e5cf2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#1d1a25;--paper-edge:#14121a;--panel:#2c2836;--panel-2:#25212e;--ink:#f1e5cf;--ink-soft:#a99985;--stroke:#0d0b12;--faint:#f1e5cf2e;--accent:#f08a5d;--accent-ink:#1d1a25;--select:#b8892a;--hover:#3a3345;--ok:#6cb863;--danger:#ef6352;--backdrop:#05040899;--grain-opacity:.25;--die-red:#e65a4c;--die-yellow:#f1c343;--die-green:#4cae69;--die-blue:#4f8ce0;--die-purple:#a06fd0;--pip-dark:#221c16;--clear:#2c2836;--clear-edge:#f1e5cf2e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-color]{--pip:var(--pip-light)}[data-color=red]{--c:var(--die-red)}[data-color=yellow]{--c:var(--die-yellow);--pip:var(--pip-dark)}[data-color=green]{--c:var(--die-green)}[data-color=blue]{--c:var(--die-blue)}[data-color=purple]{--c:var(--die-purple)}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{color:var(--ink);background:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:manipulation;margin:0;font-weight:600}body:before{content:"";pointer-events:none;z-index:-1;opacity:var(--grain-opacity);background:radial-gradient(120% 90% at 50% 0%, transparent 55%, var(--paper-edge) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .23 0 0 0 0 .16 0 0 0 0 .1 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.app{flex-direction:column;height:100dvh;display:flex}.main{flex:1;min-height:0;display:flex}.topbar{padding-block:6px;padding-inline:max(12px, env(safe-area-inset-left)) max(12px, env(safe-area-inset-right));border-bottom:2px dashed var(--faint);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.topbar-side{gap:2px;display:flex}.topbar-side.end{justify-content:flex-end}.brand{font-family:var(--font-display);letter-spacing:.01em;white-space:nowrap;align-items:center;gap:8px;font-size:clamp(22px,5.5vw,30px);font-weight:800;display:flex}.brand-mark{color:var(--accent);font-size:.7em}.icon-btn{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:12px;place-items:center;width:40px;height:40px;transition:background .15s,border-color .15s;display:grid}.icon-btn:hover{background:var(--panel);border-color:var(--faint)}.stage{width:100%;max-width:1120px;min-height:0;padding-block:10px max(12px, env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:10px;margin-inline:auto;padding-inline:16px;display:flex}.chapter{text-align:center}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);justify-content:center;align-items:center;gap:10px;margin:0;font-size:11px;font-weight:900;display:flex}.difficulty{align-items:center;gap:3px;display:inline-flex}.difficulty i{border:1.5px solid var(--ink-soft);border-radius:50%;width:8px;height:8px}.difficulty i.on{background:var(--accent);border-color:var(--accent)}.difficulty i:last-of-type{margin-right:3px}.chapter h1{font-family:var(--font-display);margin:2px 0 0;font-size:clamp(22px,5vw,32px);font-weight:800;line-height:1.1}.subtitle{max-width:52ch;color:var(--ink-soft);text-wrap:balance;margin:4px auto 0;font-size:14px}.play{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.board-area{flex-direction:column;flex:1 1 0;gap:6px;min-height:0;display:flex}.board-wrap{flex:1 1 0;place-items:center;min-width:0;min-height:160px;display:grid}.board{grid-template-columns:repeat(var(--tracks-x), var(--cell));grid-template-rows:repeat(var(--tracks-y), var(--cell));gap:var(--gap);display:grid}.board.shake{animation:.45s shake}.corner{color:var(--faint);font-size:calc(var(--cell) * .22);place-items:center;display:grid}.head{background:var(--panel-2);border:3px solid var(--stroke);min-width:0;min-height:0;box-shadow:0 4px 0 var(--stroke);cursor:pointer;flex-direction:column;transition:transform .15s,border-color .2s;display:flex;overflow:hidden}.head.is-empty{cursor:default;border:3px dashed var(--faint);box-shadow:none;background:0 0}.head.is-ok{border-color:var(--ok)}.head.is-broken{border-color:var(--danger)}@media (hover:hover){.head:not(.is-empty):hover{transform:translateY(-2px)}}.badge{min-height:0;font-size:clamp(14px, calc(var(--cell) * .24), 24px);flex:1 1 0;place-items:center;padding:5% 7%;transition:background .2s;display:grid;position:relative}.badge+.badge{border-top:2px dashed var(--faint)}.head .glyph{width:100%;height:100%}.head .glyph-svg{width:100%;height:100%;max-height:calc(var(--cell) * .5)}.head.is-split .glyph-svg{max-height:calc(var(--cell) * .4)}.badge:after,.cell-tag:after{content:"";border:2px solid var(--stroke);background:var(--stamp) center / 10px no-repeat, var(--stamp-color);border-radius:50%;width:16px;height:16px;transition:transform .2s cubic-bezier(.3,1.6,.5,1);position:absolute;top:-7px;right:-7px;transform:scale(0)}.is-ok{--stamp-color:var(--ok);--stamp:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E")}.is-broken{--stamp-color:var(--danger);--stamp:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round'%3E%3Cpath d='m6 6 12 12M18 6 6 18'/%3E%3C/svg%3E")}.badge.is-ok,.badge.is-broken{background:color-mix(in srgb, var(--stamp-color) 20%, var(--panel))}.cell-tag.is-ok,.cell-tag.is-broken{border-color:var(--stamp-color);background:color-mix(in srgb, var(--stamp-color) 20%, var(--panel))}.badge:after{background-size:8px;width:14px;height:14px;top:3px;right:3px}.sum-now{fill:var(--accent);font-family:var(--font-body);font-variant-numeric:tabular-nums}.badge.is-ok .sum-now{fill:var(--ok)}.badge.is-broken .sum-now{fill:var(--danger)}.badge.is-ok:after,.badge.is-broken:after,.cell-tag.is-ok:after,.cell-tag.is-broken:after{transform:scale(1)}.badge.pop,.cell-tag.pop,.rule.pop{animation:.42s cubic-bezier(.3,1.7,.5,1) pop}.badge.wobble,.cell-tag.wobble,.rule.wobble{animation:.5s ease-in-out nudge}.glyph{place-items:center;line-height:0;display:inline-grid}.glyph-svg{width:auto;max-width:100%;height:1.55em;overflow:visible}.swatch{background:var(--c);border:2px solid var(--stroke);border-radius:.2em;flex:none;width:.85em;height:.85em;display:inline-block}.swatch.is-mini{border-width:1.5px;width:.55em;height:.55em}.swatch.is-none{background:linear-gradient(to top right, transparent calc(50% - 1.5px), var(--stroke) calc(50% - 1.5px), var(--stroke) calc(50% + 1.5px), transparent calc(50% + 1.5px)), color-mix(in srgb, var(--c) 40%, var(--panel))}.cell{--glass:var(--clear);background:var(--glass);border:3px solid var(--stroke);box-shadow:inset 0 0 0 4px var(--glass), inset 0 0 0 5.5px var(--clear-edge), 0 4px 0 var(--stroke);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,transform .15s,border-color .15s;position:relative}.cell[data-req-color=red]{--c:var(--die-red)}.cell[data-req-color=yellow]{--c:var(--die-yellow)}.cell[data-req-color=green]{--c:var(--die-green)}.cell[data-req-color=blue]{--c:var(--die-blue)}.cell[data-req-color=purple]{--c:var(--die-purple)}.cell[data-req-color]{--glass:color-mix(in srgb, var(--c) 38%, var(--clear));background-image:repeating-linear-gradient(-45deg,#0000 0 10px,#ffffff24 10px 14px)}.cell-req{--pip:color-mix(in srgb, var(--ink) 18%, transparent);position:absolute;inset:20%}.cell.is-hover,.cell.is-focus{--glass:color-mix(in srgb, var(--select) 30%, var(--clear))}.cell[data-req-color].is-hover,.cell[data-req-color].is-focus{--glass:color-mix(in srgb, var(--c) 52%, var(--clear))}@media (hover:hover){.cell:hover{--glass:color-mix(in srgb, var(--select) 30%, var(--clear))}.cell[data-req-color]:hover{--glass:color-mix(in srgb, var(--c) 52%, var(--clear))}}.cell.is-hover{transform:translateY(-3px)scale(1.03)}.board.has-selection .cell:not(.has-piece),.board.is-dragging .cell:not(.has-piece){border-style:dashed}.cell-slot{display:grid;position:absolute;inset:9%}.cell-tag{z-index:2;min-width:clamp(18px, calc(var(--cell) * .3), 32px);height:clamp(18px, calc(var(--cell) * .3), 32px);background:var(--panel);border:2px solid var(--stroke);font-size:clamp(10px, calc(var(--cell) * .17), 17px);pointer-events:none;border-radius:8px;place-items:center;padding:0 3px;transition:background .2s,border-color .2s;display:grid;position:absolute;top:-9px;left:-9px}.cell-tag:after{background-size:8px;width:13px;height:13px;top:-6px;right:-8px}.cell:not(.has-piece) .cell-tag:not(.is-broken){opacity:0}.cell.is-conflict{border-color:var(--danger)}.cell.is-conflict .die-body{animation:1.6s ease-in-out infinite conflict}.cell.celebrate{animation:celebrate .6s cubic-bezier(.3, 1.6, .5, 1) var(--delay,0s) both}.face{grid-template:repeat(3,1fr)/repeat(3,1fr);place-items:center;display:grid}.pip{aspect-ratio:1;background:var(--pip);border-radius:50%;width:72%}.die-body{background:linear-gradient(145deg, #ffffff4d, transparent 45%), var(--c);border:2.5px solid var(--stroke);width:100%;height:100%;box-shadow:0 3px 0 var(--stroke);transform:rotate(var(--tilt,0deg));border-radius:22%;padding:13%;transition:transform .2s cubic-bezier(.3,1.5,.5,1),box-shadow .2s;display:grid}.die-body .pip{box-shadow:inset 0 1.5px #00000040}.piece{width:var(--piece);height:var(--piece);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;outline-offset:3px;border-radius:22%;position:relative}@media (hover:hover){.piece:hover .die-body{box-shadow:0 5px 0 var(--stroke);transform:rotate(0)translateY(-2px)}}.piece.is-selected .die-body{box-shadow:0 0 0 3px var(--paper), 0 0 0 6px var(--select), 0 7px 0 var(--stroke);animation:1.3s ease-in-out infinite bob;transform:rotate(0)translateY(-4px)scale(1.06)}.piece.is-lifted{opacity:.25}.piece.pop .die-body{animation:.42s cubic-bezier(.3,1.7,.5,1) pop}.cell-slot .piece{width:100%;height:100%}.cell-slot .die-body{box-shadow:0 2px 0 var(--stroke);transform:none}.ghost{z-index:100;pointer-events:none;position:fixed;top:0;left:0}.ghost .die-body{box-shadow:0 16px 24px #00000040, 0 4px 0 var(--stroke);transform:rotate(-8deg)scale(1.12)}.tray-panel{border:2.5px dashed var(--faint);background:color-mix(in srgb, var(--panel) 45%, transparent);border-radius:18px;flex-direction:column;flex:none;max-height:46dvh;display:flex;overflow:hidden}.tray-scroll{min-height:0;padding:12px 10px 10px;overflow:auto}.tray{flex-wrap:wrap;justify-content:center;gap:9px;display:flex}.slot{width:var(--piece);height:var(--piece);position:relative}.slot.is-empty:before{content:"";border:2px dashed var(--faint);border-radius:22%;position:absolute;inset:5px}.tray-foot{border-top:2.5px dashed var(--faint);flex-direction:column;flex:none;gap:8px;padding:10px 10px 12px;display:flex}.summary{white-space:nowrap;color:var(--ink-soft);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0;font-size:14px;font-weight:800;display:flex}.summary-count{font-variant-numeric:tabular-nums}.summary-count b{color:var(--ink);font-weight:900}.summary.is-broken .summary-text{color:var(--danger)}.summary.is-solved .summary-text{color:var(--ok)}.check-meter{border:2px solid var(--stroke);background:linear-gradient(90deg, var(--ok) calc(var(--ratio) * 100%), var(--panel) 0);border-radius:99px;flex:none;width:54px;height:10px}.rules{flex-wrap:wrap;flex:none;justify-content:center;gap:6px;margin:0;padding:0;list-style:none;display:flex}.rule{border:2.5px solid var(--stroke);background:var(--panel-2);box-shadow:0 3px 0 var(--stroke);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:4px 6px 4px 10px;font-size:13px;font-weight:800;line-height:1.2;transition:border-color .2s,background .2s;display:flex}.rule-glyph{place-items:center;font-size:18px;display:grid}.rule-status{border:2px dashed var(--faint);border-radius:50%;place-items:center;width:24px;height:24px;display:grid}.rule-status svg{stroke-width:3.5px;width:14px;height:14px}.rule.is-ok,.rule.is-broken{border-color:var(--stamp-color);background:color-mix(in srgb, var(--stamp-color) 12%, var(--panel))}.rule.is-ok .rule-status,.rule.is-broken .rule-status{border:2px solid var(--stroke);background:var(--stamp-color);color:#fff}.foot-row{align-items:center;gap:6px;display:flex}.foot-row .summary{flex:1}.tools{flex:none;gap:2px;display:flex}.tool{width:38px;height:38px;color:var(--ink-soft)}.tool:hover:not(:disabled){color:var(--ink)}.tool:disabled{opacity:.35;cursor:default}.tool svg{width:20px;height:20px}.btn{border:2.5px solid var(--stroke);background:var(--panel);height:46px;box-shadow:0 3px 0 var(--stroke);cursor:pointer;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:15px;font-weight:900;transition:transform 80ms,box-shadow 80ms,background .15s;display:inline-flex}.btn:active:not(:disabled){box-shadow:0 0 0 var(--stroke);transform:translateY(3px)}.btn:disabled{opacity:.4;cursor:default}.btn[aria-pressed=true]{background:var(--select)}.btn--primary{background:var(--accent);color:var(--accent-ink)}.btn--primary.is-ready{animation:1.6s ease-in-out infinite ready}@media not all and (width>=600px) and (aspect-ratio>=5/4){.stage{gap:6px;padding-inline:12px}.tray-panel{max-height:none}.tray-scroll{scrollbar-width:thin;padding:10px 10px 8px;overflow:auto hidden}.tray-scroll.is-scrollable{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),#0000)}.tray{grid-auto-flow:column;grid-template-rows:repeat(2, var(--piece));grid-auto-columns:var(--piece);min-height:calc(var(--piece) * 2 + 9px);justify-content:safe center;width:max-content;min-width:100%;display:grid}.slot.is-empty{display:none}.tray-foot{gap:6px;padding:6px 8px 8px}}@media (width<=560px){.stage{--piece:clamp(40px, 11.5vw, 48px)}.subtitle{font-size:12.5px}.rules{flex-wrap:wrap;justify-content:center;display:flex}.rule{cursor:pointer;grid-template-columns:auto auto;gap:6px;padding:3px 5px 3px 8px}.rule-text{display:none}.summary{column-gap:8px;font-size:13px}}@media (width<=560px),(height<=520px){.summary:not(.is-broken,.is-solved) .summary-text{display:none}.tray-foot{flex-flow:wrap;justify-content:center;align-items:center;column-gap:10px}.foot-row .summary{flex:none}}@media (height<=700px){.subtitle{display:none}}@media (height<=640px){.topbar{padding-block:2px}.icon-btn{width:36px;height:36px}.brand{font-size:22px}.stage{padding-top:6px}.chapter h1{font-size:20px}}@media (height<=520px){.eyebrow{display:none}.stage{--piece:44px}.rules{flex-wrap:wrap;justify-content:center;display:flex}.rule{cursor:pointer;grid-template-columns:auto auto;gap:6px;padding:3px 5px 3px 8px}.rule-text{display:none}}@media (width>=600px) and (aspect-ratio>=5/4){.stage{--piece:54px}.play{flex-direction:row;align-items:stretch;gap:18px}.board-area{min-width:0}.tray-scroll{min-height:calc(var(--piece) * 2 + 34px)}.tray-panel{align-self:center;width:clamp(260px,32vw,336px);max-height:100%}.tray-scroll{padding:16px 14px 12px}.tray-foot{padding:12px 14px 14px}}.toast{z-index:300;background:var(--ink);max-width:calc(100vw - 32px);color:var(--paper);text-align:center;opacity:0;pointer-events:none;border-radius:12px;padding:10px 16px;font-size:14px;font-weight:800;transition:opacity .2s,transform .2s;position:fixed;top:62px;left:50%;transform:translate(-50%,-8px)}.toast.is-visible{opacity:1;transform:translate(-50%)}.modal{border:3px solid var(--stroke);background:var(--panel);width:min(460px,100vw - 32px);max-height:calc(100dvh - 48px);color:var(--ink);box-shadow:0 8px 0 var(--stroke);border-radius:20px;padding:0}.modal[open]{animation:.28s cubic-bezier(.3,1.4,.5,1) modal-in}.modal::backdrop{background:var(--backdrop);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-inner{padding:20px 22px 22px;position:relative}.modal-close{position:absolute;top:10px;right:10px}.modal h2{font-family:var(--font-display);margin:0 40px 12px 0;font-size:24px;font-weight:800}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.help p,.help li{line-height:1.45}.help ul{margin:12px 0 0;padding-left:20px}.help li+li{margin-top:6px}.example{--cell:96px;justify-content:center;align-items:center;gap:10px;margin:16px 0 14px;display:flex}.ex-head{width:54px;height:42px;display:flex}.ex-head .badge{flex:1}.ex-head .badge,.legend-item .badge{background:var(--panel-2);border:2.5px solid var(--stroke);box-shadow:0 3px 0 var(--stroke);border-radius:10px;padding:2px 4px}.legend-item .badge.is-ok,.legend-item .badge.is-broken{border-color:var(--stamp-color)}.legend-item .badge:after{background-size:10px;width:16px;height:16px;top:-7px;right:-7px}.ex-die{width:46px;height:46px;display:block}.help .legend{background:var(--panel-2);border-radius:12px;gap:12px;margin-top:14px;padding:12px 14px;list-style:none;display:grid}.legend-item{--cell:84px;align-items:center;gap:16px;font-size:14px;display:flex}.help .legend-item+.legend-item{margin-top:0}.legend-item .badge{flex:none;width:50px;height:32px}.lessons{gap:18px;display:grid}.lesson h3,.glossary h3{font-family:var(--font-display);margin:0 0 8px;font-size:18px;font-weight:800}.lesson p{margin:10px 0 0;line-height:1.45}.lesson-examples{flex-wrap:wrap;gap:10px;display:flex}.lesson-example{background:var(--panel-2);text-align:center;border-radius:14px;flex-direction:column;flex:140px;align-items:center;gap:6px;margin:0;padding:14px 10px 10px;font-size:13px;font-weight:800;display:flex}.lesson-glyph{font-size:34px;line-height:0}.glossary{margin-top:16px}.help .glossary ul{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.help .glossary li{background:var(--panel-2);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:4px;margin:0;padding:10px 6px 8px;font-size:12px;font-weight:800;line-height:1.2;display:flex}.glossary-glyph{font-size:24px;line-height:0}.chapters{gap:10px;margin:0;padding:0;list-style:none;display:grid}.chapter-card{text-align:left;border:2.5px solid var(--stroke);background:var(--panel-2);width:100%;box-shadow:0 3px 0 var(--stroke);cursor:pointer;border-radius:14px;grid-template-rows:auto auto;grid-template-columns:36px 1fr auto;align-items:center;column-gap:12px;padding:10px 14px;transition:transform .12s;display:grid}.chapter-card:hover{transform:translateY(-2px)}.chapter-card.is-current{background:var(--hover)}.chapter-num{border:2px solid var(--stroke);background:var(--panel);width:36px;height:36px;font-family:var(--font-display);border-radius:50%;grid-row:span 2;place-items:center;font-weight:800;display:grid}.chapter-card.is-done .chapter-num{background:var(--ok);color:#fff}.chapter-title{font-weight:900}.chapter-meta{color:var(--ink-soft);grid-column:2;font-size:12px}.chapter-icons{letter-spacing:2px;grid-area:1/3/span 2;gap:3px;font-size:16px;display:flex}.win{text-align:center}.win-art{grid-template-columns:repeat(var(--cols), 26px);justify-content:center;gap:4px;display:grid}.win-art .swatch{border-radius:6px;width:26px;height:26px;animation:.5s cubic-bezier(.3,1.7,.5,1) both bounce-in}.stats{grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;display:grid}.stat{background:var(--panel-2);border-radius:12px;flex-direction:column;padding:10px 4px;display:flex}.stat strong{font-family:var(--font-display);font-size:26px;font-weight:800}.stat span{color:var(--ink-soft);font-size:12px}.modal--win .modal-actions{justify-content:center}.particle{z-index:250;pointer-events:none;font-size:22px;position:fixed}.empty{color:var(--ink-soft);margin:auto}@keyframes conflict{0%,to{box-shadow:0 0 0 3px var(--glass), 0 0 0 6px var(--danger)}50%{box-shadow:0 0 0 3px var(--glass), 0 0 0 6px color-mix(in srgb, var(--danger) 35%, transparent)}}@keyframes pop{0%{transform:scale(.78)}60%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes bob{0%,to{transform:rotate(0)translateY(-4px)scale(1.05)}50%{transform:rotate(0)translateY(-8px)scale(1.05)}}@keyframes nudge{0%,to{transform:rotate(0)}20%{transform:rotate(-9deg)scale(1.08)}40%{transform:rotate(8deg)scale(1.08)}60%{transform:rotate(-5deg)}80%{transform:rotate(3deg)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(3px)}}@keyframes celebrate{0%{transform:translateY(0)rotate(0)}45%{transform:translateY(-14px)rotate(-3deg)scale(1.06)}to{transform:translateY(0)rotate(0)}}@keyframes ready{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:none}}@keyframes bounce-in{0%{opacity:0;transform:translateY(14px)scale(.5)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
