/* ============================================================================
 * Tetrahedron — Kairos glass skin (studio/portal-kits/tetrahedron)
 * ----------------------------------------------------------------------------
 * Implements the kit identity: deep institutional purple base, backlit-glass
 * surfaces, the azure domain accent (--kairos-tetrahedron #4db6ff) used with
 * restraint, honest state colors, and purposeful (never frantic) motion.
 *
 * PRESENTATION ONLY — no layout mechanics, no IDs, no JS hooks are changed.
 * Load AFTER the page's inline <style> so equal-specificity rules win here.
 * Rollout: add this <link> to each Tetrahedron route, one by one.
 * ========================================================================== */

:root{
  --kairos-bg:#0d0a1f;
  --kairos-bg-deep:#070511;
  --kairos-purple:#7c4dff;
  --kairos-purple-soft:#a78bfa;
  --kairos-tetra:#4db6ff;            /* the ONE domain accent */
  --kairos-glass:rgba(255,255,255,.06);
  --kairos-glass-strong:rgba(255,255,255,.10);
  --kairos-border:rgba(255,255,255,.14);
  --kairos-text:#f4f1ff;
  --kairos-muted:#a9a3c4;
  --kairos-good:#4fd1c5;             /* honest states — calm, not neon */
  --kairos-warn:#f2b134;
  --kairos-danger:#ff8d8d;
  --kairos-grad-deep:radial-gradient(120% 120% at 50% 0%,#1a1236 0%,#0d0a1f 55%,#070511 100%);
  --kairos-grad-glass:linear-gradient(160deg,rgba(255,255,255,.10) 0%,rgba(255,255,255,.02) 100%);
  --kairos-inset:inset 0 1px 0 rgba(255,255,255,.08);
  --kairos-shadow:0 18px 48px rgba(0,0,0,.5);
  --kairos-glow-tetra:0 0 24px rgba(77,182,255,.25);
  --kairos-ease-out:cubic-bezier(.16,1,.3,1);
  --kairos-ease-loop:cubic-bezier(.65,0,.35,1);

  /* Remap the shared shell + future --tet-* API onto Kairos tokens */
  --k-bg:var(--kairos-bg);
  --k-panel:rgba(255,255,255,.05);
  --k-panel-alt:rgba(255,255,255,.04);
  --k-line:var(--kairos-border);
  --k-text:var(--kairos-text);
  --k-muted:var(--kairos-muted);
  --k-accent:rgba(77,182,255,.14);
  --k-shadow:var(--kairos-shadow);
  --tet-bg:var(--kairos-bg); --tet-surface:rgba(255,255,255,.05); --tet-card:rgba(255,255,255,.05);
  --tet-text:var(--kairos-text); --tet-muted:var(--kairos-muted); --tet-border:var(--kairos-border);
  --tet-accent:var(--kairos-tetra); --tet-accent-soft:rgba(77,182,255,.14);
  --tet-danger:var(--kairos-danger); --tet-warning:var(--kairos-warn); --tet-success:var(--kairos-good);

  /* Remap topbar-shell.css widget vars (bell + user box + dropdowns) */
  --bg:var(--kairos-bg);
  --panel:#161130;                 /* dropdown surface — solid, readable over content */
  --panel-alt:rgba(255,255,255,.04);
  --primary:var(--kairos-tetra);
  --primary2:#2f9bef;
  --text:var(--kairos-text);
  --muted:var(--kairos-muted);
  --line:var(--kairos-border);
  --accent:rgba(77,182,255,.14);
  --good:rgba(79,209,197,.14);
  --warn:rgba(242,177,52,.14);
  --danger:rgba(255,141,141,.14);
}

/* ---------- Base ---------- */
html,body{
  background:var(--kairos-grad-deep) fixed, var(--kairos-bg-deep);
  color:var(--kairos-text);
  font-family:"Inter","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}

/* ---------- Sidebar (shared shell) ---------- */
/* The rail used to sit at rgba(13,10,31,.92)→rgba(7,5,17,.96) — darker than the
   canvas it borders, so it read as a hole rather than a surface, and the nav
   glyphs had almost no ground to sit on. It is now LIFTED above the canvas
   (#0d0a1f): a lighter violet-slate that still carries white text at full
   contrast, with the violet bloom kept as a top-corner light source. */
.k-sidebar{
  background:
    radial-gradient(circle at 16% 6%, rgba(140,105,255,.22), transparent 42%),
    radial-gradient(circle at 90% 94%, rgba(77,182,255,.10), transparent 40%),
    linear-gradient(180deg, #262052 0%, #1c1740 55%, #171233 100%);
  border-right:1px solid rgba(255,255,255,.10);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.05), 6px 0 28px rgba(0,0,0,.34);
  position:relative; z-index:70; /* keep tooltips above the content column */
}
.k-brand-logo{
  background:rgba(255,255,255,.08);
  box-shadow:0 10px 24px rgba(0,0,0,.3), var(--kairos-glow-tetra);
  border-radius:999px;
}
.k-brand-subtitle{color:var(--kairos-tetra); opacity:1;}
.k-portal-chip{
  background:rgba(77,182,255,.10);
  border:1px solid rgba(77,182,255,.35);
  color:var(--kairos-tetra);
}
/* On the lifted rail the old flat .85 opacity made every item look half-off.
   Resting items now hold real colour and the weight comes from the surface. */
.k-nav a{color:rgba(255,255,255,.80); opacity:1; font-weight:600;}
.k-nav a:hover{
  background:rgba(255,255,255,.09);
  color:#fff;
  transform:translateX(2px);
}
.k-nav a.active{
  background:linear-gradient(90deg, rgba(77,182,255,.20), rgba(77,182,255,.06));
  box-shadow:inset 3px 0 0 var(--kairos-tetra), 0 6px 18px rgba(0,0,0,.28);
  color:#fff; opacity:1; font-weight:700;
}
.k-nav a.active .k-nav-icon{color:var(--kairos-tetra);}
.k-sidebar-toggle{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}

/* Collapsed sidebar: the hidden label becomes a hover/focus tooltip.
   !important beats the shell's display:none!important; overflow:visible
   lets the bubble escape the nav's scroll container. */
body.sidebar-collapsed .k-sidebar,
body.sidebar-collapsed .k-nav{overflow:visible !important;}
body.sidebar-collapsed .k-nav a{position:relative; overflow:visible;}
body.sidebar-collapsed .k-nav a:hover .k-nav-label,
body.sidebar-collapsed .k-nav a:focus-visible .k-nav-label{
  display:block !important; position:absolute;
  left:calc(100% + 12px); top:50%; transform:translateY(-50%);
  background:#161130;
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  padding:6px 11px; border-radius:10px;
  font-size:12px; font-weight:600; white-space:nowrap;
  box-shadow:var(--kairos-shadow);
  z-index:200; pointer-events:none;
}
body.sidebar-collapsed .k-nav a:hover .k-nav-label::before,
body.sidebar-collapsed .k-nav a:focus-visible .k-nav-label::before{
  content:""; position:absolute; right:100%; top:50%;
  transform:translateY(-50%);
  border:5px solid transparent;
  border-right-color:#161130;
}
.k-sidebar-footer{border-top:1px solid var(--kairos-border);}

/* ---------- Topbar ---------- */
.topbar, .k-topbar{
  background:rgba(13,10,31,.55);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid var(--kairos-border);
  box-shadow:none;
}
.topbar .school-name, .topbar-school-name{color:var(--kairos-text);}
.topbar .school-sub{color:var(--kairos-tetra);}
.school-logo img{border-radius:999px;}

/* ENROLLMENT-INVITE A3 — topbar title + school pill (mirrors
   [data-octa-topbar] in octa-kairos-skin.css). Additive: only bites on pages
   that opt into the .tetra-topbar-title/.tetra-topbar-pill wrappers added in
   topbar-shell.css; every other page's plain .school-logo/.school-name stays
   on the two rules directly above, unaffected. */
.tetra-topbar-title-main{color:var(--kairos-text);}
.tetra-topbar-title-sub{color:var(--kairos-tetra);}
.tetra-topbar-pill{background:var(--kairos-glass); border:1px solid var(--kairos-border);}

/* Topbar widgets — notification bell + user box (injected by topbar-shell.js) */
.kairos-notif-trigger{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.kairos-notif-trigger:hover,
.kairos-user-box:hover{background:rgba(255,255,255,.10);}
.kairos-notif-badge{
  background:var(--kairos-tetra);
  color:#04121f;
  box-shadow:0 4px 10px rgba(77,182,255,.35);
}
.user-box, .kairos-user-box, .k-user-box{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
.school-logo, .user-avatar, .k-school-badge, .k-user-avatar{
  background:rgba(77,182,255,.12);
}
.user-name, .k-user-name{color:var(--kairos-text);}
.user-role, .k-user-role{color:var(--kairos-muted);}

/* Dropdowns — solid dark surfaces so they read over glass content */
.kairos-notif-dropdown, .kairos-user-dropdown{
  background:var(--panel);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-shadow);
}
/* User menu internals — kill the hardcoded light surfaces */
.kairos-user-menu-header{
  background:rgba(255,255,255,.04);
  border-bottom:1px solid var(--kairos-border);
}
.kairos-user-menu-name{color:var(--kairos-text);}
.kairos-user-menu-role{color:var(--kairos-muted);}
.kairos-user-menu-item{color:var(--kairos-text);}
.kairos-user-menu-item:hover{background:rgba(77,182,255,.10);}
.kairos-user-menu-item.muted{color:var(--kairos-muted);}
.kairos-user-menu-item.logout{color:var(--kairos-danger);}
.kairos-user-menu-divider{background:var(--kairos-border);}
.kairos-notif-empty p{color:var(--kairos-muted);}

.kairos-notif-item{border-bottom:1px solid rgba(255,255,255,.07);}
.kairos-notif-item:hover{background:rgba(255,255,255,.05);}
.kairos-notif-item.unread{background:rgba(77,182,255,.08);}
.kairos-notif-item.unread::before{background:var(--kairos-tetra);}
.kairos-notif-header, .kairos-notif-footer{
  background:var(--panel);
  border-color:rgba(255,255,255,.08);
}
.kairos-notif-title, .kairos-notif-item-title{color:var(--kairos-text);}
.kairos-notif-eyebrow, .kairos-notif-meta, .kairos-notif-time, .kairos-notif-item-body{color:var(--kairos-muted);}
.kairos-notif-action, .kairos-notif-link, .kairos-notif-footer a{color:var(--kairos-tetra);}
.kairos-filter-chip{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.kairos-filter-chip.active{
  background:rgba(77,182,255,.16);
  color:var(--kairos-tetra);
  border-color:rgba(77,182,255,.4);
}
.type-lesson{background:rgba(124,77,255,.16); color:var(--kairos-purple-soft);}
.type-student_alert{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.type-message{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.type-attendance, .type-ocr_review{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.type-system{background:rgba(255,255,255,.08); color:var(--kairos-muted);}

/* Sidebar identity mark — the domain solid crowns the sidebar (kit 01-identity);
   the Kairos mark stays in the sidebar footer as the way back to the whole. */
.k-brand-solid{
  width:42px; height:42px; flex-shrink:0;
  padding:4px; border-radius:14px;
  background:rgba(77,182,255,.10);
  border:1px solid rgba(77,182,255,.30);
  box-shadow:var(--kairos-glow-tetra);
}
.k-brand-solid polygon{
  fill:rgba(77,182,255,.16);
  stroke:var(--kairos-tetra);
  stroke-width:1.6; stroke-linejoin:round;
}

/* ---------- Page header / greeting band ---------- */
.pg-header{
  /* no backdrop-filter: hover transforms inside blurred parents cause
     visible repaint flicker in Chromium — a slightly more opaque fill
     reads identically over the fixed deep gradient */
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.pg-title{color:var(--kairos-text);}
.pg-sub{color:var(--kairos-muted);}

/* Greeting: the tetrahedron in orbit — the domain identity mark.
   The solid holds the center; light travels around it (directional,
   purposeful, never frantic — kit 01-identity / 10-motion). */
.pg-greet{display:flex; align-items:center; gap:16px;}
.tetra-orbit{
  position:relative; width:64px; height:64px; flex-shrink:0;
}
.tetra-orbit .tetra-solid{
  position:absolute; inset:0; margin:auto;
  width:38px; height:38px;
  filter:drop-shadow(0 0 10px rgba(77,182,255,.35));
  animation:tetra-drift 8s var(--kairos-ease-loop) infinite;
}
.tetra-orbit .tetra-solid polygon{
  fill:rgba(77,182,255,.16);
  stroke:var(--kairos-tetra);
  stroke-width:1.6; stroke-linejoin:round;
}
.tetra-orbit .t-ring{
  position:absolute; inset:2px;
  border:1px dashed rgba(77,182,255,.30);
  border-radius:50%;
}
.tetra-orbit .t-rotor{
  position:absolute; inset:0;
  animation:tetra-spin 14s linear infinite;
}
.tetra-orbit .t-rotor i{
  position:absolute; top:50%; left:50%;
  width:6px; height:6px; margin:-3px;
  border-radius:50%;
  background:var(--kairos-tetra);
  box-shadow:0 0 8px rgba(77,182,255,.7);
  transform:rotate(var(--a)) translateY(-30px);
}
@keyframes tetra-spin{to{transform:rotate(360deg);}}

/* Small orbit variant — sidebar identity mark */
.tetra-orbit--sm{width:46px; height:46px;}
.tetra-orbit--sm .tetra-solid{width:26px; height:26px;}
.tetra-orbit--sm .t-ring{inset:1px;}
.tetra-orbit--sm .t-rotor i{
  width:5px; height:5px; margin:-2.5px;
  transform:rotate(var(--a)) translateY(-21px);
}
@keyframes tetra-drift{
  0%,100%{transform:translateY(0) rotate(0deg);}
  50%{transform:translateY(-3px) rotate(3deg);}
}

/* KPI chips — honest states on glass */
.pg-kpi{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
.pk-v{color:var(--kairos-text);}
.pk-l{color:var(--kairos-muted);}
.pg-kpi.warn {background:rgba(242,177,52,.10);  border-color:rgba(242,177,52,.4);}
.pg-kpi.good {background:rgba(79,209,197,.10);  border-color:rgba(79,209,197,.4);}
.pg-kpi.alert{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.4);}
.pg-kpi.warn  .pk-v{color:var(--kairos-warn);}
.pg-kpi.good  .pk-v{color:var(--kairos-good);}
.pg-kpi.alert .pk-v{color:var(--kairos-danger);}

/* ---------- Today strip — azure marks the ONE primary action ---------- */
.today-strip-label{color:var(--kairos-muted);}
.act-chip{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.act-chip:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
  transform:translateY(-1px);
}
.act-chip.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent;
  color:#04121f;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.act-chip.primary:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  box-shadow:0 0 34px rgba(77,182,255,.4), var(--kairos-inset);
}

/* ---------- Panels ---------- */
.panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72); /* no blur — see .pg-header note */
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.panel-title{color:var(--kairos-text);}
.panel-link{color:var(--kairos-tetra);}

/* Honest empty states — calm, never a fabricated zero */
.empty-state{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.empty-state strong{color:var(--kairos-text);}
.empty-state a{color:var(--kairos-tetra);}

/* ---------- Course rows ---------- */
.course-row{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.course-row:hover{
  background:rgba(77,182,255,.08);
  border-color:rgba(77,182,255,.5);
  transform:translateY(-1px);
}
.course-mark{
  background:rgba(77,182,255,.12);
  border:1px solid rgba(77,182,255,.3);
}
.course-name{color:var(--kairos-text);}
.course-meta{color:var(--kairos-muted);}
.ci-warn   {background:rgba(242,177,52,.14);  color:var(--kairos-warn);}
.ci-good   {background:rgba(79,209,197,.14);  color:var(--kairos-good);}
.ci-danger {background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.ci-soft   {background:rgba(77,182,255,.14);  color:var(--kairos-tetra);}
.ci-neutral{background:rgba(255,255,255,.08); color:var(--kairos-muted);}

/* ---------- Activity feed ---------- */
.feed-item{border-bottom:1px solid rgba(255,255,255,.08);}
.feed-dot{background:var(--kairos-purple-soft);}
.feed-dot.alert{background:var(--kairos-danger);}
.feed-dot.warn {background:var(--kairos-warn);}
.feed-dot.good {background:var(--kairos-good);}
.feed-text{color:var(--kairos-text);}
.feed-meta{color:var(--kairos-muted);}

/* ---------- Attention rows — every count is a door ---------- */
.att-row{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.att-row:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
  transform:translateY(-1px);
}
.att-label{color:var(--kairos-text);}
.att-value{color:var(--kairos-tetra);}

/* ---------- Notices ---------- */
.notice-item.info  {background:rgba(77,182,255,.10);  border-color:var(--kairos-tetra);  color:#bfe3ff;}
.notice-item.warn  {background:rgba(242,177,52,.10);  border-color:var(--kairos-warn);   color:#ffe3ae;}
.notice-item.danger{background:rgba(255,141,141,.10); border-color:var(--kairos-danger); color:#ffc9c9;}

/* ---------- Diagnostics ---------- */
.dash-diagnostics{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
}
.dash-diagnostics summary{color:var(--kairos-text);}
.dash-diagnostics-item{
  background:rgba(0,0,0,.25);
  border:1px solid var(--kairos-border);
}
.dash-diagnostics-item .k{color:var(--kairos-muted);}
.dash-diagnostics-item .v{color:var(--kairos-text);}

/* ---------- Mobile bottom nav (teacher operations) ---------- */
@media (max-width:720px){
  .tm-bottom-nav{
    background:rgba(13,10,31,.85);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border-top:1px solid var(--kairos-border);
    box-shadow:0 -4px 24px rgba(0,0,0,.4);
  }
  .tm-tab, .tm-more > summary{color:var(--kairos-muted); background:transparent;}
  .tm-tab.active, .tm-tab[aria-current="page"], .tm-more[open] > summary{color:var(--kairos-tetra);}
  /* active tab pill — dark azure glass, never the light lavender pill */
  .tm-tab.active .tm-ico, .tm-tab[aria-current="page"] .tm-ico{
    background:rgba(77,182,255,.16);
    border:1px solid rgba(77,182,255,.35);
    border-radius:999px;
    padding:6px 16px;
  }
  .tm-more-sheet{
    background:var(--kairos-bg);
    border:1px solid var(--kairos-border);
    box-shadow:var(--kairos-shadow);
  }
  .tm-more-sheet a{color:var(--kairos-text);}
  .tm-more-sheet a:active,
  .tm-more-sheet a[aria-current="page"]{background:rgba(77,182,255,.12); color:var(--kairos-tetra);}
}

/* ---------- Mobile polish (≤720px — teacher command center) ---------- */
@media (max-width:720px){
  .page-content{padding:14px 14px calc(64px + env(safe-area-inset-bottom,0px) + 18px);}

  /* Greeting band: orbit + title on one line, KPIs below in a 2-col grid */
  .pg-header{padding:14px 16px; border-radius:18px;}
  .pg-greet{gap:12px;}
  .tetra-orbit{width:52px; height:52px;}
  .tetra-orbit .tetra-solid{width:30px; height:30px;}
  .tetra-orbit .t-rotor i{transform:rotate(var(--a)) translateY(-24px);}
  .pg-title{font-size:17px;}
  .pg-sub{font-size:11px;}
  .pg-kpi{padding:10px 8px; border-radius:14px;}
  .pk-v{font-size:22px;}

  /* Today strip: full-width, thumb-sized actions */
  .today-strip{gap:8px;}
  .today-strip-label{width:100%; margin:0 0 2px;}
  .act-chip{
    flex:1 1 calc(50% - 8px);
    justify-content:center;
    min-height:44px; height:auto;
    padding:10px 12px;
    font-size:12.5px;
    white-space:normal; text-align:center; line-height:1.25;
  }
  .act-chip.primary{flex-basis:100%;}

  /* Panels: tighter, calmer */
  .panel{padding:14px 14px; border-radius:16px;}
  .panel-title{font-size:12.5px;}

  /* Touch targets */
  .att-row{min-height:48px; padding:12px;}
  .att-value{font-size:20px;}
  .course-row{min-height:52px; padding:12px;}
  .course-indicators{max-width:150px;}

  /* Topbar: compact, name truncates instead of wrapping */
  .topbar{gap:8px;}
  .topbar .school-name, .topbar-school-name{
    font-size:13.5px; max-width:42vw;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .school-logo{width:34px; height:34px;}
}

/* 721–900px is the collapsed icon RAIL, not a stacked bar.
   This block used to restyle the sidebar for the old "stack the sidebar as a
   full-width horizontal nav block" tablet layout: `.k-nav{display:flex;
   flex-wrap:wrap}` plus bottom-border sidebar chrome. The shell no longer
   stacks — tetra-shell-v2.js keeps a compact vertical rail across 721–1280 —
   so making the nav flex-row here reactivated the mobile `order` values
   (setupMobileNav) and scrambled the rail (My Courses/Library/Tasks jumped
   below Calendar/Students/…). Removed so 721–900 renders with the same base
   rail styling as 901–1280: a clean vertical rail in natural nav order. */

/* ============================================================
 * My Courses route (page-local classes → Kairos glass)
 * ============================================================ */

/* Hero (teaching command center) */
.hero{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  color:var(--kairos-text);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.hero h1{color:var(--kairos-text);}
.hero p{color:var(--kairos-muted);}
.hero-kicker{color:var(--kairos-tetra);}
.hero-tab{border:1px solid var(--kairos-border); color:var(--kairos-text);}
.hero-tab:hover, .hero-action:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
  box-shadow:none;
}
.hero-tab.active{
  background:rgba(77,182,255,.16);
  color:var(--kairos-tetra);
  border-color:rgba(77,182,255,.4);
}
.hero-action{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.hero-cta{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border:1px solid transparent;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.hero-cta:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
  box-shadow:0 0 34px rgba(77,182,255,.4), var(--kairos-inset);
}
.hero-cta.secondary{
  background:var(--kairos-glass);
  color:var(--kairos-text);
  border:1px solid var(--kairos-border);
  box-shadow:none;
}
.hero-cta.secondary:hover{background:rgba(77,182,255,.10); box-shadow:none;}

/* Hero stat tiles */
.hero-stat{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.hero-stat:hover{box-shadow:var(--kairos-glow-tetra);}
.hero-stat .value{color:var(--kairos-text);}
.hero-stat .label{color:var(--kairos-muted);}
.hero-stat .stat-ico{background:rgba(255,255,255,.08); color:var(--kairos-text);}
.hero-stat.s-students  .stat-ico{background:rgba(77,182,255,.14);  color:var(--kairos-tetra);}
.hero-stat.s-progress  .stat-ico{background:rgba(79,209,197,.14);  color:var(--kairos-good);}
.hero-stat.s-review    .stat-ico{background:rgba(242,177,52,.14);  color:var(--kairos-warn);}
.hero-stat.s-attention .stat-ico{background:rgba(255,141,141,.14); color:var(--kairos-danger);}

/* Filters / pills / section heads */
.pill{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.pill.active{
  background:rgba(77,182,255,.16);
  color:var(--kairos-tetra);
  border-color:rgba(77,182,255,.4);
}
.section-head h2{color:var(--kairos-text);}
.section-head p{color:var(--kairos-muted);}

/* Course cards */
.course-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.course-card:hover{
  border-color:rgba(77,182,255,.45);
  box-shadow:0 0 28px rgba(77,182,255,.16), var(--kairos-inset);
}
.course-cover{background:#161130;}
.course-title{color:var(--kairos-text);}
.course-sub{color:var(--kairos-muted);}
.badge.good  {background:rgba(79,209,197,.14);  color:var(--kairos-good);}
.badge.warn  {background:rgba(242,177,52,.14);  color:var(--kairos-warn);}
.badge.danger{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.badge.soft  {background:rgba(77,182,255,.14);  color:var(--kairos-tetra);}
.cc-metric{
  background:rgba(0,0,0,.25);
  border:1px solid var(--kairos-border);
}
.cc-metric .cc-m-num{color:var(--kairos-text);}
.cc-metric .cc-m-lbl{color:var(--kairos-muted);}
.cc-metric.amber{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35);}
.cc-metric.amber .cc-m-num, .cc-metric.amber .cc-m-lbl{color:var(--kairos-warn);}
.cc-metric.red{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.35);}
.cc-metric.red .cc-m-num, .cc-metric.red .cc-m-lbl{color:var(--kairos-danger);}
.cc-progress-top{color:var(--kairos-muted);}
.cc-progress-top strong{color:var(--kairos-text);}
.cc-progress-track{background:rgba(255,255,255,.10);}
.cc-progress-fill{background:linear-gradient(90deg,#2f9bef,#4db6ff);}
.cc-activity{color:var(--kairos-muted);}
.cc-activity strong{color:var(--kairos-text);}
.card-empty-note{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.card-empty-note strong{color:var(--kairos-text);}
.cc-open{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border:1px solid transparent;
  box-shadow:var(--kairos-inset);
}
.cc-open:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
}
.cc-actions{border-top:1px solid rgba(255,255,255,.10);}
/* .cc-act-invite (ENROLLMENT-INVITE A3) is a <button>, not an <a> — every
   selector below covers both so it never looks like an unstyled outlier
   next to Students/Assignments/Gradebook/Progress/Exams. */
.cc-actions a, .cc-actions button{color:var(--kairos-muted);}
.cc-actions a .cc-act-ico, .cc-actions button .cc-act-ico{color:var(--kairos-tetra);}
.cc-actions a:hover, .cc-actions button:hover{background:rgba(77,182,255,.10); color:var(--kairos-tetra);}

/* Empty / loading — skeletons sized like real course cards.
   The loading-grid is injected as ONE child of .courses-grid, so without
   this it collapses into a single column of the outer grid. */
.courses-grid > .loading-grid{grid-column:1 / -1;}
.empty-state h3{color:var(--kairos-text);}
.loading-card{
  height:auto; min-height:436px;
  border:1px solid var(--kairos-border);
  background:linear-gradient(90deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.09) 50%, rgba(255,255,255,.04) 100%);
  background-size:200% 100%;
}

/* Courses grid: cap at 3 columns — 4 crams the metric tiles */
@media (min-width:1560px){
  .courses-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}

/* Quick actions + Socrates mini */
.quick-action{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.quick-action:hover{border-color:var(--kairos-tetra);}
.soc-mini-chip{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-tetra);
}

/* New Course wizard modal */
.ncw-modal{
  background:#161130;
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-shadow);
  color:var(--kairos-text);
}
.ncw-head h2{color:var(--kairos-text);}
.ncw-search{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ncw-cta{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border:1px solid transparent;
}
.ncw-cta:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}

/* ============================================================
 * Library route (page-local classes → Kairos glass)
 * ============================================================ */
.breadcrumb{color:var(--kairos-muted);}
.breadcrumb .current{color:var(--kairos-tetra);}
.hero-panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.hero-eyebrow{
  background:rgba(77,182,255,.12);
  color:var(--kairos-tetra);
}
.source-chip{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.source-chip.global{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.btn:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.btn.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}
.lib-tab{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.lib-tab:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10); color:var(--kairos-text);}
.lib-tab.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.section-shell{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.section-link{color:var(--kairos-tetra);}
.content-card{
  position:relative; overflow:hidden;
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
/* banner light: a quiet azure thread across the top of each lesson card */
.content-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg, rgba(77,182,255,.0) 0%, rgba(77,182,255,.65) 35%, rgba(124,77,255,.55) 70%, rgba(124,77,255,0) 100%);
}
.content-card:hover{
  border-color:rgba(77,182,255,.5);
  box-shadow:0 0 24px rgba(77,182,255,.14), var(--kairos-inset);
}
.card-title{color:var(--kairos-text);}
.card-meta, .card-desc{color:var(--kairos-muted);}
.recs-state{color:var(--kairos-muted);}
.recs-empty-label{color:var(--kairos-text);}
.family-tile{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.family-tile:hover{
  border-color:var(--kairos-tetra);
  background:rgba(77,182,255,.08);
}
.family-tile h3{color:var(--kairos-text);}
.family-tile p{color:var(--kairos-muted);}

/* ============================================================
 * Library sub-pages (lessons / assignments / exams / templates /
 * saved / all) — shared component vocabulary → Kairos glass
 * ============================================================ */

/* Family tabs — every sub-page ships its own native .tabs rail; theme it
   exactly like the overview's .lib-tabs so the family reads as one system */
.tabs{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:16px;}
.tabs .tab{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:38px; padding:8px 14px; border-radius:999px;
  text-decoration:none; font-size:13px; font-weight:700;
  transition:.16s ease;
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.tabs .tab:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10); color:var(--kairos-text);}
.tabs .tab.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}

/* Text safety inside content: headings light, body muted */
.page-content h1, .page-content h2, .page-content h3{color:var(--kairos-text);}
.section-title-wrap p, .hero-note, .filter-note, .filters-note, .flow-note{color:var(--kairos-muted);}

/* Card families (union across sub-pages) */
.lesson-card, .assignment-card, .template-card, .saved-card, .summary-card, .tcard, .repo-shell, .page-shell{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.lesson-card:hover, .assignment-card:hover, .template-card:hover, .saved-card:hover, .tcard:hover{
  border-color:rgba(77,182,255,.5);
  box-shadow:0 0 24px rgba(77,182,255,.14), var(--kairos-inset);
}
.lesson-title, .card-top, .rating-line strong{color:var(--kairos-text);}
.lesson-sub, .lesson-desc, .lesson-meta, .lesson-lang, .card-meta, .rating-line,
.lesson-note, .micro-signal, .mini-signal, .meta-box, .results-count{color:var(--kairos-muted);}
/* lesson covers keep their per-subject gradient (set inline via
   --lesson-cover-bg by getLessonSubjectStyle) — do not flatten them */
.lesson-cover{position:relative; overflow:hidden; border-bottom:1px solid var(--kairos-border);}

/* Subject motifs — quiet line-art watermarks on each cover */
.lesson-cover::after{
  content:""; position:absolute; inset:0;
  background-repeat:no-repeat;
  background-position:right 6px center;
  background-size:auto 92%;
  pointer-events:none;
}
.lesson-cover-label, .lesson-lang{position:relative; z-index:1;}
/* Geometry — the Pythagorean figure: right triangle, square, circle */
.cover-geometry::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3' stroke-linejoin='round'%3E%3Cpath d='M22 96V44l52 52z'/%3E%3Crect x='58' y='50' width='26' height='26' transform='rotate(45 71 63)'/%3E%3Ccircle cx='92' cy='34' r='17'/%3E%3C/svg%3E");}
/* Math — π and the radical */
.cover-math::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 44h48M32 44c0 20-2 32-8 44M60 44c0 16 0 30 8 44'/%3E%3Cpath d='M66 84l8 14 12-32h18'/%3E%3C/svg%3E");}
/* Science — flask and the atom */
.cover-science::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M50 26v18L29 86a8 8 0 0 0 7 12h34a8 8 0 0 0 7-12L56 44V26'/%3E%3Cpath d='M44 26h18M36 72h34'/%3E%3Cellipse cx='90' cy='38' rx='19' ry='8' transform='rotate(-24 90 38)'/%3E%3Cellipse cx='90' cy='38' rx='19' ry='8' transform='rotate(24 90 38)'/%3E%3Ccircle cx='90' cy='38' r='3'/%3E%3C/svg%3E");}
/* Language arts — the open book */
.cover-language-arts::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M60 36c-9-8-22-10-36-10v60c14 0 27 2 36 9 9-7 22-9 36-9V26c-14 0-27 2-36 10z'/%3E%3Cpath d='M60 36v59'/%3E%3Cpath d='M34 44c8 0 14 1 19 4M34 58c8 0 14 1 19 4M86 44c-8 0-14 1-19 4M86 58c-8 0-14 1-19 4'/%3E%3C/svg%3E");}
/* Geography — the globe */
.cover-geography::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3'%3E%3Ccircle cx='60' cy='60' r='34'/%3E%3Cellipse cx='60' cy='60' rx='15' ry='34'/%3E%3Cpath d='M26 60h68M31 43h58M31 77h58'/%3E%3C/svg%3E");}
/* Humanities — the Greek column (our own temple) */
.cover-humanities::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.18' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M32 34L60 20l28 14'/%3E%3Cpath d='M30 40h60M34 48h52'/%3E%3Cpath d='M40 48v38M50 48v38M60 48v38M70 48v38M80 48v38'/%3E%3Cpath d='M34 90h52M30 98h60'/%3E%3C/svg%3E");}
/* Neutral — the tetrahedron */
.cover-neutral::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%230f172a' stroke-opacity='.16' stroke-width='3' stroke-linejoin='round'%3E%3Cpath d='M60 24l32 66H28z'/%3E%3Cpath d='M60 24v40L28 90'/%3E%3C/svg%3E");}

/* Thumbs rating (replaces decorative stars) — stored locally per teacher */
.lesson-rate{display:inline-flex; gap:6px; flex-shrink:0;}
.rate-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; border-radius:999px;
  font-size:14px; line-height:1; cursor:pointer;
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  filter:grayscale(1); opacity:.65;
  transition:.15s ease;
}
.rate-btn:hover{filter:none; opacity:1; border-color:var(--kairos-tetra);}
.rate-btn.is-active{filter:none; opacity:1;}
.rate-btn.rate-up.is-active{background:rgba(79,209,197,.16); border-color:rgba(79,209,197,.5);}
.rate-btn.rate-down.is-active{background:rgba(255,141,141,.14); border-color:rgba(255,141,141,.5);}
.repo-head, .repo-footer{border-color:var(--kairos-border);}

/* Filters & inputs — the search rail goes glass too */
.filters, .filter-row{color:var(--kairos-muted);}
.filter-row, .filters{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
}
.results-bar, .repo-head{background:rgba(255,255,255,.04);}
.filters select, .filters input, .filter-row select, .filter-row input,
.page-content select, .page-content input[type="search"], .page-content input[type="text"]{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  border-radius:10px;
}
.page-content select option{background:var(--kairos-bg); color:var(--kairos-text);}

/* Chips, pills, notices, badges */
.context-pill, .signal-chip, .status-pill, .hero-chip, .r-chip, .mode-badge{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.notice, .library-notice{
  background:rgba(77,182,255,.08);
  border:1px solid rgba(77,182,255,.3);
  color:var(--kairos-text);
}
.type-badge.type-lesson{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.type-badge.type-assignment{background:rgba(124,77,255,.16); color:var(--kairos-purple-soft);}
.type-badge.type-exam{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.type-badge.type-template{background:rgba(79,209,197,.14); color:var(--kairos-good);}

/* Exams button system */
.btn-primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f; border:1px solid transparent;
}
.btn-primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}
.btn-outline, .btn-ghost, .btn-ghost-sm, .btn-soft{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.btn-outline:hover, .btn-ghost:hover, .btn-ghost-sm:hover, .btn-soft:hover{
  border-color:var(--kairos-tetra);
  background:rgba(77,182,255,.10);
}
.results-bar{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
}

/* Modals (assign / preview / content) — solid dark surfaces */
.modal, .content-modal, .assign-modal, .ncw-modal{
  background:#161130;
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-shadow);
}
.modal-header, .modal-section-title, .content-modal-head{color:var(--kairos-text);}
.modal-body, .content-modal-body, .assign-modal-context{color:var(--kairos-muted);}
.modal-section, .modal-readiness{border-color:var(--kairos-border);}
.assign-course-select{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.assign-hint{color:var(--kairos-muted);}
.assign-error, .assign-modal-error{color:var(--kairos-danger);}

/* ---------- Sidebar nav icons (inline SVG, monochrome) ---------- */
.k-nav-icon{display:inline-flex; align-items:center; justify-content:center;}
.k-nav-icon svg{width:19px; height:19px; display:block;}
.k-nav a .k-nav-icon{color:var(--kairos-muted);}
.k-nav a:hover .k-nav-icon{color:var(--kairos-text);}
.k-nav a.active .k-nav-icon{color:var(--kairos-tetra);}

/* ---------- Quick-action course picker (Home) ---------- */
.qa-overlay{
  position:fixed; inset:0; z-index:9500;
  display:flex; align-items:center; justify-content:center;
  padding:20px; overflow-y:auto;
  background:rgba(7,5,17,.72);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.qa-overlay[hidden]{display:none;}
.qa-modal{
  position:relative;
  width:min(480px,100%); max-height:80vh; overflow-y:auto;
  background:#161130;
  border:1px solid rgba(77,182,255,.35);
  border-radius:20px;
  padding:22px;
  box-shadow:var(--kairos-shadow), var(--kairos-glow-tetra);
  color:var(--kairos-text);
}
.qa-title{margin:0 0 4px; font-size:18px; font-weight:800; color:var(--kairos-tetra);}
.qa-sub{margin:0 0 14px; font-size:13px; color:var(--kairos-muted);}
.qa-close{
  position:absolute; top:14px; right:14px;
  width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; font:inherit; color:var(--kairos-text);
  background:var(--kairos-glass); border:1px solid var(--kairos-border);
}
.qa-close:hover{border-color:var(--kairos-tetra);}
.qa-list{display:grid; gap:8px;}
.qa-row{
  display:flex; flex-direction:column; gap:2px;
  padding:12px 14px; min-height:52px; justify-content:center;
  text-decoration:none; border-radius:12px;
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  transition:border-color .16s ease, background .16s ease;
}
.qa-row:hover{background:rgba(77,182,255,.10); border-color:var(--kairos-tetra);}
.qa-row-name{font-size:14px; font-weight:700;}
.qa-row-meta{font-size:11.5px; color:var(--kairos-muted);}
.qa-empty{
  padding:16px; text-align:center; font-size:13px; color:var(--kairos-muted);
  border:1px dashed var(--kairos-border); border-radius:12px;
}

/* ---------- Focus visibility (accessibility) ---------- */
a:focus-visible, button:focus-visible, summary:focus-visible{
  outline:2px solid var(--kairos-tetra);
  outline-offset:2px;
  border-radius:6px;
}

/* ---------- Reduced motion — first-class path ---------- */
@media (prefers-reduced-motion: reduce){
  .tetra-orbit .tetra-solid, .tetra-orbit .t-rotor{animation:none !important;}
  *,*::before,*::after{
    transition-duration:.001ms !important;
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
  }
}


/* ============================================================
 * Tasks & Assessments family — legacy .sidebar shell + local kit
 * ============================================================ */
/* Legacy sidebar model (some routes ship .sidebar instead of .k-sidebar) */
.sidebar{
  background:
    radial-gradient(circle at 18% 10%, rgba(124,77,255,.16), transparent 30%),
    linear-gradient(180deg, rgba(13,10,31,.92) 0%, rgba(7,5,17,.96) 100%) !important;
  border-right:1px solid var(--kairos-border);
  border-radius:0 24px 24px 0;
}
.brand-subtitle{color:var(--kairos-tetra) !important; opacity:1;}
.portal-chip{
  background:rgba(77,182,255,.10) !important;
  border:1px solid rgba(77,182,255,.35) !important;
  color:var(--kairos-tetra) !important;
}
.nav a{color:var(--kairos-text);}
.nav a:hover{background:var(--kairos-glass);}
.nav a.active{
  background:rgba(77,182,255,.14) !important;
  box-shadow:inset 2px 0 0 var(--kairos-tetra), var(--kairos-inset);
}
.nav-icon svg{width:18px; height:18px; display:block;}
.nav a .nav-icon{color:var(--kairos-muted);}
.nav a.active .nav-icon{color:var(--kairos-tetra);}
.sidebar-toggle{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.user-box{background:var(--kairos-glass); border:1px solid var(--kairos-border);}
.notif{background:var(--kairos-glass); border:1px solid var(--kairos-border); color:var(--kairos-text);}
.notif-badge{background:var(--kairos-tetra); color:#04121f;}

/* Assignment-builder hero + shared cards */
.ag-page{background:transparent;}
.ag-hero{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
.ag-eyebrow{color:var(--kairos-tetra);}
/* Assignments & Grades operational hub — keep every new surface inside the
   canonical Tetrahedron glass/accent system. */
.ag-context{color:var(--kairos-muted);}
.ag-context-dot{
  background:var(--kairos-good);
  box-shadow:0 0 0 4px rgba(79,209,197,.12),0 0 14px rgba(79,209,197,.28);
}
.ag-panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
.ag-section-head h2{color:var(--kairos-text);}
.ag-section-head .sub{color:var(--kairos-muted);}
.ag-section-link,.ag-today-action a{color:var(--kairos-tetra);}
.ag-today-card{
  background:rgba(255,255,255,.045);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.ag-today-k,.ag-today-meta{color:var(--kairos-muted);}
.ag-today-v{color:var(--kairos-text);}
.ag-today-card.danger .ag-today-v{color:var(--kairos-danger);}
.ag-today-card.warn .ag-today-v{color:var(--kairos-warn);}
.ag-today-card.good .ag-today-v{color:var(--kairos-good);}
.ag-flow-card{
  background:rgba(255,255,255,.045);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.ag-flow-card::before{
  background:rgba(77,182,255,.14);
  color:var(--kairos-tetra);
  border:1px solid rgba(77,182,255,.25);
}
.ag-flow-card:not(:last-child)::after{border-color:rgba(77,182,255,.35);}
.ag-flow-card span{color:var(--kairos-muted);}
.ag-flow-card:hover,.ag-action:hover{
  background:rgba(77,182,255,.09);
  border-color:rgba(77,182,255,.45);
}

/* Library section cards (For You) — the page authors them near-white (#fbfcff),
   which the dark themes leave as near-white-on-near-white (invisible titles). In
   the dark themes give them the same glass surface as the .ag-today-card / tasks
   cards so the card reads against the shell and the light title/status show. Gated
   to dark/obsidian so light mode keeps the page's own white card. */
:root[data-tetra-theme="dark"] .section-card,
:root[data-tetra-theme="obsidian"] .section-card{
  background:rgba(255,255,255,.045);
  background-image:none;
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
:root[data-tetra-theme="dark"] .section-card:hover,
:root[data-tetra-theme="obsidian"] .section-card:hover{
  background:rgba(255,255,255,.08);
  border-color:rgba(77,182,255,.45);
}
:root[data-tetra-theme="dark"] .section-card h3,
:root[data-tetra-theme="obsidian"] .section-card h3{color:var(--kairos-text);}
:root[data-tetra-theme="dark"] .section-card p,
:root[data-tetra-theme="obsidian"] .section-card p{color:var(--kairos-muted);}
:root[data-tetra-theme="dark"] .section-card .sc-live,
:root[data-tetra-theme="obsidian"] .section-card .sc-live{color:var(--kairos-good);}
:root[data-tetra-theme="dark"] .section-card .sc-pending,
:root[data-tetra-theme="obsidian"] .section-card .sc-pending{color:var(--kairos-warn);}

/* Library section tabs (.library-sections) — same near-white-inline problem as
   the section cards: white pill + light text = low contrast in the dark themes.
   Give the pills the glass surface; the active tab takes the tetra accent so it
   still reads as selected (consistent with the .ag-* / Tasks accent). */
:root[data-tetra-theme="dark"] .library-sections a,
:root[data-tetra-theme="obsidian"] .library-sections a{
  background:rgba(255,255,255,.045);
  border-color:var(--kairos-border);
  color:var(--kairos-muted);
}
:root[data-tetra-theme="dark"] .library-sections a:hover,
:root[data-tetra-theme="obsidian"] .library-sections a:hover{
  background:rgba(255,255,255,.08);
  color:var(--kairos-text);
}
:root[data-tetra-theme="dark"] .library-sections a[aria-current="page"],
:root[data-tetra-theme="obsidian"] .library-sections a[aria-current="page"]{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.45);
  color:var(--kairos-text);
}

/* Student directory / sx-page search bar (.sx-search) — authored white, stays a
   bright white pill in the dark themes. Give it the glass surface so it matches
   the rest of the dark shell. */
:root[data-tetra-theme="dark"] .sx-search,
:root[data-tetra-theme="obsidian"] .sx-search{
  background:rgba(255,255,255,.06);
  border-color:var(--kairos-border);
}
:root[data-tetra-theme="dark"] .sx-search input,
:root[data-tetra-theme="obsidian"] .sx-search input{
  background:transparent;
  color:var(--kairos-text);
}
:root[data-tetra-theme="dark"] .sx-search input::placeholder,
:root[data-tetra-theme="obsidian"] .sx-search input::placeholder{color:var(--kairos-muted);}

/* Library hub-family surfaces (index/lessons/saved/templates/exams) — .command-bar,
   .filter-panel, .results-shell, .lesson-card, .pending-panel, .exam-card and the
   assign-lesson dialog are all authored white/near-white with no dark gate. Some of
   these accidentally look darkened already on a few pages because tetra-kairos-skin.css
   redefines the page-local --panel custom property at :root — but that only wins the
   cascade when this stylesheet happens to load after the page's own <style> block, and
   several library pages load it BEFORE their own <style> (e.g. exams/index.html), so the
   accidental fix is not reliable. These explicit gated rules fix all five pages the same
   way regardless of link order (same glass treatment as .section-card above). */
:root[data-tetra-theme="dark"] :is(.command-bar,.filter-panel,.results-shell,.lesson-card,.pending-panel,.exam-card,.assign-dialog),
:root[data-tetra-theme="obsidian"] :is(.command-bar,.filter-panel,.results-shell,.lesson-card,.pending-panel,.exam-card,.assign-dialog){
  background:rgba(255,255,255,.045);
  background-image:none;
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
:root[data-tetra-theme="dark"] .exam-card.is-legacy,
:root[data-tetra-theme="obsidian"] .exam-card.is-legacy{background:rgba(255,255,255,.025);}
/* tetra-theme-system.css forces h1-h4/p to var(--tts-text)/var(--tts-muted) !important
   already, so headings and paragraph copy in these surfaces are safe. The two elements
   below are NOT headings/paragraphs and carry an explicit color:var(--ink) (the page's
   own light-mode ink token, never redefined for dark/obsidian) — without this they render
   near-invisible dark-navy text on the new dark glass background. */
:root[data-tetra-theme="dark"] :is(.scope-note strong,.state strong),
:root[data-tetra-theme="obsidian"] :is(.scope-note strong,.state strong){color:var(--kairos-text);}
:root[data-tetra-theme="dark"] .state,
:root[data-tetra-theme="obsidian"] .state{border-color:var(--kairos-border);color:var(--kairos-muted);}
:root[data-tetra-theme="dark"] :is(.chip,.exam-meta .chip),
:root[data-tetra-theme="obsidian"] :is(.chip,.exam-meta .chip){
  background:rgba(255,255,255,.06);
  border-color:var(--kairos-border);
  color:var(--kairos-muted);
}
:root[data-tetra-theme="dark"] .skeleton,
:root[data-tetra-theme="obsidian"] .skeleton{background:linear-gradient(90deg,rgba(255,255,255,.03) 25%,rgba(255,255,255,.08) 37%,rgba(255,255,255,.03) 63%);background-size:400% 100%;}
/* .eyebrow already gets a blue-tinted glass background from the ungated .eyebrow rule
   above (shared with .messages-eyebrow), but on library pages the page's own local
   .eyebrow{color:var(--primary)} (a light-mode dark purple) can win the cascade for the
   color property specifically depending on this page's <link>/<style> order, producing
   dark-purple text on a dark background. Pin it to the bright tetra accent so it reads on
   both the light-mode blue-tinted chip and the dark glass card, regardless of order. */
:root[data-tetra-theme="dark"] .eyebrow,
:root[data-tetra-theme="obsidian"] .eyebrow{color:var(--kairos-tetra);}
/* Breadcrumb "current page" highlight — several library pages hardcode this to the
   light-mode purple accent (#4b2aad) rather than a redefinable token, same collision
   class as .eyebrow above. */
:root[data-tetra-theme="dark"] .breadcrumb .current,
:root[data-tetra-theme="obsidian"] .breadcrumb .current{color:var(--kairos-tetra);}

/* Library detail-page family (assignment-detail/exam-detail/template-detail/all —
   the "hero/section-shell" hand-duplicated vocabulary) — same near-white-with-no-dark-gate
   problem as the hub family above. */
:root[data-tetra-theme="dark"] :is(.hero-panel,.hero-side,.section-shell,.notice,.panel-card,.meta-box,.structure-item,.action-card,.related-card,.summary-card),
:root[data-tetra-theme="obsidian"] :is(.hero-panel,.hero-side,.section-shell,.notice,.panel-card,.meta-box,.structure-item,.action-card,.related-card,.summary-card){
  background:rgba(255,255,255,.045);
  background-image:none;
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
/* h1-h4/p are already forced light by tetra-theme-system.css !important rules. These
   detail pages author several non-heading text nodes (div.v, strong) with a literal
   hardcoded #1f2430 dark-navy ink instead of a redefinable token, so they stay invisible
   on the new dark surface unless repainted explicitly here. */
:root[data-tetra-theme="dark"] :is(.notice strong,.v,.summary-card .v),
:root[data-tetra-theme="obsidian"] :is(.notice strong,.v,.summary-card .v){color:var(--kairos-text) !important;}
:root[data-tetra-theme="dark"] :is(.meta-box .k,.summary-card .k),
:root[data-tetra-theme="obsidian"] :is(.meta-box .k,.summary-card .k){color:var(--kairos-muted) !important;}
.ag-action{
  background:rgba(255,255,255,.04);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.ag-action-icon{
  background:rgba(77,182,255,.13);
  border:1px solid rgba(77,182,255,.22);
  color:var(--kairos-tetra);
}
.ag-action small{color:var(--kairos-muted);}
.ag-action-arrow{color:var(--kairos-tetra);}
.ag-empty{
  background:rgba(255,255,255,.025);
  border-color:rgba(255,255,255,.18);
}
.ag-empty strong{color:var(--kairos-text);}
.ag-empty span{color:var(--kairos-muted);}
.assessment-card,.assessment-step{
  background:rgba(255,255,255,.045);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.assessment-card:hover{background:rgba(77,182,255,.09);border-color:rgba(77,182,255,.45);}
.assessment-card h2,.assessment-step strong{color:var(--kairos-text);}
.assessment-card p,.assessment-step{color:var(--kairos-muted);}
.assessment-card span:last-child{color:var(--kairos-tetra);}
.assessment-icon,.assessment-step::before{
  background:rgba(77,182,255,.13);
  border:1px solid rgba(77,182,255,.24);
  color:var(--kairos-tetra);
}
.hero-tab{color:var(--kairos-muted);}
.hero-tab:hover{color:var(--kairos-text);background:rgba(77,182,255,.08);}
.hero-tab.active{
  color:var(--kairos-tetra);
  background:rgba(77,182,255,.12);
  border-color:rgba(77,182,255,.28);
}
.summary-strip{gap:10px;}
.summary-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.card:hover{border-color:rgba(77,182,255,.45);}
.tag{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.k-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.k-btn:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.k-btn.primary, .k-btn--primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}
.section{color:var(--kairos-text);}


/* ============================================================
 * Calendar family (root / monthly / schedule / school-events)
 * ============================================================ */
.cal-header, .calendar-toolbar, .side-panel, .schedule-panel, .month-surface{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.cal-header-title{color:var(--kairos-text);}
.cal-header-sub, .range-label, .sch-date-label{color:var(--kairos-muted);}
.cal-viewnav-item, .view-btn, .day-tab{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.cal-viewnav-item:hover, .view-btn:hover, .day-tab:hover{
  border-color:var(--kairos-tetra);
  background:rgba(77,182,255,.10);
  color:var(--kairos-text);
}
.cal-viewnav-item.active, .view-btn.active, .day-tab.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.icon-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.icon-btn:hover{border-color:var(--kairos-tetra);}

/* Mini month */
.mini-dow{color:var(--kairos-muted);}
.mini-day{color:var(--kairos-text);}
.mini-day:hover{background:rgba(77,182,255,.12);}
.mini-day.is-today{
  background:rgba(77,182,255,.2);
  color:var(--kairos-tetra);
  font-weight:700;
}
.mini-day.is-out{color:rgba(169,163,196,.4);}

/* Quick links / filters / legend */
.quick-link{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.quick-link:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.filter-item, .legend-item{color:var(--kairos-muted);}

/* Month grid */
.month-dow{color:var(--kairos-muted);}
.month-cell{
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.08);
  color:var(--kairos-text);
}
.month-cell:hover{background:rgba(77,182,255,.06); border-color:rgba(77,182,255,.3);}
.month-cell.is-today{border-color:var(--kairos-tetra); box-shadow:inset 0 0 0 1px rgba(77,182,255,.4);}
.month-cell.is-out, .month-cell.is-out .mc-date{color:rgba(169,163,196,.35);}
.mc-date{color:var(--kairos-muted);}
.mc-due, .due-indicator{
  background:rgba(77,182,255,.14);
  color:var(--kairos-tetra);
  border:1px solid rgba(77,182,255,.3);
}
.due-more{color:var(--kairos-muted);}
.school-indicator{background:rgba(242,177,52,.16); color:var(--kairos-warn);}
.month-legend, .month-label{color:var(--kairos-muted);}

/* Schedule (period rows) */
.sch-panel-head{border-bottom:1px solid var(--kairos-border);}
.sch-day-label{color:var(--kairos-text);}
.period-row{border-color:rgba(255,255,255,.07);}
.period-time{color:var(--kairos-muted);}
.period-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.period-card:hover{border-color:rgba(77,182,255,.45);}
.pc-title{color:var(--kairos-text);}

/* Empty / info states */
.cal-empty, .cal-state, .cal-whatshows{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}


/* ============================================================
 * Students family (sx-* kit: roster, alerts, attendance,
 * progress, observations, student-profile)
 * ============================================================ */
.sx-hero, .sx-summary-card, .sx-filter-card, .sx-table-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.sx-eyebrow{color:var(--kairos-tetra);}
.sx-summary-k, .sx-summary-meta, .sx-sub{color:var(--kairos-muted);}
.sx-summary-v, .sx-name{color:var(--kairos-text);}
.sx-status-chip, .sx-pill{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.sx-status-chip:hover, .sx-pill:hover{border-color:var(--kairos-tetra); color:var(--kairos-text);}
.sx-status-chip.active, .sx-pill.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.sx-pill-label{color:var(--kairos-muted);}
.sx-count{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}

/* Table */
.sx-table th{color:var(--kairos-muted); border-color:var(--kairos-border); background:rgba(255,255,255,.03);}
.sx-table td{color:var(--kairos-text); border-color:rgba(255,255,255,.07);}
.sx-table tr:hover td{background:rgba(77,182,255,.06);}
.sx-avatar{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.sx-status-pill{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.sx-status-pill.good, .sx-status-pill.ok{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.sx-status-pill.warn{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.sx-status-pill.danger, .sx-status-pill.risk{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.sx-action{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-tetra);
}
.sx-action:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.sx-course-chip{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.sx-bar{background:rgba(255,255,255,.10);}
.sx-bar > *, .sx-progress-fill{background:linear-gradient(90deg,#2f9bef,#4db6ff);}
.sx-empty{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}

/* ============================================================
 * Metrics family (root / alerts / course-metrics / insights /
 * ocr-review / rankings / student-risk / task-completion / trends)
 * ============================================================ */

/* State tokens — the family paints status surfaces through local
   --good/--warn/--danger/--soft *-bg/*-fg pairs, and the root page's
   JS injects inline style="" tiles that read them (risk distribution).
   Re-scoping the pairs on the family roots flips those inline styles
   too — something class rules alone can never reach. Scoped to the
   metrics containers so no other route is affected. */
.metrics-page, .alerts-page, .risk-page, .insights-page, .trends-page,
.metrics-layout, .alerts-layout, .risk-layout, .insights-layout, .trends-layout{
  --panel-2:rgba(255,255,255,.04);
  --good-bg:rgba(79,209,197,.14);    --good-fg:var(--kairos-good);
  --warn-bg:rgba(242,177,52,.14);    --warn-fg:var(--kairos-warn);
  --danger-bg:rgba(255,141,141,.14); --danger-fg:var(--kairos-danger);
  --soft-bg:rgba(77,182,255,.14);    --soft-fg:var(--kairos-tetra);
  --neutral-bg:rgba(255,255,255,.08);--neutral-fg:var(--kairos-muted);
}

/* Compact page headers (root / alerts / student-risk / ocr-review) */
.pg-header{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.pg-title{color:var(--kairos-text);}
.pg-sub{color:var(--kairos-muted);}
.pg-chip{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.pg-chip .cv{color:var(--kairos-text);}
.pg-chip.alert .cv{color:var(--kairos-danger);}
.pg-chip.warn .cv{color:var(--kairos-warn);}
.pg-chip.good .cv{color:var(--kairos-good);}

/* Heroes (course-metrics / insights / trends) */
.metrics-hero, .insights-hero, .trends-hero{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.metrics-hero h1, .insights-hero h1, .trends-hero h1{color:var(--kairos-text);}
.metrics-hero p, .insights-hero p, .trends-hero p{color:var(--kairos-muted);}
.metrics-eyebrow, .insights-eyebrow, .trends-eyebrow{
  background:rgba(77,182,255,.12);
  color:var(--kairos-tetra);
}
/* Hero tabs — scoped to the metrics heroes so the My Courses .hero-tab
   theming (earlier section) is left untouched */
.metrics-hero .hero-tab, .insights-hero .hero-tab, .trends-hero .hero-tab{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.metrics-hero .hero-tab:hover, .insights-hero .hero-tab:hover, .trends-hero .hero-tab:hover{
  border-color:var(--kairos-tetra);
  background:rgba(77,182,255,.10);
  color:var(--kairos-text);
}
.metrics-hero .hero-tab.active, .insights-hero .hero-tab.active, .trends-hero .hero-tab.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}

/* Buttons — base .k-btn is themed globally; the local sheets still win
   per-property on the primary's purple glow and purple :hover */
.k-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.k-btn.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}

/* KPI strip / summary cards (+ alert / warn variants) */
.summary-label, .summary-meta, .kpi-lbl, .kpi-meta{color:var(--kairos-muted);}
.summary-value, .kpi-val{color:var(--kairos-text);}
.kpi-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.summary-card.sc-alert, .kpi-card.kc-alert{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.35);}
.summary-card.sc-warn,  .kpi-card.kc-warn {background:rgba(242,177,52,.10);  border-color:rgba(242,177,52,.35);}
.summary-card.sc-alert .summary-label, .summary-card.sc-alert .summary-value,
.kc-alert .kpi-lbl, .kc-alert .kpi-val{color:var(--kairos-danger);}
.summary-card.sc-warn .summary-label, .summary-card.sc-warn .summary-value,
.kc-warn .kpi-lbl, .kc-warn .kpi-val{color:var(--kairos-warn);}

/* Risk summary tiles (student-risk side panel) */
.rs-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.rs-card.rs-danger{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.35);}
.rs-card.rs-warn  {background:rgba(242,177,52,.10);  border-color:rgba(242,177,52,.35);}
.rs-card.rs-good  {background:rgba(79,209,197,.10);  border-color:rgba(79,209,197,.35);}
.rs-card.rs-danger .rs-val, .rs-card.rs-danger .rs-lbl{color:var(--kairos-danger);}
.rs-card.rs-warn .rs-val,   .rs-card.rs-warn .rs-lbl  {color:var(--kairos-warn);}
.rs-card.rs-good .rs-val,   .rs-card.rs-good .rs-lbl  {color:var(--kairos-good);}

/* Tags — state variants (base .tag is themed globally) */
.tag.good   {background:rgba(79,209,197,.14);  color:var(--kairos-good);   border-color:transparent;}
.tag.warn   {background:rgba(242,177,52,.14);  color:var(--kairos-warn);   border-color:transparent;}
.tag.danger {background:rgba(255,141,141,.14); color:var(--kairos-danger); border-color:transparent;}
.tag.soft   {background:rgba(77,182,255,.14);  color:var(--kairos-tetra);  border-color:transparent;}
.tag.neutral{background:rgba(255,255,255,.08); color:var(--kairos-muted);  border-color:transparent;}

/* Panels */
.surface-panel, .side-panel, .toolbar-panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.panel-head{
  background:rgba(255,255,255,.03);
  border-bottom:1px solid var(--kairos-border);
}
.panel-head h2, .panel-head h3, .side-panel h2, .side-panel h3{color:var(--kairos-text);}
.panel-sub{color:var(--kairos-muted);}
.panel-link{color:var(--kairos-tetra);}
.panel-count{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}

/* Filters & inputs (selects need dark option surfaces) */
.filter-row{
  background:rgba(255,255,255,.04);
  border-bottom:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.filter-label, .filter-count{color:var(--kairos-muted);}
.filter-select, .search, .toolbar-grid input, .toolbar-grid select{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.filter-select:focus, .search:focus, .toolbar-grid input:focus, .toolbar-grid select:focus{
  outline:none;
  border-color:var(--kairos-tetra);
}
.filter-select option, .toolbar-grid select option{background:var(--kairos-bg); color:var(--kairos-text);}

/* Filter pills (insights / rankings / trends) */
.pill{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.pill:hover{border-color:var(--kairos-tetra); color:var(--kairos-text);}
.pill.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}

/* Bar charts (shared vocabulary across the family) */
.bar-label{color:var(--kairos-text);}
.bar-value{color:var(--kairos-muted);}
.bar-track{background:rgba(255,255,255,.10);}
.bar-fill{background:linear-gradient(90deg,#2f9bef,#4db6ff);}
.bar-fill.good  {background:linear-gradient(90deg,#2fbdae,#4fd1c5);}
.bar-fill.warn  {background:linear-gradient(90deg,#d99a26,#f2b134);}
.bar-fill.danger{background:linear-gradient(90deg,#e57373,#ff8d8d);}
.bar-fill.soft  {background:linear-gradient(90deg,#7c4dff,#a78bfa);}

/* Progress rings (trends) — azure sweep, quiet track, solid dark core */
.ring{background:conic-gradient(var(--kairos-tetra) calc(var(--pct) * 1%), rgba(255,255,255,.12) 0);}
.ring::after{background:#161130;}
.ring-value{color:var(--kairos-text);}
.ring-label{color:var(--kairos-muted);}

/* Inner cards (union across the family) */
.lane-card, .health-card, .mini-card, .insight-card, .insight-item,
.completion-card, .summary-state, .ranking-item, .trend-item,
.chart-card, .ring-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
/* .review-item keeps its 4px status edge — no border shorthand here */
.review-item{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.review-item.st-review   {border-left-color:var(--kairos-danger);}
.review-item.st-submitted{border-left-color:var(--kairos-warn);}
.review-item.st-auto     {border-left-color:var(--kairos-purple-soft);}
.review-item.st-confirmed{border-left-color:var(--kairos-good);}

/* Card titles / copy */
.lane-title, .health-title, .mini-title, .insight-title, .insight-item-title,
.completion-title, .summary-title, .ranking-title, .trend-title, .chart-title,
.review-title, .si-name, .ai-title{color:var(--kairos-text);}
.lane-copy, .health-copy, .course-copy, .course-meta, .mini-copy, .insight-copy,
.insight-item-copy, .completion-copy, .completion-meta, .summary-copy,
.ranking-meta, .ranking-preview, .trend-meta, .trend-preview, .chart-sub,
.review-meta, .si-detail, .ai-msg, .ai-time{color:var(--kairos-muted);}

/* Per-course metric tiles */
.course-metric, .completion-metric{
  background:rgba(0,0,0,.25);
  border:1px solid var(--kairos-border);
}
.course-metric .k, .completion-metric .k{color:var(--kairos-muted);}
.course-metric .v, .completion-metric .v{color:var(--kairos-text);}

/* Urgent-attention rows (root page) */
.alert-row{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
.alert-row.ar-danger{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.35);}
.alert-row.ar-warn  {background:rgba(242,177,52,.10);  border-color:rgba(242,177,52,.35);}
.alert-row.ar-good  {background:rgba(79,209,197,.10);  border-color:rgba(79,209,197,.35);}
.ar-danger .alert-dot{background:var(--kairos-danger);}
.ar-warn .alert-dot  {background:var(--kairos-warn);}
.ar-good .alert-dot  {background:var(--kairos-good);}
.alert-text{color:var(--kairos-text);}
.ar-danger .alert-text{color:var(--kairos-danger);}
.ar-warn .alert-text  {color:var(--kairos-warn);}
.ar-good .alert-text  {color:var(--kairos-good);}
.alert-link{color:var(--kairos-tetra);}

/* Severity feeds (alerts) + risk bands (student-risk) */
.alert-item, .student-item{border-bottom-color:rgba(255,255,255,.07);}
.alert-item.sev-critical{border-left-color:var(--kairos-danger);}
.alert-item.sev-warning {border-left-color:var(--kairos-warn);}
.alert-item.sev-info    {border-left-color:var(--kairos-tetra);}
.student-item.band-high  {border-left-color:var(--kairos-danger);}
.student-item.band-watch {border-left-color:var(--kairos-warn);}
.student-item.band-stable{border-left-color:var(--kairos-good);}

/* Quick actions + side stat rows */
.qaction-row, .qaction{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.qaction-row:hover, .qaction:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
  color:var(--kairos-text);
}
.qaction-icon{background:rgba(77,182,255,.14);}
.qaction-arrow{color:var(--kairos-tetra);}
.stat-row{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
.stat-row-label{color:var(--kairos-text);}
.stat-row-val{color:var(--kairos-tetra);}

/* Rank badge (rankings) — azure, dark-on-light like every primary CTA */
.rank-badge{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  box-shadow:var(--kairos-inset);
}

/* Empty / info states */
.empty-note, .metric-note{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.empty-state{color:var(--kairos-muted);}
.empty-state h3{color:var(--kairos-text);}

/* ============================================================
 * Messages family (root / administration / announcements /
 * parents / students) — page-local classes → Kairos glass
 * ============================================================
 * Notes: the page :root vars (--bg/--panel/--line/--text/--muted/
 * --primary/--accent) are already remapped by the skin :root, so only
 * hardcoded light paints (#fff, #fbfbff, --panel-2:#fbfcff, light
 * gradients/shadows) need rules here. .hero, .panel, .k-btn, .pill,
 * .hero-tab.active, .summary-card, .tag base and .tabs .tab are themed
 * by earlier skin sections. Role avatars (.avatar.*, .message-avatar.*)
 * keep their colored identity gradients — they read fine on dark. */

/* Hero (root ships .messages-hero; sub-pages reuse the shared .hero) */
.messages-hero{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  color:var(--kairos-text);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.messages-hero h1{color:var(--kairos-text);}
.messages-hero p{color:var(--kairos-muted);}
.messages-eyebrow, .eyebrow{
  background:rgba(77,182,255,.12);
  color:var(--kairos-tetra);
}
/* local .hero-tab ships background:#fff; the My Courses rule doesn't
   reset background, so clear it here (scoped to the messages wrappers) */
.messages-page .hero-tab, .admin-page .hero-tab, .announcements-page .hero-tab,
.guardian-page .hero-tab, .student-messages-page .hero-tab{
  background:var(--kairos-glass);
}

/* Summary strip (card surface comes from the shared .summary-card rule) */
.summary-label, .summary-meta{color:var(--kairos-muted);}
.summary-value{color:var(--kairos-text);}

/* Shell panels (root: .shell-panel; sub-pages: .panel — themed above) */
.shell-panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.panel-head, .conversation-head, .composer-head{
  background:rgba(255,255,255,.03);
  border-bottom:1px solid var(--kairos-border);
}
.panel-head h2, .panel-head h3, .conversation-copy h2, .composer-copy h2{color:var(--kairos-text);}
.panel-sub, .conversation-copy p, .composer-copy p{color:var(--kairos-muted);}

/* Search + composer inputs (surfaces hardcode #fff / #fbfbff) */
.search, .composer-box textarea{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.search::placeholder, .composer-box textarea::placeholder{color:rgba(169,163,196,.7);}
.page-content .search:focus, .composer-box textarea:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 3px rgba(77,182,255,.18);
}
select.search option{background:#161130; color:var(--kairos-text);}

/* Lane nav (left panel) */
.nav-label{color:var(--kairos-muted);}
.nav-item{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.nav-item:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.08);}
.nav-item.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.nav-item .nav-icon{background:rgba(255,255,255,.08);}
.nav-count{
  background:rgba(255,255,255,.06);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}

/* Thread list + announcement list */
.thread-card, .announcement-card{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.thread-card:hover, .announcement-card:hover{
  border-color:rgba(77,182,255,.45);
  box-shadow:0 0 24px rgba(77,182,255,.14), var(--kairos-inset);
}
.thread-card.active, .announcement-card.active{
  background:rgba(77,182,255,.10);
  border-color:rgba(77,182,255,.5);
  box-shadow:var(--kairos-inset);
}
.thread-title, .announcement-title{color:var(--kairos-text);}
.thread-meta, .thread-preview, .announcement-meta, .announcement-preview,
.timestamp{color:var(--kairos-muted);}

/* Lane / state tags (locals paint pastel chips via page vars) */
.tag.student, .tag.ops, .tag.scheduled{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:transparent;}
.tag.announcement, .tag.announce, .tag.support{background:rgba(124,77,255,.18); color:var(--kairos-purple-soft); border-color:transparent;}
.tag.guardian, .tag.good, .tag.published{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:transparent;}
.tag.admin, .tag.warning{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:transparent;}
.tag.danger{background:rgba(255,141,141,.14); color:var(--kairos-danger); border-color:transparent;}
.tag.draft{background:rgba(255,255,255,.08); color:var(--kairos-muted); border-color:transparent;}

/* Conversation column */
.conversation-body, .composer-body{background:rgba(7,5,17,.35);}
.message-day span{
  background:rgba(22,17,48,.85);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.message-bubble{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.bubble-meta{color:var(--kairos-muted);}
.bubble-text{color:var(--kairos-text);}
/* Outgoing: the one azure moment in the thread — dark ink for contrast */
.message-row.outgoing .message-bubble{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent;
  color:#04121f;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.message-row.outgoing .bubble-meta,
.message-row.outgoing .bubble-text{color:#04121f;}
.attachment{
  background:rgba(255,255,255,.10);
  border:1px solid var(--kairos-border);
}
.message-row.outgoing .attachment{
  background:rgba(255,255,255,.32);
  border-color:rgba(4,18,31,.25);
}

/* Composer + secondary buttons */
.composer, .composer-foot{
  background:rgba(22,17,48,.72);
  border-top:1px solid var(--kairos-border);
}
.tool-chip{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.ghost-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ghost-btn:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.composer-note, .foot-note{color:var(--kairos-muted);}
.empty-note{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}

/* Announcements composer form + preview */
.field label{color:var(--kairos-muted);}
.field input, .field select, .field textarea{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.field input::placeholder, .field textarea::placeholder{color:rgba(169,163,196,.7);}
.field input:focus, .field select:focus, .field textarea:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 3px rgba(77,182,255,.18);
}
.field select option{background:#161130; color:var(--kairos-text);}
.check-row{color:var(--kairos-text);}
.audience-card, .preview-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.audience-card small{color:var(--kairos-muted);}
.preview-post{
  background:rgba(255,255,255,.04);
  border:1px solid var(--kairos-border);
}
.preview-post h3{color:var(--kairos-text);}
.preview-post p{color:var(--kairos-muted);}


/* ============================================================
 * Requests & Certifications family (root / administrative /
 * certifications / materials / technical-support)
 * ============================================================
 * Notes: .hero, .panel, .card, .btn(.primary), .tabs .tab, the legacy
 * .sidebar/.topbar shell and .badge.good/.warn/.danger are already
 * themed by earlier skin sections; below are the family locals. */

/* Stat tiles */
.stat-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.stat-card .k{color:var(--kairos-muted);}
.stat-card .v{color:var(--kairos-text);}

/* Neutral state badge (technical-support ships bg:var(--line)) */
.badge.muted{background:rgba(255,255,255,.08); color:var(--kairos-muted);}

/* Request tables (page-local th ships #fafafe) */
.panel th{background:rgba(255,255,255,.03); color:var(--kairos-muted); border-color:var(--kairos-border);}
.panel td{color:var(--kairos-text); border-color:rgba(255,255,255,.07);}

/* Technical-support category grid + honest empty state */
.cat-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
}
.cat-card:hover{border-color:rgba(77,182,255,.45);}
.cat-label, .ts-empty-title{color:var(--kairos-text);}
.cat-sub, .ts-empty{color:var(--kairos-muted);}

/* New-ticket modal — solid dark surface (same model as .ncw-modal) */
.k-modal{
  background:#161130;
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-shadow);
}
.k-modal-head, .k-modal-foot{border-color:var(--kairos-border);}
.k-modal-head h2{color:var(--kairos-text);}
.k-modal-head p{color:var(--kairos-muted);}
.k-modal-close{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.k-modal-close:hover{
  background:rgba(255,141,141,.14);
  border-color:rgba(255,141,141,.5);
  color:var(--kairos-danger);
}

/* Modal form fields (background-color longhand keeps the .k-select
   arrow, re-tinted to Kairos muted below) */
.k-label{color:var(--kairos-muted);}
.k-input, .k-select, .k-textarea{
  background-color:rgba(0,0,0,.28);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.k-input::placeholder, .k-textarea::placeholder{color:rgba(169,163,196,.7);}
.k-input:focus, .k-select:focus, .k-textarea:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 3px rgba(77,182,255,.18);
}
.k-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a9a3c4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
.k-select option{background:#161130; color:var(--kairos-text);}
.k-honest-note{
  background:rgba(242,177,52,.10);
  border:1px solid rgba(242,177,52,.35);
  color:var(--kairos-warn);
}

/* ============================================================
 * Socrates family (studio / v2 / draft-review)
 * (page-local classes → Kairos glass)
 * ============================================================ */

/* ---------- Socrates studio (socrates/, ss-* kit) ---------- */
/* .panel / .hero / .breadcrumb bases are themed in the shared sections above;
   here we cover the ss-* vocabulary that sits on top of them. */
.panel h2{color:var(--kairos-text);}
.panel p.lead{color:var(--kairos-muted);}
.panel .head{background:rgba(255,255,255,.03); border-bottom:1px solid var(--kairos-border);}
.panel .head h3{color:var(--kairos-text);}
.panel .head p{color:var(--kairos-muted);}

.ss-eyebrow{color:var(--kairos-tetra);}
.ss-hero h1{color:var(--kairos-text);}
.ss-hero-sub{color:var(--kairos-muted);}
.ss-chip{
  background:rgba(77,182,255,.14);
  color:var(--kairos-tetra);
  border:1px solid rgba(77,182,255,.3);
}
.ss-chip.warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);}
.ss-chip.neutral{background:var(--kairos-glass); color:var(--kairos-muted); border-color:var(--kairos-border);}

/* Buttons */
.ss-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ss-btn:hover:not(:disabled):not([aria-disabled="true"]){
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
}
.ss-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
  box-shadow:var(--kairos-inset);
}
.ss-btn.primary:hover:not(:disabled):not([aria-disabled="true"]){
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
}

/* Mode cards */
.ss-mode-card{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ss-mode-card:not(.planned):hover{
  border-color:rgba(77,182,255,.45);
  box-shadow:0 0 24px rgba(77,182,255,.14), var(--kairos-inset);
}
.ss-mode-card.is-selected{
  border-color:var(--kairos-tetra);
  background:rgba(77,182,255,.12);
  box-shadow:0 0 28px rgba(77,182,255,.18), var(--kairos-inset);
}
.ss-mode-card .icon{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.ss-mode-card h3{color:var(--kairos-text);}
.ss-mode-card p{color:var(--kairos-muted);}
.ss-mode-card.planned{background:rgba(255,255,255,.03);}
.ss-mode-pill.draftonly{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);}
.ss-mode-pill.planned{background:rgba(124,77,255,.16); color:var(--kairos-purple-soft); border-color:rgba(124,77,255,.4);}
.ss-mode-pill.analysis{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.4);}

/* Context form */
.ss-field span.k{color:var(--kairos-muted);}
.ss-field input,.ss-field select,.ss-field textarea{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ss-field input:focus,.ss-field select:focus,.ss-field textarea:focus{
  border-color:var(--kairos-tetra);
  background:rgba(0,0,0,.35);
  box-shadow:0 0 0 3px rgba(77,182,255,.15);
}
/* re-draw the caret in muted lavender so it survives the dark surface */
.ss-field select{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12'%3E%3Cpath fill='%23a9a3c4' d='M6 8L2 4h8z'/%3E%3C/svg%3E");}
.ss-field select option{background:#161130; color:var(--kairos-text);}
.ss-forms,.ss-composer{border-top-color:var(--kairos-border);}
.ss-forms-head h3{color:var(--kairos-text);}
.ss-forms-help{color:var(--kairos-muted);}
.ss-forms-toggle{color:var(--kairos-text);}
.ss-forms-toggle.is-disabled{color:rgba(169,163,196,.5);}
.ss-forms-planned-pill{background:rgba(124,77,255,.16); color:var(--kairos-purple-soft); border-color:rgba(124,77,255,.4);}

/* Suggested prompt chips */
.ss-suggested-label{color:var(--kairos-muted);}
.ss-chip-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-tetra);
}
.ss-chip-btn:hover{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.45);}
.ss-chip-btn.is-active{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}

/* Output / preview panel */
.ss-output-panel .ss-actions{border-top-color:var(--kairos-border);}
.ss-backend-note{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.35); color:var(--kairos-warn);}
.ss-preview-empty{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.ss-preview-empty strong{color:var(--kairos-text);}
.ss-captured-plan{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.ss-captured-plan h3{color:var(--kairos-text);}
.ss-captured-plan-row .label{color:var(--kairos-muted);}
.ss-captured-plan-row .value{color:var(--kairos-text);}
.ss-captured-plan-prompt{background:rgba(0,0,0,.28); border-color:var(--kairos-border); color:var(--kairos-text);}

/* Rendered draft */
.ss-draft{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
}
.ss-draft-mode-chip{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.3);}
.ss-draft-mode-chip.ocr{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);}
.ss-draft-mode-chip.rubric{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.4);}
.ss-draft-mode-chip.feedback{background:rgba(124,77,255,.16); color:var(--kairos-purple-soft); border-color:rgba(124,77,255,.4);}
.ss-draft h3.ss-draft-title{color:var(--kairos-text);}
.ss-draft-objective{color:var(--kairos-muted);}
.ss-draft-objective strong{color:var(--kairos-text);}
.ss-draft-instructions{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-text);}
.ss-draft-instructions strong{color:var(--kairos-muted);}
.ss-draft-section-header{color:var(--kairos-tetra); border-bottom-color:rgba(77,182,255,.25);}
.ss-draft-q,.ss-draft-rubric-row{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.ss-draft-q-meta{color:var(--kairos-muted);}
.ss-draft-q-prompt{color:var(--kairos-text);}
.ss-draft-q-choices,.ss-draft-q-answer-key{color:var(--kairos-muted);}
.ss-draft-rubric h4{color:var(--kairos-text);}
.ss-draft-rubric-name{color:var(--kairos-text);}
.ss-draft-rubric-bands{color:var(--kairos-muted);}
.ss-draft-meta-row{color:var(--kairos-muted);}
.ss-draft-meta-row strong,.ss-draft-points{color:var(--kairos-text);}
.ss-draft-delivery{color:var(--kairos-muted);}
.ss-draft-delivery strong{color:var(--kairos-text);}
.ss-draft-note{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.35); color:var(--kairos-warn);}
.ss-draft-note.review{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.3); color:var(--kairos-tetra);}
.ss-draft-forms{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.ss-draft-forms-head h4{color:var(--kairos-text);}
.ss-draft-forms-meta,.ss-draft-forms-foot{color:var(--kairos-muted);}
.ss-draft-form-card{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-text);}
.ss-draft-form-card strong{color:var(--kairos-tetra);}
.ss-draft-form-row .label{color:var(--kairos-muted);}
.ss-draft-form-row .value{color:var(--kairos-text);}

/* Handoff panels */
.ss-handoff-panel{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:rgba(77,182,255,.3);
}
.ss-handoff-panel h2,.ss-handoff h2{color:var(--kairos-text);}
.ss-handoff-panel .lead,.ss-handoff p{color:var(--kairos-muted);}
.ss-handoff-status{color:var(--kairos-muted);}
.ss-handoff-status.is-ready{color:var(--kairos-good);}
.ss-handoff-status.is-warn{color:var(--kairos-warn);}
.ss-handoff-forms-note{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.3); color:var(--kairos-tetra);}

/* Diagnostics */
.ss-diagnostics{background:var(--kairos-glass); border-color:var(--kairos-border);}
.ss-diagnostics summary{color:var(--kairos-text);}
.ss-diagnostics-item{background:rgba(0,0,0,.25); border-color:var(--kairos-border);}
.ss-diagnostics-item .k{color:var(--kairos-muted);}
.ss-diagnostics-item .v{color:var(--kairos-text);}


/* ---------- Socrates v2 (standalone page, no sidebar) ---------- */
/* The page ships its own light :root tokens; remap them on the page node so
   every var()-based rule flips to Kairos in one move, then pin the literals. */
.socrates-v2-page{
  --surface:rgba(22,17,48,.72);
  --surface-strong:rgba(22,17,48,.82);
  --border:var(--kairos-border);
  --text:var(--kairos-text);
  --muted:var(--kairos-muted);
  --accent:var(--kairos-tetra);
  --accent-weak:rgba(77,182,255,.16);
  --accent-soft:rgba(77,182,255,.08);
  --shadow:var(--kairos-shadow);
  color:var(--kairos-text);
  /* page surface: quiet purple/azure auras over the deep body gradient */
  background:
    radial-gradient(circle at 12% -6%, rgba(124,77,255,.16), transparent 34%),
    radial-gradient(circle at 88% 0%, rgba(77,182,255,.10), transparent 30%);
}
.socrates-v2-shell{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-shadow), var(--kairos-inset);
}
.socrates-v2-header h1{color:var(--kairos-text);}
.header-pills span,
.chip,
.small-pill{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-tetra);
}
.header-pills .soft{background:rgba(77,182,255,.10); border-color:rgba(77,182,255,.3);}

/* Rails */
.command-rail-head,
.course-rail-head{background:rgba(255,255,255,.03); border-bottom-color:var(--kairos-border);}
.command-rail-head h2,
.course-rail-head h2{color:var(--kairos-text);}
.command-rail-body::-webkit-scrollbar-thumb,
.course-rail-body::-webkit-scrollbar-thumb,
.course-list::-webkit-scrollbar-thumb,
.chat-scroll::-webkit-scrollbar-thumb{background:rgba(77,182,255,.28);}
.command-button{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.command-button:hover{
  border-color:rgba(77,182,255,.45);
  box-shadow:0 0 20px rgba(77,182,255,.12);
}
.command-button.is-active{
  background:rgba(77,182,255,.14);
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 4px rgba(77,182,255,.14);
}
.command-copy strong{color:var(--kairos-text);}

/* Chat card + bubbles */
.chat-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.78);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-shadow);
}
.bubble{
  background:rgba(255,255,255,.05);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}
.bubble.teacher{background:rgba(77,182,255,.10); border-color:rgba(77,182,255,.3);}
.bubble.soft{background:rgba(255,255,255,.03);}
.choice-chip{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-tetra);
}
.choice-chip.is-active{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}
.preview-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
  color:var(--kairos-text);
}

/* Composer */
.composer-card{background:rgba(255,255,255,.03); border-top-color:var(--kairos-border);}
.composer-textarea{
  background:rgba(0,0,0,.28);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.composer-textarea:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 4px rgba(77,182,255,.15);
}
.toggle-chip{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-tetra);
}
.toggle-chip.is-on{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}
.action-btn{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-tetra);
}
.action-btn:hover{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 20px rgba(77,182,255,.14);
}
.action-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.action-btn.ghost{background:rgba(255,255,255,.04); color:var(--kairos-muted);}
.field input,
.field select,
.field textarea{
  background:rgba(0,0,0,.28);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.field input:focus,
.field select:focus,
.field textarea:focus{outline:none; border-color:var(--kairos-tetra); box-shadow:0 0 0 3px rgba(77,182,255,.15);}
.field select option{background:#161130; color:var(--kairos-text);}

/* Recent drafts + course rail */
.recent-drafts{background:var(--kairos-glass); border-color:var(--kairos-border);}
.recent-drafts > summary{background:rgba(255,255,255,.04); color:var(--kairos-text);}
.draft-row{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-text);}
.selected-course-chip{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.selected-course-chip.primary{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.course-search{
  background:rgba(0,0,0,.28);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
/* .course-card base is themed in the My Courses section above; the v2
   selected state has higher local specificity, so restate it here */
.course-card.is-selected{
  background:rgba(77,182,255,.12);
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 4px rgba(77,182,255,.14);
}
.course-empty{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}


/* ---------- Draft review (socrates/draft-review, studio-* kit) ---------- */
.hero-mark{background:var(--kairos-glass); border-color:var(--kairos-border);}
.hero-subline{color:var(--kairos-muted);}
.studio-chip{
  background:var(--kairos-glass);
  color:var(--kairos-muted);
  border-color:var(--kairos-border);
}
.studio-chip.good{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.4);}
.studio-chip.warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);}
.studio-chip.soft{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.3);}
.studio-chip.neutral{background:var(--kairos-glass); color:var(--kairos-muted); border-color:var(--kairos-border);}
.studio-btn{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.studio-btn:hover{background:rgba(77,182,255,.10); border-color:var(--kairos-tetra);}
.studio-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
  box-shadow:var(--kairos-inset);
}
.studio-btn.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%); border-color:transparent;}
.studio-btn.ghost{background:rgba(255,255,255,.04); color:var(--kairos-muted);}
.sa-header-right .studio-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}
.sa-header-right .studio-btn.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%); color:#04121f;}

/* Summary stats */
.sa-stat{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.sa-stat-label,.sa-stat-meta{color:var(--kairos-muted);}
.sa-stat-value{color:var(--kairos-text);}
.summary-card .k{color:var(--kairos-muted);}
.summary-card .v{color:var(--kairos-text);}

/* Preview sheet + source card */
.preview-sheet{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
  box-shadow:inset 0 0 0 1px rgba(77,182,255,.06);
}
.review-source-card{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.review-source-kicker{color:var(--kairos-muted);}
.review-source-title{color:var(--kairos-text);}
.review-source-meta,.review-source-note{color:var(--kairos-muted);}
.review-source-item{background:var(--kairos-glass); border-color:var(--kairos-border);}
.review-source-item span{color:var(--kairos-muted);}
.review-source-item strong{color:var(--kairos-text);}
.preview-header{border-bottom-color:var(--kairos-border);}
.preview-school{color:var(--kairos-text);}
.preview-sub,.preview-meta{color:var(--kairos-muted);}
.preview-title{color:var(--kairos-text);}
.preview-instructions-block{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-text);}
.preview-block{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.preview-block-index{color:var(--kairos-text);}
.preview-block-meta{color:var(--kairos-muted);}
.preview-prompt{color:var(--kairos-text);}
.preview-instructions,.preview-answer{color:var(--kairos-muted);}
.preview-answer span{color:var(--kairos-text);}
.preview-choice{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-text);}
.studio-empty-state{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}

/* Readiness + destination */
.readiness-list{color:var(--kairos-muted);}
.readiness-list li.good{color:var(--kairos-good);}
.destination-bound{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
.destination-bound strong{color:var(--kairos-text);}
.metric{background:var(--kairos-glass); border-color:var(--kairos-border);}
.metric .k,.metric .m{color:var(--kairos-muted);}
.metric .v{color:var(--kairos-text);}

/* Editor (workspace panel) */
.studio-field span{color:var(--kairos-muted);}
.studio-field input,.studio-field select,.studio-field textarea{
  background:rgba(0,0,0,.28);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.studio-field input:focus,.studio-field select:focus,.studio-field textarea:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 4px rgba(77,182,255,.15);
}
.studio-field select option{background:#161130; color:var(--kairos-text);}
.editor-block{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.editor-block-title{color:var(--kairos-text);}
.editor-block-meta{color:var(--kairos-muted);}

/* Full preview sheet */
.preview-full-header{border-bottom-color:var(--kairos-border);}
.preview-full-title{color:var(--kairos-text);}
.preview-full-course{color:var(--kairos-tetra);}
.preview-full-topic,.preview-full-section-title{color:var(--kairos-muted);}
.preview-full-instructions{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-text);}
.preview-full-question{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.preview-full-q-num,.preview-full-q-prompt{color:var(--kairos-text);}
.preview-full-q-type{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.preview-full-q-pts{color:var(--kairos-tetra);}
.preview-full-q-instructions,.preview-full-answer{color:var(--kairos-muted);}
.preview-full-choice{color:var(--kairos-text);}
.preview-full-choice.is-correct{color:var(--kairos-good);}
.preview-full-answer-label{color:var(--kairos-text);}
.preview-full-empty{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.preview-full-answer-key-section{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35);}
.preview-full-ak-item{background:var(--kairos-glass); border-color:var(--kairos-border);}
.preview-full-ak-num{color:var(--kairos-muted);}
.preview-full-ak-ans{color:var(--kairos-text);}

/* Library modal + toast */
.studio-modal{background:rgba(7,5,17,.62);}
.studio-modal-panel{
  background:#161130;                /* solid — readable over content */
  border-color:var(--kairos-border);
  box-shadow:var(--kairos-shadow);
  color:var(--kairos-text);
}
.studio-modal-head h3{color:var(--kairos-text);}
.studio-modal-head p{color:var(--kairos-muted);}
.studio-modal-close{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-tetra);}
.library-result-card{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.library-result-title{color:var(--kairos-text);}
.library-result-meta,.library-result-copy{color:var(--kairos-muted);}
.studio-toast{
  background:#161130;
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-shadow);
}
.studio-toast[data-tone="good"]{background:#161130; border-color:rgba(79,209,197,.5); box-shadow:inset 3px 0 0 var(--kairos-good), var(--kairos-shadow);}
.studio-toast[data-tone="warn"]{background:#161130; border-color:rgba(242,177,52,.5); box-shadow:inset 3px 0 0 var(--kairos-warn), var(--kairos-shadow);}
.studio-toast[data-tone="danger"]{background:#161130; border-color:rgba(255,141,141,.5); box-shadow:inset 3px 0 0 var(--kairos-danger), var(--kairos-shadow);}

/* Mobile More-nav: the studio marks the current module with .tm-current —
   the shared mobile-nav section above only covers [open]; close the gap */
@media (max-width:720px){
  .tm-more.tm-current > summary{color:var(--kairos-tetra);}
}

/* ============================================================
 * Course-detail core (overview / lessons / gradebook / progress /
 * students / standardized-exams)
 * ------------------------------------------------------------
 * Scope: /tetrahedron/course-detail/{overview,lessons,lessons/lesson-detail,
 * lessons/lesson-instance,gradebook,progress,students,standardized-exams,
 * standardized-exams/session,standardized-exams/student-report}
 * (tasks/** is themed in its own section.)
 *
 * These routes share the Workspace-OS kit (kairos-workspace-os.css) and
 * re-theme their local classes through --kw-* tokens, so the single biggest
 * lever is remapping those tokens onto the Kairos palette; the class rules
 * below then patch everything the token pass can't reach (hardcoded light
 * values, sticky-table solids, print-adjacent kits). Same specificity as the
 * page-local rules — this file loads last, so ties resolve here.
 * ============================================================ */

/* ---------- 1 · Workspace-OS tokens → Kairos glass ----------
   Set on body (beats the :root light block) AND on body[data-theme=…]
   (ties the OS dark block at 0,1,1 — later file wins), so the family renders
   Kairos regardless of the page's stored light/dark preference.
   --kw-surface stays SOLID on purpose: the gradebook's sticky columns and the
   dropdown menus paint with it and must not let content bleed through. */
body,
body[data-theme="light"],
body[data-theme="dark"]{
  --kw-bg:var(--kairos-bg);
  --kw-bg-2:var(--kairos-bg-deep);
  --kw-surface:#161130;
  --kw-surface-2:rgba(255,255,255,.05);
  --kw-surface-3:rgba(255,255,255,.10);
  --kw-glass:rgba(22,17,48,.62);
  --kw-border:var(--kairos-border);
  --kw-border-2:rgba(255,255,255,.09);
  --kw-text:var(--kairos-text);
  --kw-text-2:#cfc9e6;
  --kw-muted:var(--kairos-muted);
  --kw-on-accent:#04121f;
  --kw-accent:var(--kairos-tetra);
  --kw-accent-2:var(--kairos-purple-soft);
  --kw-accent-soft:rgba(77,182,255,.14);
  --kw-ok:var(--kairos-good);       --kw-ok-soft:rgba(79,209,197,.14);
  --kw-warn:var(--kairos-warn);     --kw-warn-soft:rgba(242,177,52,.14);
  --kw-danger:var(--kairos-danger); --kw-danger-soft:rgba(255,141,141,.14);
  --kw-grad-brand:linear-gradient(135deg,#241a52 0%,#38288a 55%,#0f4d7d 100%);
  --kw-grad-ai:linear-gradient(135deg,#1c1444 0%,#2f2172 55%,#0d3d63 100%);
  --kw-canvas-glow:radial-gradient(1200px 420px at 100% -12%, rgba(77,182,255,.08), transparent 62%);
  --kw-sh-1:0 6px 18px rgba(0,0,0,.35), var(--kairos-inset);
  --kw-sh-2:var(--kairos-shadow);
  --kw-sh-3:0 24px 60px rgba(77,182,255,.18);
  --kw-ring:0 0 0 3px rgba(77,182,255,.25);
}

/* ---------- 2 · Breadcrumbs / course sub-nav (ch-* kit) ---------- */
.breadcrumb{color:var(--kairos-muted);}
.breadcrumb a{color:var(--kairos-muted);}
.breadcrumb a:hover{color:var(--kairos-tetra);}
.breadcrumb .current{color:var(--kairos-tetra);}
.lesson-crumb{color:var(--kairos-muted);}
.lesson-crumb a{color:var(--kairos-muted);}
.lesson-crumb a:hover{color:var(--kairos-tetra);}
.lesson-crumb .sep{color:rgba(169,163,196,.45);}
.lesson-crumb .current{color:var(--kairos-tetra);}

/* Course hero: the wrapper stays transparent (each page forces that locally);
   the banner + ops rail carry the glass. */
.ch-banner{border-color:var(--kairos-border);}
.ch-title{color:var(--kairos-text);}
.ch-meta{color:var(--kairos-muted);}
.ch-eyebrow{color:rgba(255,255,255,.8);}
.ch-mark{background:rgba(77,182,255,.12); border:1px solid rgba(77,182,255,.3);}
.ch-tabs{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  border-top:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.ch-tab{color:var(--kairos-muted);}
.ch-tab:hover{color:var(--kairos-text); background:rgba(77,182,255,.08);}
.ch-tab.active, .ch-tab[aria-current="page"]{
  color:var(--kairos-tetra);
  background:rgba(77,182,255,.14);
  border-bottom-color:var(--kairos-tetra);
}
.ch-action, .lh-action, .back-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.ch-action:hover, .lh-action:hover, .back-btn:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
}
.ch-action.primary, .lh-action.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent;
  color:#04121f;
  box-shadow:var(--kairos-glow-tetra), var(--kairos-inset);
}
.ch-action.primary:hover, .lh-action.primary:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
}
.kw-hero2{border-color:var(--kairos-border);}
.kw-hero2__ops{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-top:1px solid var(--kairos-border);
}

/* Lesson-detail header (lh-* kit, no kw re-theme on that page) */
.lesson-header{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.lh-mark{background:rgba(77,182,255,.12); border:1px solid rgba(77,182,255,.3);}
.lh-title{color:var(--kairos-text);}
.lh-meta{color:var(--kairos-muted);}
.lh-sep{color:rgba(169,163,196,.4);}

/* ---------- 3 · KPI band ---------- */
.kpi-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.kpi-card:hover{border-color:rgba(77,182,255,.45); box-shadow:0 0 24px rgba(77,182,255,.14), var(--kairos-inset);}
.kpi-card .label, .kpi-card .meta, .kpi-card .k, .kpi-card .kl{color:var(--kairos-muted);}
.kpi-card .value, .kpi-card .v, .kpi-card .kv{color:var(--kairos-text);}

/* ---------- 4 · Toolbar / search / filters / sort ---------- */
.searchbar, .sort-wrap{
  background:rgba(0,0,0,.25);
  border:1px solid var(--kairos-border);
  box-shadow:none;
  color:var(--kairos-muted);
}
.searchbar input{color:var(--kairos-text);}
.searchbar input::placeholder{color:var(--kairos-muted);}
.sort-wrap label{color:var(--kairos-muted);}
.sort-wrap select{background:rgba(0,0,0,.28); border:1px solid var(--kairos-border); color:var(--kairos-text);}

/* ---------- 5 · Pills, chips, badges — honest states ---------- */
/* base .pill / .pill.active already themed by the shared-shell part of this
   skin; below are the family's tone/state variants (kw pages resolve these
   through the token remap; the unions cover the non-kw pages too). */
.pill.good, .pill.tone-good, .pill-good, .pill-green, .chip-good,
.meta-chip.tone-good, .act-chip.done, .flag-chip.on{
  background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.35);
}
.pill.warn, .pill.tone-warn, .pill-warn, .pill-amber, .chip-warn,
.meta-chip.tone-warn, .act-chip.review{
  background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);
}
.pill.danger, .pill.tone-danger, .pill-danger, .pill-red,
.meta-chip.tone-danger, .act-chip.missing{
  background:rgba(255,141,141,.14); color:var(--kairos-danger); border-color:rgba(255,141,141,.35);
}
.pill.soft, .pill.tone-soft, .pill-info, .pill-blue, .chip-soft,
.meta-chip.tone-soft, .act-chip.pending{
  background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.35);
}
.pill-neutral, .pill-gray{
  background:rgba(255,255,255,.08); color:var(--kairos-muted); border-color:var(--kairos-border);
}
.pill-purple{
  background:rgba(124,77,255,.16); color:var(--kairos-purple-soft); border-color:rgba(124,77,255,.4);
}
.act-chip, .flag-chip, .mini-chip{
  background:rgba(255,255,255,.05);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.mini-meta, .invite-note, .summary-copy{color:var(--kairos-muted);}
.mini-value{color:var(--kairos-text);}

/* ---------- 6 · Panels & generic cards ----------
   (.panel base glass lives in the shell part of this skin) */
.panel h2, .panel-head h2, .no-course h2{color:var(--kairos-text);}
.panel-head p, .no-course p{color:var(--kairos-muted);}
.no-course{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.no-course .btn{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border:1px solid transparent;
  color:#04121f;
}
.no-course .btn:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%); border-color:transparent;}
.empty-block, .page-content .empty{
  background:rgba(255,255,255,.03);
  border:1px dashed var(--kairos-border);
  color:var(--kairos-muted);
}
.empty-block strong, .page-content .empty h3{color:var(--kairos-text);}
.load-more-btn{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-tetra);
}
.load-more-btn:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.btn.danger{background:rgba(255,141,141,.16); border-color:rgba(255,141,141,.45); color:var(--kairos-danger);}
.btn.danger:hover{background:rgba(255,141,141,.26); border-color:var(--kairos-danger);}

/* Overview side cards (not covered by that page's kw re-theme) */
.today-card, .queue-card, .route-card, .student-alert-card, .event-card{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.09);
}
.today-card h3, .queue-card h3, .route-card h3, .student-alert-card h3, .event-card h3{color:var(--kairos-text);}
.today-card p, .queue-card p, .route-card p, .student-alert-card p, .event-card p{color:var(--kairos-muted);}

/* ---------- 7 · Gradebook matrix (sticky cells need SOLIDS) ---------- */
.matrix-wrap, .matrix-skeleton{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border-color:var(--kairos-border);
}
table.gradebook-matrix th, table.gradebook-matrix td{border-color:rgba(255,255,255,.07) !important;}
table.gradebook-matrix thead th{background:#221d3a !important; color:var(--kairos-text) !important;}
table.gradebook-matrix thead .matrix-student-col,
table.gradebook-matrix thead .matrix-num-col{background:#221d3a !important;}
table.gradebook-matrix .matrix-student-col,
table.gradebook-matrix .matrix-num-col{background:#161130 !important;}
table.gradebook-matrix tbody tr:hover td,
table.gradebook-matrix tbody tr:hover th{background:rgba(77,182,255,.07) !important;}
.matrix-asn-title{color:var(--kairos-text);}
.matrix-asn-meta, .matrix-student-sub, .cell-note{color:var(--kairos-muted);}
.matrix-student-name{color:var(--kairos-text);}
.matrix-student-avatar{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.cell-empty{color:rgba(169,163,196,.6);}
.skel-row > div{border-color:rgba(255,255,255,.06);}
.skel-row.head > div{background:#221d3a;}

/* ---------- 8 · Progress bars & fills ---------- */
.progress-bar, .si-track, .lac-bar, .student-bar, .domain-bar-wrap, .cell-bar{
  background:rgba(255,255,255,.10);
}
.progress-fill, .progress-fill.tone-soft, .student-bar .fill{background:rgba(255,255,255,.22);}
.si-fill{background:linear-gradient(90deg,#2f9bef,#4db6ff);}
.progress-fill.tone-good, .lac-fill.tone-good, .student-bar .fill.tone-good{
  background:linear-gradient(90deg,#2fb3a7,#4fd1c5);
}
.progress-fill.tone-warn, .lac-fill.tone-warn, .student-bar .fill.tone-warn{
  background:linear-gradient(90deg,#d99a26,#f2b134);
}
.progress-fill.tone-danger, .lac-fill.tone-danger, .student-bar .fill.tone-danger{
  background:linear-gradient(90deg,#e26d6d,#ff8d8d);
}

/* Progress route extras that skip the kw re-theme */
.activity-strip{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.activity-stat .k, .activity-stat .v.muted{color:var(--kairos-muted);}
.activity-stat .v{color:var(--kairos-text);}
.interv-avatar{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}

/* Lessons route: hardcoded tone accents in its kw block */
.seq-stat-val.good{color:var(--kairos-good);}
.seq-stat-val.warn{color:var(--kairos-warn);}
.seq-stat-val.danger{color:var(--kairos-danger);}
.tl-dot.tone-good{background:var(--kairos-good);}
.tl-dot.tone-warn{background:var(--kairos-warn);}
.tl-dot.tone-danger{background:var(--kairos-danger);}
.tl-date.tone-good{color:var(--kairos-good);}
.tl-date.tone-warn{color:var(--kairos-warn);}
.tl-date.tone-danger{color:var(--kairos-danger);}
.draft-lesson-card .draft-btn.danger{color:var(--kairos-danger); border-color:rgba(255,141,141,.4);}
.draft-lesson-card .draft-btn.danger:hover{background:rgba(255,141,141,.12); border-color:var(--kairos-danger);}

/* ---------- 9 · Roster / attendance kit (att-*) ----------
   Overview + lesson-instance ship this kit without a kw re-theme. The
   .att-roster scope also neutralizes the shell-level .att-row card style,
   which belongs to the dashboard "attention rows", not this roster. */
.modal-box, .att-box, .invite-box, .popup-box{
  background:#161130;
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-shadow);
  color:var(--kairos-text);
}
.modal-box h2, .att-head h2, .invite-box h2, .popup-box h2{color:var(--kairos-text);}
.modal-box p, .invite-box p, .popup-box p{color:var(--kairos-muted);}
.att-head, .att-footer{border-color:var(--kairos-border);}
.att-close{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.att-close:hover{background:rgba(255,255,255,.14); color:var(--kairos-text);}
.att-field > span{color:var(--kairos-muted);}
.modal-box input, .att-field input, .att-field select, .att-status-sel{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.att-roster .att-row{
  background:transparent;
  border:0;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.att-avatar{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.att-name{color:var(--kairos-text);}
.att-status-choice{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
}
.att-status-choice:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.08); color:var(--kairos-text);}
.att-status-choice.active.present{background:rgba(79,209,197,.16); color:var(--kairos-good); border-color:rgba(79,209,197,.45);}
.att-status-choice.active.late{background:rgba(242,177,52,.16); color:var(--kairos-warn); border-color:rgba(242,177,52,.45);}
.att-status-choice.active.excused{background:rgba(77,182,255,.16); color:var(--kairos-tetra); border-color:rgba(77,182,255,.45);}
.att-status-choice.active.absent{background:rgba(255,141,141,.16); color:var(--kairos-danger); border-color:rgba(255,141,141,.45);}
.att-status{color:var(--kairos-muted);}
.att-status.success{color:var(--kairos-good);}
.att-status.error{color:var(--kairos-danger);}
.att-empty{color:var(--kairos-muted);}
.att-empty strong{color:var(--kairos-text);}

/* Student rows (lesson-detail / lesson-instance) */
.student-row{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09);}
.student-row:hover{background:rgba(77,182,255,.06); border-color:rgba(77,182,255,.4); box-shadow:none;}
.student-avatar{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.3); color:var(--kairos-tetra);}
.student-name{color:var(--kairos-text);}
.student-meta, .student-completion{color:var(--kairos-muted);}
.student-completion strong{color:var(--kairos-text);}

/* ---------- 10 · Lesson-detail lists ---------- */
.objective-item, .standard-item, .resource-card, .assignment-card, .status-card{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.09);
}
.resource-title, .assignment-title{color:var(--kairos-text);}
.resource-copy, .assignment-copy, .status-copy{color:var(--kairos-muted);}

/* ---------- 11 · Lesson-instance workspace ---------- */
.lesson-tab{color:var(--kairos-muted);}
.lesson-tab:hover{color:var(--kairos-text); background:rgba(77,182,255,.08);}
.lesson-tab.active{color:var(--kairos-tetra); background:rgba(77,182,255,.16);}
.lesson-tab .count{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.lesson-tab.active .count{background:rgba(0,0,0,.25); color:var(--kairos-tetra);}
.lesson-stat, .control-row{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.08);}
.lesson-stat .k, .lesson-stat .v.muted, .control-row .k, .control-row .v.muted, .control-panel h3{color:var(--kairos-muted);}
.lesson-stat .v, .control-row .v{color:var(--kairos-text);}
.preview-frame{background:rgba(0,0,0,.25); border-color:var(--kairos-border);}
.preview-panel-eyebrow, .workspace-eyebrow{color:var(--kairos-tetra);}
.workspace-eyebrow{background:rgba(77,182,255,.14);}
.preview-panel-head h2, .activity-rail-head h3{color:var(--kairos-text);}
.activity-rail-head .sub, .info-section h3{color:var(--kairos-muted);}
.notes-block{border-left-color:rgba(77,182,255,.45); background:rgba(77,182,255,.06); color:var(--kairos-text);}
.notes-block.muted{color:var(--kairos-muted); border-left-color:var(--kairos-border); background:rgba(255,255,255,.03);}
.archived-banner{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.4); color:var(--kairos-danger);}
.archived-banner .text small{color:rgba(255,201,201,.85);}

.activity-tile{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-text); box-shadow:none;}
.activity-tile:hover{border-color:rgba(77,182,255,.45); background:rgba(77,182,255,.08); box-shadow:0 0 18px rgba(77,182,255,.12);}
.activity-tile .ico{color:var(--kairos-tetra);}
.activity-tile .lbl{color:var(--kairos-text);}
.activity-tile .sub{color:var(--kairos-muted);}
.activity-tile::before{background:rgba(77,182,255,.16); color:var(--kairos-tetra); border-color:rgba(77,182,255,.35);}
.activity-tile.disabled .ico{color:rgba(169,163,196,.5);}
.activity-tile.disabled:hover{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.activity-tile.selected{
  background:rgba(77,182,255,.16);
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 2px var(--kairos-tetra) inset, 0 0 24px rgba(77,182,255,.2);
}
.activity-tile.selected .lbl{color:var(--kairos-tetra);}
.activity-tile-pill{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.35);}

.resource-link{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09); color:var(--kairos-text);}
.resource-link:hover{background:rgba(77,182,255,.07); border-color:rgba(77,182,255,.4); box-shadow:none;}
.resource-link.teacher-only{border-color:rgba(242,177,52,.4); background:rgba(242,177,52,.08);}
.resource-link.teacher-only .ico{color:var(--kairos-warn);}
.resource-tag{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.dialog-row{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09);}
.dialog-row .dr-title{color:var(--kairos-text);}
.dialog-row .dr-sub{color:var(--kairos-muted);}
.dialog-row .dr-state{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);}
.schedule-form label{color:var(--kairos-muted);}
.schedule-form input, .schedule-form select, .schedule-form textarea,
.ai-prompt, .ai-select, .field-input{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.ai-chip{background:var(--kairos-glass); border:1px solid var(--kairos-border); color:var(--kairos-muted);}
.ai-chip:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.08); color:var(--kairos-text);}

/* Resources workspace (lr-*) */
.lr-tile .ico{background:rgba(77,182,255,.12); color:var(--kairos-tetra); border-color:rgba(77,182,255,.3);}
.lr-tile:hover{background:rgba(77,182,255,.08);}
.lr-tile .lbl{color:var(--kairos-text);}
.lr-tile .sub{color:var(--kairos-muted);}
.lr-add-bar{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.lr-add-bar .lr-add-bar-copy strong{color:var(--kairos-text);}
.lr-add-bar .lr-add-bar-copy span{color:var(--kairos-muted);}
.lr-add-btn, .lr-add-bar .lr-add-bar-cta{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border:1px solid transparent;
  color:#04121f;
}
.lr-add-btn:hover, .lr-add-bar .lr-add-bar-cta:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
}
.lr-add-menu{background:#161130; border:1px solid var(--kairos-border); box-shadow:var(--kairos-shadow);}
.lr-preview-frame{background:rgba(0,0,0,.25); border-color:var(--kairos-border);}
.lr-subtab{color:var(--kairos-muted);}
.lr-subtab:hover{color:var(--kairos-text); background:rgba(77,182,255,.08);}
.lr-subtab .count{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.lr-sub-row{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.08);}
.lr-sub-row .name, .lr-sub-row .grade{color:var(--kairos-text);}
.lr-sub-row .status{background:rgba(255,255,255,.06); color:var(--kairos-muted); border-color:var(--kairos-border);}
.lr-sub-row .status.submitted{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.4);}
.lr-sub-row .status.graded, .lr-sub-row .status.confirmed{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.4);}
.lr-sub-row .status.missing{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.4);}
.lr-asg-row{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09); color:var(--kairos-text);}
.lr-asg-row:hover{background:rgba(77,182,255,.06); border-color:rgba(77,182,255,.4);}
.lr-asg-row .lr-asg-head .title{color:var(--kairos-text);}
.lr-asg-row .lr-asg-head .due, .lr-asg-row .lr-asg-meta .type{color:var(--kairos-muted);}
.lr-asg-row .lr-asg-stats{border-top-color:rgba(255,255,255,.09);}
.lr-add-modal-card, .lr-wizard-option{
  background:rgba(255,255,255,.04);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.lr-add-modal-card:hover:not([disabled]), .lr-wizard-option:hover:not([disabled]){
  background:rgba(77,182,255,.08);
  border-color:rgba(77,182,255,.45);
}
.lr-add-modal-card .lbl, .lr-wizard-option .lbl{color:var(--kairos-text);}
.lr-wizard-option .sub{color:var(--kairos-muted);}
.lr-wizard-shell{background:#161130; border:1px solid var(--kairos-border); box-shadow:var(--kairos-shadow); color:var(--kairos-text);}
.lr-bundle{border-top-color:rgba(255,255,255,.14);}

/* Socrates panel (k-soc-*) */
.k-soc-src-row, .k-soc-plan-card{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09);}
.k-soc-summary{color:var(--kairos-text);}

/* AI assignment wizard (lassign0-*) — core surfaces */
.lassign0-modal{background:#161130; box-shadow:var(--kairos-shadow); color:var(--kairos-text);}
.lassign0-steps, .lassign0-head{background:rgba(255,255,255,.03); border-bottom-color:var(--kairos-border);}
.lassign0-head h2{color:var(--kairos-text);}
.lassign0-head .lassign0-sub{color:var(--kairos-muted);}
.lassign0-close{background:rgba(255,255,255,.06); border-color:var(--kairos-border); color:var(--kairos-muted);}
.lassign0-step{color:rgba(169,163,196,.7);}
.lassign0-step b{background:rgba(255,255,255,.10); color:var(--kairos-muted);}
.lassign0-step small{color:rgba(169,163,196,.55);}
.lassign0-step.is-active{color:var(--kairos-tetra);}
.lassign0-step.is-active b{background:var(--kairos-tetra); color:#04121f;}
.lassign0-step-arrow{color:rgba(169,163,196,.4);}
.lassign0-controls{background:rgba(0,0,0,.18); border-right-color:var(--kairos-border);}
.lassign0-work{background:#161130;}
.lassign0-opening{background:linear-gradient(135deg,rgba(124,77,255,.14),rgba(77,182,255,.08)); border-color:rgba(124,77,255,.35);}
.lassign0-opening-h{color:var(--kairos-text);}
.lassign0-opening-sub{color:var(--kairos-muted);}
.lassign0-ic{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10);}
.lassign0-ic.rule{background:rgba(242,177,52,.06); border-color:rgba(242,177,52,.35);}
.lassign0-ic-h{color:var(--kairos-muted);}
.lassign0-ic-title, .lassign0-ic-metrics b, .lassign0-context b{color:var(--kairos-text);}
.lassign0-ic-body, .lassign0-ic-metrics, .lassign0-ic-notes{color:var(--kairos-muted);}
.lassign0-ic-chip{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.3); color:var(--kairos-tetra);}
.lassign0-ic-stat{background:rgba(255,255,255,.06); border-color:var(--kairos-border); color:var(--kairos-muted);}
.lassign0-ic-stat.good{background:rgba(79,209,197,.14); border-color:rgba(79,209,197,.35); color:var(--kairos-good);}
.lassign0-ic-stat.warn{background:rgba(242,177,52,.14); border-color:rgba(242,177,52,.35); color:var(--kairos-warn);}
.lassign0-ic-stat.danger{background:rgba(255,141,141,.14); border-color:rgba(255,141,141,.35); color:var(--kairos-danger);}
.lassign0-prov.observed{background:rgba(77,182,255,.12); color:var(--kairos-tetra);}
.lassign0-prov.rule{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.lassign0-prov.preview{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.lassign0-section h3{color:var(--kairos-tetra);}
.lassign0-context{background:rgba(77,182,255,.07); border-color:rgba(77,182,255,.3); color:var(--kairos-muted);}
.lassign0-type{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-text);}
.lassign0-type:hover{border-color:rgba(77,182,255,.45);}
.lassign0-type.active{background:rgba(77,182,255,.16); border-color:var(--kairos-tetra); color:var(--kairos-tetra);}
.lassign0-type.physical.active{background:rgba(79,209,197,.16); border-color:var(--kairos-good); color:var(--kairos-good);}
.lassign0-preset{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-tetra);}
.lassign0-preset:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.10);}
.lassign0-qa{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10);}
.lassign0-qa:hover{border-color:var(--kairos-tetra); background:rgba(77,182,255,.07); box-shadow:none;}
.lassign0-qa-label{color:var(--kairos-text);}
.lassign0-qa-sub, .lassign0-optlabel, .lassign0-opt, .lassign0-opt-check{color:var(--kairos-muted);}
.lassign0-opt select{background:rgba(0,0,0,.28); border-color:var(--kairos-border); color:var(--kairos-text);}
.lassign0-generate, .lassign0-trigger{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  box-shadow:var(--kairos-glow-tetra);
}

/* ---------- 12 · Standardized-exams (catalog route) ---------- */
.si-title{color:var(--kairos-text);}
.si-sub, .si-field .k, .si-progress-head .label, .dsec-title, .dg-item .k, .summary-box .k{color:var(--kairos-muted);}
.si-field .v{color:var(--kairos-text);}
.si-progress-wrap, .si-act-row{border-top-color:rgba(255,255,255,.09);}
.summary-box, .detail-note{
  background:rgba(255,255,255,.04);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.detail-highlight{
  background:linear-gradient(180deg,rgba(124,77,255,.14),rgba(77,182,255,.07));
  border-color:rgba(124,77,255,.35);
  color:var(--kairos-text);
}
.detail-grid{border-color:rgba(255,255,255,.08);}
.btn-primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border-color:transparent;
}
.btn-primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}
.btn-soft{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.3);}
.btn-ghost{background:var(--kairos-glass); color:var(--kairos-muted); border:1px solid var(--kairos-border);}
.btn-info{background:rgba(77,182,255,.2); color:var(--kairos-tetra); border-color:rgba(77,182,255,.4);}
.btn-warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border:1px solid rgba(242,177,52,.4);}
.btn-archive{background:rgba(255,141,141,.14); color:var(--kairos-danger); border:1px solid rgba(255,141,141,.4);}

/* ---------- 13 · Standardized-exams / session (screen UI only —
   the generated answer sheets / batch printouts stay paper-white) ---------- */
.page-content .card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
}
.page-content .card-head{border-bottom-color:var(--kairos-border);}
.admin-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
}
.admin-card .admin-head{border-bottom-color:var(--kairos-border);}
.admin-card .admin-title{color:var(--kairos-muted);}
.field .k{color:var(--kairos-muted);}
.field .v{color:var(--kairos-text);}
.table-wrap{border-color:var(--kairos-border);}
.table-wrap thead tr{background:rgba(255,255,255,.04);}
.action-model{background:rgba(242,177,52,.14); color:var(--kairos-warn); border:1px solid rgba(242,177,52,.4);}
.action-report{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.action-pill-primary{background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%); color:#04121f;}
.action-pill-soft{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.35);}
.action-pill-warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.4);}
.action-pill-ghost{background:var(--kairos-glass); color:var(--kairos-tetra); border-color:var(--kairos-border);}
.setup-badge{background:rgba(255,255,255,.06); color:var(--kairos-muted); border:1px solid var(--kairos-border);}
.setup-badge.good{background:rgba(79,209,197,.14); color:var(--kairos-good); border-color:rgba(79,209,197,.4);}
.setup-badge.warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.4);}
.setup-badge.soft{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.4);}
.gen-status-running{color:var(--kairos-purple-soft);}
.gen-status-ok{color:var(--kairos-good);}
.gen-status-err{color:var(--kairos-danger);}
.inline-status-ok{background:rgba(79,209,197,.12); color:var(--kairos-good); border:1px solid rgba(79,209,197,.35);}
.inline-status-warn{background:rgba(242,177,52,.12); color:var(--kairos-warn); border:1px solid rgba(242,177,52,.35);}
.inline-status-err{background:rgba(255,141,141,.12); color:var(--kairos-danger); border:1px solid rgba(255,141,141,.35);}
.roster-banner.warn{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);}
.roster-banner.empty{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-muted);}

/* Session's ks-modal kit */
.ks-modal{background:#161130; box-shadow:var(--kairos-shadow); color:var(--kairos-text);}
.ks-modal-head, .ks-modal-toolbar{border-bottom-color:var(--kairos-border);}
.ks-modal-toolbar{background:rgba(255,255,255,.03);}
.ks-modal-title{color:var(--kairos-text);}
.ks-modal-sub, .ks-modal-toolbar .ks-modal-counter, .ks-modal-empty{color:var(--kairos-muted);}
.ks-modal-confirm .ks-modal-body{color:var(--kairos-muted);}
.ks-modal-pill{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-tetra);}
.ks-modal-pill:hover{background:rgba(77,182,255,.12);}
.ks-modal-table th, .ks-modal-table td{border-bottom-color:rgba(255,255,255,.08);}
.ks-modal-table th{background:#221d3a; color:var(--kairos-muted);}
.ks-modal-table tbody tr:hover{background:rgba(77,182,255,.06);}
.ks-modal-table .ks-modal-name{color:var(--kairos-text);}
.ks-modal-table .ks-modal-sub-text{color:var(--kairos-muted);}
.ks-modal-table .ks-modal-pkt{color:var(--kairos-text);}
.ks-modal-table .ks-modal-link{color:var(--kairos-tetra);}
.ks-modal-status.gen{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.ks-modal-status.pen{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.ks-modal-status.fail{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.ks-modal-foot{border-top-color:var(--kairos-border); background:#161130;}
.ks-modal-btn-primary{background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%); color:#04121f;}
.ks-modal-btn-soft{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.35);}
.ks-modal-btn-warn{background:rgba(242,177,52,.14); color:var(--kairos-warn); border-color:rgba(242,177,52,.4);}
.ks-modal-btn-ghost{background:var(--kairos-glass); color:var(--kairos-tetra); border-color:var(--kairos-border);}

/* ---------- 14 · Standardized-exams / student-report (screen report;
   the .pdf-* preview keeps its paper look, print rules stay untouched) ---------- */
.k-topbar-crumb{color:var(--kairos-muted);}
.k-topbar-crumb a{color:var(--kairos-tetra);}
.k-topbar-sep{color:rgba(169,163,196,.4);}
.k-topbar-current{color:var(--kairos-tetra);}
.k-guard{background:rgba(255,141,141,.10); border-color:rgba(255,141,141,.35);}
.k-guard h3{color:var(--kairos-danger);}
.k-guard p{color:var(--kairos-muted);}
.k-guard a{color:var(--kairos-tetra);}
.pending-state-card.ps-neutral{background:rgba(255,255,255,.05); border-color:var(--kairos-border);}
.pending-state-card.ps-warn{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.4);}
.pending-state-card.ps-info{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4);}
.ps-title{color:var(--kairos-text);}
.ps-desc{color:var(--kairos-muted);}
.ps-back{color:var(--kairos-tetra);}
.k-card, .k-sidebar-card{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.k-card-header, .k-sidebar-card-header{border-bottom-color:var(--kairos-border);}
.k-card-title{color:var(--kairos-text);}
.k-score-card{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.k-score-card .sc-lbl{color:var(--kairos-muted);}
.k-score-card .sc-val{color:var(--kairos-text);}
.k-score-card.primary .sc-val{color:var(--kairos-tetra);}
.k-score-card.pass .sc-val{color:var(--kairos-good);}
.k-score-card.fail .sc-val{color:var(--kairos-danger);}
.k-score-card.neutral .sc-val{color:var(--kairos-text);}
.k-pass-banner.passing{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.k-pass-banner.failing{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.k-pass-banner.approaching{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.k-provisional-note, .k-ambig-note{
  background:rgba(242,177,52,.12);
  border-color:rgba(242,177,52,.4);
  color:#ffe3ae;
}
.domain-name{color:var(--kairos-text);}
.domain-count{color:var(--kairos-muted);}
.domain-bar-fill.strong{background:var(--kairos-good);}
.domain-bar-fill.good{background:var(--kairos-tetra);}
.domain-bar-fill.fair{background:var(--kairos-warn);}
.domain-bar-fill.weak{background:var(--kairos-danger);}
.domain-pct.strong{color:var(--kairos-good);}
.domain-pct.good{color:var(--kairos-tetra);}
.domain-pct.fair{color:var(--kairos-warn);}
.domain-pct.weak{color:var(--kairos-danger);}
.k-domain-card.strong-card{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.35);}
.k-domain-card.weak-card{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.35);}
.k-domain-card.strong-card .dc-label, .k-domain-card.strong-card .dc-pct{color:var(--kairos-good);}
.k-domain-card.weak-card .dc-label, .k-domain-card.weak-card .dc-pct{color:var(--kairos-danger);}
.k-q-chip.mc-correct{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.k-q-chip.mc-incorrect{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.k-q-chip.cr-points{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.k-q-chip.ambig{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.k-empty-state{color:var(--kairos-muted);}
.k-rec-item.p1{background:rgba(255,141,141,.12); border-color:var(--kairos-danger);}
.k-rec-item.p2{background:rgba(242,177,52,.12); border-color:var(--kairos-warn);}
.k-rec-item.p3{background:rgba(124,77,255,.14); border-color:var(--kairos-purple-soft);}
.k-rec-item.p1 .rec-label{color:var(--kairos-danger);}
.k-rec-item.p2 .rec-label{color:var(--kairos-warn);}
.k-rec-item.p3 .rec-label{color:var(--kairos-purple-soft);}
.rec-text{color:var(--kairos-text);}
.k-tab-nav{border-bottom-color:var(--kairos-border);}
.k-tab-btn{color:var(--kairos-muted);}
.k-tab-btn:hover{color:var(--kairos-text);}
.k-tab-btn.active{color:var(--kairos-tetra); border-bottom-color:var(--kairos-tetra);}
.k-tab-panel p{color:var(--kairos-text);}
.k-tab-panel h4{color:var(--kairos-muted);}
.k-action-btn{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-text);}
.k-action-btn:hover{background:rgba(77,182,255,.10); border-color:var(--kairos-tetra);}
.k-action-btn.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent;
  color:#04121f;
}
.k-action-btn.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}
.k-threshold-row .t-name{color:var(--kairos-muted);}
.k-threshold-row.mastery{background:rgba(77,182,255,.12); color:var(--kairos-tetra);}
.k-threshold-row.passing{background:rgba(79,209,197,.12); color:var(--kairos-good);}
.k-threshold-row.competency{background:rgba(242,177,52,.12); color:var(--kairos-warn);}
.k-exam-field-row{border-bottom-color:rgba(255,255,255,.08);}
.k-exam-field-row .ef-label{color:var(--kairos-muted);}
.k-exam-field-row .ef-val{color:var(--kairos-text);}
.k-conf-tag.high{background:rgba(79,209,197,.14); color:var(--kairos-good);}
.k-conf-tag.medium{background:rgba(242,177,52,.14); color:var(--kairos-warn);}
.k-conf-tag.low{background:rgba(255,141,141,.14); color:var(--kairos-danger);}
.k-institutional{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
}
.k-inst-school-logo{background:rgba(255,255,255,.92);} /* school logos are drawn for light */
.k-inst-school-name, .k-inst-brand-name, .k-inst-title, .k-inst-meta strong{color:var(--kairos-text);}
.k-inst-school-sub, .k-inst-powered, .k-inst-meta{color:var(--kairos-muted);}
.k-inst-title-row{border-top-color:rgba(255,255,255,.08);}
.k-inst-print-btn{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  color:#04121f;
  border:1px solid transparent;
}
.k-report-footer{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
.k-rf-brand{color:var(--kairos-text);}
.k-rf-provenance{color:rgba(169,163,196,.7);}

/* ---------- 15 · Mobile bottom nav (tm-*) ---------- */
.tm-bottom-nav{
  background:rgba(13,10,31,.94);
  border-top:1px solid var(--kairos-border);
  box-shadow:0 -8px 24px rgba(0,0,0,.45);
}
.tm-tab, .tm-more, .tm-more > summary{color:var(--kairos-muted);}
.tm-tab.active, .tm-tab[aria-current="page"], .tm-more[open] > summary{color:var(--kairos-tetra);}
.tm-more-sheet{
  background:#161130;
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-shadow);
}
.tm-more-sheet a{color:var(--kairos-text);}
.tm-more-sheet a:active{background:rgba(77,182,255,.12);}

/* ---------- 16 · Form focus + dark <option> in overlays ----------
   (.page-content select option is already handled by the shell part;
   these cover selects living inside modals appended outside it.) */
.att-field input:focus, .att-field select:focus, .att-status-sel:focus,
.modal-box input:focus, .schedule-form input:focus, .schedule-form select:focus,
.schedule-form textarea:focus, .ai-prompt:focus, .ai-select:focus, .field-input:focus{
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 3px rgba(77,182,255,.18);
}
.att-field select option, .att-status-sel option, .sort-wrap select option,
.schedule-form select option, .ai-select option, .lassign0-opt select option,
.field-input option{
  background:#161130;
  color:var(--kairos-text);
}

/* ---------- 17 · Skeletons — dark shimmer ---------- */
.skel-line, .skel-bar, .skel-pill, .skel-avatar, .att-skeleton, .lassign0-skel-line{
  background:linear-gradient(90deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.10) 50%, rgba(255,255,255,.04) 100%);
  background-size:200% 100%;
}
.skel-content-card, .skel-interv-row, .skel-card, .lassign0-skel-card{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.09);
}

/* ============================================================
 * Course-detail tasks family (list / create-task / builder /
 * magic-upload / digital-preview / task-detail / OCR flow /
 * student reports)
 * ------------------------------------------------------------
 * Themes the page-local classes of
 * /tetrahedron/course-detail/tasks/** onto the Kairos glass
 * identity. Same specificity as the inline rules — this file
 * loads last, so equal-specificity ties resolve here.
 *
 * Deliberately LEFT LIGHT (document semantics):
 *   .sheet-paper / .preview-stage        (scanned-sheet mock, overview)
 *   .preview-frame                        (PDF/resource render surfaces)
 *   .zone-modal-canvas-wrap / .mu-rcw-pdf-page (PDF canvas)
 *   .mu-rcw-answer-sheet                  (printable answer sheet mock)
 *   .evidence .preview                    (student submission photo)
 * These keep their paper look and are framed with a glass border.
 * ============================================================ */

/* ---------- Token bridge for the OCR sub-pages ----------
   ocr-entry / ocr-mapping / score-review / teacher-confirmation define
   --good/--warn/--danger soft fills plus *-text / *-border companions.
   The skin :root already remaps the fills; complete the companions. */
:root{
  --good-text:var(--kairos-good);
  --good-border:rgba(79,209,197,.38);
  --warn-text:var(--kairos-warn);
  --warn-border:rgba(242,177,52,.38);
  --danger-text:var(--kairos-danger);
  --danger-border:rgba(255,141,141,.38);
}

/* Dark-friendly native dropdown items everywhere in the family. */
select option{background:#161130; color:var(--kairos-text);}

/* ---------- Course header band + tabs (tasks list) ---------- */
.kw-hero2{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  box-shadow:var(--kairos-inset);
}
.kw-hero2__ops{background:rgba(13,10,31,.55); border-top:1px solid var(--kairos-border);}
.kw-hero2__op{background:var(--kairos-glass); border:1px solid var(--kairos-border);}
.kw-hero2__op .lbl{color:var(--kairos-muted);}
.kw-hero2__op b{color:var(--kairos-text);}
.ch-tabs{background:rgba(22,17,48,.72); border-top:1px solid var(--kairos-border);}
.ch-tab{color:var(--kairos-muted);}
.ch-tab:hover{color:var(--kairos-tetra);}
.ch-tab.active{color:var(--kairos-tetra); border-bottom-color:var(--kairos-tetra);}
.ch-action{background:var(--kairos-glass); border:1px solid var(--kairos-border); color:var(--kairos-text); box-shadow:var(--kairos-inset);}
.ch-action:hover{background:rgba(77,182,255,.10); border-color:var(--kairos-tetra);}
.ch-action.primary{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent; color:#04121f;
}
.ch-action.primary:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%); border-color:transparent;}

/* Intelligence side panel (kw-copilot) */
.kw-copilot__head{background:linear-gradient(135deg,rgba(124,77,255,.35),rgba(47,155,239,.30)); color:#fff;}
.kw-ci .kw-copilot__head{background:rgba(255,255,255,.04); color:var(--kairos-text); border-bottom:1px solid var(--kairos-border);}
.kw-copilot__row{border-top:1px solid rgba(255,255,255,.08); color:var(--kairos-text);}
.kw-copilot__row:hover{background:rgba(77,182,255,.08);}
.kw-copilot__ico{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.kw-copilot__row-t{color:var(--kairos-text);}
.kw-copilot__row-s{color:var(--kairos-muted);}
.kw-copilot__val{color:var(--kairos-tetra);}
.kw-ci .kw-copilot__logo{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.kw-ci .kw-copilot__title{color:var(--kairos-text);}
.kw-ci .kw-copilot__sub, .kw-ci__foot{color:var(--kairos-muted);}
.kw-ci__foot{border-top:1px solid rgba(255,255,255,.08);}

/* ---------- Primary glass surfaces (page panels, unions) ---------- */
.panel, .setup-panel, .form-hero, .gate-panel, .no-course, .no-assignment,
.page-context, .ctx-strip, .mapping-grid-section, .cta-area,
.studio-header, .studio-metrics, .overview-card, .resource-carousel,
.submissions-panel, .viewer-grid .preview-panel, .viewer-grid .inspector-panel,
.step, .qcard, .k-cmdbar, .cc-diagnostics,
#kDocumentFlowPanel, #kMuAutoRead, #kMagicUploadStatusPanel,
.mu-extraction-details, .mu-detected-questions, .mu-akr, .mu-rcw-editor,
.mu-rcw-tabs, .mu-rcw-builder, .mu-gen-panel, .mu-assign-info, .mu-readiness,
#kCtxFromSetup, #kMagicUploadVisibleDebug, #kMuDiagnosticsDetails{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
.panel h2, .panel h3, .panel-head h2, .section h2, .setup-panel h2,
.form-hero h1, .no-course h2, .no-assignment h2, .gate-panel h2,
.page-context h1, .mapping-grid-section h2, .cta-area h2,
.section-title, .side-panel h3, .builder-group-title h3,
.qcard h2.q-prompt, .drop-zone h3, .zone-modal-head strong{color:var(--kairos-text);}
.panel p.lead, .panel-head p, .page-context p, .mapping-grid-desc,
.form-hero p, .no-course p, .no-assignment p, .cta-area p,
.setup-copy, .builder-group-title .sub, .lead-muted, .form-caption,
.toolbar-note, .hint, .field .hint, .gate-meta, .page-note, .page-zone-note,
.runtime-empty p, .runtime-empty ul, .btn-note{color:var(--kairos-muted);}
.section h2 small{color:var(--kairos-muted);}
.form-hero-icon{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.hero-mark, .task-mark{background:rgba(255,255,255,.08); border:1px solid var(--kairos-border); color:var(--kairos-tetra);}
.cta-area{border-color:rgba(77,182,255,.35);}

/* Builder white-card hero variant + command bar */
.hero-subline{color:var(--kairos-muted);}
.hero-subline .dot{background:rgba(169,163,196,.6);}
.k-cmdbar{backdrop-filter:saturate(140%) blur(8px);}
.k-cmdbar-status{background:rgba(77,182,255,.12); color:var(--kairos-tetra); border:1px solid rgba(77,182,255,.35);}
.k-cmdbar-status .dot{background:var(--kairos-tetra);}
.k-cmdbar-summary{color:var(--kairos-muted);}
.k-cmdbar-summary .sep{background:rgba(169,163,196,.5);}
.k-cmdbar #kBtnPublishAssign{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent; color:#04121f;
}
.k-cmdbar #kBtnPublishAssign:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%); border-color:transparent;}
.pr-rail > .pr-rail-head .pr-rail-eyebrow{color:var(--kairos-tetra);}
.pr-rail > .pr-rail-head h2, .pr-rail > .panel > h2{color:var(--kairos-text);}
.pr-rail > .pr-rail-head .pr-rail-sub{color:var(--kairos-muted);}

/* ---------- Nested sub-cards (unions) ---------- */
.task-card, .signal-card, .kpi-card, .side-item, .note-card, .student-card,
.detail-card, .queue-item, .question-row, .score-mini, .score-card,
.perf-meta .perf-row, .id-grid, .launch-card, .intent-card, .qstruct-card,
.question-card, .summary-item, .course-choice, .file-info,
.cc-diagnostics-item, .step2-info-list li, .downstream-card, .downstream-panel,
.downstream-option, .inspector-row, .metric-tile, .route-card, .small-preview,
.grades-metric-tile, .studio-metric, .eg-card, .summary-card,
.hotspot-card, .issue-card, .thumb-card, .mar-card, .zone-page-item,
.zone-block-row, .akr-item, .note-box, .mini-help, .actions-hint,
.setup-toggle, .question-type-panel, .diag-details, .diag-item,
.overview-card .metric-tile, .ops-table-wrap, .student-row, .ss-row,
.mu-setup-fields, #kMuSourceMaterialsHead, #kMuAnswerSheetReadiness,
#kMixedSourcePdfCard, #kMixedQuestionRuntime, #kMixedReadingCard,
#kStatusBlock, .doc-stage, .doc-output-card, .doc-config-group,
.doc-preview-card, .workflow-crumbs, .mu-mode-bar, .mu-left-aside,
.mu-as-collapse, .mu-ps-block, .mu-rst, .as-hint,
#kActivitySetup .as-chip, #kActivitySetup .as-card, #kActivitySetup .as-module,
#kActivitySetup .as-pdf2, #kActivitySetup .as-pdf2-file, #kActivitySetup .as-pdf2-count,
#kActivitySetup .as-usecase, #kActivitySetup .as-flow, #kActivitySetup .sw-field,
#kContextActions .ca-row, #kCtxFromSetup .ctx-col,
.mu-detected-questions .mu-dq-card, .mu-detected-questions .mu-dq-row,
.mu-extraction-details .mu-ext-row, .mu-akr .akr-item,
.mu-rcw-answer-sheet-toolbar, .mu-ps-pages, .mu-ps-status{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.10);
  color:var(--kairos-text);
  box-shadow:none;
}
.task-card:hover, .queue-item:hover, .launch-card:hover, .intent-card:hover,
.qstruct-card:hover, .question-card:hover, .downstream-option:hover,
#kActivitySetup .as-card:hover, .doc-output-card:hover, .page-thumb:hover,
.workflow-tab:hover, .tool-action:hover, .mu-rcw-builder .qbp-row:hover{
  background:rgba(77,182,255,.08);
  border-color:rgba(77,182,255,.45);
  box-shadow:none;
}
.queue-item.active, .launch-card.selected, .qstruct-card.selected,
.downstream-option.selected, .question-card.selected,
#kActivitySetup .as-card.is-selected, .doc-output-card.is-on,
.page-thumb.active, .carousel-tile.is-selected{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.5);
  box-shadow:none;
}
/* generic label/value + title/sub text inside sub-cards */
.kpi-card .label, .kpi-card .meta, .kpi-card .k, .summary-card .label,
.summary-card .k, .score-card .k, .score-mini .k, .perf-meta .perf-row .k,
.id-grid .k, .ctx-cell .k, .metric-tile .k, .inspector-row .k,
.diag-item .k, .cc-diagnostics-item .k, .sc-label, .result-k,
.grades-metric-tile .lbl, .grades-metric-tile .sub, .eg-l,
.hero-stat .label, .settings-table .k, #kActivitySetup .as-chip .k,
#kCtxFromSetup .ctx-col .ctx-k, .mu-field > label, .doc-config-field > label,
#kMuAnswerSheetReadiness .as-row .k, .note-label, .ds-section-label,
.manual-pct-wrap .label, .manual-pct-wrap .help, .qr-points-max,
.detected-hint, .barcode-hint, .mgrid-prompt, .mgrid-status-cell,
.sk-sub, #kMuAutoRead .mar-head .lead, .mu-rr-mini-meta .chip{color:var(--kairos-muted);}
.kpi-card .value, .summary-card .value, .summary-card .v, .score-card .v,
.score-mini .v, .perf-meta .perf-row .v, .id-grid .v, .ctx-cell .v,
.metric-tile .v, .inspector-row .v, .diag-item .v, .cc-diagnostics-item .v,
.sc-value, .result-v, .grades-metric-tile .num, .eg-v, .hero-stat .value,
.settings-table .v, #kActivitySetup .as-chip .v,
#kMuAnswerSheetReadiness .as-head strong{color:var(--kairos-text);}
.task-card-title, .queue-name, .q-title, .signal-top h3, .detail-card h3,
.note-card h3, .student-name, .ops-student-name, .ss-name, .submissions-name,
.launch-card h3, .intent-card h3, .qstruct-label, .question-title,
.course-choice strong, .file-info strong, .drop-zone strong,
.upload-zone strong, .ak-zone strong, .doc-stage-title, .doc-dropzone strong,
.carousel-tile .lbl, .small-preview-body .lbl, .route-card .label,
.overview-card-title, .studio-title-row h1, .preview-panel-head h2,
.submissions-head h2, .resource-carousel-head h3, .downstream-card .ds-name,
.ec-title, .rs-text h3, .review-summary .rs-text h3,
#kMixedSourcePdfCard .filename, #kMixedSourcePdfCard .count,
#kMuSourceMaterialsHead .sm-title strong, .rr-summary strong,
.mu-printable-empty strong, .empty-block strong, .runtime-empty h3,
.intent-modal-head h2, .course-modal-head h2, .ss-head h2,
#kQuickLibraryPicker .picker-head h2, .zone-inspector h3,
#kMuAutoRead .mar-head h2, #kReadingReviewPanel .rr-head h2{color:var(--kairos-text);}
.task-card-sub, .queue-sub, .q-body, .signal-top p, .detail-copy,
.note-card p, .student-sub, .ops-student-sub, .ss-sub, .ss-mini,
.submissions-sub, .launch-card p, .intent-card p, .course-choice span,
.file-info span, .drop-zone p, .upload-zone p, .ak-zone p,
.doc-stage-body, .carousel-tile .sub, .small-preview-body .sub,
.route-card .sub, .overview-card .sub, .overview-card h3,
.preview-meta, .submissions-head .sub, .resource-carousel-head .sub,
.ec-desc, .rs-text p, .review-summary .rs-text p,
.intent-modal-head p, .course-modal-head p, .ss-head p,
#kQuickLibraryPicker .picker-head p, .zone-inspector .mini-note,
#kDocumentFlowPanel .panel-head .sub, #kMixedRuntimeBanner .sub,
.mu-mode-banner .sub, #kMuSourceMaterialsHead .sm-title span,
.downstream-head p, .downstream-note, .zone-editor-inline-note,
.question-meta, .zone-page-item .zpi-meta, .qedit-hint, .qedit-soon-row,
#kActivitySetup .as-sub, #kActivitySetup .as-card .desc,
#kActivitySetup .as-note, #kActivitySetup .sw-sub,
#kActivitySetup .as-pdf2-status, #kActivitySetup .as-pdf2-foot,
#kActivitySetup .as-dropzone small, #kActivitySetup .as-pdf2-drop small,
.mgrid-finalize-hint, .mapping-grid-empty, .navrow .nav-progress,
.mu-mode-bar .mu-mode-label, .mu-mode-bar .mu-mode-hint,
.mu-gen-panel .mu-gen-hint, .mu-gen-panel label, .mu-gen-panel .mu-gen-status,
.mu-readiness .mr-hint, .mu-readiness .mr-row .mr-meta, .rcw-hint,
.mu-rst .rst-hint, .mu-akr .akr-item .k, .mu-dq-source,
.mu-detected-questions .mu-dq-card .field-row label,
.mu-ps-block .field-row label, .mu-ps-page-btn-meta,
.evidence .meta, .evidence .meta .row .k, .qreview-table .none,
.checklist-sub, .soc-fact-label, .ai-feedback, .placeholder-card{color:var(--kairos-muted);}
.evidence .meta .row .v, .qreview-table .detected, .soc-fact-value,
.mu-dq-prompt, .mu-detected-questions .mu-dq-choices,
.mu-ps-block .field-row textarea, .zone-block-label,
.zone-page-item .zpi-title, .doc-output-card .lbl, .doc-preview-card .lbl,
.status-legend-row, .status-legend-row .v, .rr-summary,
#kMagicUploadVisibleDebug .vd-row .vd-val, .srow-label,
.mu-readiness .mr-row, #kActivitySetup .as-usecase b,
#kActivitySetup .as-pdf2-head strong, .mu-ps-status strong,
.opt-value, .qcard .progress-row .pts{color:var(--kairos-text);}
.qcard .progress-row{color:var(--kairos-muted);}
.qcard .progress-row .pts{color:var(--kairos-tetra);}
.status-legend-row .lbl, .status-donut-center .lbl, .srow-text,
#kMagicUploadVisibleDebug .vd-row .vd-key, .mu-ext-chars,
#kMagicUploadVisibleDebug .vd-mode-explanation{color:var(--kairos-muted);}
.status-donut-center .num{color:var(--kairos-text);}
/* Donut base ring + hole (JS regenerates the conic stops inline) */
.status-donut{background:conic-gradient(rgba(255,255,255,.12) 0 100%); box-shadow:inset 0 0 0 1px var(--kairos-border);}
.status-donut::after{background:#161130; box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);}

/* ---------- Chips / pills / badges (state unions) ---------- */
.mini-chip, .ops-chip, .tag, .cc-chip .cc-chip-id, .launch-card .badge,
.workflow-crumb, .step-pill, .analysis-chip.idle, .conf-badge,
.gs-pill, .state-badge, .status-pill, .grading-status, .ec-status,
.soc-state-pill, .rr-confidence, .mu-rr-mini-meta .chip,
#kMixedReadingCard .conf, #kMixedReadingCard .chip,
#kMixedSourcePdfCard .meta .chip, .doc-stage-status,
#kQuickLibraryPicker .picker-chip, .zone-block-pill, .zone-inspector .chip,
.page-thumb .page-badge, .zone-page-item .zpi-status, .ds-badge,
.mu-mode-banner .chip, .rcw-state, .akr-state, .review-pill,
.mu-ext-state, .mu-dq-state, .mu-ps-block-type, .mu-ps-block-review,
#kMuAnswerSheetReadiness .as-state, #kMuSourceMaterialsHead .sm-req,
.left-aside-state, #kMagicUploadVisibleDebug .vd-chip,
.mu-rcw-builder .qbp-pill, .mu-rcw-tabs .rcw-tab-count,
#kActivitySetup .as-pill-static, #kActivitySetup .as-flow-step,
.checklist li.blocked, .downstream-card .ds-badge.waiting{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-muted);
}
/* accent / soft / info states → azure */
.pill.soft, .pill.tone-soft, .pill.muted, .ss-chip.soft, .ops-chip.soft,
.cc-chip, .router-kicker, .studio-eyebrow, .intent-modal-head .eyebrow,
.intent-card .chips .chip, .step-pill.active, .workflow-crumb.is-active,
.workflow-tab.active, .context-chip, .gs-pill.pending, .gs-pill.graded,
.gs-pill.scored, .analysis-chip.idle, .k-section-chip, #kMixedSourceChip,
.mini-chip, .guided-card .chip, .guided-card .kicker, .doc-stage-num,
.page-thumb .page-badge, .zone-block-pill, .zone-inspector .chip,
.zone-page-item .zpi-status, .ec-status.eventual, .ec-badge.eventual,
.score-table .badge-xs.manual, .soc-fact-value.neutral,
#kMixedSourcePdfCard .meta .chip.info, .mu-dq-type,
.mu-detected-questions .mu-dq-card-head .num-pill,
.mu-detected-questions .mu-dq-card-head .review-pill.teacher_edited,
.mu-ps-block-type, .mu-ps-active-head, .mu-rst .rst-pill,
#kMuAutoRead .mar-output-chip, #kMagicUploadVisibleDebug .vd-mode-chip,
#kMuAnswerSheetReadiness .as-state.ready_to_prepare,
.mu-detected-questions .mu-dq-page-head, .akr-state.parsing,
#kActivitySetup .as-pdf2-badge, #kActivitySetup .as-pdf2-file-size,
#kActivitySetup .as-genchip, #kActivitySetup .sw-intent-k,
.mu-rcw-tabs .rcw-tab-count, .downstream-pill{
  background:rgba(77,182,255,.14);
  border-color:rgba(77,182,255,.35);
  color:var(--kairos-tetra);
}
.mu-ps-active-head strong, .mu-ps-active-head span,
.mu-detected-questions .mu-dq-page-count, .mu-dq-num,
.mu-detected-questions .mu-dq-choice-key{color:var(--kairos-tetra);}
/* good */
.pill.good, .pill.tone-good, .ss-chip.good, .ops-chip.good,
.summary-card.good, .summary-card .value.good, .state-assigned,
.launch-card .status-pill.ready, .guided-card .chip.good,
.workflow-crumb.is-done, .conf-high, .analysis-chip.ready,
.mgrid-status-corrected, .grading-status.is-confirmed,
.ec-status.confirmed, .ec-badge.sync, .score-table .badge-xs.auto,
#kMixedReadingCard .conf.high, #kMixedReadingCard .chip.good,
#kMixedSourcePdfCard .meta .chip.good, .doc-stage-status.is-done,
.rr-confidence.high, .mu-rr-mini-meta .chip.good, .rr-accept-tag,
.mu-ext-state.is-ok, .mu-ext-status.is-ok, .mu-dq-state.accepted,
.mu-ps-block-review.review-teacher_confirmed, .akr-state.match,
#kMuAnswerSheetReadiness .as-state.prepared, .as-hint.good,
#kMuSourceMaterialsHead .sm-req.optional, .left-aside-state.ok,
#kMagicUploadVisibleDebug .vd-chip.good, .mu-ws-chip.ready,
.mu-rcw-builder .qbp-pill.ok, .mu-rcw-builder .qbp-count,
.mu-detected-questions .mu-dq-card-head .ak-pill, .mu-ps-block .ak-pill,
.mu-ps-block-type.type-word_bank, .mu-ps-wb-tag,
#kActivitySetup .sw-status.is-live, .ds-badge.ready,
.downstream-card .ds-badge.ready, #kMuAutoRead .mar-card .count-pill.good,
#kMuAutoRead .mar-card .conf.high, #kMuAutoRead .mar-output-chip.printable,
.mu-assign-info > .ai-head .ai-status.ok, .mu-readiness .mr-ready.ok,
.rcw-state.saved, .soc-state-pill.confirmed{
  background:rgba(79,209,197,.14);
  border-color:rgba(79,209,197,.35);
  color:var(--kairos-good);
}
/* warn */
.pill.warn, .pill.tone-warn, .ss-chip.warn, .ops-chip.warn,
.summary-card.warn, .summary-card .value.warn, .state-draft,
.launch-card .status-pill.partial, .mini-chip.is-pending, .qedit-soon,
.conf-mid, .analysis-chip.working, .grading-status.is-graded,
.ec-status.queued, .score-table .badge-xs.adj,
#kMixedReadingCard .conf.medium, #kMixedReadingCard .chip.warn,
#kMixedReadingCard .warn-pill, .doc-stage-status.is-pending,
.rr-confidence.medium, .mu-rr-mini-meta .chip.warn,
.mu-ext-state.is-warn, .mu-ext-status.is-warn, .mu-dq-state.is-empty,
.mu-dq-state.worksheet, .mu-ps-block-review.review-needs_review,
.akr-state.mismatch, #kMuAnswerSheetReadiness .as-state.not_ready,
.as-hint.warn, #kMuSourceMaterialsHead .sm-req.recommended,
.left-aside-state.warn, .mu-ws-chip.notready, .rcw-state.dirty,
.mu-rcw-builder .qbp-pill.warn, .mu-rcw-tabs .rcw-tab-count.warn,
.mu-detected-questions .mu-dq-card-head .review-pill.needs_review,
.mu-ps-block-type.type-instruction, #kActivitySetup .sw-status.is-preview,
#kActivitySetup .as-pdf2-unsupported, #kActivitySetup .as-reviewnote,
#kMuAutoRead .mar-card .count-pill.zero, #kMuAutoRead .mar-card .conf.medium,
#kMuAutoRead .mar-output-chip.scan_paper, .mu-rst .rst-state,
#kMagicUploadVisibleDebug .vd-mode-chip.scan_paper,
#kMagicUploadVisibleDebug .vd-can-publish.no,
.mu-assign-info > .ai-head .ai-status, .step.analyzing .step-index{
  background:rgba(242,177,52,.14);
  border-color:rgba(242,177,52,.35);
  color:var(--kairos-warn);
}
/* danger */
.pill.danger, .pill.tone-danger, .ops-chip.danger, .conf-low,
.rr-confidence.low, .mu-rr-mini-meta .chip.bad, .mu-ext-state.is-bad,
.mu-ext-status.is-bad, #kMixedReadingCard .conf.low,
#kMuSourceMaterialsHead .sm-req.required, .mu-rcw-builder .qbp-pill.bad,
.mu-rcw-tabs .rcw-tab-count.bad, #kMagicUploadVisibleDebug .vd-chip.bad,
.mu-detected-questions .mu-dq-card-head .ak-pill.missing,
.mu-ps-block .ak-pill.missing, .mu-ps-block-type.type-answer_area,
#kMuAutoRead .mar-card .conf.low, .akr-state.error, .gs-pill.blocked,
.soc-state-pill.review-req{
  background:rgba(255,141,141,.14);
  border-color:rgba(255,141,141,.35);
  color:var(--kairos-danger);
}
.conf-blank{background:rgba(255,255,255,.06); color:var(--kairos-muted);}
/* value-only state accents */
.grades-metric-tile.ok .num, .metric-tile.good .v, .studio-metric.good strong,
.eg-card.ocr-good .eg-v, .summary-card.good .v, .gate-pass, .srow-yes,
#kMagicUploadVisibleDebug .vd-row .vd-val.good, .soc-fact-value.good,
#kMuAnswerSheetReadiness .as-row .v.yes, .mu-ps-status .ok,
#kActivitySetup .as-pdf2-checklist .ck.ok, #kActivitySetup .as-pdf2-note,
#kReadinessPanel .hb-clear, #kPublishWarnings .pw-ok,
.mu-extraction-details .mu-ext-summary strong{color:var(--kairos-good);}
.grades-metric-tile.warn .num, .metric-tile.warn .v, .studio-metric.warn strong,
.eg-card.ocr-warn .eg-v, .eg-card.review-req .eg-v, .summary-card.warn .v,
.srow-warn, .srow-loading, #kMagicUploadVisibleDebug .vd-row .vd-val.warn,
.soc-fact-value.warn, #kMuAnswerSheetReadiness .as-row .v.warn,
.mu-ps-status .warn, #kActivitySetup .as-pdf2-checklist .ck.no,
#kCtxFromSetup .ctx-col.is-deferred li .dot{color:var(--kairos-warn);}
.grades-metric-tile.bad .num, .metric-tile.danger .v, .studio-metric.danger strong,
.eg-card.ocr-no .eg-v, .srow-no, .gate-failure, .mu-ext-row-error,
#kMagicUploadVisibleDebug .vd-row .vd-val.bad, #kMuAnswerSheetReadiness .as-row .v.no,
#kActivitySetup .as-pdf2-status.is-error, #kReadinessPanel .hb-title,
#kReadinessPanel .hard-blockers-list li, .fi-clear:hover,
#kCtxFromSetup .ctx-col.is-needs li .dot{color:var(--kairos-danger);}
.metric-tile.soft .v, .studio-metric.soft strong, .sc-value.mono,
.mgrid-q, .scan-page-header, .preview-panel-eyebrow, .cc-band-eyebrow,
#kActivitySetup .as-eyebrow, #kActivitySetup .sw-label,
#kActivitySetup .sw-active-tag, #kActivitySetup .sw-field-k,
#kActivitySetup .sw-intent-v, .k-section-label, .k-section-dz-label,
.doc-config-group-title, .mu-gen-panel h3, .mu-readiness h3,
.mu-assign-info > .ai-head strong, .mu-akr > summary strong,
.mu-left-aside > summary strong, .mu-as-collapse > summary strong,
.mu-ext-page, .mu-rcw-pdf-page .pp-label, .mu-rcw-builder .qbp-head strong,
.mu-rcw-builder .qbp-row .qbp-q, .mu-dq-summary strong,
#kCtxFromSetup .ctx-badge, #kCtxFromSetup .ctx-col li .dot,
#kLessonCtxV3 .lc-k, #kLessonCtxV3 .lc-title, .opt-label,
.barcode-hint code, .note-card code, .ocr-ctx-strip code{color:var(--kairos-tetra);}
.mgrid-status-ok{color:var(--kairos-good);}
.srow-pending, .sc-step.locked, .state-sep, .sc-arrow,
.workflow-crumb-sep, #kActivitySetup .as-flow-arrow{color:rgba(169,163,196,.5);}

/* ---------- Buttons (unions) ---------- */
.btn-secondary, .load-more-btn, .toggle-btn, .layer-toggle, .edit-zones-btn,
.question-tool, .k-section-tool, .k-q2-btn, .doc-action-btn.secondary,
.mgrid-btn, .mu-rr-toggle, .rr-controls .rr-btn, #kMuAutoRead .mar-btn,
.mu-dq-btn, .rcw-btn, .mu-akr .akr-btn, .card-btn, .zone-modal-mode,
.mu-ps-page-btn, .mu-ps-block-reorder button, .mu-mode-bar .mu-mode-pill,
.mu-gen-panel .mu-gen-actions button, .intent-modal-close, .intent-modal-foot button,
.ss-btn, .ss-close, .fi-clear, #kQuickLibraryPicker .picker-close,
.zone-modal-close, .zone-block-mini, .page-thumb .page-toggle,
.studio-title-edit, .delivery-mode-chip, .studio-actions .hero-action,
.action-secondary, .route-card .cta, .next-action-card .cta-row .btn,
.mu-detected-questions .mu-dq-card-head .reorder button,
#kMagicUploadStatusPanel .mu-status-toggle, .btn.muted,
#kMuAssignmentInfoCard .ai-head .ai-toggle, .guided-card .change-link,
.workflow-tab, .tool-action{
  background:var(--kairos-glass);
  border-color:var(--kairos-border);
  color:var(--kairos-text);
}
.btn-secondary:hover, .load-more-btn:hover, .question-tool:hover,
.k-section-tool:hover, .k-q2-btn:hover, .mgrid-btn:hover,
.mu-rr-toggle:hover, .rr-controls .rr-btn:hover, #kMuAutoRead .mar-btn:hover,
.mu-dq-btn:hover, .rcw-btn:hover, .mu-akr .akr-btn:hover, .card-btn:hover,
.mu-ps-page-btn:hover, .mu-ps-block-reorder button:hover,
.mu-mode-bar .mu-mode-pill:hover, .intent-modal-close:hover,
.intent-modal-foot button:hover, .studio-title-edit:hover,
.delivery-mode-chip:hover, .studio-actions .hero-action:hover,
.action-secondary:hover, .doc-action-btn.secondary:hover,
.mu-detected-questions .mu-dq-card-head .reorder button:hover,
.guided-card .change-link:hover{
  background:rgba(77,182,255,.10);
  border-color:var(--kairos-tetra);
  color:var(--kairos-text);
  box-shadow:none;
}
.toggle-btn.active, .review-tab.active, .mgrid-btn.selected,
.mu-ps-page-btn.active, .mu-mode-bar .mu-mode-pill.active,
.delivery-mode-chip.selected, .ss-pill.active,
#kQuickLibraryPicker .picker-chip.is-on, .k-q2-btn.k-q2-arm[aria-pressed="true"],
.preview-zone-tools .btn.active{
  background:rgba(77,182,255,.16);
  border-color:rgba(77,182,255,.4);
  color:var(--kairos-tetra);
}
.btn-primary, .course-choice button, .doc-action-btn, .action-primary,
.rr-controls .rr-btn.primary, .mu-dq-btn.primary, .rcw-btn.primary,
.mu-akr .akr-btn.primary, #kMuAutoRead .mar-continue-primary,
#kMuAnswerSheetReadiness .as-btn, #kMagicUploadVisibleDebug .vd-publish-cta,
#kConfirmBtn, .no-course .btn, .no-assignment .btn,
.route-card .cta.primary, .next-action-card .cta-row .btn.primary,
#kActivitySetup .as-pdf2-extract, .soc-panel .soc-cta{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent;
  color:#04121f;
}
.btn-primary:hover, .course-choice button:hover, .doc-action-btn:hover,
.action-primary:hover, .rr-controls .rr-btn.primary:hover,
.mu-dq-btn.primary:hover, .rcw-btn.primary:hover, .mu-akr .akr-btn.primary:hover,
#kMuAutoRead .mar-continue-primary:hover, #kMuAnswerSheetReadiness .as-btn:hover,
#kMagicUploadVisibleDebug .vd-publish-cta:hover, #kConfirmBtn:hover:not(:disabled),
.no-course .btn:hover, .no-assignment .btn:hover,
#kActivitySetup .as-pdf2-extract:hover, .soc-panel .soc-cta:hover{
  background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);
  border-color:transparent;
  color:#04121f;
}
#kConfirmBtn.loading{background:rgba(77,182,255,.35);}
#kConfirmBtn.proto-mode{background:rgba(242,177,52,.8); border-color:transparent; color:#231703;}
#kConfirmBtn.proto-mode:hover:not(:disabled){background:var(--kairos-warn);}
.btn.btn-warn, .action-warning, .mu-dq-btn.warn{
  background:rgba(242,177,52,.14); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);
}
.btn.btn-warn:hover, .action-warning:hover, .mu-dq-btn.warn:hover{
  background:rgba(242,177,52,.24); border-color:var(--kairos-warn); color:var(--kairos-warn);
}
.btn.danger, .question-tool.k-delete-block, .k-section-tool.danger,
.card-btn.danger, .choice-row .x-btn, .mu-ps-block .x-btn,
.mu-detected-questions .mu-dq-card .choice-row .x-btn{
  background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.4); color:var(--kairos-danger);
}
.question-tool.k-delete-block:hover, .card-btn.danger:hover{
  background:rgba(255,141,141,.22); border-color:var(--kairos-danger);
}
.btn.btn-finalize{background:rgba(79,209,197,.9); border-color:transparent; color:#03211d;}
.btn.btn-finalize:hover{background:var(--kairos-good);}
.rr-controls .rr-btn.good{background:rgba(79,209,197,.16); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
.btn.is-disabled, .action-disabled,
.doc-action-btn[disabled], .doc-action-btn[aria-disabled="true"],
.studio-actions .hero-action[disabled], .studio-actions .hero-action[aria-disabled="true"],
.route-card .cta[aria-disabled="true"], .route-card .cta[disabled],
.next-action-card .cta-row .btn[disabled], .next-action-card .cta-row .btn[aria-disabled="true"],
#kMuAutoRead .mar-continue-primary[disabled], #kMuAnswerSheetReadiness .as-btn[disabled],
#kMagicUploadVisibleDebug .vd-publish-cta[disabled],
#kActivitySetup .as-pdf2-extract:disabled, #kActivitySetup .as-btn-disabled{
  background:rgba(255,255,255,.05);
  border-color:var(--kairos-border);
  color:var(--kairos-muted);
}
.back-link{color:var(--kairos-muted);}
.back-link:hover{color:var(--kairos-tetra);}
.mgrid-clear{background:rgba(255,255,255,.06) !important; color:var(--kairos-muted) !important; border-color:var(--kairos-border) !important;}
.mgrid-clear:hover{background:rgba(255,141,141,.18) !important; border-color:rgba(255,141,141,.45) !important; color:var(--kairos-danger) !important;}
.as-pdf3-insert{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
.as-pdf3-insert:hover:not([disabled]){background:rgba(77,182,255,.2);}
.as-pdf3-status{color:var(--kairos-tetra);}
.as-pdf3-help{color:var(--kairos-muted);}

/* ---------- Inputs / selects / textareas (unions) ---------- */
.field input[type="text"], .field input[type="date"], .field input[type="number"],
.field input[type="url"], .field input[type="file"], .field textarea, .field input,
.setup-fields input[type="text"], .setup-fields input[type="url"],
.qr-input, .qr-points, .manual-pct-input, .note-textarea,
.qinput-numeric, .qinput-text, .qinput-textarea, .barcode-field,
.question-choices .k-choice-input, .zone-field input, .zone-field select,
.zone-field textarea, .question-field input, .question-field select,
.question-field textarea, .mu-field input, .mu-field select, .mu-field textarea,
.doc-config-field input, .doc-config-field select, .mu-rcw-editor textarea,
.mu-gen-panel input, .mu-gen-panel select, .mu-gen-panel textarea,
.mu-assign-info .ai-field input, .mu-assign-info .ai-field select,
.mu-assign-info .ai-field textarea, .mu-akr .akr-item select,
.mu-detected-questions .mu-dq-card .field-row textarea,
.mu-detected-questions .mu-dq-card .field-row input[type="text"],
.mu-detected-questions .mu-dq-card .field-row input[type="number"],
.mu-detected-questions .mu-dq-card .field-row select,
.mu-ps-block .field-row textarea, .mu-ps-block .field-row input[type="text"],
.mu-ps-block .field-row input[type="number"], .mu-ps-block .field-row select,
.mu-ps-block .ak-band select, .mu-detected-questions .mu-dq-card .ak-band select,
#kActivitySetup .as-pane textarea, #kActivitySetup .as-search,
#kQuickLibraryPicker .picker-search, .ncw-search,
.soc-panel .soc-field input, .soc-panel .soc-field select, .soc-panel .soc-field textarea{
  background:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
}
.field input:focus, .field textarea:focus, .field select:focus,
.qr-input:focus, .qr-points:focus, .manual-pct-input:focus,
.note-textarea:focus, .qinput-numeric:focus, .qinput-text:focus,
.qinput-textarea:focus, .barcode-field:focus,
.question-choices .k-choice-input:focus,
.mu-field input:focus, .mu-field select:focus, .mu-field textarea:focus,
.doc-config-field input:focus, .doc-config-field select:focus{
  background:rgba(0,0,0,.34);
  border-color:var(--kairos-tetra);
  box-shadow:0 0 0 3px rgba(77,182,255,.18);
}
.field select{
  background-color:rgba(0,0,0,.28);
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a9a3c4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  /* pre-existing bug found while auditing the library family in dark mode: with no
     repeat/position set, this 12x8 chevron tiled across the whole control instead of
     sitting as a single dropdown caret. */
  background-repeat:no-repeat;
  background-position:right 12px center;
  padding-right:32px;
}
.field select:focus{border-color:var(--kairos-tetra); background-color:rgba(0,0,0,.34);}
.field label, .setup-fields label, .zone-field label, .question-field label,
.toggle-label-group .toggle-label, .doc-config-field.checkbox label,
.qr-options label, .mu-rcw-answer-sheet-toolbar label{color:var(--kairos-text);}
.field .required{color:var(--kairos-tetra);}
.toggle-label-group .toggle-sub{color:var(--kairos-muted);}
.searchbar, .ss-search, .queue-toolbar .searchbar{
  background:var(--kairos-glass);
  border:1px solid var(--kairos-border);
  color:var(--kairos-muted);
  box-shadow:none;
}
.searchbar input, .ss-search input{color:var(--kairos-text); background:transparent;}
.searchbar input::placeholder{color:var(--kairos-muted);}
.qr-input:disabled, .qr-textarea:disabled, .qr-points:disabled,
.qr-options input:disabled, .mu-rcw-editor textarea[readonly]{
  background:rgba(255,255,255,.04); color:var(--kairos-muted);
}
.qr-options input[type=radio], .opt-list input[type=radio],
.doc-output-card input{accent-color:var(--kairos-tetra);}
/* toggle switch */
.k-toggle-slider{background:rgba(255,255,255,.18);}
.k-toggle input:checked ~ .k-toggle-slider{background:var(--kairos-tetra);}
/* option list (digital preview) */
.opt-list li{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.12);}
.opt-list li:hover{background:rgba(77,182,255,.08); border-color:rgba(77,182,255,.4);}
.opt-list li.is-checked{background:rgba(77,182,255,.16); border-color:var(--kairos-tetra);}
.qinput-fallback{background:rgba(255,255,255,.03); border-color:var(--kairos-border); color:var(--kairos-muted);}

/* ---------- Dropzones / uploaders ---------- */
.drop-zone, .upload-zone, .doc-dropzone, .k-section-dropzone,
#kActivitySetup .as-dropzone, #kActivitySetup .as-pdf2-drop,
.mu-detected-questions .mu-dq-card .choices-add, .mu-ps-block .choices-add,
.mu-detected-questions .mu-dq-add-manual, .mu-rcw-as-more{
  background:rgba(77,182,255,.06);
  border-color:rgba(77,182,255,.35);
  color:var(--kairos-muted);
}
.drop-zone:hover, .drop-zone.drag-over, .upload-zone:hover,
#kActivitySetup .as-pdf2-drop.is-drag{
  background:rgba(77,182,255,.12);
  border-color:var(--kairos-tetra);
}
.drop-zone.has-file, .upload-zone.has-file, .ak-zone.has-key{
  background:rgba(79,209,197,.10);
  border-color:rgba(79,209,197,.5);
}
.ak-zone{background:rgba(79,209,197,.07); border-color:rgba(79,209,197,.35);}
#kStructurePanel .ak-zone{background:rgba(77,182,255,.06); border-color:rgba(77,182,255,.35);}
#kFileInfo{background:rgba(79,209,197,.10); border:1px solid rgba(79,209,197,.35);}
.fi-name{color:var(--kairos-good);}
.fi-meta{color:var(--kairos-muted);}
.doc-attached{background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
.file-preview-img{border-color:var(--kairos-border);}
#kActivitySetup .as-mini-card{background:rgba(255,255,255,.03); border-color:var(--kairos-border); color:var(--kairos-muted);}

/* ---------- Empty / dashed states ---------- */
.empty-block, .runtime-empty, .card-empty-note, .submissions-empty,
.small-preview-empty, .setup-chunk, .question-note, .qedit-ph,
.k-section-note, .zone-block-list-empty, .mu-printable-empty,
.mu-diag-empty, .mu-ext-empty, .mu-dq-empty, .akr-empty, .rcw-empty,
#kQuickLibraryPicker .picker-empty, .mu-dq-ai-row, .soc-panel .soc-note{
  background:rgba(255,255,255,.03);
  border-color:var(--kairos-border);
  color:var(--kairos-muted);
}
.mu-dq-empty.is-warn{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);}
.empty-state{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35); color:var(--kairos-warn);}
.empty-state h3{color:var(--kairos-warn);}
.note-box strong, .mu-dq-ai-row strong{color:var(--kairos-text);}

/* ---------- Notices / banners / strips ---------- */
.type-note, .notice, .framing-note.info, .event-chain-panel,
.ocr-unscored-note, .soc-prompt, #kMixedRuntimeBanner, .qedit-preview,
.qstruct-guide, #kActivitySetup .sw-intent, #kLessonCtxV3{
  background:rgba(77,182,255,.08);
  border-color:rgba(77,182,255,.3);
  color:var(--kairos-text);
}
#kMixedRuntimeBanner, #kLessonCtxV3{color:var(--kairos-text);}
#kMixedRuntimeBanner .sub{color:var(--kairos-muted);}
.qstruct-guide, .qedit-preview{color:var(--kairos-tetra);}
.framing-note, .ocr-proto-notice, .sr-proto-note, .proto-warn,
.source-notice, .inspector-teacher-block, #kEvalDeliveryPanel .ed-warn,
.rr-warning, #kMuAutoRead .mar-warn, .mu-ext-fallback, .mu-akr .akr-banner,
#kMagicUploadVisibleDebug .vd-pr-failure, #kActivitySetup .as-reviewnote,
.as-pdf3-review, #kPublishWarnings .pw-row, #kContextActions .ca-warn,
.review-summary{
  background:rgba(242,177,52,.10);
  border-color:rgba(242,177,52,.35);
  color:var(--kairos-warn);
}
.source-notice strong, .framing-note strong,
.inspector-teacher-block a{color:var(--kairos-warn);}
#kPublishWarnings .pw-row-head, #kPublishWarnings .pw-text{color:var(--kairos-warn);}
#kPublishWarnings .pw-row.pw-clear, #kContextActions .ca-row.is-ready,
.lassign1-banner, .rr-no-warnings, .mu-akr .akr-banner.match,
.review-summary.zero{
  background:rgba(79,209,197,.10);
  border-color:rgba(79,209,197,.35);
  color:var(--kairos-good);
}
.lassign1-banner{border-left:4px solid var(--kairos-good);}
.lassign1-banner strong, .lassign1-banner .lassign1-banner-sub,
#kPublishWarnings .pw-row.pw-clear .pw-row-head,
#kPublishWarnings .pw-row.pw-clear .pw-text{color:var(--kairos-good);}
.rr-warning.severe, .mu-ext-error, #kMuAutoRead .mar-warn.severe,
.mu-akr .akr-banner.error, #kContextActions .ca-row.is-warn{
  background:rgba(255,141,141,.10);
  border-color:rgba(255,141,141,.35);
  color:var(--kairos-danger);
}
#kContextActions .ca-row.is-warn{color:var(--kairos-text);}
#kContextActions .ca-row-head{color:var(--kairos-text);}
#kContextActions .ca-text{color:var(--kairos-muted);}
#kContextActions .ca-cta{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
.ocr-ctx-strip, .sr-ctx-strip{background:rgba(124,77,255,.10); border-color:rgba(124,77,255,.35); color:var(--kairos-purple-soft);}
.ocr-ctx-strip code, .sr-ctx-strip code{background:rgba(0,0,0,.3); color:var(--kairos-text);}
.ai-feedback, .placeholder-card{background:rgba(124,77,255,.08); border-color:rgba(124,77,255,.3); color:var(--kairos-purple-soft);}
/* gate / resolve / result / auth strips (state-driven) */
.gate-banner.loading, .resolve-strip.resolving{background:rgba(77,182,255,.10); border-color:rgba(77,182,255,.35); color:var(--kairos-tetra);}
.gate-banner.ok, .resolve-strip.ok{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.gate-banner.blocked, .resolve-strip.error{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.38); color:var(--kairos-danger);}
.success-panel{background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.38);}
.success-panel h3, .success-panel p, .result-k{color:var(--kairos-good);}
.result-v{color:var(--kairos-text);}
.result-panel.success{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.result-panel.error{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.38); color:var(--kairos-danger);}
.result-fields li::before{color:var(--kairos-good);}
.result-fields.err li::before{color:var(--kairos-danger);}
.auth-strip.signed-in, .authz-strip.authorized{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.auth-strip.signed-out, .authz-strip.not-authorized{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.38); color:var(--kairos-danger);}
.auth-strip.checking, .authz-strip.checking{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-muted);}
.authz-strip.proto, .authz-strip.error{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.38); color:var(--kairos-warn);}
.ocr-manual-banner.good{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.ocr-manual-banner.warn{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.38); color:var(--kairos-warn);}
.ocr-manual-banner.danger{background:rgba(255,141,141,.12); border-color:rgba(255,141,141,.38); color:var(--kairos-danger);}
.grading-locked-banner{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.btn.ui-only::after{color:var(--kairos-warn);}
.downstream-card .ds-integration-note{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-muted);}
.downstream-card .ds-fields li{color:var(--kairos-muted);}
.downstream-card .ds-fields li::before{color:rgba(169,163,196,.6);}

/* Magic-upload mode banners */
.mu-mode-banner{background:rgba(255,255,255,.04); border-color:var(--kairos-border);}
.mu-mode-banner .eyebrow{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.mu-mode-banner .lead{color:var(--kairos-text);}
.mu-mode-banner .chip{background:rgba(255,255,255,.08); border-color:var(--kairos-border); color:var(--kairos-text);}
.mu-mode-banner.mode-printable{background:linear-gradient(135deg,rgba(242,177,52,.14),rgba(242,177,52,.06)); border-color:rgba(242,177,52,.4);}
.mu-mode-banner.mode-printable .eyebrow{background:rgba(242,177,52,.16); color:var(--kairos-warn);}
.mu-mode-banner.mode-mixed{background:linear-gradient(135deg,rgba(124,77,255,.16),rgba(124,77,255,.06)); border-color:rgba(124,77,255,.4);}
.mu-mode-banner.mode-mixed .eyebrow{background:rgba(124,77,255,.18); color:var(--kairos-purple-soft);}
.mu-mode-banner.mode-scan{background:linear-gradient(135deg,rgba(77,182,255,.16),rgba(77,182,255,.06)); border-color:rgba(77,182,255,.4);}
.mu-mode-banner.mode-scan .eyebrow{background:rgba(77,182,255,.16); color:var(--kairos-tetra);}
.mu-mixed-flow{background:linear-gradient(135deg,rgba(124,77,255,.16),rgba(77,182,255,.10)); border-color:rgba(124,77,255,.4);}
.mu-mixed-flow .lead{color:var(--kairos-purple-soft);}
.mu-mixed-flow .sub{color:var(--kairos-muted);}
.mu-mixed-flow .pulse{background:var(--kairos-tetra);}
.runtime-card.ocr{background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.35);}
.runtime-card.digital{background:rgba(77,182,255,.10); border-color:rgba(77,182,255,.35);}
.runtime-card.hybrid{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35);}
.runtime-card.ocr .rc-label{color:var(--kairos-good);}
.runtime-card.digital .rc-label{color:var(--kairos-tetra);}
.runtime-card.hybrid .rc-label{color:var(--kairos-warn);}
.rc-desc{color:var(--kairos-muted);}
/* Workspace-active hero re-tint (body attr selector outranks .hero) */
body[data-mu-workspace-active="true"] .hero{
  background:var(--kairos-grad-glass);
  background-color:rgba(22,17,48,.72);
}
body[data-mu-workspace-active="true"] [for="kAssignmentTitle"]{color:var(--kairos-muted);}
body[data-printable-layout="true"] #kPreviewPanel,
body[data-auto-read-active="true"] #kPreviewPanel{
  background:rgba(255,255,255,.03);
  border-color:var(--kairos-border);
}
body[data-printable-layout="true"] #kPreviewPanel .mu-printable-optional-head .lbl strong,
body[data-auto-read-active="true"] #kPreviewPanel .mu-auto-preview-head .lbl strong{color:var(--kairos-text);}
body[data-printable-layout="true"] #kPreviewPanel .mu-printable-optional-head .lbl .sub,
body[data-auto-read-active="true"] #kPreviewPanel .mu-auto-preview-head .lbl .sub{color:var(--kairos-muted);}
body[data-printable-layout="true"] #kPreviewPanel:not(.is-collapsed) .mu-printable-optional-head{border-bottom:1px solid var(--kairos-border);}
body[data-printable-layout="true"] .mu-printable-chip{background:rgba(77,182,255,.14); color:var(--kairos-tetra); border-color:rgba(77,182,255,.35);}
body[data-mu-mode="convert_worksheet"] #kMuTabWs::before,
body[data-mu-mode="convert_worksheet"] #kMuTabAk::before,
body[data-mu-mode="convert_worksheet"] #kMuTabEx::before{
  color:var(--kairos-tetra); background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.35);
}
body[data-mu-mode="convert_worksheet"] #kMuTabEx{color:var(--kairos-muted);}
#kMuBootingSkeleton{background:rgba(255,255,255,.03); color:var(--kairos-tetra);}
#kMuBootingSkeleton .sk-spinner{border-color:rgba(77,182,255,.25); border-top-color:var(--kairos-tetra);}

/* ---------- Tables (unions) ---------- */
.question-table th, .qreview-table th, .score-table th, .ops-table th,
table.submissions-table th, .scan-detected-table th, .mu-rst .rst-table th,
.mgrid-header{
  background:rgba(255,255,255,.03);
  color:var(--kairos-muted);
  border-color:var(--kairos-border);
}
.question-table td, .qreview-table td, .score-table td, .ops-table td,
table.submissions-table td, .scan-detected-table td, .mu-rst .rst-table td,
.mgrid-row{
  color:var(--kairos-text);
  border-color:rgba(255,255,255,.07);
}
.mgrid-row:hover{background:rgba(77,182,255,.06);}
.question-table .col-pts, .qreview-table .col-pts, .qreview-table .col-state{color:var(--kairos-muted);}
.score-table tr.adjusted td{background:rgba(242,177,52,.08);}
.score-table tr.manual td{background:rgba(124,77,255,.10);}
.score-table tr.total td{background:rgba(77,182,255,.10); border-top:2px solid rgba(77,182,255,.35);}
.scan-detected-table tr.flag-row td{background:rgba(242,177,52,.08);}
.scan-detected-table tr.blank-row td{color:var(--kairos-muted);}
.srow{border-color:rgba(255,255,255,.07);}
.mu-rst .rst-table td code{background:rgba(0,0,0,.3); border-color:var(--kairos-border);}
.mu-akr .akr-item .ans, .mu-detected-questions .mu-dq-choice{color:var(--kairos-text);}
.mu-detected-questions .mu-dq-choice{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.08);}

/* ---------- Steppers / state chains / workflow rails ---------- */
.state-chain .sc-step, .sc-step{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
.sc-step.done{background:rgba(79,209,197,.14); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.sc-step.active, .sc-step.next{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.38); color:var(--kairos-tetra);}
.sc-step.current{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent; color:#04121f;
}
.sc-step.locked{background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.08); color:rgba(169,163,196,.5);}
.sc-step-label{color:var(--kairos-muted);}
.step-index{background:rgba(77,182,255,.14); color:var(--kairos-tetra);}
.step.done .step-index{background:rgba(79,209,197,.16); color:var(--kairos-good);}
.step.active .step-index{background:var(--kairos-tetra); color:#04121f;}
.step-copy strong{color:var(--kairos-text);}
.step-copy span{color:var(--kairos-muted);}
.checklist li.done{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.checklist li.pending{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.38); color:var(--kairos-warn);}
.doc-stage.is-active{border-color:var(--kairos-tetra); box-shadow:0 0 0 2px rgba(77,182,255,.15);}
.doc-stage.is-locked{background:rgba(255,255,255,.02);}
.doc-stage.is-done .doc-stage-num{background:rgba(79,209,197,.16); color:var(--kairos-good);}
.state-node{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
.state-node.s-active{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
.state-node.s-done{background:rgba(79,209,197,.14); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
.ec-step{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10);}
.ec-step.done{background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.35);}
.ec-step.async{background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.08);}
.ec-num{background:var(--kairos-tetra); color:#04121f;}
.ec-step.done .ec-num{background:var(--kairos-good); color:#03211d;}
.ec-step.async .ec-num{background:rgba(169,163,196,.4); color:#0d0a1f;}
.event-chain-panel h3{color:var(--kairos-tetra);}
#kActivitySetup .as-flow-step .n{background:rgba(255,255,255,.12); color:var(--kairos-muted);}
#kActivitySetup .as-flow-step.is-active{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
#kActivitySetup .as-flow-step.is-active .n{background:var(--kairos-tetra); color:#04121f;}
#kActivitySetup .sw-step-n{background:var(--kairos-tetra); color:#04121f;}
#kActivitySetup .sw-steps li, #kActivitySetup .as-pdf2-checklist li,
#kActivitySetup .as-module, #kActivitySetup .as-usecase,
#kActivitySetup .sw-next, #kCtxFromSetup .ctx-col li,
#kActivitySetup .as-pdf2-textprev, .zone-page-item .zpi-preview,
.zone-block-preview, .mu-ext-preview{color:var(--kairos-text);}
#kActivitySetup .sw-next{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-muted);}
#kActivitySetup .sw-cta{
  background:linear-gradient(135deg,#2f9bef 0%,#4db6ff 100%);
  border-color:transparent; color:#04121f; box-shadow:var(--kairos-glow-tetra);
}
#kActivitySetup .sw-cta:hover{background:linear-gradient(135deg,#2f9bef 0%,#6cc4ff 100%);}
#kActivitySetup .sw-cta.is-ghost{background:var(--kairos-glass); color:var(--kairos-tetra); border:1px solid rgba(77,182,255,.4); box-shadow:none;}
#kActivitySetup .sw-field-v, #kActivitySetup .as-card .tag{color:var(--kairos-muted);}
#kActivitySetup .as-card .tag{background:rgba(77,182,255,.12); color:var(--kairos-tetra);}
#kActivitySetup .as-hero, #kActivitySetup .sw-ctx-banner,
.ci-card .ci-head, .aw-shell .aw-head, .guided-card, .next-action-card,
.soc-panel{
  background:linear-gradient(135deg,rgba(124,77,255,.14),rgba(22,17,48,.72));
  border:1px solid rgba(124,77,255,.35);
  color:var(--kairos-text);
  box-shadow:var(--kairos-inset);
}
#kActivitySetup .as-hero-mark{background:rgba(124,77,255,.2); border-color:rgba(124,77,255,.4);}
#kActivitySetup h1.as-title, #kActivitySetup .as-block-head h2,
#kActivitySetup .as-pane h3, .ci-card .ci-head h2, .aw-shell .aw-head h2,
.aw-shell .aw-card-head h3, .guided-card .title, .next-action-card .lead,
.soc-panel h2, #kActivitySetup .sw-ctx-banner .swc-title{color:var(--kairos-text);}
#kActivitySetup .as-block-head p, .ci-card .ci-head p, .aw-shell .aw-head p,
.aw-shell .aw-card-head .lead, .next-action-card .copy, .soc-panel .lead,
#kActivitySetup .sw-ctx-banner .swc-body, #kActivitySetup .sw-ctx-banner .swc-note{color:var(--kairos-muted);}
#kActivitySetup .sw-ctx-banner .swc-pill{background:rgba(124,77,255,.18); border-color:rgba(124,77,255,.4); color:var(--kairos-purple-soft);}
.next-action-card .kicker{color:var(--kairos-tetra);}
.soc-panel .soc-field label, .soc-panel .soc-toggle{color:var(--kairos-purple-soft);}
.soc-panel .soc-status{color:var(--kairos-muted);}
.soc-panel .soc-status.ok{color:var(--kairos-good);}
.soc-panel .soc-status.local{color:var(--kairos-warn);}
.soc-mini-chip{color:var(--kairos-tetra);}
#kLessonCtxV3 .lc-meta .lc-pill{background:rgba(124,77,255,.16); border-color:rgba(124,77,255,.4); color:var(--kairos-purple-soft);}
#kLessonCtxV3 .lc-id, #kCtxFromSetup .ctx-sub, #kReadinessPanel .hb-sub,
#kReadinessPanel .hb-note, #kPublishWarnings .pw-sub, #kContextActions .ca-sub{color:var(--kairos-muted);}
#kReadinessPanel .hard-blockers{border-top:1px solid var(--kairos-border);}

/* ---------- Progress bars / skeletons ---------- */
.progress-bar, .cc-progress-track{background:rgba(255,255,255,.10);}
.progress-fill{background:linear-gradient(90deg,#2f9bef,#4db6ff);}
.gd-skel, h1#kTaskTitle.title-loading{
  background:linear-gradient(90deg, rgba(255,255,255,.05), rgba(77,182,255,.14), rgba(255,255,255,.05));
  background-size:200% 100%;
}
.studio-metric.is-loading strong{color:rgba(169,163,196,.5);}
#kQuestionSkeleton.k-q2-picking .k-q2-btn.k-q2-arm{box-shadow:0 0 0 2px rgba(77,182,255,.3);}
.question-card.k-q2-armed, .question-item.k-q2-armed{outline:2px solid var(--kairos-tetra);}
.qstruct-card:focus-visible, .intent-card:focus-visible{outline:2px solid var(--kairos-tetra);}
.question-card::before{background:linear-gradient(180deg,#4db6ff,#7c4dff);}
.question-head{background:rgba(255,255,255,.03); border-bottom:1px solid var(--kairos-border);}
.question-title{color:var(--kairos-text);}
.question-sub{color:var(--kairos-muted);}
.question-advanced{border-top:1px dashed var(--kairos-border);}
.question-advanced summary, details.tech-meta>summary,
details.inspector-tech>summary, .diag-details summary,
.cc-diagnostics summary, #kMuDiagnosticsDetails > summary,
.mu-extraction-details > summary, .mu-detected-questions > summary,
.mu-akr > summary, .mu-rcw-editor > summary, .mu-left-aside > summary,
.mu-as-collapse > summary, .advanced-fold>summary .sub,
#kMagicUploadStatusPanel .mu-status-head strong,
#kMagicUploadVisibleDebug .vd-head strong{color:var(--kairos-muted);}
.question-advanced[open] summary, details.tech-meta>summary::before,
details.inspector-tech>summary::before{color:var(--kairos-tetra);}
details.inspector-tech>summary{border-bottom:1px dashed var(--kairos-border);}
.advanced-fold>summary{background:rgba(255,255,255,.04); border:1px solid var(--kairos-border); color:var(--kairos-tetra);}
.advanced-fold>summary::before{color:var(--kairos-tetra);}
.advanced-fold[open]>summary{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4);}
.k-section-shell{background:rgba(124,77,255,.10); border-color:rgba(124,77,255,.35);}
.k-section-empty{background:rgba(124,77,255,.08); border-color:rgba(124,77,255,.3); color:var(--kairos-purple-soft);}
.k-q2-hint{color:var(--kairos-muted);}
.k-q2-tools{border-top:1px dashed rgba(124,77,255,.3);}
.summary-item.ready{background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.35);}
.summary-item.warn{background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35);}
.summary-item.soft{background:rgba(77,182,255,.08);}
.summary-list-inline{color:var(--kairos-muted);}
.mu-dq-card.is-edited, .mu-ps-block.is-edited{border-color:rgba(124,77,255,.45); background:rgba(124,77,255,.08);}
.mu-dq-card.needs-review, .mu-ps-block.needs-review{border-color:rgba(242,177,52,.45); background:rgba(242,177,52,.06);}
.mu-detected-questions .mu-dq-card .ak-band, .mu-ps-block .ak-band{
  background:rgba(79,209,197,.10); border-color:rgba(79,209,197,.35); color:var(--kairos-good);
}
.mu-detected-questions .mu-dq-card .ak-band.missing, .mu-ps-block .ak-band.missing{
  background:rgba(242,177,52,.10); border-color:rgba(242,177,52,.35); color:var(--kairos-warn);
}
.mu-dq-acceptance-note.accepted{background:rgba(79,209,197,.12); border-color:rgba(79,209,197,.38); color:var(--kairos-good);}
.mu-dq-acceptance-note.worksheet{background:rgba(242,177,52,.12); border-color:rgba(242,177,52,.38); color:var(--kairos-warn);}
.mu-dq-acceptance-note.cleared{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
.mu-rcw-tabs .rcw-tabs-strip{background:rgba(255,255,255,.03); border-bottom:1px solid var(--kairos-border);}
.mu-rcw-tabs .rcw-tab{color:var(--kairos-muted);}
.mu-rcw-tabs .rcw-tab:hover{background:rgba(77,182,255,.10);}
.mu-rcw-tabs .rcw-tab.active{color:var(--kairos-tetra); border-bottom-color:var(--kairos-tetra); background:rgba(77,182,255,.08);}
.mu-rcw-pdf-page .pp-zone button{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
.mu-rcw-pdf-page .pp-zone button:hover{background:rgba(77,182,255,.2);}
.mu-ps-add-row, .mu-detected-questions .mu-dq-actions,
.mu-detected-questions .mu-dq-card .card-actions,
#kMagicUploadVisibleDebug .vd-publish,
#kMagicUploadStatusPanel .mu-status-extra,
#kQuickLibraryPicker .picker-foot, .intent-modal-foot,
#kMuAutoRead .mar-step + .mar-step{border-color:var(--kairos-border);}
.intent-modal-foot{color:var(--kairos-muted);}
#kMagicUploadStatusPanel .mu-status-extra{color:var(--kairos-muted);}
#kMagicUploadStatusPanel .mu-status-extra .err{color:var(--kairos-danger);}
/* status dots (auto-read + upload status) */
#kMuAutoRead .mar-step{color:var(--kairos-muted);}
#kMuAutoRead .mar-step .dot, #kMagicUploadStatusPanel .mu-status-dot{background:rgba(255,255,255,.10); color:var(--kairos-muted);}
#kMuAutoRead .mar-step.is-active .dot, #kMagicUploadStatusPanel .mu-status-row.is-active .mu-status-dot{background:rgba(77,182,255,.2); color:var(--kairos-tetra); box-shadow:0 0 0 3px rgba(77,182,255,.15);}
#kMuAutoRead .mar-step.is-done .dot, #kMagicUploadStatusPanel .mu-status-row.is-done .mu-status-dot{background:rgba(79,209,197,.2); color:var(--kairos-good);}
#kMuAutoRead .mar-step.is-error .dot, #kMagicUploadStatusPanel .mu-status-row.is-error .mu-status-dot{background:rgba(255,141,141,.2); color:var(--kairos-danger);}
#kMuAutoRead .mar-step .lbl, #kMagicUploadStatusPanel .mu-status-row .mu-status-lbl{color:var(--kairos-text);}
#kMuAutoRead .mar-step.is-active .lbl, #kMagicUploadStatusPanel .mu-status-row.is-active .mu-status-lbl{color:var(--kairos-tetra);}
#kMuAutoRead .mar-step.is-done .lbl, #kMagicUploadStatusPanel .mu-status-row.is-done .mu-status-lbl{color:var(--kairos-good);}
#kMuAutoRead .mar-step.is-error .lbl, #kMagicUploadStatusPanel .mu-status-row.is-error .mu-status-lbl{color:var(--kairos-danger);}
#kMuAutoRead .mar-step .sub, #kMuAutoRead .mar-progress .mar-setup-title,
#kMuAutoRead .mar-continue .mar-continue-note{color:var(--kairos-muted);}
#kMuAutoRead .mar-progress, #kMuAutoRead .mar-setup-slot{background:rgba(255,255,255,.03); border-color:var(--kairos-border);}
.mu-readiness .mr-row .mr-mark{background:rgba(255,255,255,.06); border-color:var(--kairos-border); color:var(--kairos-muted);}
.mu-readiness .mr-row.ok .mr-mark{background:rgba(79,209,197,.16); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
.mu-readiness .mr-row.warn .mr-mark{background:rgba(242,177,52,.16); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);}
.mu-readiness .mr-row.bad .mr-mark{background:rgba(255,141,141,.16); border-color:rgba(255,141,141,.4); color:var(--kairos-danger);}
.mu-readiness .mr-ready{background:rgba(255,255,255,.04); border-color:var(--kairos-border); color:var(--kairos-muted);}
#kMuAnswerSheetReadiness .as-rows{background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.08);}
#kMagicUploadVisibleDebug .vd-can-publish.yes{background:rgba(79,209,197,.14); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
#kMagicUploadVisibleDebug .vd-publish-result, #kMagicUploadVisibleDebug .vd-publish-result .vd-pr-row .k{color:var(--kairos-muted);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-row .v{color:var(--kairos-text);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-row .v.good{color:var(--kairos-good);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-row .v.bad{color:var(--kairos-danger);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-state{background:rgba(255,255,255,.05); border-color:var(--kairos-border); color:var(--kairos-muted);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-state.running{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-state.done{background:rgba(79,209,197,.14); border-color:rgba(79,209,197,.4); color:var(--kairos-good);}
#kMagicUploadVisibleDebug .vd-publish-result .vd-pr-state.error{background:rgba(255,141,141,.14); border-color:rgba(255,141,141,.4); color:var(--kairos-danger);}
#kMagicUploadVisibleDebug .vd-pr-next a{background:rgba(77,182,255,.14); border-color:rgba(77,182,255,.4); color:var(--kairos-tetra);}
#kMagicUploadVisibleDebug .vd-pr-next a:hover{background:rgba(77,182,255,.24);}

/* ---------- Modals / overlays ---------- */
.course-modal-backdrop, .intent-modal-backdrop, #kStudentSheetsModal,
#kQuickLibraryPicker, .zone-modal-backdrop{background:rgba(4,2,12,.66);}
.course-modal, .intent-modal, .ss-modal, .zone-modal-shell,
#kQuickLibraryPicker .picker-card, .socrates-panel{
  background:#161130;
  border:1px solid var(--kairos-border);
  color:var(--kairos-text);
  box-shadow:var(--kairos-shadow);
}
.socrates-panel.open{box-shadow:var(--kairos-shadow), 0 0 0 1px rgba(77,182,255,.2);}
.soc-panel-header{background:linear-gradient(135deg,rgba(124,77,255,.4),rgba(47,155,239,.35)); color:#fff;}
.soc-panel-close{background:rgba(255,255,255,.14); color:#fff;}
.soc-prompt{background:rgba(124,77,255,.10); border-color:rgba(124,77,255,.35);}
.soc-prompt-label{color:var(--kairos-purple-soft);}
.soc-prompt-text{color:var(--kairos-text);}
.soc-facts{background:rgba(255,255,255,.04);}
.soc-footer{background:rgba(0,0,0,.25); border-top:1px solid var(--kairos-border); color:var(--kairos-muted);}
.zone-modal-stage{background:linear-gradient(180deg,rgba(13,10,31,.6),rgba(7,5,17,.7));}
.zone-tool-rail{background:#12102a; border-right:1px solid var(--kairos-border);}
.zone-tool-btn{background:rgba(255,255,255,.06); border-color:var(--kairos-border); color:var(--kairos-text);}
.zone-tool-btn:hover{background:rgba(77,182,255,.14);}
.zone-tool-btn.active{background:var(--kairos-tetra); color:#04121f; border-color:transparent;}
.zone-tool-note{color:var(--kairos-muted);}
.zone-modal-head p{color:var(--kairos-muted);}
.zone-inspector{background:rgba(0,0,0,.2); border-left:1px solid var(--kairos-border);}
.zone-active-editor, .zone-block-editor{background:rgba(255,255,255,.03); border-bottom:1px solid var(--kairos-border);}
.zone-page-item.active, .zone-block-row.active{border-color:rgba(77,182,255,.5); box-shadow:0 0 0 2px rgba(77,182,255,.15);}
.zone-page-item.ignored, .zone-block-row.ignored{background:rgba(255,255,255,.02);}
.ncw-modal{background:#161130; border:1px solid var(--kairos-border); color:var(--kairos-text);}

/* Teaching-space wizard: the modal follows the user's portal theme. Keep these
   selectors scoped to the dialog so page cards and legacy modals are untouched. */
:root[data-tetra-theme="light"] #kNewCourseModal .ncw-modal{
  background:linear-gradient(145deg,#f8f7ff 0%,#f2f7ff 60%,#fbfaff 100%);
  border-color:#d8ddea;
  color:#182235;
  box-shadow:0 24px 60px rgba(45,50,75,.18);
}
:root[data-tetra-theme="light"] #kNewCourseModal :is(
  .ncw-head h2,.ncw-primary .ncw-p-title,.ncw-orb-title,.ncw-sec-h,
  .ncw-cur-b .t,.ncw-cc-name,.ncw-pending h3
){color:#182235;}
:root[data-tetra-theme="light"] #kNewCourseModal :is(
  .ncw-head p,.ncw-primary .ncw-p-desc,.ncw-orb-sub,.ncw-cur-b .m,
  .ncw-cc-meta,.ncw-f label,.ncw-pending p
){color:#59677c;}
:root[data-tetra-theme="light"] #kNewCourseModal :is(.ncw-search,.ncw-f input,.ncw-f select,.ncw-cc-grid input,.ncw-cc-grid select){
  background:#fff;
  border-color:#d8ddea;
  color:#182235;
}

:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-modal,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-modal{
  background:linear-gradient(145deg,#171b2b 0%,#151a28 56%,#1b1630 100%);
  border-color:rgba(167,184,212,.24);
  color:#f5f8fc;
  box-shadow:0 30px 85px rgba(0,0,0,.58);
}
:root[data-tetra-theme="dark"] #kNewCourseModal :is(
  .ncw-head h2,.ncw-primary .ncw-p-title,.ncw-orb-title,.ncw-sec-h,
  .ncw-cur-b .t,.ncw-cc-name,.ncw-pending h3
),
:root[data-tetra-theme="obsidian"] #kNewCourseModal :is(
  .ncw-head h2,.ncw-primary .ncw-p-title,.ncw-orb-title,.ncw-sec-h,
  .ncw-cur-b .t,.ncw-cc-name,.ncw-pending h3
){color:#f5f8fc;}
:root[data-tetra-theme="dark"] #kNewCourseModal :is(
  .ncw-head p,.ncw-primary .ncw-p-desc,.ncw-orb-sub,.ncw-cur-b .m,
  .ncw-cc-meta,.ncw-f label,.ncw-pending p,.ncw-more-h
),
:root[data-tetra-theme="obsidian"] #kNewCourseModal :is(
  .ncw-head p,.ncw-primary .ncw-p-desc,.ncw-orb-sub,.ncw-cur-b .m,
  .ncw-cc-meta,.ncw-f label,.ncw-pending p,.ncw-more-h
){color:#aebbd0;}
:root[data-tetra-theme="dark"] #kNewCourseModal :is(.ncw-primary,.ncw-cur,.ncw-cc-preview),
:root[data-tetra-theme="obsidian"] #kNewCourseModal :is(.ncw-primary,.ncw-cur,.ncw-cc-preview){
  background:linear-gradient(180deg,rgba(43,59,81,.9),rgba(31,42,61,.9));
  border-color:rgba(167,184,212,.22);
}
:root[data-tetra-theme="dark"] #kNewCourseModal :is(.ncw-search,.ncw-f input,.ncw-f select,.ncw-cc-grid input,.ncw-cc-grid select),
:root[data-tetra-theme="obsidian"] #kNewCourseModal :is(.ncw-search,.ncw-f input,.ncw-f select,.ncw-cc-grid input,.ncw-cc-grid select){
  background:#111827;
  border-color:rgba(167,184,212,.26);
  color:#f5f8fc;
  color-scheme:dark;
}
:root[data-tetra-theme="dark"] #kNewCourseModal :is(.ncw-search,.ncw-f input,.ncw-cc-grid input)::placeholder,
:root[data-tetra-theme="obsidian"] #kNewCourseModal :is(.ncw-search,.ncw-f input,.ncw-cc-grid input)::placeholder{
  color:#8090a7;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-cc-grid select:disabled,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-cc-grid select:disabled{
  background:#1d2738;
  color:#8090a7;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-close,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-close{
  background:#202b3d;
  border-color:rgba(167,184,212,.25);
  color:#eaf0f8;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-close:hover,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-close:hover{
  background:#2a3850;
  border-color:#4db6ff;
  color:#fff;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-cta.ghost,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-cta.ghost{
  background:#202b3d;
  border-color:rgba(167,184,212,.25);
  color:#8fd0ff;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-soon,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-soon{
  background:rgba(255,255,255,.035);
  border-color:rgba(167,184,212,.2);
  color:#8796ab;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-soon .s-tag,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-soon .s-tag{
  background:rgba(143,112,255,.15);
  color:#b9a7ff;
}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-foot,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-foot{border-top-color:rgba(167,184,212,.16);}
:root[data-tetra-theme="dark"] #kNewCourseModal .ncw-back,
:root[data-tetra-theme="obsidian"] #kNewCourseModal .ncw-back{color:#c8d3e2;}

/* ---------- Tasks-list extras (mobile nav, review, tools) ---------- */
.tm-bottom-nav{background:#12102a; border-top:1px solid var(--kairos-border); box-shadow:0 -8px 24px rgba(0,0,0,.45);}
.tm-tab, .tm-more, .tm-more > summary{color:var(--kairos-muted);}
.tm-tab.active, .tm-tab[aria-current="page"], .tm-more[open] > summary{color:var(--kairos-tetra);}
.tm-more-sheet{background:#161130; border:1px solid var(--kairos-border); box-shadow:var(--kairos-shadow);}
.tm-more-sheet a{color:var(--kairos-text);}
.tm-more-sheet a:active{background:rgba(77,182,255,.12);}
.task-card-chips .pill, .task-card-chips .chip{background:var(--kairos-glass); border-color:var(--kairos-border); color:var(--kairos-muted);}
.tool-action{color:var(--kairos-text);}
.tool-action:hover{color:var(--kairos-tetra);}
.load-more-btn{color:var(--kairos-tetra);}
#kTasksDiagnostics{background:rgba(0,0,0,.35); border:1px solid var(--kairos-border); color:var(--kairos-text);}
#kTasksDiagnostics summary{color:var(--kairos-muted);}
.workspace-tabs{border-color:var(--kairos-border);}
.workspace-tab{color:var(--kairos-muted);}
.workspace-tab:hover{color:var(--kairos-text); background:rgba(77,182,255,.08);}
.workspace-tab.active{color:var(--kairos-tetra); background:rgba(77,182,255,.14);}
.workspace-tab .count{background:rgba(255,255,255,.08); color:var(--kairos-muted);}
.workspace-tab.active .count{background:rgba(77,182,255,.25); color:var(--kairos-tetra);}
.submissions-toolbar{background:rgba(255,255,255,.03); border-color:rgba(255,255,255,.08);}
.submissions-toolbar .toolbar-label{color:var(--kairos-muted);}
.submissions-avatar{background:rgba(77,182,255,.16); color:var(--kairos-tetra);}
.carousel-tile{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10); color:var(--kairos-text);}
.carousel-tile:hover{background:rgba(77,182,255,.08); border-color:rgba(77,182,255,.45); box-shadow:none;}
.carousel-tile .code-chip{background:rgba(124,77,255,.2); border-color:rgba(124,77,255,.45); color:var(--kairos-purple-soft);}
.carousel-tile.is-teacher-only{background:rgba(242,177,52,.08); border-color:rgba(242,177,52,.4);}
.carousel-tile.is-teacher-only:hover, .carousel-tile.is-teacher-only.is-selected{background:rgba(242,177,52,.14); border-color:rgba(242,177,52,.5); box-shadow:none;}
.carousel-tile.is-teacher-only .code-chip{background:rgba(242,177,52,.16); border-color:rgba(242,177,52,.4); color:var(--kairos-warn);}
.carousel-track::-webkit-scrollbar-thumb, #kActivitySetup .as-carousel::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);}
.mini-chip .chip-mono{color:var(--kairos-tetra);}
.panel-step{color:rgba(124,77,255,.7);}

/* ---------- Document previews: intentionally light ---------- */
/* Scanned-sheet mock (submission overview): paper stays paper. */
.preview-stage{border:1px solid var(--kairos-border);}
.sheet-paper{box-shadow:0 16px 30px rgba(0,0,0,.45);}
/* PDF / resource render surfaces: keep the white page, glass frame. */
.preview-frame{border-color:var(--kairos-border);}
.zone-modal-canvas-wrap{border-color:var(--kairos-border);}
.mu-rcw-pdf-page{border-color:var(--kairos-border);}
.evidence .preview{border-color:var(--kairos-border);}
/* Printable answer-sheet mock keeps its ink-on-paper look untouched
   (.mu-rcw-answer-sheet and descendants: no overrides on purpose). */
.small-preview-thumb{background:rgba(255,255,255,.06); border-color:var(--kairos-border); color:var(--kairos-tetra);}
.page-thumb{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10);}
.page-thumb.discarded{background:rgba(255,255,255,.02);}
.page-thumb .page-label{color:var(--kairos-text);}
.page-thumb .page-state{color:var(--kairos-muted);}
.page-thumb .page-toggle{background:rgba(22,17,48,.9); border-color:var(--kairos-border); color:var(--kairos-text);}
.page-thumb.discarded .page-badge{background:rgba(255,255,255,.06); color:var(--kairos-muted);}
/* Scan placeholder box (ocr-mapping renders a data table inside) */
.scan-box{background:rgba(255,255,255,.03); border-color:var(--kairos-border); color:var(--kairos-muted);}
/* Performance score readout (student report) */
.perf-score{
  background:linear-gradient(135deg,rgba(79,209,197,.20),rgba(79,209,197,.08));
  border:1px solid rgba(79,209,197,.4);
  box-shadow:var(--kairos-inset);
}
.perf-score .pct, .perf-score .label{color:var(--kairos-good);}
.perf-score .pct.muted{color:var(--kairos-muted);}
.score-card.is-pct{background:rgba(77,182,255,.12); border-color:rgba(77,182,255,.4);}
.score-card.is-pct .v{color:var(--kairos-tetra);}

/* ---------- Teacher Library family ---------- */
/* Library pages own their section tabs, so a second path trail adds no useful
   orientation. This also suppresses a breadcrumb injected by the shared shell. */
body:has(.library-sections) .breadcrumb,
body:has(.breadcrumb a[href*="/tetrahedron/library"]) .breadcrumb,
body:has(.library-sections) #breadcrumb-shell,
body:has(.library-sections) [data-breadcrumb-shell],
body:has(.breadcrumb a[href*="/tetrahedron/library"]) #breadcrumb-shell,
body:has(.breadcrumb a[href*="/tetrahedron/library"]) [data-breadcrumb-shell]{
  display:none!important;
}

/* One compact lesson-card language for For You, Lessons, and any future
   Library surface that renders the canonical .lesson-card component. */
body:has(.library-sections) .lesson-grid,
body:has(.library-sections) .recent-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px!important;
}
body:has(.library-sections) .lesson-card{
  --subject-accent:#5c45c8;
  --subject-soft:#f1edff;
  position:relative;
  isolation:isolate;
  display:flex;
  min-height:0!important;
  padding:14px 14px 13px 17px!important;
  border:1px solid color-mix(in srgb,var(--subject-accent) 20%,#dfe5ef)!important;
  border-radius:14px!important;
  background:linear-gradient(145deg,var(--subject-soft) 0 62px,#fff 146px)!important;
  color:#182033!important;
  box-shadow:0 7px 18px rgba(27,39,70,.06)!important;
  color-scheme:light;
  overflow:hidden;
}
body:has(.library-sections) .lesson-card::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:4px;
  background:var(--subject-accent);
}
body:has(.library-sections) .lesson-card.subject-math{--subject-accent:#5c45c8;--subject-soft:#f1edff}
body:has(.library-sections) .lesson-card.subject-science{--subject-accent:#07866f;--subject-soft:#e9fbf5}
body:has(.library-sections) .lesson-card.subject-language{--subject-accent:#c04b72;--subject-soft:#fff0f5}
body:has(.library-sections) .lesson-card.subject-social{--subject-accent:#b56b08;--subject-soft:#fff5df}
body:has(.library-sections) .lesson-card.subject-arts{--subject-accent:#1478b8;--subject-soft:#ebf7ff}
body:has(.library-sections) .lesson-card .source{color:var(--subject-accent)!important}
body:has(.library-sections) .lesson-card h3{
  margin:9px 0 4px!important;
  font-size:15px!important;
  line-height:1.25!important;
  color:#182033!important;
}
body:has(.library-sections) .lesson-card .subtitle,
body:has(.library-sections) .lesson-card .description{
  color:#687386!important;
  font-size:12px!important;
  line-height:1.4!important;
}
body:has(.library-sections) .lesson-card .description{
  display:-webkit-box;
  margin:7px 0!important;
  overflow:hidden;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
body:has(.library-sections) .lesson-card .chips{margin:7px 0!important}
body:has(.library-sections) .lesson-card .chip{padding:3px 7px!important;font-size:10px!important}
body:has(.library-sections) .lesson-card .technical{
  display:block;
  overflow:hidden;
  color:#7a8495!important;
  font-size:10px!important;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body:has(.library-sections) .lesson-card .card-actions{padding-top:10px!important}
body:has(.library-sections) .lesson-card .card-actions .btn{
  min-height:34px!important;
  padding:6px 9px!important;
  border:1px solid color-mix(in srgb,var(--subject-accent) 34%,#dfe5ef)!important;
  background:color-mix(in srgb,var(--subject-accent) 9%,#fff)!important;
  color:var(--subject-accent)!important;
  font-size:11px!important;
  font-weight:800!important;
}
body:has(.library-sections) .lesson-card .card-actions .btn:hover{
  border-color:var(--subject-accent)!important;
  background:var(--subject-accent)!important;
  color:#fff!important;
}

@media(max-width:760px){
  body:has(.library-sections) .lesson-grid,
  body:has(.library-sections) .recent-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:520px){
  body:has(.library-sections) .lesson-grid,
  body:has(.library-sections) .recent-grid{
    grid-template-columns:1fr!important;
  }
}
