:root{--brand: #0f5132;--brand-2: #157347;--accent: #f5c542;--bg: #f4f6f5;--surface: #ffffff;--text: #1d2420;--muted: #66706a;--line: #dfe5e1;--good: #1a7f4b;--good-bg: #e3f4ea;--warn: #9a6400;--warn-bg: #fff3d6;--bad: #b42318;--bad-bg: #fde7e5;--info: #1f5fa8;--info-bg: #e5effa;--neutral-bg: #eef1ef;--radius: 10px;--shadow: 0 1px 2px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.04);font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;color:var(--text);font-size:15px}@media (prefers-color-scheme: dark){:root{--bg: #111613;--surface: #1a201c;--text: #e6ebe8;--muted: #9aa49e;--line: #2c3530;--good-bg: #173a27;--warn-bg: #3d2f0c;--bad-bg: #44191a;--info-bg: #182c45;--neutral-bg: #252c28;--good: #6fd39c;--warn: #f0c060;--bad: #ff8a80;--info: #8ab8f0}}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:1.4rem;margin:0}h2{font-size:1.05rem;margin:0 0 .75rem}h3{font-size:1rem;margin:.75rem 0 .5rem}a{color:var(--brand-2)}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{width:100%;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--surface)}input[type=checkbox],input[type=radio]{width:auto}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand-2);outline-offset:-1px}button{padding:.45rem .9rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;white-space:nowrap}button:hover{border-color:var(--brand-2)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}button.primary:hover{background:var(--brand-2)}button.danger{color:var(--bad);border-color:var(--bad)}button.link{border:0;background:none;color:var(--brand-2);padding:0 .3rem;text-decoration:underline}button.ghost{background:none}button.sm{padding:.2rem .55rem;font-size:.85rem}button.big{padding:.8rem 1.4rem;font-size:1.1rem;width:100%}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:600;color:var(--muted);font-size:.82rem}tr.inactive td{opacity:.5}tr.done td{opacity:.6}code{background:var(--neutral-bg);padding:.1rem .3rem;border-radius:4px;font-size:.82rem;word-break:break-all}.shell{display:flex;min-height:100vh}.side{width:250px;background:var(--brand);color:#e9f3ee;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;flex-shrink:0}.brand{display:flex;gap:.7rem;align-items:center;padding:1rem;border-bottom:1px solid rgba(255,255,255,.12)}.brand img,.crest{width:44px;height:44px;border-radius:10px;object-fit:cover;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:1.3rem;flex-shrink:0}.brand strong{display:block;line-height:1.2}.brand small{opacity:.75;font-size:.75rem}.side nav{padding:.5rem;flex:1}.side nav a{display:block;padding:.5rem .75rem;border-radius:8px;color:inherit;text-decoration:none;font-size:.93rem}.side nav a:hover{background:#ffffff14}.side nav a.active{background:#ffffff29;font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}.nav-section{text-transform:uppercase;font-size:.7rem;letter-spacing:.08em;opacity:.6;padding:.9rem .75rem .3rem}.powered{padding:1rem;font-size:.8rem;opacity:.7;border-top:1px solid rgba(255,255,255,.12)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:1rem;padding:.6rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.top .who{flex:1}.top .who small{display:block;color:var(--muted);font-size:.78rem}.menu{display:none}.sync{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted)}.sync .dot{width:8px;height:8px;border-radius:50%;background:var(--good)}.sync.off .dot{background:var(--warn)}main{padding:1.25rem}.page{max-width:1400px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.page-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.page-head .row>*{width:auto}.lead{color:var(--muted);margin:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;box-shadow:var(--shadow);min-width:0}.card>p:last-child{margin-bottom:0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.grid2.wide-left{grid-template-columns:1.6fr 1fr}.grid2.wide-right{grid-template-columns:1fr 1.6fr}.stack{display:flex;flex-direction:column;gap:1rem;min-width:0}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-top:.5rem}.row>input,.row>select{width:auto;flex:1;min-width:140px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.field{display:block;margin-bottom:.65rem}.field>span{display:block;font-size:.82rem;font-weight:600;color:var(--muted);margin-bottom:.25rem}.checks{display:flex;flex-wrap:wrap;gap:.35rem .9rem}.checks label,label.check{display:flex;gap:.35rem;align-items:center;font-size:.9rem}.picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0 .6rem}.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);margin:0}.muted{color:var(--muted);font-size:.88rem}.block{display:block}.note{background:var(--info-bg);color:var(--info);padding:.6rem .8rem;border-radius:8px;margin:0}.error,li.error{color:var(--bad)}.warn-text{color:var(--warn)}.label{font-weight:600;font-size:.88rem;margin:.4rem 0}.scroll-x{overflow-x:auto}.hidden{display:none}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;margin:0 .2rem .2rem 0;background:var(--neutral-bg);color:var(--muted);text-decoration:none}.badge.good{background:var(--good-bg);color:var(--good)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.info{background:var(--info-bg);color:var(--info)}.tags{display:flex;flex-wrap:wrap;margin:.4rem 0}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;border-radius:0;border-right:1px solid var(--line)}.seg button:last-child{border-right:0}.seg button.active{background:var(--brand);color:#fff}.list{list-style:none;padding:0;margin:0}.list li{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.5rem .25rem;border-bottom:1px solid var(--line)}.list li:last-child{border-bottom:0}.list.selectable li{cursor:pointer;border-radius:6px;padding:.5rem}.list.selectable li:hover{background:var(--neutral-bg)}.list.selectable li.sel{background:var(--info-bg)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem}.stat-link{text-decoration:none;color:inherit}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;box-shadow:var(--shadow)}.stat strong{display:block;font-size:1.7rem;color:var(--brand-2)}.stat span{color:var(--muted);font-size:.85rem}.stat.good strong{color:var(--good)}.stat.warn strong{color:var(--warn)}.quick{display:flex;flex-wrap:wrap;gap:.5rem}.quick a,.quick button{padding:.6rem 1rem;border:1px solid var(--line);border-radius:8px;text-decoration:none;background:var(--surface)}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-hero{background:linear-gradient(150deg,var(--brand),#0a3622);color:#fff;padding:4rem;display:flex;flex-direction:column;justify-content:center;gap:1rem}.auth-hero h1{font-size:2.2rem}.auth-hero p{font-size:1.05rem;opacity:.9;max-width:32rem;line-height:1.5}.logo-mark img{width:64px;height:64px}.auth-card{margin:auto;width:min(460px,92vw);background:var(--surface);padding:1.5rem;border-radius:14px;border:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column}.tabs{display:flex;margin-bottom:1rem;border-bottom:1px solid var(--line)}.tabs button{flex:1;border:0;border-bottom:2px solid transparent;border-radius:0;background:none}.tabs button.active{border-bottom-color:var(--brand);font-weight:600}.demo{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:1rem;font-size:.85rem;color:var(--muted)}.tree{display:flex;flex-direction:column;gap:.6rem}.node{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1rem}.node.d1{border-left:4px solid var(--brand);background:var(--neutral-bg)}.node.d2{margin-left:1.2rem}.node.d3{margin-left:2.4rem;border-style:dashed}.node .mine{border-left:3px solid var(--good, #2e7d32);padding-left:.7rem}.auth-side{display:flex;flex-direction:column;gap:.7rem;align-items:stretch}.portal-switch{align-self:center}.checks.column{flex-direction:column;align-items:flex-start}.checks.scroll-y,.scroll-y{max-height:240px;overflow-y:auto}.checks label.indent{padding-left:1.2rem}.checks label.strong{font-weight:600}.card.tutor h3{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin:0 0 .3rem}.thumbs{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0}.thumbs img{width:110px;height:140px;object-fit:cover;border:1px solid var(--line);border-radius:6px;cursor:zoom-in}.lesson-room{display:flex;flex-direction:column;gap:.5rem;height:calc(100vh - 120px)}.lesson-bar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.lesson-frame{flex:1;width:100%;min-height:420px;border:1px solid var(--line);border-radius:10px;background:#111}.lesson-topics{margin:0}.small{font-size:.8rem}.licence-banner{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.55rem 1rem;font-size:.92rem;border-bottom:1px solid var(--line)}.licence-banner.info{background:#e8f1fb;color:#0b3d6b}.licence-banner.warn{background:#fff4d6;color:#6b4a00}.licence-banner.bad{background:#fde8e8;color:#7a1010}.licence-banner .button-like{white-space:nowrap}label.plan{display:flex;gap:.6rem;align-items:flex-start;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;margin-bottom:.5rem;cursor:pointer}label.plan.on{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 25%,transparent)}label.plan input{margin-top:.3rem}.rubric{list-style:none;padding:0;margin:.3rem 0;font-size:.85rem}.rubric li{margin:.15rem 0}.rubric-rate{margin-top:.4rem;padding:.4rem .6rem;border:1px dashed var(--line);border-radius:8px}.roadmap{margin-top:.5rem;padding:.5rem .7rem;border:1px dashed var(--line);border-radius:8px;font-size:.9rem}.node .badge+.badge,p .badge+.badge{margin-left:.25rem}.node h3{margin:0 0 .3rem}.node h3 small{color:var(--muted);font-weight:400}.node .num{color:var(--brand-2)}.node ol{margin:.2rem 0 .4rem;padding-left:1.3rem}input.score{width:90px}input.inline{border-color:transparent;padding:.2rem .3rem}input.inline:hover{border-color:var(--line)}.analysis td small{color:var(--muted)}.analysis tr.teachers th{font-weight:400}.bar{display:inline-block;width:100px;height:8px;background:var(--neutral-bg);border-radius:4px;margin-right:.4rem;vertical-align:middle;overflow:hidden}.bar div{height:100%;background:var(--brand-2)}.levels{display:inline-flex;gap:2px}.levels button{padding:.15rem .4rem;font-size:.75rem;border-radius:5px}.levels button.on.l4{background:var(--good);color:#fff}.levels button.on.l3{background:var(--info);color:#fff}.levels button.on.l2{background:var(--warn);color:#fff}.levels button.on.l1{background:var(--bad);color:#fff}.rate-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.ratings td{min-width:150px}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem}.gallery figure{margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.gallery img,.gallery video{width:100%;height:160px;object-fit:cover;background:#000}.gallery audio{width:100%}.gallery .file{display:grid;place-items:center;height:160px;background:var(--neutral-bg);text-decoration:none}.gallery figcaption{padding:.5rem .6rem;display:flex;flex-direction:column;gap:.2rem;font-size:.88rem}.gallery figcaption small{color:var(--muted)}.feedback{background:var(--warn-bg);padding:.3rem .5rem;border-radius:6px;margin:.2rem 0}.recorder{margin-bottom:.6rem}.recorder video{width:100%;max-height:240px;background:#000;border-radius:8px;margin-bottom:.4rem}.upload-chip{cursor:pointer;font-size:.85rem;color:var(--brand-2);white-space:nowrap}.q{padding:.6rem 0;border-bottom:1px solid var(--line)}.q p{margin:0 0 .3rem}.q.right{background:var(--good-bg);padding:.6rem;border-radius:8px}.q.wrong{background:var(--bad-bg);padding:.6rem;border-radius:8px}.choices{display:flex;flex-direction:column;gap:.3rem}.choices label{display:flex;gap:.4rem;align-items:center}.post{border:1px solid var(--line);border-radius:8px;padding:.7rem .8rem;margin-bottom:.6rem}.post.is-verified{border-color:var(--good);background:var(--good-bg)}.post-head{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.post-head small{color:var(--muted);margin-left:auto}.post p{margin:.4rem 0}.comment{font-size:.9rem;padding:.35rem .6rem;border-left:3px solid var(--line);margin:.3rem 0 .3rem .5rem}.verified{background:var(--good-bg);border:1px solid var(--good);padding:.7rem .9rem;border-radius:8px;margin-bottom:.8rem}.verified p{margin:.3rem 0 0}.compose{margin:.8rem 0;display:flex;flex-direction:column;gap:.5rem}.compose button{align-self:flex-start}.gate-result{text-align:center;padding:1.5rem;border-radius:10px}.gate-result.in{background:var(--good-bg)}.gate-result.out{background:var(--info-bg)}.gate-result.denied{background:var(--bad-bg);color:var(--bad)}.big-icon{font-size:2.5rem;font-weight:700}.who-card{background:var(--info-bg);padding:.6rem .8rem;border-radius:8px}.labels{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;margin-top:.6rem}.label-sticker{border:1px dashed var(--line);padding:.3rem;text-align:center;background:#fff;color:#000}.label-sticker svg{max-width:100%;height:auto}.logo-preview{width:64px;height:64px;object-fit:contain;display:block;margin-bottom:.4rem}.search{display:flex;gap:.5rem}.search input{font-size:1.05rem;padding:.7rem .9rem}.viewer{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem}.viewer .row{justify-content:space-between;margin:0 0 .6rem}.viewer .pdf{width:100%;height:80vh;border:0;background:#fff}.viewer .video{width:100%;aspect-ratio:16/9;border:0;background:#000}.scheme td{vertical-align:top}.ksa{list-style:none;padding:0;margin:.35rem 0 .2rem;font-size:.88rem}.ksa li{display:flex;gap:.4rem;align-items:baseline;margin:.15rem 0}.ksa .badge{min-width:1.5rem;text-align:center}.link-chip{display:inline-block;margin:.2rem .4rem 0 0;font-size:.8rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:grid;place-items:center;z-index:50;padding:1rem}.modal{background:var(--surface);border-radius:12px;width:min(760px,100%);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.modal header,.modal footer{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.8rem 1.1rem;border-bottom:1px solid var(--line)}.modal header h2{margin:0}.modal footer{border-bottom:0;border-top:1px solid var(--line);justify-content:flex-end}.modal footer .error{margin-right:auto}.modal-body{padding:1rem 1.1rem;overflow-y:auto}.ksa-q{border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem .8rem;margin:0 0 .8rem}.ksa-q legend{font-weight:600;padding:0 .3rem}.ksa-q label.check{align-items:flex-start;padding:.2rem 0}.ksa-q label.check input{margin-top:.25rem}.preview{background:var(--info-bg);border-radius:8px;padding:.6rem .8rem;margin-bottom:.8rem}.preview p{margin:.3rem 0 0}.crash{border-color:var(--bad)}.stack-btns{display:flex;flex-direction:column;gap:.3rem;align-items:stretch}.week-actions{margin:-.4rem 0 .4rem;justify-content:flex-end}.mins{display:flex;align-items:center;gap:.3rem;white-space:nowrap;font-size:.85rem}.mins input{width:64px}.step{border-top:1px dashed var(--line);padding-top:.5rem;margin-top:.5rem}.step .row{margin-top:0;margin-bottom:.3rem}.step .row input:not([type=number]){flex:1}.ksa-q .row textarea{flex:1}input.money{width:100px}.search-box{position:relative;display:flex;align-items:center;flex:1;max-width:420px}.search-box input{padding-right:2.4rem}.search-btn{position:absolute;right:2px;border:0;background:none;padding:.3rem .5rem}.search-results{position:absolute;top:100%;left:0;right:0;z-index:30;list-style:none;margin:.25rem 0 0;padding:.25rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #00000026;max-height:60vh;overflow-y:auto}.search-results li{padding:.45rem .6rem;border-radius:6px;cursor:pointer;display:flex;flex-direction:column}.search-results li.active{background:var(--info-bg)}.search-results small{color:var(--muted)}.save-status{display:flex;align-items:center;gap:.45rem;font-size:.8rem;color:var(--muted)}.save-status .dot{width:8px;height:8px;border-radius:50%;background:var(--good);flex-shrink:0}.save-status.off .dot{background:var(--warn)}.top .who{flex:0 1 auto;min-width:140px}.progress-head{align-items:center}.progress-head h2{margin:0}.push-right{margin-left:auto}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--neutral-bg)}@media (max-width: 960px){.save-text{display:none}.search-box{max-width:none}.top{flex-wrap:wrap}}.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;opacity:0;pointer-events:none}.auth.single{grid-template-columns:1fr;background:linear-gradient(150deg,var(--brand),#0a3622)}.auth-card h2{margin:0 0 .4rem}.parent{min-height:100vh;background:var(--bg)}.parent-top{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem 1rem;background:var(--brand);color:#fff;position:sticky;top:0;z-index:5;flex-wrap:wrap}.parent-top .muted{color:#fffc}.parent-top button.ghost{color:#fff;border-color:#fff6}.brand-mini{display:flex;gap:.6rem;align-items:center}.brand-mini img,.brand-mini .crest{width:36px;height:36px;border-radius:8px;object-fit:cover;background:var(--accent);color:var(--brand);display:grid;place-items:center;font-weight:700}.brand-mini small{display:block;opacity:.8;font-size:.75rem}.parent-main{max-width:900px;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:.9rem}.chips{display:flex;gap:.4rem;flex-wrap:wrap}.chip{border-radius:999px;padding:.35rem .9rem}.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}.child-head h2{margin:0}.child-head p{margin:.15rem 0 0}.avatar{width:48px;height:48px;border-radius:50%;background:var(--info-bg);color:var(--info);display:grid;place-items:center;font-weight:700}.report-frame{width:100%;height:75vh;border:1px solid var(--line);border-radius:8px;background:#fff;margin-top:.6rem}.msg-list{list-style:none;padding:0;margin:0}.msg-list li{border-bottom:1px solid var(--line);padding:.6rem 0}.msg-list p{margin:.3rem 0 0}.notes-img{max-width:100%;max-height:80vh;display:block;margin:0 auto}.button-like{display:inline-block;padding:.45rem .9rem;border:1px solid var(--brand);border-radius:8px;background:var(--brand);color:#fff;cursor:pointer}.button-like.disabled{background:var(--neutral-bg);color:var(--muted);border-color:var(--line);cursor:not-allowed}.up{color:var(--good);font-weight:600}.down{color:var(--bad);font-weight:600}.bar{display:inline-block;width:70px;height:8px;background:var(--neutral-bg);border-radius:4px;vertical-align:middle;overflow:hidden;margin-right:.3rem}.bar>span{display:block;height:100%;background:var(--brand-2)}.heat td.h-good{background:var(--good-bg)}.heat td.h-info{background:var(--info-bg)}.heat td.h-warn{background:var(--warn-bg)}.heat td.h-bad{background:var(--bad-bg)}.findings li{margin:.35rem 0;line-height:1.45}.tabs-wrap{flex-wrap:wrap}@media print{.print-all .card{display:block!important;break-inside:avoid}}.stamp-preview{gap:1.2rem;min-height:60px}.stamp-demo{position:relative;display:inline-block}.stamp-demo img{max-height:90px;max-width:160px}.stamp-demo span{position:absolute;left:0;right:0;top:44%;text-align:center;font-weight:700;color:#1b3fa0;font-size:.8rem;transform:rotate(-8deg)}.sign-demo{max-height:40px;max-width:140px;background:#fff}.loading{padding:2rem;text-align:center}@media (max-width: 960px){.grid2,.grid2.wide-left,.grid2.wide-right,.auth{grid-template-columns:1fr}.auth-hero{padding:2rem 1.25rem}.side{position:fixed;left:-270px;z-index:20;transition:left .2s}.side.open{left:0;box-shadow:0 0 0 100vmax #00000059}.menu{display:inline-block}main{padding:1rem}.row2{grid-template-columns:1fr}.top .sync{display:none}}@media print{.side,.top,.no-print,.page-head{display:none!important}body,main,.card{background:#fff;border:0;box-shadow:none;padding:0}.card:not(.printable){display:none}}.subject-tiles{display:flex;flex-wrap:wrap;gap:8px}.read-layout{align-items:start}.strand-pick,.strand-pick ul{list-style:none;padding-left:0;margin:6px 0}.strand-pick ul{padding-left:24px}.strand-pick li{margin:4px 0}.note-block{border-left:3px solid var(--accent, #2b7a4b);padding:4px 12px;margin:10px 0}.notes-body{line-height:1.6}.notes-body h4{margin:12px 0 4px}.classroom{display:flex;flex-direction:column;gap:.5rem;height:calc(100vh - 120px);min-height:480px}.classroom .lesson-frame{flex:1}.class-body{flex:1;display:flex;gap:.5rem;min-height:0}.class-video{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#111}.class-video iframe{display:block}.class-board{flex:1;display:flex;flex-direction:column;gap:.4rem;min-width:0;min-height:0}.classroom.on-board.is-host .class-video{flex:0 0 260px}.classroom.on-board.is-learner .class-video{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}@media (max-width: 760px){.class-body{flex-direction:column}.classroom.on-board.is-host .class-video{flex:0 0 160px}}.board{display:flex;flex-direction:column;gap:.4rem;flex:1;min-height:0}.board-wrap{flex:1;min-height:200px;display:flex;justify-content:center;align-items:flex-start}.board-wrap canvas{border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 1px 4px #00000014}.board-tools,.board-pages{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.board-tools .active,.board-pages .active{outline:2px solid var(--accent, #2b7a4b)}.swatch{width:26px;height:26px;min-width:26px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}.swatch.active{box-shadow:0 0 0 3px var(--accent, #2b7a4b)}.past-lessons{margin-top:.6rem}.board-opt{display:inline-flex;align-items:center;gap:.3rem;font-size:.85rem}.pen-dot{display:inline-block;border-radius:50%}.font-sample{font-size:1.3rem;line-height:1;min-width:2ch}.board-canvas{position:relative}.eraser-ring{position:absolute;transform:translate(-50%,-50%);border:2px solid #555;border-radius:50%;background:#fff6;pointer-events:none}.board-typing{position:absolute;min-width:160px;max-width:70%;min-height:1.6em;padding:0 2px;border:1px dashed #888;background:#ffffffd9;line-height:1.25;resize:both;z-index:2}.chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.25rem 0 .5rem}.chip{border-radius:999px;padding:.3rem .75rem;font-size:.9rem}.chip.sm{font-size:.8rem}.chip.on{background:var(--accent, #0f5132);color:#fff;border-color:var(--accent, #0f5132)}.subject-chooser details{margin:.3rem 0}.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}@media (max-width: 700px){.row3{grid-template-columns:1fr}}.design-tree{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0}.d-strand{border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:8px;padding:.6rem .75rem;background:var(--surface)}.d-sub{border:1px solid var(--line);border-radius:8px;padding:.5rem .75rem;margin-left:1.5rem;background:var(--bg)}.design-tree .num{display:inline-block;min-width:2.4rem;font-weight:700;color:var(--brand)}.notice{border-bottom:1px solid var(--line);padding:.5rem 0 .75rem}.notice:last-child{border-bottom:0}.notice h4{margin:.2rem 0 .3rem}.ticket{border:1px solid var(--line);border-radius:8px;padding:.6rem .75rem;margin:.5rem 0}.ticket p{margin:.25rem 0}.reply{border-left:3px solid var(--accent);padding-left:.6rem;margin-top:.3rem}.paper-pair .pdf{width:100%;height:78vh;border:0}@media (max-width: 900px){.paper-pair{grid-template-columns:1fr}.paper-pair .pdf{height:70vh}}.chat{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0;max-height:60vh;overflow-y:auto;padding:.25rem}.chat .bubble{max-width:min(42rem,88%);padding:.55rem .8rem;border-radius:12px;line-height:1.45}.chat .bubble.me{align-self:flex-end;background:var(--brand);color:#fff;border-bottom-right-radius:4px}.chat .bubble.them{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px}.chat-input textarea{flex:1}
