/* IdeaRoom Academy · გრაფიკული დიზაინი — the look of IdeaRoom's other platforms: deep purple-black, brand yellow #FDB928, Mtavruli headings */
@font-face{font-family:"Noto Sans Georgian";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/nsg-georgian.woff2") format("woff2");unicode-range:U+0589,U+10A0-10FF,U+1C90-1CBA,U+1CBD-1CBF,U+205A,U+2D00-2D2F,U+2E31}
@font-face{font-family:"Noto Sans Georgian";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/nsg-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Noto Sans Georgian";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/nsg-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  color-scheme:dark;
  /* layout idea: near-black purple rail + glowing purple workspace; yellow only where action or attention is */
  --bg:#110A20;--side:#0B0716;--panel:#170E2A;--panel-2:#1E1336;
  --card:linear-gradient(160deg,rgba(160,90,220,.16),rgba(90,45,150,.07) 70%);
  --card-hi:linear-gradient(160deg,rgba(170,100,230,.24),rgba(100,50,160,.11) 70%);
  --glass:rgba(255,255,255,.045);--glass-2:rgba(255,255,255,.075);--glass-3:rgba(255,255,255,.11);
  --line:rgba(255,255,255,.085);--line-2:rgba(255,255,255,.15);--line-3:rgba(255,255,255,.24);
  --text:#F6F2FC;--text-2:#BDB2D1;--text-3:#8C80A3;
  --yellow:#FDB928;--yellow-ink:#1B1030;--yellow-soft:rgba(253,185,40,.13);--yellow-line:rgba(253,185,40,.45);
  --coral:#FF9A7E;--coral-soft:rgba(255,154,126,.14);
  --green:#2FD29C;--green-soft:rgba(47,210,156,.13);
  --violet:#B39BFF;--violet-soft:rgba(179,155,255,.15);
  --orange:#FFA24C;--orange-soft:rgba(255,162,76,.14);
  --red:#F2545B;--red-soft:rgba(242,84,91,.14);
  --stage:#07040E;
  --r:22px;--r-sm:14px;--r-lg:28px;
  --sh:0 10px 40px rgba(4,1,12,.45);--sh-lg:0 24px 70px rgba(2,0,8,.6);
  --font:"Noto Sans Georgian",system-ui,-apple-system,"Segoe UI",sans-serif;
  --side-w:272px;--top:72px;--mtop:58px;--tabs:64px;
  /* motion: soft ease-out, longer and shorter-travelling than before */
  --ease:cubic-bezier(.22,.61,.36,1);--ease-io:cubic-bezier(.45,.05,.25,1);
  /* colours that change with light / dark */
  --yt:var(--yellow);--focus:var(--yellow);
  --topbar:rgba(17,10,32,.72);--bar:rgba(11,7,22,.88);
  --cover:#1C1230;--row-hover:#1D1233;--me-row:rgba(253,185,40,.06);
  --track:rgba(255,255,255,.14);--track-2:rgba(255,255,255,.08);--faint:rgba(255,255,255,.18);
  --dot-bg:#2A1C45;--dot-line:rgba(255,255,255,.35);
  --overlay:rgba(5,2,12,.62);--overlay-2:rgba(5,2,12,.4);
  --logo-text:#fff;--err-t:#FF8A8F;--blue:#8EBBFF;--blue-soft:rgba(110,170,255,.14);
  --glow-1:rgba(150,64,200,.30);--glow-2:rgba(96,40,170,.22);--auth-glow:rgba(150,64,200,.35);
  --hover:rgba(255,255,255,.035);--empty-bg:rgba(255,255,255,.015);--av-ring:rgba(255,255,255,.06);--scroll:rgba(255,255,255,.12);
  --card-sh:none;--green-line:rgba(47,210,156,.32);
  --chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23BDB2D1' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
}
/* light: white surfaces, deep purple ink; yellow stays for buttons, amber where yellow would be text */
:root[data-mode="light"]{
  color-scheme:light;
  --bg:#F5F2FA;--side:#FFFFFF;--panel:#FFFFFF;--panel-2:#F4F0FA;
  --card:linear-gradient(160deg,#FFFFFF,#FCFAFF 72%);
  --card-hi:linear-gradient(160deg,#FFFFFF,#F4EEFD 78%);
  --glass:rgba(45,20,90,.035);--glass-2:rgba(45,20,90,.06);--glass-3:rgba(45,20,90,.095);
  --line:rgba(45,20,90,.10);--line-2:rgba(45,20,90,.16);--line-3:rgba(45,20,90,.26);
  --text:#1C1233;--text-2:#53476A;--text-3:#7D7292;
  --yellow-ink:#1C1233;--yellow-soft:rgba(253,185,40,.17);--yellow-line:rgba(204,140,0,.5);
  --yt:#9A6200;--focus:#C98900;
  --coral:#D8532F;--coral-soft:rgba(216,83,47,.10);
  --green:#0D936A;--green-soft:rgba(13,147,106,.10);
  --violet:#6347D8;--violet-soft:rgba(99,71,216,.09);
  --orange:#C8620C;--orange-soft:rgba(200,98,12,.10);
  --red:#D2343D;--red-soft:rgba(210,52,61,.09);
  --sh:0 8px 28px rgba(45,20,90,.09);--sh-lg:0 20px 60px rgba(45,20,90,.16);
  --topbar:rgba(245,242,250,.8);--bar:rgba(255,255,255,.9);
  --cover:#EEE9F6;--row-hover:#F8F5FD;--me-row:rgba(253,185,40,.10);
  --track:rgba(45,20,90,.12);--track-2:rgba(45,20,90,.07);--faint:rgba(45,20,90,.16);
  --dot-bg:#FFFFFF;--dot-line:rgba(45,20,90,.25);
  --overlay:rgba(28,18,51,.34);--overlay-2:rgba(28,18,51,.14);
  --logo-text:#1C1233;--err-t:#C42F37;--blue:#2D6CD2;--blue-soft:rgba(45,108,210,.10);
  --glow-1:rgba(179,155,255,.26);--glow-2:rgba(253,185,40,.13);--auth-glow:rgba(179,155,255,.32);
  --hover:rgba(45,20,90,.03);--empty-bg:rgba(45,20,90,.018);--av-ring:rgba(45,20,90,.06);--scroll:rgba(45,20,90,.18);
  --card-sh:0 1px 2px rgba(45,20,90,.04),0 6px 22px rgba(45,20,90,.05);--green-line:rgba(13,147,106,.32);
  --chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2353476A' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
}
/* switching themes: one soft cross-fade */
::view-transition-old(root),::view-transition-new(root){animation-duration:.5s;animation-timing-function:var(--ease)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{margin:0;font-family:var(--font);font-size:15px;line-height:1.5;color:var(--text);background:var(--bg);
  background-image:radial-gradient(1100px 680px at 80% -12%,var(--glow-1),transparent 62%),radial-gradient(900px 620px at 18% 112%,var(--glow-2),transparent 62%);
  background-attachment:fixed;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;min-height:100vh}
body.noscroll{overflow:hidden}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
img{display:block;max-width:100%}
h1,h2,h3,h4{margin:0;line-height:1.15;text-wrap:balance}
p{margin:0}
::selection{background:rgba(253,185,40,.35)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ic{flex-shrink:0}
.muted{color:var(--text-3)}.small{font-size:13px}.center{text-align:center}.grow{flex:1}.pad{padding:20px}
.rot90{transform:rotate(90deg)}
code{font-family:inherit;font-weight:800;letter-spacing:.08em;background:var(--yellow-soft);color:var(--yt);padding:1px 7px;border-radius:6px}
.rich{white-space:pre-wrap;word-wrap:break-word}
.rich a{color:var(--yt);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--yellow-line)}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:10px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}

/* Mtavruli: headings, navigation, buttons, labels, names */
h1,h2,h3,h4,.mt,.eyebrow,.btn,.chip,.tag,.fchip,.lbl,.seg button,.navi span,.tab>span:last-child,.side-sec,.brand-badge,
.lec-body b,.task-main b,.row-main b,.work-who b,.cmt-top b,.msg-who b,.fb-top b,.who b,.stat-label,.empty b,.bf>span,
.panel-tabs button,.vtabs button,.crumbs b,.top-pill,.codebox-l,.me-name,.me-role,.stage-title b,.show-cap b,.reply-q b,.demo-pill,.demo-menu button,.notif-head h3,.legend .chip,
.lk-t,.yt-t,.yt-tag,.yt-art b,.sec-h,.pick-name b,.more-sheet a span,.more-mode span,.grp-state,.grp-chip,.rc-row b,.rc-b span,.who-pin,.how b,.lg,.att-me-txt b,.pick-new,.grp-static,
.ex-meta b,.lb-cap b,.ex-other span,.tcard-n,.tcard-t,.tcard-go,.alldone b,.team-txt b,.gt-name b,.cred-l,.gt-head span,.gt-l,.top-role,.role-tag,.snip-tabs button,.add-lec b,.syl-t b{
  text-transform:uppercase;letter-spacing:.025em}

/* ---------- logo ---------- */
.brand{display:inline-flex;align-items:center;gap:12px}
.logo{height:34px;width:auto;display:block;color:var(--logo-text)}
.logo .lm{transform-origin:20% 50%;animation:markIn 1.1s var(--ease) both}
.brand-badge{display:inline-flex;align-items:center;height:28px;padding:0 11px;border:1.5px solid var(--yellow-line);border-radius:9px;color:var(--yt);font-size:12px;font-weight:800;letter-spacing:.12em}
@keyframes markIn{from{transform:scale(.9);opacity:0}}

/* ---------- shell ---------- */
.app{min-height:100vh;min-height:100dvh}
.side{position:fixed;inset:0 auto 0 0;width:var(--side-w);background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:26px 16px 16px;z-index:20;overflow-y:auto}
.side-logo{display:flex;padding:0 10px 22px}
.side-grp{padding:0 6px 18px}
.side-sec{display:block;padding:0 12px 10px;font-size:12.5px;font-weight:700;color:var(--text-3)}
.side-nav{display:flex;flex-direction:column;gap:4px}
.navi{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:16px;color:var(--text-2);font-weight:600;font-size:14.5px;background:none;border:0;width:100%;text-align:left;position:relative;transition:background .35s var(--ease),color .35s var(--ease),transform .35s var(--ease)}
.navi:hover{background:var(--glass);color:var(--text)}
.navi:active{transform:scale(.99)}
.navi.on{background:var(--glass-2);color:var(--text)}
.navi.on .ic{color:var(--yt)}
.badge{margin-left:auto;min-width:24px;height:22px;padding:0 7px;border-radius:11px;background:var(--red);color:#fff;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;line-height:1;animation:pop .6s var(--ease)}
.badge.y{background:var(--yellow);color:var(--yellow-ink)}
.side-foot{margin-top:auto;padding-top:18px}
.me-card{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 12px;border:1px solid var(--line);border-radius:20px;background:var(--glass)}
.me-card>a{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.me-card>a>span{display:flex;flex-direction:column;min-width:0}
.me-name{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-role{font-size:11.5px;font-weight:600;color:var(--text-3)}
.me-out{width:42px;height:42px;border-radius:13px;border:1px solid var(--line-2);background:var(--glass);color:var(--text-2);display:flex;align-items:center;justify-content:center;transition:background .35s var(--ease),color .35s var(--ease)}
.me-out:hover{background:var(--glass-3);color:var(--text)}
.main{margin-left:var(--side-w);min-height:100vh}
.topbar{position:sticky;top:0;z-index:15;height:var(--top);display:flex;align-items:center;gap:12px;padding:0 32px;border-bottom:1px solid var(--line);background:var(--topbar);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2)}
.crumbs{display:flex;align-items:center;gap:6px;color:var(--text-3);font-size:15px;min-width:0;white-space:nowrap;overflow:hidden}
.crumbs b{color:var(--text);font-weight:700;font-size:14px}
.top-pill{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 8px 0 16px;border-radius:22px;border:1px solid var(--green-line);background:var(--green-soft);font-size:13px;font-weight:700;color:var(--text);transition:background .35s var(--ease),border-color .35s var(--ease)}
.top-pill:hover{border-color:var(--green)}
.top-pill .n{min-width:28px;height:28px;border-radius:14px;background:var(--green);color:#082418;font-weight:800;display:inline-flex;align-items:center;justify-content:center;padding:0 8px}
.top-pill.y{border-color:var(--yellow-line);background:var(--yellow-soft)}
.top-pill.y .n{background:var(--yellow);color:var(--yellow-ink)}
.round{position:relative;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-2);background:var(--glass);display:inline-flex;align-items:center;justify-content:center;color:var(--text);transition:background .35s var(--ease),transform .35s var(--ease)}
.round:hover{background:var(--glass-3)}
.round:active{transform:scale(.97)}
.mode-ic{display:inline-flex;animation:modeIn .6s var(--ease)}
@keyframes modeIn{from{opacity:0;transform:rotate(-40deg) scale(.8)}}
.round .badge{position:absolute;top:-5px;right:-5px;margin:0;min-width:22px;height:22px;border:2px solid var(--bg)}
.top-me{display:flex;border-radius:50%;box-shadow:0 0 0 2px rgba(253,185,40,.0);transition:box-shadow .35s var(--ease)}
.top-me:hover{box-shadow:0 0 0 2px var(--yellow-line)}
.mtop,.tabs{display:none}
.grp{position:relative;display:flex;align-items:center}
.grp select{appearance:none;-webkit-appearance:none;font:inherit;font-weight:700;font-size:14px;border-radius:14px;padding:11px 36px 11px 14px;width:100%;cursor:pointer;background:var(--glass);border:1px solid var(--line-2);color:var(--text)}
.grp select option{color:#111;background:#fff}
.grp svg{position:absolute;right:12px;pointer-events:none;color:var(--text-2)}
/* no fill-mode here: a lasting animation would make .route a layer of its own, and windows opened inside a page
   (modals, the lightbox, the projector) would end up under the menu and the top bar */
.route{animation:fade .55s var(--ease)}

/* ---------- motion ---------- */
/* soft: mostly fading, travelling a few pixels, never bouncing */
@keyframes rise{from{opacity:0;transform:translateY(6px)}}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:scale(.96)}}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}}
@keyframes draw{from{stroke-dashoffset:1}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(253,185,40,.45)}80%,100%{box-shadow:0 0 0 9px rgba(253,185,40,0)}}
@keyframes bounce{0%,80%,100%{transform:scale(.6);opacity:.35}40%{transform:scale(1);opacity:1}}
@keyframes shake{20%{transform:translateX(-5px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
.stagger>*{animation:rise .7s var(--ease) both}
.stagger>*:nth-child(1){animation-delay:.04s}.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.16s}
.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(6){animation-delay:.24s}.stagger>*:nth-child(7){animation-delay:.28s}.stagger>*:nth-child(8){animation-delay:.32s}
.stagger>*:nth-child(9){animation-delay:.35s}.stagger>*:nth-child(10){animation-delay:.38s}.stagger>*:nth-child(11){animation-delay:.41s}.stagger>*:nth-child(n+12){animation-delay:.44s}

/* ---------- page ---------- */
.page{max-width:1180px;margin:0 auto;padding:44px 40px 96px}
.page.wide-page{max-width:1320px}
.page.narrow{max-width:760px}
.page-head{margin-bottom:32px}
.back{display:inline-flex;align-items:center;gap:6px;color:var(--text-3);font-size:14px;font-weight:600;margin-bottom:16px;transition:color .35s var(--ease),gap .35s var(--ease);background:none;border:0;padding:0}
.back:hover{color:var(--text);gap:9px}
.ph-row{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}
.ph-txt{min-width:0;max-width:820px}
.page-head .eyebrow{color:var(--yt)}
.page-head h1{font-size:clamp(30px,3.7vw,48px);font-weight:800;margin-top:8px;line-height:1.08;letter-spacing:.015em}
.sub{color:var(--text-2);margin-top:12px;max-width:66ch;font-size:16px}
.ph-act{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.lead{font-size:18px;color:var(--text-2);max-width:66ch;margin:-12px 0 32px;line-height:1.6}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--card-sh)}
.block{margin-top:44px}
.block h2{font-size:18px;font-weight:800;display:flex;align-items:center;gap:10px;margin-bottom:16px}
.block-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.block-head h2{margin:0}
.count{font-size:12.5px;font-weight:800;color:var(--text-2);background:var(--glass-2);border:1px solid var(--line);padding:2px 9px;border-radius:20px;letter-spacing:0;text-transform:none}
.h3{font-size:17px;font-weight:800;margin-bottom:16px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.link{display:inline-flex;align-items:center;gap:2px;color:var(--yt);font-weight:700;font-size:14px}
.link-in{color:var(--yt);font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--yellow-line)}
.eyebrow{display:block;font-size:11.5px;font-weight:800;color:var(--text-3)}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:44px;padding:0 18px;border-radius:15px;border:1px solid var(--line-2);background:var(--glass);color:var(--text);font-weight:800;font-size:13px;white-space:nowrap;transition:background .35s var(--ease),border-color .35s var(--ease),color .35s var(--ease),transform .3s var(--ease),box-shadow .35s var(--ease);text-decoration:none}
.btn:hover:not(:disabled){background:var(--glass-3);border-color:var(--line-3)}
.btn:active:not(:disabled){transform:scale(.985)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.pri{background:var(--yellow);border-color:var(--yellow);color:var(--yellow-ink);box-shadow:0 8px 24px rgba(253,185,40,.18)}
.btn.pri:hover:not(:disabled){background:#FFC94F;border-color:#FFC94F;box-shadow:0 10px 30px rgba(253,185,40,.28)}
.btn.ghost{background:transparent;border-color:transparent}
.btn.ghost:hover:not(:disabled){background:var(--glass-2)}
.btn.sm{height:34px;padding:0 13px;font-size:12px;border-radius:11px;gap:6px}
.btn.big{height:52px;font-size:14px;width:100%;border-radius:16px}
.btn.icon{width:44px;padding:0}
.btn.icon.sm{width:34px}
.btn.ok{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.btn.danger{background:var(--red);border-color:var(--red);color:#fff}
.danger-txt{color:var(--red)!important}
.btn.on-dark{color:rgba(255,255,255,.8);border-color:transparent;background:transparent}
.btn.on-dark:hover{background:rgba(255,255,255,.1);color:#fff}
.btn.on-dark.on{background:rgba(255,255,255,.16);color:#fff}
.on-dark-btn{background:rgba(255,255,255,.07)!important;border-color:rgba(255,255,255,.14)!important;color:#fff!important}
.row-btns{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row-btns .inp{flex:1;min-width:160px}
.seg{display:inline-flex;padding:5px;background:var(--glass);border:1px solid var(--line);border-radius:16px;gap:3px}
.seg button{border:0;background:none;padding:9px 15px;border-radius:12px;font-weight:800;font-size:12.5px;color:var(--text-3);transition:background .35s var(--ease),color .35s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:7px}
.seg button:hover{color:var(--text)}
.seg button.on{background:var(--glass-3);color:var(--text)}
.seg.wide{display:flex}.seg.wide button{flex:1}
.chip{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 11px;border-radius:20px;font-size:11px;font-weight:800;background:var(--glass);color:var(--text-2);border:1px solid var(--line);white-space:nowrap;line-height:1}
.chip i{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.chip.st-review{color:var(--violet);background:var(--violet-soft);border-color:transparent}
.chip.st-fix{color:var(--orange);background:var(--orange-soft);border-color:transparent}
.chip.st-done{color:var(--green);background:var(--green-soft);border-color:transparent}
.chip.st-none{color:var(--text-3)}
.chip.due.soon{color:var(--orange);background:var(--orange-soft);border-color:transparent}
.chip.due.late{color:var(--red);background:var(--red-soft);border-color:transparent}
.tag{display:inline-flex;align-items:center;height:19px;padding:0 7px;border-radius:6px;background:var(--yellow);color:var(--yellow-ink);font-size:10px;font-weight:800;margin-left:6px;line-height:1;white-space:nowrap}
.tag.big{height:24px;font-size:11px;margin:0;padding:0 9px}
.field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.lbl{font-size:11.5px;font-weight:800;color:var(--text-3)}
.hint{font-size:12.5px;color:var(--text-3)}
.inp{width:100%;font:inherit;font-size:15px;color:var(--text);background:var(--glass);border:1px solid var(--line-2);border-radius:15px;padding:12px 15px;outline:none;transition:border-color .35s var(--ease),box-shadow .35s var(--ease),background .35s var(--ease)}
.inp::placeholder{color:var(--text-3)}
.inp:hover{border-color:var(--line-3)}
.inp:focus{border-color:var(--yellow-line);box-shadow:0 0 0 4px rgba(253,185,40,.12);background:var(--glass-2)}
.inp.sm{padding:9px 12px;font-size:14px;border-radius:12px}
textarea.inp{resize:vertical;min-height:48px;line-height:1.5}
.inp:disabled{opacity:.6}
.inp.code{text-transform:uppercase;letter-spacing:.14em;font-weight:800}
.inp.code::placeholder{letter-spacing:0;text-transform:none;font-weight:400}
select.inp{appearance:none;-webkit-appearance:none;padding-right:38px;background-image:var(--chev);background-repeat:no-repeat;background-position:right 14px center}
select.inp option{color:#111;background:#fff}
input[type=date].inp,input[type=datetime-local].inp{min-height:46px}
.two-f{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-err{display:flex;align-items:center;gap:8px;padding:11px 14px;border-radius:14px;background:var(--red-soft);color:var(--err-t);font-size:14px;font-weight:600;margin:4px 0 12px;animation:rise .45s var(--ease)}
.ok-txt{display:flex;align-items:center;gap:6px;color:var(--green);font-weight:700;margin:10px 0 6px}

/* ---------- states ---------- */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:40px 20px;border:1px dashed var(--line-2);border-radius:var(--r);color:var(--text-2);background:var(--empty-bg)}
.empty-ic{width:56px;height:56px;border-radius:18px;background:var(--glass-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--yt);margin-bottom:8px}
.empty b{font-size:15px;font-weight:800}
.empty p{color:var(--text-3);font-size:14px;max-width:44ch}
.empty .btn{margin-top:12px}
.state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:80px 20px;color:var(--text-3);text-align:center}
.state.err p{max-width:40ch}
.spin{display:inline-flex;gap:6px}
.spin i{width:9px;height:9px;border-radius:50%;background:var(--yellow);animation:bounce 1.3s infinite var(--ease-io)}
.spin i:nth-child(2){animation-delay:.18s}.spin i:nth-child(3){animation-delay:.36s}
.spin.sm i{width:5px;height:5px}
.boot{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}
.boot-in{display:flex;flex-direction:column;align-items:center;gap:14px;color:var(--text-3);font-size:14px}
.av{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:800;flex-shrink:0;overflow:hidden;text-transform:uppercase;letter-spacing:0;background:var(--glass-3);line-height:1;box-shadow:0 0 0 2px var(--av-ring)}
.av img{width:100%;height:100%;object-fit:cover}

/* modal, toast */
.modal-wrap{position:fixed;inset:0;background:var(--overlay);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:80;animation:fade .4s var(--ease)}
.modal{background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);width:100%;max-width:560px;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;box-shadow:var(--sh-lg);animation:slideUp .5s var(--ease)}
.modal.wide{max-width:760px}.modal.small{max-width:430px}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 16px 8px 26px}
.modal-head h3{font-size:18px;font-weight:800}
.modal-body{padding:10px 26px 20px;overflow:auto}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:16px 26px;border-top:1px solid var(--line);align-items:center}
.toasts{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}
.toast{display:flex;align-items:center;gap:10px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--text);padding:12px 18px;border-radius:16px;font-size:14px;font-weight:600;box-shadow:var(--sh-lg);animation:slideUp .5s var(--ease)}
.toast svg{color:var(--yt)}
.toast.err{border-color:rgba(242,84,91,.5)}.toast.err svg{color:var(--red)}

/* ---------- auth ---------- */
.auth{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1.05fr 1fr}
.auth-side{background:var(--side);border-right:1px solid var(--line);padding:42px 52px 52px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.auth-side::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 500px at 85% 20%,var(--auth-glow),transparent 65%);pointer-events:none}
.auth-brand{position:relative;z-index:1}
.auth-brand .logo{height:40px}
.auth-copy{margin-top:auto;position:relative;z-index:1;max-width:500px;animation:rise .9s .1s var(--ease) both}
.auth-copy .eyebrow{color:var(--yt)}
.auth-copy h1{font-size:clamp(40px,4.6vw,66px);font-weight:800;line-height:1;margin:16px 0 20px;letter-spacing:.01em}
.auth-copy p{color:var(--text-2);font-size:17px;max-width:42ch}
.auth-art{position:absolute;right:-30px;top:96px;width:min(36vw,440px);color:var(--text);animation:fade 1.4s .2s both}
.auth-art .a1{animation:floaty 9s var(--ease-io) infinite}
.auth-art .a2{animation:floaty 10s var(--ease-io) -3s infinite}
.auth-art .a3{transform-origin:295px 105px;animation:spin 60s linear infinite}
@keyframes floaty{50%{transform:translateY(-6px)}}
@keyframes spin{to{transform:rotate(360deg)}}
.auth-main{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.auth-card{width:100%;max-width:420px;display:flex;flex-direction:column}
.signin{display:flex;flex-direction:column}
.signin h2{font-size:28px;font-weight:800;margin:6px 0 22px;letter-spacing:.01em}
.signin>.eyebrow{color:var(--yt)}
.signin>.back{align-self:flex-start;margin-bottom:22px}
.signin .btn.big{margin-top:8px}
.signin .hint.center{margin-top:18px}
.step-in{animation:rise .6s var(--ease) both}
.inp.big-code{font-size:22px;padding:14px 18px;text-align:center}
.link-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;border:0;background:none;color:var(--text-2);font-size:14px;font-weight:600;padding:8px;border-radius:12px;transition:color .35s var(--ease),background .35s var(--ease)}
.link-btn:hover{color:var(--text);background:var(--glass)}
.pick-list{display:flex;flex-direction:column;gap:8px;max-height:min(52vh,460px);overflow:auto;padding:2px;margin:0 -2px}
.pick-name{display:flex;align-items:center;gap:13px;padding:10px 14px 10px 10px;border-radius:18px;border:1px solid var(--line);background:var(--glass);text-align:left;color:var(--text);transition:background .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease);animation:rise .6s calc(var(--i) * 45ms) var(--ease) both}
.pick-name b{flex:1;font-weight:800;font-size:14.5px}
.pick-name:active{transform:scale(.99)}
.pick-ic{color:var(--text-3)}
.pick-new{font-size:11px;font-weight:800;color:var(--yt);background:var(--yellow-soft);padding:4px 9px;border-radius:9px}
.pin-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:24px}
.pin-head h2{margin:10px 0 0}
.pin-in{position:relative;display:flex;justify-content:center;gap:12px;margin:4px 0 14px;cursor:text}
.pin-in.shake{animation:shake .5s var(--ease)}
.pin-in input{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;border:0;caret-color:transparent;cursor:text}
.pin-box{width:58px;height:66px;border-radius:18px;border:1.5px solid var(--line-2);background:var(--glass);display:flex;align-items:center;justify-content:center;transition:border-color .35s var(--ease),background .35s var(--ease),box-shadow .35s var(--ease)}
.pin-box i{width:12px;height:12px;border-radius:50%;background:var(--text);transform:scale(0);opacity:0;transition:transform .35s var(--ease),opacity .35s var(--ease)}
.pin-box.on i{transform:none;opacity:1}
.pin-in:focus-within .pin-box.cur{border-color:var(--yellow);box-shadow:0 0 0 4px rgba(253,185,40,.14)}
.pin-in.busy{opacity:.6}
.demo-quick{margin-top:30px;padding-top:20px;border-top:1px dashed var(--line-2)}
.demo-quick .row-btns{margin:10px 0}.demo-quick .btn{flex:1}

/* ---------- home: stat cards in the style of IdeaRoom WORK ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.stats.four{grid-template-columns:repeat(4,1fr);gap:16px}
.stat{position:relative;background:var(--card-hi);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px 24px 22px;display:flex;flex-direction:column;gap:6px;overflow:hidden;box-shadow:var(--card-sh);transition:transform .5s var(--ease),border-color .5s var(--ease)}
.stats.four .stat-num{font-size:50px}
.stat-label{font-size:15px;font-weight:800;color:var(--text)}
.stat-num{font-size:56px;font-weight:800;line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat-num small{font-size:22px;color:var(--text-3);font-weight:700;margin-left:4px;letter-spacing:0}
.stat-num.y{color:var(--yt)}.stat-num.c{color:var(--coral)}.stat-num.g{color:var(--green)}.stat-num.v{color:var(--violet)}
.stat-sub{color:var(--text-2);font-size:14px;min-height:21px}
.stat-chart{margin-top:auto;padding-top:22px;height:84px;display:flex;align-items:flex-end}
.dashes{display:flex;gap:10px;width:100%;align-items:center;height:10px}
.dashes i{flex:1;height:5px;border-radius:5px;background:var(--track);transition:background .5s var(--ease);animation:fade .7s calc(.35s + var(--i) * .06s) var(--ease) both}
.dashes i.on{background:var(--text)}
.dashes.y i.on{background:var(--yellow)}.dashes.g i.on{background:var(--green)}
/* attendance per lecture (bars) and one student's lectures (dots) */
@keyframes grow-y{from{transform:scaleY(0)}}
.attdots{display:flex;justify-content:space-between;width:100%;align-items:center;height:16px}
.attdots i{width:12px;height:12px;border-radius:50%;border:2px dashed var(--dot-line);animation:pop .6s calc(.35s + var(--i) * .05s) var(--ease) both}
.attdots i.a-here{background:var(--green);border:2px solid var(--green)}.attdots i.a-late{background:var(--orange);border:2px solid var(--orange)}
.attdots i.a-away{background:transparent;border:2px solid var(--red)}.attdots i.a-excused{background:var(--violet);border:2px solid var(--violet)}
.attdots i.a-none{border-style:solid}
.codebox{display:inline-flex;align-items:center;gap:18px;padding:9px 16px 9px 18px;border-radius:18px;background:var(--yellow-soft);color:var(--text);border:1px solid var(--yellow-line);text-align:left;transition:background .35s var(--ease),transform .35s var(--ease)}
.codebox:hover{background:rgba(253,185,40,.22)}
.codebox:active{transform:scale(.99)}
.codebox-l{display:block;color:var(--yt);font-size:10.5px;font-weight:800}
.codebox b{font-size:21px;letter-spacing:.16em;font-weight:800;display:block;line-height:1.25}
.codebox svg{color:var(--yt)}
.steps{padding:24px 26px;margin-bottom:24px;border-color:var(--yellow-line);background:linear-gradient(135deg,rgba(253,185,40,.10),rgba(253,185,40,.02) 60%)}
.steps .eyebrow{color:var(--yt)}
.steps ol{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;counter-reset:s}
.steps li{counter-increment:s;display:flex;flex-direction:column;gap:4px;padding-left:44px;position:relative}
.steps li b{font-weight:800}
.steps li::before{content:counter(s);position:absolute;left:0;top:-2px;width:30px;height:30px;border-radius:50%;background:var(--yellow);color:var(--yellow-ink);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}
.steps li.done::before{content:"✓";background:var(--green);color:#082418}
.steps li span{color:var(--text-2);font-size:13.5px}
.list{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--card-sh)}
.row{display:flex;align-items:center;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line);transition:background .35s var(--ease)}
.row:last-child{border-bottom:0}
.row:hover{background:var(--glass)}
.row>svg{color:var(--text-3);transition:transform .45s var(--ease),color .35s var(--ease)}
.row-n{font-size:14px;font-weight:800;color:var(--yt);min-width:26px;font-variant-numeric:tabular-nums}
.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.row-main b{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-main small{color:var(--text-3);font-size:13px}
.row.warn{background:var(--orange-soft)}
.row.warn .row-n{color:var(--orange)}
.due-t{font-weight:700}.due-t.soon{color:var(--orange)}.due-t.late{color:var(--red)}
.feed{display:flex;flex-direction:column;gap:12px}
.fb{display:flex;gap:14px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--card-sh);transition:border-color .4s var(--ease),transform .5s var(--ease)}
.fb-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}
.fb-top{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.fb-top b{font-weight:800;font-size:13.5px}
.fb-top small{color:var(--text-3);font-size:12px;margin-left:auto}
.fb p{font-size:15px}
.fb .muted{font-size:12.5px}
.qs{display:flex;flex-direction:column;gap:10px}
.qq{display:block;padding:14px 16px;background:var(--yellow-soft);border-radius:16px;border:1px solid rgba(253,185,40,.22)}
.qq p{font-size:14.5px}
.qq small{color:var(--text-3);font-size:12px}

/* ---------- lectures ---------- */
.lecs{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.lec{display:flex;align-items:center;gap:18px;padding:22px 18px 22px 22px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);min-height:108px;box-shadow:var(--card-sh);transition:border-color .5s var(--ease),transform .5s var(--ease),background .5s var(--ease)}
.lec-n{font-size:46px;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--yt);font-variant-numeric:tabular-nums;min-width:62px}
.lec-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.lec-body b{font-size:15px;font-weight:800;line-height:1.35}
.lec-body small{display:flex;align-items:center;gap:7px;color:var(--text-3);font-size:13px;flex-wrap:wrap}
.lec.off,.lec.closed{background:var(--empty-bg);border-style:dashed;box-shadow:none}
.lec.off .lec-n,.lec.closed .lec-n{color:var(--faint)}
.lec.closed b{color:var(--text-3)}
.lec-go{color:var(--text-3);transition:transform .5s var(--ease),color .4s var(--ease)}
.ok-dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block;box-shadow:0 0 0 3px rgba(47,210,156,.18)}
.mini-st{display:inline-flex;gap:4px}
.mini-st i{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.mini-st i.st-done{background:var(--green)}.mini-st i.st-review{background:var(--violet)}.mini-st i.st-fix{background:var(--orange)}
.lec-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:40px;align-items:start}
.lec-main>.block:first-child,.lec-aside>.block:first-child{margin-top:0}
.tasks{display:flex;flex-direction:column;gap:12px}
.task{display:flex;align-items:center;gap:18px;padding:18px 20px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--card-sh);transition:border-color .5s var(--ease),transform .5s var(--ease)}
.task-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.task-main b{font-size:15px;font-weight:800}
.task-main small{color:var(--text-2);font-size:14px}
.task-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.notes{padding:22px 24px;line-height:1.75;font-size:15.5px}
.mats{display:flex;flex-direction:column;gap:10px}
.mat{display:flex;align-items:center;gap:14px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--card-sh);transition:border-color .4s var(--ease),transform .5s var(--ease)}
.mat-ic{width:42px;height:42px;border-radius:13px;background:var(--yellow-soft);color:var(--yt);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.mat-txt{min-width:0;display:flex;flex-direction:column}
.mat-txt b{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mat-txt small{color:var(--text-3);font-size:12px}
.ask{padding:20px 20px 22px}
.ask h2{font-size:15px;margin-bottom:6px}
.ask textarea{margin:14px 0 12px}
.pager{display:flex;justify-content:space-between;margin-top:56px;padding-top:22px;border-top:1px solid var(--line)}
.pager a{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--text-2);transition:color .4s var(--ease),gap .4s var(--ease)}
.edit-mats{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.em{display:flex;align-items:center;gap:8px}
.em>svg{color:var(--text-3)}
.em .inp{flex:1}
.add-link{display:grid;grid-template-columns:1fr 1.4fr auto;gap:8px;margin-bottom:10px}
.brief-edit{padding:18px 18px 4px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line);margin-bottom:16px}
.brief-edit .eyebrow{margin-bottom:14px;color:var(--yt)}
.due-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.due-row .inp{flex:1;min-width:210px}
.admin-sec{padding:18px 0;border-top:1px solid var(--line);margin-top:12px}
.admin-sec.first{border-top:0;margin-top:0;padding-top:4px}
.admin-sec h4{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:6px}
.admin-sec .muted{margin-bottom:12px}

/* ---------- assignment & works ---------- */
.task-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start}
.task-layout.solo{grid-template-columns:minmax(0,1fr);max-width:860px}
.brief{padding:28px 30px;display:flex;flex-direction:column;gap:20px;position:relative;overflow:hidden}
.brief>.eyebrow{color:var(--yt)}
.brief::after{content:"";position:absolute;right:-50px;top:-50px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(253,185,40,.28),transparent 70%);pointer-events:none}
.bf>span{display:block;font-size:11.5px;font-weight:800;color:var(--text-3);margin-bottom:5px}
.bf p{font-size:15.5px}
.mine .card.pad{padding:22px}
.mine-card{display:flex;gap:18px;padding:18px;align-items:stretch}
.mine-cover{width:42%;max-width:200px;aspect-ratio:4/5;border-radius:14px;overflow:hidden;background:var(--glass);position:relative;flex-shrink:0}
.mine-cover img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.mine-body{display:flex;flex-direction:column;gap:12px;align-items:flex-start;min-width:0;padding:4px 0}
.mine-body .row-btns{margin-top:auto}
.who-handed{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.wh{display:inline-flex;align-items:center;gap:7px;padding:4px 12px 4px 4px;border-radius:20px;background:var(--glass);border:1px solid var(--line);font-size:13px;color:var(--text-3);font-weight:600}
.wh.on{color:var(--text);border-color:var(--green-line);background:var(--green-soft)}
.wh.on svg{color:var(--green)}
.locked{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:48px 20px;color:var(--text-2)}
.locked>svg{color:var(--yt)}
.locked b{font-weight:800}
.locked p{color:var(--text-3);font-size:14px;max-width:44ch}
.works{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.work{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--card-sh);transition:transform .55s var(--ease),box-shadow .55s var(--ease),border-color .55s var(--ease)}
.work-cover{position:relative;aspect-ratio:4/5;background:var(--cover);overflow:hidden}
.work-cover img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.work-cover.land{display:flex;align-items:center;justify-content:center;padding:16px}
.work-cover.land img{height:auto;object-fit:contain;box-shadow:0 10px 26px rgba(0,0,0,.4)}
.work-v{position:absolute;top:10px;left:10px;padding:3px 9px;border-radius:8px;background:rgba(7,4,14,.72);color:#fff;font-size:11px;font-weight:800;line-height:1.3;backdrop-filter:blur(6px)}
.work-pages{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:8px;background:rgba(7,4,14,.72);color:#fff;font-size:11px;font-weight:800;line-height:1.3}
.work-meta{padding:14px;display:flex;flex-direction:column;gap:9px}
.work-who{display:flex;align-items:center;gap:9px;min-width:0}
.work-who b{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work-task{font-size:13px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work-foot{display:flex;align-items:center;justify-content:space-between;gap:6px}
.work-stats{display:flex;gap:10px;color:var(--text-3);font-size:12px;font-weight:700}
.work-stats span{display:inline-flex;align-items:center;gap:3px}
.chips-row{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;margin-bottom:20px;scrollbar-width:none}
.chips-row::-webkit-scrollbar{display:none}
.fchip{flex-shrink:0;display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 18px;border-radius:21px;border:1px solid var(--line-2);background:var(--glass);font-weight:800;font-size:12px;color:var(--text);transition:background .35s var(--ease),border-color .35s var(--ease)}
.fchip.sm{height:32px;padding:0 13px;font-size:11px}
.fchip:hover{background:var(--glass-3)}
.fchip.on{background:var(--yellow-soft);border-color:var(--yellow-line);color:var(--text)}
.fchip.lockd{opacity:.5}
.upload{display:flex;flex-direction:column;gap:16px}
.drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:32px 18px;border:1.5px dashed var(--line-3);border-radius:var(--r);background:var(--empty-bg);text-align:center;width:100%;color:var(--text);transition:border-color .4s var(--ease),background .4s var(--ease),transform .4s var(--ease)}
.drop:hover,.drop.over{border-color:var(--yellow);background:var(--yellow-soft)}
.drop.over{transform:scale(1.005)}
.drop b{font-weight:800}
.drop-ic{width:54px;height:54px;border-radius:18px;background:var(--yellow);display:flex;align-items:center;justify-content:center;color:var(--yellow-ink);margin-bottom:8px;transition:transform .5s var(--ease)}
.drop small{color:var(--text-3);font-size:12.5px}
.up-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:12px}
.up-item{display:flex;flex-direction:column;gap:6px;font-size:12px;animation:pop .5s var(--ease)}
.up-thumb{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;background:var(--glass);display:flex;align-items:center;justify-content:center;border:1px solid var(--line)}
.up-thumb img{width:100%;height:100%;object-fit:cover}
.up-n{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;background:var(--yellow);color:var(--yellow-ink);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.up-state{display:flex;align-items:center;gap:4px;color:var(--green);font-weight:700}
.up-item.bad .up-state{color:var(--red)}
.up-act{display:flex;gap:0}
.up-act .btn.icon.sm{width:30px;height:30px}

/* students matrix */
.legend{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.matrix-wrap{overflow:auto;max-width:100%}
.matrix{border-collapse:separate;border-spacing:0;width:auto;min-width:100%;font-size:13px}
.matrix th,.matrix td{padding:12px 9px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}
.matrix tbody tr:last-child td{border-bottom:0}
.matrix thead th{position:sticky;top:0;background:var(--panel);z-index:1;font-weight:700;color:var(--text-3);vertical-align:bottom}
.matrix th a{display:flex;flex-direction:column;align-items:center;gap:3px;max-width:116px;margin:0 auto}
.matrix th a span{font-size:16px;font-weight:800;color:var(--yt)}
.matrix th a small{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:108px}
.matrix .sticky{position:sticky;left:0;background:var(--panel);text-align:left;z-index:2;min-width:220px;padding-left:18px}
.matrix thead .sticky{z-index:3}
.matrix .end{width:46px}
.matrix .who{display:flex;align-items:center;gap:11px}
.matrix .who span{display:flex;flex-direction:column}
.matrix .who b{font-weight:800;font-size:13px}
.matrix .who small{color:var(--text-3);font-size:11.5px}
.cell{display:inline-flex;align-items:center;justify-content:center;width:36px;height:28px;border-radius:9px;font-size:10px;font-weight:800;color:#0B0716;transition:transform .35s var(--ease)}
.cell.st-done{background:var(--green)}.cell.st-review{background:var(--violet)}.cell.st-fix{background:var(--orange)}
.cell.st-none{background:transparent;border:1px dashed var(--line-3)}
.matrix tr.inactive{opacity:.45}
.matrix tbody tr:hover td{background:var(--row-hover)}
.matrix-wrap.card{background:var(--panel)}

/* profile & settings */
.profile-head{display:flex;align-items:center;gap:22px;margin-bottom:10px;flex-wrap:wrap}
.profile-head .eyebrow{color:var(--yt)}
.profile-head h1{font-size:clamp(28px,3.4vw,42px);font-weight:800;margin:6px 0 0}
.profile-head .btn{margin-left:auto}
.num-sm{font-weight:800;color:var(--yt);font-variant-numeric:tabular-nums}
.set-sec{margin-bottom:18px}
.set-me{display:flex;align-items:center;gap:18px;margin-bottom:20px;flex-wrap:wrap}
.grp-list{display:flex;flex-direction:column;gap:12px;margin:16px 0 18px}
.grp-card{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:18px;background:var(--glass);border:1px solid var(--line)}
.grp-card.arch{opacity:.55}
.grp-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.grp-name{flex:1;min-width:160px;font-weight:700}
.grp-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:13px;font-size:11px;font-weight:800;background:var(--green-soft);color:var(--green)}
.grp-chip i{width:6px;height:6px;border-radius:50%;background:currentColor}
.grp-chip.st-soon{background:var(--violet-soft);color:var(--violet)}
.grp-chip.st-past,.grp-chip.st-arch{background:var(--glass-2);color:var(--text-3)}
.grp-dates{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.grp-dates label{display:flex;flex-direction:column;gap:6px;min-width:0}
.grp-new{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:18px;border:1.5px dashed var(--line-2)}
.grp-new .btn{align-self:flex-start}
.set-note{margin-top:12px}
.mode-seg button{padding:10px 8px}
.code-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:12px;border:1px solid var(--yellow-line);background:var(--yellow-soft);color:var(--yt);font-weight:800;letter-spacing:.12em;font-size:13px}
.snip-list{display:flex;flex-direction:column;gap:8px;margin:16px 0}
.snip-item{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;border-radius:14px;background:var(--glass);border:1px solid var(--line);font-size:14px}
.snip-item span{flex:1}
.logout{margin:12px auto 0;display:flex}
.about{text-align:center;color:var(--text-3);font-size:12px;margin-top:10px}

/* notifications */
.notif-wrap{position:fixed;inset:0;z-index:70;background:var(--overlay-2);animation:fade .4s var(--ease)}
.notif{position:absolute;right:24px;top:calc(var(--top) + 8px);width:410px;max-height:min(620px,calc(100vh - 110px));background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--sh-lg);display:flex;flex-direction:column;animation:slideUp .5s var(--ease)}
.notif-head{display:flex;align-items:center;gap:6px;padding:16px 12px 12px 20px;border-bottom:1px solid var(--line)}
.notif-head h3{flex:1;font-size:15px;font-weight:800}
.notif-list{overflow:auto;padding:8px}
.notif-list .empty{border:0;background:none}
.nt{display:flex;gap:12px;width:100%;text-align:left;padding:12px;border:0;background:none;border-radius:16px;transition:background .35s var(--ease);animation:rise .55s var(--ease) both}
.nt:hover{background:var(--glass)}
.nt.new{background:var(--yellow-soft)}
.nt-ic{width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--glass-2);color:var(--text-2)}
.nt-ic.k-comment{background:var(--blue-soft);color:var(--blue)}.nt-ic.k-rating{background:var(--yellow-soft);color:var(--yt)}.nt-ic.k-status{background:var(--green-soft);color:var(--green)}.nt-ic.k-version{background:var(--violet-soft);color:var(--violet)}.nt-ic.k-lecture{background:var(--coral-soft);color:var(--coral)}
.nt-body{display:flex;flex-direction:column;gap:3px;font-size:14px;min-width:0}
.nt-body small{color:var(--text-3);font-size:12px}

/* ---------- viewer ---------- */
.viewer{display:grid;grid-template-columns:minmax(0,1fr) 420px;height:100vh;height:100dvh;background:var(--stage)}
.viewer-load{height:100vh;display:flex;align-items:center;justify-content:center}
.stage{display:flex;flex-direction:column;min-width:0;min-height:0;color:#fff;background:radial-gradient(900px 600px at 50% 40%,rgba(120,50,170,.18),transparent 70%)}
.stage-top{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.07)}
.stage-title{flex:1;min-width:0;display:flex;flex-direction:column}
.stage-title b{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stage-title span{font-size:13px;color:rgba(255,255,255,.55)}
.stage-title a:hover{color:#fff;text-decoration:underline}
.vtabs{display:flex;gap:3px;background:rgba(255,255,255,.07);padding:4px;border-radius:13px}
.vtabs button{border:0;background:none;color:rgba(255,255,255,.6);font-weight:800;font-size:12.5px;padding:7px 11px;border-radius:9px;transition:background .2s,color .2s}
.vtabs button.on{background:var(--yellow);color:var(--yellow-ink)}
.stage-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:26px;overflow:auto}
.stage-img{position:relative;display:inline-block;line-height:0;box-shadow:0 30px 80px rgba(0,0,0,.6);max-width:100%;animation:fade .6s var(--ease)}
.stage-img img{max-width:100%;max-height:calc(100vh - 196px);max-height:calc(100dvh - 196px);width:auto;height:auto;user-select:none;-webkit-user-select:none}
.stage-img.pinning{cursor:crosshair;outline:2px dashed var(--yellow);outline-offset:8px}
.pin{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;border:2px solid #fff;background:#B39BFF;color:#0B0716;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.45);line-height:1;padding:0;transition:transform .4s var(--ease),opacity .4s var(--ease);z-index:1;animation:pinIn .6s var(--ease) both}
.pin.t{background:var(--yellow);color:var(--yellow-ink)}
.pin.a{background:#fff;color:#0B0716;border-color:#0B0716}
.pin.hl{transform:translate(-50%,-50%) scale(1.2);z-index:3}
.pin.done{opacity:.45}
.pin.draft{background:#FF9A7E;color:#2A0E05;font-size:17px;animation:pulse 2.2s infinite;z-index:4}
@keyframes pinIn{from{transform:translate(-50%,-50%) scale(.6);opacity:0}}
.stage-foot{display:flex;align-items:center;gap:12px;padding:12px 16px 16px;flex-wrap:wrap}
.pages{display:flex;gap:8px;overflow-x:auto}
.pages button{position:relative;width:50px;height:50px;border-radius:11px;overflow:hidden;border:2px solid transparent;padding:0;background:#222;opacity:.5;flex-shrink:0;transition:opacity .2s,border-color .2s}
.pages button.on{border-color:var(--yellow);opacity:1}
.pages img{width:100%;height:100%;object-fit:cover}
.pages span{position:absolute;bottom:1px;right:5px;font-size:10px;font-weight:800;color:#fff;text-shadow:0 1px 2px #000}
.pin-btn{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14);color:#fff;margin-left:auto}
.pin-btn.on{background:var(--yellow);border-color:var(--yellow);color:var(--yellow-ink)}
.stage-body.cmp{gap:20px;align-items:stretch}
.cmp-side{margin:0;flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;animation:fade .6s var(--ease)}
.cmp-side img{max-width:100%;max-height:calc(100vh - 216px);max-height:calc(100dvh - 216px);object-fit:contain;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.cmp-l{font-size:12px;font-weight:800;padding:4px 11px;border-radius:8px;background:rgba(255,255,255,.12)}
.cmp-l.on{background:var(--yellow);color:var(--yellow-ink)}
.panel{background:var(--panel);display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--line)}
.panel-head{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:18px 20px 14px}
.panel-head .who{display:flex;align-items:center;gap:12px}
.panel-head .who span{display:flex;flex-direction:column}
.panel-head .who b{font-weight:800;font-size:14px}
.panel-head .who small{color:var(--text-3);font-size:12px}
.st-seg{display:flex;width:100%}
.st-seg button{flex:1;font-size:11px;padding:9px 4px}
.st-seg button.on.s-review{color:var(--violet)}.st-seg button.on.s-fix{color:var(--orange)}.st-seg button.on.s-done{color:var(--green)}
.vnote{display:flex;gap:9px;margin:0 20px 14px;padding:12px 14px;background:var(--glass);border:1px solid var(--line);border-radius:14px;font-size:13.5px;color:var(--text-2)}
.vnote svg{margin-top:2px;color:var(--yt)}
.mine-actions{display:flex;gap:10px;padding:0 20px 14px;flex-wrap:wrap}
.panel-tabs{display:flex;gap:8px;padding:0 20px;border-bottom:1px solid var(--line)}
.panel-tabs button{border:0;background:none;padding:13px 8px;font-weight:800;font-size:12.5px;color:var(--text-3);border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:7px;transition:color .2s,border-color .2s}
.panel-tabs button.on{color:var(--text);border-bottom-color:var(--yellow)}
.panel-body{flex:1;overflow:auto;padding:18px 20px 30px}
.composer{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line);margin-bottom:16px}
.comp-where{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.where{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:20px;border:1px dashed var(--line-3);background:transparent;font-size:12.5px;font-weight:700;color:var(--text-2);transition:border-color .2s,color .2s}
.where:hover{border-color:var(--yellow);color:var(--yt)}
.where.on{background:#FF9A7E;border:1px solid #FF9A7E;color:#2A0E05}
.where.wait{border-color:var(--yellow);color:var(--yt)}
.where button{border:0;background:none;color:inherit;padding:0 0 0 4px;display:inline-flex}
.snips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
.snips button{flex-shrink:0;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;padding:7px 11px;border-radius:10px;border:1px solid var(--line);background:var(--glass);color:var(--text-2);transition:border-color .2s,color .2s}
.snips button:hover{border-color:var(--yellow-line);color:var(--yt)}
.comp-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.comp-foot .btn{margin-left:auto}
.cmts{display:flex;flex-direction:column;gap:4px}
.cmt{display:flex;gap:11px;padding:11px;border-radius:16px;transition:background .4s var(--ease);animation:rise .55s var(--ease) both}
.cmt.hl{background:var(--glass-2)}
.cmt.done p{color:var(--text-3);text-decoration:line-through;text-decoration-color:var(--line-3)}
.cmt-body{flex:1;min-width:0}
.cmt-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px}
.cmt-top b{font-weight:800}
.cmt-top .tag{margin-left:0}
.cmt-top small{color:var(--text-3);font-size:11.5px}
.cmt-top small:last-child{margin-left:auto}
.cmt p{font-size:14.5px;margin-top:4px}
.pin-n{width:21px;height:21px;border-radius:50%;font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;background:#B39BFF;color:#0B0716;flex-shrink:0}
.pin-n.t{background:var(--yellow);color:var(--yellow-ink)}
.pin-n.a{background:#fff;color:#0B0716;box-shadow:0 0 0 1px var(--line-2)}
.cmt-act{display:flex;gap:6px;margin-top:8px}
.mini{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 9px;border-radius:9px;border:1px solid var(--line);background:var(--glass);font-size:12px;font-weight:700;color:var(--text-3);transition:color .2s,border-color .2s,background .2s}
.mini:hover{color:var(--text);border-color:var(--line-2)}
.mini.on{background:var(--green-soft);border-color:transparent;color:var(--green)}
.older{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}
.older summary{cursor:pointer;font-weight:700;font-size:13.5px;color:var(--text-2);padding:6px 0}
.older .cmt{opacity:.7}
.rate{display:flex;flex-direction:column;gap:14px}
.rate-card{padding:18px;border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;gap:12px;background:var(--glass);animation:rise .6s var(--ease) both}
.rate-card.teacher{background:linear-gradient(180deg,rgba(253,185,40,.14),rgba(253,185,40,.03) 75%);border-color:var(--yellow-line)}
.rate-card.form{background:var(--glass-2);border-color:transparent}
.rc-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rc-score{font-size:28px;font-weight:800;line-height:1}
.rc-text{font-size:14px;color:var(--text-2)}
.bars{display:flex;flex-direction:column;gap:9px}
.bar{display:grid;grid-template-columns:100px 1fr 30px;align-items:center;gap:10px;font-size:13px}
.bar span{color:var(--text-2)}
.bar i{height:8px;border-radius:8px;background:var(--track-2);overflow:hidden;display:block}
.bar i b{display:block;height:100%;background:var(--violet);border-radius:8px;transform-origin:left;animation:grow 1.2s var(--ease) both}
.bars.t .bar i b{background:var(--yellow)}
@keyframes grow{from{transform:scaleX(0)}}
.bar em{font-style:normal;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}
.peer-txt{display:flex;flex-direction:column;gap:9px;padding-top:10px;border-top:1px solid var(--line)}
.peer-txt p{display:flex;gap:8px;font-size:13.5px;color:var(--text-2)}
.peer-txt svg{flex-shrink:0;margin-top:3px;color:var(--text-3)}
.peer-txt small{color:var(--text-3)}
.rate-rows{display:flex;flex-direction:column;gap:12px;margin:4px 0}
.rr{display:grid;grid-template-columns:100px 1fr 16px;align-items:center;gap:10px;font-size:14px}
.rr em{font-style:normal;font-weight:800;color:var(--yt)}
.dots{display:inline-flex;gap:7px}
.dots button{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--line-3);background:transparent;padding:0;transition:transform .35s var(--ease),background .35s var(--ease),border-color .35s var(--ease)}
.dots button.on{background:var(--yellow);border-color:var(--yellow)}
.dots button:hover:not(:disabled){border-color:var(--yellow)}

/* ---------- chat (like IdeaRoom WORK) ---------- */
.chat{display:flex;flex-direction:column;height:calc(100vh - var(--top) - 64px);max-width:1080px;margin:32px auto 0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--card-sh)}
.chat-head{display:flex;align-items:center;gap:12px;padding:20px 26px;border-bottom:1px solid var(--line)}
.chat-head h2{font-size:20px;font-weight:800;display:flex;align-items:center;gap:6px}
.chat-head h2 .ic{color:var(--text-2)}
.chat-head small{color:var(--text-3);font-size:14px}
.chat-list{flex:1;overflow-y:auto;padding:18px 26px 22px;display:flex;flex-direction:column}
.chat-list .empty{margin:auto;border:0;background:none}
.day-sep{display:flex;justify-content:center;margin:22px 0 10px;color:var(--text-3);font-size:13px;font-weight:600}
.msg{position:relative;display:flex;gap:14px;padding:8px 10px;margin:4px -10px 0;border-radius:16px;transition:background .35s var(--ease)}
.msg.fresh{animation:rise .6s var(--ease) both}
.chat-list>.day-sep:first-of-type{animation:fade .6s var(--ease) both}
.msg:hover{background:var(--hover)}
.msg.cont{margin-top:0;padding-top:2px}
.msg-av{width:42px;flex-shrink:0;display:flex}
.msg-col{flex:1;min-width:0}
.msg-who{display:flex;align-items:baseline;gap:10px;margin-bottom:3px}
.msg-who b{font-size:14px;font-weight:800}
.msg-who .tag{margin-left:0;align-self:center}
.msg-who small{color:var(--text-3);font-size:12px}
.msg-text{font-size:15px;line-height:1.5;color:var(--text)}
.msg-text p{white-space:pre-wrap;word-wrap:break-word}
.msg.teacher .msg-who b{color:var(--yt)}
.reply-q{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:4px 0 6px;padding:8px 14px;border:0;border-left:3px solid var(--yellow);border-radius:10px;background:var(--glass-2);max-width:min(100%,460px);cursor:pointer;text-align:left;color:inherit;transition:background .35s var(--ease)}
.reply-q:hover{background:var(--glass-3)}
.reply-q b{color:var(--yt);font-size:12.5px;font-weight:800}
.reply-q span{color:var(--text-2);font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-img{display:block;margin:6px 0 4px;border-radius:14px;overflow:hidden;width:300px;max-width:100%;border:1px solid var(--line)}
.msg-img img{width:100%;height:auto;max-height:360px;object-fit:cover}
.reacts{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.react{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border-radius:15px;border:1px solid var(--line-2);background:var(--glass);font-size:14px;font-weight:700;color:var(--text-2);transition:background .35s var(--ease),border-color .35s var(--ease),transform .3s var(--ease);animation:pop .5s var(--ease)}
.react:hover{background:var(--glass-3)}
.react:active{transform:scale(.96)}
.react.mine{border-color:var(--yellow-line);background:var(--yellow-soft);color:var(--text)}
.react span{font-size:12px}
.msg-tools{position:absolute;top:-14px;right:10px;display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--panel-2);border:1px solid var(--line-2);box-shadow:var(--sh);opacity:0;transform:translateY(3px);pointer-events:none;transition:opacity .3s var(--ease),transform .3s var(--ease)}
.msg:hover .msg-tools,.msg.tools .msg-tools{opacity:1;transform:none;pointer-events:auto}
.msg-tools button{width:32px;height:30px;border:0;border-radius:9px;background:none;color:var(--text-2);display:flex;align-items:center;justify-content:center;font-size:16px;transition:background .3s var(--ease),color .3s var(--ease)}
.msg-tools button:hover{background:var(--glass-3);color:var(--text)}
.gone{color:var(--text-3);font-size:13.5px;font-style:italic}
.older-btn{align-self:center;margin-bottom:8px}
.chat-input{padding:14px 18px 18px;border-top:1px solid var(--line)}
.replying{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:8px 10px 8px 14px;border-left:3px solid var(--yellow);border-radius:10px;background:var(--glass-2);animation:rise .45s var(--ease)}
.replying div{flex:1;min-width:0;display:flex;flex-direction:column}
.replying b{color:var(--yt);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.025em}
.replying span{color:var(--text-2);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ci-row{display:flex;align-items:flex-end;gap:10px;position:relative}
.ci-row textarea{flex:1;resize:none;max-height:150px;min-height:52px;border-radius:26px;padding:14px 20px}
.ci-btn{width:52px;height:52px;border-radius:50%;border:1px solid var(--line-2);background:var(--glass);color:var(--text-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .35s var(--ease),color .35s var(--ease),transform .3s var(--ease)}
.ci-btn:hover{background:var(--glass-3);color:var(--text)}
.ci-btn:active{transform:scale(.96)}
.send{width:52px;height:52px;border-radius:50%;border:0;background:var(--yellow);color:var(--yellow-ink);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 8px 24px rgba(253,185,40,.25);transition:transform .3s var(--ease),opacity .35s var(--ease)}
.send:active:not(:disabled){transform:scale(.95)}
.send:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.emoji-pop{position:absolute;bottom:62px;left:62px;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:8px;border-radius:18px;background:var(--panel-2);border:1px solid var(--line-2);box-shadow:var(--sh-lg);z-index:5;animation:slideUp .4s var(--ease)}
.emoji-pop button{width:38px;height:38px;border:0;border-radius:10px;background:none;font-size:20px;transition:background .3s var(--ease),transform .3s var(--ease)}
.emoji-pop button:hover{background:var(--glass-3);transform:scale(1.08)}
.react-pop{position:absolute;top:-52px;right:10px;display:flex;gap:2px;padding:5px;border-radius:16px;background:var(--panel-2);border:1px solid var(--line-2);box-shadow:var(--sh-lg);z-index:6;animation:slideUp .4s var(--ease)}
.react-pop button{width:38px;height:38px;border:0;border-radius:10px;background:none;font-size:20px;transition:transform .3s var(--ease),background .3s var(--ease)}
.react-pop button:hover{transform:scale(1.12);background:var(--glass-3)}
.att{position:relative;display:inline-block;margin:0 0 10px 62px;animation:pop .5s var(--ease)}
.att img{height:76px;width:auto;border-radius:12px;border:1px solid var(--line)}
.att>button{position:absolute;top:-7px;right:-7px;width:24px;height:24px;border-radius:50%;border:0;background:var(--yellow);color:var(--yellow-ink);display:flex;align-items:center;justify-content:center;padding:0}
.att .spin{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(7,4,14,.6);border-radius:12px}

/* ---------- projector ---------- */
.show{position:fixed;inset:0;z-index:100;background:var(--stage);color:#fff;display:flex;flex-direction:column;animation:fade .5s var(--ease)}
.show .state{color:rgba(255,255,255,.6)}
.show-top{display:flex;align-items:center;gap:14px;padding:14px 18px 14px 24px}
.show-count{font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--yellow)}
.show-title{color:rgba(255,255,255,.7);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:.025em}
.show-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:0 30px}
.show-stage img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 30px 90px rgba(0,0,0,.6);animation:showIn .8s var(--ease)}
@keyframes showIn{from{opacity:0;transform:scale(.985)}}
.show-hit{position:absolute;top:0;bottom:0;width:32%;border:0;background:none;z-index:1}
.show-hit.l{left:0;cursor:w-resize}.show-hit.r{right:0;cursor:e-resize}
.show-cap{display:flex;align-items:center;gap:14px;padding:18px 24px 24px}
.show-cap b{display:block;font-size:17px;font-weight:800}
.show-cap span{color:rgba(255,255,255,.6);font-size:13px}
.show-nav{display:flex;gap:8px}
.show-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:16px}
.show .empty{color:#fff;border-color:rgba(255,255,255,.2)}

/* demo switch */
.demo-sw{position:fixed;left:16px;bottom:118px;z-index:90}
.demo-pill{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 15px;border-radius:20px;border:0;background:var(--yellow);color:var(--yellow-ink);font-weight:800;font-size:12px;box-shadow:0 10px 30px rgba(253,185,40,.3)}
.live{width:8px;height:8px;border-radius:50%;background:#E5484D;animation:pulse 2.2s infinite}
.demo-menu{position:absolute;bottom:46px;left:0;background:var(--panel-2);border:1px solid var(--line-2);border-radius:18px;box-shadow:var(--sh-lg);padding:6px;display:flex;flex-direction:column;min-width:240px;animation:slideUp .4s var(--ease)}
.demo-menu button{border:0;background:none;text-align:left;padding:11px 13px;border-radius:12px;font-weight:800;font-size:12.5px;color:var(--text)}
.demo-menu button:hover{background:var(--glass-2)}
.demo-menu button.on{background:var(--yellow-soft);color:var(--yt)}

/* ---------- menu: group, theme, "more" sheet ---------- */
.side-grp{padding:0 6px 18px;display:flex;flex-direction:column;gap:9px}
.grp-static{font-weight:800;font-size:14px;padding:11px 14px;border-radius:14px;background:var(--glass);border:1px solid var(--line-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grp-meta{display:flex;align-items:center;gap:7px;padding:0 8px;font-size:12px;color:var(--text-3);flex-wrap:wrap;line-height:1.4}
.grp-meta i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px var(--green-soft);flex-shrink:0}
.grp-meta.st-soon i{background:var(--violet);box-shadow:0 0 0 3px var(--violet-soft)}
.grp-meta.st-past i{background:var(--text-3);box-shadow:none}
.grp-state{font-weight:800;color:var(--text-2);font-size:11px}
.grp-state+.grp-per::before{content:"·";margin-right:7px}
.more-wrap{position:fixed;inset:0;z-index:25;background:var(--overlay-2);display:flex;align-items:flex-end;animation:fade .4s var(--ease)}
.more-sheet{width:100%;background:var(--panel);border-top:1px solid var(--line-2);border-radius:26px 26px 0 0;padding:10px 12px calc(var(--tabs) + 12px + env(safe-area-inset-bottom));box-shadow:var(--sh-lg);display:flex;flex-direction:column;gap:2px;animation:slideUp .5s var(--ease)}
.more-grab{width:40px;height:4px;border-radius:4px;background:var(--line-3);align-self:center;margin:2px 0 10px}
.more-sheet a,.more-mode{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:16px;font-weight:700;font-size:14px;color:var(--text);border:0;background:none;text-align:left;width:100%;transition:background .35s var(--ease)}
.more-sheet a.on{background:var(--glass-2)}
.more-ic,.more-mode .mode-ic{width:40px;height:40px;border-radius:13px;background:var(--glass-2);display:flex;align-items:center;justify-content:center;color:var(--text-2);flex-shrink:0}
.more-sheet a.on .more-ic{background:var(--yellow-soft);color:var(--yt)}
.more-sheet a>span:nth-child(2){flex:1}
.more-go{color:var(--text-3)}
.more-mode{margin-top:6px;border-top:1px solid var(--line);border-radius:0;padding-top:14px}

/* ---------- attendance ---------- */
.att-me{display:flex;align-items:center;gap:22px;padding:20px 24px;margin-bottom:22px;flex-wrap:wrap;background:var(--card-hi)}
.att-me-num b{font-size:46px;font-weight:800;color:var(--violet);line-height:1;font-variant-numeric:tabular-nums}
.att-me-num small{font-size:20px;color:var(--text-3);font-weight:700;margin-left:3px}
.att-me-txt{display:flex;flex-direction:column;gap:3px;flex:1;min-width:180px}
.att-me-txt b{font-weight:800;font-size:15px}
.att-me-txt span{color:var(--text-2);font-size:14px}
.att-me .attdots{flex:1.3;min-width:220px;max-width:360px}
.att-legend{gap:8px 18px;margin-bottom:16px}
.lg{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:800;color:var(--text-2)}
.lg .ac{width:22px;height:22px;border-radius:7px}
.ac{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;transition:background .4s var(--ease),transform .35s var(--ease),box-shadow .4s var(--ease)}
.ac .ic{animation:pop .45s var(--ease)}
.ac.a-here{background:var(--green);color:#06281B}
.ac.a-late{background:var(--orange);color:#2B1402}
.ac.a-away{background:var(--red-soft);color:var(--red);box-shadow:inset 0 0 0 1.5px var(--red)}
.ac.a-excused{background:var(--violet-soft);color:var(--violet);box-shadow:inset 0 0 0 1.5px var(--violet)}
.ac.a-none{box-shadow:inset 0 0 0 1.5px var(--line-3)}
.ac.a-off{width:8px;height:8px;border-radius:50%;background:var(--track)}
:root[data-mode="light"] .ac.a-here,:root[data-mode="light"] .ac.a-late{color:#fff}
.ac-btn{border:0;background:none;padding:2px;border-radius:12px;display:inline-flex;cursor:pointer}
.ac-btn:active .ac{transform:scale(.95)}
.att-matrix{width:100%}
.att-matrix th,.att-matrix td{padding:8px 5px}
.att-matrix .sticky{padding-left:18px}
.att-h{display:flex;flex-direction:column;align-items:center;gap:1px;border:0;background:none;padding:5px 6px;border-radius:10px;color:inherit;font:inherit;min-width:42px;margin:0 auto}
button.att-h{cursor:pointer;transition:background .35s var(--ease)}
.att-n{font-size:15px;font-weight:800;color:var(--text-3);font-variant-numeric:tabular-nums}
th.held .att-n{color:var(--yt)}
.att-h small{font-size:10.5px;font-weight:600;color:var(--text-3);white-space:nowrap}
.pct-h,.pct{min-width:62px}
.pct b{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.pct b.good{color:var(--green)}.pct b.mid{color:var(--orange)}.pct b.low{color:var(--red)}
.matrix tr.me-row td{background:linear-gradient(var(--me-row),var(--me-row)),var(--panel)}
.att-tip{display:flex;align-items:center;gap:8px;margin-top:14px}
.rc-top{display:grid;grid-template-columns:1.6fr 1fr;gap:12px}
.rc-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:2px 0 14px;border-bottom:1px solid var(--line);margin-bottom:10px}
.rc-count{font-size:14px;color:var(--text-2)}
.rc-count b{color:var(--text);font-weight:800}
.rc-list{display:flex;flex-direction:column;gap:6px}
.rc-row{display:flex;align-items:center;gap:12px;padding:7px 7px 7px 10px;border-radius:16px;transition:background .45s var(--ease);animation:rise .55s calc(var(--i) * 35ms) var(--ease) both}
.rc-row.a-here{background:var(--green-soft)}.rc-row.a-late{background:var(--orange-soft)}.rc-row.a-away{background:var(--red-soft)}.rc-row.a-excused{background:var(--violet-soft)}
.rc-who{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.rc-who b{font-weight:800;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-seg{display:flex;gap:3px;padding:3px;border-radius:14px;background:var(--panel);border:1px solid var(--line)}
.rc-b{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 10px;border:0;border-radius:11px;background:none;color:var(--text-3);font-size:11px;font-weight:800;transition:background .4s var(--ease),color .4s var(--ease)}
.rc-b.on.b-here{background:var(--green);color:#06281B}.rc-b.on.b-late{background:var(--orange);color:#2B1402}
.rc-b.on.b-away{background:var(--red);color:#fff}.rc-b.on.b-excused{background:var(--violet);color:#fff}
:root[data-mode="light"] .rc-b.on.b-here,:root[data-mode="light"] .rc-b.on.b-late{color:#fff}

/* ---------- links ---------- */
.sec-h{font-size:18px;font-weight:800;display:flex;align-items:center;gap:10px;margin:0 0 16px}
.yt-badge{width:28px;height:20px;border-radius:6px;background:#E5484D;color:#fff;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.yt-badge .ic path,.yt-play .ic path{fill:currentColor;stroke:none}
.yt-block{margin-bottom:8px}
.yts{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px;margin-top:18px}
.yt-wrap{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0}
.yt,.yt-hero{position:relative;display:flex;flex-direction:column;flex:1;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--card-sh);transition:transform .55s var(--ease),border-color .55s var(--ease),box-shadow .55s var(--ease)}
.yt-hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);border-radius:var(--r-lg);animation:rise .7s var(--ease) both}
.yt-hero .yt-cover{height:100%;min-height:100%}
.yt-hero-body{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;padding:30px 32px}
.yt-hero-body .eyebrow{color:var(--yt)}
.yt-hero-body .yt-t{font-size:24px;line-height:1.25;-webkit-line-clamp:4}
.yt-hero-body p{color:var(--text-2);font-size:15px;line-height:1.55}
.yt-go{margin-top:6px;pointer-events:none}
.yt-cover{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:#1E1236;background:linear-gradient(140deg,var(--c) -20%,#170D2B 72%)}
.yt-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.yt-art{position:absolute;inset:0;overflow:hidden}
.yt-art::before{content:"";position:absolute;right:-12%;top:-30%;width:62%;aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,255,255,.14)}
.yt-art::after{content:"";position:absolute;left:8%;bottom:-38%;width:46%;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.07)}
.yt-play{position:absolute;left:50%;top:50%;width:56px;height:40px;margin:-20px 0 0 -28px;border-radius:12px;background:rgba(10,6,20,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;display:flex;align-items:center;justify-content:center;transition:background .5s var(--ease),transform .5s var(--ease)}
.yt-hero .yt-play{width:78px;height:54px;margin:-27px 0 0 -39px;border-radius:16px}
.yt-tag{position:absolute;left:12px;top:12px;padding:4px 10px;border-radius:9px;background:rgba(10,6,20,.6);color:#fff;font-size:11px;font-weight:800;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.yt-meta{display:flex;flex-direction:column;gap:4px;padding:14px 16px 16px;flex:1}
.yt-top{display:flex;align-items:flex-start;gap:4px}
.yt-top .tag{margin-top:1px}
.yt-t{font-weight:800;font-size:14px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.yt-meta small{color:var(--text-3);font-size:13px}
.lk-badge{width:28px;height:20px;border-radius:6px;background:var(--glass-3);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center}
.lk-cat{color:var(--text-2)}
.lk-edit{width:34px;height:34px;border-radius:11px;border:1px solid var(--line-2);background:var(--panel);color:var(--text-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity .35s var(--ease),background .35s var(--ease),color .35s var(--ease)}
.yt .lk-edit,.yt-hero .lk-edit{position:absolute;right:12px;top:12px}
.lk-edit:hover{color:var(--text);background:var(--panel-2)}
.lks{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.lk-wrap{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0}
.lk{display:flex;align-items:flex-start;gap:14px;padding:16px;flex:1;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--card-sh);transition:border-color .5s var(--ease),transform .5s var(--ease)}
.lk-ic{position:relative;width:46px;height:46px;border-radius:14px;background:var(--c);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:19px;flex-shrink:0;overflow:hidden}
.lk-ic img{position:absolute;inset:0;width:100%;height:100%;padding:10px;background:#fff;object-fit:contain}
.lk-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lk-top{display:flex;align-items:center;gap:4px;min-width:0}
.lk-t{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lk-body small{color:var(--text-3);font-size:12.5px}
.lk-body p{color:var(--text-2);font-size:13.5px;margin-top:6px;line-height:1.45}
.lk-go{color:var(--text-3);flex-shrink:0;margin-top:3px;transition:transform .5s var(--ease),color .4s var(--ease)}
.sites .chips-row{margin-bottom:16px}
.arr{display:flex;justify-content:center;gap:4px}
.yt-note{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;background:var(--glass);border:1px solid var(--line);font-size:13.5px;color:var(--text-2);margin:-4px 0 16px}
.cat-picks{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}

/* ---------- optional tasks (no lecture) ---------- */
.free{padding:20px 22px;margin-bottom:26px;background:linear-gradient(135deg,rgba(179,155,255,.13),rgba(179,155,255,.02) 60%),var(--card);border-color:var(--violet-soft)}
.free-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}
.free-ic{width:42px;height:42px;border-radius:13px;background:var(--violet-soft);color:var(--violet);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.free-txt{flex:1;min-width:0}
.free-txt h2{font-size:17px;font-weight:800;margin-bottom:4px}
.free .task{background:var(--glass);box-shadow:none}
.free-empty{padding:2px}
.chip.opt{color:var(--violet);background:var(--violet-soft);border-color:transparent}
.free-note{display:flex;align-items:flex-start;gap:9px;padding:11px 14px;border-radius:14px;background:var(--violet-soft);color:var(--text-2);font-size:13.5px;margin-bottom:16px;line-height:1.5}
.free-note svg{color:var(--violet);margin-top:2px}
.free-note.top{margin:-14px 0 24px;max-width:780px}
.row.opt .row-n{color:var(--violet)}
.cell.st-opt::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--faint)}
.matrix th.opt-col a span{color:var(--violet)}

/* ---------- examples on a task ---------- */
.ex-block .block-head{margin-bottom:6px}
.ex-sub{margin-bottom:16px}
.ex-ic{width:28px;height:28px;border-radius:9px;background:var(--yellow-soft);color:var(--yt);display:inline-flex;align-items:center;justify-content:center}
.examples{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.ex{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--card-sh)}
.ex-cover{position:relative;display:block;aspect-ratio:4/5;background:var(--cover);border:0;padding:0;cursor:zoom-in;overflow:hidden}
.ex-cover img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.ex-cover.land{display:flex;align-items:center;justify-content:center;padding:14px}
.ex-cover.land img{height:auto;object-fit:contain;box-shadow:0 10px 26px rgba(0,0,0,.35)}
.ex-meta{display:flex;flex-direction:column;gap:3px;padding:12px 14px 14px}
.ex-meta b{font-weight:800;font-size:13px}
.ex-meta small{color:var(--text-2);font-size:13px;line-height:1.45}
.ex .lk-edit{position:absolute;right:10px;top:10px}
.ex-pick{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.ex-drop{padding:22px 16px}
.ex-from{margin:4px 0 0}
.ex-others{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px}
.ex-other{flex-shrink:0;width:104px;display:flex;flex-direction:column;gap:6px;border:2px solid transparent;border-radius:14px;background:none;padding:3px;text-align:left;color:var(--text);transition:border-color .35s var(--ease),background .35s var(--ease)}
.ex-other img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:10px;background:var(--cover)}
.ex-other span{font-size:11.5px;font-weight:800;display:flex;flex-direction:column;line-height:1.3;padding:0 2px}
.ex-other small{color:var(--text-3);font-weight:600;font-size:11px;text-transform:none;letter-spacing:0}
.ex-other.on{border-color:var(--yellow);background:var(--yellow-soft)}
.ex-prev img{max-height:220px;width:auto;border-radius:14px;margin:0 auto 16px}
.lb{position:fixed;inset:0;z-index:100;background:var(--stage);color:#fff;display:flex;flex-direction:column;animation:fade .45s var(--ease)}
.lb-top{display:flex;align-items:center;gap:12px;padding:14px 16px 14px 24px}
.lb-count{font-weight:800;color:var(--yellow);letter-spacing:.06em;font-variant-numeric:tabular-nums}
.lb-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:0 78px}
.lb-stage img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 30px 90px rgba(0,0,0,.6);animation:showIn .7s var(--ease)}
.lb-nav{position:absolute;top:50%;margin-top:-24px;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.07);color:#fff;display:flex;align-items:center;justify-content:center;transition:background .35s var(--ease),opacity .35s var(--ease)}
.lb-nav.l{left:16px}.lb-nav.r{right:16px}
.lb-nav:disabled{opacity:.2;cursor:default}
.lb-cap{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 24px 26px;text-align:center;min-height:64px}
.lb-cap b{font-size:16px;font-weight:800}
.lb-cap span{color:rgba(255,255,255,.72);font-size:14px;max-width:70ch}
.lb-cap .lb-pg{font-size:12px;color:rgba(255,255,255,.5)}

/* ---------- students: adding names ---------- */
.ok-box{display:flex;align-items:center;gap:8px;padding:11px 14px;border-radius:14px;background:var(--green-soft);color:var(--green);font-weight:700;font-size:14px;margin-bottom:14px;animation:rise .5s var(--ease)}
.how{padding:16px 18px;border-radius:18px;background:var(--yellow-soft);border:1px solid var(--yellow-line);display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.how b{font-weight:800;font-size:13px}
.how ol{margin:0;padding-left:20px;color:var(--text-2);font-size:14px;display:flex;flex-direction:column;gap:3px}
.who-pin{color:var(--orange);font-weight:700}
:root[data-mode="light"] .toast{background:#1C1233;color:#fff;border-color:transparent}
:root[data-mode="light"] .toast svg{color:var(--yellow)}

/* hover lifts only where there is a mouse (on phones a tapped card would stay lifted) */
/* ---------- student home: what to do, as big cards ---------- */
.mytasks .block-head h2{display:flex;align-items:center;gap:10px}
.count.hot{background:var(--yellow);color:var(--yellow-ink);border-color:transparent}
.tcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.tcard{position:relative;display:flex;flex-direction:column;gap:10px;padding:22px 22px 18px 26px;background:var(--card-hi);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--card-sh);overflow:hidden;transition:border-color .5s var(--ease),transform .5s var(--ease)}
.tcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--yellow)}
.tcard.soon::before,.tcard.fix::before{background:var(--orange)}
.tcard.late::before{background:var(--red)}
.tcard-top{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap}
.tcard-n{font-size:11.5px;font-weight:800;color:var(--yt)}
.tcard-due{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--text-2)}
.tcard-due.soon{color:var(--orange)}.tcard-due.late{color:var(--red)}
.tcard-t{font-size:19px;font-weight:800;line-height:1.3}
.tcard-g{color:var(--text-2);font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tcard-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:6px}
.tcard-go{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:12.5px;color:var(--yt);transition:gap .45s var(--ease)}
.chip.st-todo{color:var(--yt);background:var(--yellow-soft);border-color:transparent}
.alldone{display:flex;align-items:center;gap:16px;padding:20px 22px}
.alldone-ic{width:46px;height:46px;border-radius:50%;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.alldone b{display:block;font-weight:800;font-size:15px;margin-bottom:2px}
.alldone small{color:var(--text-3);font-size:13.5px}
.handed{margin-top:22px;display:flex;flex-direction:column;gap:10px}
.stats.compact{margin-top:38px}
.stats.two{grid-template-columns:repeat(2,1fr)}
.stats.slim .stat{padding:20px 22px 18px;gap:4px}
.stats.slim .stat-num,.stats.four.slim .stat-num{font-size:42px}
.stats.slim .stat-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcard.opt::before{background:var(--violet)}
.tcard.opt .tcard-n{color:var(--violet)}
.stats.compact .stat{padding:18px 20px 16px;gap:4px}
.stats.compact .stat-num{font-size:38px}
.stats.compact .stat-chart{padding-top:14px;height:auto}
/* ---------- manager / administrator overview ---------- */
.meter{position:relative;width:100%;height:10px;border-radius:6px;background:var(--track);overflow:hidden}
.meter i,.meter b{position:absolute;left:0;top:0;bottom:0;border-radius:6px;transform-origin:left;animation:grow-x 1s .4s var(--ease) both}
.meter i{background:var(--yellow);opacity:.45}
.meter b{background:var(--green)}
@keyframes grow-x{from{transform:scaleX(0)}}
.why{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}
.why .chip{height:24px;font-size:10.5px;padding:0 9px}
.chip.why-att{color:var(--violet);background:var(--violet-soft);border-color:transparent}
.chip.why-late{color:var(--red);background:var(--red-soft);border-color:transparent}
.gtable{padding:6px;display:flex;flex-direction:column}
.gt-row{display:grid;grid-template-columns:minmax(0,2fr) repeat(4,minmax(0,1fr));gap:12px;align-items:center;padding:14px 16px;border-radius:14px;border:0;background:none;text-align:left;color:var(--text);font:inherit;font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;transition:background .35s var(--ease)}
button.gt-row{cursor:pointer}
.gt-row.on{background:var(--yellow-soft)}
.gt-head{font-size:11px;color:var(--text-3);padding-top:10px;padding-bottom:6px}
.gt-name{display:flex;flex-direction:column;gap:2px;min-width:0}
.gt-name b{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gt-name small{font-size:12px;color:var(--text-3);font-weight:600}
.gt-name small.st-now{color:var(--green)}
.gt-l{display:none;font-style:normal}
.top-role{display:inline-flex;align-items:center;height:40px;padding:0 16px;border-radius:20px;border:1px solid var(--violet-line,var(--line));background:var(--violet-soft);color:var(--text);font-size:12px;font-weight:800}
.role-tag{font-size:11px;font-weight:800;color:var(--violet);background:var(--violet-soft);padding:3px 9px;border-radius:12px;margin-left:8px;vertical-align:middle}
/* ---------- settings: team, snippets ---------- */
.team-list{display:flex;flex-direction:column;gap:8px;margin:14px 0 16px}
.team-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:var(--glass);color:var(--text);text-align:left;font:inherit;width:100%;transition:border-color .35s var(--ease),background .35s var(--ease)}
.team-row:hover{border-color:var(--line-2)}
.team-row.off{opacity:.55}
.team-row.self{cursor:default;border-style:dashed}
.team-row.self:hover{border-color:var(--line)}
.team-row>svg{color:var(--text-3);flex-shrink:0}
.team-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.team-txt b{font-weight:800;font-size:14px}
.team-txt small{color:var(--text-3);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cred{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border-radius:16px;background:var(--yellow-soft);border:1px solid var(--yellow-line)}
.cred-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.cred-l{font-size:11px;font-weight:800;color:var(--yt);min-width:70px}
.cred-row b{font-size:15px;font-weight:800;word-break:break-all}
.cred-pw{letter-spacing:.06em;font-size:18px!important}
.cred .btn{align-self:flex-start}
.snip-cats{margin:14px 0 10px}
.fchip small{font-size:11px;font-weight:800;color:var(--text-3);margin-left:2px}
.snip-box{display:flex;flex-direction:column;gap:8px}
.snip-tabs{display:flex;gap:4px;flex-wrap:wrap}
.snip-tabs button{border:0;background:none;padding:5px 10px;border-radius:9px;font-size:11px;font-weight:800;color:var(--text-3);transition:background .3s var(--ease),color .3s var(--ease)}
.snip-tabs button:hover{color:var(--text)}
.snip-tabs button.on{background:var(--yellow-soft);color:var(--text)}
.snip-box .snips{flex-wrap:wrap;max-height:122px;overflow-y:auto;overflow-x:hidden;padding-right:2px}
.snip-box .snips button{max-width:100%}
button.lec{font:inherit;color:var(--text);text-align:left;width:100%;cursor:pointer}
button.lec.closed:hover{border-color:var(--line-2)}
.add-lec{background:var(--empty-bg);border-style:dashed;box-shadow:none}
.add-lec .lec-n{color:var(--yt)}
.add-lec:hover{border-color:var(--yellow-line);background:var(--yellow-soft)}
.signin-links{display:flex;justify-content:center;gap:4px;flex-wrap:wrap;margin-top:10px}
/* ---------- syllabus: the lecture's plan, the course window ---------- */
.plan{list-style:none;margin:0;padding:10px 22px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}
.plan li{display:flex;gap:12px;align-items:baseline;padding:10px 0;font-size:14.5px;line-height:1.45;border-bottom:1px solid var(--line)}
.plan li span{font-size:11px;font-weight:800;color:var(--yt);font-variant-numeric:tabular-nums;min-width:18px;flex-shrink:0}
.syl{display:flex;flex-direction:column;gap:20px}
.syl-out{padding:16px 20px 18px;border-radius:16px;background:var(--yellow-soft);border:1px solid var(--yellow-line)}
.syl-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px;margin-bottom:8px}
.syl-goals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.syl-goals li{display:flex;gap:10px;align-items:flex-start;font-size:14.5px;line-height:1.5;font-weight:600}
.syl-goals li svg{color:var(--green);flex-shrink:0;margin-top:3px}
.syl-btns{margin-top:10px;align-items:center}
.syl-lecs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.syl-row{display:flex;align-items:center;gap:16px;padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:var(--glass);color:var(--text);transition:border-color .35s var(--ease)}
a.syl-row:hover{border-color:var(--line-2)}
.syl-row>svg{color:var(--text-3);flex-shrink:0}
.syl-n{font-size:22px;font-weight:800;color:var(--faint);min-width:34px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.syl-row.open .syl-n{color:var(--yt)}
.syl-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.syl-t b{font-weight:800;font-size:14.5px;line-height:1.35}
.syl-t small{font-size:12.5px;color:var(--text-3);line-height:1.55}
.meter.big{height:12px;margin-top:14px}
.meter.mid b{background:var(--orange)}
.meter.full b{background:var(--red)}
.arch-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.arch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 16px;border:1px solid var(--line);border-radius:14px;background:var(--glass);font-weight:700;font-size:14px}
.signin-links .link-btn{margin-top:0}
@media (hover:hover){
  .tcard:hover{border-color:var(--line-2);transform:translateY(-2px)}
  .tcard:hover .tcard-go{gap:10px}
  button.gt-row:not(.on):hover{background:var(--glass)}
  a.stat:hover{border-color:var(--line-2);transform:translateY(-2px)}
  a.lec:hover{border-color:var(--yellow-line);transform:translateY(-2px);background:var(--card-hi)}
  a.lec:hover .lec-go{transform:translateX(3px);color:var(--yt)}
  .task:hover{border-color:var(--yellow-line);transform:translateY(-1px)}
  .work:hover{transform:translateY(-3px);box-shadow:var(--sh);border-color:var(--line-2)}
  .work:hover .work-cover img,.mine-cover:hover img{transform:scale(1.025)}
  .fb:hover{border-color:var(--line-2);transform:translateX(2px)}
  .mat:hover{border-color:var(--yellow-line);transform:translateX(2px)}
  .row:hover>svg{transform:translateX(3px);color:var(--text)}
  .pager a:hover{color:var(--yt);gap:9px}
  .drop:hover .drop-ic{transform:translateY(-2px)}
  a.cell:hover{transform:scale(1.08)}
  .dots button:hover:not(:disabled){transform:scale(1.08)}
  .pick-name:hover{background:var(--glass-2);border-color:var(--line-2);transform:translateX(2px)}
  button.att-h:hover{background:var(--glass-2)}
  .rc-b:hover:not(.on){color:var(--text);background:var(--glass-2)}
  .yt:hover,.yt-hero:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--sh)}
  .yt:hover .yt-cover img,.yt-hero:hover .yt-cover img{transform:scale(1.03)}
  .yt:hover .yt-play,.yt-hero:hover .yt-play{background:#E5484D}
  .yt .lk-edit,.yt-hero .lk-edit{opacity:0}
  .yt:hover .lk-edit,.yt-hero:hover .lk-edit,.lk-edit:focus-visible{opacity:1}
  .lk:hover{border-color:var(--yellow-line);transform:translateY(-2px)}
  .ex:hover .ex-cover img{transform:scale(1.025)}
  .ex .lk-edit{opacity:0}
  .ex:hover .lk-edit{opacity:1}
  .ex-other:hover:not(.on){border-color:var(--line-3)}
  .lb-nav:hover:not(:disabled){background:rgba(255,255,255,.16)}
  .lk:hover .lk-go{transform:translateX(3px);color:var(--yt)}
}

/* ---------- tablet & phone ---------- */
@media (max-width:1180px){
  .viewer{grid-template-columns:minmax(0,1fr) 370px}
  .lec-layout{grid-template-columns:minmax(0,1fr) 300px;gap:28px}
  .stat-num{font-size:46px}
  .stats.four{grid-template-columns:repeat(2,1fr)}
  .yt-hero{grid-template-columns:1fr}
  .yt-hero .yt-cover{height:auto;min-height:0}
}
@media (max-width:900px){
  .side,.topbar{display:none}
  .main{margin-left:0;padding-top:var(--mtop);padding-bottom:calc(var(--tabs) + env(safe-area-inset-bottom))}
  .mtop{display:flex;position:fixed;top:0;left:0;right:0;height:var(--mtop);align-items:center;gap:8px;padding:0 12px 0 16px;background:var(--bar);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);z-index:30}
  .mtop .logo{height:26px}
  .mtop .brand-badge{height:22px;font-size:10px;padding:0 7px;border-radius:7px}
  .mtop .brand{gap:8px}
  .mtop .grp select{padding:7px 30px 7px 11px;font-size:12px;max-width:130px;border-radius:12px}
  .mtop .round{width:38px;height:38px}
  .tabs{display:flex;position:fixed;bottom:0;left:0;right:0;height:calc(var(--tabs) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--bar);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);z-index:30}
  .tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:9.5px;font-weight:800;color:var(--text-3);position:relative;min-width:0;transition:color .35s var(--ease);border:0;background:none;padding:0}
  .tab>span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;padding:0 2px}
  .tab.on{color:var(--text)}
  .tab.on .tab-ic{color:var(--yt)}
  .tab.on::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:30px;height:3px;border-radius:0 0 3px 3px;background:var(--yellow)}
  .tab-ic{position:relative;display:flex}
  .tab-ic .badge{position:absolute;top:-7px;right:-12px;min-width:18px;height:18px;font-size:10px;padding:0 5px;margin:0}
  .page{padding:24px 16px 44px}
  .page-head{margin-bottom:24px}
  .page-head h1{font-size:30px}
  .lead{font-size:16px;margin:-8px 0 24px}
  .block{margin-top:34px}
  .two{grid-template-columns:1fr;gap:0}
  .lec-layout,.task-layout{grid-template-columns:1fr;gap:0}
  .lec-aside{margin-top:34px}
  .task-layout .mine{margin-top:18px}
  .steps ol{grid-template-columns:1fr}
  .toasts{bottom:calc(var(--tabs) + 16px + env(safe-area-inset-bottom))}
  .notif{left:8px;right:8px;top:calc(var(--mtop) + 6px);width:auto;max-height:calc(100dvh - var(--mtop) - 20px)}
  .app.full:not(.is-chat) .main{padding:0}
  .app.full:not(.is-chat) .mtop,.app.full:not(.is-chat) .tabs{display:none}
  .viewer{grid-template-columns:1fr;height:auto;min-height:100dvh}
  .stage-top{position:sticky;top:0;z-index:5;background:var(--stage)}
  .stage-body{padding:14px;min-height:42vh}
  .stage-img img{max-height:60vh}
  .cmp-side img{max-height:48vh}
  .panel{border-left:0;border-radius:24px 24px 0 0;position:relative}
  .panel-body{overflow:visible}
  .hide-sm{display:none!important}
  .app.is-chat .main{height:100vh;height:100dvh;display:flex;flex-direction:column}
  .app.is-chat .route{flex:1;min-height:0;display:flex;flex-direction:column}
  .chat{height:auto;flex:1;min-height:0;border:0;border-radius:0;max-width:none;width:100%;margin:0;background:transparent}
  .chat-head{padding:14px 16px}
  .chat-head h2{font-size:16px}
  .chat-list{padding:10px 14px 16px}
  .msg-av{width:36px}
  .chat-input{padding:10px 12px 12px;background:var(--topbar)}
  .ci-row{gap:8px}
  .ci-btn,.send{width:46px;height:46px}
  .ci-row textarea{min-height:46px;padding:11px 16px;border-radius:23px}
  .emoji-pop{left:0;bottom:56px;grid-template-columns:repeat(7,1fr)}
  .att{margin-left:0}
  .auth{grid-template-columns:1fr;min-height:auto}
  .auth-side{padding:24px 20px 32px;border-right:0;border-bottom:1px solid var(--line)}
  .auth-copy{margin-top:80px}
  .auth-copy h1{font-size:40px}
  .auth-copy p{font-size:15px}
  .auth-art{width:200px;right:-50px;top:14px;opacity:.6}
  .auth.deep .auth-side{padding-bottom:22px}
  .auth.deep .auth-copy{margin-top:34px}
  .auth.deep .auth-copy h1{font-size:30px;margin:8px 0 0}
  .auth.deep .auth-copy p,.auth.deep .auth-art{display:none}
  .auth.deep .auth-main{padding-top:24px}
  .auth-main{padding:30px 20px 44px}
  .demo-sw{left:auto;right:12px;bottom:calc(var(--tabs) + 12px + env(safe-area-inset-bottom))}
  .demo-menu{left:auto;right:0}
  .app.full~.demo-sw{display:none}
  .matrix .sticky{min-width:170px}
}
@media (max-width:600px){
  .stats,.stats.four{grid-template-columns:1fr;gap:12px}
  .stats.compact{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:30px}
  .plan{grid-template-columns:1fr;padding:6px 18px}
  .syl-row{gap:12px;padding:12px 14px}
  .syl-n{font-size:18px;min-width:26px}
  .stats.compact .stat{display:flex;padding:14px 16px}
  .stats.compact .stat-num{font-size:32px;align-self:flex-start}
  .stats.compact .stat-chart{display:none}
  .tcards{grid-template-columns:1fr;gap:12px}
  .tcard{padding:18px 18px 16px 22px}
  .tcard-t{font-size:17px}
  .gt-head{display:none}
  .gt-row{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:10px;padding:14px}
  .gt-name{grid-column:1/-1}
  .gt-c{display:flex;flex-direction:column;gap:2px}
  .gt-l{display:block;font-size:9.5px;color:var(--text-3);font-weight:800}
  .top-role{display:none}
  .stats.four .stat-num{font-size:42px}
  .stats.slim .stat{padding:14px 18px}
  .stats.slim .stat-num,.stats.four.slim .stat-num{font-size:34px}
  .stats.slim{gap:8px}
  .rc-top{grid-template-columns:1fr;gap:0}
  .rc-b{width:38px;padding:0;justify-content:center}
  .rc-b span{display:none}
  .rc-row{gap:8px}
  .yts{grid-template-columns:1fr;gap:14px}
  .yt-hero-body{padding:20px 20px 22px}
  .examples{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .lb-stage{padding:0 8px}
  .lb-nav{width:40px;height:40px;margin-top:-20px;background:rgba(10,6,20,.55)}
  .lb-nav.l{left:8px}.lb-nav.r{right:8px}
  .free{padding:16px}
  .free-head{flex-wrap:wrap}
  .yt-hero-body .yt-t{font-size:19px}
  .lks{grid-template-columns:1fr;gap:10px}
  .att-me{gap:14px 18px;padding:18px}
  .pin-box{width:54px;height:62px}
  .signin h2{font-size:24px}
  .stat{padding:18px 20px;display:grid;grid-template-columns:1fr auto;grid-template-areas:"l n" "s n" "c c";column-gap:12px;row-gap:2px}
  .stat-label{grid-area:l;font-size:13.5px}
  .stat-num{grid-area:n;font-size:44px;align-self:center}
  .stat-sub{grid-area:s;font-size:13px}
  .stat-chart{grid-area:c;padding-top:14px;height:auto}
  .works{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .work-meta{padding:10px;gap:7px}
  .work-foot .chip{font-size:10px;padding:0 7px;height:22px}
  .work-stats{gap:6px}
  .lecs{grid-template-columns:1fr}
  .lec{min-height:88px;padding:16px 14px 16px 18px}
  .lec-n{font-size:36px;min-width:50px}
  .task{flex-direction:column;align-items:flex-start;gap:10px}
  .task-side{flex-direction:row;align-items:center;flex-wrap:wrap}
  .two-f,.add-link{grid-template-columns:1fr}
  .modal-wrap{align-items:flex-end;padding:0}
  .modal,.modal.wide,.modal.small{border-radius:26px 26px 0 0;max-height:94dvh;padding-bottom:env(safe-area-inset-bottom);max-width:none}
  .codebox{width:100%;justify-content:space-between}
  .ph-act{width:100%}
  .mine-card{flex-direction:column}
  .mine-cover{width:100%;max-width:none;aspect-ratio:16/10}
  .brief{padding:22px}
  .bar{grid-template-columns:88px 1fr 28px}
  .rr{grid-template-columns:88px 1fr 14px}
  .dots{gap:5px}
  .dots button{width:28px;height:28px}
  .profile-head .btn{margin-left:0}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
