.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.student-shell{background:var(--color-bg);min-height:100dvh;color:var(--color-text);flex-direction:column;display:flex}.student-main{padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom,0px));flex-direction:column;flex:1;display:flex}.student-shell[data-fullscreen=true] .student-main{padding-bottom:0}.student-page{width:100%;max-width:var(--page-width);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.student-page h1{margin:0;font-size:1.5rem}.student-page h2{margin:0 0 var(--space-2);font-size:1.1rem}.tabbar{background:var(--color-surface);box-shadow:var(--shadow-bar);padding-bottom:env(safe-area-inset-bottom,0px);z-index:10;display:flex;position:fixed;inset:auto 0 0}.tab{min-height:var(--tabbar-height);color:var(--color-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.72rem;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--color-primary);font-weight:600}.tabbar-logo{display:none}.tab svg{box-sizing:content-box;border-radius:999px;padding:2px 16px}.tab[aria-current=page] svg{background:var(--color-info-bg)}.offline-banner{z-index:20;padding:var(--space-2) var(--space-4);background:var(--color-hint-bg);color:var(--color-hint);text-align:center;font-size:.85rem;position:sticky;top:0}.card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-4)}.card-center{gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.card-center>*{margin:0}.button{min-height:var(--touch-target);background:var(--color-primary);color:var(--color-on-primary);text-align:center;font-weight:600;text-decoration:none}.button:active{background:var(--color-primary-pressed)}.button-block{width:100%;display:block}a.button{border-radius:var(--radius-s);padding:.8rem 1rem;display:block}.success{color:var(--color-success);margin:0;font-weight:600}.points{margin:var(--space-2) 0 0;color:var(--color-success);font-weight:700}.greeting{color:var(--color-muted);margin:0}.chips{gap:var(--space-2);flex-wrap:wrap;margin:0;display:flex}.chip{padding:var(--space-1) var(--space-3);background:var(--color-info-bg);border-radius:999px;font-weight:600}.badge{margin-left:var(--space-2);padding:0 var(--space-2);background:var(--color-primary);color:var(--color-on-primary);border-radius:999px;font-size:.75rem}.today-cards{gap:var(--space-3);flex-direction:column;display:flex}.block-list{margin:var(--space-3) 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.block-list li[data-done=true]{color:var(--color-success)}.invite-parent{gap:var(--space-3);flex-direction:column;display:flex}.invite-parent p{margin:0}.invite-actions{gap:var(--space-2);display:flex}.invite-actions .button{flex:1}.unit summary{align-items:center;gap:var(--space-1) var(--space-2);cursor:pointer;flex-wrap:wrap;display:flex}.unit-title{font-weight:600}.skill-list{margin:var(--space-3) 0 0;gap:var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.skill{gap:var(--space-1) var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border);grid-template-columns:1fr auto;align-items:start;display:grid}.level-pill{padding:0 var(--space-2);background:var(--color-key);white-space:nowrap;border-radius:999px;font-size:.8rem}.skill[data-level="1"] .level-pill{background:var(--color-info-bg)}.skill[data-level="2"] .level-pill,.skill[data-level="3"] .level-pill{background:var(--color-success-bg);color:var(--color-success);font-weight:600}.ladder{gap:var(--space-1);grid-column:1/-1;margin:0;padding:0;list-style:none;display:flex}.ladder li{padding:var(--space-1) 0;border-radius:var(--radius-s);border:1px solid var(--color-border);text-align:center;color:var(--color-locked);flex:1;font-size:.78rem}.ladder li[data-status=open]{border-color:var(--color-primary);color:var(--color-primary)}.ladder li[data-status=done]{background:var(--color-success);border-color:var(--color-success);color:var(--color-on-primary)}.balance-value{color:var(--color-primary);margin:0;font-size:2.5rem;font-weight:700}.history{margin:0;padding:0;list-style:none}.history li{gap:0 var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);grid-template-columns:1fr auto;display:grid}.history-date{color:var(--color-muted);grid-column:1;font-size:.8rem}.history-delta{grid-area:1/2/span 2;align-self:center;font-weight:700}.history-delta[data-sign=plus]{color:var(--color-success)}.history-delta[data-sign=minus]{color:var(--color-danger)}.player{width:100%;max-width:var(--page-width);padding:0 var(--space-3) var(--space-3);gap:var(--space-3);flex-direction:column;flex:1;margin:0 auto;display:flex}.player-header{z-index:5;align-items:center;gap:var(--space-2);min-height:var(--touch-target);background:var(--color-bg);display:flex;position:sticky;top:0}.player-title{flex:1;margin:0;font-size:1.05rem}.player-position{color:var(--color-muted);font-size:.9rem}.player-timer{min-width:3.2rem;padding:var(--space-1) var(--space-2);border-radius:var(--radius-s);background:var(--color-info-bg);font-variant-numeric:tabular-nums;text-align:center;font-weight:700}.icon-button{width:var(--touch-target);height:var(--touch-target);border-radius:var(--radius-s);background:var(--color-key);color:inherit;border:0;font-size:1.6rem;line-height:1}.player>.card{margin-top:var(--space-4)}.problem{gap:var(--space-3);flex-direction:column;flex:1;display:flex}.problem-body{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-4)}.problem-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:1.35rem;line-height:1.4}.problem-image{max-width:100%;height:auto;margin-top:var(--space-3);border-radius:var(--radius-s);display:block}.feedback{border-radius:var(--radius-m);padding:var(--space-3) var(--space-4)}.feedback h2{margin:0 0 var(--space-1);font-size:1rem}.feedback p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.feedback-hint{background:var(--color-hint-bg);color:var(--color-hint)}.feedback-ok{background:var(--color-success-bg);color:var(--color-success)}.feedback-solution{background:var(--color-info-bg)}.feedback-offline{background:var(--color-hint-bg);color:var(--color-hint)}.problem-actions{gap:var(--space-2);flex-direction:column;align-items:stretch;margin-top:auto;display:flex}.problem-actions .link-button{align-self:center}.report-open{align-self:center;font-size:.9rem}.report-form{gap:var(--space-2)}.report-actions{align-items:center;gap:var(--space-4);display:flex}.report-thanks{align-self:center}.visual-problem{margin:0 0 var(--space-3);padding:var(--space-3);border-left:4px solid var(--color-border);background:var(--color-bg);color:var(--color-muted);text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}.visual-text{margin:0 0 var(--space-4);padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-hint-bg);color:var(--color-hint);white-space:pre-wrap;overflow-wrap:anywhere;font-size:1.15rem}.keypad{gap:var(--space-2);flex-direction:column;display:flex}.keypad-display{min-height:3.25rem;padding:0 var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius-m);background:var(--color-surface);font-variant-numeric:tabular-nums;white-space:pre;justify-content:flex-end;align-items:center;font-size:1.8rem;display:flex;overflow:hidden}.keypad-display[data-empty=true]{color:var(--color-muted);justify-content:flex-start;font-size:1.1rem}.keypad-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.keypad-cell{display:flex}.keypad-cell:last-child{grid-column:span 2}.key{border-radius:var(--radius-m);background:var(--color-key);width:100%;min-height:3.1rem;color:var(--color-text);font:inherit;touch-action:manipulation;border:0;flex:1;font-size:1.45rem}.key:active:not(:disabled){background:var(--color-key-pressed)}.key:disabled{opacity:.45}.key-small{font-size:1.05rem}.keypad-letters{gap:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.key-letter{min-height:4rem;font-size:2rem;font-weight:700}.key-letter[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary)}.keypad-actions{gap:var(--space-2);grid-template-columns:1fr 2fr;display:grid}.key-submit{background:var(--color-primary);color:var(--color-on-primary);font-size:1.15rem;font-weight:600}.key-submit:active:not(:disabled){background:var(--color-primary-pressed)}.keypad-keyboard-hint{color:var(--color-muted);text-align:center;margin:0;font-size:.85rem;display:none}@media (hover:hover) and (pointer:fine){.keypad-keyboard-hint{display:block}}.field textarea{font:inherit;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-field);background:var(--color-surface);color:inherit;resize:vertical}.feedback-area{gap:var(--space-2);flex-direction:column;display:flex}.lesson-card-name{margin:0;font-size:1.15rem;font-weight:600}.lesson-card .hint{margin:var(--space-1) 0 var(--space-3)}.lesson-recording{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.lesson-card .lesson-recording:first-child{border-top:0;margin-top:0;padding-top:0}.lesson-recording h2,.lesson-recording h3{margin:0 0 var(--space-2);font-size:1rem}.lesson-recording p{margin:0 0 var(--space-3)}.homework-card-list{margin:var(--space-3) 0 0;gap:var(--space-4);flex-direction:column;padding:0;list-style:none;display:flex}.homework-card-name{margin:0;font-size:1.15rem;font-weight:600}.homework-card-list .hint{margin:var(--space-1) 0 var(--space-3)}.homework-card [data-overdue=true] .badge{background:var(--color-danger)}.back-link{min-height:var(--touch-target);padding:var(--space-2) 0;color:var(--color-primary);display:inline-block}.homework-page h1{margin-bottom:var(--space-1)}.homework-progress{z-index:5;padding:var(--space-2) 0;background:var(--color-bg);position:sticky;top:0}.homework-progress .hint{margin:0 0 var(--space-1)}.homework-progress progress{width:100%;height:.5rem;accent-color:var(--color-primary);display:block}.homework-problems{margin:var(--space-3) 0;gap:var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.homework-problem{gap:var(--space-3);flex-direction:column;scroll-margin-top:4rem;display:flex}.homework-problem h3{color:var(--color-muted);margin:0;font-size:.95rem}.homework-problem .problem-text{font-size:1.15rem}.homework-answer{margin:0;font-weight:600}.homework-problem[data-answered=false] .homework-answer{color:var(--color-muted);font-weight:400}.homework-photos,.homework-submit,.homework-returned,.homework-sent{margin-top:var(--space-3)}.homework-photos h2,.homework-returned h2,.homework-sent h2{margin:0 0 var(--space-2);font-size:1.1rem}.photo-pick{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.photo-pick label{border-radius:var(--radius-s);cursor:pointer;justify-content:center;align-items:center;padding:.8rem .5rem;display:flex}.photo-pick label[data-disabled=true]{opacity:.6;cursor:default}.photo-pick label:focus-within{outline:2px solid var(--color-primary);outline-offset:2px}.photo-list{margin:var(--space-3) 0 0;gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}.photo-item{gap:var(--space-2);flex-direction:column;display:flex}.photo-item img,.photo-placeholder{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-s);background:var(--color-key);width:100%;display:block}.photo-status{color:var(--color-muted);font-size:.85rem}.photo-item[data-status=done] .photo-status{color:var(--color-success)}.photo-item[data-status=failed] .photo-status{color:var(--color-danger);font-weight:600}.photo-item .button{padding:.5rem;font-size:.9rem}.homework-submit .hint{margin:0 0 var(--space-2)}.homework-score{margin:0;font-size:1.25rem;font-weight:700}.homework-results{margin:var(--space-3) 0;gap:var(--space-1);text-align:left;flex-direction:column;padding:0;list-style:none;display:flex}.homework-results li[data-correct=true]{color:var(--color-success)}.homework-results li[data-correct=false]{color:var(--color-danger)}.teacher-comment{margin:0 0 var(--space-3);padding:var(--space-3);border-left:4px solid var(--color-hint);background:var(--color-hint-bg);white-space:pre-wrap;overflow-wrap:anywhere}@media (width>=48rem){.student-main{padding-bottom:0}.page.student-page{max-width:var(--page-width-wide);padding:var(--space-5) var(--space-4);margin-inline:auto}.tabbar{justify-content:center;gap:var(--space-2);padding:0 var(--space-4);padding-block:var(--space-2);box-shadow:var(--shadow-header);border-top:0;order:-2;position:sticky;inset:0 auto auto}.tab{gap:var(--space-2);padding:0 var(--space-4);border-radius:999px;flex-direction:row;flex:none;min-height:2.75rem;font-size:.95rem}.tab svg{width:20px;height:20px;padding:0}.tab[aria-current=page],.tab[aria-current=page] svg{background:var(--color-info-bg)}.tab:hover{color:var(--color-primary)}.player{max-width:var(--page-width-wide);padding-top:var(--space-4)}.problem-text{font-size:1.25rem}.keypad,.problem-actions>.button{width:100%;max-width:24rem;margin-inline:auto}.homework-problem .keypad{margin-inline:0}}@media (width>=64rem){.page.student-page,.player{max-width:var(--page-width-desk)}.tabbar-logo{top:50%;left:max(var(--space-4), calc((100% - var(--page-width-desk)) / 2 + var(--space-4)));display:block;position:absolute;transform:translateY(-50%)}.student-page>.page-logo{display:none}.today-page{column-gap:var(--space-5);grid-template-columns:minmax(0,1fr) auto;align-content:start;display:grid}.today-page>*{grid-column:1/-1}.today-page>h1,.today-page>.greeting{grid-column:1}.today-page>.chips{grid-area:1/2/span 2;align-self:center}.today-cards{align-items:start;gap:var(--space-4);margin-top:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.today-cards>.session-card{order:-1}.problem{align-content:start;gap:var(--space-3) var(--space-5);grid-template:"body actions""feedback actions""error actions"1fr/minmax(0,1fr) 22rem;display:grid}.problem-body{padding:var(--space-5);grid-area:body;min-height:10rem}.problem-text{font-size:1.6rem}.problem>.feedback-area{grid-area:feedback}.problem>.error{grid-area:error}.problem-actions{top:calc(var(--touch-target) + var(--space-3));grid-area:actions;align-self:start;margin-top:0;position:sticky}.problem-actions .keypad,.problem-actions>.button{max-width:none}.topics-page{align-items:start;gap:var(--space-3) var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.topics-page>:not(.unit){grid-column:1/-1}.progress-page{align-items:start;gap:var(--space-3) var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,2fr);display:grid}.progress-page>:not(.card){grid-column:1/-1}.homework-problem:has(.keypad){align-items:start;gap:var(--space-3) var(--space-5);grid-template-columns:minmax(0,1fr) 22rem;display:grid}.homework-problem:has(.keypad)>*{grid-column:1}.homework-problem:has(.keypad)>.keypad{grid-area:1/2/span 5;width:100%;max-width:none}.homework-problem:has(.keypad)>.keypad~.button{grid-column:2}.homework-problem:has(.keypad) .problem-text{font-size:1.4rem}}.parent-shell{background:var(--color-bg);min-height:100dvh;color:var(--color-text);flex-direction:column;display:flex}.refresh-notice{padding:var(--space-2) var(--space-4);background:var(--color-hint-bg);color:var(--color-hint);margin:0}.parent-main{padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom,0px));flex-direction:column;flex:1;display:flex}.parent-page{width:100%;max-width:var(--page-width);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.parent-page h1{margin:0;font-size:1.5rem}.parent-page h2{margin:0 0 var(--space-2);font-size:1.1rem}.parent-page p{margin:0}.child-switcher{z-index:5;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;position:sticky;top:0;overflow-x:auto}.child-chip{min-height:var(--touch-target);padding:0 var(--space-4);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font:inherit;border-radius:999px;flex:none}.child-chip[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary);font-weight:600}.week-picker{align-items:center;gap:var(--space-2);display:flex}.week-picker .icon-button:disabled{opacity:.4}.week-label{text-align:center;flex-direction:column;flex:1;align-items:center;font-weight:600;display:flex}.week-label .hint{margin:0;font-weight:400}.stat-card{gap:var(--space-2);flex-direction:column;display:flex}.stat-card h2{margin:0}.stat-value{color:var(--color-primary);font-size:1.6rem;font-weight:700}.stat-card .hint{margin:0}.dots{gap:var(--space-2);margin:0;padding:0;list-style:none;display:flex}.dots li{border:2px solid var(--color-border);background:var(--color-surface);border-radius:50%;width:1.1rem;height:1.1rem}.dots li[data-on=true]{border-color:var(--color-success);background:var(--color-success)}.confusion-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.confusion-list li{justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);display:flex}.confusion-list li:last-child{border-bottom:0}.confusion-count{color:var(--color-muted);white-space:nowrap;flex:none;font-size:.85rem}.no-children{gap:var(--space-3);flex-direction:column;display:flex}.no-children h2{margin:0}.access-pay .button{margin-top:var(--space-3)}.overview-cards{gap:var(--space-3);flex-direction:column;display:flex}@media (width>=48rem){.parent-main{padding-bottom:0}.page.parent-page{max-width:var(--page-width-wide);padding:var(--space-5) var(--space-4);margin-inline:auto}.child-switcher{padding-inline:max(var(--space-4), calc((100% - var(--page-width-wide)) / 2 + var(--space-4)));order:-1;position:static}.overview-cards{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}@media (width>=64rem){.page.parent-page{max-width:var(--page-width-desk)}.parent-page>.page-logo{display:none}.child-switcher{padding-inline:max(var(--space-4), calc((100% - var(--page-width-desk)) / 2 + var(--space-4)))}.overview-page{column-gap:var(--space-5);grid-template-columns:minmax(0,1fr) auto;align-content:start;display:grid}.overview-page>*{grid-column:1/-1}.overview-page>h1,.overview-page>.greeting{grid-column:1}.overview-page>.week-picker{grid-area:1/2/span 2;align-self:center}.overview-cards{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr))}.overview-points{grid-column:span 2}.overview-confusion{grid-column:1/-1}}:root{--brand-indigo:#3c3489;--brand-amber:#ef9f27;--brand-night:#1b1a3a;--brand-ground:#f6f7fb;--brand-white:#fff;--brand-indigo-pressed:#302a6e;--brand-indigo-soft:#ecebf3;--brand-amber-soft:#fdf1df;--brand-muted:#5d5c74;--brand-line:#dcdbe8;--font-heading:"Geologica Variable", "Onest Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body:"Onest Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@font-face{font-family:Geologica Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geologica-cyrillic-ext-wght-normal-C8B9Chlh.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geologica Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geologica-cyrillic-wght-normal-DbeVG3Ps.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geologica Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geologica-latin-ext-wght-normal-DZyYlgcm.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geologica Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geologica-latin-wght-normal-BBL8hQxZ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/onest-cyrillic-ext-wght-normal-DOFToQv1.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/onest-cyrillic-wght-normal-DayYxulF.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/onest-latin-ext-wght-normal-QAhDxQuo.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/onest-latin-wght-normal-Dun_Rd-l.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-bg:#f6f7fb;--color-surface:#fff;--color-text:#1b1a3a;--color-muted:#5d5c74;--color-border:#dcdbe8;--color-field-border:#85849b;--color-primary:#3c3489;--color-primary-pressed:#302a6e;--color-on-primary:#fff;--color-success:#157a3a;--color-success-bg:#e6f6ec;--color-danger:#b91c1c;--color-danger-bg:#fdeceb;--color-hint:#8a5a00;--color-hint-bg:#fdf1df;--color-info-bg:#ecebf3;--color-level-0:#ecebf3;--color-level-0-text:#5d5c74;--color-level-1:#fdf1df;--color-level-1-text:#8a5a00;--color-level-2:#dcd9f2;--color-level-2-text:#3c3489;--color-level-3:#bfe8cd;--color-level-3-text:#14532d;--color-key:#ecebf3;--color-key-pressed:#dcd9f2;--color-locked:#8e8da3;--color-backdrop:#1b1a3a73;--radius-s:.5rem;--radius-m:.9rem;--radius-l:1.25rem;--radius-button:.875rem;--radius-field:.75rem;--radius-card:1.25rem;--shadow-card:0 1px 2px #1b1a3a0f, 0 6px 20px #1b1a3a0d;--shadow-bar:0 -4px 20px #1b1a3a12;--shadow-header:0 4px 20px #1b1a3a0f;--focus-ring:0 0 0 3px #3c348947;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--tabbar-height:3.75rem;--touch-target:3rem;--page-width:30rem;--page-width-wide:46rem;--page-width-desk:72rem}*,:before,:after{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-text-size-adjust:100%;margin:0}a{color:var(--color-primary);text-underline-offset:.18em}h1,h2,h3{font-family:var(--font-heading);letter-spacing:-.01em;font-weight:600}.page-logo{margin-bottom:var(--space-4);display:block}.auth-page{padding-top:2.5rem}.auth-page>.page-logo{margin:0 auto var(--space-5)}.auth-page>h1{margin:0 0 var(--space-4);text-align:center}.auth-page .form{padding:var(--space-5) var(--space-4);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card)}.auth-page .form .button{width:100%}.page{max-width:28rem;margin:0 auto;padding:1.5rem 1rem}.form{flex-direction:column;gap:1rem;display:flex}.field{border:0;flex-direction:column;gap:.3rem;margin:0;padding:0;display:flex}.field input,.field select{font:inherit;min-height:var(--touch-target);border:1px solid var(--color-field-border);border-radius:var(--radius-field);background-color:var(--color-surface);color:var(--color-text);padding:.65rem .9rem;transition:border-color .15s,box-shadow .15s}.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%233c3489' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right .9rem center;background-repeat:no-repeat;padding-right:2.5rem}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,.dialog textarea:focus-visible,.review-decision textarea:focus-visible{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.choice{align-items:flex-start;gap:.5rem;display:flex}.button{min-height:var(--touch-target);font:inherit;font-family:var(--font-heading);border-radius:var(--radius-button);background:var(--color-primary);color:var(--color-on-primary);cursor:pointer;border:0;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1.25rem;font-weight:600;transition:background-color .15s;display:inline-flex}.button:active:not(:disabled){background:var(--color-primary-pressed)}.button:focus-visible{box-shadow:var(--focus-ring);outline:none}.button:disabled{opacity:.6}.link-button{font:inherit;color:var(--color-primary);text-underline-offset:.18em;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.error{color:var(--color-danger);margin:0}.hint{color:var(--color-muted);font-size:.85rem}.warning{background:var(--color-hint-bg);color:var(--color-hint);border-radius:.5rem;margin:0;padding:.6rem .8rem;font-weight:600}.invite-from{flex-direction:column;gap:.6rem;margin:0 0 1rem;display:flex}.invite-from p{margin:0}.page-wide{max-width:60rem}.staff-header{z-index:20;background:var(--color-surface);box-shadow:var(--shadow-header);flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;padding:.6rem 1rem;display:flex;position:sticky;top:0}.staff-nav{flex-wrap:wrap;flex:1;gap:.25rem 1rem;display:flex}.staff-nav a{color:var(--color-muted);border-radius:999px;padding:.4rem .75rem;font-weight:500;text-decoration:none}.staff-nav a:hover{color:var(--color-primary)}.staff-nav a[aria-current=page]{background:var(--color-info-bg);color:var(--color-primary);font-weight:600}@media (width<=47.99rem){.staff-header{padding-bottom:0}.staff-header>.link-button{margin-left:auto}.staff-nav{scrollbar-width:none;-webkit-mask-image:linear-gradient(to right, var(--color-text) calc(100% - 2rem), transparent);mask-image:linear-gradient(to right, var(--color-text) calc(100% - 2rem), transparent);flex-wrap:nowrap;flex:1 0 100%;order:3;gap:.25rem;margin:0 -1rem;padding:0 1.5rem .5rem 1rem;overflow-x:auto}.staff-nav::-webkit-scrollbar{display:none}.staff-nav a{white-space:nowrap;flex:none;align-items:center;min-height:2.75rem;display:flex}}.import-summary,.stat-list{flex-wrap:wrap;gap:.75rem 2rem;margin:0 0 1rem;display:flex}.import-summary dt,.stat-list dt{color:var(--color-muted);font-size:.85rem}.import-summary dd,.stat-list dd{margin:0;font-size:1.5rem;font-weight:600}.alert-list{margin:0 0 1rem;padding:0;list-style:none}.alert-item{border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;padding:.6rem 0;display:flex}.alert-item p{margin:.25rem 0}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top;padding:.4rem .6rem}.table td:first-child{white-space:nowrap}.button-secondary{background:var(--color-surface);color:var(--color-primary);box-shadow:inset 0 0 0 1.5px var(--color-primary)}.button-secondary:active:not(:disabled){background:var(--color-info-bg)}.button-danger{background:var(--color-danger)}.lesson-badge{background:var(--color-info-bg);color:var(--color-primary);border-radius:999px;padding:0 .5rem;font-size:.8rem}.lesson-list{margin:0 0 1rem;padding:0;list-style:none}.lesson-item{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:.25rem 1rem;padding:.6rem 0;display:flex}.lesson-time{font-variant-numeric:tabular-nums;min-width:4.5rem;font-weight:600}.lesson-name{flex-direction:column;flex:1;min-width:10rem;display:flex}.lesson-tabs{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:.25rem;margin-bottom:1rem;display:flex}.lesson-tab{font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:.5rem 1rem}.lesson-tab[aria-selected=true]{border-bottom-color:var(--color-primary);font-weight:600}.skill-picker>legend{padding:0}.skill-picker-list{border:1px solid var(--color-field-border);border-radius:.5rem;max-height:18rem;padding:.5rem .75rem;overflow-y:auto}.skill-unit{border:0;flex-direction:column;gap:.25rem;margin:0 0 .75rem;padding:0;display:flex}.skill-unit legend{margin-bottom:.25rem;padding:0;font-weight:600}.attendance-list{flex-direction:column;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.attendance-list li{align-items:center;gap:.75rem;display:flex}.lesson-delete{border-top:1px solid var(--color-border);margin-top:2rem;padding-top:1rem}.homework-tab-problems{flex-direction:column;gap:.75rem;margin:1rem 0;padding-left:1.5rem;display:flex}.homework-tab-problems .card{border:1px solid var(--color-border);border-radius:.5rem;padding:.75rem}.homework-tab-problems p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 .5rem}.homework-swap{background:var(--color-bg);border-radius:.5rem;margin-top:.5rem;padding:.5rem}.homework-candidates{flex-direction:column;gap:.5rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.homework-candidates li{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.homework-publish{margin-top:1rem}.review-card{flex-direction:column;gap:1rem;display:flex}.review-nav{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.review-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}@media (width<=48rem){.review-layout{grid-template-columns:minmax(0,1fr)}}.review-left h2,.review-card h3{margin:0 0 .5rem}.review-badges{flex-wrap:wrap;gap:.5rem;margin:.5rem 0;display:flex}.review-badge{background:var(--color-info-bg);color:var(--color-primary);border-radius:999px;padding:0 .6rem;font-size:.85rem}.review-badge-ok{background:var(--color-success-bg);color:var(--color-success)}.review-badge-late{background:var(--color-danger-bg);color:var(--color-danger)}.review-results{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.review-result{border-radius:var(--radius-field);background:var(--color-surface);box-shadow:var(--shadow-card);border:0;padding:.6rem .75rem}.review-wrong{border-left-color:var(--color-danger);background:var(--color-danger-bg)}.review-ok{border-left-color:var(--color-success)}.review-result p{margin:0 0 .25rem}.review-body{white-space:pre-wrap;overflow-wrap:anywhere}.review-verdict{font-size:.85rem}.review-mistake{font-weight:600}.review-photos{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.review-photos img{border:1px solid var(--color-border);border-radius:.5rem;width:100%;height:auto;display:block}.review-decision textarea{font:inherit;border:1px solid var(--color-field-border);border-radius:var(--radius-field);width:100%;padding:.6rem .75rem}.review-buttons .button{min-width:11rem}.draft-homeworks{border-radius:var(--radius-field);background:var(--color-surface);box-shadow:var(--shadow-card);border:0;margin:0 0 1.5rem;padding:.75rem 1rem}.draft-homeworks p{margin:0 0 .25rem}.draft-homeworks .lesson-list{margin:0}.progress-picker{max-width:16rem;margin-bottom:1rem}.progress-picker select{font:inherit;border:1px solid var(--color-field-border);border-radius:var(--radius-field);padding:.6rem .8rem}.progress-notice{background:var(--color-success-bg);color:var(--color-success);border-radius:.5rem;margin:0 0 1rem;padding:.6rem .75rem}.progress-scroll{margin-bottom:.75rem;overflow-x:auto}.progress-matrix{border-collapse:separate;border-spacing:2px}.progress-matrix th,.progress-matrix td{text-align:center;vertical-align:middle;padding:.4rem .6rem}.progress-matrix thead th{vertical-align:bottom;min-width:5.5rem;max-width:9rem;font-weight:400}.progress-matrix thead th:first-child,.progress-matrix tbody th{z-index:1;background:var(--color-bg);text-align:left;min-width:9rem;font-weight:600;position:sticky;left:0}.progress-action{white-space:nowrap}.progress-action .link-button{font-size:.85rem}.progress-skill-id{font-weight:600;display:block}.progress-skill-title{color:var(--color-muted);font-size:.75rem;display:block}.progress-level{font-variant-numeric:tabular-nums;font-weight:600}.progress-matrix .progress-level{border-radius:.35rem}.level-0{background:var(--color-level-0);color:var(--color-level-0-text)}.level-1{background:var(--color-level-1);color:var(--color-level-1-text)}.level-2{background:var(--color-level-2);color:var(--color-level-2-text)}.level-3{background:var(--color-level-3);color:var(--color-level-3-text)}.progress-legend{flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 1.5rem;padding:0;font-size:.85rem;list-style:none;display:flex}.progress-legend li{align-items:center;gap:.4rem;display:flex}.progress-legend .progress-level{text-align:center;border-radius:.35rem;min-width:1.5rem;padding:.1rem .4rem;display:inline-block}.progress-mistakes,.progress-reflections{margin:0 0 1.5rem;padding:0;list-style:none}.progress-mistakes li,.progress-reflections li{border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.5rem 0;display:flex}.progress-mistake-title{flex:1;min-width:10rem;font-weight:600}.progress-mistake-count{color:var(--color-muted);font-variant-numeric:tabular-nums}.progress-reflection-date{min-width:6rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.progress-reflection-student{min-width:9rem;font-weight:600}.progress-reflection-text{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;min-width:12rem}.dialog-backdrop{z-index:10;background:var(--color-backdrop);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog{border-radius:var(--radius-m);background:var(--color-surface);width:min(28rem,100%);max-height:100%;padding:1.25rem;overflow-y:auto}.dialog h2{margin:0 0 1rem;font-size:1.15rem}.dialog textarea{font:inherit;border:1px solid var(--color-field-border);border-radius:var(--radius-field);padding:.6rem .75rem}.dialog-buttons{flex-wrap:wrap;gap:.75rem;display:flex}.admin-split{grid-template-columns:minmax(0,16rem) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}@media (width<=40rem){.admin-split{grid-template-columns:minmax(0,1fr)}}.admin-list ul{flex-direction:column;gap:.35rem;max-height:60vh;margin:0 0 .75rem;padding:0;list-style:none;display:flex;overflow-y:auto}.admin-list-item{width:100%;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-field);background:var(--color-surface);box-shadow:var(--shadow-card);border:0;flex-direction:column;gap:.1rem;padding:.6rem .75rem;display:flex}.admin-list-item .hint{margin:0}.admin-list-item[aria-current=true]{background:var(--color-info-bg);box-shadow:inset 0 0 0 1.5px var(--color-primary)}.admin-detail h2{margin-top:0}.group-panel>.form{max-width:28rem}.group-people{margin-top:1.5rem}.group-people h3{margin-bottom:.25rem}.group-people h4{margin:1rem 0 .5rem}.day-row{flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.form-actions{flex-wrap:wrap;gap:.5rem;display:flex}.people-search{flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-bottom:.5rem;display:flex}.people-search .field{flex:1;min-width:12rem}.people-list{margin:0 0 .75rem;padding:0;list-style:none}.people-list>li{border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;padding:.45rem 0;display:flex}.people-list-stacked>li{display:block}.reset-list{margin:0 0 .75rem;padding-left:1.25rem}.reset-list>li{padding:.2rem 0}.people-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;display:flex}.person{flex-wrap:wrap;align-items:baseline;gap:.15rem .75rem;display:flex}.person .hint{margin:0}.staff-add{flex-wrap:wrap;align-items:flex-end;gap:.5rem;display:flex}.reset-form{border-radius:var(--radius-field);background:var(--color-surface);max-width:24rem;box-shadow:var(--shadow-card);border:0;margin:.5rem 0 .75rem;padding:.75rem}.parents{margin:.5rem 0 0 1rem}.parents h3{color:var(--color-muted);margin:0 0 .25rem;font-size:.9rem}.curated-group{margin-bottom:1.5rem}.badge-gap{margin-left:.5rem}.report-body{flex:20rem;min-width:0}.report-text{overflow-wrap:anywhere;max-width:40rem}.field-with-hint{flex-direction:column;gap:.25rem;display:flex}.field-with-hint .hint{margin:0}.people-picker .people-list{max-height:18rem;overflow-y:auto}.student-access section{margin-top:1.25rem}.privacy-page h2{margin:1.5rem 0 .5rem;font-size:1.1rem}.privacy-page ul{flex-direction:column;gap:.4rem;margin:0;padding-left:1.2rem;display:flex}.staff-home section{margin-top:1.5rem}.staff-home-alerts{margin:.5rem 0 0;font-weight:600}.staff-home-links{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.staff-home-link{height:100%;color:var(--color-text);border-radius:var(--radius-field);background:var(--color-surface);box-shadow:var(--shadow-card);border:0;flex-direction:column;gap:.25rem;padding:.9rem 1rem;text-decoration:none;display:flex}.staff-home-link strong{color:var(--color-primary)}.staff-home-link span{color:var(--color-muted);font-size:.9rem}.staff-home-link:hover{box-shadow:var(--shadow-card), inset 0 0 0 1.5px var(--color-primary)}.weekly-controls{align-items:flex-end;gap:var(--space-3) var(--space-4);margin:0 0 var(--space-4);flex-wrap:wrap;display:flex}.weekly-week{align-items:center;gap:var(--space-2);display:flex}.weekly-week p{text-align:center;flex-direction:column;margin:0;font-weight:600;display:flex}.weekly-cards{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));display:grid}.weekly-card{gap:var(--space-2);min-width:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-field);background:var(--color-surface);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.weekly-card h2,.weekly-card p{margin:0}.weekly-card textarea{font:inherit;border:1px solid var(--color-field-border);border-radius:var(--radius-field);background:var(--color-surface);width:100%;color:var(--color-text);resize:vertical;padding:.5rem .75rem}.weekly-card .weekly-preview{background:var(--color-bg);font-size:.9rem}.weekly-parents{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.weekly-parents li{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.weekly-parents .button{text-decoration:none}.weekly-sent{color:var(--color-success);font-weight:600}.signals-section{margin:var(--space-5) 0}.signals-count{color:var(--color-muted);font-weight:400}.signals-list{margin:var(--space-3) 0 0;gap:var(--space-3);padding:0;list-style:none;display:grid}.signals-item{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-card)}.signals-who{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.signals-detail{margin:var(--space-1) 0 var(--space-2)}.signals-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.signals-actions .button{text-decoration:none}.payments-filter{max-width:20rem;margin:0 0 var(--space-4)}.payments-scroll{overflow-x:auto}.payments-scroll .table{min-width:44rem}.payments-status{white-space:nowrap;border-radius:999px;padding:0 .5rem;font-size:.8rem;font-weight:600;display:inline-block}.payments-status-expired{background:var(--color-danger-bg);color:var(--color-danger)}.payments-status-expiring{background:var(--color-hint-bg);color:var(--color-hint)}.payments-status-none{background:var(--color-info-bg);color:var(--color-muted)}.payments-status-active{background:var(--color-success-bg);color:var(--color-success)}.payments-days{margin-top:var(--space-1);display:block}.payments-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.payments-actions .button{text-decoration:none}
