/* Chalkmate — base styles: tokens, layout, components. Area styles live in css/*.css */
@font-face{font-family:"InterVar";src:url("fonts/inter-var.woff2") format("woff2");font-weight:100 900;font-display:swap}

:root{
  --brand:#0d9488;--brand-2:#14b8a6;--brand-ink:#fff;--brand-soft:color-mix(in srgb,var(--brand) 10%,var(--panel));
  --bg:#f4f6f5;--bg-2:#edf1ef;--panel:#fff;--panel-2:#f9fbfa;--line:#e3e8e6;--line-2:#edf1ef;
  --text:#0f1f1c;--text-2:#4b5d59;--text-3:#8fa19c;--hover:#f1f5f3;--focus:color-mix(in srgb,var(--brand) 22%,transparent);
  --side:#0c1514;--side-2:#13201e;--side-text:#c9d6d3;--side-muted:#6b807b;--side-active:#18302c;
  --crit:#dc2626;--high:#ea580c;--ok:#16a34a;--warn:#d97706;--info:#2563eb;
  --ls-unplanned:#94a3b8;--ls-draft:#f59e0b;--ls-planned:#0d9488;--ls-taught:#6366f1;--ls-cancelled:#cbd5e1;
  --ai:#7c3aed;--ai-soft:color-mix(in srgb,#7c3aed 9%,var(--panel));
  --r:12px;--r-sm:8px;--r-lg:16px;
  --sh-1:0 1px 2px rgba(15,31,28,.05),0 1px 1px rgba(15,31,28,.03);
  --sh-2:0 4px 16px rgba(15,31,28,.08),0 1px 3px rgba(15,31,28,.06);
  --sh-3:0 24px 60px rgba(15,31,28,.18),0 4px 12px rgba(15,31,28,.08);
  --font:"InterVar",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --side-w:244px;--top-h:60px;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0a1211;--bg-2:#0e1816;--panel:#111c1a;--panel-2:#152220;--line:#213230;--line-2:#1a2927;
  --text:#e6efed;--text-2:#9fb3ae;--text-3:#62786f;--hover:#172624;--focus:color-mix(in srgb,var(--brand) 32%,transparent);
  --side:#070d0c;--side-2:#0f1a18;--side-active:#163029;
  --ls-cancelled:#475569;
  --sh-1:0 1px 2px rgba(0,0,0,.4);--sh-2:0 6px 20px rgba(0,0,0,.4);--sh-3:0 24px 60px rgba(0,0,0,.6);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01","ss03"}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
img{max-width:100%}
::selection{background:var(--focus)}
h1,h2,h3,h4{letter-spacing:-.015em;line-height:1.25}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.mono{font-family:var(--mono);font-size:.92em}
.muted{color:var(--text-2)}.faint{color:var(--text-3)}
.hide{display:none!important}
.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.row.top{align-items:flex-start}.row.end{justify-content:flex-end}
.col{display:flex;flex-direction:column;gap:8px}
.grow{flex:1;min-width:0}
.gap-4{gap:4px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}
.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.center{text-align:center}
.small{font-size:12.5px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:1100px){.grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.grid2,.grid3{grid-template-columns:1fr}}

/* ---------- Splash ---------- */
.splash{position:fixed;inset:0;display:grid;place-items:center;background:var(--side);z-index:999;transition:opacity .3s}
.splash .mark,.auth-brand .logo,.side .brand .logo{background:linear-gradient(135deg,var(--brand),var(--brand-2));display:grid;place-items:center}
.splash .mark{width:58px;height:58px;border-radius:17px;box-shadow:0 10px 40px color-mix(in srgb,var(--brand) 50%,transparent);animation:pulse 1.4s ease-in-out infinite}
/* Default icon size: zero specificity so any module rule overrides it. Stops unsized icons filling their container. */
:where(svg.pwi){width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}
.splash .mark svg{width:30px;height:30px;color:#fff}
@keyframes pulse{50%{transform:scale(.92);opacity:.8}}

/* ---------- Layout ---------- */
.app{display:grid;grid-template-columns:var(--side-w) 1fr;height:100vh;height:100dvh}
.main{display:flex;flex-direction:column;min-width:0;min-height:0}
.content{flex:1;overflow:auto;min-height:0;padding:28px 32px 56px;overscroll-behavior-y:contain}
@media (pointer:fine){html,body{overscroll-behavior:none}}
.content.flush{padding:0}
.page{max-width:1200px;margin:0 auto}
.page.narrow{max-width:820px}
.page.wide{max-width:none}

/* Sidebar */
.side{background:var(--side);color:var(--side-text);display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(255,255,255,.04);padding-top:env(safe-area-inset-top)}
.side .brand{display:flex;align-items:center;gap:10px;padding:18px 18px 12px}
.side .brand .logo{width:34px;height:34px;border-radius:10px;flex:none;box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 40%,transparent)}
.side .brand .logo svg{width:19px;height:19px;color:#fff}
.side .brand b{display:block;color:#fff;font-size:15px;letter-spacing:-.01em;line-height:1.2}
.side .brand span{font-size:12px;color:var(--side-muted)}
.side .newbtn{margin:6px 14px 10px}
.side nav{flex:1;overflow:auto;padding:0 10px 10px}
.side .sec{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--side-muted);padding:16px 10px 6px;font-weight:600}
.side a.nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;color:var(--side-text);text-decoration:none;font-weight:500;transition:background .12s,color .12s}
.side a.nav svg{width:18px;height:18px;opacity:.75;flex:none}
.side a.nav:hover{background:var(--side-2);color:#fff}
.side a.nav.active{background:var(--side-active);color:#fff}
.side a.nav.active svg{opacity:1;color:var(--brand-2)}
.side .me{display:flex;align-items:center;gap:10px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.06);cursor:pointer}
.side .me:hover{background:var(--side-2)}
.side .me b{display:block;color:#fff;font-size:13px}.side .me span{font-size:11.5px;color:var(--side-muted);display:block;overflow:hidden;text-overflow:ellipsis}
.side .me>svg{width:16px;height:16px;color:var(--side-muted)}
.badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--brand);color:#fff;font-size:11px;font-weight:700;display:inline-grid;place-items:center}
.side .badge{background:color-mix(in srgb,var(--brand) 85%,#000)}

/* Top bar */
.top{height:var(--top-h);display:flex;align-items:center;gap:10px;padding:0 24px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);flex:none;position:relative;z-index:5}
.top h1{font-size:17px;margin:0;font-weight:650}
.search{position:relative;width:min(340px,32vw)}
.search span{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-3)}
.search span svg{width:16px;height:16px;display:block}
.search input{width:100%;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);padding:0 12px 0 34px;outline:none}
.search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--focus);background:var(--panel)}
.iconbtn{width:38px;height:38px;border-radius:10px;border:0;background:transparent;display:inline-grid;place-items:center;cursor:pointer;color:var(--text-2);position:relative;flex:none}
.iconbtn:hover{background:var(--hover);color:var(--text)}
.iconbtn svg{width:19px;height:19px}
.iconbtn.sm{width:30px;height:30px;border-radius:8px}.iconbtn.sm svg{width:16px;height:16px}
.iconbtn .badge{position:absolute;top:2px;right:0;min-width:17px;height:17px;font-size:10px;padding:0 4px}
.mob-only{display:none}

/* Mobile tabs */
.tabs{display:none}
.scrim{display:none}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;inset:0 auto 0 0;width:min(300px,84vw);z-index:60;transform:translateX(-102%);transition:transform .22s ease;box-shadow:var(--sh-3)}
  body.side-open .side{transform:none}
  body.side-open .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:55}
  .mob-only{display:inline-grid}.mob-hide{display:none!important}
  .top{padding:0 10px;padding-top:env(safe-area-inset-top);height:calc(var(--top-h) + env(safe-area-inset-top))}
  .content{padding:18px 14px calc(96px + env(safe-area-inset-bottom))}
  .tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:color-mix(in srgb,var(--panel) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;font-size:10.5px;font-weight:600;color:var(--text-3);padding:4px 0;position:relative}
  .tabs a svg{width:22px;height:22px}
  .tabs a.active{color:var(--brand)}
  .tabs .badge{position:absolute;top:0;left:calc(50% + 6px);min-width:17px;height:17px;font-size:10px;padding:0 4px}
  .tabs::after{content:"";position:absolute;left:0;right:0;top:100%;height:160px;background:var(--panel);pointer-events:none}
}
/* iPhone zooms into fields under 16px; touch screens get 16px fields. */
@media (pointer:coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea,.ed[contenteditable]{font-size:16px!important}}
@media (max-width:760px) and (pointer:coarse){body:has(textarea:focus,input:not([type=checkbox]):not([type=radio]):focus,.ed[contenteditable]:focus) .tabs{display:none}}
/* iOS 26 home-screen app (WebKit bug 301108): viewport comes up short by the status-bar height. Lay out to the full screen. */
@media (display-mode:standalone){
  html{height:min(100lvh,calc(100% + env(safe-area-inset-top)))}
  .app{height:min(100lvh,calc(100dvh + env(safe-area-inset-top)))}
}

/* ---------- Page header ---------- */
.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.phead h2{font-size:24px;margin:0;font-weight:700}
.phead p{margin:4px 0 0}
.phead .acts{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:760px){.phead h2{font-size:21px}.phead{margin-bottom:16px}}
.crumbs{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);margin-bottom:8px}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--brand)}
.crumbs svg{width:14px;height:14px;color:var(--text-3)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);font-weight:600;font-size:13.5px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .12s,border-color .12s,box-shadow .12s;color:var(--text)}
.btn:hover{background:var(--hover)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}
.btn svg{width:17px;height:17px;flex:none}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.btn.primary:hover{background:color-mix(in srgb,var(--brand) 88%,#000)}
.btn.ai{border-color:color-mix(in srgb,var(--ai) 35%,var(--line));color:var(--ai);background:var(--ai-soft)}
.btn.ai:hover{background:color-mix(in srgb,var(--ai) 15%,var(--panel))}
:root[data-theme="dark"] .btn.ai{color:#c4b5fd}
.btn.ai.solid{background:var(--ai);color:#fff;border-color:var(--ai)}
.btn.danger{color:var(--crit)}.btn.danger.solid{background:var(--crit);border-color:var(--crit);color:#fff}
.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--hover)}
.btn.sm{height:31px;padding:0 10px;font-size:12.5px;border-radius:8px}.btn.sm svg{width:15px;height:15px}
.btn.lg{height:46px;padding:0 20px;font-size:15px}
.btn.block{width:100%}
.btn:disabled{opacity:.6;cursor:default}
.linkbtn{background:none;border:0;padding:0;color:var(--brand);font-weight:600;cursor:pointer;text-decoration:none}
.linkbtn:hover{text-decoration:underline}
.spin{width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.seg{display:inline-flex;background:var(--bg-2);border-radius:10px;padding:3px;gap:2px}
.seg button,.seg a{border:0;background:transparent;height:31px;padding:0 12px;border-radius:8px;font-weight:600;font-size:13px;color:var(--text-2);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.seg button.on,.seg a.on{background:var(--panel);color:var(--text);box-shadow:var(--sh-1)}
.seg svg{width:15px;height:15px}

/* ---------- Forms ---------- */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field>label,.lbl{font-size:12.5px;font-weight:600;color:var(--text-2)}
.field .help{font-size:12px;color:var(--text-3)}
.input,.select,textarea.input{width:100%;min-height:40px;border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:8px 12px;outline:none;transition:border-color .12s,box-shadow .12s}
textarea.input{resize:vertical;min-height:90px;line-height:1.5}
.input:focus,.select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--focus)}
.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px;padding-right:34px}
.input.sm,.select.sm{min-height:32px;padding:4px 10px;font-size:13px;border-radius:8px}
.check{display:flex;align-items:flex-start;gap:9px;cursor:pointer;font-weight:500}
.check input{width:17px;height:17px;margin:2px 0 0;accent-color:var(--brand);flex:none}
.frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.frow.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:600px){.frow,.frow.three{grid-template-columns:1fr}}
.swatches{display:flex;gap:6px;flex-wrap:wrap}
.swatches label{width:26px;height:26px;border-radius:50%;cursor:pointer;position:relative;background:var(--c)}
.swatches input{position:absolute;opacity:0}
.swatches input:checked+i{position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--text)}

/* ---------- Cards, lists ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}
.card.pad{padding:18px 20px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line-2)}
.card-h h3{margin:0;font-size:15px;display:flex;align-items:center;gap:8px}
.card-h h3 svg{width:17px;height:17px;color:var(--brand)}
.card-b{padding:16px 18px}
.card-f{padding:12px 18px;border-top:1px solid var(--line-2);display:flex;gap:8px;justify-content:flex-end}
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-2);text-decoration:none;color:inherit;min-width:0}
.li:last-child{border-bottom:0}
a.li:hover,button.li:hover,.li.clickable:hover{background:var(--hover);cursor:pointer}
.li b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.li .faint,.li .muted{font-size:12.5px;display:block}
.li>svg{width:16px;height:16px;color:var(--text-3);flex:none}
.li-ic{width:34px;height:34px;border-radius:10px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex:none}
.li-ic svg{width:17px;height:17px}
.stat{padding:16px 18px}
.stat b{display:block;font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.stat span{font-size:12.5px;color:var(--text-2);font-weight:500}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 8px;background:var(--panel);border:1px solid var(--line);border-radius:14px;text-decoration:none;font-weight:600;position:relative}
.tile svg{width:24px;height:24px;color:var(--brand)}
.tile .badge{position:absolute;top:8px;right:8px}
.note{padding:10px 14px;border-radius:10px;background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 25%,var(--line));font-size:13.5px;margin-bottom:14px}
.note.warn{background:color-mix(in srgb,var(--warn) 10%,var(--panel));border-color:color-mix(in srgb,var(--warn) 35%,var(--line))}
.note.err{background:color-mix(in srgb,var(--crit) 8%,var(--panel));border-color:color-mix(in srgb,var(--crit) 30%,var(--line))}
.note.ai{background:var(--ai-soft);border-color:color-mix(in srgb,var(--ai) 28%,var(--line))}
.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 14px;font-size:13.5px}
.kv dt{color:var(--text-2);font-weight:500}.kv dd{margin:0}
hr.sep{border:0;border-top:1px solid var(--line);margin:18px 0}

/* ---------- Pills, tags ---------- */
.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:12px;font-size:12px;font-weight:600;background:var(--bg-2);color:var(--text-2);white-space:nowrap}
.pill.sm{height:20px;padding:0 7px;font-size:11px}
.pill .d{width:7px;height:7px;border-radius:50%;background:currentColor}
.ls-unplanned{color:var(--text-2)}.ls-unplanned .d{background:var(--ls-unplanned)}
.ls-draft{color:#b45309;background:color-mix(in srgb,var(--ls-draft) 14%,var(--panel))}
.ls-planned{color:var(--brand);background:var(--brand-soft)}
.ls-taught{color:#4f46e5;background:color-mix(in srgb,var(--ls-taught) 12%,var(--panel))}
.ls-cancelled{color:var(--text-3);text-decoration:line-through}
:root[data-theme="dark"] .ls-draft{color:#fbbf24}:root[data-theme="dark"] .ls-taught{color:#a5b4fc}:root[data-theme="dark"] .ls-planned{color:var(--brand-2)}
.prio-high{color:var(--crit);background:color-mix(in srgb,var(--crit) 10%,var(--panel))}
.prio-low{color:var(--text-3)}
.tag{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:600;background:var(--bg-2);color:var(--text-2);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.tag .sq{width:8px;height:8px;border-radius:2px;flex:none}
.tag.cls .sq{background:var(--c)}
.chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 10px;border-radius:13px;border:1px solid var(--line);background:var(--panel);font-size:12.5px;font-weight:600;cursor:pointer}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.av{width:32px;height:32px;border-radius:50%;background:var(--c);color:#fff;display:inline-grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.pbar{height:6px;border-radius:3px;background:var(--bg-2);overflow:hidden}
.pbar i{display:block;height:100%;background:var(--brand);border-radius:3px;transition:width .3s}
.pbar.warn i{background:var(--warn)}.pbar.crit i{background:var(--crit)}

/* ---------- Empty / skeleton ---------- */
.empty{text-align:center;padding:48px 20px;color:var(--text-2)}
.empty .ic{width:54px;height:54px;border-radius:16px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin:0 auto 14px}
.empty .ic svg{width:26px;height:26px}
.empty h3{margin:0 0 6px;color:var(--text);font-size:16px}
.empty p{margin:0 auto 16px;max-width:420px}
.skel{border-radius:12px;background:linear-gradient(90deg,var(--bg-2),var(--line-2),var(--bg-2));background-size:200% 100%;animation:sk 1.2s ease-in-out infinite}
@keyframes sk{to{background-position:-200% 0}}

/* ---------- Modal, drawer ---------- */
.overlay{position:fixed;inset:0;background:rgba(6,12,11,.5);display:grid;place-items:center;z-index:100;padding:20px;animation:fade .15s}
@keyframes fade{from{opacity:0}}
.modal{background:var(--panel);border-radius:18px;box-shadow:var(--sh-3);width:min(560px,100%);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;min-width:0;max-width:100%;animation:pop .18s ease}
@keyframes pop{from{transform:translateY(8px) scale(.98);opacity:0}}
.modal.sm{width:min(420px,100%)}.modal.lg{width:min(780px,100%)}.modal.xl{width:min(1060px,100%)}
.modal-h{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 12px}
.modal-h h3{margin:0;font-size:17px}.modal-h p{margin:4px 0 0;color:var(--text-2);font-size:13.5px}
.modal-b{padding:6px 20px 18px;overflow:auto;min-height:0}
.modal-f{padding:14px 20px;border-top:1px solid var(--line-2);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.modal.drawer{position:fixed;right:0;top:0;bottom:0;width:min(440px,100%);max-height:none;height:100%;border-radius:0;animation:slide .2s ease;padding-top:env(safe-area-inset-top)}
@keyframes slide{from{transform:translateX(30px);opacity:0}}
@media (max-width:760px){
  .overlay{padding:0;place-items:end stretch}
  .modal,.modal.sm,.modal.lg,.modal.xl{width:100%;max-height:calc(100dvh - env(safe-area-inset-top) - 12px);border-radius:18px 18px 0 0}
  .modal-f{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
  .modal.drawer{border-radius:0}
}

/* ---------- Menu, toast ---------- */
.menu{position:fixed;z-index:200;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-3);padding:5px;min-width:200px;max-width:320px;max-height:60vh;overflow:auto}
.menu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;padding:8px 10px;border-radius:8px;cursor:pointer;text-align:left;font-weight:500;font-size:13.5px}
.menu button:hover{background:var(--hover)}
.menu button svg{width:16px;height:16px;color:var(--text-2);flex:none}
.menu button.danger{color:var(--crit)}.menu button.danger svg{color:var(--crit)}
.menu .sep{height:1px;background:var(--line);margin:4px 6px}
.menu .mh{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700;padding:8px 10px 4px}
.toasts{position:fixed;right:20px;bottom:20px;z-index:300;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.toast{display:flex;align-items:center;gap:10px;background:var(--side);color:#fff;padding:11px 14px;border-radius:12px;box-shadow:var(--sh-3);font-weight:500;max-width:420px;animation:pop .2s}
.toast svg{width:18px;height:18px;flex:none;color:#5eead4}
.toast.err svg{color:#fca5a5}.toast.info svg{color:#93c5fd}
.toast button{background:rgba(255,255,255,.12);border:0;color:#fff;font-weight:600;padding:5px 10px;border-radius:7px;cursor:pointer}
@media (max-width:760px){.toasts{left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom));align-items:stretch}.toast{max-width:none}}

/* ---------- Alerts drawer ---------- */
.alerts{display:flex;flex-direction:column;gap:8px}
.alert-row{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.alert-row.unread{border-color:color-mix(in srgb,var(--brand) 40%,var(--line));background:var(--brand-soft)}
.alert-row .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--bg-2);color:var(--text-2);flex:none}
.alert-row .ic svg{width:16px;height:16px}
.alert-row.lv-urgent .ic{background:color-mix(in srgb,var(--crit) 12%,var(--panel));color:var(--crit)}
.alert-row.lv-warn .ic{background:color-mix(in srgb,var(--warn) 14%,var(--panel));color:var(--warn)}
.alert-row a{text-decoration:none}
.alert-row b{display:block;font-size:13.5px}
.alert-row span{display:block;font-size:12.5px;color:var(--text-2)}
.alert-row em{display:block;font-style:normal;font-size:11.5px;color:var(--text-3);margin-top:2px}

/* ---------- Upload, editor, prose ---------- */
.dropzone{border:1.5px dashed var(--line);border-radius:14px;padding:22px;text-align:center;cursor:pointer;color:var(--text-2);display:flex;flex-direction:column;align-items:center;gap:6px;transition:border-color .12s,background .12s}
.dropzone:hover,.dropzone.over{border-color:var(--brand);background:var(--brand-soft)}
.dropzone>svg{width:24px;height:24px;color:var(--brand)}
.editor{border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}
.editor:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--focus)}
.etools{display:flex;gap:2px;padding:5px;border-bottom:1px solid var(--line-2);background:var(--panel-2);flex-wrap:wrap}
.etools button{width:30px;height:30px;border:0;background:transparent;border-radius:7px;cursor:pointer;display:grid;place-items:center;color:var(--text-2)}
.etools button:hover{background:var(--hover);color:var(--text)}
.etools button svg{width:15px;height:15px}
.etools .btn{height:30px}
.ed{min-height:160px;padding:12px 14px;outline:none;line-height:1.6}
.ed.short{min-height:80px}.ed.tall{min-height:340px}
.ed:empty::before{content:attr(data-ph);color:var(--text-3)}
.ed h3,.prose h3{font-size:15px;margin:14px 0 6px}
.ed p,.prose p{margin:0 0 10px}
.prose{line-height:1.62;overflow-wrap:anywhere}
.prose h2{font-size:17px;margin:18px 0 8px}.prose h2:first-child,.prose h3:first-child{margin-top:0}
.prose h4{font-size:14px;margin:12px 0 4px}
.prose ul,.prose ol,.ed ul,.ed ol{padding-left:22px;margin:0 0 10px}
.prose li{margin:3px 0}
.prose table{border-collapse:collapse;width:100%;margin:8px 0 14px;font-size:13px;display:block;overflow-x:auto}
.prose th,.prose td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top}
.prose th{background:var(--panel-2);font-weight:600}
.prose code{font-family:var(--mono);font-size:.9em;background:var(--bg-2);padding:1px 5px;border-radius:4px}
.prose a{color:var(--brand)}
.ai-out{border:1px solid color-mix(in srgb,var(--ai) 28%,var(--line));background:var(--ai-soft);border-radius:14px;padding:16px 18px}
.ai-working{display:flex;align-items:center;gap:10px;padding:18px;border-radius:14px;background:var(--ai-soft);color:var(--ai);font-weight:600}
:root[data-theme="dark"] .ai-working{color:#c4b5fd}

/* ---------- Auth ---------- */
.auth{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1fr 1.05fr;background:var(--bg)}
.auth-card{align-self:center;justify-self:center;width:min(400px,100%);padding:32px 24px}
.auth-card h2{font-size:24px;margin:26px 0 18px}
.auth-brand{display:flex;align-items:center;gap:12px}
.auth-brand .logo{width:44px;height:44px;border-radius:13px;flex:none}
.auth-brand .logo svg{width:23px;height:23px;color:#fff}
.auth-brand b{display:block;font-size:18px}.auth-brand span{color:var(--text-2);font-size:13px}
.or{display:flex;align-items:center;gap:10px;color:var(--text-3);font-size:12px;margin:16px 0}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.auth-side{background:radial-gradient(1200px 600px at 20% 10%,color-mix(in srgb,var(--brand) 40%,transparent),transparent),var(--side);color:#e6efed;padding:64px 56px;display:flex;flex-direction:column;justify-content:center}
.auth-side h1{font-size:34px;margin:0 0 28px;max-width:460px;letter-spacing:-.025em}
.auth-side ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:16px;max-width:460px}
.auth-side li{display:flex;gap:12px;align-items:flex-start;color:#c9d6d3}
.auth-side li svg{width:20px;height:20px;color:#5eead4;flex:none;margin-top:1px}
@media (max-width:860px){.auth{grid-template-columns:1fr}.auth-side{display:none}}

/* ---------- Tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:12px;font-weight:600;color:var(--text-2);padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:10px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl-wrap{overflow-x:auto}

/* == capture == */
.cp-fab{position:fixed;right:22px;bottom:22px;z-index:45;width:54px;height:54px;border-radius:50%;border:0;background:var(--brand);color:#fff;display:grid;place-items:center;box-shadow:var(--sh-3);cursor:pointer;transition:transform .15s}
.cp-fab:hover{transform:scale(1.06)}.cp-fab svg{width:24px;height:24px}
body:has(.overlay) .cp-fab{display:none}
@media (max-width:760px){
  .cp-fab{right:14px;bottom:calc(72px + env(safe-area-inset-bottom));width:50px;height:50px}
  body.cp-has-fab .content{padding-bottom:calc(140px + env(safe-area-inset-bottom))}
}
@media (max-width:760px) and (pointer:coarse){body:has(textarea:focus,input:not([type=checkbox]):not([type=radio]):focus,.ed[contenteditable]:focus) .cp-fab{display:none}}
@media print{.cp-fab{display:none}}
.cp-body{display:flex;flex-direction:column;align-items:stretch}
.cp-mic{align-self:center;width:76px;height:76px;border-radius:50%;border:0;background:color-mix(in srgb,var(--brand) 14%,var(--panel));color:var(--brand);display:grid;place-items:center;cursor:pointer;margin:4px 0 8px}
.cp-mic svg{width:32px;height:32px}
.cp-mic.on{background:var(--brand);color:#fff;animation:cp-pulse 1.4s infinite}
@keyframes cp-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--brand) 45%,transparent)}100%{box-shadow:0 0 0 18px transparent}}
.cp-status{text-align:center;margin-bottom:10px}
.cp-res{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--brand) 5%,var(--panel))}
.cp-res-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--brand);color:#fff}.cp-res-ic svg{width:18px;height:18px}
.cp-res p{margin:6px 0 0;line-height:1.4}
.overlay:has(.cp-palette){place-items:start center;padding-top:12vh}
.modal.cp-palette{width:min(620px,100%)}
.cp-palette .modal-b{padding:0}
.cp-pal-in{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
.cp-pal-in>svg{width:18px;height:18px;color:var(--text-3);flex:none}
.cp-pal-in .input{border:0;box-shadow:none;background:transparent;padding:6px 0;font-size:16px;flex:1;min-width:0;outline:0}
.cp-pal-list{max-height:min(420px,55vh);overflow:auto;padding:6px}
.cp-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:9px 10px;border-radius:9px;cursor:pointer;font:inherit}
.cp-item svg{width:17px;height:17px;flex:none;color:var(--text-3)}
.cp-item.on{background:color-mix(in srgb,var(--brand) 10%,transparent)}.cp-item.on svg{color:var(--brand)}
.cp-item.cmd svg{color:var(--ai)}.cp-item .small{flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-none,.cp-pal-list .ai-working,.cp-pal-list .note{margin:8px}
.cp-pal-f{display:flex;gap:16px;padding:8px 14px;border-top:1px solid var(--line)}
.cp-palette kbd,.cp-keys kbd{display:inline-block;min-width:20px;padding:1px 6px;margin-left:3px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;font:600 11px/1.5 ui-monospace,monospace;text-align:center;color:var(--text-2);background:var(--panel)}
.cp-keys{display:flex;flex-direction:column;gap:10px}
@media (max-width:760px){.overlay:has(.cp-palette){padding-top:0;place-items:end stretch}.cp-pal-f{display:none}.cp-item .small{display:none}}
/* == end capture == */

/* == multischool == */
.ms-tabs{margin-bottom:16px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.ms-tabs .seg{white-space:nowrap}
.ms-sub{margin:0 0 12px}
.ms-day{margin-bottom:14px}
.ms-day .card-h{display:flex;gap:10px;align-items:baseline}
.ms-co{align-items:flex-start}
.ms-co-b{min-width:0}
.ms-route{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px}
.ms-arrow{color:var(--text-2);font-weight:700}
.ms-msg{margin:4px 0 2px;font-size:14px}
.ms-crit .li-ic,.ms-ic-crit{background:color-mix(in srgb,var(--crit) 12%,var(--panel));color:var(--crit)}
.ms-warn .li-ic,.ms-ic-warn{background:color-mix(in srgb,var(--warn) 14%,var(--panel));color:var(--warn)}
.ms-muted .li-ic,.ms-ic-muted{background:var(--bg-2);color:var(--text-2)}
.ms-pill-ok{background:color-mix(in srgb,var(--ok) 14%,var(--panel));color:var(--ok)}
.ms-pill-warn{background:color-mix(in srgb,var(--warn) 15%,var(--panel));color:var(--warn)}
.ms-pill-crit{background:color-mix(in srgb,var(--crit) 12%,var(--panel));color:var(--crit)}
.ms-clash{align-items:flex-start}
.ms-side{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:13.5px}
.ms-weekbar{margin-bottom:14px;align-items:center}
.ms-next svg{transform:rotate(180deg)}
.ms-stats{margin-bottom:14px}
.ms-over{color:var(--high)}
.ms-bar{height:5px;border-radius:3px;background:var(--bg-2);margin-top:5px;min-width:70px;overflow:hidden}
.ms-bar i{display:block;height:100%;background:var(--brand);border-radius:3px}
.ms-bar i.over{background:var(--high)}
.ms-spark{position:relative;display:flex;align-items:flex-end;gap:3px;height:30px;min-width:84px}
.ms-spark i{flex:1;background:color-mix(in srgb,var(--brand) 40%,var(--bg-2));border-radius:2px 2px 0 0;min-height:2px}
.ms-spark i.cur{background:var(--brand)}
.ms-spark i.over{background:var(--high)}
.ms-spark b{position:absolute;left:0;right:0;border-top:1px dashed var(--text-2);opacity:.6}
.ms-legend{display:flex;flex-wrap:wrap;gap:10px;color:var(--text-2)}
.ms-legend span{display:inline-flex;align-items:center;gap:5px}
.ms-strip-card{padding:12px 14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.ms-strip{min-width:max-content}
.ms-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.ms-lab{width:76px;flex:none;position:sticky;left:-14px;background:var(--panel);z-index:1;padding:2px 0}
.ms-cells{display:flex;gap:3px}
.ms-wk{display:flex;gap:1px;width:31px;flex:none}
.ms-mlab{font-size:10.5px;color:var(--text-2);font-weight:600;white-space:nowrap;overflow:visible}
.ms-c{display:inline-block;width:5.4px;height:18px;border-radius:1.5px;background:var(--bg-2);flex:none}
.ms-legend .ms-c,.ms-dl .ms-c{width:10px;height:10px;border-radius:3px}
.ms-cT{background:color-mix(in srgb,var(--brand) 55%,var(--panel))}
.ms-cE{background:var(--info)}
.ms-cH{background:var(--warn)}
.ms-cX{background:color-mix(in srgb,var(--text-2) 25%,var(--panel))}
.ms-cI{background:var(--ai)}
.ms-cC{background:var(--crit)}
.ms-cN{background:color-mix(in srgb,var(--brand) 18%,var(--panel))}
.ms-cW,.ms-cZ{background:transparent}
.ms-cQ{background:repeating-linear-gradient(45deg,var(--bg-2) 0 2px,var(--panel) 2px 4px)}
.ms-c.diff{box-shadow:0 0 0 1.5px var(--crit);position:relative;z-index:1}
.ms-c.today{outline:2px solid var(--text);outline-offset:1px}
.ms-past{opacity:.55}
.ms-srow,.ms-trow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line-2)}
.ms-srow:last-child,.ms-trow:last-of-type{border-bottom:0}
.ms-sname{min-width:120px;font-weight:600}
.ms-in{display:flex;flex-direction:column;gap:3px}
.ms-in .input{width:110px}
.ms-estnote{flex-basis:100%;text-align:right}
.ms-logf .row .input{width:76px}
@media (max-width:760px){
  .ms-stats{grid-template-columns:1fr 1fr 1fr;gap:8px}
  .ms-stats .stat{padding:10px 12px}.ms-stats .stat b{font-size:19px}
  .ms-in{flex:1}.ms-in .input{width:100%}
  .ms-sname{flex-basis:100%;order:-1}
  .ms-hours th:nth-child(6),.ms-hours td:nth-child(6){display:none}
  .ms-hours td,.ms-hours th{padding:9px 8px}
}
/* == end multischool == */

/* == cover == */
.cv-sick{display:flex;align-items:center;gap:14px;width:100%;margin:4px 0 0;padding:18px 20px;border:0;border-radius:18px;background:linear-gradient(135deg,var(--crit),#f97316);color:#fff;text-align:left;cursor:pointer;box-shadow:0 8px 24px -10px color-mix(in srgb,var(--crit) 70%,transparent);font:inherit;transition:transform .12s}
.cv-sick:hover{transform:translateY(-1px)}.cv-sick:active{transform:scale(.99)}
.cv-sick b{display:block;font-size:20px;line-height:1.2}.cv-sick span span{display:block;opacity:.9;font-size:14px;margin-top:2px}
.cv-sick-ic,.cv-sick-go{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.18)}
.cv-sick-ic svg{width:26px;height:26px}.cv-sick-go{width:36px;height:36px;border-radius:50%}
.cv-page .pill.ok,.cv-pick .pill.ok{background:color-mix(in srgb,var(--ok) 14%,var(--panel));color:var(--ok)}
.cv-page .pill.warn{background:color-mix(in srgb,var(--warn) 14%,var(--panel));color:var(--warn)}
.cv-page .pill.bad{background:color-mix(in srgb,var(--crit) 14%,var(--panel));color:var(--crit)}
.cv-list{overflow:hidden}
.cv-li{display:flex;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid var(--line);cursor:pointer}
.cv-li:first-child{border-top:0}.cv-li input{width:20px;height:20px;flex:none;accent-color:var(--brand)}
.cv-time{flex:none;font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;color:var(--text-2);min-width:86px}
.cv-main{min-width:0}
.cv-seg{flex-wrap:wrap}
.cv-stats{padding:0 16px 10px}
.cv-day .li-ic{color:var(--text-2)}.cv-day .cv-ic-sick{color:var(--crit)}
.cv-steps .pbar{margin-top:10px}
.cv-lessons{display:grid;gap:12px;margin-top:12px}
.cv-lesson.cv-skip{opacity:.6}
.cv-sum{margin:0 0 6px;font-weight:500}
.cv-plan summary{cursor:pointer;color:var(--brand);font-weight:600;font-size:14px}
.cv-plan .prose table{width:100%;border-collapse:collapse;font-size:14px}
.cv-plan .prose td,.cv-plan .prose th{border:1px solid var(--line);padding:6px 8px;vertical-align:top}
.cv-emails{display:grid;gap:12px;margin-top:12px}
.cv-kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin-bottom:10px;font-size:14px}
.cv-kv span{color:var(--text-2)}.cv-kv b{word-break:break-word;font-weight:600}
.cv-body{white-space:pre-wrap;word-break:break-word;font:14px/1.55 inherit;font-family:inherit;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0;max-height:420px;overflow:auto}
.cv-ta{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
@media (max-width:760px){
  .cv-sick{padding:16px}.cv-sick b{font-size:18px}.cv-sick-go{display:none}
  .cv-time{min-width:0;font-size:12px}
  .cv-li{align-items:flex-start;flex-wrap:wrap}.cv-li .cv-main{flex-basis:calc(100% - 40px);margin-left:32px;margin-top:-4px}
  .cv-email .card-f .btn{flex:1 1 auto;justify-content:center}
}
/* == end cover == */

/* == weekplan == */
.wk-tabs{margin:0 0 14px;max-width:100%;overflow-x:auto}
.wk-intro{margin:0 0 12px}
.wk-sum{margin-bottom:14px}
.wk-sum .pbar{margin-top:10px}
.wk-list{display:flex;flex-direction:column;gap:10px}
.wk-l{border-left:4px solid var(--c,var(--brand))}
.wk-lh{display:flex;align-items:center;gap:12px;padding:12px 14px;flex-wrap:wrap}
.wk-when{display:flex;flex-direction:column;min-width:92px}
.wk-what{min-width:0}
.wk-title{font-weight:600;color:var(--text);text-decoration:none}
.wk-acts{display:flex;align-items:center;gap:8px;margin-left:auto}
.wk-ready{color:var(--ai)}
.wk-l [data-out]:not(:empty){padding:0 14px 14px}
.wk-cil{border-left:4px solid var(--c,var(--brand));transition:opacity .4s,transform .4s}
.wk-cil.wk-gone{opacity:0;transform:translateX(20px)}
.wk-ci{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.wk-cicard .wk-ci{margin-top:0}
.wk-prog{display:flex;gap:6px;flex-wrap:wrap}
.wk-p.on.wk-p-finished{background:#dcfce7;border-color:#22c55e;color:#166534}
.wk-p.on.wk-p-half{background:#fef3c7;border-color:#f59e0b;color:#92400e}
.wk-p.on.wk-p-not{background:#fee2e2;border-color:#ef4444;color:#991b1b}
.wk-carry{margin-bottom:12px;font-size:13px}
.wk-sub{font-size:13px;font-weight:600;margin:0 0 8px;display:flex;align-items:center;gap:8px}
.wk-school{margin-bottom:14px}
.wk-copies{font-weight:700;font-variant-numeric:tabular-nums;min-width:44px;text-align:center;background:var(--bg-2);border-radius:8px;padding:4px 6px}
.wk-kit{cursor:pointer;align-items:center}
.wk-kit input{flex:none}
.wk-kit.done b{text-decoration:line-through;color:var(--text-2)}
.wk-lessons{display:flex;flex-wrap:wrap;gap:6px}
.wk-kitadd{display:flex;gap:6px;margin-top:10px}
.wk-kitadd .input{flex:1;min-width:0}
.wk-kitadd .select{width:auto;flex:none}
.wk-date{width:auto}
.wk-pastr+.wk-pastr{border-top:1px solid var(--line-2);margin-top:8px;padding-top:8px}
.wk-pastr p{margin:4px 0 0}
.wk-ok{color:#15803d}.wk-bad{color:#b91c1c}
.wk-refl .card-h{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
@media (max-width:760px){
  .wk-lh{gap:8px}
  .wk-acts{margin-left:0;width:100%}
  .wk-prog .btn{flex:1;justify-content:center}
  .wk-page .phead .acts{flex-wrap:wrap}
}
/* == end weekplan == */
/* == inbox == */
.ib-bns { display: flex; flex-direction: column; gap: 6px; padding: 8px 16px 0; }
.ib-bn { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--ai) 6%, var(--panel)); color: inherit; text-decoration: none; min-width: 0; font-size: 14px; }
.ib-bn > svg { width: 16px; height: 16px; flex: none; color: var(--ai); }
.ib-bn-dg { background: color-mix(in srgb, var(--brand) 6%, var(--panel)); }
.ib-bn-dg > svg { color: var(--brand); }
.ib-rmeta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 10px; }
.ib-rmeta:empty { display: none; }
.ib-tpl { max-width: 240px; }
.ib-tone, .ib-hist { display: inline-flex; align-items: center; gap: 4px; text-decoration: none; color: var(--text-2); }
.ib-tone svg, .ib-hist svg, .ib-auto svg { width: 12px; height: 12px; }
.ib-auto { display: inline-flex; align-items: center; gap: 3px; }
.ib-item-acts { flex-wrap: wrap; }
.ib-prep-when { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ib-prep-when svg { width: 14px; height: 14px; }
.ib-prep .lbl, .ib-dg-sec .lbl { display: flex; align-items: center; gap: 5px; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; color: var(--text-2); margin-bottom: 6px; }
.ib-dg-sec .lbl svg { width: 13px; height: 13px; }
.ib-prep .li, .ib-dg .li { text-decoration: none; color: inherit; }
.ib-prep .li .grow, .ib-dg .li .grow, .ib-mt .grow { display: flex; flex-direction: column; min-width: 0; text-align: left; }
.ib-mt { width: 100%; border: 0; background: none; font: inherit; cursor: pointer; }
.ib-dg-stats .stat b { font-size: 26px; display: block; }
.ib-dg-stats .ib-dg-reply b { color: #b45309; }
.ib-dg-school { border-left: 4px solid var(--c, var(--line)); }
.ib-dg-school .card-h h3 { display: flex; align-items: center; gap: 8px; flex: 1; }
.ib-dg-school .sq, .ib-tone-row .sq { width: 10px; height: 10px; border-radius: 3px; display: inline-block; margin-right: 6px; }
.ib-dg-sec + .ib-dg-sec { margin-top: 14px; }
.ib-dg-ignore .li { opacity: .7; }
.ib-dg-sum { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ib-tone-row { padding: 12px 0; border-top: 1px solid var(--line); }
.ib-tone-row:first-of-type { border-top: 0; padding-top: 0; }
.ib-tone-row .ib-tone-hint { margin: 4px 0 6px; }
@media (max-width:760px) {
  .ib-dg-stats { grid-template-columns: repeat(3, 1fr); }
  .ib-prep-lists { grid-template-columns: 1fr; }
  .ib-tpl { max-width: 100%; flex: 1 1 100%; }
}
/* == end inbox == */

/* == feedback == */
.fb-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;padding:2px}
.fb-tabs .seg{white-space:nowrap}
.fb-doc table{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0}
.fb-doc th,.fb-doc td{border:1px solid var(--line);padding:7px 9px;vertical-align:top;text-align:left}
.fb-doc thead th{background:var(--bg-2)}
.fb-doc tbody th{background:var(--panel);width:18%}
.fb-out .fb-doc{overflow-x:auto}
.fb-search{min-width:180px;flex:1}
.fb-bar .select{width:auto;max-width:180px}
.fb-bank{padding:4px 0}
.fb-ph{display:flex;align-items:flex-start;gap:6px;padding:10px 12px;border-bottom:1px solid var(--line-2)}
.fb-ph:last-child{border-bottom:0}
.fb-txt{flex:1;text-align:left;background:none;border:0;padding:2px 0;font:inherit;color:var(--text);cursor:copy;display:flex;flex-direction:column;gap:4px}
.fb-txt:hover{color:var(--brand)}
.fb-star svg{opacity:.35}.fb-star.on svg{opacity:1;color:#f59e0b;fill:#f59e0b}
.fb-good{color:var(--ok,#16a34a)}.fb-bad{color:var(--danger,#dc2626)}
.fb-wbar{position:relative;height:10px;border-radius:5px;background:var(--bg-2);margin-top:5px;overflow:hidden}
.fb-wbar i{position:absolute;left:0;top:0;bottom:0;border-radius:5px}
.fb-wbar .free{background:color-mix(in srgb,var(--brand) 18%,transparent)}
.fb-wbar .need{background:var(--brand);height:6px;top:2px}
.fb-heavy .fb-wbar .need{background:var(--warn,#d97706)}
.fb-over .fb-wbar .need{background:var(--danger,#dc2626)}
.fb-days{padding:4px 0}
.fb-dh{font-size:12px;font-weight:700;color:var(--text-2);padding:10px 16px 4px;text-transform:uppercase;letter-spacing:.03em}
.fb-sess{display:flex;align-items:center;gap:10px;padding:7px 16px;font-size:13.5px;cursor:pointer}
.fb-sess:hover{background:var(--bg-2)}
.fb-t{min-width:150px;font-variant-numeric:tabular-nums}
.fb-privacy{display:flex;gap:10px;align-items:flex-start}.fb-privacy svg{flex:none;width:18px;height:18px;margin-top:2px}
.fb-cg{display:flex;gap:10px;align-items:flex-start}
.fb-cl{flex:none;width:92px;font-size:12px;font-weight:600;color:var(--text-2);padding-top:5px}
.fb-comment textarea{background:var(--ai-soft)}
.fb-sticky{position:sticky;bottom:0;background:var(--bg,#fff);padding:10px 0;z-index:2;border-top:1px solid var(--line-2)}
.fb-link{background:none;border:0;padding:0;text-align:left;font:inherit;font-weight:600;color:var(--text);cursor:pointer}
@media (max-width:760px){
  .fb-cg{flex-direction:column;gap:4px}.fb-cl{width:auto;padding:0}
  .fb-t{min-width:0;flex-direction:column}.fb-sess{flex-wrap:wrap}
  .fb-bar .select{max-width:none;flex:1}
  .fb-doc{font-size:12.5px}
}
/* == end feedback == */
/* == wellbeing == */
.wb-status{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.wb-st-ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);flex:none}
.wb-st-ic svg{width:22px;height:22px}
.wb-status.quiet .wb-st-ic{background:color-mix(in srgb,#6366f1 12%,var(--panel));color:#6366f1}
.wb-status.hol .wb-st-ic{background:color-mix(in srgb,#f59e0b 14%,var(--panel));color:#d97706}
.wb-st-t{font-weight:700;font-size:15px}
.wb-grid{align-items:start}
.wb-big{align-items:baseline;margin-bottom:8px}.wb-big b{font-size:26px;letter-spacing:-.02em}
.wb-pct{font-weight:700;color:var(--brand)}.wb-near .wb-pct{color:var(--warn)}.wb-over .wb-pct{color:var(--crit)}
.wb-stack{position:relative;display:flex;height:12px;border-radius:6px;background:var(--bg-2);overflow:hidden}
.wb-stack i{display:block;height:100%}
.wb-over .wb-stack{box-shadow:0 0 0 2px color-mix(in srgb,var(--crit) 35%,transparent)}
.wb-legend{display:grid;gap:6px;margin-top:14px}
.wb-lg{display:flex;align-items:center;gap:8px;font-size:13.5px}.wb-lgp{width:34px;text-align:right}
.wb-dot{width:10px;height:10px;border-radius:3px;flex:none}
.wb-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:16px}
.wb-day{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11.5px;color:var(--text-2)}
.wb-day em{font-style:normal;font-size:10.5px;color:var(--text-3,var(--text-2));white-space:nowrap}
.wb-col{width:100%;max-width:34px;height:70px;background:var(--bg-2);border-radius:6px;display:flex;align-items:flex-end;overflow:hidden}
.wb-col i{display:block;width:100%;background:var(--brand);border-radius:6px 6px 0 0;min-height:2px}
.wb-day.today span{color:var(--brand);font-weight:700}
.wb-prose h3,.wb-prose h4{margin-top:14px}.wb-prose h3:first-child,.wb-prose h4:first-child{margin-top:0}
.wb-brief .card-b{max-height:560px;overflow:auto}
.wb-hol{border-color:color-mix(in srgb,#f59e0b 40%,var(--line))}
.wb-hol .card-h h3{display:flex;align-items:center;gap:6px}.wb-hol .card-h h3 svg{width:18px;height:18px;color:#d97706}
.wb-add{display:flex;flex-direction:column;gap:8px}
.wb-add-r .input[type=date]{width:auto}.wb-add-r .select{width:auto;min-width:110px}
.wb-range label{display:flex;align-items:center;gap:6px}.wb-range .input{width:auto}
.wb-star{color:#f59e0b}
.wb-wtext{white-space:pre-wrap;word-break:break-word}
.wb-export{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;width:100%}
.wb-set summary{cursor:pointer;list-style:none}.wb-set summary::-webkit-details-marker{display:none}
.wb-set summary h3{display:flex;align-items:center;gap:6px}
.wb-set h4{margin:18px 0 8px}.wb-set h4:first-child{margin-top:0}
.wb-narrow{max-width:140px}
@media (max-width:760px){
  .wb-status .wb-done{width:100%;justify-content:center}
  .wb-add-r{flex-wrap:wrap}.wb-add-r .input[type=date],.wb-add-r .select{flex:1}
  .wb-range .grow{flex-basis:100%}
  .wb-big b{font-size:22px}
}
/* == end wellbeing == */

/* == teachkit == */
.tc-tabs{display:flex;overflow-x:auto;max-width:100%;scrollbar-width:none}
.tc-tabs button{white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.tc-tabs button svg{width:15px;height:15px}
.tc-grid{align-items:start}
.tc-grid h3{margin:0 0 4px}
.tc-chip{cursor:pointer;user-select:none}
.tc-chip input{position:absolute;opacity:0;pointer-events:none}
.tc-picked{border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.tc-ok{color:#16a34a}.tc-bad{color:#dc2626}
.tc-res{cursor:pointer}
.tc-saved{padding-bottom:10px;border-bottom:1px solid var(--line)}
.tc-classes{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.tc-cl{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);cursor:pointer;min-width:140px;text-align:left;color:inherit;font:inherit}
.tc-cl.on{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 25%,transparent)}
.tc-warn{color:#b45309;font-weight:600}
.tc-stats{display:flex;gap:4px;flex-wrap:wrap}
.tc-stats .stat{padding:4px 14px 4px 0}
.tc-bar{display:flex;height:10px;border-radius:99px;background:var(--line);overflow:hidden}
.tc-bar i{display:block;height:100%}
.tc-bar .t{background:#16a34a}.tc-bar .p{background:#f59e0b}
.tc-pt{align-items:flex-start;gap:10px}
.tc-pt .tag{font-variant-numeric:tabular-nums}
.tc-pt .pill{cursor:pointer;border:0;white-space:nowrap;flex-shrink:0}
.tc-st-taught{background:#dcfce7;color:#166534}
.tc-st-planned{background:#fef3c7;color:#92400e}
.tc-st-none{background:#fee2e2;color:#991b1b}
[data-theme=dark] .tc-st-taught{background:#14532d;color:#bbf7d0}
[data-theme=dark] .tc-st-planned{background:#78350f;color:#fde68a}
[data-theme=dark] .tc-st-none{background:#7f1d1d;color:#fecaca}
.tc-found{max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.tc-from{width:auto;padding:4px 8px;height:32px}
.mt-4{margin-top:4px}
@media (max-width:760px){
  .tc-grid{grid-template-columns:1fr}
  .tc-stats .stat b{font-size:20px}
  .tc-cl{min-width:120px}
}
/* == end teachkit == */

/* == cpd == */
.cpd-stats .stat{position:relative}
.cpd-tgt .btn{margin-top:6px;align-self:flex-start}
.cpd-pbar{display:flex;align-items:center;gap:10px}.cpd-pbar .pbar{flex:1}
.cpd-break h4{margin:0 0 8px}
.cpd-brow{display:grid;grid-template-columns:90px 1fr 48px;align-items:center;gap:8px;width:100%;padding:4px 0;background:none;border:0;font:inherit;font-size:13px;color:inherit;cursor:pointer;text-align:left}
.cpd-brow i{display:block;height:8px;border-radius:4px;background:var(--brand);min-width:2px;opacity:.85}
.cpd-brow b{text-align:right;font-weight:600}.cpd-brow.zero{color:var(--text-2)}.cpd-brow.zero i{background:var(--line)}
.cpd-brow:hover span{text-decoration:underline}
.cpd-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.cpd-filters .select{width:auto;min-width:130px;max-width:100%}
.cpd-fsum{margin-left:auto}
.cpd-list{display:flex;flex-direction:column;gap:10px}
.cpd-card{display:flex;gap:12px;padding:14px;cursor:pointer;transition:border-color .15s}
.cpd-card:hover,.cpd-card:focus{border-color:var(--brand);outline:none}
.cpd-ic{flex:none;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft,rgba(13,148,136,.1));color:var(--brand)}
.cpd-ic svg{width:20px;height:20px}
.cpd-main{min-width:0}.cpd-t{font-size:15px}.cpd-h{flex:none;font-weight:700;color:var(--brand)}
.cpd-snip{margin:6px 0 0;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cpd-ts{font-weight:700}.cpd-has svg{width:12px;height:12px}
.cpd-stds{display:flex;flex-wrap:wrap;gap:6px}.cpd-std input{display:none}.cpd-std .cpd-stdl{font-weight:500;opacity:.8}
.cpd-refl{border:1px solid var(--line);border-radius:12px;padding:12px;margin:4px 0 12px}.cpd-refl h4{margin:0}
.cpd-ai{margin:10px 0;padding:10px;border-radius:10px;background:var(--ai-soft)}
.cpd-ai .ai-out p{margin:4px 0}
.cpd-cert{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cpd-cert a.grow{min-width:0}
.cpd-exptxt{font:12px/1.5 ui-monospace,Menlo,monospace;width:100%}
@media (max-width:760px){
  .cpd-stats{grid-template-columns:1fr 1fr}
  .cpd-std .cpd-stdl{display:none}
  .cpd-fsum{margin-left:0;width:100%}
  .cpd-filters .select{flex:1 1 40%;min-width:0}
  .cpd-brow{grid-template-columns:70px 1fr 44px}
}
/* == end cpd == */

/* == share == */
.sh-open{display:flex;flex-direction:column;gap:10px}
.sh-open .li-ic{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:var(--panel);color:var(--brand)}
.sh-openf{display:flex;gap:8px}
.sh-openf .input{flex:1;min-width:0}
.sh-tabs{display:inline-flex}
.sh-row{align-items:center;gap:12px}
.sh-main{display:flex;flex-direction:column;min-width:0;gap:2px}
.sh-note{font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
.sh-acts{display:flex;gap:6px;align-items:center}
.sh-on{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}
.sh-off{opacity:.65}
.sh-pick{width:100%;text-align:left;background:none;border:0;cursor:pointer;font:inherit;color:inherit}
.sh-pick .grow{display:flex;flex-direction:column;min-width:0}
.sh-url{display:flex;gap:8px;margin-top:12px}
.sh-url .input{flex:1;min-width:0;font-size:13px}
.sh-h{margin:22px 0 10px;font-size:16px}
.sh-lessons{overflow:hidden}
.sh-lesson{border-bottom:1px solid var(--line)}
.sh-lesson:last-child{border-bottom:0}
.sh-lesson>summary{cursor:pointer;padding:14px 16px;list-style:revert}
.sh-lb{padding:0 16px 16px}
.sh-obj{margin:4px 0 12px;padding-left:20px}
.sh-res{margin-top:12px;border:1px solid var(--line);border-radius:10px}
.sh-mode{display:flex;width:100%}
.sh-mode button{flex:1}
@media (max-width:760px){
  .sh-row{flex-wrap:wrap}
  .sh-main{flex:1 1 calc(100% - 50px)}
  .sh-meta{flex-direction:row;align-items:center;margin-left:46px}
  .sh-acts{margin-left:auto}
  .sh-page .phead .acts{width:100%}
  .sh-page .phead .acts .btn{flex:1;justify-content:center}
  .sh-tabs{display:flex;width:100%}
  .sh-tabs button{flex:1}
}
/* == end share == */

/* == appraisal == */
.ap-meets{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}
.ap-meet{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ap-meet b{font-size:15px}.ap-meet.soon{border-color:color-mix(in srgb,#f59e0b 55%,var(--line));background:color-mix(in srgb,#f59e0b 7%,var(--panel))}
.ap-meet.past{opacity:.65}.ap-soon{color:#b45309;font-weight:600}.ap-late{color:#dc2626;font-weight:600}
.ap-cyc{width:auto;min-width:120px}
.ap-stats .stat .small{display:block}
.ap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;align-items:start}
.ap-t{border-left:4px solid var(--line)}.ap-t-on_track{border-left-color:var(--brand)}.ap-t-at_risk{border-left-color:#f59e0b}.ap-t-achieved{border-left-color:#16a34a}
.ap-tt{margin:0;font-size:15px;line-height:1.35;display:flex;align-items:baseline;gap:8px}
.ap-th{align-items:flex-start;gap:8px}
.ap-desc{margin:10px 0 0;color:var(--text-2);font-size:13px;white-space:pre-line}
.ap-crit,.ap-saved,.ap-more{margin-top:8px}.ap-crit summary,.ap-saved summary,.ap-more summary{cursor:pointer;color:var(--text-2);font-weight:600}
.ap-crit ul{margin:6px 0 0;padding-left:18px;font-size:13px}.ap-saved .prose{margin-top:6px;font-size:13px;background:var(--brand-soft);border-radius:10px;padding:10px 12px}
.ap-st{font-weight:600}.ap-st-not_started{background:var(--hover);color:var(--text-2)}.ap-st-on_track{background:var(--brand-soft);color:var(--brand)}
.ap-st-at_risk{background:color-mix(in srgb,#f59e0b 15%,var(--panel));color:#b45309}.ap-st-achieved{background:color-mix(in srgb,#16a34a 14%,var(--panel));color:#15803d}
.ap-ts{font-size:11px}
.ap-rag{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;transform:translateY(-1px)}
.ap-rag-red{background:#dc2626}.ap-rag-amber{background:#f59e0b}.ap-rag-green{background:#16a34a}
.ap-prog{display:flex;align-items:center;gap:10px;margin:14px 0 4px;flex-wrap:wrap}.ap-prog>b{font-size:13px;min-width:38px;text-align:right}
.ap-steps{display:flex;gap:4px;width:100%}
.ap-step{flex:1;height:22px;border-radius:6px;border:1px solid var(--line);background:var(--panel);cursor:pointer;padding:0}
.ap-step.on{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}.ap-step:hover{border-color:var(--brand)}
.ap-evh{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.ap-evs{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.ap-ev{display:flex;align-items:flex-start;gap:8px;padding:6px 4px;border-radius:8px}.ap-ev:hover{background:var(--hover)}
.ap-ev-k{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;flex:none;background:var(--hover);color:var(--text-2)}
.ap-ev-k svg{width:14px;height:14px}.ap-k-lesson{color:var(--brand)}.ap-k-win{color:#d97706}.ap-k-cpd{color:var(--ai)}
.ap-ev-b{min-width:0;display:flex;flex-direction:column}.ap-ev-t{font-size:13px;overflow-wrap:anywhere;color:var(--text)}a.ap-ev-t:hover{color:var(--brand)}
.ap-url{color:var(--brand);overflow-wrap:anywhere}.ap-removed .ap-ev-k{opacity:.5}.ap-removed .ap-ev-b{font-style:italic}
.ap-stds{display:flex;flex-wrap:wrap;gap:6px}.ap-std{cursor:pointer;user-select:none}.ap-std input{display:none}
.ap-range{width:100%;accent-color:var(--brand)}
.ap-tabs{width:100%;display:flex}.ap-tabs button{flex:1}
.ap-cands{max-height:52vh;overflow:auto}
.ap-cand{cursor:pointer;align-items:flex-start}.ap-cand input{margin-top:6px;flex:none;accent-color:var(--brand)}
.ap-cand .grow{display:flex;flex-direction:column;min-width:0}.ap-ct{overflow-wrap:anywhere}
.ap-linked{opacity:.55}.ap-reason{color:var(--ai);margin-top:2px}.ap-ex{margin-top:2px}
.ap-rv-h{align-items:center}.ap-meet.select,.ap-rv-h .select{width:auto;flex:1;min-width:180px}
.ap-pickt{width:100%;text-align:left;background:none;border:0;cursor:pointer}
@media (max-width:760px){
  .ap-meets{grid-template-columns:1fr;gap:6px}.ap-meet{flex-direction:row;align-items:baseline;gap:8px;padding:8px 12px}.ap-meet b{margin-left:auto}
  .ap-grid{grid-template-columns:1fr}
  .ap-cyc{min-width:0;flex:1}
}
/* == end appraisal == */

/* == ect == */
.ec-tabs{margin:0 0 16px;max-width:100%;overflow-x:auto}
.ec-hero{text-align:left}.ec-hero h3{margin:8px 0 4px}.ec-hero-ic{width:44px;height:44px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:flex;align-items:center;justify-content:center}
.ec-form{margin-top:14px}
.ec-ov{align-items:start}
.ec-big{font-size:34px;font-weight:700;line-height:1.1;color:var(--brand)}
.ec-ring{--p:0;width:72px;height:72px;border-radius:50%;background:conic-gradient(var(--brand) calc(var(--p)*1%),var(--bg-2) 0);display:flex;align-items:center;justify-content:center;flex:none}
.ec-ring span{width:56px;height:56px;border-radius:50%;background:var(--panel);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}.ec-ring small{font-weight:500;color:var(--text-3);font-size:11px}
.ec-kv{display:grid;gap:6px;font-size:13.5px}.ec-kv>div{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line-2);padding-top:6px}.ec-kv span{color:var(--text-2)}.ec-kv b{font-weight:600;text-align:right}
.ec-prog{display:grid;gap:9px;margin-top:8px}
.ec-prow{display:grid;grid-template-columns:minmax(0,1fr) 120px 40px;gap:10px;align-items:center;font-size:13.5px}.ec-pn{text-align:right;color:var(--text-2);font-variant-numeric:tabular-nums}
.ec-rv.done b{color:var(--text-3);text-decoration:line-through}.ec-rv.soon{background:color-mix(in srgb,var(--warn) 7%,var(--panel))}.ec-soon{color:var(--warn);font-weight:600}
.ec-formal{background:color-mix(in srgb,var(--ai) 12%,var(--panel));color:var(--ai)}
.ec-steps{display:grid;gap:6px;margin-top:6px}.ec-step em{font-style:normal}.ec-step.done em{color:var(--text-3);text-decoration:line-through}
.ec-filters{margin-bottom:14px;align-items:center}.ec-filters .select{width:auto;min-width:150px}
.ec-area{margin-bottom:14px}.ec-ah{display:flex;justify-content:space-between;align-items:center;gap:12px}.ec-ah h3{margin:0}.ec-ap{display:flex;align-items:center;gap:8px;width:170px;flex:none}.ec-ap .pbar{flex:1}
.ec-task{align-items:flex-start}.ec-task [data-topen]{cursor:pointer}.ec-task.done .ec-tt{color:var(--text-3);text-decoration:line-through}
.ec-tt{font-weight:500}.ec-tm{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.ec-kind{display:inline-flex;align-items:center;gap:4px}.ec-kind svg{width:13px;height:13px}
.ec-kind.k-coach{color:var(--brand)}.ec-kind.k-observe{color:var(--info)}.ec-kind.k-discuss{color:var(--ai)}.ec-kind.k-own{color:var(--high)}
.ec-note{margin-top:4px;color:var(--text-2);white-space:pre-wrap;background:var(--panel-2);border-radius:var(--r-sm);padding:6px 8px}
.ec-mh{margin-bottom:12px;align-items:center}.ec-mh p{margin:0}
.ec-meet{margin-bottom:12px}.ec-meet h3{margin:0;display:flex;align-items:center;gap:6px}.ec-notes{white-space:pre-wrap}
.ec-sedit{display:flex;gap:8px;align-items:center;margin-bottom:6px}.ec-sedit .input{flex:1}
.ec-share{margin-top:14px}.ec-share.expired{opacity:.65}.ec-share h3{margin:0;display:flex;align-items:center;gap:6px}.ec-url{font-family:var(--mono);font-size:12px}
.ec-inc{margin-top:4px}
@media (max-width:760px){
  .ec-prow{grid-template-columns:minmax(0,1fr) 70px 36px}
  .ec-ah{flex-wrap:wrap}.ec-ap{width:100%}
  .ec-filters .select{flex:1 1 140px;min-width:0}
  .ec-share .card-h .row{flex-wrap:wrap}
}
/* == end ect == */

/* == department == */
.dp-tabs{margin:0 0 16px;max-width:100%;overflow-x:auto}
.dp-switch{max-width:220px}
.dp-privacy{display:flex;gap:10px;align-items:flex-start;margin-top:16px}
.dp-privacy>svg{width:18px;height:18px;flex:none;margin-top:2px}
.dp-privacy p{margin:4px 0 0;font-size:13px}
.dp-term{margin:18px 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2)}
.dp-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.dp-unit{display:flex;flex-direction:column}
.dp-unit .card-b{flex:1}
.dp-uh h3{margin:0 0 6px;font-size:16px}
.dp-tags{gap:6px;margin-bottom:6px}
.dp-clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:6px 0 0}
.dp-mine{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.dp-mine-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dp-mine-row a.tag{text-decoration:none;color:var(--text)}
.dp-upd{background:color-mix(in srgb,#f59e0b 18%,var(--panel));color:#b45309}
.dp-upd svg{width:12px;height:12px}
.dp-h{margin:16px 0 6px;font-size:14px}
.dp-pre{white-space:pre-line;margin:2px 0}
.dp-lessons{padding-left:20px;margin:0}
.dp-lessons li{margin-bottom:10px}
.dp-lhead{margin-top:8px;gap:8px}
.dp-lhead .row{gap:8px}
.dp-lessons-ed{display:flex;flex-direction:column;gap:10px}
.dp-lrow{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel)}
.dp-lrow .col{gap:6px;display:flex;flex-direction:column;min-width:0}
.dp-lnum{width:24px;height:24px;border-radius:50%;background:var(--bg-2);display:grid;place-items:center;font-size:12px;font-weight:700;flex:none;margin-top:6px}
.dp-lact{display:flex;flex-direction:column;gap:4px}
.dp-rot svg{transform:rotate(180deg)}
.dp-weeks{max-width:180px}
.dp-link{gap:8px}
.dp-code{font-size:12px;word-break:break-all;background:var(--bg-2);padding:2px 6px;border-radius:5px}
.dp-invite .card-f,.dp-unit .card-f{gap:8px;align-items:center}
.dp-mysch{margin-top:14px}
.dp-mysch .select{max-width:360px}
.dp-gridwrap{overflow-x:auto}
.dp-grid{min-width:100%}
.dp-grid th,.dp-grid td{vertical-align:top}
.dp-gh{text-align:center;min-width:96px}
.dp-gh .av{width:26px;height:26px;font-size:11px;margin:0 auto 2px;display:grid}
.dp-gh span{display:block;font-size:12px}
.dp-gu b{display:block}
.dp-gu span{display:block}
.dp-cell{text-align:center;font-size:12px;border-radius:6px}
.dp-cell b{display:block;font-size:15px}
.dp-cell span{display:block;color:var(--text-2)}
.dp-cell.good{background:color-mix(in srgb,#22c55e 14%,var(--panel))}
.dp-cell.mid{background:color-mix(in srgb,#f59e0b 14%,var(--panel))}
.dp-cell.low{background:color-mix(in srgb,#0ea5e9 10%,var(--panel))}
.dp-cell.none{color:var(--text-2)}
.dp-warn{display:block;font-style:normal;color:#b45309;font-size:11px;margin-top:2px}
.dp-members{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.dp-mcard .card-h{gap:10px;align-items:center}
.dp-mcard h3{margin:0;font-size:15px}
.dp-stats .stat{padding:8px 6px}
.dp-stats .stat b{font-size:20px}
.dp-stats .stat.warn b{color:#b45309}
.dp-alist .li{align-items:center;gap:10px}
.dp-alist .pbar{margin-top:6px}
.dp-join h2{margin:8px 0 4px}
.dp-jic{width:44px;height:44px}
@media (max-width:760px){
  .dp-units,.dp-members{grid-template-columns:1fr}
  .dp-stats{grid-template-columns:repeat(2,1fr)}
  .dp-link{flex-direction:column;align-items:stretch}
  .dp-switch{max-width:100%}
  .dp-lrow{padding:8px;gap:6px}
}
/* == end department == */

/* == connect == */
.cn-page .cn-card{padding:18px 20px;margin-top:16px}
.cn-card h3{margin:0;font-size:17px}
.cn-h{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.cn-logo{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--bg-2);color:var(--text-2)}
.cn-logo svg{width:22px;height:22px}
.cn-logo.cn-google{background:color-mix(in srgb,#4285f4 14%,var(--panel));color:#4285f4}
.cn-logo.cn-microsoft{background:color-mix(in srgb,#0078d4 14%,var(--panel));color:#0078d4}
.cn-state{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text-2);margin-top:2px;word-break:break-word}
.cn-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8;flex:none}
.cn-on .cn-dot{background:var(--ok,#16a34a)}
.cn-ready .cn-dot{background:var(--warn,#d97706)}
.cn-feats{display:grid;gap:10px;margin-top:8px}
.cn-feat{padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.cn-feat .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.cn-feat .grow b{display:inline}
.cn-ok{background:color-mix(in srgb,var(--ok,#16a34a) 14%,var(--panel));color:var(--ok,#16a34a);margin-left:4px}
.cn-setup summary{cursor:pointer}
.cn-steps{margin:8px 0;padding-left:22px;display:grid;gap:7px;line-height:1.5}
.cn-steps .mono{word-break:break-all}
.cn-copy{display:flex;gap:8px;margin:6px 0 10px}
.cn-copy .input{flex:1;min-width:0}
.cn-unlocks .li{text-decoration:none;color:inherit}
.cn-unlocks .grow{display:flex;flex-direction:column}
@media (max-width:600px){.cn-page .cn-card{padding:14px}.cn-copy .btn span{display:none}}
/* == end connect == */

/* == cloudfiles == */
.cf-tabs{margin-bottom:14px}
.cf-tabs button{display:inline-flex;align-items:center;gap:6px}
.cf-dot{width:7px;height:7px;border-radius:50%;background:#16a34a;display:inline-block}
.cf-off{text-align:center;max-width:520px;margin:10px auto;padding:28px 22px}
.cf-off-ic{width:52px;height:52px;border-radius:14px;margin:0 auto 10px;display:grid;place-items:center;background:var(--panel);color:var(--brand)}
.cf-off-ic svg{width:26px;height:26px}
.cf-off h3{margin:0 0 6px}
.cf-card{overflow:hidden}
.cf-tools{display:flex;gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.cf-crumbs{display:flex;align-items:center;gap:2px;flex-wrap:wrap;min-width:0}
.cf-crumbs>svg{width:14px;height:14px;opacity:.5;flex:none}
.cf-crumb{background:none;border:0;padding:4px 6px;border-radius:6px;font:inherit;color:var(--text-2);cursor:pointer;display:inline-flex;align-items:center;gap:5px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cf-crumb svg{width:15px;height:15px}
.cf-crumb:hover{background:var(--panel)}
.cf-crumb:last-child,.cf-crumb.on{color:inherit;font-weight:600}
.cf-search{position:relative;flex:0 1 260px}
.cf-search .input{padding-left:32px}
.cf-sic{position:absolute;left:10px;top:50%;transform:translateY(-50%);opacity:.5;display:flex}
.cf-sic svg{width:15px;height:15px}
.cf-quick{display:flex;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.cf-list{margin:0}
.cf-row{gap:10px;align-items:center}
.cf-row.on{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.cf-row.dis{opacity:.55}
.cf-chk{width:22px;flex:none;display:flex;justify-content:center}
.cf-chk input{width:18px;height:18px;cursor:pointer}
.cf-name{background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;flex-direction:column;min-width:0}
.cf-name:disabled{cursor:default}
.cf-ic{flex:none}
.cf-t-folder{color:#ca8a04}.cf-t-doc{color:#2563eb}.cf-t-slides{color:#ea580c}.cf-t-sheet{color:#16a34a}.cf-t-pdf{color:#dc2626}.cf-t-image{color:#7c3aed}.cf-t-video{color:#db2777}
.cf-ok{color:#15803d;display:inline-flex;align-items:center;gap:4px;text-decoration:none}
.cf-warn{color:#b45309;display:inline-flex;align-items:center;gap:4px;text-decoration:none}
.cf-ok svg,.cf-warn svg{width:13px;height:13px}
.cf-more{padding:12px;text-align:center}
.cf-file{margin:0}
.cf-bar{position:sticky;bottom:0;z-index:5;margin-top:14px}
.cf-bar-in{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--bg,#fff);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:0 6px 20px rgba(0,0,0,.08)}
.cf-bar.on .cf-bar-in{border-color:var(--brand)}
.cf-pdf{margin:0}
.cf-rec{gap:10px;align-items:center}
.cf-rec a.grow{display:flex;flex-direction:column;min-width:0;color:inherit;text-decoration:none}
@media (max-width:760px){
  .cf-tools{flex-direction:column;align-items:stretch}
  .cf-search{flex:1 1 auto}
  .cf-bar{bottom:calc(env(safe-area-inset-bottom,0px) + 64px)}
  .cf-bar-in .btn.primary{flex:1 1 100%;justify-content:center}
  .cf-crumb{max-width:140px}
}
/* == end cloudfiles == */

/* == classpush == */
.cp-row{align-items:center;gap:12px;flex-wrap:wrap}
.cp-cls{min-width:120px}
.cp-links-col{display:flex;flex-direction:column;gap:4px;min-width:0}
.cp-link{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px}
.cp-acts{flex-wrap:wrap;justify-content:flex-end}
.cp-ncs{margin-bottom:16px}
.cp-nc .li-ic{flex:none}
.cp-seg{margin:4px 0 12px}
.cp-text{white-space:pre-wrap;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.5;max-height:260px;overflow:auto}
.cp-conf{display:flex;flex-direction:column;gap:10px}
.cp-conf .kv{display:flex;gap:10px}
.cp-conf .kv span{min-width:70px;color:var(--text-2)}
.cp-vis{margin-top:4px}
.cp-res .chip{display:inline-flex;align-items:center;gap:6px}
.cp-pub{margin-top:6px}
.cp-hist{align-items:center;gap:10px}
.cp-hist .grow{min-width:0;display:flex;flex-direction:column}
.pill.cp-pubd{background:#dcfce7;color:#166534}
.pill.cp-draft{background:#f1f5f9;color:#475569}
.cp-crumbbtn{margin-left:auto}
.crumbs:has(.cp-crumbbtn){display:flex;align-items:center;gap:6px}
@media (max-width:760px){
  .cp-row{align-items:flex-start}
  .cp-acts{width:100%;justify-content:flex-start}
  .cp-hist{flex-wrap:wrap}
  .cp-hist .grow{flex-basis:calc(100% - 50px)}
  .cp-btn span{display:none}
}
/* == end classpush == */

/* == quizexport == */
.qx-page .seg.sm button{padding:5px 10px;font-size:13px}
.qx-paste{font-family:inherit;min-height:160px}
.qx-q{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--panel)}
.qx-num{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:50%;background:var(--brand);color:#fff;font-weight:700;font-size:13px}
.qx-type{width:auto;min-width:150px}.qx-time{width:auto;min-width:92px}
.qx-field{position:relative}
.qx-field textarea{resize:vertical;padding-right:58px}
.qx-count{font-size:11px;color:var(--text-2);white-space:nowrap}
.qx-field .qx-count{position:absolute;right:8px;bottom:6px}
.qx-count.over{color:#c0392b;font-weight:700}
.qx-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.qx-opt{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:6px 8px;cursor:pointer;min-width:0}
.qx-opt.ok{border-color:#2e9d5b;background:rgba(46,157,91,.08)}
.qx-opt input[type=checkbox]{width:18px;height:18px;flex:none;accent-color:#2e9d5b}
.qx-opt .input{min-width:0;border:0;padding:4px 2px;background:transparent}
.qx-let{font-weight:700;color:var(--text-2);width:14px;flex:none}
.qx-formats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.qx-fmt{display:flex;flex-direction:column;gap:4px;text-align:left;border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--panel);cursor:pointer;font:inherit;color:inherit}
.qx-fmt span{font-size:12px;color:var(--text-2);line-height:1.35}
.qx-fmt.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset}
.qx-steps{margin:4px 0 0 18px;padding:0;font-size:14px;line-height:1.55}
.qx-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;white-space:pre;overflow:auto}
.qx-preview{margin:10px 0 0 18px;padding:0}.qx-preview li{margin-bottom:8px}
.qx-right{color:#2e9d5b;font-weight:600}
@media (max-width:760px){
  .qx-opts{grid-template-columns:1fr}
  .qx-formats{grid-template-columns:1fr 1fr}
  .qx-type{min-width:0;flex:1}
}
/* == end quizexport == */
/* == lessonqr == */
.lq-grid{align-items:start}
.lq-li{gap:12px}
.lq-time{display:flex;flex-direction:column;min-width:48px}
.lq-lt{display:flex;flex-direction:column;min-width:0}
.lq-live{color:var(--brand);display:inline-flex;align-items:center;gap:3px}
.lq-live svg,.lq-views svg{width:13px;height:13px}
.lq-views{display:inline-flex;align-items:center;gap:4px}
.lq-res .lq-ri{cursor:pointer;gap:10px}
.lq-res .lq-ri input{width:20px;height:20px;accent-color:var(--brand);flex:none}
.lq-res .lq-off{opacity:.55;cursor:not-allowed}
.lq-res .grow{display:flex;flex-direction:column;min-width:0}
.lq-seg{flex-wrap:wrap}
.lq-show{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:center}
.lq-qr{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:8px;display:grid;place-items:center;aspect-ratio:1}
.lq-img{width:100%;height:auto;image-rendering:pixelated;display:block}
.lq-meta{display:flex;flex-direction:column;gap:14px}
.lq-meta .pill{display:inline-flex;align-items:center;gap:4px}
.lq-meta .pill svg{width:13px;height:13px}
.lq-url{display:flex;gap:8px}.lq-url .input{flex:1;min-width:0;font-family:var(--mono);font-size:12px}
.lq-proj{position:fixed;inset:0;z-index:9999;background:#fff;color:#0f1f1c;display:grid;place-items:center;padding:3vmin;cursor:zoom-out}
.lq-proj-in{display:flex;align-items:center;justify-content:center;gap:5vmin;width:100%;height:100%}
.lq-proj-img{height:min(88vh,88vw);width:auto;max-width:60vw;image-rendering:pixelated}
.lq-proj-t{max-width:34vw}.lq-proj-t h1{font-size:clamp(28px,4.5vw,64px);line-height:1.1;margin:0 0 .3em}
.lq-proj-t p{font-size:clamp(18px,2.2vw,32px);margin:0 0 .5em;color:#4b5d59}.lq-proj-hint{color:#0f766e!important;font-weight:600}
.lq-proj-x{position:absolute;top:16px;right:16px;width:48px;height:48px;border-radius:50%;border:1px solid #e3e8e6;background:#fff;color:#0f1f1c;display:grid;place-items:center;cursor:pointer}
@media (orientation:portrait){.lq-proj-in{flex-direction:column}.lq-proj-img{max-width:88vw;height:auto;width:min(88vw,70vh)}.lq-proj-t{max-width:90vw;text-align:center}}
@media (max-width:760px){.lq-show{grid-template-columns:1fr}.lq-qr{max-width:320px;margin:0 auto;width:100%}.lq-li .btn span{display:none}.lq-li .btn{padding:0 10px}}
/* == end lessonqr == */

/* == calsync == */
.cs-page .cs-card{margin-bottom:16px}
.cs-card .card-h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cs-card .pill.on{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}
.cs-dirs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cs-dir{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--panel)}
.cs-dir input{position:absolute;opacity:0;pointer-events:none}
.cs-dir.on{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 20%,transparent)}
.cs-what .check{margin:6px 0}
.cs-sum .kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed var(--line)}
.cs-sum .kv span{color:var(--text-2)}
.cs-sum .kv b{text-align:right;overflow-wrap:anywhere}
.cs-log{padding:8px 16px 12px;border-top:1px solid var(--line)}
.cs-log summary{cursor:pointer}
.cs-log ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}
.cs-log li.cs-warn{color:#b45309}
.cs-pulled{border-top:1px solid var(--line)}
.cs-ev{width:100%;text-align:left}
.cs-foot{display:flex;gap:8px;align-items:flex-start}
@media (max-width:760px){.cs-dirs{grid-template-columns:1fr}.cs-card .card-f .grow{display:none}}
/* == end calsync == */
/* == freeres == */
.fr-pad{margin:0 0 8px}
.fr-list{margin-bottom:8px}
.fr-item{align-items:flex-start;gap:10px}
.fr-item .fr-link{display:flex;flex-direction:column;gap:3px;min-width:0;color:inherit;text-decoration:none}
.fr-item .fr-link b{font-weight:600;line-height:1.3;overflow-wrap:anywhere}
.fr-item .fr-link:hover b{text-decoration:underline}
.fr-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fr-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fr-meta svg{width:12px;height:12px;opacity:.5}
.fr-src{flex:none;font-size:10.5px;font-weight:700;letter-spacing:.02em;padding:3px 7px;border-radius:6px;margin-top:2px;min-width:58px;text-align:center}
.fr-src.fr-oak{background:#e8f5ec;color:#1b6b3a}
.fr-src.fr-bbc{background:#eef0f3;color:#1f2933}
.fr-acts{display:flex;gap:2px;flex:none}
.fr-saved{gap:3px;color:var(--brand)}
.fr-saved svg{width:12px;height:12px}
.fr-fb .fr-link b{font-weight:500}
.fr-fbl{border-top:1px dashed var(--line);padding-top:4px}
.fr-hid{opacity:.55}
.fr-phrase{display:inline-block;margin:0 4px 4px 0;padding:1px 8px;border-radius:10px;background:var(--panel);border:1px solid var(--line);font-size:11.5px;color:var(--text-2)}
.fr-showhid{margin:0 0 8px}
.fr-foot{margin-top:6px}
.fr-sform{display:flex;gap:8px;align-items:center}
.fr-sform .select{max-width:220px}
.fr-weekbar{display:flex;align-items:center;gap:8px}
.fr-weekbar h3{margin:0}
.fr-lesson{border-bottom:1px solid var(--line)}
.fr-lesson:last-child{border-bottom:0}
.fr-lhead{border:0}
.fr-lhead a.grow{display:flex;flex-direction:column;min-width:0;color:inherit;text-decoration:none}
.fr-dot{width:10px;height:10px;border-radius:50%;background:var(--c);flex:none}
.fr-lbody{padding:4px 14px 6px 34px}
.fr-lfoot{padding:0 14px 10px 34px}
.fr-card .card-h h3{display:flex;align-items:center;gap:6px}
.fr-card .card-h h3 svg{width:16px;height:16px}
.fr-card .fr-item{padding-left:0;padding-right:0}
.fr-card .fr-src{min-width:0}
@media (max-width:760px){
  .fr-sform{flex-wrap:wrap}
  .fr-sform .input{flex:1 1 100%}
  .fr-sform .select{flex:1;max-width:none}
  .fr-lbody,.fr-lfoot{padding-left:14px}
  .fr-src{min-width:0}
}
/* == end freeres == */

/* == offline == */
.pw-off{display:inline-flex;align-items:center;gap:6px;flex:none;height:30px;padding:0 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--warn,#d97706) 45%,transparent);background:color-mix(in srgb,var(--warn,#d97706) 14%,transparent);color:inherit;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap;max-width:46vw}
.pw-off svg{width:15px;height:15px;flex:none;color:var(--warn,#d97706)}
.pw-off:not(.is-off){border-color:color-mix(in srgb,var(--brand) 45%,transparent);background:color-mix(in srgb,var(--brand) 12%,transparent)}
.pw-off:not(.is-off) svg{color:var(--brand)}
.pw-off.is-sync svg{animation:pw-off-spin 1s linear infinite}
.pw-off-t{overflow:hidden;text-overflow:ellipsis}
.pw-off-n{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--warn,#d97706);color:#fff;font-size:11px}
.pw-off:not(.is-off) .pw-off-n{background:var(--brand)}
@keyframes pw-off-spin{to{transform:rotate(360deg)}}
@media (max-width:640px){.pw-off-x{display:none}.pw-off{padding:0 8px}}
/* == end offline == */
/* == account == */
.ac-row,.ac-ready{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}
.ac-row b,.ac-ready b{display:block}
.ac-row .faint,.ac-ready .faint{display:block}
.ac-ic{width:36px;height:36px;border-radius:10px;background:var(--bg-2);display:inline-grid;place-items:center;flex:none;color:var(--text-2)}
.ac-ic svg{width:18px;height:18px}.ac-ic.ok{background:var(--brand-soft);color:var(--brand)}
.ac-x:empty{display:none}
.ac-x{margin-bottom:12px}
.ac-ready{flex-wrap:wrap;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);margin:0}
.ac-ready .grow{min-width:180px}
.ac-prog{display:grid;gap:8px}
.ac-bar{height:6px;border-radius:3px;background:var(--bg-2);overflow:hidden;position:relative}
.ac-bar i{position:absolute;inset:0 auto 0 0;width:40%;border-radius:3px;background:var(--brand);animation:ac-slide 1.2s ease-in-out infinite}
@keyframes ac-slide{from{left:-40%}to{left:100%}}
.ac-danger{border-color:color-mix(in srgb,var(--danger,#c0392b) 35%,var(--line))}
.ac-danger h3{color:var(--danger,#c0392b)}
.ac-note,.ac-err{display:flex;align-items:center;gap:8px;margin:0}
.ac-note svg,.ac-err svg{width:16px;height:16px;flex:none}
.ac-err{color:var(--danger,#c0392b);margin-top:8px}
.ac-list{margin:0 0 10px;padding-left:18px;display:grid;gap:4px;font-size:13.5px}
@media (max-width:760px){.ac-ready .btn{width:100%}}
/* == end account == */
/* == textsize == */
/* The base CSS is px-based, so larger text scales each region with CSS zoom (reflows to fit — no sideways scroll).
   The shell grid (100dvh) is never zoomed; only its parts are, so heights stay correct. */
html[data-text=large]{--pw-z:1.12}
html[data-text=xlarge]{--pw-z:1.25}
html[data-text] .content>*,html[data-text] .top,html[data-text] .tabs,html[data-text] .side>*,
html[data-text] .modal-h,html[data-text] .modal-b,html[data-text] .modal-f,html[data-text] .toasts{zoom:var(--pw-z,1)}
html[data-text] .side{width:auto}
@media (max-width:760px){
  html[data-text] .content{padding-bottom:calc(96px * var(--pw-z,1) + env(safe-area-inset-bottom))}
  html[data-text] .side{width:min(calc(300px * var(--pw-z,1)),88vw)}
  html[data-text] .side>*{zoom:var(--pw-z,1)}
}
@media (min-width:761px){html[data-text] .app{grid-template-columns:calc(var(--side-w) * var(--pw-z,1)) 1fr}}
html[data-text] .card-h{flex-wrap:wrap;row-gap:4px}
html[data-text] .card-h h3{flex:1 1 auto}
/* == end textsize == */

/* == ect-mentor == */
.ecm-by{margin-left:6px;font-weight:500;vertical-align:middle}
.ecm-comments{margin-bottom:14px}
.ecm-ch{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.ecm-cb{white-space:pre-wrap;margin-top:2px;font-size:14px}
.ecm-view .ec-ov{margin-bottom:14px}
.ecm-forms{margin-bottom:14px}
.ecm-form h3{margin:0 0 4px;display:flex;gap:6px;align-items:center}
.ecm-form textarea{width:100%}
.ecm-h{margin:18px 0 8px}
.ecm-steps{margin:6px 0 0;padding-left:18px;font-size:14px}
.ecm-steps li{margin:3px 0}
.ecm-steps li.done{text-decoration:line-through;opacity:.6}
.ecm-tick{flex:none;width:18px;height:18px;margin-top:2px;border:1.5px solid var(--line,#c5d1ce);border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.ecm-tick.on{background:var(--brand,#0d9488);border-color:var(--brand,#0d9488)}
.ecm-tick svg{width:12px;height:12px}
.ecm-area{border-top:1px solid var(--line,#e3e8e6)}
.ecm-area:first-child{border-top:0}
.ecm-area>summary{display:flex;gap:8px;align-items:center;padding:12px 16px;cursor:pointer;font-weight:600}
@media(max-width:600px){.ecm-forms,.ecm-view .ec-ov{grid-template-columns:minmax(0,1fr)}}
/* == end ect-mentor == */

/* == help == */
.hp-page .phead{margin-bottom:16px}
.hp-search{position:relative;margin-bottom:18px}
.hp-search>span{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-3);display:flex;pointer-events:none}
.hp-search>span svg{width:17px;height:17px}
.hp-search .input{padding-left:40px;height:46px;font-size:15px;border-radius:12px}
.hp-top{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;margin-bottom:18px;align-items:start}
.hp-top>:only-child{grid-column:1/-1}
.hp-sec{min-width:0}
.hp-sech{display:flex;align-items:center;gap:8px;font-size:15px;margin:0 0 10px}
.hp-sech svg{width:17px;height:17px;color:var(--brand)}
.hp-cl .card-h h3 svg{color:var(--brand)}
.hp-clbar{height:6px;background:var(--bg-2);margin:0 18px;border-radius:3px;overflow:hidden;margin-top:12px}
.hp-clbar i{display:block;height:100%;background:var(--brand);border-radius:3px;transition:width .3s}
.hp-cldone{margin:10px 18px 0;color:var(--brand);font-weight:600;display:flex;align-items:center;gap:6px}
.hp-cldone svg{width:16px;height:16px}
.hp-clist{list-style:none;margin:6px 0 0;padding:0}
.hp-clist li{display:flex;align-items:center;gap:12px;padding:10px 18px;border-top:1px solid var(--line-2);min-width:0}
.hp-clist li:first-child{border-top:0}
.hp-clist li>.grow{min-width:0;display:flex;flex-direction:column}
.hp-clist li.done b{color:var(--text-2);text-decoration:line-through;text-decoration-color:var(--text-3)}
.hp-clacts{display:flex;gap:6px;flex:none}
.hp-tick{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);background:var(--panel);flex:none;display:grid;place-items:center;cursor:pointer;color:#fff;padding:0}
.hp-tick:hover:not(:disabled){border-color:var(--brand)}
.hp-tick:disabled{cursor:default}
.hp-tick svg{width:15px;height:15px}
li.done .hp-tick{background:var(--brand);border-color:var(--brand)}
.hp-showcl{margin:0 0 14px}
.hp-tours{display:grid;gap:8px}
.hp-tourcard{display:flex;align-items:center;gap:12px;padding:11px 14px;text-align:left;cursor:pointer;font:inherit;color:inherit;width:100%;min-width:0}
.hp-tourcard:hover{border-color:var(--brand)}
.hp-tourcard>svg{width:18px;height:18px;color:var(--brand);flex:none}
.hp-tourcard .grow{display:flex;flex-direction:column;min-width:0}
.hp-tourcard .hp-seen{color:var(--brand)}
.hp-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.hp-group .card-h h3 svg{flex:none}
.hp-list{display:flex;flex-direction:column}
.hp-row{display:flex;align-items:center;gap:10px;padding:11px 18px;border-top:1px solid var(--line-2);text-decoration:none;color:inherit;min-width:0}
.hp-row:first-child{border-top:0}
.hp-row:hover{background:var(--hover)}
.hp-row .grow{display:flex;flex-direction:column;min-width:0}
.hp-row b{font-weight:600}
.hp-row .hp-chev{width:16px;height:16px;color:var(--text-3);flex:none}
.hp-tourpill{flex:none}.hp-tourpill svg{width:11px;height:11px}
.hp-new{padding:4px 0}
.hp-new details{border-top:1px solid var(--line-2);padding:0 18px}
.hp-new details:first-child{border-top:0}
.hp-new summary{display:flex;align-items:center;gap:10px;padding:11px 0;cursor:pointer;list-style:none}
.hp-new summary::-webkit-details-marker{display:none}
.hp-new ul{margin:0 0 12px;padding-left:20px;color:var(--text-2)}
.hp-new li{margin:3px 0}
.hp-foot{margin:22px 0 8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.hp-foot svg{width:14px;height:14px}
.hp-page>.hp-sec,.hp-page [data-home]>.hp-sec{margin-top:22px}
.hp-art{min-width:0}
.hp-sum{font-size:15px;margin:0 0 14px}
.hp-artacts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.hp-body{font-size:15px;line-height:1.65;overflow-wrap:anywhere}
.hp-body p{margin:0 0 12px}
.hp-body ol,.hp-body ul{margin:0 0 14px;padding-left:22px}
.hp-body li{margin:5px 0}
.hp-body a{color:var(--brand);font-weight:600}
.hp-body table{width:100%;border-collapse:collapse;margin:0 0 14px;display:block;overflow-x:auto}
.hp-body th,.hp-body td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.hp-video{position:relative;aspect-ratio:16/9;border-radius:var(--r);overflow:hidden;background:#000;margin-bottom:16px}
.hp-video iframe,.hp-video video{position:absolute;inset:0;width:100%;height:100%;border:0}
.hp-rel{margin-top:18px;border-top:1px solid var(--line-2);padding-top:14px}
.hp-rel h4{margin:0 0 6px;font-size:14px}
.hp-rel .hp-row{padding-left:0;padding-right:0}
.hp-pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.hp-pn a{display:flex;flex-direction:column;gap:2px;padding:12px 14px;text-decoration:none;color:inherit;min-width:0}
.hp-pn a:hover{border-color:var(--brand)}
.hp-pn span{display:flex;align-items:center;gap:4px}
.hp-pn svg{width:13px;height:13px}
.hp-pnr{text-align:right;align-items:flex-end}
.hp-modal .hp-rel .hp-row{padding:10px 0}
.hp-qbtn svg{width:20px;height:20px}
.hp-q{vertical-align:middle;text-decoration:none}
/* guided tour */
.hp-tour{position:fixed;inset:0;z-index:300}
.hp-spot{position:fixed;border-radius:12px;box-shadow:0 0 0 200vmax rgba(6,12,11,.55);transition:top .25s,left .25s,width .25s,height .25s;pointer-events:none;outline:2px solid var(--brand-2);outline-offset:2px}
.hp-spot.none{top:50%!important;left:50%!important;width:0!important;height:0!important;outline:0}
.hp-pop{position:fixed;background:var(--panel);color:var(--text);border-radius:16px;box-shadow:var(--sh-3);padding:14px 16px 12px;width:340px;max-width:calc(100vw - 24px);outline:none;transition:top .25s,left .25s,opacity .15s}
.hp-pop.center{top:50%!important;left:50%!important;transform:translate(-50%,-50%);width:min(380px,calc(100vw - 24px))!important}
.hp-tour.moving .hp-pop{opacity:.35}
.hp-pop-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-4px -6px 4px 0}
.hp-pop h4{margin:0 0 6px;font-size:16px}
.hp-pop p{margin:0 0 12px;color:var(--text-2);line-height:1.55}
.hp-pop-f{display:flex;align-items:center;gap:6px}
.hp-pop-f [hidden]{display:none}
@media (max-width:900px){.hp-top,.hp-groups{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .hp-page .phead .acts{width:100%}.hp-page .phead .acts .btn{flex:1}
  .hp-clist li{flex-wrap:wrap;padding:10px 14px}
  .hp-clist li>.grow{flex:1 1 calc(100% - 40px)}
  .hp-clacts{margin-left:38px}
  .hp-row{padding:11px 14px}
  .hp-pn{grid-template-columns:minmax(0,1fr)}
  .hp-pnr{text-align:left;align-items:flex-start}
  .hp-body{font-size:15.5px}
}
/* == end help == */
/* == academy == */
.ac-stats .stat{text-align:left}
.ac-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.ac-card{display:flex;gap:14px;padding:16px;color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .15s;min-width:0}
.ac-card:hover{border-color:var(--brand);box-shadow:0 2px 10px rgb(0 0 0 / 6%)}
.ac-card.done{background:color-mix(in srgb,var(--ok) 4%,var(--panel))}
.ac-ic{flex:0 0 40px;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}
.ac-card.done .ac-ic{background:color-mix(in srgb,var(--ok) 14%,var(--panel));color:var(--ok)}
.ac-ic svg{width:20px;height:20px}
.ac-cm{min-width:0}
.ac-t{font-size:15px;line-height:1.3}
.ac-top{align-items:flex-start}
.ac-sum{margin:4px 0 8px}
.ac-meta{align-items:center}
.ac-ts{height:20px;font-size:11px;padding:0 7px;background:var(--brand-soft);color:var(--brand)}
.ac-st{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--bg-2);color:var(--text-2);white-space:nowrap}
.ac-st.ok{background:color-mix(in srgb,var(--ok) 14%,var(--panel));color:var(--ok)}
.ac-st.go{background:color-mix(in srgb,var(--info) 12%,var(--panel));color:var(--info)}
.ac-next{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ac-back{display:inline-flex;align-items:center;gap:4px;color:var(--text-2);text-decoration:none;margin-bottom:8px}
.ac-back svg{width:14px;height:14px}
.ac-sec{margin-top:14px}
.ac-sec h3{display:flex;align-items:center;gap:8px;font-size:16px;margin:0 0 10px}
.ac-sec h3 svg{width:18px;height:18px;color:var(--brand)}
.ac-read{font-size:15px}
.ac-take ul{margin:0 0 12px;padding-left:20px;line-height:1.6}
.ac-links{border-top:1px solid var(--line);margin-top:14px;padding-top:10px;display:flex;flex-direction:column;gap:6px}
.ac-links h4{margin:0}
.ac-q{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 10px;min-width:0}
.ac-q legend{display:flex;gap:8px;font-weight:600;padding:0 4px;line-height:1.4}
.ac-qn{flex:0 0 22px;height:22px;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-size:12px;display:grid;place-items:center}
.ac-q.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}
.ac-q.bad{border-color:color-mix(in srgb,var(--warn) 50%,var(--line))}
.ac-opt{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:8px;cursor:pointer;line-height:1.4}
.ac-opt:hover{background:var(--bg-2)}
.ac-opt input{margin-top:3px;flex:0 0 auto}
.ac-opt.right{background:color-mix(in srgb,var(--ok) 12%,var(--panel))}
.ac-opt.wrong{background:color-mix(in srgb,var(--crit) 9%,var(--panel));text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--crit) 50%,transparent)}
.ac-why{margin:6px 4px 0;color:var(--text-2)}
.ac-score{font-size:14px}
.ac-score.ok b{color:var(--ok)}.ac-score.bad b{color:var(--warn)}
.ac-try{background:color-mix(in srgb,var(--brand) 5%,var(--panel))}
.ac-nextc{display:flex;align-items:center;gap:10px;margin-top:14px;color:inherit;text-decoration:none}
.ac-nextc .grow{display:flex;flex-direction:column}
.ac-nextc:hover{border-color:var(--brand)}
@media (max-width:760px){
  .ac-list{grid-template-columns:1fr}
  .ac-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .ac-stats .stat{padding:12px}
  .ac-stats .stat b{font-size:20px}
  .ac-card{padding:14px;gap:12px}
  .ac-ic{flex-basis:34px;width:34px;height:34px}
  .ac-top{flex-wrap:wrap}
  .ac-q{padding:10px}
  .ac-next .btn{width:100%;justify-content:center}
}
/* == end academy == */

/* == trainee == */
.tr-tabs-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 18px;scrollbar-width:none;max-width:100%}
.tr-tabs-wrap::-webkit-scrollbar{display:none}
.tr-tabs{flex-wrap:nowrap}
.tr-tabs a,.tr-tabs button{white-space:nowrap}
.tr-tb{font-size:11px;background:var(--brand-soft);color:var(--brand);border-radius:8px;padding:0 6px;font-weight:700}
.tr-bar{margin-bottom:14px}.tr-bar p{margin:0;flex:1 1 240px;min-width:0}
.tr-item{margin-bottom:14px}
.tr-item .card-h h3{min-width:0;overflow:hidden;text-overflow:ellipsis}
.tr-cur{border-color:color-mix(in srgb,var(--brand) 40%,var(--line))}
.tr-now{background:var(--brand-soft);color:var(--brand)}
.tr-mentor{background:color-mix(in srgb,var(--info) 12%,var(--panel));color:var(--info)}
.tr-mentor svg{width:12px;height:12px}
.tr-para{margin-top:10px}.tr-para p{margin:2px 0 0;white-space:pre-line;overflow-wrap:anywhere}
.tr-focus{margin:0 0 6px;overflow-wrap:anywhere}
.tr-chips{margin:6px 0 2px}
.tr-std{font-weight:700}
.tr-h{margin:4px 0 10px;font-size:18px;overflow-wrap:anywhere}
.tr-prog{display:grid;gap:6px;margin-bottom:6px}
.tr-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tr-kv div{background:var(--bg-2);border-radius:10px;padding:8px 10px;min-width:0}
.tr-kv span{display:block;font-size:12px;color:var(--text-3)}
.tr-kv b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-cov{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tr-ct{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);text-decoration:none;color:inherit;min-width:0;border-left-width:4px}
a.tr-ct:hover{background:var(--hover)}
.tr-cn{font-weight:800;font-size:15px}
.tr-cl{font-size:12.5px;font-weight:600;line-height:1.25;overflow-wrap:anywhere}
.tr-cc{font-size:11.5px;color:var(--text-3)}
.rag-green{--rag:var(--ok)}.rag-amber{--rag:var(--warn)}.rag-red{--rag:var(--crit)}
.tr-ct{border-left-color:var(--rag)}
.tr-badge{width:30px;height:30px;border-radius:9px;display:inline-grid;place-items:center;font-weight:800;font-size:13px;flex:none;color:#fff;background:var(--rag)}
.tr-so-met{color:var(--ok)}.tr-so-on_track{color:var(--info)}.tr-so-not_yet{color:var(--warn)}
.tr-sop{white-space:nowrap}
.tr-sop.tr-so-met{background:color-mix(in srgb,var(--ok) 14%,var(--panel))}
.tr-sop.tr-so-on_track{background:color-mix(in srgb,var(--info) 14%,var(--panel))}
.tr-sop.tr-so-not_yet{background:color-mix(in srgb,var(--warn) 16%,var(--panel))}
.tr-so{align-items:flex-start}
.tr-so .grow{min-width:0}
.tr-target{align-items:flex-start}
.tr-target .grow{min-width:0}
.tr-target.done .tr-tt{text-decoration:line-through;color:var(--text-3)}
.tr-tt{font-weight:600;overflow-wrap:anywhere}
.tr-succ{margin-top:3px}
.tr-late{color:var(--crit);font-weight:600}
.tr-dot{width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;flex:none;background:var(--bg-2);color:var(--text-3)}
.tr-dot.met{background:color-mix(in srgb,var(--ok) 16%,var(--panel));color:var(--ok)}
.tr-dot svg{width:13px;height:13px}
.tr-std-card{margin-bottom:10px;overflow:hidden}
.tr-sh{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;padding:12px 16px;text-align:left;cursor:pointer;color:inherit;font:inherit}
.tr-sh:hover{background:var(--hover)}
.tr-sh .grow{min-width:0}.tr-sh b,.tr-sh .faint{display:block}
.tr-sh svg{width:16px;height:16px;color:var(--text-3);flex:none}
.tr-sn{font-weight:700}
.tr-std-card.open .card-b{border-top:1px solid var(--line-2);padding-top:12px}
.tr-evl{border:1px solid var(--line-2);border-radius:10px;margin-top:10px}
.tr-evl .li{padding:10px 12px}
.tr-det summary{cursor:pointer;color:var(--brand);font-weight:600}
.tr-det ul{margin:6px 0 8px;padding-left:20px}
.tr-ai{background:var(--ai-soft);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.tr-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
.tr-chk{font-size:13.5px}
.tr-radios{display:grid;gap:8px}
.tr-comments{display:grid;gap:8px;margin-top:8px}
.tr-cm{background:var(--bg-2);border-radius:10px;padding:8px 10px}
.tr-cm p{margin:2px 0 0;white-space:pre-line;overflow-wrap:anywhere}
.tr-copy{display:flex;gap:8px}.tr-copy .input{flex:1;min-width:0}
.tr-av{--c:var(--brand)}
.tr-sugg{margin-bottom:14px;border-color:color-mix(in srgb,var(--ai) 35%,var(--line))}
.tr-hero{text-align:left}
.tr-hero-ic{width:48px;height:48px;border-radius:14px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin-bottom:10px}
.tr-hero-ic svg{width:24px;height:24px}
.tr-mso-a{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.tr-ov .card{min-width:0}
@media (max-width:760px){
  .tr-cov{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tr-checks{grid-template-columns:1fr}
  .tr-mso{flex-wrap:wrap}
  .tr-mso-a{flex-direction:row;align-items:center;width:100%;justify-content:flex-end}
  .tr-so .tr-sop{font-size:11px}
  .tr-copy{flex-wrap:wrap}.tr-copy .btn{width:100%}
}
/* == end trainee == */

/* == nations == */
.nt-seg{flex-wrap:wrap}
.nt-srow{flex-wrap:wrap;gap:8px}
.nt-sacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.nt-tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.nt-tbl{min-width:560px;width:100%}
.nt-tbl th:first-child{color:var(--text-2);font-weight:600;white-space:nowrap}
.nt-cat{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:8px}
.nt-cat summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.nt-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:10px 0}
.nt-unit h5{margin:0 0 4px;font-size:13px}
.nt-unit ul{margin:0;padding-left:18px;font-size:13px;color:var(--text-2)}
.nt-auth{max-width:340px}
@media (max-width:760px){.nt-sacts{width:100%}.nt-sacts .select{flex:1;min-width:0}.nt-units{grid-template-columns:1fr}}
/* == end nations == */

/* == homework == */
.hw-page .hw-alerts{display:grid;gap:8px;margin-bottom:14px}
.hw-page .hw-alerts .note{display:flex;gap:8px;align-items:flex-start}
.hw-st.set{background:var(--panel);color:var(--text-2)}
.hw-st.collected{background:#e0f2fe;color:#075985}
.hw-st.marked{background:#dcfce7;color:#166534}
.hw-st.today{background:#fef3c7;color:#92400e}
.hw-st.late{background:#fee2e2;color:#991b1b}
.hw-li.late{box-shadow:inset 3px 0 0 #ef4444}
.hw-li .hw-main{cursor:pointer;min-width:0}
.hw-li .hw-title{overflow-wrap:anywhere}
.hw-count{font-weight:600;color:var(--text-2)}
.hw-acts{flex-shrink:0;align-items:center}
.hw-num{max-width:110px}
.hw-due{max-width:200px}
.hw-x{border:0;background:none;padding:0 0 0 4px;cursor:pointer;color:inherit;display:inline-flex}
.hw-x svg{width:12px;height:12px}
.hw-res .chip{max-width:100%}
.hw-fwd svg{transform:rotate(180deg)}
.hw-card{padding:0;overflow:hidden}
.hw-gridwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.hw-grid{width:100%;border-collapse:separate;border-spacing:0;min-width:760px;table-layout:fixed}
.hw-grid.two{min-width:1240px}
.hw-grid th,.hw-grid td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:6px;vertical-align:top;font-size:13px}
.hw-grid thead th{font-weight:600;text-align:left;background:var(--panel);white-space:nowrap;position:relative}
.hw-grid thead th.today{color:var(--brand)}
.hw-grid thead th.warn{box-shadow:inset 0 -3px 0 #f59e0b}
.hw-grid .hw-dt{display:block;font-weight:500;color:var(--text-2);font-size:11px}
.hw-grid .hw-cn{width:150px;position:sticky;left:0;background:var(--bg,#fff);z-index:1;text-align:left}
.hw-grid thead .hw-cn{background:var(--panel)}
.hw-grid td{height:64px}
.hw-grid td.off{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(100,116,139,.08) 6px 12px)}
.hw-grid td.today{background-color:rgba(13,148,136,.05)}
.hw-grid td.warn{box-shadow:inset 0 0 0 2px #f59e0b}
.hw-chip,.hw-set,.hw-slot,.hw-add{display:flex;align-items:center;gap:4px;width:100%;border-radius:6px;font:inherit;font-size:12px;cursor:pointer;text-align:left;margin-bottom:4px;min-width:0}
.hw-chip{border:1px solid var(--line);background:#fff;padding:4px 6px}
.hw-chip svg{width:13px;height:13px;flex-shrink:0}
.hw-chip small{margin-left:auto;color:var(--text-2);flex-shrink:0}
.hw-chip.collected{background:#f0f9ff;border-color:#bae6fd}
.hw-chip.marked{background:#f0fdf4;border-color:#bbf7d0;opacity:.8}
.hw-chip.late{border-color:#fca5a5;background:#fef2f2}
.hw-chip.bad{outline:2px dashed #f59e0b;outline-offset:-2px}
.hw-set{border:0;background:none;padding:2px 4px;color:var(--text-2);font-size:11px}
.hw-slot{border:1px dashed var(--brand);background:none;color:var(--brand);padding:4px 6px}
.hw-slot svg,.hw-add svg{width:13px;height:13px}
.hw-add{border:1px dashed transparent;background:none;justify-content:center;color:var(--text-2);opacity:0;padding:6px;height:calc(100% - 4px)}
.hw-grid td:hover .hw-add,.hw-add:focus{opacity:1;border-color:var(--line)}
.hw-over{display:block;color:#b45309;font-weight:600;font-size:11px}
.hw-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:0 12px 12px}
.hw-key{display:inline-block;width:14px;height:14px;border:1px solid var(--line);border-radius:3px;vertical-align:middle}
.hw-key.off{background:repeating-linear-gradient(135deg,transparent 0 3px,rgba(100,116,139,.25) 3px 6px)}
.hw-key.warn{box-shadow:inset 0 0 0 2px #f59e0b}
.hw-w.load,.hw-w.noteach{color:#b45309}
.hw-w.collect{color:#b91c1c}
.hw-polrow{flex-wrap:wrap;gap:8px}
.hw-polname{min-width:140px}
.hw-polf{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:1}
.hw-polf .select{width:auto;flex:1 1 130px}
.hw-polf .hw-num{max-width:80px}
@media (max-width:760px){
  .hw-li{flex-wrap:wrap}
  .hw-acts{width:100%;justify-content:flex-end}
  .hw-grid .hw-cn{width:104px}
  .hw-grid .hw-cn .tag{max-width:96px;overflow:hidden;text-overflow:ellipsis}
  .hw-add{opacity:.5}
  .hw-polf .select{flex:1 1 100%}
}
/* == end homework == */

/* == supply == */
.sp-sum .stat b{font-size:22px}
.sp-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sp-list{display:flex;flex-direction:column;gap:10px}
.sp-bk{display:flex;gap:14px;padding:14px 16px;align-items:flex-start}
.sp-bk-cancelled{opacity:.6}.sp-bk-cancelled .sp-name{text-decoration:line-through}
.sp-today{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.sp-date{flex:none;width:54px;text-align:center;border-radius:10px;background:var(--bg-2);padding:6px 0;line-height:1.15}
.sp-date span{display:block;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-2)}
.sp-date b{display:block;font-size:22px;font-weight:700}
.sp-main{flex:1;min-width:0}
.sp-name{font-size:15.5px;overflow:hidden;text-overflow:ellipsis}
.sp-meta{margin-top:3px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.sp-meta svg{width:14px;height:14px}
.sp-notes{margin-top:4px;white-space:pre-line}
.sp-acts{margin-top:10px}
.sp-st-offered{background:#fef3c7;color:#92400e}
.sp-st-confirmed{background:#dbeafe;color:#1e40af}
.sp-st-done{background:#dcfce7;color:#166534}
.sp-st-cancelled{background:var(--bg-2);color:var(--text-2)}
.sp-now{background:var(--brand);color:#fff}
.sp-ok{background:#dcfce7;color:#166534}
.sp-block{display:block}
.sp-libli{width:100%;text-align:left;background:none;border:0;cursor:pointer;font:inherit;color:inherit}
.sp-h3{margin:0;font-size:16px}.sp-h4{margin:0;font-size:15px}
.sp-aicard{border-color:color-mix(in srgb,var(--ai) 35%,var(--line))}
.sp-seg{flex-wrap:wrap}
.sp-newsch{border:1px dashed var(--line);border-radius:10px;padding:12px;margin-bottom:12px}
.sp-packtop{background:var(--bg-2);border-radius:10px;padding:12px 14px;margin-bottom:14px}
.sp-det summary{cursor:pointer;padding:6px 0}
.sp-check{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.sp-ci label{display:flex;align-items:center;gap:6px}
.sp-ci label svg{width:15px;height:15px;color:var(--text-2)}
.sp-ci.done label svg{color:#16a34a}
.sp-ci textarea{resize:vertical;min-height:38px}
.sp-hout{font-family:inherit;line-height:1.5}
.sp-lesson h2{margin-top:0}
@media (max-width:760px){
  .sp-check{grid-template-columns:1fr}
  .sp-bk{gap:10px;padding:12px}
  .sp-date{width:46px}
  .sp-date b{font-size:19px}
  .sp-sum .stat{padding:12px}
  .sp-sum .stat b{font-size:19px}
}
/* == end supply == */

/* == meetings == */
.mt-tabs{margin-top:16px}
.mt-stats .stat{text-align:left;cursor:pointer;font:inherit;color:inherit}
button.stat{border:1px solid var(--line);background:var(--panel)}
.mt-warn b{color:#b45309}
.mt-list{display:flex;flex-direction:column;gap:10px}
.mt-card{display:flex;gap:14px;align-items:flex-start;padding:14px;text-decoration:none;color:inherit}
.mt-card:hover{border-color:var(--brand)}
.mt-card.past{opacity:.85}
.mt-date{flex:0 0 52px;text-align:center;border:1px solid var(--line);border-radius:10px;padding:6px 0;background:var(--bg,#f8fafc)}
.mt-date b{display:block;font-size:20px;line-height:1.1}.mt-date span{font-size:11.5px;text-transform:uppercase;color:var(--text-2)}
.mt-main{min-width:0}
.mt-ok{color:#047857}
.mt-me{background:var(--brand);color:#fff}
.mt-late{color:#b91c1c;font-weight:600}
.mt-filt{margin-bottom:4px}
.mt-act{align-items:flex-start;gap:10px}
.mt-act.done .mt-atext{text-decoration:line-through;color:var(--text-2)}
.mt-act.overdue{box-shadow:inset 3px 0 0 #dc2626}
.mt-tick{position:relative;flex:0 0 22px;height:22px;margin-top:1px;cursor:pointer}
.mt-tick input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.mt-tick span{display:block;width:20px;height:20px;border:2px solid var(--line);border-radius:6px;background:var(--panel)}
.mt-tick input:checked+span{background:var(--brand);border-color:var(--brand);box-shadow:inset 0 0 0 3px var(--panel)}
.mt-tick input:focus-visible+span{outline:2px solid var(--brand);outline-offset:2px}
.mt-atext{word-break:break-word}
.mt-att{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 14px;color:var(--text-2)}
.mt-cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
.mt-aglist{margin:0;padding:6px 16px 6px 36px}
.mt-aglist li{padding:8px 0;border-bottom:1px solid var(--line)}
.mt-aglist li:last-child{border-bottom:0}
.mt-aglist li>*{vertical-align:baseline}
.mt-aglist li{display:list-item}.mt-aglist li .grow{display:inline}.mt-aglist li .nowrap{float:right;margin-left:8px}
.nowrap{white-space:nowrap}
.mt-addact{display:flex;flex-direction:column;gap:6px}
.mt-addact .row .input{min-width:0;flex:1}
.mt-sec{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.mt-sec h4{margin:0 0 8px}
.mt-agenda{display:flex;flex-direction:column;gap:6px}
.mt-arow{display:grid;grid-template-columns:18px minmax(0,1fr) 130px 70px 32px;gap:6px;align-items:center}
.mt-grip{color:var(--text-2);display:flex}
.mt-drow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) 32px;gap:6px;margin-top:6px}
.mt-ai{border:1px dashed var(--ai,#7c3aed);border-radius:12px;padding:12px;margin:8px 0}
.mt-len{width:72px;display:inline-block;height:32px}
.mt-aiol{margin:0 0 6px;padding-left:20px}
.mt-aiacts{display:flex;flex-direction:column;gap:6px}
.mt-email{font-family:inherit;font-size:13.5px}
@media (max-width:760px){
  .mt-cols{grid-template-columns:1fr}
  .mt-arow{grid-template-columns:minmax(0,1fr) 64px 32px;grid-template-areas:"t t x" "o m x"}
  .mt-arow .mt-grip{display:none}
  .mt-arow .mt-at{grid-area:t}.mt-arow .mt-ao{grid-area:o;width:100%}.mt-arow .mt-am{grid-area:m}.mt-arow [data-arm]{grid-area:x}
  .mt-arow .mt-ao{grid-column:1/2}
  .mt-drow{grid-template-columns:minmax(0,1fr) 32px}.mt-drow [data-k=url]{grid-column:1/2}.mt-drow [data-drm]{grid-row:1/3;grid-column:2}
  .mt-card{padding:12px;gap:10px}
}
/* == end meetings == */

/* == usage == */
.us-test{margin-right:4px}
.us-daily{display:flex;align-items:flex-end;gap:3px;height:120px;margin:12px 0 6px;padding:0 2px;border-bottom:1px solid var(--line)}
.us-dcol{flex:1;height:100%;display:flex;align-items:flex-end}
.us-dcol i{display:block;width:100%;background:var(--brand);border-radius:3px 3px 0 0;min-height:0}
.us-dcol:hover i{opacity:.75}
.us-bars{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.us-bar{display:grid;grid-template-columns:120px minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:13px}
.us-bl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.us-bt{height:10px;background:var(--line);border-radius:6px;overflow:hidden}
.us-bt i{display:block;height:100%;background:var(--brand);border-radius:6px}
.us-bar b{text-align:right}
.us-funnel{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.us-fstep .pbar{margin-top:4px}
.us-tblwrap{overflow-x:auto}
.us-tbl td{vertical-align:top}
.us-tbl .tag{margin:0 4px 4px 0}
.us-num{text-align:right;white-space:nowrap}
.us-steps{white-space:nowrap}
.us-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--line);margin-right:4px}
.us-dot.on{background:#16a34a}
@media (max-width:760px){
  .us-bar{grid-template-columns:96px minmax(0,1fr) 38px}
  .us-tbl th:nth-child(5),.us-tbl td:nth-child(5){display:none}
  .us-daily{height:90px;gap:2px}
}
/* == end usage == */

/* == curriculum == */
.cu-note{display:flex;gap:8px;align-items:flex-start;margin-top:4px}
.cu-note a{white-space:nowrap}
.cu-h3{margin:0 0 8px;font-size:15px}
.cu-sec{margin:22px 0 8px;font-size:14px;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.cu-links{display:flex;flex-wrap:wrap;gap:8px}
.cu-link{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:inherit;max-width:100%}
.cu-link:hover{border-color:var(--brand)}
.cu-filters .frow{margin-top:4px}
.cu-search{margin-bottom:8px}
.cu-row{text-decoration:none;color:inherit;text-align:left;width:100%;background:none;border:0;cursor:pointer}
.cu-row .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.cu-ctags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.cu-cbtn{background:none;border:1px solid transparent;border-radius:8px;padding:2px;cursor:pointer}
.cu-cbtn.on{border-color:var(--brand)}
.cu-unit .card-h{gap:8px}
.cu-uchk{display:flex;align-items:center;gap:8px;margin:0}
.cu-topic{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.cu-topic input{margin-top:3px;flex:none}
.cu-topic .pill{flex:none}
.cu-bar{display:flex;height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.cu-bar i{display:block;height:100%}
.cu-bar i.t{background:var(--brand)}
.cu-bar i.p{background:#93c5fd}
.cu-pick{max-height:52vh;overflow:auto}
.cu-clink a{font-weight:600}
.cu-toolbar{position:sticky;top:0;z-index:2;background:var(--bg,#fff);padding:6px 0}
@media (max-width:760px){
  .cu-toolbar{flex-direction:column;align-items:stretch}
  .cu-toolbar [data-units]{width:100%;justify-content:center}
  .cu-link{flex:1 1 100%}
}
/* == end curriculum == */

/* == revision == */
.rv-cds{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.rv-cd{display:flex;gap:14px;align-items:stretch;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;font:inherit;color:inherit;transition:border-color .15s,box-shadow .15s}
.rv-cd:hover{border-color:var(--brand);box-shadow:var(--sh-1)}
.rv-cd-n{flex:0 0 64px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;background:var(--bg-2);padding:6px 0}
.rv-cd-n b{font-size:26px;line-height:1;font-weight:800}
.rv-cd-n span{font-size:11px;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;margin-top:3px}
.rv-cd.urgent .rv-cd-n{background:#fee2e2;color:#b91c1c}
.rv-cd.soon .rv-cd-n{background:#fef3c7;color:#b45309}
.rv-cd.ok .rv-cd-n{background:#e0f2fe;color:#0369a1}
.rv-cd.past{opacity:.6}
.rv-cd-b{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.rv-cd-t{font-weight:700;line-height:1.3}
.rv-cd-m{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.rv-cd-l{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--text-2)}
.rv-cd-l svg{width:13px;height:13px}
.rv-pill-exam{background:#ede9fe;color:#5b21b6}
.rv-sub{font-size:15px;font-weight:500}
.rv-ok{color:#15803d;display:inline-flex;align-items:center;gap:3px}.rv-ok svg{width:13px;height:13px}
.rv-chips{display:flex;flex-wrap:wrap;gap:6px}
.rv-chips .chip input{position:absolute;opacity:0;pointer-events:none}
.rv-chips .chip svg{width:13px;height:13px}
.rv-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#cbd5e1;margin-right:6px;vertical-align:0;flex:0 0 auto}
.rv-dot.red{background:#dc2626}.rv-dot.amber{background:#f59e0b}.rv-dot.green{background:#16a34a}
.rv-topics{display:flex;flex-direction:column;gap:6px}
.rv-topic{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.rv-topic .check{align-items:center}
.rv-rag button{min-width:34px;padding:0 8px}
.rv-rag button.on.red{background:#dc2626;color:#fff}
.rv-rag button.on.amber{background:#f59e0b;color:#fff}
.rv-rag button.on.green{background:#16a34a;color:#fff}
.rv-tl{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden;max-height:520px;overflow-y:auto}
.rv-tl-row{display:flex;gap:12px;align-items:flex-start;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.rv-tl-row:last-child{border-bottom:0}
.rv-tl-row.off{opacity:.45}
.rv-tl-row input{margin-top:3px}
.rv-tl-d{flex:0 0 96px;display:flex;flex-direction:column}
.rv-tl-i{flex:1;display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}
.rv-it{display:inline-flex;align-items:center;font-size:13px;padding:3px 9px;border-radius:999px;background:var(--bg-2)}
.rv-it.focus{font-weight:700}
.rv-it.mixed{background:#ede9fe;color:#5b21b6;font-weight:600}
.rv-pack{font-size:14px;line-height:1.5}
.rv-pack h1{font-size:20px;margin:0 0 4px}.rv-pack h2{font-size:16px;margin:18px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}.rv-pack h3{font-size:14px;margin:12px 0 4px}
.rv-pack .sub{color:var(--text-2);margin:0 0 8px}.rv-pack ul,.rv-pack ol{margin:4px 0 8px 20px;padding:0}
.rv-pack table{width:100%;border-collapse:collapse}.rv-pack th,.rv-pack td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top}
.rv-pack .box{display:inline-block;width:12px;height:12px;border:1.5px solid var(--text-2);border-radius:3px;margin-right:8px}
.rv-pack .lines{display:none}
@media (max-width:760px){
  .rv-cds{grid-template-columns:1fr}
  .rv-topic{flex-wrap:wrap}
  .rv-topic .check{flex:1 1 100%}
  .rv-tl-d{flex-basis:72px}
  .rv-cols{grid-template-columns:1fr}
}
/* == end revision == */

/* == pastoral == */
.ps-tabs{overflow-x:auto;max-width:100%}
.ps-groups{display:grid;gap:12px}
.ps-gname{font-size:16px}
.ps-rota{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.ps-rday{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);min-width:0}
.ps-rday b{font-size:13px;line-height:1.3;overflow-wrap:anywhere}
.ps-rday.today{border-color:var(--brand);background:var(--brand-soft)}
.ps-rday.off{opacity:.55}
.ps-rd{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2)}
.ps-times{display:grid;gap:6px}
.ps-trow{display:grid;grid-template-columns:130px 1fr auto 1fr;gap:8px;align-items:center}
.ps-aw{align-items:flex-start;gap:10px}
.ps-aw.now{background:var(--brand-soft)}
.ps-awacts{display:flex;gap:6px;flex-shrink:0;align-self:center}
.ps-kinds{flex-wrap:wrap}
.ps-out h3{margin:0 0 8px}
.ps-saverow{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.ps-saverow .field{margin:0;min-width:170px}
.ps-li{text-align:left;width:100%}
.ps-snip{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ps-mdedit{font-family:var(--mono);font-size:13px}
.ps-prose h2{font-size:16px;margin-top:16px}
@media (max-width:760px){
  .ps-rota{grid-template-columns:repeat(5,minmax(58px,1fr));overflow-x:auto}
  .ps-rday{padding:6px}.ps-rday .small{font-size:10.5px}
  .ps-trow{grid-template-columns:1fr 1fr;row-gap:4px}.ps-trow .check{grid-column:1/-1}.ps-trow>span{display:none}
  .ps-aw{flex-wrap:wrap}.ps-awacts{width:100%;padding-left:34px}
  .ps-saverow .field{width:100%}
}
/* == end pastoral == */

/* == trips == */
.tr-list{display:grid;gap:10px}
.tr-card{display:flex;gap:12px;padding:14px;color:inherit;text-decoration:none}
.tr-card:hover{border-color:var(--brand)}
.tr-ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);flex-shrink:0}
.tr-ic svg{width:20px;height:20px}
.tr-main{min-width:0}
.tr-prog{display:grid;gap:4px}
.tr-over{color:var(--crit);font-weight:600}
.tr-st.ok{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}
.tr-st.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}
.tr-st.err{background:color-mix(in srgb,var(--crit) 14%,transparent);color:var(--crit)}
.tr-stsel{width:auto}
.tr-facts .kv{grid-template-columns:repeat(3,minmax(0,1fr))}
.tr-facts .kv>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.tr-facts .kv span{font-size:12px;color:var(--text-2)}
.tr-facts .kv b{font-weight:500;overflow-wrap:anywhere}
.tr-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;align-items:start}
.tr-ci{gap:10px;align-items:center}
.tr-ci.done .tr-cl-l{text-decoration:line-through;color:var(--text-3)}
.tr-ci.over{background:color-mix(in srgb,var(--crit) 6%,transparent)}
.tr-due{width:150px;flex-shrink:0}
.tr-add{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line);align-items:center}
.tr-off{width:120px}
.tr-cl .m-8{margin:8px 14px}
.tr-rows{display:grid;gap:10px;padding:12px 14px}
.tr-row{display:grid;grid-template-columns:1.2fr .7fr 2fr .7fr;gap:10px;padding:10px;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:10px}
.tr-row.lv-medium{border-left-color:var(--warn)}
.tr-row.lv-high{border-left-color:var(--crit)}
.tr-row .field{margin:0}
.tr-aibox{border-bottom:1px solid var(--line)}
@media (max-width:1000px){.tr-grid{grid-template-columns:1fr}.tr-row{grid-template-columns:1fr 1fr}.tr-row .tr-ctl{grid-column:1/-1}}
@media (max-width:760px){
  .tr-facts .kv{grid-template-columns:1fr 1fr}
  .tr-row{grid-template-columns:1fr}
  .tr-ci{flex-wrap:wrap}.tr-due{width:calc(100% - 80px);margin-left:34px}
  .tr-add{flex-wrap:wrap}.tr-add .grow{width:100%;flex-basis:100%}.tr-off{flex:1}
  .tr-page .phead .acts{flex-wrap:wrap}
}
/* == end trips == */

/* == navprefs == sidebar links a teacher hides (Settings → Preferences → Menu) */
.side a.nav[hidden],.side .sec[hidden],.tabs a[hidden]{display:none!important}
