:root{--bg:#fdf8ef;--ink:#1f2a36;--muted:#6b7480;--accent:#f2994a;--accent-ink:#fff;--agent:#56a3d9;--donnie:#6fcf97;--card:#fff;--shadow:0 10px 30px #1f2a3614;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);-webkit-tap-highlight-color:transparent;margin:0;font-family:Andika,system-ui,sans-serif}.app{min-height:100dvh;padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom);grid-template-rows:1fr auto;grid-template-columns:minmax(0,1fr);display:grid}.login{background:var(--card);width:min(100%,26rem);box-shadow:var(--shadow);text-align:center;border-radius:2rem;flex-direction:column;grid-row:1/-1;place-self:center;gap:1.25rem;padding:2.5rem 2rem;display:flex}.title{margin:0 0 .5rem;font-size:clamp(2rem,7vw,2.75rem);line-height:1.15}.field input{width:100%;font:inherit;background:var(--bg);color:var(--ink);border:3px solid #ece4d6;border-radius:1rem;outline:none;padding:.7em .9em;font-size:1.5rem;transition:border-color .15s}.field input:focus{border-color:var(--accent)}.unlock{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:.6em 1em;font-size:1.6rem;font-weight:700;transition:transform .1s,opacity .15s}.unlock:active{transform:scale(.97)}.unlock:disabled{opacity:.6}.login-error:empty{display:none}.login-error{color:#c0504d;margin:0;font-size:1.15rem}.login.shake{animation:.35s shake}@keyframes shake{25%{transform:translate(-10px)}75%{transform:translate(10px)}}.visually-hidden{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.stage{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex}.reading{letter-spacing:.02em;word-spacing:.15em;overflow-wrap:anywhere;max-width:22ch;margin:0;line-height:1.35}.reading:empty{display:none}.reading[data-kind=word]{font-size:clamp(4rem,16vw,10rem);font-weight:700}.reading[data-kind=sentence]{font-size:clamp(2.5rem,8vw,5rem)}.reading[data-kind=story]{text-align:left;max-width:30ch;font-size:clamp(2rem,5.5vw,3.5rem)}.hl{color:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.2em;padding:0 .05em;transition:background-color .2s}.hl-yellow{background:#ffe27a}.hl-green{background:#b6ecc8}.hl-blue{background:#bfe0f7}.hl-pink{background:#ffc9d9}button{font:inherit;cursor:pointer;border:0}.start{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow);border-radius:999px;padding:.6em 1.4em;font-size:clamp(2rem,6vw,3rem);font-weight:700;transition:transform .1s}.start:active{transform:scale(.96)}.start[hidden],.end[hidden]{display:none}.message{color:var(--muted);margin:0;font-size:1.5rem}.message:empty{display:none}.bar{color:var(--muted);align-items:center;gap:.75rem;padding:1rem 0;font-size:1.1rem;display:flex}.status{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.speaker{background:#d5d9de;border-radius:50%;width:1rem;height:1rem;transition:background .2s}.app[data-state=live] .speaker{background:var(--muted)}.app .speaker[data-who=agent]{background:var(--agent);animation:1s ease-in-out infinite pulse}.app .speaker[data-who=donnie]{background:var(--donnie);animation:.6s ease-in-out infinite pulse}.end{background:var(--card);color:var(--ink);box-shadow:var(--shadow);border-radius:999px;padding:.5em 1em;font-size:1.1rem}@keyframes pulse{50%{transform:scale(1.4)}}.timer{top:calc(env(safe-area-inset-top) + 16px);font-variant-numeric:tabular-nums;width:4.5rem;height:4.5rem;color:var(--ink);place-items:center;font-size:1.15rem;font-weight:700;display:grid;position:fixed;right:16px}.timer svg{position:absolute;inset:0;transform:rotate(-90deg)}.timer-track,.timer-ring{fill:none;stroke-width:3.5px}.timer-track{stroke:#ece4d6}.timer-ring{stroke:var(--donnie);stroke-dasharray:100;stroke-linecap:round;transition:stroke-dashoffset .25s linear,stroke .3s}.app[data-low-time=true] .timer-ring{stroke:var(--accent)}.dashboard{flex-direction:column;align-items:center;gap:1.25rem;display:flex}.streak{color:var(--muted);align-items:baseline;gap:.4rem;font-size:1.4rem;display:flex}.streak-star{color:#d5d9de;font-size:2rem}.app[data-streak=on] .streak-star{color:#f5b82e}.streak-count{color:var(--ink);font-size:2.6rem;font-weight:700}.today{text-align:center;width:min(100%,20rem)}.today-bar{background:#ece4d6;border-radius:999px;height:.9rem;overflow:hidden}.today-fill{border-radius:inherit;background:var(--donnie);width:0;height:100%;transition:width .4s}.today-text{color:var(--muted);margin:.5rem 0 0;font-size:1.1rem}.days{grid-template-columns:repeat(7,1.6rem);gap:.4rem;display:grid}.day{aspect-ratio:1;background:#ece4d6;border-radius:.4rem}.day[data-state=some]{background:#c9ecd6}.day[data-state=met]{background:var(--donnie)}.day[data-today=true]{outline:3px solid var(--accent);outline-offset:2px}.goal{white-space:nowrap;align-items:center;gap:.4rem;display:inline-flex}.goal-step{background:var(--card);width:2rem;height:2rem;color:var(--ink);box-shadow:var(--shadow);border-radius:50%;font-size:1.2rem;line-height:1}.mode-picker{background:#ece4d6;border:0;border-radius:999px;gap:.25rem;min-width:0;margin:0;padding:.3rem;display:inline-flex}.mode-picker button{color:var(--muted);background:0 0;border-radius:999px;padding:.45em 1.1em;font-size:1.15rem}.mode-picker button[aria-pressed=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow);font-weight:700}.mode-pill{top:calc(env(safe-area-inset-top) + 16px);background:var(--card);box-shadow:var(--shadow);color:var(--muted);border-radius:999px;padding:.4em .9em;font-size:1rem;position:fixed;left:16px}.parents{grid-row:1/-1;justify-self:center;width:min(100%,44rem);padding:1.5rem 0 3rem}.parents-head{align-items:center;gap:1rem;display:flex}.parents-back,.parents-open,.notes-more{background:var(--card);color:var(--ink);box-shadow:var(--shadow);border-radius:999px;padding:.45em 1em;font-size:1.05rem}.parents-title{margin:0;font-size:clamp(1.6rem,5vw,2.1rem)}.parents-intro{color:var(--muted);margin:1rem 0 1.5rem;font-size:1.05rem;line-height:1.45}.notes-list{gap:1.25rem;display:grid}.notes-session{background:var(--card);box-shadow:var(--shadow);border-radius:1.25rem;padding:1.1rem 1.25rem}.notes-session h2{color:var(--muted);margin:0 0 .75rem;font-size:1.05rem;font-weight:700}.notes-session ul{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.note{grid-template-columns:4.5rem 1fr;gap:.75rem;font-size:1.05rem;line-height:1.45;display:grid}.note time{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:.1em;font-size:.95rem}.note p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.notes-empty{color:var(--muted);font-size:1.1rem}.notes-more{margin:1.5rem auto 0;display:block}.notes-more[hidden],.notes-empty[hidden],.app[data-state=checking]>*,.app[data-state=locked]>:not(.login),.app:not([data-state=locked])>.login,.app[data-state=parents]>:not(.parents),.app:not([data-state=parents])>.parents,.app:not([data-state=live]):not([data-state=wrapping]) .timer,.app:not([data-state=live]):not([data-state=wrapping]) .mode-pill,.app[data-state=connecting] .mode-picker,.app[data-state=live] .mode-picker,.app[data-state=wrapping] .mode-picker,.app[data-state=connecting] .dashboard,.app[data-state=live] .dashboard,.app[data-state=wrapping] .dashboard,.app[data-state=connecting] .parents-open,.app[data-state=live] .parents-open,.app[data-state=wrapping] .parents-open,.app[data-state=connecting] .goal,.app[data-state=live] .goal,.app[data-state=wrapping] .goal{display:none}@media (width<=480px){.app[data-state=idle] .status{visibility:hidden}}
