:root{--c-canvas:#f7f3e8;--c-surface:#fffdf7;--c-ink:#171717;--c-muted:#4a4a44;--c-primary:#a78bfa;--c-accent:#e8f14a;--c-secondary:#ff765e;--c-success:#167a52;--c-warning:#a85b00;--c-danger:#b42318;--c-focus:#34169e;--c-neutral:#d6d0bf;--c-correct:#167a52;--c-present:#e8f14a;--c-absent:#b42318;--on-primary:#171717;--on-accent:#171717;--on-secondary:#171717;--on-success:#fff;--on-warning:#fff;--on-danger:#fff;--on-correct:#fff;--on-present:#171717;--on-absent:#fff;--s-0:0px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--b-thin:2px;--b-thick:3px;--b-heavy:4px;--r-sm:2px;--r-md:4px;--sh-sm:2px 2px 0 var(--c-ink);--sh-md:4px 4px 0 var(--c-ink);--sh-lg:6px 6px 0 var(--c-ink);--font:"Vazirmatn", Tahoma, system-ui, sans-serif;--fs-caption:.75rem;--fs-body:1rem;--fs-label:.875rem;--fs-button:1rem;--fs-title:1.375rem;--fs-display:2.5rem;--fs-tile:1.875rem;--fs-stat:1.75rem;--lh-tight:1.25;--lh-normal:1.7;--d-instant:0s;--d-fast:90ms;--d-base:.16s;--d-slow:.28s;--ease:cubic-bezier(.2, 0, 0, 1);--ease-snap:cubic-bezier(.3, 1.4, .5, 1);--stagger:70ms;--touch:44px}
@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--c-canvas);color:var(--c-ink);font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh-normal);margin:0}a{color:inherit}:focus-visible{outline:var(--b-thick) solid var(--c-focus);outline-offset:2px}.shell{max-width:560px;padding:var(--s-4);padding-inline:max(var(--s-4), env(safe-area-inset-left), env(safe-area-inset-right));margin:0 auto}.shell.wide{max-width:900px}.top{justify-content:space-between;align-items:center;gap:var(--s-3);border-bottom:var(--b-heavy) solid var(--c-ink);padding-bottom:var(--s-2);flex-wrap:wrap;display:flex}.brand{font-size:var(--fs-title);font-weight:900;line-height:var(--lh-tight);background:var(--c-accent);color:var(--on-accent);border:var(--b-thick) solid var(--c-ink);padding:0 var(--s-3);box-shadow:var(--sh-md);margin:0;text-decoration:none}.nav{gap:var(--s-1);flex-wrap:wrap;display:flex}.nav a{min-height:var(--touch);padding:0 var(--s-1);font-size:var(--fs-label);border:var(--b-thin) solid transparent;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.nav a:hover{border-color:var(--c-ink);background:var(--c-primary);color:var(--on-primary)}.mega{font-size:clamp(2.2rem,11vw,3.6rem);font-weight:900;line-height:var(--lh-tight);margin:var(--s-3) 0}.mega .hl{background:var(--c-secondary);color:var(--on-secondary);padding:0 var(--s-2);border:var(--b-thick) solid var(--c-ink);box-shadow:var(--sh-md);display:inline-block;transform:rotate(-1.5deg)}.kicker{padding:0 var(--s-2);background:var(--c-primary);color:var(--on-primary);border:var(--b-thin) solid var(--c-ink);margin:0;font-weight:700;display:inline-block}.lead{max-width:34ch;font-size:1.1rem}.sub{margin:var(--s-4) 0 var(--s-1);font-size:var(--fs-title);font-weight:900;line-height:var(--lh-tight)}.sub small{font-size:var(--fs-label);color:var(--c-muted);font-weight:400}.note{text-align:center;font-size:var(--fs-caption);color:var(--c-muted)}.num{font-variant-numeric:tabular-nums}.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}.btn,.again{font:inherit;min-height:var(--touch);padding:0 var(--s-5);justify-content:center;align-items:center;gap:var(--s-2);background:var(--c-surface);color:var(--c-ink);border:var(--b-thick) solid var(--c-ink);border-radius:var(--r-sm);box-shadow:var(--sh-md);cursor:pointer;transition:transform var(--d-fast) var(--ease), box-shadow var(--d-fast) var(--ease);font-weight:700;text-decoration:none;display:inline-flex}.btn.primary{background:var(--c-accent);color:var(--on-accent)}.btn.secondary{background:var(--c-primary);color:var(--on-primary)}.btn.danger{background:var(--c-danger);color:var(--on-danger)}.btn:active,.again:active{box-shadow:1px 1px 0 var(--c-ink);transform:translate(3px,3px)}.btn:disabled,.btn[aria-disabled=true]{background:var(--c-neutral);color:var(--c-muted);box-shadow:none;cursor:not-allowed;border-style:dashed}.again{margin:var(--s-4) auto 0;background:var(--c-secondary);color:var(--on-secondary);display:flex}.cta{gap:var(--s-3);margin:var(--s-4) 0;flex-wrap:wrap;display:flex}.card{border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);padding:var(--s-3) var(--s-4);box-shadow:var(--sh-md)}.empty{border:var(--b-thick) dashed var(--c-ink);padding:var(--s-4);background:var(--c-surface)}.banner{border:var(--b-thick) solid var(--c-ink);padding:var(--s-2) var(--s-3);background:var(--c-secondary);color:var(--on-secondary);font-weight:700}.banner.offline{background:var(--c-warning);color:var(--on-warning)}.banner.error{background:var(--c-danger);color:var(--on-danger)}.banner.success{background:var(--c-success);color:var(--on-success)}.skeleton{background:repeating-linear-gradient(135deg, var(--c-neutral) 0 8px, var(--c-surface) 8px 16px);border:var(--b-thin) solid var(--c-ink);height:1.2em;display:block}.coach{border:var(--b-thick) solid var(--c-ink);background:var(--c-accent);color:var(--on-accent);padding:var(--s-3) var(--s-4);box-shadow:var(--sh-md);margin:var(--s-3) 0}.coach p{margin:0 0 var(--s-2);font-weight:700}.mini{margin-top:var(--s-2)}.mini button,button.mini{font:inherit;font-size:var(--fs-label);color:inherit;border:var(--b-thin) solid var(--c-ink);min-height:32px;padding:0 var(--s-2);cursor:pointer;background:0 0;margin-inline-end:var(--s-1)}.chip{padding:0 var(--s-2);border:var(--b-thin) solid var(--c-ink);background:var(--c-surface);font-size:var(--fs-label);font-weight:700;display:inline-block}.hero{padding:var(--s-5) 0 var(--s-2)}.demo{gap:var(--s-2);margin:var(--s-4) 0;display:flex}.demo .tile{width:48px;height:48px;font-size:1.4rem}.steps ol{gap:var(--s-2);padding:0;list-style:none;display:grid}.steps li{border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);padding:var(--s-3) var(--s-4);box-shadow:var(--sh-md)}.steps li:nth-child(2){margin-inline-start:var(--s-5)}.steps li:nth-child(3){margin-inline-start:var(--s-7)}.steps b{background:var(--c-ink);width:28px;height:28px;color:var(--c-canvas);place-items:center;margin-inline-end:var(--s-2);display:inline-grid}.boardwrap{margin:var(--s-3) auto var(--s-2);max-width:372px}.board{gap:6px;max-width:340px;margin:0 auto;display:grid}.row{grid-template-columns:repeat(var(--n,5), 1fr);width:calc(100% * var(--n,5) / var(--maxcols,5));gap:6px;margin-inline:auto;display:grid}.hint{text-align:center;font-size:var(--fs-label);color:var(--c-muted);margin:var(--s-2) 0 0}.tile{aspect-ratio:1;font-size:min(var(--fs-tile), calc(min(340px, 100vw - 32px) * .5 / var(--maxcols,5)));background:var(--c-surface);color:var(--c-ink);border:var(--b-thick) solid var(--c-ink);border-radius:var(--r-sm);place-items:center;font-weight:900;line-height:1;display:grid;position:relative}.tile.filled{box-shadow:var(--sh-sm)}.tile.correct{background:var(--c-correct);color:var(--on-correct)}.tile.present{background:var(--c-present);color:var(--on-present);border-style:double;border-width:var(--b-heavy)}.tile.absent{background:var(--c-absent);color:var(--on-absent)}.tile i{bottom:3px;text-align:center;letter-spacing:1px;font-size:.7rem;font-style:normal;line-height:1;position:absolute;inset-inline:0}.tile.correct span,.tile.present span,.tile.absent span{transform:translateY(-5px)}.row{scroll-margin-block-end:280px}.msg{text-align:center;min-height:1.7em;margin:var(--s-2) 0;font-weight:700}.kb{z-index:10;background:var(--c-canvas);padding:var(--s-2) 0 max(var(--s-2), env(safe-area-inset-bottom));border-top:var(--b-thin) solid var(--c-ink);gap:6px;display:grid;position:sticky;bottom:0}.kbrow{justify-content:center;gap:4px;display:flex}.key{min-width:0;height:48px;font:inherit;background:var(--c-surface);color:var(--c-ink);border:var(--b-thin) solid var(--c-ink);border-radius:var(--r-sm);box-shadow:var(--sh-sm);cursor:pointer;flex:1;padding:0;font-weight:700}.key:active{box-shadow:none;transform:translate(2px,2px)}.key.wide{background:var(--c-primary);color:var(--on-primary);flex:1.6}.key.correct{background:var(--c-correct);color:var(--on-correct)}.key.present{background:var(--c-present);color:var(--on-present);border-style:double;border-width:var(--b-thick)}.key.absent{background:var(--c-absent);color:var(--on-absent)}.result{border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);padding:var(--s-4);margin:var(--s-3) 0;box-shadow:var(--sh-md);text-align:center}.result h2{margin:0 0 var(--s-2)}.share{font-family:inherit;font-size:1.1rem;line-height:var(--lh-tight);white-space:pre-wrap;margin:var(--s-2) 0}.stats{gap:var(--s-2);grid-template-columns:repeat(4,1fr);padding:0;list-style:none;display:grid}.stats li{border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);padding:var(--s-2);text-align:center;font-size:var(--fs-caption)}.stats b{font-size:var(--fs-stat);font-variant-numeric:tabular-nums;display:block}.dist .bar{align-items:center;gap:var(--s-2);margin:var(--s-1) 0;grid-template-columns:20px 1fr 28px;display:grid}.dist .bar i{background:var(--c-correct);border:var(--b-thin) solid var(--c-ink);min-width:2px;height:18px;display:block}.balance{font-size:1.2rem}.balance b{font-size:2rem}.skus{gap:var(--s-2);padding:0;list-style:none;display:grid}.skus li{border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);padding:var(--s-2) var(--s-3);justify-content:space-between;align-items:center;display:flex}.log{font-size:var(--fs-label);padding:0;list-style:none}.admin table{border-collapse:collapse;background:var(--c-surface);width:100%}.admin th,.admin td{border:var(--b-thin) solid var(--c-ink);padding:var(--s-1) var(--s-2);text-align:start}.admin .toolbar{gap:var(--s-3);margin:var(--s-2) 0;flex-wrap:wrap;display:flex}.admin input,.admin select,.field input{font:inherit;border:var(--b-thin) solid var(--c-ink);min-height:40px;padding:0 var(--s-2);background:var(--c-surface);color:var(--c-ink);border-radius:var(--r-sm)}.swatches{gap:var(--s-2);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));padding:0;list-style:none;display:grid}.swatch{border:var(--b-thick) solid var(--c-ink);padding:var(--s-2);font-size:var(--fs-label);flex-direction:column;justify-content:space-between;min-height:84px;font-weight:700;display:flex}.swatch code{font-size:var(--fs-caption);text-align:start;direction:ltr;font-weight:400}.guide-grid{gap:var(--s-4);display:grid}.guide-grid .row{max-width:300px}.row.active{animation:rowIn var(--d-base) var(--ease)}@keyframes rowIn{0%{opacity:0;transform:translateY(-6px)}}.tile.shake,.row.shake{animation:shake var(--d-base) var(--ease)}@keyframes shake{25%{transform:translate(4px)}75%{transform:translate(-4px)}}@media (prefers-reduced-motion:no-preference){.tile.correct,.tile.present,.tile.absent{animation:pop var(--d-base) var(--ease-snap) backwards}@keyframes pop{0%{transform:scale(.88)}}main{animation:pageEnter var(--d-base) var(--ease) backwards}@keyframes pageEnter{0%{opacity:0;transform:translateY(6px)}}.kb button:active,.kb .key:active{transition:transform var(--d-fast) var(--ease);transform:translateY(2px)}.banner,[role=status].banner{animation:toastIn var(--d-base) var(--ease-snap) backwards}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)scale(.98)}}.reward-pop{animation:rewardPop var(--d-slow) var(--ease-snap) backwards}@keyframes rewardPop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.12)}}.result{animation:toastIn var(--d-slow) var(--ease) backwards}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (min-width:768px){.shell{padding-block:var(--s-5)}.boardwrap{max-width:412px}.board{max-width:380px}.key{height:52px}}.pwa{gap:var(--s-2);margin-top:var(--s-2);justify-items:start;display:grid}.pwa:empty{display:none}.giveup{text-align:center;margin:var(--s-1) 0;font-size:var(--fs-label)}.giveup .mini{min-height:36px}.field{gap:var(--s-3);max-width:420px;display:grid}.field label{gap:var(--s-1);font-weight:700;display:grid}.field input{width:100%}.shelf{gap:var(--s-4);margin:var(--s-4) 0;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));padding:0;list-style:none;display:grid}.game-card{gap:var(--s-2);align-content:start;display:grid}.game-card h3{font-size:var(--fs-title);margin:0;font-weight:900}.game-card.soon{box-shadow:none;color:var(--c-muted);background:0 0;border-style:dashed}.game-links{gap:var(--s-2);flex-wrap:wrap;display:flex}.game-links .btn{min-height:var(--touch);padding-inline:var(--s-4)}.foot{gap:var(--s-3);padding:var(--s-4) 0;margin-top:var(--s-6);border-top:var(--b-thick) solid var(--c-ink);flex-wrap:wrap;font-size:.9rem;display:flex}.foot a{color:inherit}details.card{margin-block:var(--s-3)}details.card summary{cursor:pointer;font-weight:700}.board{gap:var(--s-2);padding:0;list-style:none;display:grid}.board li{gap:var(--s-3);padding:var(--s-2) var(--s-3);border:var(--b-thick) solid var(--c-ink);background:var(--c-surface);align-items:baseline;display:flex}.board li[aria-current=true]{background:#e8f14a}.board li span{flex:1}.friends{padding:0;list-style:none}.check{gap:var(--s-2);align-items:center;display:flex}
