:root{--paper:#f4f7fc;--grid:#dbe4f2;--surface:#fff;--ink:#1a2342;--muted:#56627f;--line:#cbd5e6;--pen:#2a57c4;--pen-soft:#e2eafb;--neg:#c3372c;--neg-soft:#fbe6e3;--pos:#15815a;--pos-soft:#ddf3e9;--hot:#ffef9e;--skip:#b07f00;--skip-soft:#fbf1cc;--f-display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;--f-body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;--f-math:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;--f-title:"Young Serif",Georgia,serif;--f-hand:"Caveat","Bradley Hand",cursive;--ink-blue:#2a57c4;--ink-green:#2f7d4f;--ink-plum:#8a3f8f;--ink-rust:#b2512a;--ink-teal:#16808a;--ink-gold:#9a7400;--m-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 12.6c1.8 1.4 3.6 3.4 5.2 6.1.3.5.9.5 1.2 0C12.6 13 16 8.3 21 4.2'/%3E%3C/svg%3E");--m-x:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.6 5.3c4.2 4.4 8.6 9.1 12.9 13.7M18.7 4.9c-4.6 4.2-8.8 8.9-12.9 14.3'/%3E%3C/svg%3E");--m-dash:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 13.4c2.4-2.7 4.6-2.9 6.8-.6s4.6 2.4 7 .1c1-1 2.2-1.6 3.2-1.3'/%3E%3C/svg%3E");--m-ring:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M13.6 2.7C7.9 1.9 2.6 5.6 2.4 11.6c-.2 5.4 4.1 9.8 9.6 9.9 5.4.1 9.6-4 9.6-9.4 0-3.9-2.3-7.1-6-8.6'/%3E%3C/svg%3E");--m-star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' stroke='black' stroke-width='1.5' stroke-linejoin='round' d='M12.2 2.6 14.9 8.7l6.4.6-4.9 4.3 1.6 6.4-5.9-3.4-5.9 3.3 1.6-6.5-5-4.2 6.5-.6z'/%3E%3C/svg%3E");--m-strike:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath vector-effect='non-scaling-stroke' d='M1 6.8C18 4.6 36 7.4 55 4.9S86 5.6 99 2.8'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#16161c;--grid:#24242d;--surface:#1e1e26;--ink:#ecebf1;--muted:#a9a7b6;--line:#34343f;--ink-blue:#80a3ff;--ink-green:#6fcf97;--ink-plum:#d59be0;--ink-rust:#f0956b;--ink-teal:#5fcfd8;--ink-gold:#e3c867;--pen:#80a3ff;--pen-soft:#1d2a4a;--neg:#ff8073;--neg-soft:#3b1f1f;--pos:#52d5a2;--pos-soft:#14322a;--hot:#ffef9e47;--skip:#e3c867;--skip-soft:#3a3214;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#16161c;--grid:#24242d;--surface:#1e1e26;--ink:#ecebf1;--muted:#a9a7b6;--line:#34343f;--ink-blue:#80a3ff;--ink-green:#6fcf97;--ink-plum:#d59be0;--ink-rust:#f0956b;--ink-teal:#5fcfd8;--ink-gold:#e3c867;--pen:#80a3ff;--pen-soft:#1d2a4a;--neg:#ff8073;--neg-soft:#3b1f1f;--pos:#52d5a2;--pos-soft:#14322a;--hot:#ffef9e47;--skip:#e3c867;--skip-soft:#3a3214;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{--base:16px;font-size:var(--base)}@media (max-width:520px){html{--base:clamp(16px,4.1vw,18px)}}body{background:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);color:var(--ink);font-family:var(--f-body);-webkit-tap-highlight-color:transparent;background-size:24px 24px;font-size:1rem;line-height:1.5}@media (max-width:699px){body{background-image:none}}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}[hidden]{display:none!important}button:focus-visible,a:focus-visible{outline:3px solid var(--pen);outline-offset:2px}ul{margin:0;padding:0;list-style:none}.col{max-width:760px;padding-inline:max(16px,env(safe-area-inset-left)) max(16px,env(safe-area-inset-right));margin:0 auto}.page{padding-block:calc(16px + env(safe-area-inset-top)) calc(64px + env(safe-area-inset-bottom))}body:before{content:"";height:env(safe-area-inset-top);background:var(--paper);z-index:50;pointer-events:none;position:fixed;inset:0 0 auto}body:has(.pv):before{display:none}.tag{font-family:var(--f-math);color:var(--pen);background:var(--pen-soft);border:0;border-radius:6px;flex:none;padding:2px 8px;font-size:.8rem;font-weight:700}.tag.big{cursor:pointer;white-space:nowrap;min-height:40px;padding:6px 10px;font-size:1rem}.st{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:700}.st.missed{background:var(--neg-soft);color:var(--neg)}.st.skipped{background:var(--skip-soft);color:var(--skip)}.st.got,.st.fixed{background:var(--pos-soft);color:var(--pos)}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-height:48px;padding:8px 18px;font-size:1rem;font-weight:700;display:inline-flex}.btn:hover{border-color:var(--pen)}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--paper);box-shadow:3px 3px 0 var(--pen);border-radius:10px}.btn.primary:hover{border-color:var(--ink);box-shadow:4px 4px 0 var(--pen);transform:translate(-1px,-1px)}.btn.primary:active{box-shadow:2px 2px 0 var(--pen);transform:translate(1px,1px)}.btn.primary:disabled{box-shadow:none;transform:none}.btn.ghost{background:0 0;border-color:#0000;min-height:44px;padding-inline:10px}.btn.ghost:hover{background:var(--pen-soft)}.btn.icon{min-width:44px;padding:0;font-size:1.25rem}.btn:disabled{opacity:.35;cursor:default}.dot{width:18px;height:18px;-webkit-mask:var(--m) center/contain no-repeat;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;background:currentColor;flex:none;display:inline-block;position:relative}.dot.got{color:var(--pos);--m:var(--m-check)}.dot.missed{color:var(--neg);--m:var(--m-x)}.dot.skipped{color:var(--skip);--m:var(--m-dash)}.dot.fixed{background:0 0;-webkit-mask:none;mask:none}.dot.fixed:before,.dot.fixed:after{content:"";-webkit-mask:var(--m) center/contain no-repeat;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;position:absolute;inset:0}.dot.fixed{width:22px;height:22px}.dot.fixed:before{--m:var(--m-ring);background:var(--pos)}.dot.fixed:after{--m:var(--m-check);background:var(--pos);inset:4.5px}.dot.fixed.stamp:before,.dot.fixed.stamp:after{animation:.55s cubic-bezier(.2,1.4,.4,1) both stamp}@keyframes stamp{0%{opacity:0;transform:scale(2.2)rotate(-18deg)}60%{opacity:1}to{opacity:1;transform:none}}.kicker{letter-spacing:.09em;text-transform:uppercase;color:var(--subj,var(--pen));font-size:.78rem;font-weight:700}h1{font-family:var(--f-title);text-wrap:balance;margin:0;font-size:clamp(1.8rem,6vw,2.5rem);font-weight:400;line-height:1.1}.hd{flex-direction:column;gap:6px;margin:8px 0 16px;display:flex}.summary,.sheet-sum{color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin:4px 0 0;font-weight:700;display:flex}.summary span,.sheet-sum span{align-items:center;gap:6px;display:inline-flex}.unsure{color:var(--muted);margin:8px 0 0;font-size:.92rem}.unsure a{white-space:nowrap;font-weight:700}.unsure-one{color:var(--muted);margin-top:4px;font-weight:400;display:block}.sheets{flex-direction:column;gap:8px;display:flex}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 14px;padding:12px 16px;display:grid}.sheet>*{grid-column:1;min-width:0}.sheet>.score{grid-area:1/2/span 5;align-self:center}.sheet:hover{border-color:var(--pen)}.sheet-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.sheet-title{font-family:var(--f-display);font-size:1.15rem;font-weight:600;line-height:1.25}.sheet-sum{font-size:.92rem}.parent-read{border-left:3px solid var(--pen);color:var(--ink);max-width:62ch;margin:6px 0 12px;padding:2px 0 2px 12px;font-style:italic}.sheet-read{color:var(--muted);border-left:2px solid var(--pen);padding-left:10px;font-size:.92rem;font-style:italic}.topline{justify-content:space-between;align-items:center;gap:8px;min-height:48px;margin-inline:-10px;display:flex}.topline .back-link{text-overflow:ellipsis;min-width:0;max-width:70%;line-height:30px;display:block;overflow:hidden}.topline-logo{padding:6px 10px;display:block}.chips{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;min-height:40px;color:var(--muted);border-radius:999px;padding:6px 16px;font-weight:700}.chip[aria-checked=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.continue{border-radius:18px;justify-content:space-between;width:100%;min-height:60px;margin-bottom:22px;padding-inline:24px;font-size:1.2rem}.continue small{opacity:.85;font-size:.85rem;font-weight:700}.sec{margin-bottom:20px}.sec h2{font-family:var(--f-title);align-items:baseline;gap:10px;margin:0 0 6px;font-size:1.15rem;font-weight:400;display:flex}.sec h2 span{font-family:var(--f-math);color:var(--pen);font-size:.95rem}.rows{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.rows li+li{border-top:1px solid var(--line)}.prow{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 14px;display:flex}.prow:hover,.prow.cur{background:var(--pen-soft)}.prow-q{min-width:0;font-family:var(--f-math);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:1.05rem;overflow:hidden}.prow-q.text{font-family:var(--f-body);font-size:1rem}.prow-q .frac{font-size:1em}.done-mark{color:var(--pos);font-weight:800}.pv{flex-direction:column;max-width:760px;min-height:100dvh;margin:0 auto;display:flex}.pv-head{z-index:5;background:var(--surface);border-bottom:1px solid var(--line);padding:env(safe-area-inset-top) 0 0 5px;--edge:var(--line);position:sticky;top:0}.pv-head:before{content:"";left:0;top:env(safe-area-inset-top);background:var(--edge);width:5px;position:absolute;bottom:0}.pv-head.missed{--edge:var(--neg)}.pv-head.skipped{--edge:var(--skip)}.pv-head.got,.pv-head.fixed{--edge:var(--pos)}.pv-bar{align-items:center;gap:6px;padding:4px 6px;display:flex}.pv-q{cursor:pointer;text-align:left;background:0 0;border:0;flex:auto;align-items:center;gap:8px;min-width:0;min-height:44px;padding:0 4px;display:flex}.pv-q-text{min-width:0;font-family:var(--f-math);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-size:1.1rem;overflow:hidden}.pv-q-text.text{font-family:var(--f-body);font-weight:700}.pv-q-more{color:var(--muted);flex:none;transition:transform .15s}.pv-q-more.open{transform:rotate(180deg)}.pv-q-text .frac{font-size:1em}.pv-more{color:var(--muted);flex-direction:column;gap:6px;padding:0 16px 12px;font-size:.95rem;display:flex}.pv-more p{margin:0}.pv-more .word{color:var(--ink);font-size:1.02rem}.pv-more .word p{margin:0}.choices{flex-direction:column;gap:4px;margin:6px 0 0;padding:0;list-style:none;display:flex}.choices b{color:var(--pen);margin-right:2px}.dir>summary{min-height:36px;color:var(--pen);cursor:pointer;align-items:center;gap:4px;font-weight:700;list-style:none;display:inline-flex}.dir>summary::-webkit-details-marker{display:none}.dir[open]>summary .ic{transform:rotate(180deg)}.dir .prompt{margin-top:2px}.mine{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hers{font-family:var(--f-math);color:var(--ink)}.hers.missed{color:var(--neg);margin-left:.25em;display:inline-block;position:relative}.hers.missed:after{content:"";background:var(--neg);height:45%;-webkit-mask:var(--m-strike) 0 0/100% 100% no-repeat;-webkit-mask:var(--m-strike) 0 0/100% 100% no-repeat;mask:var(--m-strike) 0 0/100% 100% no-repeat;position:absolute;top:30%;left:-4px;right:-4px;transform:rotate(-3deg)}.hers.got{color:var(--pos)}.pv-main{flex-direction:column;flex:auto;min-height:0;display:flex}.board{background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:22px 22px;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:14px;min-height:260px;padding:24px 16px;display:flex;overflow-x:auto}.caption{background:var(--surface);border-top:1px solid var(--line);margin:0;padding:14px 18px 18px;font-size:1.2rem;line-height:1.5}.pv-foot{z-index:5;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;display:grid;position:sticky;bottom:0}.pv-foot .round{width:52px;height:52px;padding:0;font-size:1.1rem}.pv-foot .next{min-width:120px;min-height:52px}.pv-foot .mid{flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.pv-foot .play{min-height:40px;padding:4px 16px}.pv-foot .where{color:var(--muted);align-items:center;min-height:40px;font-size:.85rem;font-weight:700;display:flex}.dots{flex-wrap:wrap;justify-content:center;gap:5px;display:flex}.dots span{background:var(--line);border-radius:50%;width:8px;height:8px}.dots span.p{border-radius:2px}.dots span.seen{background:var(--pen);opacity:.4}.dots span.on{background:var(--pen)}.turn-card,.practice-card{text-align:center;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:520px;display:flex}.turn-card h2{font-family:var(--f-title);margin:0;font-size:1.7rem;font-weight:400}.turn-card p{color:var(--muted);max-width:32ch;margin:0;font-size:1.1rem}.eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--pen);font-size:.8rem;font-weight:700}.ans{flex-direction:column;align-items:center;gap:10px;display:flex}.ptext{text-align:center;max-width:36ch;font-size:1.2rem}.marks{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px;display:flex}.mark.got.on{border-color:var(--pos);background:var(--pos-soft)}.mark.notyet.on{border-color:var(--skip);background:var(--skip-soft)}.sheet-bg{z-index:20;background:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-panel{background:var(--surface);width:100%;max-width:760px;max-height:75dvh;padding:8px 12px calc(16px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.25s both up;overflow:auto}.sheet-panel .rows{border:0;border-radius:0}.sheet-head{background:var(--surface);z-index:1;justify-content:space-between;align-items:center;padding:4px 6px 8px;display:flex;position:sticky;top:-8px}@keyframes up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.done{justify-content:center;align-items:center;min-height:80dvh;display:flex}.finish{text-align:center;flex-direction:column;align-items:center;gap:14px;display:flex}.finish p{color:var(--muted);margin:0}.eq{font-family:var(--f-math);white-space:nowrap;font-size:clamp(1.2rem,4.2vw,1.85rem);font-weight:500;line-height:1.35}.eq.sm{color:var(--muted);font-size:clamp(1rem,3vw,1.25rem)}.ld{font-family:var(--f-math);white-space:pre;color:var(--ink);margin:0;font-size:clamp(1.15rem,4vw,1.65rem);font-weight:500;line-height:1.5}.ovl{border-top:3px solid var(--ink)}.ul{border-bottom:2px solid var(--ink)}.hot{background:var(--hot);color:inherit;border-radius:4px;font-weight:700}.neg{color:var(--neg);font-weight:700}.pos{color:var(--pos);font-weight:700}.pen{color:var(--pen);font-weight:700}.wrong{color:var(--muted);text-decoration:line-through;-webkit-text-decoration-color:var(--neg);text-decoration-color:var(--neg);text-decoration-thickness:3px}.bar{text-decoration:overline;text-decoration-thickness:2px}.note{color:var(--muted);text-align:center;max-width:44ch;margin:0;font-size:1rem}.verdict{font-family:var(--f-body);letter-spacing:.07em;text-transform:uppercase;vertical-align:middle;border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:700;display:inline-block}.verdict.neg{background:var(--neg-soft)}.verdict.pos{background:var(--pos-soft)}.verdict.pen{background:var(--pen-soft)}.frac{font-family:var(--f-math);vertical-align:middle;flex-direction:column;align-items:center;font-size:2.2rem;line-height:1.15;display:inline-flex}.frac span:first-child{border-bottom:3px solid;padding:0 10px}.fr{vertical-align:middle;flex-direction:column;align-items:center;margin:0 .12em;font-size:.82em;line-height:1.1;display:inline-flex}.fr>span:first-child{border-bottom:2px solid;padding:0 .2em}s{color:var(--muted);-webkit-text-decoration-color:var(--neg);text-decoration-color:var(--neg);text-decoration-thickness:2px}.row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 28px;display:flex}.rules{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;max-width:520px;display:grid}.rule{background:var(--surface);border:1px solid var(--line);font-family:var(--f-math);border-radius:12px;flex-direction:column;gap:2px;padding:12px 16px;font-size:1.3rem;display:flex}.rule small{font-family:var(--f-body);margin-top:6px;font-size:.92rem;font-weight:700}.nl{width:100%;max-width:620px;height:auto;overflow:visible}.nl .axis{stroke:var(--ink);stroke-width:2px}.nl .tick{stroke:var(--muted);stroke-width:1.5px}.nl .tick.maj{stroke:var(--ink)}.nl .zero{stroke:var(--ink);stroke-width:3.5px}.nl .tl{fill:var(--muted);font:500 13px var(--f-math);text-anchor:middle}.nl .vl{fill:var(--ink);font:700 15px var(--f-math);text-anchor:middle}.nl .start{fill:var(--ink)}.nl .endd,.nl .vl.end{fill:var(--pen);opacity:0;animation:.3s 1.3s forwards fade}.nl .hop{fill:none;stroke:var(--pen);stroke-width:3px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:1.1s ease-in-out .2s forwards draw}.nl .hl{fill:var(--pen);font:700 15px var(--f-math);text-anchor:middle;opacity:0;animation:.4s 1s forwards fade}.new{animation:.5s both pop}.ld .new{animation:.5s both fade}@keyframes pop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.new,.ld .new,.nl .hop,.nl .hl,.nl .endd,.nl .vl.end,.sheet-panel,.dot.fixed.stamp:before,.dot.fixed.stamp:after,.score .bump{opacity:1;stroke-dashoffset:0;animation:none!important}}@media (max-width:560px){.board{padding:20px 12px}.caption{padding-inline:14px;font-size:1.08rem}.rules{grid-template-columns:minmax(0,1fr)}.pv-foot .next{min-width:0;padding-inline:14px}}.prow-q .frac,.pv-q-text .frac{font-size:.85em;line-height:1.05}.prow-q .frac span:first-child,.pv-q-text .frac span:first-child{border-bottom-width:2px;padding:0 .2em}.board.fit{padding:20px 14px;overflow:hidden}.fit-inner{flex-direction:column;align-items:center;gap:14px;width:max-content;max-width:none;display:flex}.fit-inner .eq{font-size:1.5rem}.fit-inner .eq.sm{white-space:normal;text-align:center;text-wrap:balance;max-width:30ch;font-size:1.05rem}.fit-inner .ld{font-size:1.4rem}.fit-inner .nl{width:560px;max-width:none}.fit-inner .rules{width:460px}.fit-inner .note{max-width:30ch}.practice-card .eq{font-size:clamp(1.8rem,8vw,2.6rem)}.practice-card .ptext{font-size:1.3rem}.fit-inner .verdict{white-space:normal;text-align:center;max-width:16em;line-height:1.3}.narrow{max-width:440px}.muted{color:var(--muted);margin:0}.stack{flex-direction:column;gap:12px;display:flex}.big-btn{width:100%;min-height:54px;font-size:1.05rem}.google-box{--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;justify-content:center;min-height:44px;display:flex}.or{color:var(--muted);align-items:center;gap:12px;font-size:.9rem;display:flex}.or:before,.or:after{content:"";border-top:1px solid var(--line);flex:1}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:.9rem;font-weight:700;display:flex}.field.grow{flex:1}.field input,.inline-add input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;width:100%;min-height:48px;padding:8px 14px;font-size:1rem;font-weight:400}.field input:focus,.inline-add input:focus{outline:3px solid var(--pen-soft);border-color:var(--pen)}.row-fields{flex-wrap:wrap;gap:10px;display:flex}.row-fields .field:not(.grow){width:96px}.alert{background:var(--neg-soft);color:var(--neg);border-radius:12px;margin:0 0 12px;padding:10px 14px;font-weight:700}.ok-note{background:var(--pos-soft);color:var(--pos);border-radius:12px;margin:0;padding:12px 14px;font-weight:700}.card-form{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;align-items:flex-start;gap:12px;margin:18px 0;padding:16px 18px;display:flex}.card-form h2{font-family:var(--f-display);margin:0;font-size:1.15rem;font-weight:600}.card-form p{margin:0}.card-form .row-fields{width:100%}.card-form.tip{border-color:var(--pen);background:var(--pen-soft)}.card-form.soon{border-style:dashed}.inline-add{align-items:center;gap:8px;padding:8px 10px;display:flex}.inline-add input{border-radius:10px;min-height:42px}.inline-add.standalone{margin-top:8px;padding:0}.count{font-family:var(--f-math);color:var(--muted);background:var(--paper);border-radius:999px;padding:2px 10px;font-size:.85rem;font-weight:700}a.prow{color:inherit}.code-input{letter-spacing:.3em;font-family:var(--f-math)!important;font-size:1.4rem!important}.btn.small{min-height:36px;padding:4px 12px;font-size:.9rem}.btn.icon.small{min-width:36px;padding:0}.add-item{align-self:flex-start;margin-top:18px}main.page{flex-direction:column;display:flex}.field-label{color:var(--muted);width:100%;margin-bottom:4px;padding:0;font-size:.9rem;font-weight:700}fieldset.chips{border:0;flex-wrap:wrap;gap:8px;margin:0;padding:0;display:flex}.small-print{margin:0;font-size:.88rem}.login-links{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:center;gap:4px 28px;margin-top:36px;padding-top:14px;display:flex}.login-links a,.login-links .link-btn{text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:inline-flex}.link-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.install-help{text-align:center;flex-basis:100%;margin:0}.app-badge{align-items:center;min-height:44px;display:inline-flex}.app-badge img{width:auto;height:45px;display:block}.login-links .app-badge{flex-basis:100%;justify-content:center;margin-top:6px}.get-app,.wl-get-app .link-btn{text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:inline-flex}.wl-get-app{margin-top:14px;font-weight:700}.wl-get-app .install-help{text-align:left;font-weight:400}.add-photos{align-self:flex-start;margin-top:4px}.thumbs{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin:4px 0;padding:0;list-style:none;display:grid}.thumb{border:1px solid var(--line);background:var(--surface);aspect-ratio:3/4;border-radius:12px;position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb a{height:100%;display:block}.thumb-n{background:var(--ink);color:var(--paper);font-family:var(--f-math);border-radius:999px;padding:1px 8px;font-size:.8rem;font-weight:700;position:absolute;top:6px;left:6px}.thumb-tools{justify-content:space-between;display:flex;position:absolute;bottom:4px;left:4px;right:4px}.thumb-tools .btn{background:color-mix(in srgb,var(--surface) 88%,transparent)}.photos{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));margin:8px 0 18px}.sheet-state{color:var(--pen);font-size:.92rem;font-weight:700}.sheet-state.review{color:var(--skip)}.sheet-state.failed{color:var(--neg)}.waiting{text-align:center;align-items:center;padding:28px 18px}.spinner{border:4px solid var(--pen-soft);border-top-color:var(--pen);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.review .summary{margin-bottom:6px}.sec-prompt{margin:-2px 0 8px;font-size:.92rem}.rcards{flex-direction:column;gap:10px;display:flex}.rcard{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:14px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.rcard.got{border-left-color:var(--pos)}.rcard.missed{border-left-color:var(--neg)}.rcard.skipped{border-left-color:var(--skip)}.rcard.look{box-shadow:0 0 0 2px var(--skip-soft) inset;background:color-mix(in srgb,var(--skip-soft) 35%,var(--surface))}.rcard-q{align-items:baseline;gap:10px;display:flex}.rq{font-family:var(--f-math);overflow-wrap:anywhere;font-size:1.05rem}.rq.text{font-family:var(--f-body)}.rcard-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.rcard-grid .field input{min-height:44px;font-family:var(--f-math)}.right-ans{font-family:var(--f-math);color:var(--ink);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;font-size:1.05rem;font-weight:700;display:flex}.checked{font-family:var(--f-body);color:var(--pos);font-size:.78rem;font-weight:700}.st-chip{min-height:38px;padding:4px 14px}.st-chip.got[aria-checked=true]{background:var(--pos);border-color:var(--pos);color:var(--surface)}.st-chip.missed[aria-checked=true]{background:var(--neg);border-color:var(--neg);color:var(--surface)}.st-chip.skipped[aria-checked=true]{background:var(--skip);border-color:var(--skip);color:var(--surface)}.rnote{margin:0;font-size:.92rem}.flags{color:var(--ink);flex-direction:column;gap:4px;margin:0;padding:0;font-size:.92rem;list-style:none;display:flex}.savebar{padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent,var(--paper) 30%);flex-direction:column;align-items:stretch;margin-top:12px;display:flex;position:sticky;bottom:0}.savebar .btn{width:100%}.savebar-row{gap:10px;display:flex}.savebar-row .btn.primary{flex:1}.savebar-row .see-pages{flex:none;gap:6px;width:auto}.look-first{margin-top:12px}.look-first h2{align-items:center;gap:8px;display:flex}details.check-rest{margin-top:8px}details.check-rest>summary{cursor:pointer;border:1px dashed var(--line);background:var(--surface);color:var(--pen);border-radius:14px;flex-direction:column;gap:2px;padding:12px 14px;font-weight:700;list-style:none;display:flex}details.check-rest>summary::-webkit-details-marker{display:none}details.check-rest>summary small{font-weight:400}details.check-rest[open]>summary{margin-bottom:8px}details.check-rest .when-open,details.check-rest[open] .when-closed{display:none}details.check-rest[open] .when-open{display:inline}.check-photo{display:none}@media (min-width:1200px){main.col.check-wide{max-width:1240px}.review.with-photo{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:24px;display:grid}.with-photo .check-photo{flex-direction:column;gap:8px;height:calc(100dvh - 32px);min-height:0;display:flex;position:sticky;top:16px}.with-photo .review-main .photos,.with-photo .see-pages{display:none}.check-photo-bar{color:var(--muted);align-items:center;gap:4px;font-weight:700;display:flex}.check-photo-bar span{text-align:center;flex:1}.check-photo-bar .btn{color:var(--muted)}.check-photo-img{border:1px solid var(--line);background:var(--surface);border-radius:14px;flex:1;min-height:0;overflow:hidden}.check-photo-img img{object-fit:contain;width:100%;height:100%;display:block}}.steps{counter-reset:none;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:flex}.steps li{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:12px;flex:1;align-items:center;gap:8px;min-width:0;padding:8px 10px;font-size:.88rem;font-weight:700;display:flex}.step-n{width:24px;height:24px;font-family:var(--f-math);border:1.5px solid;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.8rem;display:inline-flex}.step-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.steps li.is-done{color:var(--pos)}.steps li.is-done .step-n{background:var(--pos);border-color:var(--pos);color:var(--surface)}.steps li.is-cur{color:var(--pen);border-color:var(--pen);background:var(--pen-soft)}.steps li.is-cur .step-n{background:var(--pen);border-color:var(--pen);color:var(--surface)}@media (max-width:559px){.steps li{text-align:center;flex-direction:column;gap:4px;padding:8px 4px;font-size:.82rem}}.grow-row{align-items:center;gap:10px;padding:10px 14px;display:flex}.grow-ans{font-family:var(--f-math);flex:none;gap:8px;display:flex}.grow-ans .ans{color:var(--pos);font-weight:700}details.danger{color:var(--muted);margin-top:28px}details.danger summary{cursor:pointer;font-size:.92rem;font-weight:700}details.danger form{flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px;display:flex}.right-ans.text{font-family:var(--f-body);font-size:.95rem;font-weight:400}.rcard-grid .field input.text{font-family:var(--f-body)}.grow-ans.text{font-family:var(--f-body);text-align:right;flex-wrap:wrap;flex:0 55%;justify-content:flex-end}.graded .summary{margin-bottom:12px}.careful{color:var(--muted);background:var(--pen-soft);border-radius:12px;margin:8px 0 12px;padding:10px 14px;font-size:.9rem}details.show-grading{margin-bottom:16px}details.show-grading>summary{cursor:pointer;align-items:center;gap:14px;list-style:none;display:inline-flex}details.show-grading>summary::-webkit-details-marker{display:none}details.show-grading[open]>summary{margin-bottom:4px}details.show-grading .when-open,details.show-grading[open] .when-closed{display:none}details.show-grading[open] .when-open{display:inline}.meter{background:var(--line);border-radius:999px;width:100%;max-width:320px;height:10px;overflow:hidden}.meter>i{background:var(--pen);border-radius:inherit;height:100%;transition:width .6s;display:block}.fit-inner .eq.big,.eq.big{font-size:2.1rem}details.add-more{margin-top:20px}details.add-more>summary{cursor:pointer;color:var(--muted);padding:6px 2px;font-size:.95rem;font-weight:700;list-style:none;display:inline-block}details.add-more>summary::-webkit-details-marker{display:none}details.add-more[open]>summary{margin-bottom:8px}.people{flex-direction:column;gap:8px;margin:0 0 8px;padding:0;list-style:none;display:flex}.people li{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.people li.pending{border-style:dashed}.people .who{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:600}.people .role{color:var(--muted);font-size:.9rem}.field select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;min-height:48px;padding:8px 12px;font-size:1rem}.menu{flex:none;position:relative}.menu>summary{cursor:pointer;min-width:44px;min-height:44px;color:var(--muted);-webkit-user-select:none;user-select:none;border-radius:999px;justify-content:center;align-items:center;font-size:1.3rem;font-weight:800;line-height:1;list-style:none;display:inline-flex}.menu>summary::-webkit-details-marker{display:none}.menu>summary:hover,.menu[open]>summary{background:var(--pen-soft);color:var(--pen)}.menu-panel{z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:2px;min-width:220px;max-width:min(320px,100vw - 32px);padding:6px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 10px 30px #00000024}.menu-panel form{margin:0}.menu-panel hr{border:0;border-top:1px solid var(--line);margin:4px 2px}.menu-item{text-align:left;cursor:pointer;width:100%;min-height:44px;color:var(--ink);background:0 0;border:0;border-radius:10px;flex-wrap:wrap;align-items:center;column-gap:6px;padding:8px 12px;font-size:.98rem;font-weight:700;display:flex}.menu-item:hover{background:var(--pen-soft)}.menu-item.on{color:var(--pen)}.menu-item.on:after{content:" ✓"}.menu-item small{color:var(--muted);flex-basis:100%;font-size:.82rem;font-weight:400}.danger-text{color:var(--neg)}.menu-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 12px 2px;font-size:.75rem;font-weight:700;display:block}.menu-rename{padding:0 6px 6px}.menu-rename .menu-label{padding-left:6px}.menu-row{align-items:center;gap:6px;display:flex}.menu-row input{min-width:0;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;flex:1;min-height:40px;padding:6px 10px;font-size:1rem}.top-menu>summary{min-width:48px;min-height:48px;color:var(--ink)}.top-menu>summary svg{display:block}.year-menu{align-self:flex-start;margin-left:-8px}.year-menu>summary{min-height:36px;padding:2px 8px}.year-menu .menu-panel{left:0;right:auto}.title-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.title-row h1,.title-row h2{min-width:0}.sec .title-row{margin-bottom:4px}.sec .title-row h2{margin:0}.rows.menus{overflow:visible}.rows.menus>li:first-child{border-radius:14px 14px 0 0}.menu-row-li{align-items:center;padding-right:4px;display:flex}.menu-row-li .prow{flex:1;min-width:0}.prow.now{font-weight:700}.prow.now .prow-q:after{content:"Now";letter-spacing:.06em;text-transform:uppercase;color:var(--pen);background:var(--pen-soft);vertical-align:middle;border-radius:999px;margin-left:10px;padding:2px 8px;font-size:.7rem;font-weight:700}details.add-row>summary{cursor:pointer;color:var(--muted);padding:12px 14px;font-size:.95rem;font-weight:700;list-style:none}details.add-row>summary::-webkit-details-marker{display:none}details.add-row[open]>summary{padding-bottom:0}details.archived{margin-top:8px}details.archived>summary{cursor:pointer;color:var(--muted);padding:6px 2px;font-size:.92rem;font-weight:700}details.archived>.rows{opacity:.85;margin-top:6px}.archived-note{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.check{color:var(--ink);align-items:center;gap:8px;font-weight:600;display:flex}.check input{width:22px;height:22px;accent-color:var(--pen)}.sheet-li{position:relative}.sheet-li>.menu{z-index:2;position:absolute;top:6px;right:6px}.kids{flex-direction:column;gap:22px;display:flex}.kid-card{flex-direction:column;display:flex}.kid-head{border-radius:20px;gap:6px;padding:24px 22px}.kid-card .kid-head:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.kid-name{font-family:var(--f-title);font-size:2.1rem;font-weight:400;line-height:1.1}.kid-all{color:var(--pen);margin-top:6px;font-weight:700}.kid-units{border-top:0;border-radius:0 0 20px 20px}.kid-subj{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:0 0 6.5em;font-size:.8rem;font-weight:700;overflow:hidden}.toast{width:fit-content;max-width:calc(100% - 32px);left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;background:var(--ink);color:var(--paper);white-space:nowrap;border-radius:999px;align-items:center;gap:10px;margin:0 auto;padding:6px 8px 6px 18px;font-weight:700;animation:.25s both up;display:flex;position:fixed;box-shadow:0 10px 30px #0003}.toast a{text-decoration:underline}.toast .btn{background:var(--paper);min-height:36px;color:var(--ink);border-color:var(--paper)}.toast-x{opacity:.7;padding:6px 8px;text-decoration:none!important}.flag-btn{color:var(--muted);font-size:1.25rem}.flag-btn.on{color:var(--neg)}.flag-mark{font-size:.9rem}.flag-panel{flex-direction:column;gap:12px;padding-left:16px;padding-right:16px;display:flex}.flag-panel textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);resize:vertical;border-radius:12px;width:100%;padding:10px 14px;font-size:1rem;font-weight:400}.flag-panel textarea:focus{outline:3px solid var(--pen-soft);border-color:var(--pen)}.flagged .prow-q{white-space:normal}.flag-note{color:var(--muted);font-size:.92rem;font-style:italic;display:block}.try-first{color:var(--muted);text-align:center;max-width:44ch;margin:0 auto;padding:10px 18px 0}.unit-actions{margin:-8px 0 16px}.kid-week{color:var(--muted);flex-wrap:wrap;gap:4px 14px;font-size:.9rem;font-weight:700;display:flex}.kid-week span{align-items:center;gap:5px;display:inline-flex}.toast.note{white-space:normal;text-align:left;font-weight:600;line-height:1.3}.card-h{font-family:var(--f-display);margin:0;font-size:1.15rem;font-weight:600}.week-sum{color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin:0;font-weight:700;display:flex}.week-h{color:var(--muted);margin:12px 0 6px;font-size:.95rem;font-weight:700}.answer-box{flex-direction:column;align-items:center;gap:10px;width:100%;display:flex}.answer-row{gap:8px;width:100%;max-width:340px;display:flex}.answer-row input{min-width:0;font:inherit;font-family:var(--f-math);text-align:center;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;flex:1;min-height:52px;padding:8px 12px;font-size:1.3rem}.answer-row input:focus{outline:3px solid var(--pen-soft);border-color:var(--pen)}.signs{gap:12px;display:flex}.btn.sign{font-family:var(--f-math);min-width:64px;font-size:1.6rem}.wrong-msg{color:var(--neg);margin:0;font-weight:700;animation:.25s both up}.right-msg{color:var(--pos);margin:0;font-size:1.15rem;font-weight:800}.more{flex-direction:column;align-items:center;gap:6px;margin-top:4px;display:flex}.other-way{background:var(--surface);flex-direction:column;align-items:center;gap:4px;padding:0 12px 8px;display:flex}.turn-card .other-way{background:0 0;padding:0}.step-extras{background:var(--surface);flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:4px 12px;padding:0 12px 8px;display:flex}.step-extras .other-way{background:0 0;padding:0}.ask-link{color:var(--muted)}.qa-list{flex-direction:column;gap:12px;display:flex}.qa{flex-direction:column;gap:6px;display:flex}.qa p{margin:0;line-height:1.45}.qa-q{background:var(--pen-soft);border-radius:14px 14px 4px;align-self:flex-end;max-width:85%;padding:8px 12px}.qa-a{background:var(--paper);border:1px solid var(--line);border-radius:14px 14px 14px 4px;align-self:flex-start;max-width:92%;padding:8px 12px}html[data-size=large]{font-size:calc(var(--base) + 2px)}html[data-size=xl]{font-size:calc(var(--base) + 4px)}html[data-font=easy]{--f-body:"Lexend",system-ui,sans-serif;--f-display:"Lexend",system-ui,sans-serif;--f-title:"Lexend",system-ui,sans-serif}html[data-font=easy] body{letter-spacing:.03em;word-spacing:.12em;line-height:1.65}.settings{flex-direction:column;gap:18px;margin-top:8px;display:flex}.setting{border:0;flex-direction:column;gap:6px;margin:0;padding:0;display:flex}.setting legend{color:var(--muted);margin-bottom:6px;padding:0;font-size:.9rem;font-weight:700}.seg{flex-wrap:wrap;gap:6px;display:flex}.seg-btn{font:inherit;border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);cursor:pointer;border-radius:12px;padding:8px 16px;font-size:1rem}.seg-btn.on{background:var(--pen-soft);border-color:var(--pen);color:var(--pen);font-weight:700}.sample{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0;padding:12px 14px;line-height:1.5}.check{cursor:pointer;align-items:flex-start;gap:12px;display:flex}.check input{width:22px;height:22px;accent-color:var(--pen);flex:none;margin-top:2px}.check span{flex-direction:column;gap:2px;display:flex}.check small{color:var(--muted);font-size:.9rem;font-weight:400}.settings>.btn{align-self:flex-start}.streak{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:10px;display:flex}.streak-days{gap:6px;margin:0;padding:0;list-style:none;display:flex}.streak-days li{width:28px;color:var(--muted);flex-direction:column;align-items:center;display:flex}.streak-days li span{font-size:1.1rem;line-height:1.4}.streak-days li small{font-size:.7rem;font-weight:700}.pv-tabs{gap:4px;padding:0 10px;display:flex}.pv-tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;flex-wrap:wrap;flex:1 1 0;justify-content:center;align-items:center;gap:0 6px;padding:8px 6px 7px;font-size:.98rem;font-weight:700;display:flex}.pv-tab-sub{color:var(--neg);flex-basis:100%;font-size:.78rem;font-weight:600;line-height:1.3}.pv-tab-sub.fixed{color:var(--pos)}.pv-tab[aria-selected=true]{color:var(--pen);border-bottom-color:var(--pen)}.pv-tab-n{background:var(--pen-soft);color:var(--pen);border-radius:999px;min-width:22px;padding:0 8px;font-size:.8rem}.pv-practice{background:var(--paper)}.plist{flex-direction:column;gap:14px;width:100%;max-width:640px;margin:0 auto;padding:16px 14px 24px;display:flex}.plist-extras{flex-direction:column;align-items:center;gap:2px;display:flex}.plist-extras .more{margin-top:0}.plist-extras .other-way{background:0 0;border:0;align-items:center;margin:0;padding:0}.fix-link{color:var(--muted)}.pcard{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;align-items:center;gap:12px;padding:16px 14px;display:flex}.pcard-top{justify-content:center;align-items:center;gap:6px;min-height:28px;display:flex}.pcard .eq{font-family:var(--f-math);font-size:clamp(1.5rem,6vw,2.1rem)}.pcard .eq,.pcard .ptext{white-space:normal;overflow-wrap:break-word;text-wrap:balance;max-width:100%}.pcard .ptext{font-size:1.15rem;line-height:1.5}.practice-only{margin:-14px auto 18px;display:block}.canvas-course{margin:18px 0}.canvas-course h2{font-family:var(--f-display);margin:0 0 8px;font-size:1.15rem;font-weight:600}.canvas-course h2 .muted{font-size:.95rem;font-weight:400}.canvas-module{margin:0 0 10px}.canvas-module>summary{cursor:pointer;padding:8px 2px;font-weight:700}.canvas-module>summary .muted{font-weight:400}.canvas-course .title-row h2{margin:0}.canvas-group{margin:6px 0 10px}.canvas-quiet{margin-top:20px}.notes-pages{flex-direction:column;gap:12px;margin:8px 0 20px;display:flex}.notes-pages img{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;height:auto;display:block}.photo-open{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.thumb .photo-open{height:100%}.photo-view{z-index:60;color:#fff;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#0a0e18;flex-direction:column;display:flex;position:fixed;inset:0}.photo-bar{align-items:center;gap:4px;padding:6px 8px;display:flex}.photo-bar .btn{color:#fff}.photo-bar .btn:hover{background:#ffffff1f}.photo-n{flex:1;padding-left:10px;font-weight:700}.photo-strip{scroll-snap-type:x mandatory;scrollbar-width:none;flex:1;min-height:0;display:flex;overflow:auto hidden}.photo-strip::-webkit-scrollbar{display:none}.photo-strip.zoomed{overflow-x:hidden}.photo-slide{scroll-snap-align:center;touch-action:pan-x pan-y;flex:0 0 100%;justify-content:center;align-items:center;height:100%;display:flex;overflow:auto}.zoomed .photo-slide{display:block}.photo-slide img{object-fit:contain;-webkit-user-select:none;user-select:none;background:#fff;max-width:100%;max-height:100%;margin:auto;display:block}.photo-prev,.photo-next{color:#fff;background:#ffffff24;border-color:#0000;margin-top:-24px;position:absolute;top:50%}.photo-prev{left:max(10px,env(safe-area-inset-left))}.photo-next{right:max(10px,env(safe-area-inset-right))}.photo-prev:disabled,.photo-next:disabled{opacity:0;pointer-events:none}@media (hover:none){.photo-prev,.photo-next{display:none}}.canvas-row input[type=checkbox]{width:22px;height:22px;accent-color:var(--pen);flex:none;margin:0}.canvas-row small{font-weight:400}.pick-bar{z-index:20}.pick-row .grow-input{min-width:0;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;flex:1;min-height:44px;padding:6px 10px;font-size:1rem}.pick-row select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;min-height:44px;padding:6px 8px;font-size:.95rem}.alert p{margin:0 0 4px}.families>li{align-items:flex-start}.fam-stats{margin-top:4px;font-size:.88rem;font-weight:400}.fam-members{flex-direction:column;gap:2px;margin:8px 0 0;padding:0;font-weight:400;list-style:none;display:flex}.fam-members>li{justify-content:space-between;align-items:center;gap:8px;display:flex}.fam-members .menu>summary{min-width:36px;min-height:36px}.admin-link{text-align:center;margin-top:24px}.topline-end{align-items:center;gap:2px;display:flex}.pv-bar .top-menu>summary{min-width:44px}.privacy h2{font-family:var(--f-display);margin:22px 0 6px;font-size:1.15rem;font-weight:600}.privacy p,.privacy li{line-height:1.5}.privacy ul{flex-direction:column;gap:6px;margin:0 0 8px;padding-left:20px;display:flex}.apple-btn{color:#fff;background:#000;border-color:#000}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .apple-btn{color:#000;background:#fff;border-color:#fff}}:root[data-theme=dark] .apple-btn{color:#000;background:#fff;border-color:#fff}.web-apple{align-self:center;width:100%;max-width:320px;min-height:42px;font-size:.95rem;font-weight:600}.logo{max-width:100%;height:auto;color:var(--ink);font-family:var(--f-display);margin-bottom:6px;display:block}.typed-rows{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.typed-rows li{align-items:center;gap:8px;display:flex}.typed-rows input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;flex:auto;min-width:0;min-height:44px;padding:6px 12px;font-size:1rem}.typed-rows input:focus{outline:3px solid var(--pen-soft);border-color:var(--pen)}.typed-rows .typed-a{flex:0 0 7.5em}.typed-n{text-align:right;color:var(--muted);flex:0 0 1.6em;font-weight:700}.btn.add-typed{align-self:flex-start}.subject-chips .chip{min-height:36px;padding:4px 14px}.other-way{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:10px;margin-top:36px;padding-top:20px;display:flex}.welcome{--wide:1040px;--hand:"Caveat","Bradley Hand",cursive;--serif:"Young Serif",Georgia,serif;--red-margin:color-mix(in srgb,var(--neg) 35%,transparent);padding-block:calc(4px + env(safe-area-inset-top)) calc(32px + env(safe-area-inset-bottom));background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px}.welcome .col{max-width:var(--wide)}.wl-margin{border-left:2px solid var(--red-margin);margin-left:clamp(8px,4vw,56px)}.wl-bar{justify-content:space-between;align-items:center;min-height:60px;display:flex}.wl-signin{border-bottom:2px solid var(--ink);padding:10px 0 2px;font-weight:700}.wl-hero{align-items:center;gap:40px;padding-block:28px 52px;display:grid}.wl-pitch{flex-direction:column;gap:18px;display:flex}.welcome h1{font-family:var(--serif);font-size:clamp(2.4rem,8vw,4.3rem);font-weight:400;line-height:1.06}.hl{background:linear-gradient(transparent 54%,var(--hot) 54%,var(--hot) 92%,transparent 92%);-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-inline:.06em}.wl-lead{color:var(--muted);max-width:34em;margin:0;font-size:1.18rem}.wl-cta{flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:6px;display:flex}.wl-btn{background:var(--ink);min-height:54px;color:var(--paper);box-shadow:4px 4px 0 var(--pen);border-radius:8px;align-items:center;padding:0 26px;font-size:1.05rem;font-weight:700;display:inline-flex}.wl-btn:hover{box-shadow:5px 5px 0 var(--pen);transform:translate(-1px,-1px)}.scribble{font-family:var(--hand);color:var(--neg);font-size:1.55rem;font-weight:700;display:inline-block;transform:rotate(-3deg)}.wl-sheet{background:var(--surface);border:1px solid var(--line);width:100%;max-width:440px;box-shadow:0 16px 32px -20px color-mix(in srgb,var(--ink) 45%,transparent);justify-self:center;margin:0 6px 0 0;padding:22px 22px 24px;position:relative;transform:rotate(1.2deg)}.wl-sheet figcaption{font-family:var(--hand);color:var(--muted);font-size:1.6rem;font-weight:600}.wl-sheet ol{flex-direction:column;gap:12px;margin:10px 0 0;padding:0;list-style:none;display:flex}.wl-sheet li{font-family:var(--f-math);border-bottom:1px dashed var(--line);white-space:nowrap;align-items:center;gap:10px;padding-bottom:10px;font-size:1.05rem;display:flex}.wl-sheet .n{color:var(--muted);width:1.5em;font-size:.85rem}.wl-sheet .kid{font-family:var(--hand);font-size:1.7rem;line-height:1}.wl-sheet .kid.wrong{text-decoration:line-through;-webkit-text-decoration-color:var(--neg);text-decoration-color:var(--neg);text-decoration-thickness:2px}.wl-sheet .fix{font-family:var(--hand);color:var(--neg);font-size:1.55rem;font-weight:700;line-height:1}.wl-sheet .mark{margin-left:auto;font-size:1.5rem;font-weight:700;line-height:1}.wl-sheet .mark.ok{color:var(--pos)}.wl-sheet .mark.no{color:var(--neg)}.wl-score{border:3px solid var(--neg);width:74px;height:74px;font-family:var(--hand);color:var(--neg);background:color-mix(in srgb,var(--surface) 75%,transparent);border-radius:50%;place-items:center;font-size:1.9rem;font-weight:700;display:grid;position:absolute;top:-20px;right:-8px;transform:rotate(-10deg)}.wl-sec{padding-block:36px}.wl-sec h2{font-family:var(--serif);margin:0 0 20px;font-size:clamp(1.7rem,5vw,2.4rem);font-weight:400}.wl-steps{counter-reset:step;gap:16px;margin:0;padding:0;list-style:none;display:grid}.wl-steps li{counter-increment:step;background:var(--surface);border:1px solid var(--line);border-radius:4px;flex-direction:column;gap:4px;padding:18px 20px;display:flex}.wl-steps li:before{content:counter(step) ".";font-family:var(--hand);color:var(--pen);font-size:2.1rem;font-weight:700;line-height:1}.wl-steps b{font-size:1.15rem}.wl-steps p{color:var(--muted);margin:0}.wl-story{gap:12px;display:grid}.wl-story p{font-family:var(--serif);max-width:30em;margin:0;font-size:clamp(1.3rem,3.6vw,1.65rem);line-height:1.4}.wl-sign{font-family:var(--hand);color:var(--pen);font-size:1.9rem;font-weight:700}.wl-sticky{background:var(--skip-soft);max-width:720px;box-shadow:0 14px 26px -18px color-mix(in srgb,var(--ink) 50%,transparent);padding:22px 24px;transform:rotate(-.6deg)}.wl-sticky h2{font-family:var(--hand);color:var(--skip);margin-bottom:6px;font-size:2.3rem;font-weight:700}.wl-sticky ul{flex-direction:column;gap:10px;display:flex}.wl-sticky li{padding-left:28px;position:relative}.wl-sticky li:before{content:"✓";color:var(--pos);font-size:1.15rem;font-weight:800;position:absolute;top:-2px;left:2px}.wl-end{flex-direction:column;align-items:flex-start;display:flex}.wl-end h2{margin-bottom:14px}.wl-foot{border-top:2px solid var(--ink);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px 24px;margin-top:8px;padding-top:24px;font-size:.95rem;display:flex}.wl-links{flex-wrap:wrap;gap:8px 24px;display:flex}.wl-links a{text-underline-offset:3px;padding-block:6px;text-decoration:underline}@media (min-width:860px){.wl-hero{grid-template-columns:1.15fr 1fr;gap:56px;padding-block:48px 64px}.wl-steps{grid-template-columns:repeat(3,1fr)}.wl-story{grid-template-columns:1fr auto;align-items:end;gap:32px}}@media (prefers-reduced-motion:reduce){.wl-btn:hover{transform:none}}.tester .card-form select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;max-width:100%;min-height:44px;padding:6px 8px;font-size:.95rem}.tester .field{width:100%}.tester-row{flex-wrap:wrap;align-items:flex-end;gap:10px;width:100%;display:flex}.tester-row .field{width:auto}.small-print{font-size:.85rem}.tester-scroll{margin:12px 0 24px;overflow-x:auto}.tester-table{border-collapse:collapse;min-width:100%;font-size:.92rem}.tester-table th,.tester-table td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:6px 8px}.tester-table th{background:var(--surface);font-size:.82rem}.tester-table td.off{background:var(--neg-soft);color:var(--neg);font-weight:700}.tester-step{flex-direction:column;gap:6px;width:100%;display:flex}.tester-step p{margin:0}.tester-board{border:1px solid var(--line);border-radius:12px;min-height:120px}.ai-models{margin:0 0 20px}.ai-models .menu-row select{min-width:0;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;flex:1;min-height:40px;padding:6px 10px;font-size:1rem}.tester-history{margin:24px 0}.tester-history h2{font-family:var(--f-display);flex:1;margin:0;font-size:1.15rem;font-weight:600}.tester-photo summary{cursor:pointer;color:var(--pen);font-size:.9rem}.tester-photo img{border:1px solid var(--line);border-radius:8px;max-width:100%;max-height:70vh;margin-top:8px;display:block}.tester-more .tester-step{min-width:300px;margin:8px 0}.tester-more summary{cursor:pointer;color:var(--pen);font-size:.85rem}.tester-more ul,.tester-more ol{margin:6px 0;padding-left:20px;font-size:.88rem}.check-btn{align-self:flex-start;gap:8px;margin:4px 0 20px}.drop{border:2px dashed var(--line);background:var(--surface);width:100%;min-height:180px;color:var(--pen);cursor:pointer;text-align:center;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:24px 16px;display:flex}.drop svg{width:36px;height:36px}.drop b{color:var(--ink);font-size:1.15rem}.drop small{color:var(--muted);max-width:32ch;font-size:.9rem}.drop:hover,.upload.dragging .drop{border-color:var(--pen);background:var(--pen-soft)}.drop-hint{display:none}@media (hover:hover) and (pointer:fine){.drop-hint{display:inline}}.upload.dragging .thumbs{outline:2px dashed var(--pen);outline-offset:6px;border-radius:12px}.thumb-add{background:var(--pen-soft);border-style:dashed}.thumb-add button{width:100%;height:100%;color:var(--pen);cursor:pointer;background:0 0;border:0;font-size:2rem}.where{border:0;flex-direction:column;gap:12px;margin:0;padding:0;display:flex}.where .field-label{margin-bottom:0}.needs-check{margin-bottom:24px}.needs-check .prow-q small{font-weight:400}.prow.up-next{box-shadow:inset 5px 0 0 var(--neg)}.prow.up-next .kid-subj{color:var(--neg)}.prow.up-next .prow-q{font-weight:700}.fix-goal{background:var(--neg-soft);color:var(--ink);text-align:center;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 10px;max-width:40ch;margin:0;padding:8px 14px;font-size:.95rem;display:flex}.fix-goal.fixed-it{background:var(--pos-soft);color:var(--pos);font-weight:700}.fix-goal .btn{text-underline-offset:3px;min-height:36px;padding-inline:8px;text-decoration:underline}.plist .fix-goal{align-self:center}.step-extras .fix-goal{margin:4px 0}.side-wrap,.side-rail,.pane-edge,.pane-tab,.list-rail,.nav-dots{display:none}@media (min-width:1000px){.shell .check-btn{display:none}.shell{grid-template-columns:var(--side-w,264px) minmax(0,1fr);min-height:100dvh;display:grid}.shell-main{min-width:0}.side-wrap{z-index:40;height:100dvh;display:block;position:sticky;top:0}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:14px;height:100%;padding:14px;display:flex;overflow-y:auto}.side-top{align-items:center;gap:2px;display:flex}.side-logo{min-width:0;padding:2px 8px 4px;display:block;overflow:hidden}.side-toggle{color:var(--muted);flex:none}html[data-side=hidden] .shell{grid-template-columns:72px minmax(0,1fr)}html[data-side=hidden] .side-rail{z-index:39;background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:8px;height:100dvh;padding:14px;display:flex;position:sticky;top:0}.side-rail .btn{color:var(--muted)}html[data-side=hidden] .side-wrap{width:var(--side-w,264px);transition:transform .18s;position:fixed;left:0;transform:translate(-100%)}html[data-side=hidden] .side-wrap.peek{transform:none;box-shadow:0 10px 40px #0003}.pane-edge{cursor:col-resize;z-index:41;touch-action:none;width:10px;display:block;position:absolute;top:0;bottom:0;right:-5px}.pane-edge:after{content:"";border-radius:2px;transition:background .12s;position:absolute;inset:0 4px}.pane-edge:hover:after,.pane-edge:focus-visible:after,html.resizing .pane-edge:after{background:var(--pen)}.pane-edge:focus-visible{outline:none}html.resizing,html.resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}html[data-side=hidden] .side-wrap:not(.peek) .pane-edge{display:none}.pane-tab{border:1px solid var(--line);background:var(--surface);width:26px;height:26px;color:var(--muted);cursor:pointer;z-index:42;opacity:0;border-radius:50%;justify-content:center;align-items:center;margin-top:-13px;padding:0;transition:opacity .12s;display:flex;position:absolute;top:50%;right:-13px;box-shadow:0 1px 4px #0000001f}.side-wrap:hover .pane-tab,.pv-list:hover~.pane-tab,.pane-edge:hover+.pane-tab,.pane-tab:hover,.pane-tab:focus-visible{opacity:1}.pane-tab:hover{color:var(--pen);border-color:var(--pen)}.side-wrap.peek .pane-tab,html.resizing .pane-tab{display:none}.pane-tab.pane-open{opacity:1}html.shutting-side .sidebar,html.shutting-list .pv-list{opacity:.4}.pv-wrap>.pane-edge,.pv-wrap>.pane-tab{display:none}.side-check{align-self:stretch;gap:8px;min-height:44px;font-size:.95rem}.side-kids{flex-direction:column;flex:1 0 auto;gap:14px;display:flex}.side-kid{flex-direction:column;gap:2px;display:flex}.side-item{text-align:left;width:100%;color:var(--ink);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:10px;padding:7px 10px;font-size:.95rem;font-weight:700;line-height:1.3;display:block;overflow:hidden}.side-item:hover{background:var(--pen-soft)}.side-item.on{background:var(--pen-soft);color:var(--pen)}.side-kid-name{font-family:var(--f-title);font-size:1.15rem;font-weight:400}.side-subj{flex-direction:column;margin-top:4px;display:flex}.side-subj-name{letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding:4px 10px 2px;font-size:.72rem;font-weight:700}.side-unit{padding-left:18px;font-weight:400}.side-unit.on{font-weight:700}.side-foot{border-top:1px solid var(--line);flex-direction:column;gap:0;padding-top:10px;display:flex}.side-foot .side-item{color:var(--muted)}.side-foot .side-item.on{color:var(--pen)}.app-top .top-menu,.shell .top-menu:not(.has-own),.shell .top-menu .nav-common,.shell .nav-bars{display:none}.shell .nav-dots{display:block}.pv-q-text{white-space:normal}.home-top,.home-check{display:none}}.pv-list{display:none}@media (min-width:1280px){.pv-wrap{grid-template-columns:var(--list-w,320px) minmax(0,1fr);display:grid;position:relative}.pv-wrap>.pane-edge{right:auto;left:calc(var(--list-w,320px) - 5px);display:block}.pv-wrap>.pane-tab{right:auto;left:calc(var(--list-w,320px) - 13px);display:flex;position:absolute;top:50dvh}html[data-list=hidden] .pv-wrap{grid-template-columns:64px minmax(0,1fr)}html[data-list=hidden] .pv-list,html[data-list=hidden] .pv-wrap>.pane-edge,html[data-list=hidden] .pv-wrap>.pane-tab,.pv-wrap>.pane-open{display:none}html[data-list=hidden] .pv-wrap>.pane-open{display:flex;left:51px}html[data-list=hidden] .list-rail{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:2px;height:100dvh;padding:14px 10px;display:flex;position:sticky;top:0;overflow-y:auto}.list-rail>.btn{color:var(--muted);margin-bottom:8px}.rail-p{width:44px;font-family:var(--f-math);color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:.8rem;font-weight:700;display:flex}.rail-p:hover{background:var(--pen-soft)}.rail-p.cur{background:var(--pen-soft);color:var(--pen)}.rail-p .dot{width:13px;height:13px}.pv-list{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;height:100dvh;display:flex;position:sticky;top:0;overflow-y:auto}.pv-list-head{border-bottom:1px solid var(--line);align-items:center;gap:4px;padding:14px 10px 10px;display:flex}.pv-list-head .btn{color:var(--muted)}.pv-list-head b{font-family:var(--f-title);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.1rem;font-weight:400;line-height:1.2;overflow:hidden}.pv-list .rows{background:0 0;border:0;border-radius:0}.pv-list .prow{min-height:46px;padding:6px 14px}.pv-list .prow.cur{box-shadow:inset 4px 0 0 var(--pen)}.pv-wrap .pv{width:100%;max-width:900px}}.ic{vertical-align:-.18em;flex:none}.btn .ic{vertical-align:0}.back-link .ic{margin-right:2px}.flag-mark{color:var(--neg);display:inline-flex}.flag-mark.warn,.warn-ic{color:var(--skip)}.done-mark{color:var(--pos);display:inline-flex}.flag-ic{color:var(--neg);vertical-align:-.12em}.right-msg .ic{vertical-align:-.2em}.pv-tab-n .ic{vertical-align:-.15em}.snd{color:var(--muted)}.snd[aria-pressed=true]{color:var(--pen)}.pv-st{display:none}@media (min-width:560px){.pv-q>.dot{display:none}.pv-st{display:inline-block}}@media (max-width:559px){.pv-q.word .pv-q-text,.pv-q.word>.dot{display:none}.pv-q.word .pv-st{display:inline-block}}.sheet{position:relative}.score{font-family:var(--f-hand);border:2px solid;border-radius:12px;flex-direction:column;align-items:center;gap:1px;padding:4px 10px;font-size:1.7rem;font-weight:700;line-height:.9;display:flex;transform:rotate(-4deg)}.sheet-li.is-done .sheet-title{color:var(--muted)}.score.inline{font-size:1.45rem}.sheet>.score{padding:3px 9px;font-size:1.45rem}.score small{font-family:var(--f-body);letter-spacing:.02em;font-size:.68rem;font-weight:700;line-height:1}.score.got{color:var(--pos)}.score.ok{color:var(--skip)}.score.missed{color:var(--neg)}.score.all-fixed{color:var(--pos)}.score.all-fixed s{opacity:.75;text-decoration:none;position:relative}.score.all-fixed s.got{color:var(--pos)}.score.all-fixed s.ok{color:var(--skip)}.score.all-fixed s.missed{color:var(--neg)}.score.all-fixed s:after{content:"";border-top:2.5px solid var(--pos);border-radius:2px;position:absolute;top:50%;left:-4px;right:-4px;transform:rotate(-12deg)}.score.all-fixed small{align-items:center;gap:2px;margin-top:2px;display:inline-flex}.sheet-li>.sheet{padding-right:52px}.continue-go{align-items:center;gap:10px;display:inline-flex}.sheet{grid-template-columns:auto minmax(0,1fr);column-gap:18px}.sheet>*{grid-column:2}.sheet>.sheet-pic{grid-area:1/1/span 6;align-self:center;margin:2px 14px 6px 0;position:relative}.thumb{aspect-ratio:17/22;border:1px solid var(--line);background:#fff;border-radius:3px;width:60px;display:block;overflow:hidden;transform:rotate(-3deg);box-shadow:0 1px 3px #00000024}.thumb img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.sheet-li:nth-child(2n) .thumb{transform:rotate(2deg)}.thumb-lined{background:linear-gradient(90deg,#0000 11px,#c3372c73 11px 12px,#0000 12px),repeating-linear-gradient(#fff 0 9px,#c9d6ef 9px 10px) 0 6px;width:100%;height:100%;display:block}.sheet-pic>.score{background:var(--surface);border-radius:9px;padding:2px 6px;font-size:1.12rem;position:absolute;bottom:-8px;right:-16px;transform:rotate(-6deg)}.sheet-pic>.score small{font-size:.58rem}.sheet-pic>.score.all-fixed small{gap:0;font-size:0}.sheet-pic>.score.all-fixed small svg{width:12px;height:12px}@media (min-width:700px){.thumb{width:68px}}.rows.marg{position:relative}.rows.marg:before{content:"";border-left:1.5px solid var(--neg);opacity:.35;pointer-events:none;position:absolute;top:0;bottom:0;left:53px}.rows.marg .tag{text-align:center;min-width:2.6em}.done-mark.practiced{background:var(--skip);width:15px;height:15px;-webkit-mask:var(--m-star) center/contain no-repeat;-webkit-mask:var(--m-star) center/contain no-repeat;mask:var(--m-star) center/contain no-repeat}.title-row>.score{flex:none;margin:4px 4px 0 0}.score .bump{animation:.6s cubic-bezier(.2,1.4,.4,1) .15s both bump}@keyframes bump{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}.subj-dot{background:var(--subj,var(--pen));vertical-align:.08em;border-radius:50%;width:9px;height:9px;margin-right:8px;display:inline-block}.kid-units .prow[style]{box-shadow:inset 4px 0 0 var(--subj)}.kid-units .prow[style] .kid-subj{color:var(--subj)}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:6px;padding:28px 16px 12px;display:flex}.empty svg{width:120px;height:90px;color:var(--ink);opacity:.75;margin-bottom:6px}.empty svg .acc{stroke:var(--neg)}.empty svg .gold{fill:var(--hot);stroke:var(--skip)}.empty p{max-width:34ch;margin:0}.empty .btn{margin-top:10px}.streak-days .hstar{width:22px;height:22px;display:block}.streak-days .hstar path{fill:var(--hot);stroke:var(--skip);stroke-width:1.8px;stroke-linejoin:round;stroke-linecap:round}.tour-bg{z-index:60;background:#00000073;justify-content:center;align-items:center;padding:16px;animation:.2s both fade;display:flex;position:fixed;inset:0}.tour{background:var(--surface);border:1px solid var(--line);width:100%;max-width:440px;box-shadow:5px 5px 0 var(--pen);border-radius:20px;padding:8px 0 16px;animation:.25s both up}.tour-strip{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;display:flex;overflow-x:auto}.tour-strip::-webkit-scrollbar{display:none}.tour-card{scroll-snap-align:center;text-align:center;flex-direction:column;flex:0 0 100%;align-items:center;gap:8px;padding:24px 24px 8px;display:flex}.tour-art{background:var(--pen-soft);width:84px;height:84px;color:var(--pen);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:12px 12px;background-color:var(--pen-soft);border-radius:50%;place-items:center;margin-bottom:8px;display:grid}.tour-card h2{font-family:var(--f-title);text-wrap:balance;margin:0;font-size:1.6rem;font-weight:400;line-height:1.15}.tour-card p{color:var(--muted);max-width:34ch;margin:0}.tour-warn{vertical-align:-2px;color:var(--skip)}.tour-dots{margin:12px 0 4px}.tour-foot{justify-content:space-between;align-items:center;gap:12px;padding:8px 20px 0;display:flex}.tour-foot .btn.primary{min-width:120px}@media (max-width:559px){.tour-bg{align-items:flex-end;padding:0}.tour{max-width:none;box-shadow:none;padding-bottom:calc(16px + env(safe-area-inset-bottom));border-width:1px 0 0;border-radius:20px 20px 0 0}}@media (prefers-reduced-motion:reduce){.tour,.tour-bg{animation:none}}.tally{font-family:var(--f-hand);color:var(--pos);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:1.35rem;font-weight:700;line-height:1.1;display:inline-flex}.tally-marks{gap:2px;display:inline-flex}.tally-marks path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round}.print-page{max-width:820px;padding:16px max(16px,env(safe-area-inset-left)) 48px;margin:0 auto}.print-bar{margin:calc(env(safe-area-inset-top) + 4px) 0 16px;flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.print-bar .btn.primary{margin-left:auto}.print-note{margin-left:auto;font-size:.9rem}.print-sheet{--ink:#1a2342;--muted:#56627f;--line:#cbd5e6;--pen:#2a57c4;--pen-soft:#e2eafb;--hot:#ffef9e;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:6px;margin-bottom:24px;padding:40px 44px;box-shadow:0 2px 10px #00000014}.print-head{margin-bottom:20px}.print-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.8rem;font-weight:700}.print-head h1{font-family:var(--f-title);margin:4px 0 0;font-size:1.7rem;font-weight:400;line-height:1.2}.print-name{gap:24px;margin:18px 0 0;display:flex}.print-name span{border-bottom:1.5px solid var(--ink);color:var(--muted);flex:1;padding-bottom:2px;font-size:.85rem}.print-name span:last-child{flex:0 0 30%}.print-group{margin-top:22px}.print-group h2{color:var(--muted);break-after:avoid;align-items:center;gap:8px;margin:0 0 6px;font-size:.95rem;display:flex}.print-qs{margin:0;padding-left:1.8em}.print-qs li{break-inside:avoid;padding:10px 0 6px}.print-q{font-size:1.15rem;display:block}.print-qs li:not(.word) .print-q{font-family:var(--f-math)}.print-work{height:84px;display:block}.print-qs li.word .print-work{background:linear-gradient(transparent 31px,var(--line) 31px,var(--line) 32px,transparent 32px) 0 0/100% 32px;height:64px}.print-answer{width:min(60%,320px);color:var(--muted);align-items:flex-end;gap:8px;margin-left:auto;font-size:.85rem;display:flex}.print-answer:after{content:"";border-bottom:1.5px solid var(--ink);flex:1}.print-as{columns:2 260px;column-gap:32px;margin:0;padding-left:1.8em}.print-as li{break-inside:avoid;margin-bottom:10px}.print-as b{margin-right:8px}.print-as li:not(.word) b{font-family:var(--f-math)}.print-as .muted{font-size:.85rem;display:block}@media (max-width:559px){.print-sheet{padding:24px 18px}}.shell-main.swiping{background:var(--paper);will-change:transform;box-shadow:-8px 0 24px #0a14282e}@media print{@page{margin:16mm 14mm}html,body{background:#fff!important}body:before,.print-bar{display:none!important}.print-page{max-width:none;margin:0;padding:0}.print-sheet{box-shadow:none;border:0;border-radius:0;margin:0;padding:0}.print-key{break-before:page}}.chip-note{color:var(--muted);border:1px dashed var(--line);border-radius:12px;margin:-4px 0 12px;padding:8px 12px;font-size:.9rem}.wr-sec{margin:18px 0}.wr-sec h2{font-family:var(--f-title);align-items:center;gap:8px;margin:0 0 8px;font-size:1.15rem;font-weight:400;display:flex}.wr-sec h2 .ic{color:var(--pen)}.wr-sec h2 .wr-ok{color:var(--pos)}.wr-good{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:0;padding:12px 14px;list-style:none}.wr-good li{padding:4px 0}.wr-good li+li{border-top:1px solid var(--line);margin-top:4px;padding-top:8px}.wr-fixes{gap:10px;margin:0;padding:0;list-style:none;display:grid}.wr-fix{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.wr-fix.wr-done{opacity:.65}.wr-fix.wr-done .wr-head b{text-decoration:line-through;text-decoration-thickness:2px;-webkit-text-decoration-color:var(--pos);text-decoration-color:var(--pos)}.wr-quote{color:var(--muted);border-left:3px solid var(--hot);quotes:"“" "”";margin:6px 0;padding:2px 0 2px 10px;font-style:italic;display:block}.wr-to{margin:4px 0 0}.wr-arrow{color:var(--pos);font-weight:800}.wr-explain{background:var(--pen-soft);border-radius:10px;margin:10px 0 0;padding:10px 12px;font-size:.95rem}.wr-row{justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.wr-row .btn.small{padding-left:0}.wr-tick{border:1.5px solid var(--line);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:5px;min-height:36px;padding:6px 14px;font-size:.9rem;display:inline-flex}.wr-tick.on{border-color:var(--pos);color:var(--pos);background:var(--pos-soft);font-weight:700}.sec.feedback h2 .fb-tag{font-family:var(--f-body);color:var(--skip);background:var(--skip-soft);border-radius:6px;padding:1px 7px;font-size:.75rem;font-weight:700}.fb-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.fb-item{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.fb-item p{margin:0}.fb-q{font-size:.95rem}.fb-ans{font-family:var(--f-hand);color:var(--pen);white-space:pre-wrap;font-size:1.3rem;line-height:1.25;margin:6px 0!important}.fb-note{color:var(--muted);font-size:.95rem}main.col.admin{max-width:1180px}.admin-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:flex-end;gap:4px;margin:-4px 0 18px;display:flex}.admin-tabs a{white-space:nowrap;color:var(--muted);border-bottom:3px solid #0000;margin-bottom:-1px;padding:8px 12px;font-weight:700}.admin-tabs a[aria-current=page]{color:var(--ink);border-bottom-color:var(--pen)}.admin-h{font-family:var(--f-title);margin:24px 0 6px;font-size:1.3rem;font-weight:400}.admin-note{margin:0 0 12px;font-size:.9rem}.admin-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 8px;display:grid}.admin-stats>div{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;padding:12px 14px;display:flex}.admin-stats dt{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.78rem;font-weight:700}.admin-stats dd{font-family:var(--f-title);margin:2px 0 0;font-size:1.7rem;line-height:1.2}.admin-stats small{color:var(--muted);font-size:.85rem}.pill{background:var(--pen-soft);color:var(--pen);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-size:.78rem;font-weight:700;display:inline-flex}.pill.on{background:var(--pos-soft);color:var(--pos)}.pill.warn{background:var(--skip-soft);color:var(--skip)}.pill.danger{background:var(--neg-soft);color:var(--neg)}.fam-grid,.ai-grid,.up-grid{gap:12px;margin:0 0 8px;display:grid}.fam-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}.ai-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}.fam-card,.ai-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:10px;min-width:0;padding:14px 16px;display:flex}.fam-card.off{opacity:.8;border-style:dashed}.fam-head{align-items:flex-start;gap:8px;display:flex}.fam-who{overflow-wrap:anywhere;flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.fam-who strong{font-size:1.08rem}.fam-who small{flex-basis:100%}.fam-nums{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px 12px;margin:0;display:grid}.fam-nums dt{color:var(--muted);font-size:.78rem}.fam-nums dd{margin:0;font-size:1.05rem;font-weight:700}.fam-nums dd small{color:var(--muted);font-size:.8rem;font-weight:400}.fam-when{margin:0;font-size:.85rem}.fam-on{flex-wrap:wrap;gap:6px;margin:0;display:flex}.fam-card .fam-members{border-top:1px solid var(--line);margin:0;padding-top:8px;font-size:.92rem}.fam-link{color:var(--pen);margin-top:auto;font-size:.92rem;font-weight:700}.ai-card{flex-direction:row;align-items:flex-start}.ai-what{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ai-what small{font-size:.85rem}.up-filters{flex-wrap:wrap;align-items:flex-end;gap:10px;margin:0 0 12px;display:flex}.up-filters label{color:var(--muted);flex-direction:column;gap:2px;font-size:.8rem;font-weight:700;display:flex}.up-filters select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;min-height:40px;padding:6px 10px;font-size:1rem}.up-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}.up-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;height:100%;display:flex;overflow:hidden}.up-card:hover{border-color:var(--pen)}.up-thumb{aspect-ratio:4/3;background:var(--paper);border-bottom:1px solid var(--line);justify-content:center;align-items:center;display:flex;overflow:hidden}.up-thumb img{object-fit:cover;object-position:top;width:100%;height:100%}.up-body{overflow-wrap:anywhere;flex-direction:column;gap:1px;min-width:0;padding:10px 12px 12px;display:flex}.up-body small{font-size:.82rem}.up-marks{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.up-marks .score.inline{font-size:1.25rem}.up-detail{flex-direction:column;gap:16px;display:flex}@media (min-width:1100px){.up-detail{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:24px;display:grid}.up-pages{max-height:calc(100dvh - 32px);position:sticky;top:16px;overflow:auto}}.up-pages .notes-pages{margin:0}.note-box{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0 0 10px;padding:10px 14px}.up-problems,.up-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.up-list{gap:4px;padding-left:20px;list-style:outside}.up-prob{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);overflow-wrap:anywhere;border-radius:12px;flex-direction:column;gap:6px;min-width:0;padding:10px 14px;display:flex}.up-prob.got{border-left-color:var(--pos)}.up-prob.missed{border-left-color:var(--neg)}.up-prob.skipped{border-left-color:var(--skip)}.up-prob p{margin:0}.up-prob-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.up-q{font-family:var(--f-math);font-size:.92rem}.up-pair{grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.up-pair dt{color:var(--muted);font-size:.78rem}.up-pair dd{font-family:var(--f-math);margin:0;font-size:.95rem}.up-pair dd small{font-family:var(--f-body)}.up-note{color:var(--muted);font-size:.92rem}.up-more>summary{cursor:pointer;color:var(--pen);font-size:.88rem;font-weight:700}.up-more[open]>summary{margin-bottom:6px}.up-practice{margin:4px 0;padding-left:20px;font-size:.92rem}.up-asked{font-size:.9rem;margin:6px 0 0!important}.up-raw{margin-top:6px}.up-raw>summary{cursor:pointer;color:var(--muted);font-size:.82rem}.up-raw pre{background:var(--paper);border:1px solid var(--line);white-space:pre-wrap;border-radius:8px;max-height:280px;padding:8px;font-size:.75rem;overflow:auto}.view-switch{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-self:center;margin:0 0 6px auto;display:inline-flex;overflow:hidden}.view-switch button{min-height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:4px 12px;font-size:.85rem;font-weight:700}.view-switch button[aria-checked=true]{background:var(--ink);color:var(--paper)}.admin[data-view=list] .fam-grid,.admin[data-view=list] .up-grid{grid-template-columns:1fr;gap:6px}.admin[data-view=list] .fam-card{border-radius:12px;gap:4px;padding:10px 14px}.admin[data-view=list] .fam-nums{flex-wrap:wrap;gap:2px 14px;display:flex}.admin[data-view=list] .fam-nums>div{align-items:baseline;gap:5px;display:flex}.admin[data-view=list] .fam-nums dd{font-size:.95rem}.admin[data-view=list] .fam-when,.admin[data-view=list] .fam-email{display:none}.admin[data-view=list] .fam-card .fam-members{padding-top:4px}.admin[data-view=list] .fam-link{font-size:.85rem}.admin[data-view=list] .up-card{border-radius:12px;flex-direction:row;align-items:center}.admin[data-view=list] .up-thumb{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--line);flex:0 0 64px;align-self:stretch;width:64px;height:auto;min-height:64px}.admin[data-view=list] .up-thumb span{text-align:center;font-size:.7rem}.admin[data-view=list] .up-body{flex:1;padding:8px 12px}.admin[data-view=list] .up-marks{margin-top:4px}.admin[data-view=list] .up-marks .score.inline{font-size:1rem}.tbl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0 0 8px;overflow-x:auto}.tbl-wrap:has(details[open]){overflow:visible}.admin-tbl{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.88rem}.admin-tbl th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--paper);border-bottom:1px solid var(--line);padding:8px 10px;font-size:.74rem;font-weight:700;position:sticky;top:0}.admin-tbl td{border-bottom:1px solid var(--line);vertical-align:middle;padding:6px 10px}.admin-tbl tbody tr:last-child td{border-bottom:0}.admin-tbl tbody tr:nth-child(2n) td{background:color-mix(in srgb,var(--paper) 55%,var(--surface))}.admin-tbl tbody tr:hover td{background:var(--pen-soft)}.admin-tbl .num{text-align:right;font-variant-numeric:tabular-nums}.admin-tbl .tbl-name a{color:var(--pen);font-weight:700}.admin-tbl .tbl-name{white-space:normal;min-width:160px}.admin-tbl tr.off td{color:var(--muted)}.admin-tbl .tbl-menu{width:1%;padding:2px 4px}.admin-tbl .tbl-menu .menu>summary{min-width:32px;min-height:32px}.admin-tbl .tbl-menu .menu-panel{white-space:normal;left:0;right:auto}.admin-tbl .tbl-got{color:var(--pos);font-weight:700}.admin-tbl .tbl-ok{color:var(--skip);font-weight:700}.admin-tbl .tbl-missed{color:var(--neg);font-weight:700}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
