:root{--bg: #faf7f2;--surface: #ffffff;--ink: #1b2533;--ink-soft: #4a5566;--line: #e3ddd2;--brand: #0d6464;--brand-ink: #ffffff;--brand-soft: #e3f1ef;--accent: #b86e00;--good: #1f7a3a;--bad: #b3261e;--radius: 16px;--shadow: 0 2px 10px rgba(27, 37, 51, .08);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #12171f;--surface: #1b222d;--ink: #eef1f5;--ink-soft: #b4bdca;--line: #2e3846;--brand: #5cc4b8;--brand-ink: #0b1a1a;--brand-soft: #1d3634;--accent: #f0b456;--good: #6fd08c;--bad: #ff8a80;--shadow: none;color-scheme:dark}}*{box-sizing:border-box}html{font-size:20px;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Atkinson Hyperlegible,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.wrap{max-width:640px;margin:0 auto;padding:0 16px}header.top{display:flex;align-items:center;justify-content:space-between;padding:16px 0}.logo{font-weight:700;font-size:1.1rem;color:var(--ink);text-decoration:none;display:flex;gap:8px;align-items:center}.logo svg{width:28px;height:28px}h1{font-size:1.9rem;line-height:1.2;margin:.6em 0 .4em;letter-spacing:-.01em}h2{font-size:1.4rem;line-height:1.25;margin:.4em 0}p{margin:0 0 1em}.lead{font-size:1.1rem;color:var(--ink-soft)}.small{font-size:.8rem;color:var(--ink-soft)}.center{text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:60px;width:100%;padding:0 24px;border:0;border-radius:999px;background:var(--brand);color:var(--brand-ink);font:inherit;font-size:1.1rem;font-weight:700;cursor:pointer;text-decoration:none}.btn:focus-visible,.tile:focus-visible,.card:focus-visible,.plan:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.btn.secondary{background:transparent;color:var(--brand);border:2px solid var(--brand)}.btn:disabled{opacity:.45;cursor:default}.link-btn{background:none;border:0;color:var(--ink-soft);font:inherit;font-size:.85rem;text-decoration:underline;cursor:pointer;min-height:44px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin:16px 0}.bullets{list-style:none;padding:0;margin:16px 0 24px}.bullets li{padding-left:36px;position:relative;margin:10px 0}.bullets li:before{content:"✓";position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:.8rem;display:grid;place-items:center}.progress{display:flex;gap:6px;margin:8px 0 4px}.progress span{flex:1;height:8px;border-radius:4px;background:var(--line)}.progress span.done{background:var(--brand)}.step-label{font-size:.85rem;color:var(--ink-soft);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.choices{display:grid;gap:12px;margin:16px 0}.choice{min-height:60px;padding:12px 20px;border-radius:var(--radius);border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:1.05rem;text-align:left;cursor:pointer}.choice:hover{border-color:var(--brand)}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.card{aspect-ratio:3 / 4;border-radius:12px;border:2px solid var(--line);background:var(--brand);color:var(--brand-ink);font-size:2rem;display:grid;place-items:center;cursor:pointer;padding:0;transition:transform .15s ease,background .15s ease}.card.open,.card.matched{background:var(--surface);color:var(--ink)}.card.matched{border-color:var(--good);opacity:.75;cursor:default}.card .back{font-size:1.3rem;opacity:.6}.answer{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;min-height:64px;margin:16px 0 8px}.slot{width:48px;height:58px;border-bottom:3px solid var(--ink-soft);display:grid;place-items:center;font-size:1.6rem;font-weight:700}.tiles{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:12px 0 20px}.tile{width:56px;height:60px;border-radius:12px;border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:1.5rem;font-weight:700;cursor:pointer}.tile.used{visibility:hidden}.hint{text-align:center;color:var(--ink-soft)}.row{display:flex;gap:12px}.row>*{flex:1}.equation{font-size:2.4rem;font-weight:700;text-align:center;margin:28px 0;letter-spacing:.02em}.yesno{display:flex;gap:12px}.yesno .btn{font-size:1.3rem}.btn.yes{background:var(--good);color:#fff}.btn.no{background:var(--bad);color:#fff}.feedback{min-height:1.6em;text-align:center;font-weight:700;margin:8px 0}.feedback.good{color:var(--good)}.feedback.bad{color:var(--bad)}label.field{display:block;font-weight:700;margin:16px 0 8px}input[type=email]{width:100%;min-height:60px;padding:0 16px;border-radius:12px;border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:1.1rem}.error{color:var(--bad);font-weight:700;min-height:1.5em;margin:6px 0}.score-ring{width:180px;height:180px;margin:8px auto 4px;display:block}.score-num{font-size:3rem;font-weight:700}.bars{display:grid;gap:14px;margin:16px 0}.bar-row .bar-head{display:flex;justify-content:space-between;font-weight:700;margin-bottom:4px}.bar{height:14px;border-radius:7px;background:var(--line);overflow:hidden}.bar>span{display:block;height:100%;background:var(--brand);border-radius:7px}.plan{display:flex;align-items:center;gap:14px;width:100%;padding:16px 18px;border-radius:var(--radius);border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;position:relative}.plan.selected{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}.plan .radio{width:26px;height:26px;border-radius:50%;border:2px solid var(--ink-soft);flex:none;display:grid;place-items:center}.plan.selected .radio{border-color:var(--brand)}.plan.selected .radio:after{content:"";width:14px;height:14px;border-radius:50%;background:var(--brand)}.plan .name{font-weight:700;font-size:1.1rem}.plan .sub{color:var(--ink-soft);font-size:.85rem}.plan .price{margin-left:auto;text-align:right;font-weight:700;white-space:nowrap}.badge{position:absolute;top:-12px;right:16px;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}@media (prefers-color-scheme: dark){.badge{color:#1b1200}}.timeline{list-style:none;padding:0;margin:16px 0}.timeline li{display:flex;gap:12px;margin:10px 0}.timeline .dot{flex:none;min-width:70px;height:30px;padding:0 10px;border-radius:999px;white-space:nowrap;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:.8rem}.disclosure{font-size:.8rem;color:var(--ink-soft);margin-top:12px}footer.site{margin:40px 0 24px;padding-top:16px;border-top:1px solid var(--line);font-size:.8rem;color:var(--ink-soft)}footer.site a{color:var(--ink-soft);margin-right:14px}.legal h1{font-size:1.6rem}.legal h2{font-size:1.15rem;margin-top:1.4em}h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus{outline:none}a{color:var(--brand)}@media (max-width: 380px){h1{font-size:1.6rem}.tile{width:48px;height:54px}.slot{width:40px}.equation{font-size:2rem}}html.xl{font-size:23px}body.has-tabbar{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.signin-link{font-weight:700;color:var(--brand);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}.loading{color:var(--ink-soft);padding:40px 0;text-align:center}.big-icon{font-size:3.2rem;line-height:1;margin:16px 0 0}.big-num{font-size:3rem;font-weight:700;line-height:1;margin:4px 0 8px;color:var(--brand)}.back-link{display:inline-flex;min-height:44px;align-items:center;color:var(--brand);font-weight:700;text-decoration:none}.link-strong{color:var(--bad);font-weight:700}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:center;gap:4px;background:var(--surface);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom))}.tabbar[hidden]{display:none}.tabbar a{flex:1;max-width:200px;min-height:64px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink-soft);text-decoration:none;font-weight:700;font-size:.8rem}.tabbar a span{font-size:1.4rem;line-height:1}.tabbar a[aria-current=page]{color:var(--brand);background:var(--brand-soft)}.today-head{display:flex;align-items:center;gap:18px}.mini-ring{width:84px;height:84px;flex:none}.today-status{font-weight:700;font-size:1.1rem;margin:0 0 4px}.streak{margin:0;font-weight:700;color:var(--accent)}.celebrate{text-align:center;background:var(--brand-soft);border-color:transparent}.game-list{list-style:none;padding:0;margin:20px 0;display:grid;gap:12px}.game-card{display:flex;align-items:center;gap:14px;min-height:84px;padding:14px 16px;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);color:var(--ink);text-decoration:none;box-shadow:var(--shadow)}.game-card:hover{border-color:var(--brand)}.game-card:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.game-card.done{background:transparent;box-shadow:none}.game-icon{font-size:2rem;width:52px;height:52px;display:grid;place-items:center;background:var(--brand-soft);border-radius:14px;flex:none}.game-text{display:flex;flex-direction:column;gap:2px;min-width:0}.game-state{margin-left:auto}.play-chip,.score-chip{display:inline-block;padding:6px 14px;border-radius:999px;font-weight:700;white-space:nowrap}.play-chip{background:var(--brand);color:var(--brand-ink)}.score-chip{background:var(--brand-soft);color:var(--good)}.dots{display:inline-flex;gap:4px;vertical-align:middle}.dots span{width:9px;height:9px;border-radius:50%;background:var(--line)}.dots span.on{background:var(--brand)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 8px;text-align:center;display:flex;flex-direction:column}.stat-num{font-size:1.8rem;font-weight:700;color:var(--brand);line-height:1.1}.chart{width:100%;height:auto;display:block}.delta{font-size:.8rem}.delta.up{color:var(--good)}.delta.down{color:var(--bad)}.level-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.level-list li{display:flex;align-items:center;gap:6px}.lvl-name{flex:1}.toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:64px;padding:8px 4px;background:none;border:0;border-bottom:1px solid var(--line);color:var(--ink);font:inherit;font-size:1.05rem;text-align:left;cursor:pointer}.toggle:last-child{border-bottom:0}.toggle:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.toggle-track{width:60px;height:34px;border-radius:999px;background:var(--line);position:relative;flex:none;transition:background .15s}.toggle-thumb{position:absolute;top:3px;left:3px;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .15s}.toggle[aria-checked=true] .toggle-track{background:var(--brand)}.toggle[aria-checked=true] .toggle-thumb{transform:translate(26px)}.people{display:grid;gap:10px;margin:16px 0 24px}.person{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.person .face{font-size:2.6rem;line-height:1}.pname{font-size:1.2rem}.face-big{font-size:5rem;text-align:center;line-height:1.1;margin:12px 0 4px}.choice.right{border-color:var(--good);background:color-mix(in srgb,var(--good) 15%,var(--surface))}.choice.wrong{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface))}.pads{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px auto;max-width:360px}.pad{aspect-ratio:1;border-radius:18px;border:3px solid transparent;background:color-mix(in srgb,var(--pad) 30%,var(--surface));color:var(--ink);font:inherit;font-size:1.3rem;font-weight:700;cursor:pointer;transition:transform .1s,background .1s}.pad:disabled{cursor:default}.pad.lit{background:var(--pad);color:#fff;border-color:var(--ink);transform:scale(1.06)}.odd-grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:8px;margin:16px auto;max-width:420px}.odd-cell{aspect-ratio:1;border-radius:12px;border:2px solid var(--line);background:var(--surface);font-size:clamp(1.4rem,7vw,2.2rem);cursor:pointer;padding:0}.odd-cell.found{border:4px solid var(--good)}.odd-cell.wrong{border:4px solid var(--bad)}.person .fact{color:var(--ink-soft);font-size:.95rem}.code-input{width:100%;min-height:72px;padding:0 16px;border-radius:12px;border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:2rem;font-weight:700;letter-spacing:.3em;text-align:center}.code-input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.danger-btn{background:none;border:2px solid var(--bad);color:var(--bad)}.time-input{width:100%;min-height:56px;padding:0 14px;border-radius:12px;border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:1.1rem;margin-bottom:8px}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;overflow:hidden}.confetti span{position:absolute;top:-12px;width:10px;height:14px;border-radius:2px;animation:fall 1.1s ease-in forwards}@keyframes fall{to{top:105%;opacity:.6}}.week-goal{margin:6px 0 2px;font-weight:700;font-size:.9rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.week-dots{display:inline-flex;gap:5px}.week-dots span{width:14px;height:14px;border-radius:50%;border:2px solid var(--brand)}.week-dots span.on{background:var(--brand)}.preview{font-size:1rem}.score-card{text-align:center}.score-big{font-size:3.4rem;font-weight:700;color:var(--brand);line-height:1;margin:6px 0 4px}.score-of{font-size:1rem;color:var(--ink-soft);font-weight:400}.tier{font-weight:700;font-size:1.2rem;margin:0 0 6px}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px}.cal-head{text-align:center;font-size:.75rem;font-weight:700;color:var(--ink-soft)}.cal-day{aspect-ratio:1;border-radius:10px;display:grid;place-items:center;font-weight:700;font-size:.9rem;background:var(--line);color:var(--ink-soft)}.cal-day.done{background:var(--brand);color:var(--brand-ink)}.cal-day.shield{background:var(--brand-soft)}.cal-day.today{outline:3px solid var(--accent);outline-offset:-3px;background:var(--surface)}.cal-day.future{background:transparent;border:1px dashed var(--line)}.bdg-grid{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.bdg{border:1px solid var(--line);border-radius:14px;padding:12px 10px;text-align:center;display:flex;flex-direction:column;gap:4px;opacity:.6}.bdg.earned{opacity:1;background:var(--brand-soft);border-color:transparent}.bdg-icon{font-size:1.8rem;line-height:1}.grocery-note{list-style:none;margin:16px 0 24px;padding:18px 20px;background:#fffbea;color:#3b3320;border-radius:6px;box-shadow:0 2px 8px #0000001f;font-size:1.2rem;line-height:1.9;border-left:6px solid #e8c46a}@media (prefers-color-scheme: dark){.grocery-note{background:#3a3424;color:#f3ead2}}.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:16px 0}.shelf-item,.word-chip{min-height:64px;border-radius:14px;border:2px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px}.shelf-emoji{font-size:1.6rem}.shelf-item[aria-pressed=true],.word-chip[aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 2px var(--brand)}.shelf-item,.word-chip{position:relative}.shelf-item[aria-pressed=true]:after,.word-chip[aria-pressed=true]:after{content:"✓";position:absolute;top:2px;right:7px;font-size:.85rem;color:var(--brand)}.shelf-item.right,.word-chip.right{border-color:var(--good);background:color-mix(in srgb,var(--good) 15%,var(--surface))}.shelf-item.wrong,.word-chip.wrong{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface))}.shelf-item.missed,.word-chip.missed{border:3px dashed var(--good)}.chips{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.word-chip{min-width:110px;flex:1 1 auto}.receipt{background:var(--surface);border:2px dashed var(--line);border-radius:12px;padding:16px 18px;margin:16px 0;font-size:1.15rem}.choices.two-col{grid-template-columns:1fr 1fr}.choice.center{text-align:center;font-size:1.3rem;font-weight:700}.clock-face{width:min(290px,78vw);height:auto;display:block;margin:10px auto 14px}.where-grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:8px;margin:16px auto;max-width:380px}.where-cell{aspect-ratio:1;border-radius:12px;border:2px solid var(--line);background:var(--surface);font-size:clamp(1.6rem,8vw,2.4rem);cursor:pointer;padding:0;color:var(--ink)}.where-cell:disabled{cursor:default;opacity:1}.where-cell.found{border:4px solid var(--good)}.where-cell.wrong{border:4px solid var(--bad)}.where-ask{font-size:3.4rem;text-align:center;line-height:1.1}.pat-row{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:18px 0}.pat-cell{width:52px;height:58px;display:grid;place-items:center;font-size:2rem;border-radius:10px;background:var(--surface);border:1px solid var(--line)}.pat-next{border:3px dashed var(--accent);font-weight:700;color:var(--accent)}.pat-next.ok{border:3px solid var(--good)}.pat-next.no{border:3px solid var(--bad)}.pat-opt{font-size:2rem}.people-list{list-style:none;padding:0;margin:12px 0;display:grid;gap:8px}.people-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px}.add-person,.family-seats{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
