:root{color-scheme:dark;--bg: #0e1116;--surface: #161b22;--surface-raised: #1c232c;--border: #262d38;--border-strong: #38414f;--text: #e8ecf1;--text-muted: #97a2b3;--text-faint: #5f6b7d;--accent: #f0a238;--accent-fill: #f0a238;--accent-soft: #f0a23820;--on-accent: #17130a;--done: #4ea87a;--done-fill: #4ea87a;--done-soft: #4ea87a1f;--danger: #f08c8c;--danger-muted: #d98a8a;--danger-strong: #f0a0a0;--danger-border: #b46464;--avatar-s: 45%;--avatar-l: 32%;--avatar-ink-s: 70%;--avatar-ink-l: 90%;--shadow: 0 18px 40px rgb(0 0 0 / 45%);--decor-net: #3f86d8;--decor-node: #2a6ec2;--decor-warm: #f26a1b;--decor-ink: .55;--radius: 12px;--radius-sm: 8px;--step-0: clamp(.94rem, .9rem + .15vw, 1rem);--step-1: clamp(1.1rem, 1rem + .4vw, 1.25rem);--step-2: clamp(1.4rem, 1.2rem + .8vw, 1.85rem);--step-3: clamp(1.9rem, 1.5rem + 1.6vw, 2.6rem);--shell: 1120px;--reading: 68ch}:root[data-theme=light]{color-scheme:light;--bg: #f6f7f9;--surface: #ffffff;--surface-raised: #eef1f5;--border: #e3e7ee;--border-strong: #c5ccd8;--text: #12161d;--text-muted: #545d6b;--text-faint: #767f8d;--accent: #96600a;--accent-soft: #f0a2382e;--done: #24704a;--done-soft: #4ea87a24;--danger: #b3352c;--danger-muted: #a13f37;--danger-strong: #8a221b;--danger-border: #d19a95;--avatar-s: 52%;--avatar-l: 87%;--avatar-ink-s: 42%;--avatar-ink-l: 28%;--shadow: 0 18px 40px rgb(15 23 42 / 12%);--decor-net: #2f7fd8;--decor-node: #1857a8;--decor-warm: #f26a1b;--decor-ink: .85}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:var(--step-0) / 1.6 -apple-system,"Segoe UI",Roboto,Ubuntu,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.02em;font-weight:650}h1{font-size:var(--step-3)}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}.shell{max-width:var(--shell);margin:0 auto;padding:0 24px}.topbar{position:sticky;top:0;z-index:10;background:color-mix(in oklab,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px}.brand{font-weight:700;letter-spacing:-.02em}.brand span{color:var(--accent)}.who{display:flex;align-items:center;gap:12px;color:var(--text-muted);font-size:.88rem}.mail{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;color:var(--text-muted);transition:color .12s ease,background .12s ease}.mail:hover,.mail:focus-visible{color:var(--text);background:var(--surface-raised)}.mail svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.mail__count{position:absolute;top:1px;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:9px;border:2px solid var(--bg);background:var(--accent-fill);color:var(--on-accent);font-size:.66rem;font-weight:700;line-height:13px;text-align:center;font-variant-numeric:tabular-nums}.bell{position:relative;display:inline-flex}.bell__button,.themetoggle{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border:0;border-radius:10px;background:none;color:var(--text-muted);cursor:pointer;transition:color .12s ease,background .12s ease}.bell__button:hover,.bell__button:focus-visible,.themetoggle:hover,.themetoggle:focus-visible{color:var(--text);background:var(--surface-raised)}.bell__button svg,.themetoggle svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bell__count{position:absolute;top:1px;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:9px;border:2px solid var(--bg);background:var(--accent-fill);color:var(--on-accent);font-size:.66rem;font-weight:700;line-height:13px;text-align:center;font-variant-numeric:tabular-nums}.bell__panel{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:min(360px,calc(100vw - 32px));max-height:70vh;overflow-y:auto;padding:6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.bell__empty{margin:0;padding:14px 10px;text-align:center}.bell__item{display:block;width:100%;padding:10px;border:0;border-radius:var(--radius-sm);background:none;color:inherit;font:inherit;text-align:left}.bell__item:not(:disabled){cursor:pointer}.bell__item:not(:disabled):hover,.bell__item:not(:disabled):focus-visible{background:var(--surface-raised)}.bell__item--new{box-shadow:inset 2px 0 0 var(--accent)}.bell__line{display:flex;align-items:baseline;gap:8px;justify-content:space-between}.bell__title{font-weight:600;line-height:1.35}.bell__when{flex:none;color:var(--text-faint);font-size:.75rem}.bell__body{display:block;margin-top:2px;color:var(--text-muted);font-size:.85rem;line-height:1.4}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent-fill);color:var(--on-accent);font:inherit;font-weight:600;cursor:pointer;transition:transform .12s ease,filter .12s ease,background .12s ease}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--ghost{background:transparent;border-color:var(--border-strong);color:var(--text)}.btn--ghost:hover:not(:disabled){background:var(--surface-raised);filter:none}.btn--small{padding:7px 13px;font-size:.86rem}:where(a,button,input,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field{display:grid;gap:6px;margin-bottom:16px}.field label{font-size:.86rem;color:var(--text-muted)}.input,textarea.input{width:100%;padding:11px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit}textarea.input{min-height:130px;resize:vertical;line-height:1.6}.input:focus{border-color:var(--accent);outline:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}.course-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;transition:border-color .14s ease,transform .14s ease}.course-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.course-card__title{font-size:var(--step-1);font-weight:650;margin-bottom:6px}.course-card__summary{color:var(--text-muted);margin-bottom:20px}.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.progress{display:flex;align-items:center;gap:12px;font-size:.84rem;color:var(--text-muted)}.progress__track{flex:1;height:6px;border-radius:999px;background:var(--border);overflow:hidden}.progress__fill{height:100%;border-radius:999px;background:var(--accent-fill);transition:width .4s cubic-bezier(.16,1,.3,1)}.progress__fill--done{background:var(--done-fill)}.progress__value{flex:0 0 auto;min-width:46px;text-align:right;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.progress__value--done{color:var(--done)}.progress--compact{flex:1 1 auto;min-width:0;gap:8px;font-size:.8rem}.progress--compact .progress__track{height:5px;flex:1 1 120px;max-width:160px}.progress--compact .progress__value{min-width:42px}.enrolled{display:flex;flex-direction:column;gap:5px;margin-top:7px}.enrolled__row{display:flex;max-width:460px;align-items:center;gap:10px;min-width:0}.enrolled__title{flex:0 1 auto;min-width:0;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;color:var(--text-muted)}.module{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:14px;background:var(--surface)}.module--locked{opacity:.62}.module__head{display:flex;align-items:baseline;gap:12px;padding:18px 22px;border-bottom:1px solid var(--border)}.module__index{font-variant-numeric:tabular-nums;color:var(--text-faint);font-size:.86rem}.module__title{font-weight:600;font-size:var(--step-1)}.module__reason{margin-left:auto;font-size:.82rem;color:var(--text-muted);display:flex;align-items:center;gap:6px}.lesson{display:flex;align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid var(--border);color:var(--text)}.lesson:last-child{border-bottom:none}.lesson--open:hover{background:var(--surface-raised)}.lesson--locked{color:var(--text-faint);cursor:not-allowed}.lesson__state{width:22px;height:22px;flex:none;border-radius:999px;border:1.5px solid var(--border-strong);display:grid;place-items:center;font-size:.7rem}.lesson__state--done{border-color:var(--done);background:var(--done-soft);color:var(--done)}.lesson__state--current{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.lesson__meta{margin-left:auto;font-size:.8rem;color:var(--text-faint)}.lesson-layout{display:grid;gap:40px;grid-template-columns:minmax(0,1fr);padding:32px 0 96px}@media(min-width:960px){.lesson-layout{grid-template-columns:minmax(0,1fr) 260px}}.prose{max-width:var(--reading);font-size:1.05rem;line-height:1.75}.prose p{margin:0 0 1.1em}.block{margin:28px 0}.player{aspect-ratio:16 / 9;width:100%;border:0;border-radius:var(--radius);background:#000}.checklist{position:sticky;top:84px;align-self:start;font-size:.88rem}.checklist h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin-bottom:14px;font-weight:600}.checklist ul{margin:0;padding:0}.checklist li{display:flex;gap:10px;padding:7px 0;color:var(--text-muted);list-style:none}.checklist li[data-met=true]{color:var(--text)}.notice{padding:14px 18px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-raised);color:var(--text-muted)}.notice--accent{border-color:color-mix(in oklab,var(--accent) 45%,var(--border));background:var(--accent-soft);color:var(--text)}.notice--done{border-color:color-mix(in oklab,var(--done) 45%,var(--border));background:var(--done-soft);color:var(--text)}.muted{color:var(--text-muted)}.stack{display:grid;gap:16px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-head{padding:40px 0 28px}.back{color:var(--text-muted);font-size:.86rem;display:inline-block;margin-bottom:14px}.back:hover{color:var(--text)}.center{min-height:100dvh;display:grid;place-items:center;padding:24px}.auth{width:100%;max-width:380px}.error{color:var(--danger);font-size:.88rem;margin-bottom:12px}.option{display:flex;gap:12px;align-items:center;padding:12px 16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);margin-bottom:10px;cursor:pointer;background:var(--surface)}.option:hover{border-color:var(--accent)}.option input{accent-color:var(--accent)}.qcard{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius);padding:20px 24px;margin-bottom:18px}.qcard--ok{border-left-color:var(--done)}.qcard--partial{border-left-color:var(--accent)}.qcard--bad{border-left-color:var(--danger-border)}.qcard--wait{border-left-color:var(--text-faint)}.qcard__head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.qcard__index{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-raised);border:1px solid var(--border-strong);font-size:.82rem;color:var(--text-muted);flex:none}.qcard__mark{margin-left:auto;font-size:.84rem;color:var(--text-muted)}.saveflag{margin-left:auto;font-size:.78rem;color:var(--text-faint);min-height:1em}.saveflag--saved{color:var(--done)}.saveflag--failed{color:var(--danger)}.markup p{margin:0 0 10px}.markup code{background:var(--surface-raised);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:.9em}.markup pre{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;overflow-x:auto}.markup pre code{background:none;border:none;padding:0}.choices{display:grid;gap:8px;margin-top:14px}.choice{display:flex;gap:12px;align-items:center;padding:11px 15px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;background:var(--surface-raised)}.choice:hover{border-color:var(--accent)}.choice--on{border-color:var(--accent);background:var(--accent-soft)}.choice input{accent-color:var(--accent);flex:none}.ordering{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}.ordering li{display:flex;align-items:center;gap:12px;padding:9px 14px;background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm)}.ordering__pos{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:.8rem;flex:none}.ordering__label{flex:1}.ordering__moves{display:flex;gap:4px}.blanks{display:grid;gap:10px;margin-top:14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.input--code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.86rem;line-height:1.5}.timer{font-variant-numeric:tabular-nums;padding:4px 12px;border-radius:999px;background:var(--surface-raised);border:1px solid var(--border-strong);color:var(--text-muted)}.timer--urgent{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.submitbar{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 20px;margin:24px 0 40px;background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius)}.scorecard{display:flex;align-items:center;gap:24px;padding:22px 26px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border-strong)}.scorecard--pass{border-color:var(--done);background:var(--done-soft)}.scorecard__value{font-size:var(--step-3);font-weight:600;font-variant-numeric:tabular-nums}.review{display:grid;gap:6px;margin-top:12px;font-size:.92rem}.uploader{display:grid;gap:10px}.filelist{list-style:none;padding:0;margin:0;display:grid;gap:6px}.filelist li{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem}.filelist--flat li{background:none;border:none;padding:2px 0}.filelist__name{flex:1;overflow-wrap:anywhere}a.filelist__name:hover{color:var(--accent)}.badge{font-size:.74rem;padding:2px 8px;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-muted)}.badge--wait{border-color:var(--accent);color:var(--accent)}.badge--live{border-color:var(--done);color:var(--done)}.quoted{border-left:2px solid var(--border-strong);padding-left:12px;color:var(--text-muted);white-space:pre-wrap}.toplink{color:var(--text-muted);padding:4px 10px;border-radius:var(--radius-sm)}.toplink:hover{color:var(--text);background:var(--surface-raised)}.adminnav{display:flex;gap:4px;flex-wrap:wrap;padding:18px 0 0;border-bottom:1px solid var(--border);margin-bottom:8px}.adminnav__tab{padding:9px 16px;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-1px}.adminnav__count{display:inline-block;min-width:18px;margin-left:7px;padding:1px 6px;border-radius:999px;background:var(--accent-fill);color:var(--on-accent);font-size:.72rem;font-weight:700;line-height:1.35;text-align:center;vertical-align:middle;font-variant-numeric:tabular-nums}.adminnav__tab:hover{color:var(--text)}.adminnav__tab--on{color:var(--accent);border-bottom-color:var(--accent)}.rowcard{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.rowcard:hover{border-color:var(--border-strong)}.rowcard__main{flex:1;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;min-width:0}.editcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 22px;margin-bottom:16px}.editcard__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.editrow{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);margin-bottom:8px}.editrow__main{flex:1;min-width:0;overflow-wrap:anywhere}a.editrow__main:hover{color:var(--accent)}.input--inline{flex:1;min-width:140px;margin:0}.formrow{display:flex;gap:14px;flex-wrap:wrap}.formrow>.field{flex:1;min-width:150px}.checkline{display:flex;align-items:center;gap:10px;cursor:pointer}.checkline input{accent-color:var(--accent)}.plainlist{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:4px;font-size:.92rem}.btn--danger{color:var(--danger-muted)}.btn--danger:hover{border-color:var(--danger-border);color:var(--danger-strong)}.certcard{background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--done);border-radius:var(--radius);padding:22px 26px;margin-bottom:18px}.certcard--void{border-left-color:var(--text-faint);opacity:.75}.certcard__head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.certcard__head h2{margin:0;font-size:var(--step-1)}.certcard__number{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:1.15rem;letter-spacing:.08em;color:var(--accent);margin-bottom:14px;overflow-wrap:anywhere}.certcard__number--inline{font-size:.92rem;margin:0;letter-spacing:.04em}.certcard__facts{display:flex;flex-wrap:wrap;gap:22px;margin:0 0 14px}.certcard__facts dt{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.certcard__facts dd{margin:2px 0 0}.verify{max-width:620px;margin:0 auto;padding:56px 24px 80px}.chat{display:flex;flex-direction:column;flex:1;min-height:0;height:clamp(260px,calc(100vh - 368px),520px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.dialogs__thread .chat{height:auto;border:none;border-radius:0;background:transparent}.chat__day{display:flex;align-items:center;justify-content:center;margin:6px 0}.chat__day span{padding:3px 12px;border-radius:999px;background:var(--surface-raised);border:1px solid var(--border);color:var(--text-faint);font-size:.74rem}.chat__log{display:flex;flex-direction:column;gap:10px;padding:18px;flex:1;min-height:200px;overflow-y:auto}.chat__empty{margin:auto;text-align:center}.bubble{max-width:74%;align-self:flex-start;background:var(--surface-raised);border:1px solid var(--border);border-radius:14px 14px 14px 4px;padding:10px 14px}.bubble--mine{align-self:flex-end;background:var(--accent-soft);border-color:var(--accent);border-radius:14px 14px 4px}.bubble__who{font-size:.78rem;color:var(--text-faint);margin-bottom:3px}.bubble__body{white-space:pre-wrap;overflow-wrap:anywhere}.bubble__time{font-size:.72rem;color:var(--text-faint);text-align:right;margin-top:4px}.chat__form{display:flex;gap:10px;align-items:flex-end;padding:12px;border-top:1px solid var(--border)}.chat__input{flex:1;resize:vertical;min-height:44px;font-family:inherit}.dialogs{display:grid;grid-template-columns:minmax(220px,320px) 1fr;height:clamp(340px,calc(100vh - 300px),640px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.dialogs__side{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border)}.dialogs__search{padding:10px;border-bottom:1px solid var(--border)}.dialogs__search .input{width:100%}.dialogs__list{flex:1;min-height:0;overflow-y:auto}.dialogs__none{padding:18px 14px;font-size:.86rem}.dialogs__item{display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:center;width:100%;padding:10px 12px;background:transparent;border:none;border-bottom:1px solid var(--border);color:inherit;cursor:pointer;font:inherit;text-align:left}.dialogs__item:hover{background:var(--surface-raised)}.dialogs__item--active{background:var(--accent-soft)}.avatar{display:flex;align-items:center;justify-content:center;width:42px;height:42px;flex:0 0 auto;border-radius:50%;background:hsl(var(--hue, 210) var(--avatar-s) var(--avatar-l));color:hsl(var(--hue, 210) var(--avatar-ink-s) var(--avatar-ink-l));font-size:.86rem;font-weight:700;letter-spacing:.02em;-webkit-user-select:none;user-select:none}.avatar-wrap{position:relative;display:inline-flex;flex:0 0 auto}.avatar__dot{position:absolute;right:0;bottom:0;width:11px;height:11px;border-radius:50%;border:2px solid var(--surface);background:var(--border-strong)}.avatar__dot--online{background:var(--done-fill)}.avatar__dot--recent{background:var(--text-muted)}.avatar__dot--never{background:var(--accent-fill)}.avatar--small{width:34px;height:34px;font-size:.76rem}.dialogs__text{display:flex;flex-direction:column;gap:3px;min-width:0}.dialogs__line{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.dialogs__name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialogs__when{flex:0 0 auto;font-size:.74rem;color:var(--text-faint)}.dialogs__preview{font-size:.82rem;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialogs__preview--unread{color:var(--text);font-weight:600}.dialogs__mine{color:var(--text-faint)}.dialogs__badge{flex:0 0 auto;min-width:20px;padding:1px 6px;border-radius:999px;background:var(--accent-fill);color:var(--on-accent);font-size:.72rem;font-weight:700;text-align:center}.dialogs__thread{display:flex;flex-direction:column;min-width:0;min-height:0}.dialogs__head{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--border);background:var(--surface-raised)}.dialogs__title{font-weight:600}.dialogs__back{display:none;background:none;border:none;color:var(--text);font-size:1.3rem;line-height:1;padding:4px 6px;cursor:pointer}.dialogs__blank{display:flex;align-items:center;justify-content:center;flex:1;padding:24px;text-align:center}@media(max-width:760px){.dialogs{grid-template-columns:1fr;height:auto}.dialogs__side{border-right:none}.dialogs__list{max-height:none}.dialogs--open{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;flex-direction:column;border:none;border-radius:0}.dialogs--open .dialogs__side{display:none}.dialogs--open .dialogs__thread{flex:1;min-height:0}.dialogs:not(.dialogs--open) .dialogs__thread{display:none}.dialogs__back{display:block}}.page-head__count{display:inline-block;min-width:24px;margin-left:10px;padding:2px 8px;border-radius:999px;background:var(--accent-fill);color:var(--on-accent);font-size:.82rem;font-weight:700;vertical-align:middle}.viewer{margin:0 0 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.viewer__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-raised)}.viewer__name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer__links{display:flex;gap:8px;flex:0 0 auto}.viewer__frame{display:block;width:100%;height:min(74vh,640px);min-height:320px;border:none;background:var(--bg)}.viewer--image img{display:block;width:100%;height:auto}.viewer__caption{padding:8px 14px;border-top:1px solid var(--border);color:var(--text-muted);font-size:.84rem}@media(max-width:640px){.viewer__frame{height:56vh;min-height:240px}}.pupil{margin-bottom:10px}.pupil .editrow{margin-bottom:0}.pupil__history{padding:14px 16px 16px;border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);background:var(--surface)}.history__course+.history__course{margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.history__course-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:10px}.history__empty{font-size:.84rem}.history__module{margin-top:12px}.history__module-head{display:flex;align-items:center;gap:9px;margin-bottom:6px}.history__module-title{font-weight:600;font-size:.92rem}.dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%;border:1.5px solid var(--border-strong)}.dot--small{width:7px;height:7px}.dot--done{background:var(--done-fill);border-color:var(--done)}.tag{padding:1px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-faint);font-size:.72rem}.tag--done{border-color:var(--done);color:var(--done)}.history__lesson{margin:6px 0 8px 18px}.history__lesson-head{display:flex;align-items:baseline;gap:8px;min-width:0;max-width:640px}.history__lesson-title{font-size:.88rem}.history__state{font-size:.78rem}.history__share{margin-left:auto;flex:0 0 auto;font-size:.78rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.history__item{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:3px 0 0 20px;padding-left:10px;border-left:2px solid var(--border);font-size:.82rem;max-width:640px}.history__item--done{border-left-color:var(--done)}.history__item--waiting,.history__item--returned,.history__item--partial{border-left-color:var(--accent)}.history__kind{color:var(--text-faint);flex:0 0 auto}.history__item-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history__verdict{margin-left:auto;flex:0 0 auto;color:var(--text-muted)}.history__item--done .history__verdict{color:var(--done)}.history__item--waiting .history__verdict,.history__item--returned .history__verdict,.history__item--partial .history__verdict{color:var(--accent)}.saverow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.saverow__state{min-height:1.2em;font-size:.84rem}.saverow__done{color:var(--done);font-weight:600}.saverow__error{color:var(--danger)}.checklist__share{margin:0 0 10px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.presence{display:flex;align-items:center;gap:7px;margin-top:4px;font-size:.8rem;color:var(--text-faint)}.presence--online{color:var(--done)}.presence--online .dot{background:var(--done-fill);border-color:var(--done)}.presence--recent .dot{background:var(--text-muted);border-color:var(--text-muted)}.presence--never{color:var(--accent)}.presence--never .dot{background:var(--accent-fill);border-color:var(--accent)}.events{margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.events__title{margin:0 0 8px;font-size:.92rem}.events__list{margin:0;padding:0;list-style:none}.events__day{margin:10px 0 4px;font-size:.76rem;color:var(--text-faint);text-transform:lowercase}.events__row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:3px 0 3px 10px;border-left:2px solid var(--border);font-size:.84rem}.events__row--notable{border-left-color:var(--accent)}.events__time{flex:0 0 auto;color:var(--text-faint);font-variant-numeric:tabular-nums}.events__subject{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:380px}.helper{margin-top:22px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.helper h3{margin:0 0 6px;font-size:.96rem}.helper p{margin:0 0 10px;font-size:.84rem}.helper--off{opacity:.7}.helper__head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.helper__log{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;margin:8px 0 10px}.helper__log .bubble{max-width:100%;font-size:.86rem}.helper__thinking{font-style:italic}.helper__form textarea{width:100%;resize:vertical;font-family:inherit;margin-bottom:8px}.linklike{background:none;border:none;padding:0;margin-top:6px;font:inherit;color:var(--accent);cursor:pointer;text-decoration:underline}.linklike:hover{text-decoration:none}.code-input{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:1.5rem;letter-spacing:.4em;text-align:center}.lessonend{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:40px;padding-top:24px;border-top:1px solid var(--border)}.lessonend__note{margin:0;flex:1 1 240px;font-size:.9rem}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none;opacity:var(--decor-ink)}.backdrop__side{position:absolute;top:0;height:100%;width:clamp(160px,calc((100vw - var(--shell)) / 2 + 80px),460px);overflow:hidden}.backdrop__side--left{left:0;-webkit-mask-image:linear-gradient(to right,#000 20%,transparent 55%);mask-image:linear-gradient(to right,#000 20%,transparent 55%)}.backdrop__side--right{right:0;-webkit-mask-image:linear-gradient(to left,#000 20%,transparent 55%);mask-image:linear-gradient(to left,#000 20%,transparent 55%)}.backdrop__links line{stroke:var(--decor-net);stroke-width:.9;opacity:.5}.backdrop__traces path{fill:none;stroke:var(--decor-net);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round;opacity:.45}.backdrop__traces path.backdrop__signal{stroke:var(--decor-warm);stroke-width:2.4;stroke-dasharray:7 600;opacity:.9}.backdrop__grids circle{fill:var(--decor-net);opacity:.55}.backdrop__square{fill:var(--decor-net);stroke:var(--decor-net);stroke-width:1.2;opacity:.75}.backdrop__square--warm{fill:var(--decor-warm);stroke:var(--decor-warm)}.backdrop__node{fill:var(--decor-node)}.backdrop__node--warm{fill:var(--decor-warm)}.backdrop__halo{fill:none;stroke:var(--decor-net);stroke-width:1.4;opacity:.55}.backdrop__glyphs text{fill:var(--decor-net);font-family:ui-monospace,Cascadia Code,Consolas,monospace;letter-spacing:.1em;opacity:.45}@media(prefers-reduced-motion:no-preference){.backdrop__drift{animation:backdrop-drift 52s ease-in-out infinite alternate}.backdrop__nodes g{animation:backdrop-breathe 7s ease-in-out infinite alternate}.backdrop__grids g{animation:backdrop-breathe 11s ease-in-out infinite alternate}.backdrop__traces path.backdrop__signal{animation:backdrop-run 9s linear infinite}}@keyframes backdrop-drift{0%{transform:translateY(-12px)}to{transform:translateY(12px)}}@keyframes backdrop-breathe{0%{opacity:.35}to{opacity:1}}@keyframes backdrop-run{0%{stroke-dashoffset:0}to{stroke-dashoffset:-607}}@media(max-width:1279px){.backdrop{display:none}}@media(max-width:760px){.shell{padding:0 14px}.topbar__inner{height:auto;min-height:56px;padding:8px 0;gap:8px;flex-wrap:wrap}.who{gap:6px}.who>span{display:none}.adminnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.adminnav::-webkit-scrollbar{display:none}.adminnav__tab{flex:none;white-space:nowrap;padding:9px 12px}.page-head{padding:24px 0 20px}.lesson-layout{gap:28px;padding:20px 0 64px}.checklist{position:static}.editrow{flex-wrap:wrap}.editrow__main{flex:1 1 100%}.lessonend .btn{flex:1 1 100%;text-align:center}.backdrop{display:none}.bell__panel{position:fixed;top:var(--bell-top, 64px);left:12px;right:12px;width:auto;max-height:calc(100vh - var(--bell-top, 64px) - 16px)}}
