.dots-root{--paper:#f7f2e6;--grid:#e4ebf2;--ink:#2b2b46;--gr:#4a4664;--soft:#6a6480;--faint:#8a8497;--card:#fffdf6;--edge:#e7ddc8;--blue:#2f6df6;--red:#f6482f;--stamp:#d43a3a;--tape:#ffee968c;background:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px), var(--paper);min-height:100vh;color:var(--ink);-webkit-font-smoothing:antialiased;background-size:24px 24px,24px 24px,auto;margin:0;padding:14px 0 48px;font-family:Nunito,system-ui,sans-serif;font-size:18px;line-height:1.65;position:relative;overflow-x:clip}.dots-root *,.dots-root :before,.dots-root :after{box-sizing:border-box}.dots-ghosts{pointer-events:none;position:absolute;inset:0}.dots-ghost{z-index:0;opacity:.07;color:#26263a;pointer-events:none;-webkit-user-select:none;user-select:none;filter:blur(.5px);line-height:1;position:fixed}.dots-g1{--r:12deg;transform:rotate(var(--r));font-size:48vh;top:-6vh;right:-4vh}.dots-g2{--r:-9deg;transform:rotate(var(--r));font-size:40vh;bottom:-9vh;left:-5vh}.dots-g3{opacity:.055;--r:-4deg;transform:rotate(var(--r));font-size:18vh;top:10vh;left:7vw}.dots-g4{opacity:.055;--r:8deg;transform:rotate(var(--r));font-size:20vh;bottom:5vh;right:9vw}@media (width<=720px){.dots-g3,.dots-g4{display:none}}.dots-ghost.is-flinching{animation:.7s dots-flinch}@keyframes dots-flinch{0%{transform:rotate(var(--r)) translateY(0)}30%{transform:rotate(calc(var(--r) + 3deg)) translateY(-8px)}to{transform:rotate(var(--r)) translateY(0)}}@media (prefers-reduced-motion:reduce){.dots-ghost.is-flinching{animation:none}}.dots-sheet{z-index:1;max-width:860px;margin:0 auto;padding:0 18px 0 34px;position:relative}.dots-sheet:before{content:"";pointer-events:none;background:#d63c3c47;width:2px;position:absolute;top:0;bottom:0;left:26px}@media (width>=720px){.dots-root{padding:24px 0 64px}.dots-sheet{padding:0 28px 0 72px}.dots-sheet:before{left:60px}}.dots-rail{z-index:1;max-width:860px;color:var(--soft);--btm-accent:var(--stamp);--btm-hover:#2b2b4612;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin:0 auto 6px;padding:0 18px 0 34px;display:flex;position:relative}@media (width>=720px){.dots-rail{padding:0 28px 0 72px}}.dots-root .lang-switch{gap:6px;display:flex}.dots-root .lang-switch .lang-option{background:var(--card);min-height:44px;color:var(--gr);cursor:pointer;border:2px dashed #b9b0a0;border-radius:8px;padding:4px 12px;font-family:Caveat,Comic Sans MS,cursive;font-size:19px;font-weight:700}.dots-root .lang-switch .lang-option:hover{transform:translateY(-2px)}.dots-root .lang-switch .lang-option.is-active{border-style:solid;border-color:var(--blue);color:var(--blue);background:#e8f0ff}.dots-hero{text-align:center;padding:30px 0 8px}.dots-title{letter-spacing:2px;color:var(--ink);margin:0;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:clamp(42px,11vw,72px);font-weight:700;line-height:1.05}.dots-title-dot{vertical-align:.34em;border-radius:50%;width:.34em;height:.34em;display:inline-block}.dots-title-dot.is-blue{background:var(--blue)}.dots-title-dot.is-red{background:var(--red)}.dots-tagline{color:var(--faint);margin:2px 0 18px;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:clamp(21px,5vw,26px);font-weight:500;line-height:1.3;transform:rotate(-1.2deg)}.dots-lead{text-align:left;max-width:620px;margin:0 auto}.dots-jump{background:var(--card);min-height:44px;color:var(--gr);border:2px dashed #b9b0a0;border-radius:8px;justify-content:center;align-items:center;margin-top:22px;padding:8px 26px;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:24px;font-weight:700;text-decoration:none;display:inline-flex;transform:rotate(-.6deg);box-shadow:2px 3px #2b2b461a}.dots-jump:hover{transform:rotate(-.6deg)translateY(-2px)}.dots-section{z-index:1;padding-top:48px;position:relative}.dots-h2{color:var(--soft);margin:0 0 6px;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:clamp(30px,7vw,42px);font-weight:700;line-height:1.1}.dots-p{max-width:620px;margin:0 0 18px}.dots-card{background:var(--card);border:1px solid var(--edge);margin:20px 0 0;padding:18px 20px;transform:rotate(-.4deg);box-shadow:3px 4px #2b2b4614}.dots-card:nth-of-type(2n){transform:rotate(.4deg)}.dots-h3{color:var(--soft);margin:0 0 10px;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:26px;font-weight:700;line-height:1.2}.dots-list{margin:0;padding:0;list-style:none}.dots-list li{margin:0 0 10px;padding-left:24px;position:relative}.dots-list li:last-child{margin-bottom:0}.dots-list li:before{content:"";background:var(--blue);border-radius:50%;width:9px;height:9px;position:absolute;top:.62em;left:4px}.dots-list li:nth-child(2n):before{background:var(--red)}.dots-figures{flex-wrap:wrap;gap:16px;margin:18px 0 0;padding:0;list-style:none;display:flex}.dots-figure{text-align:center;flex:104px;min-width:104px}.dots-figure-board{width:100%;max-width:104px;height:auto;margin:0 auto 6px;display:block}.dots-figure-cell{fill:#2f6df633;stroke:var(--blue);stroke-width:2px;stroke-linejoin:round}.dots-figure-grid{stroke:var(--grid);stroke-width:2px}.dots-figure-dot{fill:var(--blue)}.dots-figure-empty{fill:none;stroke:var(--faint);stroke-width:1.5px;stroke-dasharray:3 3}.dots-figure-value{color:var(--blue);font-family:Courier New,ui-monospace,monospace;font-size:22px;font-weight:700;display:block}.dots-figure-caption{color:var(--faint);font-size:15px;line-height:1.35;display:block}.dots-game-section{padding-bottom:8px}.dots-hint{text-align:center;color:var(--faint);margin:20px 0 0;font-size:16px}.dots-colophon{text-align:center;margin-top:52px}.dots-rule{fill:none;width:200px;max-width:100%;height:auto;stroke:var(--faint);stroke-width:2px;stroke-linecap:round;margin:0 auto 20px;display:block}.dots-credits{color:var(--soft);margin:0 0 6px;font-family:Caveat,Comic Sans MS,Segoe Print,cursive;font-size:24px;font-weight:500;line-height:1.35}.dots-fine{letter-spacing:1px;color:var(--faint);margin:0;font-family:Courier New,ui-monospace,monospace;font-size:15px}.dots-figure{opacity:0;transition:opacity .45s,transform .45s cubic-bezier(.18,1.4,.4,1);transform:scale(.88)translateY(10px)}.dots-figure.is-visible{opacity:1;transform:none}.dots-jump,.dots-root .lang-switch .lang-option{transition:transform .15s}@media (prefers-reduced-motion:reduce){.dots-figure{opacity:1;transition:none;transform:none}.dots-jump,.dots-root .lang-switch .lang-option{transition:none}.dots-jump:hover{transform:rotate(-.6deg)}.dots-root .lang-switch .lang-option:hover{transform:none}}
