/* ═══════════════════════════════════════════════════════════
   AI-First Teaching Experience — Infinity Canvas Styles
   ═══════════════════════════════════════════════════════════ */

@font-face {
  font-family: 'Bright Chalk';
  src: url('./fonts/Bright Chalk.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

:root {
  --bg: #0a0d0b;
  --bg-surface: #111413;
  --bg-elevated: #191c1a;
  --bg-hover: #1f2220;
  --border: rgba(255,255,255,0.07);
  --border-active: rgba(255,255,255,0.14);
  --text: #ececec;
  --text-muted: #9a9a9a;
  --text-dim: #5a5e5c;
  --accent: #34d399;
  --accent-bright: #5eead4;
  --accent-dim: #1a7a55;
  --green: #4ade80;
  --green-dim: #162e1e;
  --yellow: #fbbf24;
  --yellow-dim: #4a3a0a;
  --red: #f87171;
  --red-dim: #4a1a1a;
  --orange: #fb923c;
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --font-board: 'Bright Chalk', 'Caveat', cursive;
  --radius: 8px;
  --radius-lg: 12px;
  --transition: 0.25s ease;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--text);
  height: 100vh;
  overflow: hidden;
}

#app {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

/* ══════════════════════════════════════════════════════════════
   NEW SCREENS — Landing, Browse, Course Detail, On-demand
   ══════════════════════════════════════════════════════════════ */

.app-screen { min-height: 100vh; animation: sc-fadeIn .4s cubic-bezier(.16,1,.3,1); }
@keyframes sc-fadeIn { from { opacity:0; transform:translateY(6px) } to { opacity:1; transform:none } }

/* Stagger children */
.stagger > * { opacity:0; animation: sc-staggerIn .5s cubic-bezier(.16,1,.3,1) forwards }
.stagger > *:nth-child(1){animation-delay:.05s} .stagger > *:nth-child(2){animation-delay:.1s}
.stagger > *:nth-child(3){animation-delay:.15s} .stagger > *:nth-child(4){animation-delay:.2s}
.stagger > *:nth-child(5){animation-delay:.25s} .stagger > *:nth-child(6){animation-delay:.3s}
.stagger > *:nth-child(7){animation-delay:.35s} .stagger > *:nth-child(8){animation-delay:.4s}
@keyframes sc-staggerIn { from { opacity:0; transform:translateY(10px) } to { opacity:1; transform:none } }

/* Nav */
.sc-nav { position:sticky; top:0; z-index:100; display:flex; align-items:center; justify-content:space-between;
  padding:0 clamp(20px,4vw,48px); height:60px; background:rgba(9,9,11,.85); backdrop-filter:blur(24px) saturate(1.5);
  border-bottom:1px solid rgba(255,255,255,.06) }
.sc-logo { font-size:22px; font-weight:800; letter-spacing:-.5px; text-decoration:none;
  color:var(--text); cursor:pointer; transition:opacity .15s }
.sc-logo:hover { opacity:.8 }
.sc-logo em { font-style:normal; color:var(--accent) }
.sc-nav-r { display:flex; align-items:center; gap:12px }
.sc-nav-link { font-size:13px; font-weight:500; color:var(--text-muted); transition:color .2s }
.sc-nav-link:hover, .sc-nav-link.active { color:var(--text) }
.sc-btn { display:inline-flex; align-items:center; gap:8px; font-weight:600; border-radius:10px;
  border:none; cursor:pointer; padding:8px 18px; font-size:13px; text-decoration:none;
  font-family:'Inter',-apple-system,sans-serif;
  transition:all .2s cubic-bezier(.16,1,.3,1) }
.sc-btn-sm { padding:7px 16px; font-size:13px }
.sc-btn-lg { padding:13px 28px; font-size:15px }
.sc-btn-accent { background:var(--accent); color:#09090b; padding:8px 20px }
.sc-btn-accent:hover { background:#2dd4a0; box-shadow:0 0 24px rgba(52,211,153,.15); transform:translateY(-1px) }
.sc-btn-ghost { padding:8px 18px; font-size:13px; color:var(--text-muted); background:transparent;
  border:1px solid var(--border); text-decoration:none }
.sc-btn-ghost:hover { color:var(--text); border-color:var(--text-dim); background:#222225 }
.sc-pill { display:flex; align-items:center; gap:8px; padding:3px 12px 3px 3px; border-radius:20px;
  background:var(--bg-elevated); font-size:13px; color:var(--text-muted); cursor:pointer }
.sc-pill-avatar { width:26px; height:26px; border-radius:50%; background:rgba(52,211,153,.1); color:var(--accent);
  display:grid; place-items:center; font-size:11px; font-weight:700 }
.sc-tag { display:inline-block; padding:3px 10px; border-radius:6px; font-size:11px; font-weight:600;
  letter-spacing:.3px; text-transform:uppercase; background:rgba(99,102,241,.12); color:#a5b4fc; margin-bottom:10px }
.sc-wrap { max-width:1120px; margin:0 auto; padding:0 clamp(16px,4vw,40px) }

/* ── Hero (Landing) ─── */
.hero { padding:clamp(60px,10vh,120px) 0 60px; text-align:center }
.hero-label { display:inline-flex; align-items:center; gap:6px; padding:5px 14px; border-radius:100px;
  background:rgba(52,211,153,.1); color:var(--accent); font-size:12px; font-weight:600; margin-bottom:28px }
.hero-dot { width:5px; height:5px; border-radius:50%; background:var(--accent); animation:heroBlink 2s infinite }
@keyframes heroBlink { 50% { opacity:.3 } }
.hero h1 { font-size:clamp(36px,5.5vw,60px); font-weight:700; line-height:1.08; letter-spacing:-2.5px;
  max-width:720px; margin:0 auto 20px }
.hero h1 em { font-style:normal; background:linear-gradient(135deg,var(--accent),#5eead4);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent }
.hero p { font-size:clamp(16px,1.3vw,18px); color:var(--text-muted); max-width:520px; margin:0 auto 36px; line-height:1.65 }
.hero-actions { display:flex; flex-direction:column; gap:10px; align-items:flex-start }
.lp-hero-input-wrap { display:flex; align-items:center; gap:0; width:100%;
  background:var(--bg-surface); border:1px solid var(--border); border-radius:14px;
  padding:4px 4px 4px 6px; transition:border-color .2s }
.lp-hero-input-wrap:focus-within { border-color:var(--accent) }
.lp-hero-attach { width:36px; height:36px; flex-shrink:0; display:flex; align-items:center;
  justify-content:center; background:none; border:none; color:var(--text-dim); cursor:pointer;
  border-radius:8px; transition:color .15s, background .15s }
.lp-hero-attach:hover { color:var(--text); background:rgba(255,255,255,.06) }
.lp-hero-input { flex:1; padding:10px 8px; border-radius:0; background:none;
  border:none; color:var(--text); font-size:15px; outline:none }
.lp-hero-input::placeholder { color:var(--text-dim) }
.lp-hero-btn { padding:10px 22px; border-radius:10px; background:var(--accent); color:#000;
  font-size:15px; font-weight:600; border:none; cursor:pointer; white-space:nowrap;
  transition:opacity .15s; flex-shrink:0 }
.lp-hero-btn:hover { opacity:.85 }
.lp-hero-attach-preview { display:flex; gap:8px; flex-wrap:wrap; max-width:500px; margin:10px auto 0;
  justify-content:center }
.lp-hero-attach-preview:empty { display:none }
.lp-hero-attach-item { position:relative; background:var(--bg-surface); border:1px solid var(--border);
  border-radius:8px; padding:4px 8px; display:flex; align-items:center; gap:6px; font-size:12px;
  color:var(--text-muted) }
.lp-hero-attach-item img { height:28px; width:28px; object-fit:cover; border-radius:4px }
.lp-hero-attach-remove { cursor:pointer; color:var(--text-dim); font-size:14px; margin-left:4px }
.lp-hero-attach-remove:hover { color:#ef4444 }

/* ═══ Landing Page ═══ */
.lp-page { max-width:1100px; margin:0 auto; padding:0 24px }

/* ── Hero with board teaser ── */
.lp-hero { display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center;
  padding:clamp(40px,8vh,100px) 0 80px }
.lp-hero-text h1 { font-size:clamp(32px,4.5vw,52px); font-weight:800; line-height:1.1;
  letter-spacing:-2px; margin-bottom:20px }
.lp-hero-text h1 em { font-style:normal; background:linear-gradient(135deg,#34d399,#5eead4);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent }
.lp-hero-text p { font-size:16px; color:var(--text-muted); line-height:1.7; margin-bottom:28px }
.lp-hero-text p strong { color:var(--text); font-weight:600 }
.lp-hero-chips { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 10px; justify-content:flex-start }
.lp-chip { padding:6px 14px; border-radius:20px; background:rgba(255,255,255,.04);
  border:1px solid var(--border); color:var(--text-muted); font-size:12px; cursor:pointer;
  transition:all .2s; white-space:nowrap }
.lp-chip:hover { border-color:var(--accent); color:var(--accent); background:rgba(52,211,153,.06) }
.lp-hero-note { font-size:12px; color:var(--text-dim) }

/* Board teaser — animated teaching sequence */
.lp-hero-board { perspective:1000px }
.lp-board-frame { background:#0a0e14; border:1px solid rgba(255,255,255,.08); border-radius:16px;
  overflow:hidden; transform:rotateY(-2deg);
  box-shadow:0 24px 80px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.03) }
.lp-board-header { display:flex; align-items:center; gap:6px; padding:10px 14px;
  border-bottom:1px solid rgba(255,255,255,.05); background:rgba(255,255,255,.02) }
.lp-board-dot { width:8px; height:8px; border-radius:50% }
.lp-board-dot.red { background:#ff5f56 } .lp-board-dot.yel { background:#ffbd2e } .lp-board-dot.grn { background:#27c93f }
.lp-board-title { margin-left:auto; font-size:10px; color:rgba(255,255,255,.2);
  letter-spacing:.5px; text-transform:uppercase }

/* Board content — sequenced teaching animation */
.lp-board-content { padding:20px 24px 16px; min-height:240px; position:relative }
.lp-step { opacity:0; transform:translateY(6px); animation:lpStepIn .6s ease-out forwards }
.lp-s1 { animation-delay:.5s } .lp-s2 { animation-delay:1.2s }
.lp-s3 { animation-delay:2s } .lp-s4 { animation-delay:3s }
.lp-s5 { animation-delay:3.8s } .lp-s6 { animation-delay:5s }
@keyframes lpStepIn { to { opacity:1; transform:none } }

/* Chalk writing effect — text reveals character by character */
.lp-chalk-write { display:inline-block; overflow:hidden; white-space:nowrap;
  border-right:2px solid transparent; animation:lpType 1s steps(30) forwards, lpCaret .5s step-end 3 }
.lp-s1 .lp-chalk-write { font-family:'Caveat',cursive; font-size:22px; color:#f5c542;
  animation-delay:.5s; margin-bottom:4px }
.lp-chalk-dim { font-family:'Caveat',cursive; font-size:13px; color:rgba(255,255,255,.3) !important }
.lp-s2 .lp-chalk-write { animation-delay:1.2s }
.lp-eq { font-family:'JetBrains Mono',monospace !important; font-size:24px !important;
  color:#34d399 !important; font-weight:600; margin:12px 0 4px; display:block }
.lp-s3 .lp-chalk-write { animation-delay:2s; width:auto; white-space:normal }
.lp-ann { font-family:'Caveat',cursive !important; font-size:13px !important;
  color:rgba(255,255,255,.35) !important; margin-left:8px }
.lp-s4 .lp-chalk-write { animation-delay:3s }

@keyframes lpType { from { max-width:0 } to { max-width:500px } }
@keyframes lpCaret { from { border-right-color:var(--accent) } to { border-right-color:transparent } }

/* Wave function drawing */
.lp-wave-svg { width:100%; height:50px; margin:8px 0 }
.lp-wave-path { stroke-dasharray:500; stroke-dashoffset:500; animation:lpWaveDraw 1.5s ease-out forwards }
.lp-s5 .lp-wave-path { animation-delay:3.8s }
.lp-wave-2 { animation-delay:4.2s !important }
@keyframes lpWaveDraw { to { stroke-dashoffset:0 } }

/* Question highlight */
.lp-question { font-family:'Caveat',cursive !important; font-size:16px !important;
  color:#83d8fb !important; display:block; margin-top:8px;
  background:rgba(131,216,251,.05); padding:6px 10px; border-radius:6px; border-left:2px solid #83d8fb }
.lp-s6 .lp-chalk-write { animation-delay:5s; white-space:normal }

/* Voice indicator */
.lp-board-voice { display:flex; align-items:center; gap:8px; padding:8px 14px;
  border-top:1px solid rgba(255,255,255,.05); background:rgba(255,255,255,.01) }
.lp-voice-bars { display:flex; gap:2px; align-items:center }
.lp-voice-bars span { width:2px; border-radius:1px; background:var(--accent) }
.lp-voice-bars span:nth-child(1) { height:8px; animation:lpV .4s ease-in-out infinite alternate }
.lp-voice-bars span:nth-child(2) { height:12px; animation:lpV .4s ease-in-out .1s infinite alternate }
.lp-voice-bars span:nth-child(3) { height:6px; animation:lpV .4s ease-in-out .2s infinite alternate }
.lp-voice-bars span:nth-child(4) { height:10px; animation:lpV .4s ease-in-out .3s infinite alternate }
@keyframes lpV { to { transform:scaleY(.4) } }
.lp-voice-text { font-size:11px; color:rgba(255,255,255,.25) }

/* ── How it's different ── */
/* ── Hero phase animation (chat → board) ── */
.lp-hero-phase { position:absolute; top:0; left:0; width:100%; opacity:0; transition:opacity .8s }
.lp-hero-board { position:relative; min-height:340px }
.lp-phase-chat { opacity:1; animation:lpPhaseChat 8s forwards }
.lp-phase-board { animation:lpPhaseBoard 8s forwards }
@keyframes lpPhaseChat { 0%,45% { opacity:1 } 55%,100% { opacity:0; pointer-events:none } }
@keyframes lpPhaseBoard { 0%,50% { opacity:0 } 60%,100% { opacity:1 } }

/* Chat demo in hero */
.lp-chat-demo { padding:16px; display:flex; flex-direction:column; gap:10px; min-height:200px }
.lp-chat-msg { font-size:13px; line-height:1.5; border-radius:12px; padding:10px 14px; max-width:85%;
  opacity:0; animation:lpFadeIn .5s forwards }
.lp-chat-user { background:var(--bg-elevated); align-self:flex-end; color:var(--text) }
.lp-chat-euler { display:flex; gap:8px; color:var(--text-muted) }
.lp-chat-avatar { width:22px; height:22px; border-radius:6px; background:linear-gradient(135deg,#34d399,#06b6d4);
  color:#000; font-size:10px; font-weight:700; display:grid; place-items:center; flex-shrink:0 }
.lp-chat-card { display:flex; flex-direction:column; gap:6px }
.lp-chat-btn { display:inline-block; padding:6px 14px; border-radius:8px; background:var(--accent);
  color:#000; font-size:12px; font-weight:600; width:fit-content }
.lp-ha1 { animation-delay:.3s } .lp-ha2 { animation-delay:1.2s } .lp-ha3 { animation-delay:2.4s }

/* ── Teaching modes section ── */
.lp-modes { padding:0 0 80px }
.lp-modes h2 { font-size:24px; font-weight:700; text-align:center; margin-bottom:8px }
.lp-modes-sub { text-align:center; font-size:14px; color:var(--text-muted); margin-bottom:32px }
.lp-modes-row { display:grid; grid-template-columns:1fr 1fr; gap:24px }
.lp-mode-card { border-radius:16px; background:var(--bg-surface); border:1px solid var(--border);
  overflow:hidden; transition:border-color .2s }
.lp-mode-card:hover { border-color:rgba(52,211,153,.3) }
.lp-mode-card h3 { font-size:18px; font-weight:700; padding:20px 24px 6px }
.lp-mode-card > p { font-size:14px; color:var(--text-muted); line-height:1.6; padding:0 24px 24px }

/* Board-mini — realistic session preview matching actual board */
.lp-mode-demo { padding:16px 16px 0 }
.lp-board-mini { border-radius:10px; background:#1a1d2e; border:1px solid rgba(255,255,255,.08);
  overflow:hidden; box-shadow:0 8px 32px rgba(0,0,0,.4) }
.lp-bm-header { display:flex; align-items:center; gap:8px; padding:8px 12px;
  border-bottom:1px solid rgba(255,255,255,.06); font-size:12px; color:var(--text-dim);
  background:rgba(0,0,0,.2) }
.lp-bm-badge { font-size:9px; font-weight:700; padding:2px 6px; border-radius:4px;
  background:rgba(52,211,153,.15); color:var(--accent); letter-spacing:.5px }
.lp-bm-right { margin-left:auto; display:flex; gap:2px }
.lp-bm-body { padding:20px 18px; min-height:180px; font-family:'Caveat',cursive;
  background-image:
    linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px);
  background-size:40px 40px }
.lp-bm-line { opacity:0; animation:lpFadeIn .5s forwards; margin-bottom:8px;
  text-shadow:0 0 4px currentColor }
.lp-bm-a1 { animation-delay:.3s } .lp-bm-a2 { animation-delay:.9s }
.lp-bm-a3 { animation-delay:1.5s } .lp-bm-a4 { animation-delay:2.1s }
.lp-bm-a5 { animation-delay:2.8s }
.lp-bm-b1 { animation-delay:.3s } .lp-bm-b2 { animation-delay:.9s }
.lp-bm-b3 { animation-delay:1.5s }
@keyframes lpFadeIn { to { opacity:1 } }
.lp-bm-input { padding:10px 14px; border-top:1px solid rgba(255,255,255,.06);
  font-size:12px; color:var(--text-dim); background:rgba(0,0,0,.15);
  display:flex; align-items:center; gap:8px }
.lp-bm-input::before { content:''; width:6px; height:6px; border-radius:50%;
  background:var(--accent); flex-shrink:0 }

/* Spatial board layout — elements positioned absolutely like real board */
.lp-bm-spatial { position:relative; min-height:220px }
.lp-bm-pos { position:absolute; max-width:55% }
.lp-bm-anim { animation:lpFadeIn .5s forwards }

/* Floating video thumbnail (top-right corner like real session) */
.lp-bm-vid-float { position:absolute; top:6px; right:6px; width:110px; border-radius:6px;
  overflow:hidden; box-shadow:0 4px 12px rgba(0,0,0,.5); z-index:2; border:1px solid rgba(255,255,255,.1) }
.lp-bm-vid-float img { width:100%; height:auto; display:block }
.lp-bm-vid-float .lp-bm-vid-badge { position:absolute; top:3px; right:3px }

/* Voice bars in board mini */
.lp-vbar { width:3px; height:10px; background:var(--accent); border-radius:2px;
  animation:lpVBar .5s ease-in-out infinite alternate }
.lp-vbar:nth-child(2) { animation-delay:.1s; height:14px }
.lp-vbar:nth-child(3) { animation-delay:.2s; height:8px }
@keyframes lpVBar { from { transform:scaleY(.5) } to { transform:scaleY(1.2) } }

/* Video badge */
.lp-bm-vid-badge { font-size:8px; font-weight:700;
  padding:2px 6px; border-radius:3px; background:rgba(239,68,68,.9); color:#fff }

/* ── Study aids section ── */
/* ── BYO section ── */
.lp-byo-section { padding:60px 0; border-top:1px solid var(--border) }
.lp-byo-inner { display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center }
.lp-byo-text h2 { font-size:28px; font-weight:700; line-height:1.3; margin-bottom:16px }
.lp-byo-text h2 em { color:var(--accent); font-style:normal }
.lp-byo-text > p { font-size:15px; color:var(--text-muted); line-height:1.7; margin-bottom:20px }
.lp-byo-list { list-style:none; padding:0; margin-bottom:24px }
.lp-byo-list li { padding:8px 0; font-size:14px; color:var(--text-muted); line-height:1.5;
  border-bottom:1px solid rgba(255,255,255,.04) }
.lp-byo-list li:last-child { border-bottom:none }
.lp-byo-list li strong { color:var(--text) }
.lp-byo-visual { display:flex; flex-direction:column; gap:10px }
.lp-byo-card { display:flex; align-items:center; gap:10px; padding:14px 16px; border-radius:12px;
  background:var(--bg-surface); border:1px solid var(--border); font-size:13px }
.lp-byo-card-icon { font-size:20px }
.lp-byo-card span:first-of-type { flex:1 }
.lp-byo-status { font-size:11px; font-weight:600; color:var(--accent); padding:2px 8px;
  border-radius:6px; background:rgba(52,211,153,.1) }
.lp-byo-processing { color:var(--text-dim); background:rgba(255,255,255,.05) }
.lp-byo-arrow { text-align:center; font-size:20px; color:var(--text-dim) }
.lp-byo-result { display:flex; align-items:center; gap:10px; padding:16px; border-radius:12px;
  background:rgba(52,211,153,.06); border:1px solid rgba(52,211,153,.2); font-size:14px;
  color:var(--accent); font-weight:500 }
.lp-byo-result-icon { font-size:20px }
@media (max-width:768px) { .lp-byo-inner { grid-template-columns:1fr; gap:32px } }

.lp-aids { padding:0 0 80px }
.lp-aids h2 { font-size:24px; font-weight:700; text-align:center; margin-bottom:10px }
.lp-aids-sub { text-align:center; font-size:14px; color:var(--text-muted); max-width:540px;
  margin:0 auto 32px; line-height:1.6 }
.lp-aids-row { display:grid; grid-template-columns:repeat(3,1fr); gap:20px }
.lp-aid-demo { border-radius:14px; background:var(--bg-surface); border:1px solid var(--border);
  overflow:hidden; transition:border-color .2s }
.lp-aid-demo:hover { border-color:rgba(52,211,153,.3) }
.lp-aid-frame { padding:20px }
.lp-aid-type { font-size:11px; font-weight:700; color:var(--accent); text-transform:uppercase;
  letter-spacing:.5px; margin-bottom:14px }
.lp-aid-card-demo { background:var(--bg); border-radius:10px; padding:16px;
  border:1px solid var(--border); margin-bottom:10px }
.lp-aid-q { font-size:14px; font-weight:600; margin-bottom:8px }
.lp-aid-a { font-size:14px; color:var(--accent); border-top:1px solid var(--border); padding-top:8px }
.lp-aid-meta { font-size:11px; color:var(--text-dim) }
.lp-aid-note-demo { display:flex; flex-direction:column; gap:6px }
.lp-aid-note-h { font-size:14px; font-weight:600; margin-bottom:4px }
.lp-aid-note-li { font-size:13px; color:var(--text-muted); padding-left:12px;
  border-left:2px solid var(--border) }
.lp-aid-audio-demo { display:flex; flex-direction:column; align-items:center; gap:12px; padding:16px 0 }
.lp-aid-audio-icon { font-size:32px }
.lp-aid-audio-wave { display:flex; gap:3px; align-items:center; height:24px }
.lp-aid-audio-wave span { width:3px; border-radius:2px; background:var(--accent);
  animation:lpAudioWave .6s ease-in-out infinite alternate }
.lp-aid-audio-wave span:nth-child(1) { height:8px; animation-delay:0s }
.lp-aid-audio-wave span:nth-child(2) { height:16px; animation-delay:.08s }
.lp-aid-audio-wave span:nth-child(3) { height:12px; animation-delay:.16s }
.lp-aid-audio-wave span:nth-child(4) { height:20px; animation-delay:.24s }
.lp-aid-audio-wave span:nth-child(5) { height:14px; animation-delay:.32s }
.lp-aid-audio-wave span:nth-child(6) { height:18px; animation-delay:.40s }
.lp-aid-audio-wave span:nth-child(7) { height:10px; animation-delay:.48s }
.lp-aid-audio-wave span:nth-child(8) { height:16px; animation-delay:.56s }
@keyframes lpAudioWave { from { transform:scaleY(.4) } to { transform:scaleY(1) } }
.lp-aid-audio-meta { font-size:11px; color:var(--text-dim) }

/* ── Platform grid ── */
.lp-platform { padding:0 0 80px }
.lp-platform h2 { font-size:24px; font-weight:700; text-align:center; margin-bottom:8px }
.lp-platform-sub { text-align:center; font-size:14px; color:var(--text-muted); margin-bottom:32px }
.lp-platform-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.lp-plat-item { padding:24px; border-radius:14px; background:var(--bg-surface);
  border:1px solid var(--border); transition:border-color .2s }
.lp-plat-item:hover { border-color:rgba(52,211,153,.3) }
.lp-plat-icon { font-size:28px; margin-bottom:12px }
.lp-plat-item h4 { font-size:15px; font-weight:600; margin-bottom:6px }
.lp-plat-item p { font-size:13px; color:var(--text-muted); line-height:1.6 }

/* ── Try it now ── */
.lp-try { padding:0 0 60px; text-align:center }
.lp-try h2 { font-size:28px; font-weight:700; margin-bottom:8px }
.lp-try-sub { font-size:15px; color:var(--text-muted); margin-bottom:24px }
.lp-try-input-wrap { display:flex; gap:10px; max-width:560px; margin:0 auto 20px }
.lp-try-input { flex:1; padding:14px 18px; border-radius:14px; background:var(--bg-surface);
  border:1px solid var(--border); color:var(--text); font-size:15px; outline:none;
  transition:border-color .2s }
.lp-try-input:focus { border-color:var(--accent) }
.lp-try-input::placeholder { color:var(--text-dim) }
.lp-try-btn { padding:14px 28px; border-radius:14px; background:var(--accent); color:#000;
  font-size:15px; font-weight:600; border:none; cursor:pointer; white-space:nowrap;
  transition:opacity .15s }
.lp-try-btn:hover { opacity:.85 }
.lp-try-chips { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; max-width:600px; margin:0 auto }
.lp-try-chip { padding:8px 16px; border-radius:20px; background:var(--bg-surface);
  border:1px solid var(--border); font-size:13px; color:var(--text-muted); cursor:pointer;
  transition:border-color .2s, color .2s }
.lp-try-chip:hover { border-color:var(--accent); color:var(--text) }

/* ── Responsive landing ── */
@media (max-width:768px) {
  .lp-modes-row { grid-template-columns:1fr }
  .lp-aids-row { grid-template-columns:1fr }
  .lp-platform-grid { grid-template-columns:1fr 1fr }
  .lp-try-grid { flex-direction:column; align-items:center }
}
@media (max-width:480px) {
  .lp-platform-grid { grid-template-columns:1fr }
}

/* ── Social proof ── */
.lp-social { padding:0 0 80px }
.lp-stats { display:flex; justify-content:center; gap:48px; margin-bottom:48px }
.lp-stat { text-align:center }
.lp-stat-n { font-size:36px; font-weight:800; letter-spacing:-1px;
  background:linear-gradient(135deg,#34d399,#5eead4); -webkit-background-clip:text;
  -webkit-text-fill-color:transparent }
.lp-stat-l { font-size:13px; color:var(--text-muted); margin-top:4px }
.lp-testimonials { display:grid; grid-template-columns:repeat(3,1fr); gap:20px }
.lp-testimonial { padding:24px; border-radius:14px; background:var(--bg-surface);
  border:1px solid var(--border) }
.lp-testimonial p { font-size:14px; line-height:1.65; color:var(--text); margin-bottom:14px;
  font-style:italic }
.lp-testimonial-author { font-size:12px; color:var(--text-dim) }
.lp-testimonial-author strong { color:var(--text-muted); font-weight:600 }

/* ── Courses ── */
.lp-courses { padding:0 0 80px }
.lp-courses h2 { font-size:24px; font-weight:700; text-align:center; margin-bottom:6px }
.lp-courses-sub { text-align:center; font-size:14px; color:var(--text-muted); margin-bottom:28px }

/* ── Final CTA ── */
.lp-final-cta { text-align:center; padding:40px 0 60px;
  border-top:1px solid var(--border); margin-top:20px }
.lp-final-cta h2 { font-size:32px; font-weight:700; margin-bottom:8px }
.lp-final-cta p { font-size:15px; color:var(--text-muted); margin-bottom:24px }

/* ── Footer ── */
.lp-footer { padding:40px 0; border-top:1px solid var(--border); font-size:13px; color:var(--text-dim) }
.lp-footer-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px }
.lp-footer-links { display:flex; gap:24px; margin-left:32px }
.lp-footer-links a { color:var(--text-muted); text-decoration:none; transition:color .15s; font-size:13px }
.lp-footer-links a:hover { color:var(--accent) }
.lp-footer-bottom { display:flex; align-items:center; justify-content:space-between;
  padding-top:16px; border-top:1px solid rgba(255,255,255,.04) }
.lp-footer-contact { color:var(--text-muted) }

@media (max-width:768px) {
  .lp-hero { grid-template-columns:1fr; gap:32px }
  .lp-hero-board { display:none }
  .lp-diff-grid { grid-template-columns:1fr; }
  .lp-testimonials { grid-template-columns:1fr }
  .lp-stats { flex-direction:column; gap:16px }
}

/* ── Paths ─── */
.paths { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--border);
  border-radius:16px; overflow:hidden; margin:80px 0 }
.path { padding:36px 32px; background:var(--bg-surface); cursor:pointer; transition:background .3s; position:relative }
.path:hover { background:var(--bg-elevated) }
.path-badge { position:absolute; top:14px; right:14px; padding:3px 8px; border-radius:5px;
  background:var(--accent); color:#09090b; font-size:10px; font-weight:700; letter-spacing:.5px; text-transform:uppercase }
.path h3 { font-size:16px; font-weight:600; margin-bottom:8px; display:flex; align-items:center; gap:10px }
.path-ico { width:30px; height:30px; border-radius:8px; background:rgba(52,211,153,.1); color:var(--accent);
  display:inline-grid; place-items:center; font-size:14px; flex-shrink:0 }
.path p { font-size:13px; color:var(--text-muted); line-height:1.6; margin-bottom:14px; max-width:400px }
.path-link { font-size:13px; font-weight:600; color:var(--accent); opacity:0; transform:translateX(-4px);
  transition:all .25s cubic-bezier(.16,1,.3,1) }
.path:hover .path-link { opacity:1; transform:none }

/* ── Steps ─── */
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:32px; padding:0 0 80px }
.steps-label { grid-column:1/-1; font-size:12px; font-weight:600; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--text-dim); margin-bottom:0 }
.step { position:relative; padding-left:24px }
.step::before { content:attr(data-n); position:absolute; left:0; top:2px; font-size:12px; font-weight:700;
  color:var(--accent); font-variant-numeric:tabular-nums }
.step h4 { font-size:15px; font-weight:600; margin-bottom:6px }
.step p { font-size:13px; color:var(--text-muted); line-height:1.6 }

/* ── Preview cards ─── */
.previews { padding-bottom:100px }
.previews-label { font-size:12px; font-weight:600; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--text-dim); margin-bottom:20px }
.previews-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.pcard { border-radius:14px; overflow:hidden; background:var(--bg-surface); cursor:pointer;
  transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s }
.pcard:hover { transform:translateY(-4px); box-shadow:0 20px 60px rgba(0,0,0,.35) }
.pcard-thumb { height:140px; position:relative; display:grid; place-items:center; overflow:hidden }
.pcard-thumb .sym { font-size:44px; opacity:.1 }
.pcard-thumb .count { position:absolute; top:10px; right:10px; padding:3px 9px; border-radius:5px;
  background:rgba(0,0,0,.5); backdrop-filter:blur(6px); font-size:11px; font-weight:600; color:var(--text-muted) }
.pcard-body { padding:14px 16px }
.pcard-body h4 { font-size:14px; font-weight:600; margin-bottom:3px }
.pcard-body span { font-size:12px; color:var(--text-dim) }

/* ── Home tabs ─── */
.home-tabs { display:flex; gap:2px; padding:0 20px; border-bottom:1px solid var(--border);
  background:var(--bg); position:sticky; top:0; z-index:10 }
.home-tab { display:flex; align-items:center; gap:6px; padding:10px 16px; background:none;
  border:none; color:var(--text-dim); font-size:13px; font-weight:500; cursor:pointer;
  border-bottom:2px solid transparent; transition:color .15s, border-color .15s }
.home-tab:hover { color:var(--text) }
.home-tab.active { color:var(--text); border-bottom-color:var(--accent) }
.home-tab svg { flex-shrink:0 }
.home-tab-content { display:none }
.home-tab-content.active { display:block; height:100% }

/* Explore tab */
.explore-header { display:flex; align-items:center; justify-content:space-between; padding:20px 0 16px }
.explore-header h2 { font-size:18px; font-weight:600 }

/* Explore hero */
.explore-hero { padding:28px 0 24px; text-align:center }
.explore-hero h2 { font-size:22px; font-weight:700; margin-bottom:8px }
.explore-hero-sub { font-size:14px; color:var(--text-muted); max-width:520px; margin:0 auto 20px; line-height:1.6 }
.explore-search-lg { width:100%; max-width:480px; margin:0 auto; padding:12px 18px; border-radius:14px }
.explore-search-input-lg { font-size:15px; flex:1; background:none; border:none; outline:none;
  color:var(--text) }
.explore-search-input-lg::placeholder { color:var(--text-dim) }
.explore-no-match { text-align:center; padding:40px 0; color:var(--text-dim) }
.explore-no-match-sub { font-size:13px; margin-top:6px }
.sec-count { font-size:13px; color:var(--text-dim); font-weight:400 }

/* Session cards in Explore tab */
.session-row { display:flex; gap:12px; overflow-x:auto; padding-bottom:8px; scrollbar-width:thin }
.session-card { min-width:240px; max-width:280px; padding:16px; border-radius:12px;
  background:var(--bg-surface); border:1px solid var(--border); cursor:pointer;
  transition:border-color .2s, transform .15s, box-shadow .2s; flex-shrink:0 }
.session-card:hover { border-color:var(--accent); transform:translateY(-2px);
  box-shadow:0 4px 12px rgba(0,0,0,.2) }
.session-card-course { border-left:3px solid rgba(52,211,153,.4) }
.session-card-course:hover { border-left-color:var(--accent) }
.session-card-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px }
.session-card-meta-right { display:flex; align-items:center; gap:8px }
.session-card-time { font-size:11px; color:var(--text-dim) }
.session-card-dur { font-size:11px; color:var(--text-dim) }
.session-card-badge { font-size:10px; font-weight:600; color:var(--accent);
  margin-bottom:6px; text-transform:uppercase; letter-spacing:.3px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.session-card-score { font-size:10px; font-weight:600; padding:1px 6px; border-radius:6px;
  background:rgba(255,255,255,.06); color:var(--text-dim) }
.session-card-score.good { background:rgba(52,211,153,.15); color:#34d399 }
.session-card-score.ok { background:rgba(251,191,36,.12); color:#fbbf24 }
.session-card-title { font-size:13px; font-weight:600; margin-bottom:4px; line-height:1.4;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.session-card-desc { font-size:12px; color:var(--text-muted); line-height:1.4; margin-bottom:8px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.session-card-topics { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px }
.session-card-topic { font-size:10px; padding:2px 8px; border-radius:10px;
  background:var(--bg-elevated); color:var(--text-dim) }
.session-card-cta { font-size:12px; color:var(--accent); font-weight:600; margin-top:auto }
.session-card-video { border-left:3px solid rgba(139,92,246,.4) }
.session-card-video:hover { border-left-color:#a78bfa }
.video-card-badge { font-size:10px; font-weight:600; color:#a78bfa }
.video-card-thumb { width:100%; aspect-ratio:16/9; background-size:cover; background-position:center;
  border-radius:8px; margin-bottom:8px; position:relative; overflow:hidden }
.video-card-thumb::after { content:''; position:absolute; inset:0; background:rgba(0,0,0,.2) }
.video-card-play { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  font-size:24px; color:#fff; z-index:1; opacity:.8; text-shadow:0 2px 8px rgba(0,0,0,.5) }
.session-empty { font-size:13px; color:var(--text-dim); padding:20px 0 }
.explore-search-sm { width:200px; padding:6px 12px; border-radius:8px }
.explore-search-input-sm { font-size:13px; flex:1; background:none; border:none; outline:none;
  color:var(--text) }
.explore-search-input-sm::placeholder { color:var(--text-dim) }

/* Materials page sections */
.mat-section { margin-bottom:32px }
.mat-section-header { margin-bottom:16px }
.mat-header-row { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px }
.mat-header-row h2 { font-size:18px; font-weight:600; margin:0 }
.mat-search { display:flex; align-items:center; gap:6px; padding:6px 12px; border-radius:8px;
  background:var(--bg-surface); border:1px solid var(--border); width:200px; transition:border-color .2s }
.mat-search:focus-within { border-color:var(--accent) }
.mat-search input { flex:1; background:none; border:none; outline:none; color:var(--text);
  font-size:13px }
.mat-search input::placeholder { color:var(--text-dim) }
.mat-section-header h2 { font-size:18px; font-weight:600; margin-bottom:6px }
.mat-section-sub { font-size:13px; color:var(--text-muted); line-height:1.6; max-width:560px }
.explore-search { display:flex; align-items:center; gap:8px; padding:8px 14px; border-radius:10px;
  background:var(--bg-surface); border:1px solid var(--border); width:260px; transition:border-color .2s }
.explore-search:focus-within { border-color:var(--accent) }
.explore-search svg { color:var(--text-dim); flex-shrink:0 }
.explore-search input { flex:1; background:none; border:none; outline:none; color:var(--text);
  font-size:13px }
.explore-search input::placeholder { color:var(--text-dim) }

/* Learning aids grid */
.aids-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:12px; padding-bottom:40px }
.aids-empty { grid-column:1/-1; text-align:center; padding:40px 0; color:var(--text-dim); font-size:13px }
.aid-card { padding:16px; border-radius:12px; background:var(--bg-surface); border:1px solid var(--border);
  cursor:pointer; transition:transform .2s, border-color .2s }
.aid-card:hover { transform:translateY(-2px); border-color:rgba(52,211,153,.3) }
.aid-icon { font-size:24px; margin-bottom:8px }
.aid-title { font-size:13px; font-weight:600; margin-bottom:4px; line-height:1.3;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.aid-meta { font-size:11px; color:var(--text-dim); text-transform:uppercase }
.aid-sr-badge { font-size:10px; margin-top:8px; padding:3px 8px; border-radius:4px; width:fit-content }
.aid-sr-due { background:rgba(251,191,36,.1); color:#fbbf24 }
.aid-sr-ok { background:rgba(52,211,153,.08); color:var(--accent) }
.sec-sub { font-size:12px; color:var(--text-dim); font-weight:400 }

.browse-sub { font-size:15px; color:var(--text-muted); margin-bottom:20px }
.browse-search-bar { display:flex; align-items:center; gap:10px; padding:12px 18px; border-radius:14px;
  background:var(--bg-surface); border:1px solid var(--border); max-width:520px; margin:0 auto;
  transition:border-color .2s }
.browse-search-bar:focus-within { border-color:var(--accent) }
.browse-search-bar svg { color:var(--text-dim); flex-shrink:0 }
.browse-search-bar input { flex:1; background:none; border:none; outline:none; color:var(--text);
  font-size:15px }
.browse-search-bar input::placeholder { color:var(--text-dim) }

/* ── Euler — Home screen AI companion ─── */

/* Panel container */
.euler-panel { padding:0 20px }
/* Active chat goes full width for the split layout with preview panel */
.euler-chat { margin:0 }

/* ── Idle state: hero input + capabilities ── */
.euler-idle { display:flex; flex-direction:column; align-items:center;
  animation:eulerFadeIn .4s ease-out; padding-top:40px }
.euler-idle-center { text-align:center; width:100%; max-width:620px; margin:0 auto }
.home-browse-section { width:100%; max-width:900px; margin:36px auto 0; text-align:left; overflow:visible }

/* ── Home section skeleton loading ── */
.home-section-skeleton { display:flex; gap:12px; overflow:hidden }
.skeleton-card { min-width:240px; height:120px; border-radius:12px;
  background:var(--surface); position:relative; overflow:hidden }
.skeleton-card::after { content:''; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.04), transparent);
  animation:skeletonShimmer 1.5s infinite }
.skeleton-course { min-width:220px; height:200px; border-radius:14px;
  background:var(--surface); position:relative; overflow:hidden }
.skeleton-course::after { content:''; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.04), transparent);
  animation:skeletonShimmer 1.5s infinite }
@keyframes skeletonShimmer { 0%{transform:translateX(-100%)} 100%{transform:translateX(100%)} }

/* Section fade-in when loaded */
.home-section-reveal { animation:homeSectionIn .4s ease-out both }
@keyframes homeSectionIn { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }
.euler-idle-center h1 { font-size:28px; font-weight:700; letter-spacing:-.5px; margin-bottom:16px }

/* Capabilities showcase */
.cap-section { width:100%; max-width:900px; margin:40px auto 0; text-align:left }
.cap-heading { text-align:center; font-size:13px; color:var(--text-dim); font-weight:600;
  text-transform:uppercase; letter-spacing:1.5px; margin-bottom:24px }
.cap-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px }
.cap-card { padding:22px; border-radius:16px; cursor:pointer; position:relative;
  overflow:hidden; transition:transform .25s, box-shadow .25s;
  border:1px solid rgba(255,255,255,.06) }
.cap-card::before { content:''; position:absolute; top:0; left:0; right:0; height:3px;
  opacity:0; transition:opacity .25s }
.cap-card:hover { transform:translateY(-3px); box-shadow:0 8px 24px rgba(0,0,0,.3) }
.cap-card:hover::before { opacity:1 }
/* Card accent colors — gradient backgrounds + top bar */
.cap-card:nth-child(1) { background:linear-gradient(135deg,rgba(96,165,250,.08) 0%,rgba(59,130,246,.02) 100%) }
.cap-card:nth-child(1)::before { background:linear-gradient(90deg,#60a5fa,#3b82f6) }
.cap-card:nth-child(1):hover { border-color:rgba(96,165,250,.25) }
.cap-card:nth-child(2) { background:linear-gradient(135deg,rgba(167,139,250,.08) 0%,rgba(139,92,246,.02) 100%) }
.cap-card:nth-child(2)::before { background:linear-gradient(90deg,#a78bfa,#8b5cf6) }
.cap-card:nth-child(2):hover { border-color:rgba(167,139,250,.25) }
.cap-card:nth-child(3) { background:linear-gradient(135deg,rgba(251,191,36,.08) 0%,rgba(245,158,11,.02) 100%) }
.cap-card:nth-child(3)::before { background:linear-gradient(90deg,#fbbf24,#f59e0b) }
.cap-card:nth-child(3):hover { border-color:rgba(251,191,36,.25) }
.cap-card:nth-child(4) { background:linear-gradient(135deg,rgba(52,211,153,.08) 0%,rgba(16,185,129,.02) 100%) }
.cap-card:nth-child(4)::before { background:linear-gradient(90deg,#34d399,#10b981) }
.cap-card:nth-child(4):hover { border-color:rgba(52,211,153,.25) }
.cap-card:nth-child(5) { background:linear-gradient(135deg,rgba(251,113,133,.08) 0%,rgba(244,63,94,.02) 100%) }
.cap-card:nth-child(5)::before { background:linear-gradient(90deg,#fb7185,#f43f5e) }
.cap-card:nth-child(5):hover { border-color:rgba(251,113,133,.25) }
.cap-card:nth-child(6) { background:linear-gradient(135deg,rgba(34,211,238,.08) 0%,rgba(6,182,212,.02) 100%) }
.cap-card:nth-child(6)::before { background:linear-gradient(90deg,#22d3ee,#06b6d4) }
.cap-card:nth-child(6):hover { border-color:rgba(34,211,238,.25) }
.cap-icon-wrap { width:40px; height:40px; border-radius:12px; display:grid;
  place-items:center; margin-bottom:14px }
.cap-icon-blue { background:rgba(96,165,250,.15); color:#60a5fa }
.cap-icon-purple { background:rgba(167,139,250,.15); color:#a78bfa }
.cap-icon-amber { background:rgba(251,191,36,.15); color:#fbbf24 }
.cap-icon-green { background:rgba(52,211,153,.15); color:#34d399 }
.cap-icon-rose { background:rgba(251,113,133,.15); color:#fb7185 }
.cap-icon-cyan { background:rgba(34,211,238,.15); color:#22d3ee }
.cap-card h3 { font-size:15px; font-weight:700; margin-bottom:8px; color:var(--text) }
.cap-card p { font-size:12.5px; color:var(--text-muted); line-height:1.65; margin-bottom:12px }
.cap-cta { font-size:12px; font-weight:600; opacity:0; transition:opacity .2s }
.cap-card:nth-child(1) .cap-cta { color:#60a5fa }
.cap-card:nth-child(2) .cap-cta { color:#a78bfa }
.cap-card:nth-child(3) .cap-cta { color:#fbbf24 }
.cap-card:nth-child(4) .cap-cta { color:#34d399 }
.cap-card:nth-child(5) .cap-cta { color:#fb7185 }
.cap-card:nth-child(6) .cap-cta { color:#22d3ee }
.cap-card:hover .cap-cta { opacity:1 }

/* ── Animated previews inside capability cards ── */
.cap-preview { height:100px; border-radius:10px; margin-bottom:14px; overflow:hidden;
  background:rgba(0,0,0,.25); display:flex; align-items:center; justify-content:center;
  position:relative; padding:10px }

/* 1. Board teaching — chalk writing animation */
.cap-preview-board { flex-direction:column; gap:4px; font-family:'ChalkBoard',var(--font-board),cursive }
.cap-board-line { opacity:0; animation:capFadeIn .6s ease forwards; font-size:14px }
.cap-bl-1 { color:#fbbf24; font-size:18px; font-weight:700; animation-delay:.3s }
.cap-bl-2 { color:var(--text-muted); font-size:11px; animation-delay:1s }
.cap-bl-3 { position:absolute; right:14px; bottom:8px; font-size:18px; color:var(--accent);
  animation:capWrite 2s ease-in-out infinite }
.cap-board-curve { position:absolute; right:10px; top:10px; width:120px; height:40px; opacity:.4 }
@keyframes capFadeIn { to { opacity:1 } }
@keyframes capWrite { 0%,100% { transform:translate(0,0) } 50% { transform:translate(-20px,-8px) } }

/* 2. Video — split view with chat bubble */
.cap-preview-video { gap:6px; padding:8px }
.cap-vid-player { flex:1; background:#111; border-radius:6px; overflow:hidden; height:80px; display:flex;
  flex-direction:column; justify-content:space-between }
.cap-vid-screen { flex:1; display:grid; place-items:center; color:#a78bfa; font-size:20px }
.cap-vid-progress { height:3px; background:rgba(255,255,255,.1) }
.cap-vid-bar { height:100%; width:0; background:#a78bfa; animation:capProgress 4s linear infinite }
.cap-vid-chat { width:80px; display:flex; flex-direction:column; justify-content:flex-end }
.cap-vid-bubble { background:rgba(167,139,250,.15); border:1px solid rgba(167,139,250,.2);
  border-radius:8px; padding:6px 8px; font-size:9px; color:var(--text-muted); line-height:1.3;
  animation:capFadeIn 1s ease forwards; animation-delay:1.5s; opacity:0 }
@keyframes capProgress { 0% { width:0 } 100% { width:100% } }

/* 3. Exam prep — progress + topics */
.cap-preview-exam { flex-direction:column; gap:8px; padding:12px }
.cap-exam-progress { width:100%; height:6px; background:rgba(255,255,255,.06); border-radius:3px; overflow:hidden }
.cap-exam-bar { height:100%; background:linear-gradient(90deg,#34d399,#fbbf24); border-radius:3px;
  width:var(--pct); font-size:0; animation:capGrow 2s ease forwards }
.cap-exam-topics { display:flex; flex-wrap:wrap; gap:4px }
.cap-et { font-size:10px; padding:2px 8px; border-radius:8px; background:rgba(255,255,255,.04);
  color:var(--text-dim) }
.cap-et.done { color:#34d399; background:rgba(52,211,153,.1) }
.cap-et.active { color:#fbbf24; background:rgba(251,191,36,.1); animation:capPulse 1.5s ease infinite }
@keyframes capGrow { from { width:0 } }
@keyframes capPulse { 0%,100% { opacity:1 } 50% { opacity:.5 } }

/* 4. Study aids — flashcard stack */
.cap-preview-aids { flex-direction:column; gap:8px }
.cap-fc-stack { position:relative; width:140px; height:55px }
.cap-fc { position:absolute; width:100%; border-radius:8px; padding:8px 12px; font-size:12px;
  font-weight:600; text-align:center; backface-visibility:hidden; transition:transform .6s }
.cap-fc-front { background:rgba(52,211,153,.12); border:1px solid rgba(52,211,153,.2); color:#34d399;
  z-index:2; animation:capFlip 4s ease-in-out infinite }
.cap-fc-back { background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); color:var(--text-muted);
  font-size:10px; font-weight:400; top:4px; left:4px; width:calc(100% - 8px) }
.cap-aids-tags { display:flex; gap:6px }
.cap-aids-tags span { font-size:9px; color:var(--text-dim); background:rgba(255,255,255,.04);
  padding:2px 8px; border-radius:6px }
@keyframes capFlip { 0%,40% { transform:rotateX(0) } 50%,90% { transform:rotateX(10deg) translateY(-4px) } }

/* 5. BYO materials — files → teaching */
.cap-preview-byo { gap:8px; padding:10px }
.cap-byo-files { display:flex; flex-direction:column; gap:4px }
.cap-byo-file { font-size:10px; padding:4px 8px; border-radius:6px; white-space:nowrap }
.cap-byo-pdf { background:rgba(251,113,133,.1); color:#fb7185 }
.cap-byo-vid { background:rgba(167,139,250,.1); color:#a78bfa }
.cap-byo-arrow { font-size:18px; color:var(--text-dim); animation:capArrow 2s ease infinite }
.cap-byo-result { font-size:10px; color:var(--accent); font-weight:600; text-align:center;
  animation:capFadeIn 1s ease forwards; animation-delay:1s; opacity:0 }
@keyframes capArrow { 0%,100% { transform:translateX(0) } 50% { transform:translateX(4px) } }

/* 6. Audio — waveform */
.cap-preview-audio { flex-direction:column; gap:10px }
.cap-audio-wave { display:flex; align-items:center; gap:3px; height:30px }
.cap-audio-wave span { width:3px; border-radius:2px; background:#22d3ee;
  animation:capWave 1.2s ease-in-out infinite }
.cap-audio-wave span:nth-child(1) { height:10px; animation-delay:0s }
.cap-audio-wave span:nth-child(2) { height:20px; animation-delay:.1s }
.cap-audio-wave span:nth-child(3) { height:28px; animation-delay:.2s }
.cap-audio-wave span:nth-child(4) { height:16px; animation-delay:.3s }
.cap-audio-wave span:nth-child(5) { height:24px; animation-delay:.4s }
.cap-audio-wave span:nth-child(6) { height:12px; animation-delay:.5s }
.cap-audio-wave span:nth-child(7) { height:22px; animation-delay:.6s }
.cap-audio-wave span:nth-child(8) { height:18px; animation-delay:.7s }
.cap-audio-wave span:nth-child(9) { height:26px; animation-delay:.8s }
.cap-audio-wave span:nth-child(10) { height:14px; animation-delay:.9s }
@keyframes capWave { 0%,100% { transform:scaleY(1) } 50% { transform:scaleY(.3) } }
.cap-audio-label { font-size:11px; color:var(--text-dim) }

@media (max-width:768px) {
  .cap-grid { grid-template-columns:repeat(2,1fr) }
  .cap-section { margin-top:28px }
  .euler-idle { padding-top:24px }
}
@media (max-width:500px) {
  .cap-grid { grid-template-columns:1fr }
  .cap-card { padding:16px }
  .euler-idle-center h1 { font-size:22px }
}

/* ── Active state: split layout — chat + artifact preview ── */
.euler-chat { display:flex; height:calc(100vh - 110px) }
.euler-chat-main { display:flex; flex-direction:column; flex:1; min-width:360px }
.euler-chat-header { display:flex; align-items:center; justify-content:space-between;
  padding:10px 16px; border-bottom:1px solid var(--border); flex-shrink:0 }
.euler-chat-header-left { display:flex; align-items:center; gap:10px }
.euler-chat-title { font-size:14px; font-weight:600; color:var(--text) }
.euler-home-btn { display:flex; align-items:center; gap:4px; padding:5px 10px; border-radius:6px;
  background:none; border:1px solid var(--border); color:var(--text-dim); font-size:12px;
  cursor:pointer; transition:color .15s, border-color .15s }
.euler-home-btn:hover { color:var(--text); border-color:var(--text-dim) }
.euler-home-btn svg { flex-shrink:0 }
.euler-clear-btn { padding:5px 12px; border-radius:6px; background:none;
  border:1px solid var(--border); color:var(--text-dim); font-size:12px;
  cursor:pointer; transition:color .15s, border-color .15s }
.euler-clear-btn:hover { color:var(--text); border-color:var(--text-dim) }

/* Artifact preview panel (right side) — shares space 50/50 with chat */
.euler-preview { flex:1; min-width:0; border-left:1px solid var(--border);
  display:flex; flex-direction:column; background:var(--bg);
  animation:epSlideIn .25s ease-out }
@keyframes epSlideIn { from { opacity:0; transform:translateX(20px) } to { opacity:1; transform:none } }
.ep-header { display:flex; align-items:center; justify-content:space-between;
  padding:10px 16px; border-bottom:1px solid var(--border); flex-shrink:0 }
.ep-header-left { display:flex; align-items:center; gap:8px; min-width:0 }
.ep-type { font-size:10px; font-weight:700; text-transform:uppercase; color:var(--accent);
  background:rgba(52,211,153,.08); padding:2px 8px; border-radius:4px; flex-shrink:0 }
.ep-title { font-size:14px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.ep-actions { display:flex; gap:6px; flex-shrink:0 }
.ep-btn { padding:5px 12px; border-radius:6px; font-size:12px; border:1px solid var(--border);
  cursor:pointer; transition:all .15s; background:none; color:var(--text-muted) }
.ep-btn:hover { border-color:var(--text-dim); color:var(--text) }
.ep-save { color:var(--accent); border-color:rgba(52,211,153,.3) }
.ep-close { font-size:16px; line-height:1; padding:4px 8px }
.ep-body { flex:1; overflow-y:auto; padding:16px; scrollbar-width:thin }

/* File viewers in preview panel */
.ep-file-viewer { width:100%; border:none; border-radius:8px }
.ep-pdf { height:100%; min-height:500px }
.ep-video { max-height:60vh; border-radius:8px; background:#000 }
.ep-image { max-width:100%; height:auto; border-radius:8px }
.ep-audio-wrap { display:flex; flex-direction:column; align-items:center; gap:12px; padding:40px 20px }
.ep-audio-icon { font-size:48px }
.ep-audio-title { font-size:16px; font-weight:600; text-align:center; color:var(--text) }
.ep-audio-duration { font-size:12px; color:var(--text-dim) }
.ep-audio { width:100%; max-width:400px }
.ep-unsupported { display:flex; flex-direction:column; align-items:center; gap:12px;
  padding:40px 0; color:var(--text-dim); text-align:center }
.ep-unsupported-icon { font-size:48px; opacity:.5 }
.ep-unsupported-text { font-size:14px }
.ep-download-btn { padding:8px 20px; border-radius:8px; background:var(--accent);
  color:var(--bg); font-size:13px; font-weight:600; text-decoration:none;
  transition:opacity .15s }
.ep-download-btn:hover { opacity:.85 }

/* Resource list in preview panel */
.ep-resource-list { display:flex; flex-direction:column; gap:4px }
.ep-resource-item { display:flex; align-items:center; gap:10px; padding:10px 12px;
  border-radius:8px; cursor:pointer; transition:background .15s; border:1px solid var(--border) }
.ep-resource-item:hover { background:var(--bg-elevated) }
.ep-resource-icon { font-size:20px; flex-shrink:0 }
.ep-resource-name { flex:1; font-size:13px; font-weight:500; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap }
.ep-resource-size { font-size:11px; color:var(--text-dim); flex-shrink:0 }

/* Preview panel content */
.ep-fc { padding:14px; border-radius:10px; background:var(--bg-surface); border:1px solid var(--border);
  margin-bottom:10px }
.ep-fc-q { font-size:14px; font-weight:500; margin-bottom:6px; line-height:1.5 }
.ep-fc-a { font-size:13px; color:var(--text-muted); line-height:1.5; padding-top:6px;
  border-top:1px solid var(--border) }
.ep-fc-count { text-align:center; font-size:11px; color:var(--text-dim); padding:8px 0 }
.ep-step { display:flex; gap:12px; margin-bottom:14px }
.ep-step-n { width:24px; height:24px; border-radius:6px; background:rgba(52,211,153,.08);
  color:var(--accent); font-weight:700; font-size:12px; display:grid; place-items:center; flex-shrink:0 }
.ep-step-title { font-size:14px; font-weight:600; margin-bottom:2px }
.ep-step-desc { font-size:13px; color:var(--text-muted); line-height:1.5 }
.ep-problem { margin-bottom:14px }
.ep-problem-q { font-size:14px; margin-bottom:6px; line-height:1.5 }
.ep-problem-sol { font-size:13px; color:var(--text-muted) }
.ep-problem-sol summary { cursor:pointer; color:var(--accent); font-size:12px; margin-bottom:4px }

@media (max-width:900px) {
  .euler-preview { width:100%; position:fixed; bottom:0; left:0; right:0; height:50vh;
    border-left:none; border-top:1px solid var(--border); z-index:20 }
}

/* ── Responsive: homepage components ── */
@media (max-width:768px) {
  /* Tabs */
  .home-tabs { padding:0 12px }
  .home-tab { padding:10px 12px; font-size:12px }

  /* Idle state */
  .euler-panel { padding:0 14px }
  .euler-idle { padding-top:24px }
  .euler-idle-center h1 { font-size:22px }
  .euler-input { font-size:14px }
  .euler-chip { font-size:12px; padding:5px 12px }

  /* Explore */
  .explore-hero h2 { font-size:18px }
  .explore-hero-sub { font-size:13px }
  .c-grid { grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px }
  .ccard-thumb { height:120px }
  .sc-wrap { padding:0 14px }

  /* Materials */
  .mat-section-header h2 { font-size:16px }
  .byo-upload-zone { max-width:100% }
  .byo-material-card { width:160px }
  .aids-grid { grid-template-columns:repeat(auto-fill,minmax(140px,1fr)) }

  /* Chat */
  .euler-msg { max-width:100% }
  .euler-chat-input { max-width:100% }
}

@media (max-width:480px) {
  .euler-idle-center h1 { font-size:20px }
  .c-grid { grid-template-columns:1fr }
  .ccard-thumb { height:140px }
  .byo-material-card { width:100% }
  .byo-link-row { flex-direction:column }
  .byo-link-btn { width:100% }
  .aids-grid { grid-template-columns:repeat(auto-fill,minmax(120px,1fr)) }
  .explore-search-lg { padding:10px 14px }
}
.euler-messages { flex:1; overflow-y:auto; padding:20px 16px 12px; display:flex;
  flex-direction:column; gap:12px; scrollbar-width:thin; scrollbar-color:var(--border) transparent }
.euler-msg { max-width:720px }
.euler-messages::-webkit-scrollbar { width:5px }
.euler-messages::-webkit-scrollbar-thumb { background:var(--border); border-radius:3px }
.euler-chat-input { flex-shrink:0; padding:8px 16px 16px; border-top:1px solid var(--border);
  background:var(--bg); max-width:720px }

/* ── Shared input bar ── */
.euler-input-bar { display:flex; align-items:flex-end; gap:10px; padding:10px 14px;
  border-radius:16px; background:var(--bg-surface); border:1px solid var(--border);
  transition:border-color .2s, box-shadow .2s }
.euler-input-bar:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px rgba(52,211,153,.08) }
.euler-input-bar.drag-over, .lp-hero-input-wrap.drag-over { border-color:var(--accent); box-shadow:0 0 0 3px rgba(52,211,153,.15); background:rgba(52,211,153,.04) }
.euler-avatar { width:28px; height:28px; border-radius:8px; background:linear-gradient(135deg,#34d399,#06b6d4);
  color:#000; font-weight:700; font-size:13px; display:grid; place-items:center; flex-shrink:0; margin-bottom:2px }
.euler-input { flex:1; background:none; border:none; outline:none; color:var(--text);
  font-size:15px; resize:none; line-height:1.5; max-height:120px; padding:4px 0 }
.euler-input::placeholder { color:var(--text-dim) }
.euler-attach { width:32px; height:32px; border-radius:8px; background:none; border:none;
  color:var(--text-dim); display:grid; place-items:center; cursor:pointer; flex-shrink:0;
  margin-bottom:2px; transition:color .15s }
.euler-attach:hover { color:var(--text) }
.euler-send { width:32px; height:32px; border-radius:8px; background:var(--accent); border:none;
  color:#000; display:grid; place-items:center; cursor:pointer; flex-shrink:0; margin-bottom:2px;
  transition:opacity .15s }

/* Attachment preview strip */
.euler-attach-preview { display:flex; gap:8px; padding:6px 12px; flex-wrap:wrap }
.euler-attach-item { display:flex; align-items:center; gap:6px; padding:4px 10px;
  border-radius:8px; background:var(--bg-elevated); border:1px solid var(--border);
  font-size:12px; color:var(--text-muted) }
.euler-attach-item img { width:32px; height:32px; border-radius:4px; object-fit:cover }
.euler-attach-remove { cursor:pointer; color:var(--text-dim); font-size:14px; margin-left:4px }
.euler-attach-remove:hover { color:#ef4444 }

/* Attachment thumbnails in chat messages */
.euler-msg-attachments { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px }
.euler-msg-attach { border-radius:8px; overflow:hidden; border:1px solid var(--border) }
.euler-msg-attach img { width:80px; height:60px; object-fit:cover; display:block }
.euler-msg-attach-file { display:flex; align-items:center; gap:6px; padding:6px 10px;
  background:var(--bg-elevated); font-size:11px; color:var(--text-dim) }
.euler-msg-attach-name { max-width:100px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.euler-send:hover { opacity:.85 }
.euler-send:disabled { opacity:.6; cursor:not-allowed }
.euler-send svg { width:14px; height:14px }
.euler-send-spinner { width:14px; height:14px; border:2px solid rgba(0,0,0,.2);
  border-top-color:#000; border-radius:50%; animation:spin .6s linear infinite; display:inline-block }
@keyframes spin { to { transform:rotate(360deg) } }

/* ── Processing indicator above input ── */
.euler-processing-bar { display:none; align-items:center; gap:6px; padding:4px 12px;
  font-size:12px; color:var(--text-dim) }
.euler-processing-bar.active { display:flex }
.euler-processing-dots { display:flex; gap:3px }
.euler-processing-dots span { width:4px; height:4px; border-radius:50%; background:var(--accent);
  animation:eulerDot .6s ease-in-out infinite alternate; opacity:.4 }
.euler-processing-dots span:nth-child(2) { animation-delay:.15s }
.euler-processing-dots span:nth-child(3) { animation-delay:.3s }

.euler-chips { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; justify-content:center;
  max-width:100% }
.euler-chip { padding:6px 14px; border-radius:20px; background:var(--bg-surface); border:1px solid var(--border);
  color:var(--text-muted); font-size:13px; cursor:pointer; transition:border-color .2s, color .2s }
.euler-chip:hover { border-color:var(--accent); color:var(--text) }

.euler-msg { animation:eulerFadeIn .25s ease-out }
@keyframes eulerFadeIn { from { opacity:0; transform:translateY(6px) } to { opacity:1; transform:translateY(0) } }

.euler-msg-user { display:flex; justify-content:flex-end }
.euler-user-bubble { background:var(--bg-elevated); color:var(--text); padding:10px 16px;
  border-radius:16px 16px 4px 16px; font-size:14px; line-height:1.5; max-width:80%;
  white-space:pre-wrap; word-wrap:break-word }

.euler-msg-row { display:flex; gap:10px; align-items:flex-start }
.euler-msg-avatar { width:28px; height:28px; border-radius:8px;
  background:linear-gradient(135deg,#34d399,#06b6d4); color:#000; font-weight:700;
  font-size:13px; display:grid; place-items:center; flex-shrink:0; margin-top:2px }
.euler-msg-content { display:flex; flex-direction:column; gap:8px; min-width:0; flex:1 }
.euler-tool-row-inline { animation:eulerFadeIn .2s ease-out }
.euler-euler-bubble { background:transparent; color:var(--text); font-size:14px;
  line-height:1.6; max-width:100%; word-wrap:break-word }
.euler-euler-bubble strong { color:#34d399; font-weight:600 }
.euler-euler-bubble code { background:var(--bg-elevated); padding:1px 5px; border-radius:4px; font-size:13px }
.euler-euler-bubble a { color:var(--accent); text-decoration:underline }
.euler-course-link { color:var(--accent); cursor:pointer; font-size:12px; font-weight:500;
  padding:1px 6px; border-radius:4px; background:rgba(52,211,153,.08); margin-left:2px }
.euler-course-link:hover { background:rgba(52,211,153,.15) }

/* Tool call indicator — collapsible cards like Claude */
.euler-tool-calls { display:flex; flex-direction:column; gap:4px }
.euler-tool-call { border-radius:10px; background:var(--bg-surface); border:1px solid var(--border);
  overflow:hidden; animation:eulerFadeIn .2s ease-out; max-width:400px }
.euler-tool-header { display:flex; align-items:center; gap:8px; padding:8px 12px;
  cursor:pointer; user-select:none }
.euler-tool-header:hover { background:var(--bg-elevated) }
.euler-tool-spinner { width:14px; height:14px; flex-shrink:0 }
.euler-tool-spinner-anim { width:14px; height:14px; display:flex; gap:2px; align-items:center }
.euler-tool-spinner-anim span { width:3px; height:3px; border-radius:50%; background:var(--accent);
  animation:eulerDotPulse .8s ease-in-out infinite }
.euler-tool-spinner-anim span:nth-child(2) { animation-delay:.15s }
.euler-tool-spinner-anim span:nth-child(3) { animation-delay:.3s }
@keyframes eulerDotPulse { 0%,100% { opacity:.3; transform:scale(.8) } 50% { opacity:1; transform:scale(1.2) } }
.euler-tool-label { font-size:13px; color:var(--text-muted); flex:1 }
.euler-tool-chevron { font-size:12px; color:var(--text-dim); transition:transform .2s }
.euler-tool-call.open .euler-tool-chevron { transform:rotate(90deg) }
.euler-tool-detail { display:none; padding:0 12px 10px; font-size:11px; color:var(--text-dim);
  font-family:'JetBrains Mono',monospace; line-height:1.5; max-height:120px; overflow-y:auto;
  white-space:pre-wrap; word-break:break-word }
.euler-tool-call.open .euler-tool-detail { display:block }
.euler-tool-done .euler-tool-spinner-anim span { animation:none; background:var(--accent) }
.euler-tool-done .euler-tool-label { color:var(--text-dim) }

/* Collapsed tool pills — shrink to single compact summary when text arrives */
.euler-tools-collapsed { display:none !important }
/* Legacy collapsed styles (overridden by display:none above) */
.euler-tools-collapsed .euler-tool-calls { gap:0 }
.euler-tools-collapsed .euler-tool-call { display:none }
.euler-tools-collapsed .euler-tool-call:last-child { display:block }
.euler-tools-collapsed .euler-tool-call:last-child .euler-tool-header {
  padding:4px 12px; opacity:.5; font-size:12px }
.euler-tools-collapsed .euler-tool-call:last-child .euler-tool-spinner { display:none }
.euler-tools-collapsed .euler-tool-call:last-child .euler-tool-chevron { display:none }

/* Streaming text cursor effect */
.euler-euler-bubble.streaming::after { content:''; display:inline-block; width:2px; height:14px;
  background:var(--accent); margin-left:2px; vertical-align:text-bottom;
  animation:eulerBlink .6s step-end infinite }
@keyframes eulerBlink { 0%,100% { opacity:1 } 50% { opacity:0 } }

/* Thinking dots */
.euler-thinking { display:flex; gap:4px; padding:12px 0 }
.euler-thinking span { width:6px; height:6px; border-radius:50%; background:var(--text-dim);
  animation:eulerDot .6s ease-in-out infinite alternate }
.euler-thinking span:nth-child(2) { animation-delay:.15s }
.euler-thinking span:nth-child(3) { animation-delay:.3s }
@keyframes eulerDot { from { opacity:.3; transform:translateY(0) } to { opacity:1; transform:translateY(-4px) } }

/* Artifact card */
.euler-artifact-card { background:var(--bg-surface); border:1px solid var(--border); border-radius:12px;
  overflow:hidden; max-width:420px; transition:border-color .2s }
.euler-artifact-card:hover { border-color:rgba(52,211,153,.3) }
.euler-artifact-header { display:flex; align-items:center; gap:8px; padding:10px 14px;
  border-bottom:1px solid var(--border) }
.euler-artifact-type { font-size:10px; font-weight:600; text-transform:uppercase; color:var(--accent);
  background:rgba(52,211,153,.08); padding:2px 8px; border-radius:4px }
.euler-artifact-title { font-size:14px; font-weight:600; flex:1 }
.euler-artifact-saved { font-size:10px; color:var(--accent); background:rgba(52,211,153,.08);
  padding:2px 8px; border-radius:4px; flex-shrink:0 }
.euler-artifact-preview { padding:10px 14px; font-size:12px; color:var(--text-muted); line-height:1.5 }
.euler-fc { padding:6px 0; border-bottom:1px solid var(--border) }
.euler-fc:last-child { border-bottom:none }
.euler-fc-q { font-size:13px; font-weight:500; margin-bottom:2px }
.euler-fc-a { font-size:12px; color:var(--text-dim) }
.euler-fc-more { font-size:11px; color:var(--accent); padding-top:6px }
.euler-md-preview { font-size:12px; color:var(--text-muted); white-space:pre-wrap }
.euler-step-preview { font-size:12px; margin-bottom:4px }

/* Document card */
.euler-document-card { display:flex; align-items:center; gap:12px; background:var(--bg-surface);
  border:1px solid var(--border); border-radius:12px; padding:12px 16px; max-width:360px;
  transition:border-color .2s }
.euler-document-card:hover { border-color:rgba(52,211,153,.3) }
.euler-doc-icon { font-size:24px }
.euler-doc-info { flex:1 }
.euler-doc-title { font-size:14px; font-weight:600 }
.euler-doc-format { font-size:10px; color:var(--text-dim); text-transform:uppercase }
.euler-doc-download { padding:6px 14px; border-radius:8px; background:var(--accent); color:#000;
  font-size:12px; font-weight:600; text-decoration:none; flex-shrink:0; transition:opacity .15s;
  border:none; cursor:pointer }
.euler-doc-download:hover { opacity:.85 }
.euler-doc-external { font-size:14px; color:var(--text-dim); text-decoration:none; flex-shrink:0;
  opacity:0.5; transition:opacity .15s }
.euler-doc-external:hover { opacity:1; color:var(--accent) }

/* Permission card — base */
.euler-permission-card { background:var(--bg-surface); border:1px solid rgba(52,211,153,.2);
  border-radius:14px; padding:16px 20px; max-width:420px }
.euler-perm-header { display:flex; align-items:center; gap:8px; margin-bottom:10px }
.euler-perm-icon { font-size:20px }
.euler-perm-type { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:var(--accent) }
.euler-perm-question { font-size:14px; margin-bottom:14px; line-height:1.5; color:var(--text) }
.euler-perm-actions { display:flex; gap:8px }
.euler-perm-btn { padding:8px 20px; border-radius:8px; font-size:13px; font-weight:600;
  border:1px solid var(--border); cursor:pointer; transition:all .15s }
.euler-perm-yes { background:var(--accent); color:#000; border-color:var(--accent) }
.euler-perm-yes:hover { opacity:.85 }
.euler-perm-no { background:transparent; color:var(--text-muted); border-color:var(--border) }
.euler-perm-no:hover { border-color:var(--text-dim); color:var(--text) }
.euler-perm-btn:disabled { opacity:.5; cursor:not-allowed }
.euler-perm-answered .euler-perm-selected { opacity:1 }
.euler-perm-answered .euler-perm-btn:not(.euler-perm-selected) { opacity:.3 }
/* Video follow-along variant */
.euler-perm-video { border-color:rgba(139,92,246,.25); background:linear-gradient(135deg,rgba(139,92,246,.04),rgba(6,182,212,.04)) }
.euler-perm-video .euler-perm-type { color:#a78bfa }
.euler-perm-video .euler-perm-yes { background:#a78bfa; border-color:#a78bfa }
/* Tutor session variant */
.euler-perm-tutor { border-color:rgba(52,211,153,.25); background:linear-gradient(135deg,rgba(52,211,153,.04),rgba(16,185,129,.04)) }

/* Navigate card */
.euler-navigate-card { display:flex; align-items:center; gap:8px; padding:10px 18px;
  border-radius:10px; background:rgba(52,211,153,.06); border:1px solid rgba(52,211,153,.15);
  cursor:pointer; font-size:14px; font-weight:500; color:var(--accent);
  transition:background .2s, border-color .2s }
.euler-navigate-card:hover { background:rgba(52,211,153,.1); border-color:rgba(52,211,153,.3) }
.euler-navigate-card svg { flex-shrink:0 }

/* Session start card */
.euler-session-card { background:linear-gradient(135deg,rgba(52,211,153,.06),rgba(6,182,212,.06));
  border:1px solid rgba(52,211,153,.15); border-radius:12px; padding:16px 20px;
  cursor:pointer; transition:border-color .2s; max-width:400px }
.euler-session-card:hover { border-color:rgba(52,211,153,.3) }
.euler-session-label { font-size:10px; font-weight:600; text-transform:uppercase; color:var(--accent);
  margin-bottom:6px }
.euler-session-intent { font-size:14px; margin-bottom:10px; line-height:1.5 }
.euler-session-go { font-size:13px; font-weight:600; color:var(--accent) }

/* Action buttons */
.euler-actions { display:flex; flex-wrap:wrap; gap:8px }
.euler-action-btn { padding:8px 16px; border-radius:10px; background:var(--bg-surface);
  border:1px solid var(--border); color:var(--text); font-size:13px; cursor:pointer;
  transition:border-color .2s, color .2s }
.euler-action-btn:hover { border-color:var(--accent); color:var(--accent) }

/* Course cards in Euler chat */
.euler-course-cards { display:flex; gap:12px; overflow-x:auto; padding:4px 0 8px;
  scrollbar-width:thin; scrollbar-color:var(--border) transparent; max-width:100% }
.euler-course-cards::-webkit-scrollbar { height:4px }
.euler-course-cards::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px }
.euler-ccard { flex:0 0 240px; border-radius:12px; background:var(--bg-surface);
  border:1px solid var(--border); overflow:hidden; cursor:pointer;
  transition:transform .2s, border-color .2s, box-shadow .2s }
.euler-ccard:hover { transform:translateY(-2px); border-color:rgba(52,211,153,.3);
  box-shadow:0 8px 24px rgba(0,0,0,.2) }
.euler-ccard-thumb { height:100px; position:relative; background-size:cover; background-position:center }
.euler-ccard-tag { position:absolute; top:8px; left:8px; font-size:9px; font-weight:700;
  text-transform:uppercase; padding:2px 6px; border-radius:3px;
  background:rgba(0,0,0,.6); color:var(--accent) }
.euler-ccard-lessons { position:absolute; bottom:6px; left:8px; font-size:10px; font-weight:500;
  padding:2px 6px; border-radius:3px; background:rgba(0,0,0,.7); color:#fff }
.euler-ccard-body { padding:10px 12px 6px }
.euler-ccard-title { font-size:13px; font-weight:600; line-height:1.3; margin-bottom:4px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.euler-ccard-desc { font-size:11px; color:var(--text-dim); line-height:1.4;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.euler-ccard-matches { padding:6px 12px; border-top:1px solid var(--border) }
.euler-ccard-matches-label { font-size:10px; font-weight:600; color:var(--text-dim);
  text-transform:uppercase; margin-bottom:4px }
.euler-ccard-match { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-muted);
  padding:2px 0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.euler-ccard-match-dot { width:4px; height:4px; border-radius:50%; background:var(--accent); flex-shrink:0 }
.euler-ccard-match-more { font-size:10px; color:var(--accent); padding-top:2px }
.euler-ccard-action { padding:8px 12px; font-size:11px; font-weight:600; color:var(--accent);
  border-top:1px solid var(--border) }

/* ── Artifact Viewer Modal ─── */
.av-overlay { position:fixed; inset:0; z-index:9000; display:flex; align-items:center; justify-content:center }
.av-overlay.hidden { display:none }
.av-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.7); backdrop-filter:blur(4px) }
.av-modal { position:relative; width:min(600px,92vw); max-height:88vh; background:var(--bg-surface);
  border:1px solid var(--border); border-radius:16px; display:flex; flex-direction:column;
  overflow:hidden; animation:avSlideUp .25s ease-out }
@keyframes avSlideUp { from { opacity:0; transform:translateY(20px) } to { opacity:1; transform:translateY(0) } }
.av-header { display:flex; align-items:center; gap:10px; padding:14px 18px;
  border-bottom:1px solid var(--border); flex-shrink:0 }
.av-type-badge { font-size:10px; font-weight:700; text-transform:uppercase; color:var(--accent);
  background:rgba(52,211,153,.08); padding:3px 10px; border-radius:4px }
.av-title { font-size:16px; font-weight:600; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.av-actions { display:flex; gap:6px; flex-shrink:0 }
.av-btn { width:32px; height:32px; border-radius:8px; background:var(--bg-elevated); border:1px solid var(--border);
  color:var(--text-muted); display:grid; place-items:center; cursor:pointer; transition:color .15s, border-color .15s }
.av-btn:hover { color:var(--text); border-color:var(--text-dim) }
.av-close { font-size:20px; line-height:1 }
.av-body { flex:1; overflow-y:auto; padding:24px }

/* Flashcard viewer */
.av-flashcards { display:flex; flex-direction:column; align-items:center; gap:20px }
.av-fc-card { width:100%; max-width:480px; height:280px; perspective:800px; cursor:pointer }
.av-fc-inner { width:100%; height:100%; position:relative; transition:transform .5s ease;
  transform-style:preserve-3d }
.av-fc-inner.flipped { transform:rotateY(180deg) }
.av-fc-front, .av-fc-back { position:absolute; inset:0; backface-visibility:hidden;
  border-radius:14px; padding:28px; display:flex; align-items:center; justify-content:center;
  text-align:center; font-size:16px; line-height:1.6; overflow-y:auto }
.av-fc-front { background:linear-gradient(135deg,var(--bg-elevated),var(--bg-surface));
  border:1px solid var(--border); font-weight:500 }
.av-fc-back { background:linear-gradient(135deg,rgba(52,211,153,.06),var(--bg-surface));
  border:1px solid rgba(52,211,153,.15); transform:rotateY(180deg); color:var(--text-muted); font-size:14px }
.av-fc-nav { display:flex; align-items:center; gap:20px }
.av-fc-prev, .av-fc-next { padding:8px 18px; border-radius:8px; background:var(--bg-elevated);
  border:1px solid var(--border); color:var(--text); font-size:13px; cursor:pointer;
  transition:border-color .15s }
.av-fc-prev:hover, .av-fc-next:hover { border-color:var(--accent) }
.av-fc-prev:disabled, .av-fc-next:disabled { opacity:.3; cursor:not-allowed }
.av-fc-counter { font-size:13px; color:var(--text-dim); min-width:60px; text-align:center }
.av-fc-sr { text-align:center }
.av-fc-sr-label { font-size:12px; color:var(--text-dim); margin-bottom:8px }
.av-fc-sr-btns { display:flex; gap:8px; justify-content:center }
.av-sr-btn { padding:8px 18px; border-radius:8px; font-size:12px; font-weight:600;
  border:1px solid var(--border); cursor:pointer; transition:all .15s }
.av-sr-again { color:#ef4444; border-color:rgba(239,68,68,.3) }
.av-sr-again:hover { background:rgba(239,68,68,.1) }
.av-sr-hard { color:#f59e0b; border-color:rgba(245,158,11,.3) }
.av-sr-hard:hover { background:rgba(245,158,11,.1) }
.av-sr-good { color:var(--accent); border-color:rgba(52,211,153,.3) }
.av-sr-good:hover { background:rgba(52,211,153,.1) }
.av-sr-easy { color:#60a5fa; border-color:rgba(96,165,250,.3) }
.av-sr-easy:hover { background:rgba(96,165,250,.1) }
.av-fc-hint { font-size:11px; color:var(--text-dim) }

/* Markdown viewer */
.av-markdown { font-size:14px; line-height:1.7; color:var(--text) }
.av-markdown h1,.av-markdown h2,.av-markdown h3 { margin:16px 0 8px; font-weight:600 }
.av-markdown h1 { font-size:20px } .av-markdown h2 { font-size:17px } .av-markdown h3 { font-size:15px }
.av-markdown p { margin:0 0 10px }
.av-markdown ul,.av-markdown ol { padding-left:20px; margin:0 0 10px }
.av-markdown code { background:var(--bg-elevated); padding:1px 5px; border-radius:4px; font-size:13px }
.av-markdown strong { color:var(--accent) }
.av-markdown hr { border:none; border-top:1px solid var(--border); margin:16px 0 }
.av-markdown table { width:100%; border-collapse:collapse; margin:12px 0; font-size:13px }
.av-markdown th { text-align:left; padding:8px 12px; border-bottom:2px solid var(--border);
  font-weight:600; color:var(--text); background:var(--bg-elevated) }
.av-markdown td { padding:6px 12px; border-bottom:1px solid var(--border); color:var(--text-muted) }
.av-markdown tr:hover td { background:var(--bg-elevated) }

/* Generic JSON viewer */
.av-generic { font-size:13px; line-height:1.6; white-space:pre-wrap; color:var(--text-muted);
  font-family:'JetBrains Mono',monospace }

/* ── BYO Materials ─── */
.byo-grid { display:flex; gap:14px; flex-wrap:wrap; padding-bottom:40px }

/* Upload zone — drop area + link input */
.byo-upload-zone { width:100%; max-width:480px; display:flex; flex-direction:column; gap:10px }
.byo-drop-area { border-radius:14px; border:2px dashed var(--border);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  padding:32px 20px; cursor:pointer; transition:border-color .2s, background .2s }
.byo-drop-area:hover { border-color:var(--accent); background:rgba(52,211,153,.03) }
.byo-drop-area.byo-drag-over { border-color:var(--accent); background:rgba(52,211,153,.08);
  border-style:solid }
.byo-drop-icon { width:40px; height:40px; border-radius:10px; background:rgba(52,211,153,.08);
  color:var(--accent); font-size:22px; font-weight:300; display:grid; place-items:center }
.byo-drop-label { font-size:13px; font-weight:600; color:var(--text) }
.byo-browse-link { color:var(--accent); cursor:pointer; text-decoration:underline }
.byo-drop-sub { font-size:11px; color:var(--text-dim) }

/* Link input row */
.byo-link-row { display:flex; gap:8px }
.byo-link-input { flex:1; padding:9px 14px; border-radius:10px; background:var(--bg-surface);
  border:1px solid var(--border); color:var(--text); font-size:13px; outline:none;
  transition:border-color .2s }
.byo-link-input:focus { border-color:var(--accent) }
.byo-link-input::placeholder { color:var(--text-dim) }
.byo-link-btn { padding:9px 18px; border-radius:10px; background:var(--accent); color:var(--bg);
  font-size:13px; font-weight:600; border:none; cursor:pointer; white-space:nowrap;
  transition:opacity .15s }
.byo-link-btn:hover { opacity:.85 }
.byo-link-btn:disabled { opacity:.4; cursor:default }

/* Compact upload area */
.byo-upload-compact { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:20px }
.byo-drop-area-compact { display:flex; align-items:center; gap:8px; padding:8px 16px;
  border:1px dashed var(--border); border-radius:10px; font-size:13px; color:var(--text-dim);
  cursor:pointer; transition:border-color .2s }
.byo-drop-area-compact:hover { border-color:var(--accent) }
.byo-drop-icon-sm { font-size:16px; font-weight:700; color:var(--accent) }

/* Compact list for collections */
.byo-list { display:flex; flex-direction:column; gap:2px; margin-bottom:20px }
.byo-list-item { display:flex; align-items:center; gap:10px; padding:10px 14px;
  border-radius:10px; cursor:pointer; transition:background .15s }
.byo-list-item:hover { background:var(--bg-surface) }
.byo-list-error { opacity:0.5 }
.byo-list-icon { font-size:18px; flex-shrink:0; width:24px; text-align:center }
.byo-list-info { flex:1; min-width:0 }
.byo-list-title { font-size:14px; font-weight:600; display:block;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.byo-list-meta { font-size:11px; color:var(--text-dim); display:block }
.byo-group-header { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:var(--text-dim); padding:12px 0 4px; display:flex; align-items:center; gap:6px;
  border-bottom:1px solid var(--border); margin-bottom:2px }
.byo-group-count { font-size:10px; color:var(--text-muted); font-weight:400 }
.byo-status-label { font-size:10px; font-weight:600; padding:2px 8px; border-radius:8px; flex-shrink:0 }
.byo-status-ready { color:#34d399; background:rgba(52,211,153,.1) }
.byo-status-processing { color:#f59e0b; background:rgba(245,158,11,.1);
  animation:byo-pulse 1.5s ease-in-out infinite }
.byo-status-error { color:#ef4444; background:rgba(239,68,68,.1) }
@keyframes byo-pulse { 0%,100% { opacity:1 } 50% { opacity:0.3 } }

/* Legacy card styles (kept for reference) */
.byo-material-card { display:none }
.byo-badge { font-size:10px; font-weight:600; padding:2px 8px; border-radius:10px }
.byo-badge-ready { color:var(--accent); background:rgba(52,211,153,.1) }
.byo-badge-processing { color:#f59e0b; background:rgba(245,158,11,.1) }
.byo-badge-error { color:#ef4444; background:rgba(239,68,68,.1) }
.byo-card-meta { font-size:11px; color:var(--text-dim); margin-bottom:6px }
.byo-card-tags { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:4px }
.byo-tag { font-size:10px; padding:2px 8px; border-radius:8px;
  background:rgba(52,211,153,.08); color:var(--accent); font-weight:500 }
.byo-card-topics { display:flex; flex-wrap:wrap; gap:4px }
.byo-topic { font-size:10px; padding:2px 6px; border-radius:6px;
  background:var(--bg-elevated); color:var(--text-dim) }

.search-box { display:flex; align-items:center; gap:8px; padding:9px 14px; border-radius:10px;
  background:var(--bg-surface); border:1px solid var(--border); width:280px; transition:border-color .2s }
.search-box:focus-within { border-color:var(--accent) }
.search-box svg { width:14px; height:14px; color:var(--text-dim); flex-shrink:0 }
.search-box input { flex:1; background:none; border:none; outline:none; color:var(--text); font-size:13px }
.search-box input::placeholder { color:var(--text-dim) }

.banner { display:flex; align-items:center; gap:16px; padding:18px 22px; border-radius:14px;
  background:linear-gradient(135deg,var(--bg-surface) 0%,rgba(52,211,153,.06) 100%);
  border:1px solid rgba(52,211,153,.1); margin-bottom:40px; cursor:pointer; transition:border-color .25s }
.banner:hover { border-color:rgba(52,211,153,.3) }
.banner-ico { width:40px; height:40px; border-radius:10px; background:rgba(52,211,153,.1); color:var(--accent);
  display:grid; place-items:center; font-size:18px; flex-shrink:0 }
.banner-text { flex:1 }
.banner-text h3 { font-size:14px; font-weight:600; margin-bottom:1px }
.banner-text p { font-size:13px; color:var(--text-muted) }
.banner-arrow { color:var(--text-dim); font-size:18px; transition:color .2s, transform .2s }
.banner:hover .banner-arrow { color:var(--accent); transform:translateX(2px) }

.sec-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:14px }
.sec-head h2 { font-size:15px; font-weight:600 }
.sec-head span { font-size:12px; color:var(--text-dim) }

/* Continue row */
.cont-row { display:flex; gap:14px; margin-bottom:44px; overflow-x:auto; scrollbar-width:none }
.cont-row::-webkit-scrollbar { display:none }
.cont { flex:0 0 260px; border-radius:12px; background:var(--bg-surface); overflow:hidden; cursor:pointer;
  transition:transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s }
.cont:hover { transform:translateY(-2px); box-shadow:0 12px 40px rgba(0,0,0,.25) }
.cont-top { height:80px; position:relative; display:grid; place-items:center }
.cont-top .sym { font-size:28px; opacity:.08 }
.cont-top .lbl { position:absolute; bottom:6px; left:8px; font-size:10px; font-weight:600; color:var(--text-muted);
  padding:2px 7px; border-radius:4px; background:rgba(0,0,0,.5) }
.cont-bar { height:2px; background:var(--bg-elevated) }
.cont-bar-fill { height:100%; background:var(--accent); transition:width .5s }
.cont-info { padding:10px 14px }
.cont-info h4 { font-size:13px; font-weight:600; margin-bottom:1px }
.cont-info p { font-size:11px; color:var(--text-dim) }

/* Course grid — wrapping grid when expanded */
.c-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px; padding-bottom:30px }
/* Course cards in horizontal scroll row (session-row) */
.session-row > .ccard { flex:0 0 260px; min-width:260px; max-width:260px }
.sec-show-all { text-align:center; margin:-10px 0 20px }
.show-all-btn { background:none; border:1px solid var(--border); color:var(--text-dim); padding:8px 24px;
  border-radius:8px; font-size:13px; cursor:pointer; transition:all .15s }
.show-all-btn:hover { border-color:var(--accent); color:var(--accent) }
.ccard { border-radius:12px; overflow:hidden; background:var(--bg-surface); cursor:pointer;
  transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s }
.ccard:hover { transform:translateY(-3px); box-shadow:0 16px 50px rgba(0,0,0,.3) }
.ccard-thumb { height:130px; position:relative; display:grid; place-items:center; overflow:hidden }
.ccard-thumb .sym { font-size:44px; opacity:.08 }
.ccard-thumb .tag { z-index:1 }
.ccard-thumb .meta { z-index:1 }
.ccard-thumb .tag { position:absolute; top:10px; left:10px }
.ccard-thumb .meta { position:absolute; bottom:0; left:0; right:0; padding:8px 14px;
  background:linear-gradient(transparent,rgba(0,0,0,.7)); font-size:11px; color:var(--text-muted); display:flex; gap:10px }
.ccard-body { padding:14px 16px }
.ccard-body h3 { font-size:14px; font-weight:600; margin-bottom:4px; line-height:1.35 }
.ccard-body p { font-size:12px; color:var(--text-muted); line-height:1.5; display:-webkit-box;
  -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.ccard-cta { display:flex; justify-content:space-between; align-items:center; padding:10px 16px;
  border-top:1px solid var(--border) }
.ccard-cta span { font-size:12px; color:var(--accent); font-weight:600; opacity:0; transition:opacity .2s }
.ccard:hover .ccard-cta span { opacity:1 }
.ccard-cta .ccard-lessons { font-size:11px; color:var(--text-dim) }
.tag-physics { background:rgba(99,102,241,.12); color:#a5b4fc }
.tag-math { background:rgba(251,191,36,.1); color:#fcd34d }
.tag-cs { background:rgba(52,211,153,.1); color:#5eead4 }

/* ── Course Detail — Netflix-style ─── */
.cd-banner { position:relative; min-height:340px; display:flex; align-items:flex-end;
  overflow:hidden }
.cd-banner-overlay { position:absolute; inset:0;
  background:linear-gradient(0deg, var(--bg) 0%, rgba(9,9,11,.85) 40%, rgba(21,21,48,.4) 100%) }
.cd-banner-content { position:relative; z-index:1; max-width:1120px; width:100%;
  margin:0 auto; padding:0 clamp(16px,4vw,40px) 40px }
.cd-back { display:inline-flex; align-items:center; gap:5px; font-size:13px; color:var(--text-dim);
  margin-bottom:20px; cursor:pointer; transition:color .2s }
.cd-back:hover { color:var(--text) }
.cd-banner-content h1 { font-size:clamp(28px,3.5vw,40px); font-weight:700; letter-spacing:-1.5px;
  line-height:1.15; margin-bottom:10px; max-width:700px }
.cd-banner-content > p { font-size:14px; color:var(--text-muted); line-height:1.6;
  margin-bottom:20px; max-width:600px }
.cd-stats { display:flex; gap:24px; margin-bottom:20px }
.cd-stat-v { font-size:20px; font-weight:700; color:var(--accent) }
.cd-stat-l { font-size:10px; color:var(--text-dim); text-transform:uppercase; letter-spacing:.5px; margin-top:1px }
.cd-banner-actions { display:flex; align-items:center; gap:16px }
.cd-sub { font-size:13px; color:var(--text-dim) }

/* Tabs */
.cd-body { max-width:1120px; margin:0 auto; padding:0 clamp(16px,4vw,40px) }
.cd-tabs { display:flex; gap:0; border-bottom:1px solid var(--border); margin-bottom:28px }
.cd-tab { padding:14px 24px; font-size:14px; font-weight:600; color:var(--text-dim);
  background:none; border:none; cursor:pointer; position:relative; transition:color .2s }
.cd-tab:hover { color:var(--text) }
.cd-tab.active { color:var(--text) }
.cd-tab.active::after { content:''; position:absolute; bottom:-1px; left:0; right:0;
  height:2px; background:var(--accent); border-radius:1px }
.cd-tab-content { display:none; padding-bottom:60px }
.cd-tab-content.active { display:block }
.cd-mode-go { margin-top:24px }

/* Modes */
.mode-label { font-size:13px; font-weight:600; color:var(--text-dim); margin-bottom:14px }
.modes { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:56px }
.mode { padding:24px; border-radius:14px; background:var(--bg-surface); border:1px solid var(--border);
  cursor:pointer; transition:all .25s; position:relative }
.mode:hover { border-color:var(--border-active) }
.mode.on { border-color:var(--accent); background:linear-gradient(135deg,var(--bg-surface),rgba(52,211,153,.04)) }
.mode h3 { font-size:15px; font-weight:600; margin-bottom:5px; display:flex; align-items:center; gap:8px }
.mode p { font-size:13px; color:var(--text-muted); line-height:1.55 }
.mode-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:5px }
.mode-header h3 { margin-bottom:0 }
.mode-rec { font-size:11px; font-weight:600; color:var(--accent) }
.mode-alt { font-size:11px; color:var(--text-dim) }

/* Mode expansion */
.mode-expand { max-height:0; overflow:hidden; transition:max-height .35s cubic-bezier(.16,1,.3,1), opacity .25s;
  opacity:0; margin-top:0 }
.mode.on .mode-expand { max-height:500px; opacity:1; margin-top:16px }
.mode-intent-row { margin-bottom:12px }
.mode-intent { width:100%; padding:10px 14px; border-radius:10px; border:1px solid var(--border);
  background:var(--bg); color:var(--text); font-size:13px; font-family:inherit; outline:none;
  transition:border-color .2s }
.mode-intent:focus { border-color:var(--accent) }
.mode-intent::placeholder { color:var(--text-dim) }
.mode-les-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px }
.mode-les-header span { font-size:12px; font-weight:600; color:var(--text-dim); text-transform:uppercase; letter-spacing:.5px }
.mode-les-toggle { font-size:11px; color:var(--accent); font-weight:600; background:none; border:none;
  cursor:pointer; padding:2px 6px }
.mode-les-list { max-height:200px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:var(--bg-elevated) transparent }
.mode-les-list::-webkit-scrollbar { width:4px }
.mode-les-list::-webkit-scrollbar-thumb { background:var(--bg-elevated); border-radius:2px }
.mode-les-row { display:flex; align-items:center; gap:8px; padding:6px 8px; border-radius:6px;
  cursor:pointer; transition:background .1s; font-size:13px }
.mode-les-row:hover { background:rgba(255,255,255,.03) }
.mode-les-row input[type=checkbox] { accent-color:var(--accent); width:14px; height:14px; cursor:pointer }
.mode-les-num { width:20px; text-align:center; font-size:11px; font-weight:600; color:var(--text-dim) }
.mode-les-title { flex:1; font-weight:400 }
.mode-les-dur { font-size:11px; color:var(--text-dim) }
.mode-no-video { font-size:13px; color:var(--text-dim); padding:12px 0 }
/* Lesson thumbnails in curriculum */
.les-thumb { width:100px; height:56px; border-radius:6px; overflow:hidden; flex-shrink:0;
  position:relative; background:var(--bg-elevated) }
.les-thumb img { width:100%; height:100%; object-fit:cover; display:block }
.les-thumb-dur { position:absolute; bottom:3px; right:3px; padding:1px 4px; border-radius:3px;
  background:rgba(0,0,0,.8); font-size:9px; font-weight:600; color:#fff }
.les-video-badge { font-size:10px; color:var(--accent); font-weight:600; margin-left:6px;
  padding:1px 5px; border-radius:3px; background:rgba(52,211,153,.1); vertical-align:1px }
.mode-dot { width:16px; height:16px; border-radius:50%; border:2px solid var(--text-dim); display:grid;
  place-items:center; flex-shrink:0 }
.mode.on .mode-dot { border-color:var(--accent) }
.mode.on .mode-dot::after { content:''; width:8px; height:8px; border-radius:50%; background:var(--accent) }

/* Curriculum */
.cur-label { font-size:18px; font-weight:700; letter-spacing:-.3px; margin-bottom:20px }
.mod-block { margin-bottom:16px }
.mod-head { display:flex; justify-content:space-between; align-items:center; padding:12px 16px;
  border-radius:10px 10px 0 0; background:var(--bg-elevated); font-size:13px; font-weight:600 }
.mod-head span { font-size:12px; color:var(--text-dim); font-weight:500 }
.les-list { background:var(--bg-surface); border-radius:0 0 10px 10px; overflow:hidden }
.les { display:flex; align-items:center; gap:12px; padding:12px 16px; cursor:pointer;
  transition:background .15s; border-bottom:1px solid var(--border) }
.les:last-child { border-bottom:none }
.les:hover { background:var(--bg-elevated) }
.les-n { width:24px; height:24px; border-radius:50%; border:1.5px solid var(--border); color:var(--text-dim);
  display:grid; place-items:center; font-size:11px; font-weight:600; flex-shrink:0; transition:all .15s }
.les:hover .les-n { border-color:var(--accent); color:var(--accent) }
.les-info { flex:1 }
.les-info h4 { font-size:13px; font-weight:500 }
.les-info span { font-size:11px; color:var(--text-dim) }
.les-go { font-size:11px; font-weight:600; color:var(--accent); opacity:0; transition:opacity .15s }
.les:hover .les-go { opacity:1 }

/* ── On-demand ─── */
.od { max-width:600px; margin:0 auto; padding:clamp(48px,8vh,100px) 24px 60px; text-align:center }
.od h1 { font-size:28px; font-weight:700; letter-spacing:-.8px; margin-bottom:10px }
.od > p { font-size:14px; color:var(--text-muted); margin-bottom:36px; line-height:1.6 }
.od-input-wrap { position:relative; margin-bottom:20px }
.od-input { width:100%; padding:16px 56px 16px 20px; border-radius:14px; border:1px solid var(--border);
  background:var(--bg-surface); color:var(--text); font-size:15px; font-family:inherit; outline:none; transition:border-color .25s }
.od-input:focus { border-color:var(--accent) }
.od-input::placeholder { color:var(--text-dim) }
.od-send { position:absolute; right:6px; top:50%; transform:translateY(-50%); width:36px; height:36px;
  border-radius:10px; background:var(--accent); border:none; display:grid; place-items:center;
  transition:background .2s, transform .2s; cursor:pointer }
.od-send:hover { background:#2dd4a0; transform:translateY(-50%) scale(1.05) }
.chips { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin-bottom:44px }
.chip { padding:7px 14px; border-radius:100px; background:var(--bg-surface); border:1px solid var(--border);
  font-size:12px; color:var(--text-muted); cursor:pointer; transition:all .2s; white-space:nowrap }
.chip:hover { border-color:var(--accent); color:var(--text); transform:translateY(-1px) }
.od-how { text-align:left; padding:24px; border-radius:14px; background:var(--bg-surface) }
.od-how h3 { font-size:12px; font-weight:600; letter-spacing:1px; text-transform:uppercase; color:var(--text-dim); margin-bottom:18px }
.od-step { display:flex; gap:12px; margin-bottom:14px }
.od-step:last-child { margin-bottom:0 }
.od-step-n { width:20px; height:20px; border-radius:6px; background:rgba(52,211,153,.1); color:var(--accent);
  display:grid; place-items:center; font-size:10px; font-weight:700; flex-shrink:0; margin-top:1px }
.od-step p { font-size:13px; color:var(--text-muted); line-height:1.55 }
.od-step strong { color:var(--text); font-weight:600 }

/* ── Video playlist sidebar (YouTube-style) ─── */
.vpl { width:300px; flex-shrink:0; background:var(--bg-surface); border-left:1px solid var(--border);
  display:flex; flex-direction:column; overflow:hidden }
.vpl.hidden { display:none }
.vpl-header { display:flex; justify-content:space-between; align-items:center;
  padding:14px 16px; border-bottom:1px solid var(--border) }
.vpl-title { font-size:14px; font-weight:600 }
.vpl-count { font-size:12px; color:var(--text-dim) }
.vpl-list { flex:1; overflow-y:auto; scrollbar-width:thin; padding:8px 0 }
.vpl-item { display:flex; gap:10px; padding:6px 12px; cursor:pointer;
  transition:background .15s; border-radius:8px; margin:0 8px 4px }
.vpl-item:hover { background:var(--bg-elevated) }
.vpl-item.active { background:rgba(52,211,153,.06) }
.vpl-item.done { opacity:.45 }

/* Thumbnail */
.vpl-thumb { width:120px; height:68px; border-radius:6px; overflow:hidden;
  flex-shrink:0; position:relative; background:var(--bg-elevated) }
.vpl-thumb img { width:100%; height:100%; object-fit:cover; display:block }
.vpl-thumb-empty { display:grid; place-items:center; font-size:18px; font-weight:700;
  color:var(--text-dim) }
.vpl-dur { position:absolute; bottom:4px; right:4px; padding:1px 5px; border-radius:3px;
  background:rgba(0,0,0,.8); font-size:10px; font-weight:600; color:#fff }
.vpl-playing-badge { position:absolute; top:0; left:0; right:0; bottom:0;
  display:grid; place-items:center; background:rgba(0,0,0,.55);
  font-size:9px; font-weight:700; letter-spacing:.8px; color:var(--accent); text-transform:uppercase }

/* Info */
.vpl-item-info { flex:1; min-width:0; padding:2px 0 }
.vpl-item-title { font-size:13px; font-weight:500; line-height:1.35;
  overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical }
.vpl-item.active .vpl-item-title { color:var(--accent); font-weight:600 }
.vpl-item-meta { font-size:11px; color:var(--text-dim); margin-top:3px }

/* ── Pen drawing toolbar ─── */
.pen-toolbar { display:flex; align-items:center; gap:6px; padding:6px 12px;
  background:var(--bg-surface); border-bottom:1px solid var(--border) }
.pen-toolbar.hidden { display:none }
.pen-tb-label { font-size:11px; font-weight:600; color:var(--text-dim); text-transform:uppercase;
  letter-spacing:.5px; margin-right:4px; user-select:none }
.pen-tb-color { width:20px; height:20px; border-radius:50%; border:2px solid transparent;
  cursor:pointer; transition:transform .12s, border-color .12s }
.pen-tb-color:hover { transform:scale(1.15) }
.pen-tb-color.active { border-color:rgba(255,255,255,.8); box-shadow:0 0 6px rgba(255,255,255,.2) }
.pen-tb-sep { width:1px; height:20px; background:var(--border); margin:0 4px }
.pen-tb-btn { padding:4px 10px; border-radius:6px; border:none; background:none;
  color:var(--text-dim); font-size:12px; cursor:pointer; transition:all .12s; font-weight:500 }
.pen-tb-btn:hover { background:rgba(255,255,255,.06); color:var(--text) }
.pen-tb-btn.active { background:rgba(248,113,113,.12); color:var(--red) }
.pen-tb-close { color:var(--text-dim); font-size:14px }
.pen-tb-close:hover { color:var(--red) }

/* Browse no-match hint */
.browse-no-match { text-align:center; padding:40px 20px; color:var(--text-muted) }
.browse-no-match p { margin-bottom:12px; font-size:15px }
.browse-no-match strong { color:var(--text) }
.browse-no-match-sub { font-size:13px; color:var(--text-dim); margin-top:8px }

/* ── Plan sidebar ─── */
.psb { width:280px; flex-shrink:0; background:var(--bg-surface); border-left:1px solid var(--border);
  display:flex; flex-direction:column; overflow:hidden; transition:width .25s cubic-bezier(.16,1,.3,1) }
.psb.hidden { display:none }
.psb.collapsed { width:36px; overflow:hidden }
.psb.collapsed .psb-header,.psb.collapsed .psb-progress,.psb.collapsed .psb-body { display:none }
.psb-collapsed-tab { display:none; writing-mode:vertical-lr; text-orientation:mixed;
  padding:12px 0; text-align:center; cursor:pointer; font-size:11px; font-weight:700;
  color:var(--text-dim); letter-spacing:3px; transition:color .15s; height:100%;
  align-items:center; justify-content:center }
.psb-collapsed-tab span { display:block; line-height:1.4 }
.psb-collapsed-tab:hover { color:var(--accent) }
.psb.collapsed .psb-collapsed-tab { display:flex }
.psb-header { display:flex; align-items:center; justify-content:space-between; padding:10px 14px;
  border-bottom:1px solid var(--border); flex-shrink:0 }
.psb-title { font-size:13px; font-weight:600 }
.psb-toggle { width:24px; height:24px; border-radius:5px; border:1px solid var(--border); background:none;
  color:var(--text-dim); cursor:pointer; display:grid; place-items:center; font-size:10px; transition:all .15s }
.psb-toggle:hover { border-color:var(--text-muted); color:var(--text) }
.psb-progress { padding:8px 14px; border-bottom:1px solid var(--border) }
.psb-progress-bar { height:3px; background:var(--bg-elevated); border-radius:2px; overflow:hidden }
.psb-progress-fill { height:100%; background:var(--accent); border-radius:2px; transition:width .5s }
.psb-progress-text { font-size:10px; color:var(--text-dim); margin-top:4px; display:flex; justify-content:space-between }
.psb-body { flex:1; overflow-y:auto; scrollbar-width:thin; padding:6px 0 }

/* Plan generating animation */
.psb-generating { display:flex; align-items:center; gap:10px; padding:16px 14px; color:var(--text-dim); font-size:12px }
.psb-gen-pulse { width:8px; height:8px; border-radius:50%; background:var(--accent);
  animation:psbPulse 1.5s ease-in-out infinite }
@keyframes psbPulse { 0%,100%{opacity:.3;transform:scale(.8)} 50%{opacity:1;transform:scale(1.2)} }
.psb-placeholder { display:flex; flex-direction:column; align-items:center; gap:10px;
  padding:28px 18px; color:var(--text-dim); font-size:12px; text-align:center; line-height:1.6 }
.psb-placeholder-icon { font-size:22px; opacity:.35; margin-bottom:2px }

/* Plan section/topic items */
.psb-section { border-bottom:1px solid var(--border) }
.psb-section-head { padding:10px 14px; font-size:12px; font-weight:600; color:var(--text-muted);
  cursor:pointer; display:flex; align-items:center; gap:8px; transition:background .15s }
.psb-section-head:hover { background:var(--bg-elevated) }
.psb-section-dot { width:10px; height:10px; border-radius:50%; border:2px solid var(--text-dim);
  flex-shrink:0; transition:all .2s }
.psb-section.done .psb-section-dot { border-color:var(--accent); background:var(--accent) }
.psb-section.active .psb-section-dot { border-color:var(--accent); box-shadow:0 0 6px rgba(52,211,153,.3) }
.psb-section-title { flex:1; line-height:1.3 }
.psb-section.done .psb-section-title { color:var(--text-dim) }
.psb-section.active .psb-section-title { color:var(--accent) }
.psb-section-chevron { color:var(--text-dim); font-size:12px; transition:transform .2s }
.psb-section.open .psb-section-chevron { transform:rotate(90deg) }

/* Topics inside a section */
.psb-topics { display:none; padding:0 14px 8px 32px }
.psb-section.open .psb-topics { display:block }
.psb-topic { padding:5px 8px; font-size:11px; color:var(--text-dim); border-radius:5px;
  cursor:pointer; transition:all .15s; display:flex; align-items:center; gap:6px; margin-bottom:2px }
.psb-topic:hover { background:var(--bg-elevated); color:var(--text) }
.psb-topic.active { color:var(--accent) }
.psb-topic.done { color:var(--text-dim); opacity:.6 }
.psb-topic-icon { font-size:9px }
.psb-jump { font-size:9px; color:var(--accent); font-weight:600; opacity:0; margin-left:auto; transition:opacity .15s }
.psb-topic:hover .psb-jump { opacity:1 }

/* ── Stop button ─── */
.voice-bar-stop, .vm-stop-btn {
  width: 32px; height: 32px; border-radius: 50%; border: none;
  background: var(--red); color: white;
  display: grid; place-items: center; cursor: pointer;
  transition: all .15s; flex-shrink: 0;
}
.voice-bar-stop:hover, .vm-stop-btn:hover { background: #ef4444; transform: scale(1.05); }
.voice-bar-stop.hidden, .vm-stop-btn.hidden { display: none; }

/* Skeleton loaders */
.skeleton-pulse { animation: skPulse 1.5s ease-in-out infinite; background:var(--bg-elevated) }
@keyframes skPulse { 0%,100%{opacity:.4} 50%{opacity:.15} }
.skeleton-line { height:12px; border-radius:4px; background:var(--bg-elevated); animation:skPulse 1.5s ease-in-out infinite; margin-bottom:8px }
.skeleton-line.w40 { width:40% } .skeleton-line.w60 { width:60% } .skeleton-line.w90 { width:90% }
.ccard-skeleton .ccard-thumb { height:140px }
.ccard-skeleton .ccard-body { padding:14px 16px }

/* Responsive for new screens */
@media (max-width:768px) {
  .paths, .modes, .cd-hero { grid-template-columns:1fr }
  .steps, .previews-grid, .c-grid { grid-template-columns:1fr }
  .hero-actions { flex-direction:column; align-items:center }
}

/* ─── Top Bar ────────────────────────────────────────────── */

#top-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 20px;
  height: 48px;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.top-left, .top-right {
  display: flex;
  align-items: center;
  gap: 16px;
}

.course-title {
  display: none;
}

#session-timer {
  font-size: 13px;
  font-family: var(--font-mono);
  color: var(--text-muted);
}
.session-cost {
  font-size: 11px;
  font-family: var(--font-mono);
  color: var(--text-dim);
  margin-left: 8px;
  opacity: 0.7;
}

.icon-btn {
  background: none;
  border: 1px solid var(--border);
  color: var(--text-muted);
  padding: 4px 12px;
  border-radius: var(--radius);
  cursor: pointer;
  font-size: 13px;
  font-family: var(--font-sans);
  transition: all var(--transition);
}

.icon-btn:hover {
  background: var(--bg-hover);
  color: var(--text);
  border-color: var(--border-active);
}

/* ─── Main Layout ────────────────────────────────────────── */

#main-layout {
  display: flex;
  flex: 1;
  overflow: hidden;
  min-height: 0;
}

/* ─── Split View: Chat Left, Board Right ──── */
#chat-panel {
  flex: 2; min-width: 300px; display: flex; flex-direction: column; overflow: hidden;
}
#board-panel {
  flex: 3; min-width: 350px; display: flex; flex-direction: column;
  border-left: 1px solid var(--border); background: var(--bg-surface);
  position: relative; overflow: hidden;
}
#split-handle {
  width: 4px; cursor: col-resize; background: var(--border);
  transition: background 0.2s; flex-shrink: 0;
}
#split-handle:hover { background: var(--accent); }

/* Board panel header (reuses spotlight IDs) */
.board-panel-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 16px; border-bottom: 1px solid var(--border);
  background: var(--bg-elevated); flex-shrink: 0; min-height: 40px;
}
.board-panel-header .spotlight-header-left { display: flex; align-items: center; gap: 8px; }

/* Board content area — fills remaining space in board panel */
.board-content {
  flex: 1; overflow: hidden; position: relative; min-height: 0;
  display: flex; flex-direction: column;
}
.board-content iframe {
  width: 100%; height: 100%; border: none; background: #000;
}
.board-content canvas { display: block; }
.board-content .bd-container { flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
/* When board content has children, hide the empty state */
.board-content:not(:empty) ~ .board-empty { display: none; }

/* Board frame thumbnails strip */
#board-frame-strip {
  display: none;
}
#board-frame-strip:empty { display: none; }
.board-frame-thumb {
  flex-shrink: 0; width: 64px; height: 42px; border-radius: 3px;
  border: 1.5px solid var(--border); cursor: pointer; overflow: hidden;
  background: var(--bg-surface); transition: border-color 0.15s;
}
.board-frame-thumb:hover { border-color: var(--accent); }
.board-frame-thumb.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.board-frame-thumb img { width: 100%; height: 100%; object-fit: cover; }
.board-frame-thumb .frame-label {
  position: absolute; bottom: 0; left: 0; right: 0;
  font-size: 8px; color: var(--text-dim); background: rgba(0,0,0,0.7);
  padding: 1px 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.quick-action-btn {
  flex: 1; padding: 5px 0; border-radius: 5px; border: 1px solid var(--border);
  background: var(--bg-elevated); color: var(--text-muted); cursor: pointer;
  font-size: 11px; font-weight: 500; transition: all 0.15s;
}
.quick-action-btn:hover { border-color: var(--accent); color: var(--text); }
.quick-action-btn.got-it:hover { border-color: var(--green); color: var(--green); }
.quick-action-btn.not-sure:hover { border-color: var(--yellow); color: var(--yellow); }
.quick-action-btn.stuck:hover { border-color: var(--red); color: var(--red); }
.quick-action-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* Board empty state — animated waiting */
.board-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  flex: 1; color: var(--text-dim); gap: 12px;
}
.board-empty-anim { display:flex; align-items:center; gap:12px; margin-bottom:4px }
.board-empty-pencil { font-size:28px; opacity:.4;
  animation:boardPencilWrite 2s ease-in-out infinite }
@keyframes boardPencilWrite {
  0%,100% { transform:translate(0,0) rotate(0deg); opacity:.3 }
  25% { transform:translate(6px,2px) rotate(8deg); opacity:.6 }
  50% { transform:translate(12px,0) rotate(-4deg); opacity:.5 }
  75% { transform:translate(6px,-2px) rotate(4deg); opacity:.4 }
}
.board-empty-dots { display:flex; gap:4px }
.board-empty-dots span { width:5px; height:5px; border-radius:50%; background:var(--accent); opacity:.3;
  animation:boardDotPulse .8s ease-in-out infinite alternate }
.board-empty-dots span:nth-child(2) { animation-delay:.2s }
.board-empty-dots span:nth-child(3) { animation-delay:.4s }
@keyframes boardDotPulse { from{opacity:.15;transform:scale(.8)} to{opacity:.6;transform:scale(1.1)} }
.board-empty-text { font-size:14px; color:var(--text-muted) }
.board-empty-hint { font-size:12px; opacity:.5 }

/* Board loading skeleton — shown while board-draw/widget is generating */
.board-skeleton {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; z-index: 5;
  pointer-events: none;
}
.board-skeleton-glow {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 50% 40%, rgba(108,140,255,0.06) 0%, transparent 70%);
  animation: board-skel-pulse 2s ease-in-out infinite;
}
@keyframes board-skel-pulse {
  0%, 100% { opacity: 0.3; }
  50% { opacity: 1; }
}
.board-skeleton-content {
  display: flex; flex-direction: column; gap: 12px; width: 60%; max-width: 360px;
}
.board-skeleton-line {
  height: 10px; border-radius: 5px;
  background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.06) 50%, rgba(255,255,255,0.03) 75%);
  background-size: 200% 100%;
  animation: board-skel-shimmer 1.5s ease-in-out infinite;
}
.board-skeleton-line.w40 { width: 40%; }
.board-skeleton-line.w60 { width: 60%; }
.board-skeleton-line.w70 { width: 70%; }
.board-skeleton-line.w80 { width: 80%; }
.board-skeleton-block {
  height: 80px; border-radius: 8px;
  background: linear-gradient(90deg, rgba(255,255,255,0.02) 25%, rgba(255,255,255,0.05) 50%, rgba(255,255,255,0.02) 75%);
  background-size: 200% 100%;
  animation: board-skel-shimmer 1.5s ease-in-out infinite;
}
@keyframes board-skel-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.board-skeleton-label {
  margin-top: 16px; font-size: 12px; color: var(--text-dim); opacity: 0.5;
  animation: board-skel-pulse 2s ease-in-out infinite;
}

/* Session resume full-screen overlay */
.session-resume-overlay {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  transition: opacity 0.4s ease;
}
.session-resume-card {
  display: flex; flex-direction: column; align-items: center; gap: 16px;
}
.session-resume-spinner {
  width: 32px; height: 32px;
  border: 3px solid rgba(255,255,255,0.1);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: dash-spin 0.7s linear infinite;
}
.session-resume-text {
  font-size: 16px; font-weight: 500; color: var(--text-muted);
}
.session-resume-sub {
  font-size: 12px; color: var(--text-dim);
}

/* Sidebar resource history */
#sidebar-resources { padding: 0 12px; }
#resource-history-list { display: flex; flex-direction: column; gap: 4px; }
.resource-history-item {
  display: flex; align-items: center; gap: 8px; padding: 6px 8px;
  border-radius: 6px; cursor: pointer; transition: background 0.15s;
  font-size: 12px; color: var(--text-muted);
}
.resource-history-item:hover { background: var(--bg-hover); }
.resource-history-item.active { background: rgba(52,211,153,0.1); color: var(--text); }
.resource-history-icon {
  width: 28px; height: 28px; border-radius: 5px; background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; flex-shrink: 0; border: 1px solid var(--border);
}
.resource-history-info { flex: 1; min-width: 0; }
.resource-history-title {
  font-size: 11px; font-weight: 500; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.resource-history-type { font-size: 9px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.5px; }

/* Board fullscreen */
#board-panel.fullscreen {
  position: fixed; inset: 0; z-index: 200; border: none;
  min-width: 0;
}
.board-fullscreen-btn {
  background: none; border: none; color: var(--text-dim);
  cursor: pointer; font-size: 16px; padding: 4px 8px;
}
.board-fullscreen-btn:hover { color: var(--text); }

/* Hide board empty state when content is active */.board-content:not(:empty) ~ .board-empty { display: none; }

/* ─── Stage (Spotlight Panel) ──────────────────────────── */

/* In split view, #spotlight-panel IS the board panel header — thin bar, not collapsible */
#spotlight-panel {
  max-height: 40px !important;
  height: 40px !important;
  opacity: 1 !important;
  overflow: hidden;
  background: var(--bg-elevated);
  display: flex;
  flex-direction: row !important;
  align-items: center;
  justify-content: space-between;
  padding: 0 14px;
  flex-shrink: 0;
  flex-grow: 0;
  transition: none;
  border-bottom: 1px solid var(--border);
  gap: 8px;
}

/* stage-active: keep header thin — don't expand */
#spotlight-panel.stage-active {
  max-height: 40px !important;
  height: 40px !important;
  opacity: 1;
}

.spotlight-header-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
}

.spotlight-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 3px 8px;
  border-radius: 4px;
  flex-shrink: 0;
  line-height: 1;
}

.spotlight-type-badge[data-type="video"] {
  background: rgba(231, 76, 60, 0.15);
  color: #e74c3c;
}
.spotlight-type-badge[data-type="simulation"] {
  background: rgba(74, 222, 128, 0.12);
  color: var(--green);
}
.spotlight-type-badge[data-type="image"] {
  background: rgba(244, 208, 63, 0.12);
  color: var(--yellow);
}
.spotlight-type-badge[data-type="notebook"] {
  background: rgba(167, 139, 250, 0.12);
  color: #a78bfa;
}
.spotlight-type-badge[data-type="board-draw"] {
  background: rgba(126, 184, 218, 0.15);
  color: #7eb8da;
}
.spotlight-type-badge[data-type="widget"] {
  background: rgba(251, 191, 36, 0.15);
  color: #d97706;
}
.spotlight-type-badge[data-type="assessment"] {
  background: rgba(100, 120, 255, 0.15);
  color: #8090ff;
}

/* ── Widget loading skeleton ── */
.widget-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 48px 24px;
  min-height: 300px;
  background: var(--bg-alt, #f5f5f0);
}
.widget-loading-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid var(--border, #ddd);
  border-top-color: #d97706;
  border-radius: 50%;
  animation: widget-spin 0.8s linear infinite;
}
@keyframes widget-spin { to { transform: rotate(360deg); } }
.widget-loading-text {
  font-size: 13px;
  color: var(--text-muted, #888);
  font-weight: 500;
}

/* ── Widget iframe ── */
.widget-iframe {
  width: 100%;
  min-height: 450px;
  height: 100%;
  border: none;
  border-radius: 0;
  background: #fafafa;
}

/* ── Widget loading skeleton (spotlight) ── */
.widget-loading-anim {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.widget-skel-row {
  display: flex;
  gap: 10px;
}
.widget-skel-btn {
  width: 100px;
  height: 32px;
  border-radius: 16px;
  background: linear-gradient(90deg, #e8e8e4 25%, #f0f0ec 50%, #e8e8e4 75%);
  background-size: 200% 100%;
  animation: widget-shimmer 1.5s ease-in-out infinite;
}
.widget-skel-btn.short { width: 80px; }
.widget-skel-canvas {
  width: 100%;
  height: 260px;
  border-radius: 8px;
  background: linear-gradient(90deg, #ddd 25%, #e6e6e2 50%, #ddd 75%);
  background-size: 200% 100%;
  animation: widget-shimmer 1.5s ease-in-out infinite 0.2s;
}
.widget-skel-slider {
  flex: 1;
  height: 18px;
  border-radius: 9px;
  background: linear-gradient(90deg, #e8e8e4 25%, #f0f0ec 50%, #e8e8e4 75%);
  background-size: 200% 100%;
  animation: widget-shimmer 1.5s ease-in-out infinite 0.4s;
}
.widget-skel-text {
  width: 70%;
  height: 14px;
  border-radius: 7px;
  background: linear-gradient(90deg, #e8e8e4 25%, #f0f0ec 50%, #e8e8e4 75%);
  background-size: 200% 100%;
  animation: widget-shimmer 1.5s ease-in-out infinite 0.6s;
}
@keyframes widget-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.widget-loading-label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px;
  font-size: 13px;
  color: var(--text-muted, #888);
  font-weight: 500;
}

/* ── Widget generating indicator (inline in chat stream) ── */
/* Board focus indicator — shown in chat while board is drawing */
.board-focus-indicator {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px; margin: 12px 0; border-radius: 10px;
  background: linear-gradient(135deg, rgba(108,140,255,0.06), rgba(108,140,255,0.02));
  border: 1px solid rgba(108,140,255,0.15);
  animation: board-focus-pulse 2s ease-in-out infinite;
}
.board-focus-arrow {
  font-size: 20px; color: var(--accent);
  animation: board-focus-bounce 1.5s ease-in-out infinite;
}
@keyframes board-focus-bounce {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(6px); }
}
@keyframes board-focus-pulse {
  0%, 100% { opacity: 0.7; }
  50% { opacity: 1; }
}
.board-focus-text {
  font-size: 13px; color: var(--accent); font-style: italic;
}

.widget-gen-indicator {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  margin-top: 12px;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(251,191,36,0.08), rgba(217,119,6,0.05));
  border: 1px solid rgba(217,119,6,0.2);
}
.widget-gen-icon {
  font-size: 20px;
  flex-shrink: 0;
}
.widget-gen-info {
  flex: 1;
  min-width: 0;
}
.widget-gen-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text, #333);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.widget-gen-progress {
  font-size: 11px;
  color: var(--text-muted, #888);
  margin-top: 2px;
}
.widget-gen-spinner {
  width: 20px;
  height: 20px;
  border: 2px solid rgba(217,119,6,0.2);
  border-top-color: #d97706;
  border-radius: 50%;
  animation: widget-spin 0.8s linear infinite;
  flex-shrink: 0;
}

/* Widget ref card */
.spotlight-ref-card[data-type="widget"] .spotlight-ref-icon { color: #d97706; }
/* Assessment ref card */
.spotlight-ref-card[data-type="assessment"] .spotlight-ref-icon { color: #8090ff; }

#spotlight-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.spotlight-close-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--border);
  color: var(--text-muted);
  padding: 4px 12px;
  border-radius: var(--radius);
  cursor: pointer;
  font-size: 12px;
  font-family: var(--font-sans);
  font-weight: 500;
  transition: all var(--transition);
  flex-shrink: 0;
  white-space: nowrap;
}

.spotlight-close-btn:hover {
  background: rgba(248, 113, 113, 0.12);
  border-color: var(--red);
  color: var(--red);
}

#spotlight-content {
  flex: 1;
  overflow: hidden;
  padding: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#spotlight-content iframe {
  width: 100%;
  height: 100%;
  border: none;
  border-radius: 0;
  background: #000;
  display: block;
}

#spotlight-content img {
  max-width: 100%;
  max-height: 50vh;
  object-fit: contain;
  border-radius: 0;
  display: block;
  margin: 0 auto;
}

#spotlight-content video {
  max-width: 100%;
  max-height: 50vh;
  border-radius: 0;
  display: block;
  margin: 0 auto;
}

.spotlight-caption {
  font-size: 13px;
  color: var(--text-muted);
  text-align: center;
  padding: 8px 16px;
}

/* ─── Board (Shared Blackboard — Derivation & Problem Workspace) ──── */

/* Chalk color vars */
:root {
  --chalk-white: #d4e8dc;
  --chalk-blue: #5eead4;
  --chalk-green: #7ed99a;
  --chalk-yellow: #e8d47a;
}

.board {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  background: var(--bg-surface);
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.06);
  box-shadow: inset 0 0 80px rgba(0,0,0,0.3);
}

.board-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 28px;
  background: rgba(0,0,0,0.25);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.board-header-left { display: flex; align-items: center; gap: 12px; }
.board-badge {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  background: rgba(255,255,255,0.05);
  color: var(--accent);
  padding: 4px 12px;
  border-radius: 4px;
  font-weight: 700;
}
.board-title {
  font-family: var(--font-board);
  font-size: 28px;
  font-weight: 600;
  color: var(--chalk-white);
}

/* Problem header (problem mode only) */
.board-problem-header {
  padding: 14px 28px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
  background: rgba(52, 211, 153, 0.04);
}
.board-problem-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--accent);
  font-weight: 700;
  margin-bottom: 6px;
}
.board-problem-text {
  font-size: 18px;
  font-weight: 500;
  color: var(--text);
  line-height: 1.7;
}
.board-problem-text .katex { font-size: 1.1em; }

/* ── Board surface (where steps render) ── */
.board-surface {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
  padding: 28px 36px 24px;
  background:
    radial-gradient(ellipse at 20% 30%, rgba(255,255,255,0.008) 0%, transparent 50%),
    radial-gradient(ellipse at 70% 60%, rgba(255,255,255,0.006) 0%, transparent 50%),
    var(--bg-surface);
}

/* ── Tutor step (white chalk) ── */
.step {
  padding: 12px 0;
}
.step.fade-in {
  animation: step-appear 0.3s ease-out;
}
@keyframes step-appear {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.step-label {
  font-family: var(--font-board);
  font-size: 24px;
  font-weight: 500;
  color: var(--chalk-yellow);
  margin-bottom: 8px;
  line-height: 1.55;
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.step-label .katex { font-size: 0.9em; }
.step-num {
  font-family: var(--font-board);
  font-size: 20px;
  font-weight: 500;
  color: rgba(255,255,255,0.35);
  flex-shrink: 0;
}
.step-math {
  font-size: 24px;
  color: var(--chalk-white);
  padding: 8px 0 8px 32px;
  line-height: 2;
  text-shadow: 0 0 4px rgba(255,255,255,0.08);
}
.step-math .katex-display { margin: 4px 0; padding: 0; }
.step-math .katex { font-size: 1.4em; }

/* Chalk-line separator */
.chalk-line {
  height: 1px;
  margin: 6px 0 10px;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.08) 15%, rgba(255,255,255,0.06) 85%, transparent 100%);
}

/* ── Student step (green chalk) ── */
.step.student {
  border-left: 3px solid rgba(74,222,128,0.3);
  padding-left: 12px;
  margin-left: -12px;
}
.step.student .step-label { color: var(--chalk-green); }
.step.student .step-math {
  color: var(--chalk-green);
  text-shadow: 0 0 4px rgba(74,222,128,0.08);
}
.step-drawing {
  margin: 10px 0 0 32px;
  background: rgba(0,0,0,0.2);
  border-radius: 8px;
  padding: 10px;
  display: inline-block;
}
.step-drawing img {
  max-width: 100%;
  max-height: 280px;
  border-radius: 4px;
}

/* ── Tutor comment (blue chalk — hints, nudges, feedback) ── */
.tutor-says {
  font-family: var(--font-board);
  font-size: 24px;
  font-weight: 500;
  color: var(--chalk-blue);
  line-height: 1.6;
  padding: 6px 0 6px 32px;
  text-shadow: 0 0 3px rgba(126,184,218,0.06);
}
.tutor-says .katex { font-size: 0.95em; }
.tutor-says.fade-in {
  animation: step-appear 0.3s ease-out;
}

/* ── Tutor correction step (blue chalk equation) ── */
.step.correction {
  border-left: 3px solid rgba(126,184,218,0.3);
  padding-left: 12px;
  margin-left: -12px;
}
.step.correction .step-label { color: var(--chalk-blue); }
.step.correction .step-math {
  color: var(--chalk-blue);
  text-shadow: 0 0 4px rgba(126,184,218,0.08);
}

/* ── Board workspace (student input area) ── */
.board-workspace {
  flex-shrink: 0;
  background: rgba(0,0,0,0.2);
  border-top: 1px solid rgba(255,255,255,0.06);
  padding: 16px 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.board-ws-label {
  font-family: var(--font-board);
  font-size: 20px;
  font-weight: 500;
  color: var(--chalk-green);
  margin-bottom: 2px;
}
.board-ws-canvas-wrap {
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  overflow: hidden;
  background: rgba(0,0,0,0.15);
  transition: border-color 0.2s ease;
}
.board-ws-canvas-wrap:focus-within,
.board-ws-canvas-wrap:hover {
  border-color: rgba(126,218,126,0.25);
}
.board-ws-canvas-wrap canvas {
  width: 100%;
  display: block;
  cursor: crosshair;
  touch-action: none;
}
.board-ws-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-top: 1px solid rgba(255,255,255,0.06);
  background: rgba(0,0,0,0.1);
}
.board-ws-color {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform 0.15s ease, border-color 0.15s ease;
}
.board-ws-color:hover { transform: scale(1.15); }
.board-ws-color.active {
  border-color: white;
  box-shadow: 0 0 8px rgba(255,255,255,0.3);
}
.board-ws-sep {
  width: 1px;
  height: 22px;
  background: rgba(255,255,255,0.08);
  margin: 0 6px;
}
.board-ws-btn {
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 6px;
  background: none;
  color: var(--text-dim);
  cursor: pointer;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s ease;
}
.board-ws-btn:hover { color: var(--text); }
.board-ws-text-row {
  display: flex;
  gap: 10px;
  align-items: flex-end;
}
.board-ws-input {
  flex: 1;
  background: rgba(0,0,0,0.2);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  padding: 12px 16px;
  color: var(--chalk-green);
  font-family: var(--font-board);
  font-size: 22px;
  font-weight: 500;
  resize: none;
  outline: none;
  min-height: 48px;
  max-height: 160px;
  line-height: 1.5;
  transition: border-color 0.2s ease;
}
.board-ws-input:focus {
  border-color: rgba(126,218,126,0.3);
}
.board-ws-input::placeholder {
  color: var(--text-dim);
  font-family: var(--font-sans);
  font-size: 14px;
}
.board-ws-submit {
  padding: 12px 24px;
  border-radius: 10px;
  border: none;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  background: var(--green);
  color: #0a0d0b;
  white-space: nowrap;
  transition: opacity 0.15s ease;
}
.board-ws-submit:hover { opacity: 0.9; }
.board-ws-hint {
  font-size: 12px;
  color: var(--text-dim);
}

.board-auto-send-indicator {
  font-size: 11px;
  padding: 4px 8px;
  border-radius: 4px;
  text-align: center;
  font-weight: 600;
  font-family: var(--font-sans);
}
.board-auto-send-indicator.sending {
  color: var(--accent-bright);
  background: rgba(52, 211, 153, 0.1);
}
.board-auto-send-indicator.sent {
  color: var(--green);
  background: rgba(74, 222, 128, 0.1);
}

/* ── Spotlight Reference Cards (clickable history pills in chat) ── */

.spotlight-ref-card {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 20px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  cursor: pointer;
  transition: all var(--transition);
  font-family: var(--font-sans);
  font-size: 13px;
  color: var(--text-muted);
}
.spotlight-ref-card:hover {
  background: var(--bg-hover);
  border-color: var(--border-active);
  color: var(--text);
}
.spotlight-ref-icon {
  font-size: 14px;
}
.spotlight-ref-card[data-type="video"] .spotlight-ref-icon { color: #f87171; }
.spotlight-ref-card[data-type="simulation"] .spotlight-ref-icon { color: #a78bfa; }
.spotlight-ref-card[data-type="notebook"] .spotlight-ref-icon { color: var(--green); }
.spotlight-ref-card[data-type="image"] .spotlight-ref-icon { color: #5eead4; }
.spotlight-ref-card[data-type="board-draw"] .spotlight-ref-icon { color: #7eb8da; }
.spotlight-ref-title {
  font-weight: 600;
  color: inherit;
}
.spotlight-ref-hint {
  font-size: 10px;
  color: var(--text-dim);
  margin-left: 4px;
}

/* (old notebook-draw-* and notebook-submit-btn classes removed — replaced by board-ws-* above) */

/* ── Spotlight Fullscreen Mode (side-by-side: spotlight left, chat right) ── */

#main-layout.notebook-fullscreen {
  flex-direction: row;
}
#main-layout.notebook-fullscreen #spotlight-panel {
  max-height: none !important;
  flex: 3;
  min-width: 0;
  border-bottom: none;
  border-right: 2px solid var(--accent-dim);
}
#main-layout.notebook-fullscreen #spotlight-panel.stage-active {
  max-height: none !important;
}
#main-layout.notebook-fullscreen #canvas-stream {
  flex: 2;
  min-width: 300px;
  max-width: 520px;
  border-left: none;
  padding: 20px 16px;
}
/* Smaller text and tighter spacing in chat column during fullscreen */
#main-layout.notebook-fullscreen #canvas-stream .canvas-block {
  margin-bottom: 16px;
}
#main-layout.notebook-fullscreen #canvas-stream .board-text {
  font-size: 21px;
}
#main-layout.notebook-fullscreen #canvas-stream .board-response .response-text {
  font-size: 20px;
}
#main-layout.notebook-fullscreen #canvas-stream .block-card {
  padding: 14px 16px;
}

.spotlight-fullscreen-btn {
  background: none;
  border: 1px solid var(--border);
  color: var(--text-dim);
  width: 28px;
  height: 28px;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition);
  flex-shrink: 0;
}
.spotlight-fullscreen-btn:hover { background: var(--bg-hover); color: var(--text); border-color: var(--border-active); }

/* Problem canvas area */
.notebook-canvas-area {
  flex-shrink: 0;
  padding: 0 8px;
  display: none;
}

.notebook-canvas-area canvas {
  width: 100%;
  height: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: crosshair;
  display: block;
  touch-action: none;
}

.notebook-actions {
  padding: 8px 16px;
  flex-shrink: 0;
  display: flex;
  justify-content: flex-end;
}

/* ─── Board (Canvas Stream) ──────────────────────────────── */

#canvas-stream {
  flex: 1;
  overflow-y: auto;
  padding: 32px 48px;
  position: relative;
  min-height: 0;
  background:
    linear-gradient(rgba(255,255,255,0.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.018) 1px, transparent 1px),
    var(--bg);
  background-size: 32px 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* ─── Scribble Annotation Overlay ──────────────── */
#scribble-overlay {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 15;
  pointer-events: none;
  touch-action: none;
}
#scribble-overlay.active {
  pointer-events: auto;
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%236c8cff' d='M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25z'/%3E%3Cpath fill='%236c8cff' d='M20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E") 2 22, crosshair;
}
#scribble-overlay.hidden-strokes { opacity: 0; }

#scribble-toolbar {
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 4px 6px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.5);
  backdrop-filter: blur(12px);
}
.scribble-tools {
  display: flex;
  align-items: center;
  gap: 3px;
}
.scribble-btn {
  width: 30px; height: 30px;
  border-radius: 6px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-dim);
  font-size: 12px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.12s;
}
.scribble-btn:hover { background: rgba(255,255,255,0.06); color: var(--text); }
.scribble-btn.active { border-color: var(--accent); background: rgba(52,211,153,0.1); }
.scribble-btn .swatch {
  width: 14px; height: 14px; border-radius: 50%;
  display: block;
}
.scribble-sep {
  width: 1px; height: 20px; background: var(--border); margin: 0 3px;
}
.scribble-close { color: var(--red); font-weight: 700; }
.scribble-close:hover { background: rgba(248,113,113,0.12); }

.scribble-label {
  font-size: 11px;
  color: var(--text-dim);
  letter-spacing: 0.5px;
  text-transform: uppercase;
  margin-right: 4px;
  user-select: none;
}

/* Scribble "Done" button — appears when dirty */
.scribble-done-btn {
  padding: 5px 16px;
  margin-left: 6px;
  border-radius: 6px;
  border: 1px solid var(--accent);
  background: var(--accent);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
  animation: fadeIn 0.2s ease;
}
.scribble-done-btn:hover { background: var(--accent-bright); }
.scribble-done-btn.hidden { display: none; }

/* Scribble toggle button in text input icons */
.input-icon-btn.input-scribble-btn { position: relative; }
.input-icon-btn.input-scribble-btn.active {
  color: var(--accent);
  background: rgba(52,211,153,0.08);
}
.input-icon-btn.input-scribble-btn svg {
  fill: currentColor;
  stroke: none;
}

/* ─── Scribble Review Overlay ──────────────── */
#scribble-review {
  position: absolute;
  inset: 0;
  z-index: 25;
  background: rgba(15,17,23,0.85);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fadeIn 0.2s ease;
}
#scribble-review.hidden { display: none; }

.scribble-review-inner {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 20px;
  max-width: 520px;
  width: 90%;
  box-shadow: 0 8px 40px rgba(0,0,0,0.6);
}
.scribble-review-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}
.scribble-review-close {
  background: none; border: none; color: var(--text-dim);
  font-size: 16px; cursor: pointer; padding: 2px 6px; border-radius: 4px;
}
.scribble-review-close:hover { background: var(--bg-hover); color: var(--text); }

.scribble-review-thumbs {
  display: flex;
  gap: 12px;
  margin-bottom: 14px;
}
.scribble-thumb-card {
  flex: 1;
  border: 1px solid var(--border-dim);
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg);
}
.scribble-thumb-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text-dim);
  padding: 4px 8px;
  background: rgba(255,255,255,0.03);
  border-bottom: 1px solid var(--border-dim);
}
.scribble-thumb-card img {
  width: 100%;
  display: block;
  max-height: 180px;
  object-fit: contain;
  background: #0a0d0b;
}
#scribble-review .text-input {
  width: 100%;
  margin-bottom: 12px;
  box-sizing: border-box;
}
.scribble-review-send {
  width: 100%;
  padding: 10px;
  font-size: 14px;
}


.canvas-block {
  position: relative;
  margin-bottom: 24px;
  max-width: 1200px;
  width: 100%;
}

.block-card {
  background: rgba(26, 29, 39, 0.45);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(45, 50, 68, 0.35);
  border-left: 3px solid rgba(45, 50, 68, 0.35);
  border-radius: 2px 8px 8px 2px;
  padding: 20px 24px;
  box-shadow: none;
  transition: border-color var(--transition);
  overflow-wrap: break-word;
  word-wrap: break-word;
}

/* Type-specific left accent border — only for media/interactive cards */
.canvas-block[data-type="video"] .block-card { border-left: 3px solid #e74c3c; }
.canvas-block[data-type="image"] .block-card { border-left: 3px solid #f4d03f; }
.canvas-block[data-type="mcq"] .block-card,
.canvas-block[data-type="freetext"] .block-card { border-left: 3px solid var(--accent); }
.canvas-block[data-type="recap"] .block-card { border-left: 3px solid var(--green); }
.canvas-block[data-type="system"] .block-card { border-left: 3px solid var(--text-dim); }
.canvas-block[data-type="diagram"] .block-card { border-left: 3px solid #a78bfa; }

/* AI text blocks — no card chrome, flows like board writing */
.canvas-block[data-type="ai"] .block-card {
  background: transparent;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  padding: 0;
}

/* Board text blocks — no card wrapper at all */
.board-text-block {
  margin-bottom: 24px;
  max-width: 1200px;
  width: 100%;
}

.board-text {
  font-family: var(--font-board);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.6;
  color: var(--text);
  overflow-wrap: break-word;
  word-wrap: break-word;
}

.board-text strong { color: var(--accent-bright); font-weight: 700; }
.board-text em { color: var(--yellow); font-style: normal; font-weight: 700; }
.board-voice-transcript { font-size:16px; color:var(--text-muted); line-height:1.6;
  font-family:var(--font); font-weight:400; border-left:2px solid var(--border);
  padding-left:12px; margin-top:8px }

/* Board headings */
.board-section-heading {
  font-family: var(--font-board);
  font-size: 36px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--text);
  padding: 32px 0 14px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--border);
  max-width: 1200px;
  width: 100%;
  text-align: center;
}

.board-section-heading .heading-text {
  display: block;
}

.board-topic-heading {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-board);
  font-size: 28px;
  font-weight: 600;
  color: var(--accent-bright);
  padding: 22px 0 8px;
  padding-left: 14px;
  border-left: 3px solid var(--accent);
  margin-bottom: 8px;
  max-width: 1200px;
  width: 100%;
}

.board-topic-heading .heading-concept {
  font-size: 14px;
  font-weight: 500;
  font-family: var(--font-sans);
  color: var(--text-dim);
  background: rgba(255,255,255,0.06);
  padding: 2px 9px;
  border-radius: 4px;
  margin-left: 6px;
}

.board-sub-heading {
  font-family: var(--font-board);
  font-size: 24px;
  font-weight: 700;
  color: var(--accent);
  padding: 16px 0 6px;
  padding-left: 14px;
  border-left: 3px solid rgba(52,211,153,0.4);
  margin-bottom: 6px;
  max-width: 1200px;
  width: 100%;
}

.board-sub-heading .heading-text {
  display: block;
}

/* Remove connectors entirely for clean board feel */
.canvas-block + .canvas-block::before,
.canvas-block + .canvas-block::after {
  display: none;
}

/* User responses — compact inline, not right-aligned bubbles */
.canvas-block[data-type="user"] {
  max-width: 1200px;
  width: 100%;
}

.board-response {
  margin-bottom: 20px;
  padding: 8px 0;
  max-width: 1200px;
  width: 100%;
}

.board-response .response-label {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-dim);
  margin-right: 10px;
  font-family: var(--font-sans);
}

.board-response .response-text {
  font-family: var(--font-board);
  font-size: 25px;
  font-weight: 500;
  color: var(--text-muted);
  line-height: 1.55;
  overflow-wrap: break-word;
  word-wrap: break-word;
}

.user-image-preview {
  margin-top: 8px;
}
.user-image-preview img {
  max-height: 140px;
  max-width: 260px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.1);
  object-fit: cover;
}

/* Resolved blocks */
.canvas-block.resolved {
  opacity: 0.45;
  pointer-events: none;
}


/* ─── Plan Heading Bar ───────────────────────────────────── */

.plan-heading-bar {
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border-active);
  flex-shrink: 0;
  cursor: pointer;
  user-select: none;
  transition: background 0.2s;
}
.plan-heading-bar:hover { background: var(--bg-hover); }
.plan-heading-bar.hidden { display: none; }

.plan-hb-progress {
  height: 3px;
  background: rgba(255,255,255,0.06);
}
.plan-hb-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent-dim), var(--accent));
  transition: width 0.6s cubic-bezier(0.4,0,0.2,1);
  width: 0%;
  box-shadow: 0 0 8px rgba(52,211,153,0.3);
}
.plan-hb-content {
  display: flex;
  align-items: center;
  padding: 10px 20px;
  gap: 10px;
  font-size: 13px;
  min-height: 36px;
}
.plan-hb-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
  box-shadow: 0 0 6px rgba(52,211,153,0.4);
}
.plan-hb-section { color: var(--text); font-weight: 600; font-size: 13px; }
.plan-hb-sep { color: var(--text-dim); font-size: 12px; }
.plan-hb-topic { color: var(--accent-bright); font-weight: 600; font-size: 13px; }
.plan-hb-detour {
  background: var(--yellow-dim);
  color: var(--yellow);
  font-size: 9px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 3px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.plan-hb-detour.hidden { display: none; }
.plan-hb-meta {
  margin-left: auto;
  color: var(--text-dim);
  font-size: 11px;
  font-family: var(--font-mono);
}

/* Detour state */
.plan-heading-bar.detour .plan-hb-dot { background: var(--yellow); }
.plan-heading-bar.detour .plan-hb-section { color: var(--yellow); }
.plan-heading-bar.detour .plan-hb-topic { color: var(--yellow); }
.plan-heading-bar.detour { border-bottom-color: rgba(251,191,36,0.3); }

/* ─── Plan Panel Overlay ─────────────────────────────────── */

.plan-panel-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.5);
  z-index: 1000;
  display: flex;
  justify-content: center;
  padding-top: 80px;
  backdrop-filter: blur(2px);
}
.plan-panel-overlay.hidden { display: none; }

.plan-panel {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  width: 420px;
  max-height: 70vh;
  overflow-y: auto;
  padding: 20px;
  box-shadow: 0 8px 40px rgba(0,0,0,0.6);
  align-self: flex-start;
}
.plan-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}
.plan-panel-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}
.plan-panel-close {
  background: none;
  border: none;
  color: var(--text-dim);
  font-size: 20px;
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
}
.plan-panel-close:hover { color: var(--text); }

/* Plan panel content */
.pp-objective {
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 14px;
  line-height: 1.5;
}
.pp-progress {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 16px;
  font-family: var(--font-mono);
}
.pp-progress-bar {
  flex: 1;
  max-width: 200px;
  height: 4px;
  background: var(--bg);
  border-radius: 2px;
  overflow: hidden;
}
.pp-progress-bar .fill {
  height: 100%;
  background: var(--accent);
  border-radius: 2px;
  transition: width 0.4s;
}

/* Section in plan panel */
.pp-section { margin-bottom: 14px; }
.pp-section-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 0;
}
.pp-section-header .icon { width: 14px; text-align: center; flex-shrink: 0; }
.pp-section-header.done { color: var(--green); }
.pp-section-header.active { color: var(--accent-bright); }
.pp-section-header.pending { color: var(--text-dim); }
.pp-section-header.detour { color: var(--yellow); }
.pp-section-header.paused { color: #a78bfa; }

.pp-badge {
  font-size: 8px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 1px 6px;
  border-radius: 3px;
}
.pp-badge.done { color: var(--green); background: var(--green-dim); }
.pp-badge.now { color: var(--accent); background: var(--accent-dim); }
.pp-badge.next { color: var(--text-dim); background: var(--bg-hover); }
.pp-badge.detour { color: var(--yellow); background: var(--yellow-dim); }
.pp-badge.paused { color: #a78bfa; background: #2a1f3e; }

/* Topics in plan panel */
.pp-topics { padding-left: 24px; }
.pp-topic {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  padding: 3px 0;
}
.pp-topic .icon { width: 12px; text-align: center; flex-shrink: 0; font-size: 10px; }
.pp-topic.done { color: var(--green); opacity: 0.7; }
.pp-topic.active { color: var(--accent-bright); font-weight: 500; }
.pp-topic.pending { color: var(--text-dim); }
.pp-topic.paused { color: #a78bfa; font-style: italic; }

.pp-detour-reason {
  font-size: 10px;
  color: var(--text-dim);
  font-style: italic;
  padding: 2px 0 2px 24px;
  border-left: 2px solid var(--yellow-dim);
  margin-left: 6px;
  margin-top: 2px;
}

/* ─── Course Progress List ───────────────────────────────── */

.course-progress-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  overflow-y: auto;
}

.progress-module {
  margin-bottom: 10px;
}

.progress-module-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-dim);
  margin-bottom: 6px;
  padding: 0 4px;
}

.progress-lesson {
  margin-bottom: 4px;
}

.progress-lesson-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  padding: 4px 6px;
  border-radius: 4px;
  cursor: default;
  display: flex;
  align-items: center;
  gap: 6px;
}

.progress-lesson-title .lesson-icon {
  font-size: 10px;
  flex-shrink: 0;
  width: 14px;
  text-align: center;
}

.progress-lesson.active > .progress-lesson-title {
  color: var(--accent-bright);
  background: rgba(52, 211, 153, 0.08);
}

.progress-lesson.completed > .progress-lesson-title {
  color: var(--green);
}

.progress-sections {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding-left: 20px;
  margin-top: 2px;
}

.progress-section {
  font-size: 11px;
  color: var(--text-dim);
  padding: 3px 6px;
  border-radius: 3px;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: all var(--transition);
}

.progress-section .section-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--border);
  flex-shrink: 0;
  transition: background var(--transition);
}

.progress-section.completed {
  color: var(--text-muted);
}

.progress-section.completed .section-dot {
  background: var(--green);
}

.progress-section.current {
  color: var(--accent-bright);
  background: rgba(52, 211, 153, 0.06);
}

.progress-section.current .section-dot {
  background: var(--accent);
  box-shadow: 0 0 4px var(--accent);
}

/* legacy — kept for backward compat */
.sidebar-stats {
  display: none;
}

/* ─── Block Content Styles ───────────────────────────────── */

.ai-message {
  font-size: 14px;
  line-height: 1.65;
  color: var(--text);
  margin-bottom: 14px;
}

.ai-message:last-child {
  margin-bottom: 0;
}

.ai-message strong { color: var(--accent-bright); }
.ai-message em { color: var(--yellow); font-style: normal; font-weight: 500; }

.ai-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--accent-dim);
  margin-bottom: 6px;
}

/* ── Error card ── */
.error-card {
  background: var(--red-dim);
  border: 1px solid rgba(248, 113, 113, 0.3);
  border-radius: 12px;
  padding: 16px 20px;
  max-width: 480px;
}
.error-card-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.error-card-icon { font-size: 20px; }
.error-card-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--red);
}
.error-card-body {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
  margin-bottom: 12px;
}
.error-card-actions { text-align: right; }

.user-message-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-dim);
  margin-bottom: 4px;
  text-align: right;
}

/* Text input with inline icons */
.text-input-area {
  position: relative;
  margin-bottom: 12px;
}

.input-wrapper {
  position: relative;
  display: flex;
  align-items: flex-end;
}

.input-wrapper .text-input {
  padding-right: 120px;  /* space for inline icon buttons */
}

.input-image-preview {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.03);
  border: none;
  border-bottom: none;
  border-radius: 4px 4px 0 0;
}
.input-image-preview img {
  max-height: 60px;
  max-width: 120px;
  border-radius: 6px;
  object-fit: cover;
}
.img-preview-remove {
  background: rgba(255,255,255,0.1);
  border: none;
  color: var(--text-dim);
  font-size: 18px;
  cursor: pointer;
  border-radius: 50%;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}
.img-preview-remove:hover {
  background: rgba(255,60,60,0.3);
  color: #fff;
}
.input-wrapper .input-image-preview:not([style*="none"]) ~ .text-input {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}
.input-img-btn svg {
  width: 18px;
  height: 18px;
}

.input-icons {
  position: absolute;
  right: 4px;
  bottom: 10px;
  display: flex;
  gap: 2px;
  align-items: center;
}

.input-icon-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-dim);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition);
  padding: 0;
}

.input-icon-btn:hover {
  background: var(--bg-hover);
  color: var(--text);
}

.input-icon-btn svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.input-send-btn {
  background: rgba(52, 211, 153, 0.12);
  color: var(--accent-bright);
  border-radius: 50%;
}
.input-send-btn:hover {
  background: var(--accent);
  color: #fff;
}

.input-mic-btn.recording {
  background: var(--red);
  color: #fff;
  animation: pulse-mic 1.2s infinite;
}

@keyframes pulse-mic {
  0%, 100% { box-shadow: 0 0 0 0 rgba(248, 113, 113, 0.4); }
  50% { box-shadow: 0 0 0 8px rgba(248, 113, 113, 0); }
}

.text-input {
  width: 100%;
  min-height: 48px;
  background: rgba(255, 255, 255, 0.02);
  border: none;
  border-bottom: 1.5px solid rgba(255, 255, 255, 0.08);
  border-radius: 0;
  color: var(--text);
  padding: 12px 120px 12px 4px;
  font-family: var(--font-board);
  font-size: 24px;
  font-weight: 500;
  resize: none;
  outline: none;
  transition: border-color var(--transition);
  line-height: 1.5;
}

.text-input:focus {
  border-bottom-color: rgba(52, 211, 153, 0.4);
  box-shadow: none;
}

.text-input::placeholder {
  color: var(--text-dim);
  font-family: var(--font-board);
  font-size: 24px;
  font-weight: 500;
}

/* MCQ */
.mcq-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
}

.mcq-option {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px 16px;
  font-size: 14px;
  cursor: pointer;
  transition: all var(--transition);
  user-select: none;
}

.mcq-option:hover {
  border-color: var(--accent-dim);
  background: var(--bg-hover);
}

.mcq-option.selected {
  border-color: var(--accent);
  background: rgba(52, 211, 153, 0.1);
}

.mcq-option.correct {
  border-color: var(--green);
  background: rgba(74, 222, 128, 0.08);
}

.mcq-option.incorrect {
  border-color: var(--red);
  background: rgba(248, 113, 113, 0.08);
  opacity: 0.6;
}

/* Probe-mode MCQ — casual feel, matches board aesthetic */
.probe-prompt {
  font-family: var(--font-board);
  font-size: 23px;
  font-weight: 500;
  line-height: 1.55;
  color: var(--text);
  margin-bottom: 10px;
}
.probe-prompt strong { color: var(--accent-bright); font-weight: 700; }
.probe-prompt em { color: var(--yellow); font-style: normal; font-weight: 700; }

.mcq-probe .mcq-option {
  background: transparent;
  border: 1px solid var(--border-dim, rgba(255,255,255,0.08));
  border-radius: 6px;
  padding: 12px 18px;
  font-family: var(--font-board);
  font-size: 22px;
  font-weight: 500;
  gap: 10px;
}
.mcq-probe .mcq-option:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.15);
}
.mcq-probe .mcq-radio {
  width: 14px;
  height: 14px;
  border-width: 1.5px;
  border-color: var(--text-muted);
  opacity: 0.5;
}
.mcq-probe .mcq-option.selected {
  background: rgba(52, 211, 153, 0.08);
  border-color: var(--accent-dim);
}
.mcq-probe .mcq-option.selected .mcq-radio {
  opacity: 1;
  border-color: var(--accent);
}
.mcq-probe .mcq-option.selected .mcq-radio::after {
  width: 6px;
  height: 6px;
}
.mcq-probe .mcq-option.probe-selected {
  border-color: var(--accent);
  background: rgba(52, 211, 153, 0.10);
}
.mcq-option.probe-selected {
  border-color: var(--accent);
  background: rgba(52, 211, 153, 0.12);
}

.mcq-radio {
  width: 18px;
  height: 18px;
  border: 2px solid var(--border-active);
  border-radius: 50%;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition);
}

.mcq-option.selected .mcq-radio {
  border-color: var(--accent);
}

.mcq-option.selected .mcq-radio::after {
  content: '';
  width: 8px;
  height: 8px;
  background: var(--accent);
  border-radius: 50%;
}

/* Confidence slider */
.confidence-container {
  margin: 14px 0;
  display: flex;
  align-items: center;
  gap: 14px;
}

.confidence-label {
  font-size: 13px;
  color: var(--text-muted);
  white-space: nowrap;
}

.confidence-slider {
  flex: 1;
  -webkit-appearance: none;
  appearance: none;
  height: 6px;
  background: var(--bg-elevated);
  border-radius: 3px;
  outline: none;
}

.confidence-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  background: var(--accent);
  border-radius: 50%;
  cursor: pointer;
  border: 2px solid var(--bg-surface);
  transition: transform 0.15s ease;
}

.confidence-slider::-webkit-slider-thumb:hover {
  transform: scale(1.2);
}

.confidence-value {
  font-family: var(--font-mono);
  font-size: 14px;
  font-weight: 600;
  color: var(--accent-bright);
  width: 40px;
  text-align: right;
}

/* Agree/Disagree toggle */
.agree-toggle {
  display: flex;
  gap: 10px;
  margin-bottom: 12px;
}

.agree-btn {
  flex: 1;
  padding: 12px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
  font-family: var(--font-sans);
  text-align: center;
}

.agree-btn:hover { border-color: var(--border-active); }

.agree-btn.selected.agree {
  border-color: var(--green);
  background: rgba(74, 222, 128, 0.1);
  color: var(--green);
}

.agree-btn.selected.disagree {
  border-color: var(--red);
  background: rgba(248, 113, 113, 0.1);
  color: var(--red);
}

/* Spot the error quote */
.error-quote {
  background: var(--bg-elevated);
  border-left: 3px solid var(--yellow);
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 14px 18px;
  margin: 10px 0 14px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-muted);
  font-style: italic;
}

.error-quote-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-dim);
  margin-bottom: 6px;
  font-style: normal;
}

/* Fill-in blanks */
.blank-container {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 14px;
  line-height: 2.2;
  margin: 12px 0;
}

.blank-label { color: var(--text-muted); }

.blank-input, .blank-select {
  background: var(--bg-elevated);
  border: 1px solid var(--accent-dim);
  border-radius: var(--radius);
  color: var(--accent-bright);
  padding: 4px 12px;
  font-family: var(--font-sans);
  font-size: 14px;
  outline: none;
  transition: border-color var(--transition);
}

.blank-input:focus, .blank-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(52, 211, 153, 0.2);
}

.blank-select { cursor: pointer; }

/* Number inputs */
.number-inputs {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 12px 0;
}

.number-input-row {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
}

.number-input-row label {
  color: var(--text-muted);
  min-width: 120px;
}

.number-input {
  width: 80px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--accent-bright);
  padding: 8px 12px;
  font-family: var(--font-mono);
  font-size: 14px;
  text-align: center;
  outline: none;
}

.number-input:focus {
  border-color: var(--accent);
}

/* Buttons row */
.strip-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
}

.btn {
  padding: 8px 20px;
  border-radius: var(--radius);
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transition);
  border: 1px solid transparent;
}

.btn-primary {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

.btn-primary:hover {
  background: var(--accent-bright);
}

.btn-primary:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.btn-secondary {
  background: var(--bg-elevated);
  color: var(--text-muted);
  border-color: var(--border);
}

.btn-secondary:hover {
  background: var(--bg-hover);
  color: var(--text);
}


/* Choice buttons (continue / break) */
.choice-buttons {
  display: flex;
  gap: 12px;
  margin: 10px 0;
}

.choice-btn {
  flex: 1;
  padding: 14px 20px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  color: var(--text);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--transition);
  font-family: var(--font-sans);
  text-align: center;
}

.choice-btn:hover {
  border-color: var(--accent);
  background: rgba(52, 211, 153, 0.08);
}

.choice-btn.primary {
  border-color: var(--accent-dim);
  background: rgba(52, 211, 153, 0.1);
  color: var(--accent-bright);
}

/* ─── Video ──────────────────────────────────────────────── */

.video-container {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  background: #000;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
}

.video-container iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

.video-label {
  font-size: 13px;
  color: var(--text-muted);
  margin-top: 8px;
  text-align: center;
}

.video-overlay {
  position: absolute;
  inset: 0;
  background: rgba(15, 17, 23, 0.85);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  z-index: 2;
  cursor: pointer;
  transition: opacity var(--transition);
}

.video-overlay .pause-icon {
  font-size: 48px;
  color: var(--accent);
}

.video-overlay .pause-text {
  font-size: 14px;
  color: var(--text-muted);
  font-weight: 500;
}

.video-overlay.hidden { display: none; }

/* ─── Image ──────────────────────────────────────────────── */

.teaching-image-card img {
  max-width: 100%;
  max-height: 500px;
  object-fit: contain;
  opacity: 0;
  transition: opacity 0.4s;
  border-radius: var(--radius);
  display: block;
  margin: 0 auto;
}

.image-caption { font-size: 13px; color: var(--text-muted); text-align: center; margin-top: 8px; }
.image-error { padding: 40px; color: var(--text-dim); text-align: center; }

/* ─── Simulation ─────────────────────────────────────────── */

.sim-container {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 24px;
  width: 100%;
}

.sim-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  font-size: 15px;
  font-weight: 600;
}

.sim-header .lab-icon { font-size: 20px; }

.sim-open-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 12px 20px;
  background: rgba(52, 211, 153, 0.1);
  border: 1px solid var(--accent-dim);
  border-radius: var(--radius);
  color: var(--accent-bright);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
  font-family: var(--font-sans);
  margin-top: 12px;
}

.sim-open-btn:hover {
  background: rgba(52, 211, 153, 0.2);
  border-color: var(--accent);
}

.sim-open-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.sim-iframe-wrapper {
  position: relative;
  width: 100%;
  aspect-ratio: 16/10;
  background: #000;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  margin-top: 12px;
}

.sim-iframe-wrapper iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

.sim-toolbar {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}

.sim-toolbar-btn {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-muted);
  padding: 4px 12px;
  font-size: 12px;
  cursor: pointer;
  font-family: var(--font-sans);
  transition: all var(--transition);
}

.sim-toolbar-btn:hover {
  background: var(--bg-hover);
  color: var(--text);
  border-color: var(--border-active);
}

/* Simulation open-above state (when sim is in spotlight) */
.sim-open-above {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 24px 16px;
  color: var(--text-dim);
  text-align: center;
}

.sim-open-above-icon {
  font-size: 24px;
  color: var(--accent);
  animation: sim-above-pulse 2s ease-in-out infinite;
}

@keyframes sim-above-pulse {
  0%, 100% { opacity: 0.5; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(-3px); }
}

.sim-open-above-text {
  font-size: 13px;
  color: var(--text-muted);
}

/* Video open-above state (when video is in spotlight) */
.video-open-above {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  color: var(--text-dim);
  font-size: 13px;
}

.video-open-above-icon {
  color: var(--accent);
}

/* Simulation Fullscreen Overlay */
#sim-fullscreen-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 17, 23, 0.95);
  z-index: 200;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.2s ease;
}

#sim-fullscreen-overlay.hidden {
  display: none;
}

.sim-fullscreen-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 95vw;
  max-width: 1400px;
  margin-bottom: 12px;
}

.sim-fullscreen-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

#sim-fullscreen-iframe {
  width: 95vw;
  max-width: 1400px;
  height: 85vh;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: #000;
}

.canvas-block[data-type="simulation"] .block-card {
  border-left: 3px solid var(--orange);
}

/* ─── Mermaid Diagrams ───────────────────────────────────── */

.teaching-diagram-card { width: 100%; }

.diagram-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.diagram-icon { color: #a78bfa; font-size: 16px; }

.bd-diagram-container {
  background: rgba(15, 17, 23, 0.5);
  border-radius: var(--radius);
  padding: 20px;
  overflow-x: auto;
  display: flex;
  justify-content: center;
}

.bd-diagram-container svg {
  max-width: 100%;
  height: auto;
}

/* ─── Teachback ──────────────────────────────────────────── */

.teaching-teachback-card {
  background: rgba(52, 211, 153, 0.04);
  border: 1px solid var(--accent-dim);
  border-radius: var(--radius-lg);
  padding: 18px 20px;
}

.teachback-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--accent-bright);
  margin-bottom: 12px;
}

.teachback-icon {
  font-size: 16px;
}

.teachback-textarea {
  min-height: 120px !important;
}

.teachback-helper {
  font-size: 12px;
  color: var(--text-dim);
  margin-top: 6px;
  margin-bottom: 10px;
  font-style: italic;
}

/* ─── Freetext Mode Toggle ───────────────────────────────── */

.freetext-input-container {
  position: relative;
}

.input-mode-toggle {
  display: inline-flex;
  gap: 0;
  margin-bottom: 10px;
  background: rgba(255, 255, 255, 0.04);
  border-radius: 20px;
  padding: 2px;
  border: 1px solid rgba(255, 255, 255, 0.06);
}

.mode-btn {
  height: 28px;
  border: none;
  border-radius: 18px;
  background: transparent;
  color: var(--text-dim);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  transition: all var(--transition);
  padding: 0 14px;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}

.mode-btn svg {
  width: 13px;
  height: 13px;
}

.mode-btn:hover {
  color: var(--text-muted);
}

.mode-btn.active {
  background: rgba(52, 211, 153, 0.1);
  color: var(--accent);
}

.draw-mode canvas {
  width: 100%;
  height: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: crosshair;
  display: block;
  touch-action: none;
}

/* Canvas Drawing CSS removed — teaching-canvas now routes to spotlight notebook */

/* ─── Recap ──────────────────────────────────────────────── */

.recap-header {
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.recap-section {
  margin-bottom: 20px;
}

.recap-section h4 {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 10px;
}

/* ─── Tool Indicator ─────────────────────────────────────── */

.tool-indicator {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 4px 10px;
  font-size: 12px;
  color: var(--text-dim);
  font-family: var(--font-mono);
  margin-bottom: 8px;
}

.tool-indicator.active {
  border-color: var(--accent-dim);
  color: var(--accent);
}

/* ─── Overlay ────────────────────────────────────────────── */

.overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 17, 23, 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  animation: fadeIn 0.2s ease;
}

.overlay.hidden { display: none; }

.overlay-content {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  max-width: 560px;
  width: 90%;
  animation: scaleIn 0.25s ease;
}

.overlay-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}

.overlay-header h3 {
  font-size: 16px;
  font-weight: 600;
}

#lost-body {
  font-size: 14px;
  line-height: 1.7;
  color: var(--text-muted);
  margin-bottom: 20px;
}

#lost-body p { margin-bottom: 10px; }
#lost-body strong { color: var(--text); }

/* ─── Animations ─────────────────────────────────────────── */

@keyframes fadeSlideUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes scaleIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.pulsing { animation: pulse 2s ease infinite; }

.fade-in {
  animation: fadeSlideUp 0.4s ease;
}

/* Typing indicator */
.typing-dots::after {
  content: '...';
  animation: pulse 1.2s ease infinite;
}

/* ─── Streaming Text Cursor ─────────────────────────────── */

.streaming-cursor::after {
  content: '';
  display: inline-block;
  width: 2px;
  height: 1em;
  background: var(--accent);
  margin-left: 2px;
  vertical-align: text-bottom;
  animation: cursorBlink 0.8s step-end infinite;
}

@keyframes cursorBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* ─── Loading / Skeleton States ─────────────────────────── */

.skeleton {
  background: linear-gradient(90deg, var(--bg-elevated) 25%, var(--bg-hover) 50%, var(--bg-elevated) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease infinite;
  border-radius: var(--radius);
}

.skeleton-line {
  height: 14px;
  margin-bottom: 8px;
}

.skeleton-line:last-child {
  width: 60%;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.loading-spinner {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 2px solid var(--border);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
  margin-right: 8px;
  vertical-align: middle;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

.thinking-text {
  transition: opacity 0.2s ease;
}

/* ─── Teaching Plan Progress ────────────────────────────── */

.plan-objective-text {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  line-height: 1.5;
  padding: 10px 12px;
  background: rgba(52, 211, 153, 0.06);
  border-left: 3px solid var(--accent);
  border-radius: 0 var(--radius) var(--radius) 0;
  margin-bottom: 14px;
}

.plan-header {
  display: none;
}

/* Progress bar */
.plan-progress-bar-container {
  margin-bottom: 16px;
  padding: 0 4px;
}

.plan-progress-bar {
  height: 4px;
  background: rgba(255,255,255,0.06);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 8px;
}

.plan-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent-dim), var(--accent));
  border-radius: 3px;
  transition: width 0.6s cubic-bezier(0.4,0,0.2,1);
  box-shadow: 0 0 8px rgba(52,211,153,0.2);
}

.plan-progress-label {
  font-size: 10px;
  color: var(--text-muted);
  font-family: var(--font-mono);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.plan-replanning {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 0;
  color: var(--text-muted);
  font-size: 12px;
}

.plan-replanning-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid var(--border);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: plan-spin 0.8s linear infinite;
}

@keyframes plan-spin {
  to { transform: rotate(360deg); }
}

.plan-replanning-text {
  color: var(--accent-bright);
  font-style: italic;
}

/* ─── Plan Steps ──────────────────── */
.plan-step {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 6px 8px;
  font-size: 12px;
  color: var(--text-dim);
  border-radius: 8px;
  transition: color var(--transition), background var(--transition);
  position: relative;
}

.plan-step.done { color: var(--text-muted); }
.plan-step.active {
  color: var(--text);
  background: rgba(52, 211, 153, 0.07);
}
.plan-step.pending { color: var(--text-dim); opacity: 0.7; }

.plan-step-indicator {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.12);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 9px;
  margin-top: 1px;
  transition: all var(--transition);
}

.plan-step.done .plan-step-indicator {
  border-color: var(--green);
  background: rgba(74,222,128,0.12);
  color: var(--green);
}

.plan-step.active .plan-step-indicator {
  border-color: var(--accent);
  background: var(--accent);
  color: var(--bg);
  box-shadow: 0 0 10px rgba(52, 211, 153, 0.3);
}

.plan-step-text {
  flex: 1;
  line-height: 1.45;
  min-width: 0;
}

.plan-step-title {
  font-size: 12px;
  font-weight: 500;
  color: inherit;
  word-wrap: break-word;
}

.plan-step-modality {
  font-size: 10px;
  color: var(--text-dim);
  background: rgba(255,255,255,0.05);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 4px;
}

/* ─── Topic sub-items ──────────────── */
.plan-topic {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 3px 8px 3px 36px;
  font-size: 11px;
  color: var(--text-dim);
  transition: color var(--transition);
  position: relative;
}

.plan-topic::before {
  content: '';
  position: absolute;
  left: 16px;
  top: 0;
  bottom: 0;
  width: 1px;
  background: rgba(255,255,255,0.06);
}

.plan-topic.done { color: var(--text-muted); }
.plan-topic.active { color: var(--accent-bright); }
.plan-topic.active::before { background: rgba(52,211,153,0.2); }
.plan-topic.pending { color: var(--text-dim); opacity: 0.5; }

/* ─── Plan group labels ────────────── */
.plan-group-label {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--text-dim);
  margin-top: 14px;
  margin-bottom: 4px;
  padding: 0 8px 5px;
  opacity: 0.7;
}

.plan-group-label:first-child { margin-top: 2px; }

.plan-collapsed-hint {
  font-size: 10px;
  color: var(--text-dim);
  opacity: 0.5;
  padding: 2px 8px 2px 36px;
  font-style: italic;
}

/* ─── Empty / preparing state ──────── */
.plan-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 24px 8px;
  text-align: center;
}

.plan-empty-spinner {
  width: 22px;
  height: 22px;
  border: 2px solid rgba(255,255,255,0.08);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: plan-spin 1s linear infinite;
}

.plan-empty-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
}

.plan-empty-text {
  font-size: 11px;
  color: var(--text-dim);
  line-height: 1.5;
  opacity: 0.7;
}

.plan-topic-indicator {
  width: 14px;
  flex-shrink: 0;
  text-align: center;
  font-size: 11px;
  margin-top: 0;
  font-weight: 600;
}

.plan-topic.done .plan-topic-indicator { color: var(--green); }
.plan-topic.active .plan-topic-indicator { color: var(--accent); font-size: 14px; }

.plan-topic-text {
  flex: 1;
  line-height: 1.35;
}

.plan-topic-title {
  font-size: 11px;
  color: inherit;
}

.plan-topic-concept {
  font-size: 9px;
  color: var(--text-dim);
  background: rgba(255,255,255,0.04);
  padding: 0 4px;
  border-radius: 2px;
  margin-left: 3px;
}

/* ─── Course Outline Toggle ───────────────────────────── */

.sidebar-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px 0;
  width: 100%;
  text-align: left;
}

.sidebar-toggle:hover {
  color: var(--text);
}

.toggle-icon {
  font-size: 10px;
  transition: transform var(--transition);
}

.course-progress-list.collapsed {
  display: none;
}

/* Scrollbar */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover { background: var(--border-active); }

/* ─── Setup Panel ───────────────────────────────────────── */

#login-panel {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  padding: 24px;
  position: relative;
  z-index: 1;
}

#login-panel .setup-start {
  margin-top: 8px;
}

.auth-tabs {
  display: flex;
  gap: 0;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--border);
}

.auth-tab {
  flex: 1;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  color: var(--text-muted);
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 600;
  padding: 10px 16px;
  cursor: pointer;
  transition: all var(--transition);
}

.auth-tab:hover {
  color: var(--text);
}

.auth-tab.active {
  color: var(--accent-bright);
  border-bottom-color: var(--accent);
}

.setup-greeting-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}

.setup-greeting {
  font-size: 15px;
  font-weight: 600;
  color: var(--accent-bright);
}

.btn-link {
  background: none;
  border: none;
  color: var(--text-dim);
  font-size: 13px;
  font-family: var(--font-sans);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: var(--radius);
  transition: color var(--transition);
}

.btn-link:hover {
  color: var(--red);
}

#setup-panel {
  display: flex;
  flex-direction: column;
  height: 100vh;
  overflow-y: auto;
  position: relative;
  z-index: 1;
  background: transparent;
}
#setup-panel .dash-nav,
#setup-panel .dash-center {
  position: relative;
  z-index: 1;
}

/* ─── Dashboard Nav ─── */
.dash-nav {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 48px; flex-shrink: 0;
}
.dash-user-pill {
  display: flex; align-items: center; gap: 8px;
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 20px; padding: 4px 14px 4px 5px;
  font-size: 13px; color: var(--text-muted); cursor: pointer;
  transition: border-color .15s;
}
.dash-user-pill:hover { border-color: var(--border-active); }
.dash-user-avatar {
  width: 26px; height: 26px; border-radius: 50%;
  background: rgba(255,255,255,0.06);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; color: var(--accent-bright); font-weight: 600;
}

/* ─── Dashboard Content — Single Centered Column ─── */
.dash-center {
  max-width: 680px;
  width: 100%;
  margin: 0 auto;
  padding: 24px 24px 80px;
  flex: 1;
}

.dash-hello {
  font-size: 26px; font-weight: 700; color: #fff;
  margin-bottom: 2px; letter-spacing: -0.5px;
}

.dash-subline {
  font-size: 14px; color: var(--text-dim); margin-bottom: 20px;
}

/* ─── Course pills ─── */
.dash-course-pills {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 20px;
}
.dash-course-pill {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 20px;
  background: var(--bg-surface); border: 1px solid var(--border);
  font-size: 12px; color: var(--text-muted); cursor: pointer;
  transition: all .15s; white-space: nowrap; font-family: var(--font-sans);
}
.dash-course-pill:hover { border-color: var(--border-active); }
.dash-course-pill.selected {
  border-color: var(--accent); color: var(--text);
  box-shadow: 0 0 0 1px var(--accent);
}
.dash-pill-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--accent); flex-shrink: 0;
}
.dash-course-pill.selected .dash-pill-dot { box-shadow: 0 0 6px var(--accent); }
.dash-pill-byo {
  opacity: 0.45; cursor: default; color: var(--text-dim);
}
.dash-pill-byo:hover { border-color: var(--border); }
.dash-pill-soon {
  font-size: 9px; padding: 1px 6px; border-radius: 3px;
  background: var(--bg-elevated); color: var(--text-dim); font-weight: 500;
}

/* Keep old dash-sidebar / dash-outer for potential JS references but hide */
.dash-outer { display: none; }
.dash-sidebar { display: none; }

.dash-new-session {
  margin-bottom: 24px;
}

.dash-input-wrap {
  margin-bottom: 16px;
  background: var(--bg-surface);
  border: 1.5px solid var(--border);
  border-radius: 12px;
  padding: 14px 16px;
  display: flex; align-items: center; gap: 10px;
  transition: border-color .2s;
}
.dash-input-wrap:focus-within { border-color: var(--border-active); }
.dash-input {
  flex: 1; background: none; border: none; outline: none;
  color: var(--text); font-size: 14px; font-family: var(--font-sans);
}
.dash-input::placeholder { color: var(--text-dim); }
.dash-send {
  width: 34px; height: 34px; border-radius: 8px;
  background: var(--accent); border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; transition: all .15s;
}
.dash-send:hover { background: var(--accent-bright); }
.dash-send:disabled { opacity: 0.7; cursor: not-allowed; }
.dash-send svg { stroke: #0a0d0b; }
.dash-send-spinner {
  width: 16px; height: 16px; border: 2px solid rgba(10,13,11,0.3);
  border-top-color: #0a0d0b; border-radius: 50%;
  animation: dash-spin 0.6s linear infinite; display: block;
}
@keyframes dash-spin { to { transform: rotate(360deg); } }

.dash-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-top: 10px;
}
.dash-chip {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 8px; padding: 8px 14px; cursor: pointer;
  transition: all .15s; font-size: 12px; color: var(--text-dim); line-height: 1.3;
  white-space: nowrap;
}
.dash-chip:hover { border-color: var(--border-active); color: var(--text-muted); }
.dash-chip strong { color: var(--text-muted); font-weight: 600; }

.dash-section-label {
  font-size: 10px; font-weight: 600; letter-spacing: 1.5px;
  text-transform: uppercase; color: var(--text-dim); margin-bottom: 10px;
}

.dash-course-picker {
  display: flex; flex-direction: column; gap: 6px; margin-bottom: 20px;
}
.dash-course-card {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 8px; padding: 10px 12px; cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}
.dash-course-card:hover { border-color: var(--border-active); }
.dash-course-card.selected {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent);
}

/* Radio dot */
.dash-course-radio {
  width: 16px; height: 16px; border-radius: 50%; flex-shrink: 0;
  border: 2px solid var(--border); transition: all .15s;
  position: relative;
}
.dash-course-card.selected .dash-course-radio {
  border-color: var(--accent);
}
.dash-course-card.selected .dash-course-radio::after {
  content: ''; position: absolute;
  top: 3px; left: 3px; width: 6px; height: 6px;
  border-radius: 50%; background: var(--accent);
}

.dash-course-icon {
  width: 38px; height: 38px; border-radius: 8px; background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.dash-course-icon-byo { background: transparent; border: 1px dashed var(--border); }

.dash-course-info { flex: 1; }
.dash-course-name { font-size: 13px; font-weight: 500; color: var(--text); }
.dash-course-meta { font-size: 11px; color: var(--text-dim); margin-top: 1px; }
.dash-course-badge {
  font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 500;
  background: rgba(74,222,128,0.08); color: var(--green);
}
.dash-course-soon {
  font-size: 10px; padding: 3px 8px; border-radius: 4px; font-weight: 500;
  white-space: nowrap; color: var(--text-dim); background: var(--bg-elevated);
}

/* BYO card — faded */
.dash-course-byo {
  opacity: 0.5; cursor: default;
}
.dash-course-byo:hover { border-color: var(--border); }
.dash-course-byo .dash-course-radio { display: none; }

/* ─── How-it-works strip ──────────────────────────────────── */
.dash-how-strip {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  margin-bottom: 36px;
  padding: 14px 18px;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 12px;
}
.dash-how-step {
  display: flex; align-items: center; gap: 8px;
}
.dash-how-num {
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(255,255,255,0.06); color: var(--accent);
  font-size: 11px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.dash-how-text {
  font-size: 12.5px; color: var(--text-dim); white-space: nowrap;
}
.dash-how-text strong { color: var(--text-muted); font-weight: 600; }
.dash-how-arrow {
  opacity: 0.35; flex-shrink: 0;
  display: flex; align-items: center;
}

/* ─── Feature cards ───────────────────────────────────────── */
.dash-features {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
  margin-bottom: 36px;
}
.dash-feature-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px;
  transition: border-color .2s, transform .15s;
}
.dash-feature-card:hover {
  border-color: var(--border-active);
  transform: translateY(-1px);
}
.dash-feature-icon {
  width: 36px; height: 36px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 10px;
}
.dash-feat-board  { background: rgba(255,255,255,0.04); color: var(--accent); }
.dash-feat-quiz   { background: rgba(255,255,255,0.04); color: var(--green); }
.dash-feat-open   { background: rgba(255,255,255,0.04); color: #5eead4; }
.dash-feat-course { background: rgba(255,255,255,0.04); color: var(--yellow); }

.dash-feature-label {
  font-size: 13px; font-weight: 600; color: var(--text);
  margin-bottom: 4px;
}
.dash-feature-desc {
  font-size: 11.5px; color: var(--text-dim); line-height: 1.45;
}

/* ─── Responsive: stack on narrow screens ─────────────────── */
@media (max-width: 768px) {
  .dash-center {
    padding: 16px 16px 60px;
  }
  .dash-course-pills { gap: 4px; }
  .dash-course-pill { font-size: 11px; padding: 6px 10px; }
  .dash-sessions-grid { grid-template-columns: 1fr; }
}

/* ─── Session cards ───────────────────────────────────────── */
#session-list-panel { margin-bottom: 32px; margin-top: 8px; }

.dash-session-empty {
  font-size: 13px; color: var(--text-dim); padding: 24px 0 8px;
  text-align: center;
}

.dash-sessions-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.dash-sessions-grid-inner {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.dash-session-search {
  width: 100%; padding: 7px 12px; margin-bottom: 10px;
  background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 7px;
  color: var(--text); font-size: 12px; font-family: var(--font-sans);
  outline: none; transition: border-color 0.15s;
  box-sizing: border-box;
}
.dash-session-search:focus { border-color: var(--border-active); }
.dash-session-search::placeholder { color: var(--text-dim); }
.dash-show-more {
  display: block; width: 100%; margin-top: 8px; padding: 8px;
  background: none; border: 1px dashed var(--border); border-radius: 8px;
  color: var(--text-dim); font-size: 12px; cursor: pointer;
  transition: all 0.15s; font-family: Inter, sans-serif;
}
.dash-show-more:hover { border-color: var(--accent); color: var(--accent); }
.dash-session-dur-inline {
  font-size: 11px; color: var(--text-dim);
}

.dash-session-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 16px;
  cursor: pointer;
  transition: border-color .15s, transform .1s;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dash-session-card:hover {
  border-color: var(--border-active);
  transform: translateY(-1px);
}
.dash-session-card.dash-session-active:hover {
  border-color: var(--accent-dim);
}

.dash-session-card-top {
  display: flex; justify-content: space-between; align-items: center;
}
.dash-session-status {
  display: flex; align-items: center; gap: 5px;
  font-size: 10px; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.5px;
}
.dash-session-status.active { color: var(--accent); }
.dash-session-status.done { color: var(--text-dim); }
.dash-session-status-dot {
  width: 6px; height: 6px; border-radius: 50%;
}
.dash-session-status.active .dash-session-status-dot { background: var(--accent); }
.dash-session-status.done .dash-session-status-dot { background: var(--text-dim); }

.dash-session-ago {
  font-size: 10px; color: var(--text-dim);
}

.dash-session-headline {
  font-size: 13px; font-weight: 500; color: var(--text);
  line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}

.dash-session-dur {
  display: flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--text-dim);
}

.dash-session-resume {
  font-size: 11px; font-weight: 500; color: var(--accent);
  margin-top: 2px;
}
.dash-session-resume span { transition: transform .15s; display: inline-block; }
.dash-session-card:hover .dash-session-resume span { transform: translateX(3px); }

/* Session description line */
.dash-session-desc {
  font-size: 11px; color: var(--text-dim); line-height: 1.4;
  margin-top: 2px; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden;
}

/* Hover tooltip with plan topics */
.dash-session-card { position: relative; }
.dash-session-tooltip {
  display: none; position: absolute; bottom: calc(100% + 8px); left: 0; right: 0;
  background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; z-index: 20;
  box-shadow: 0 8px 24px rgba(0,0,0,0.4);
  pointer-events: none;
}
.dash-session-tooltip::after {
  content: ''; position: absolute; bottom: -5px; left: 24px;
  width: 8px; height: 8px; background: var(--bg-elevated);
  border-right: 1px solid var(--border); border-bottom: 1px solid var(--border);
  transform: rotate(45deg);
}
.dash-session-card:hover .dash-session-tooltip { display: block; }

.dash-tooltip-desc {
  font-size: 11px; color: var(--text-muted); line-height: 1.4;
  margin-bottom: 8px; padding-bottom: 6px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.dash-tooltip-topics { display: flex; flex-direction: column; gap: 3px; }
.dash-tooltip-topic {
  font-size: 11px; color: var(--text-dim); display: flex; align-items: center; gap: 6px;
}
.dash-tooltip-topic span { width: 12px; text-align: center; font-size: 9px; }
.dash-tooltip-topic.done { color: var(--text-muted); }
.dash-tooltip-topic.done span { color: var(--green); }
.dash-tooltip-topic.active { color: var(--accent-bright); }
.dash-tooltip-topic.active span { color: var(--accent); }
.dash-tooltip-more { font-size: 10px; color: var(--text-dim); margin-top: 2px; padding-left: 18px; }

/* Completed sessions toggle */
.dash-sessions-completed { margin-top: 12px; }

.dash-completed-toggle {
  display: flex; align-items: center; gap: 6px;
  background: none; border: none; cursor: pointer;
  font-size: 11px; font-weight: 500; color: var(--text-dim);
  padding: 6px 0; font-family: var(--font-sans);
  transition: color .15s;
}
.dash-completed-toggle:hover { color: var(--text-muted); }
.dash-completed-toggle svg {
  transition: transform .2s;
}
.dash-completed-toggle.expanded svg {
  transform: rotate(180deg);
}

.dash-sessions-completed-list {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
  margin-top: 10px;
}
.dash-sessions-completed-list .dash-session-card {
  opacity: 0.7;
}
.dash-sessions-completed-list .dash-session-card:hover {
  opacity: 1;
}

@media (max-width: 768px) {
  .dash-sessions-grid,
  .dash-sessions-completed-list {
    grid-template-columns: 1fr;
  }
}

/* Legacy setup-inner kept for login panel */
.setup-inner {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 40px;
  max-width: 560px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
}

.setup-title {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 6px;
}

.setup-subtitle {
  font-size: 14px;
  color: var(--text-muted);
  margin-bottom: 28px;
}

.setup-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.setup-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.setup-row label {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}

.setup-row input,
.setup-row select,
.setup-row textarea {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  padding: 10px 14px;
  font-family: var(--font-sans);
  font-size: 14px;
  outline: none;
  transition: border-color var(--transition);
}

.setup-row input:focus,
.setup-row select:focus,
.setup-row textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(52, 211, 153, 0.15);
}

.setup-row select {
  cursor: pointer;
}

.setup-status {
  font-size: 13px;
  color: var(--text-muted);
  min-height: 20px;
}

.setup-status.error { color: var(--red); }
.setup-status.success { color: var(--green); }

/* ─── Session Cards (legacy — overridden by new dash-session-card styles) ── */

.session-list-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-dim);
  margin-bottom: 8px;
}

.session-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  cursor: default;
  transition: border-color var(--transition), box-shadow var(--transition);
}

.session-card:hover {
  border-color: var(--border-active);
}

.session-card.active {
  border-color: var(--accent-dim);
  background: linear-gradient(135deg, rgba(255,255,255,0.03) 0%, var(--bg-elevated) 100%);
  cursor: pointer;
}

.session-card.active:hover {
  border-color: var(--accent);
  box-shadow: 0 0 12px rgba(52,211,153,0.06);
}

.session-card.completed {
  opacity: 0.7;
}

.session-card-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.session-card-headline {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.session-card-badge {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 2px 8px;
  border-radius: 10px;
}

.session-card-badge.active {
  background: rgba(52,211,153,0.1);
  color: var(--accent);
}

.session-card-badge.complete {
  background: var(--green-dim);
  color: var(--green);
}

.session-card-desc {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 8px;
  line-height: 1.4;
}

.session-card-meta {
  font-size: 12px;
  font-family: var(--font-mono);
  color: var(--text-dim);
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.session-card-actions {
  margin-top: 10px;
}

.session-card-actions .btn {
  width: 100%;
  padding: 10px;
  font-size: 14px;
  font-weight: 600;
}

.session-new-divider {
  border-top: 1px solid var(--border);
  margin-top: 16px;
  padding-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.session-new-divider .setup-start {
  width: 100%;
  padding: 12px;
  font-size: 15px;
  font-weight: 600;
}

#session-first-time {
  margin-top: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.session-loading {
  text-align: center;
  padding: 16px;
  color: var(--text-dim);
  font-size: 13px;
}

.setup-start {
  width: 100%;
  padding: 12px;
  font-size: 15px;
  font-weight: 600;
  margin-top: 4px;
}

/* ─── Teaching Layout ───────────────────────────────────── */

#teaching-layout {
  display: flex;
  flex-direction: column;
  height: 100vh;
  background: var(--bg);
  position: relative;
  z-index: 1;
}

#teaching-layout.hidden {
  display: none;
}

/* ─── Onboarding Sequence ──────────────────────────────── */

.onboarding-sequence {
  padding: 24px 20px;
}

.onboarding-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 16px;
}

.onboarding-steps {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.onboarding-step {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--text-dim);
  transition: color 0.3s ease;
}

.onboarding-step.active {
  color: var(--text);
}

.onboarding-step.done {
  color: var(--green);
}

.onboarding-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 14px;
}

/* ─── Agent Progress Indicators ─────────────────────────── */

#agent-indicators {
  display: flex;
  gap: 12px;
  padding: 6px 16px;
  font-size: 12px;
  color: var(--text-dim);
}
#agent-indicators:empty { display: none; }
.agent-indicator {
  display: flex;
  align-items: center;
  gap: 6px;
  animation: fadeIn 0.3s ease;
}
.loading-spinner.small {
  width: 12px;
  height: 12px;
  border-width: 1.5px;
  margin-right: 0;
}

/* Agent-paused state (input dimmed during auto-trigger) */
[data-agent-paused="true"] {
  opacity: 0.5;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

/* ── Board Draw (Live Tutor Drawing) ── */
.bd-container {
  position: relative;
  width: 100%;
  flex: 1;
  min-height: 0;
  background: #1a1d2e;
  display: flex;
  flex-direction: column;
}
.bd-toolbar {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  background: rgba(0,0,0,0.35);
  border-bottom: 1px solid rgba(255,255,255,0.08);
  flex-shrink: 0;
}
.bd-tool-btn {
  background: rgba(255,255,255,0.06);
  border: 1.5px solid transparent;
  border-radius: 6px;
  padding: 4px 8px;
  cursor: pointer;
  color: rgba(255,255,255,0.7);
  font-size: 14px;
  transition: all 0.15s;
}
.bd-tool-btn:hover { background: rgba(255,255,255,0.12); }
.bd-tool-btn.active {
  border-color: rgba(255,255,255,0.4);
  background: rgba(255,255,255,0.15);
}
.bd-toolbar-divider {
  width: 1px;
  height: 20px;
  background: rgba(255,255,255,0.15);
  margin: 0 4px;
}
.bd-send-btn {
  background: var(--accent) !important;
  color: #fff !important;
  font-weight: 600;
  padding: 4px 12px !important;
  border-radius: 6px;
}
.bd-send-btn:hover { opacity: 0.85; }
.bd-canvas-wrap {
  flex: 1;
  overflow: auto;
  overflow-y: scroll;
  position: relative;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x pan-y pinch-zoom;
}
#bd-board-content { position: relative; transform-origin: top left; }
#bd-scenes-stack { }
.bd-scene-snapshot { position: relative; border-bottom: 1px solid rgba(255,255,255,0.03); }
.bd-scene-snapshot img { display: block; width: 100%; }
#bd-live-scene { position: relative; }
#bd-canvas {
  display: block;
  width: 100%;
}
#bd-anim-layer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 2;
}
#bd-anim-layer .bd-anim-box {
  position: absolute;
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 0 16px rgba(0,0,0,0.25);
}
#bd-anim-layer .bd-anim-box canvas {
  display: block;
}
.bd-voice {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 10px 20px;
  background: linear-gradient(transparent, rgba(0,0,0,0.7));
  pointer-events: none;
  min-height: 36px;
  display: flex;
  align-items: flex-end;
}
.bd-voice-text {
  font-family: var(--font-sans);
  font-size: 14px;
  color: rgba(255,255,255,0.85);
  font-style: italic;
  opacity: 0;
  transition: opacity 0.4s;
}
.bd-voice-text.visible {
  opacity: 1;
}

/* ─── Chat Attention Hopper ─────────────────────────────── */
#chat-attention-hopper {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  margin: 0 12px;
  background: linear-gradient(135deg, rgba(52,211,153,0.08), rgba(52,211,153,0.04));
  border: 1px solid rgba(52,211,153,0.2);
  border-radius: 12px;
  cursor: pointer;
  animation: hopperSlideIn 0.4s ease-out, hopperPulse 2.5s ease-in-out 0.5s infinite;
  transition: opacity 0.3s, transform 0.3s;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
#chat-attention-hopper:hover {
  background: linear-gradient(135deg, rgba(52,211,153,0.12), rgba(52,211,153,0.06));
  border-color: rgba(52,211,153,0.3);
}
#chat-attention-hopper.hopper-dismissed {
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
}
.hopper-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
  animation: hopperDot 2s ease-in-out infinite;
}
.hopper-content {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.hopper-icon {
  font-size: 16px;
  flex-shrink: 0;
}
.hopper-text {
  font-family: var(--font-sans);
  font-size: 13px;
  color: rgba(255,255,255,0.85);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.3;
}
.hopper-arrow {
  font-size: 16px;
  color: var(--accent);
  flex-shrink: 0;
  animation: hopperBounce 1.5s ease-in-out infinite;
}

@keyframes hopperSlideIn {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes hopperPulse {
  0%, 100% { border-color: rgba(52,211,153,0.3); }
  50% { border-color: rgba(52,211,153,0.6); }
}
@keyframes hopperDot {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.3); }
}
@keyframes hopperBounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(3px); }
}

/* ─── Chat Attention Glow (board-draw done) ────────────── */
.chat-attention-glow {
  background: rgba(52,211,153,0.12);
  border-radius: 6px;
  padding: 4px 6px;
  margin: -4px -6px;
  display: inline;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  animation: textBgPulse 2s ease-in-out infinite;
}
@keyframes textBgPulse {
  0%, 100% { background: rgba(52,211,153,0.08); }
  50%      { background: rgba(52,211,153,0.2); }
}

/* ─── Voice Mode ────────────────────────────────────────── */

/* Mode indicator in header (read-only, set at session start) */
.mode-indicator {
  font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em;
  padding: 3px 10px; border-radius: 4px; display: none;
}
.mode-indicator.text-mode {
  display: inline-block; color: var(--text-dim); background: var(--bg-elevated); border: 1px solid var(--border);
}
.mode-indicator.voice-mode {
  display: inline-block; color: var(--accent); background: var(--accent-dim); border: 1px solid var(--accent-dim);
}

/* Dashboard mode selection cards */
.dash-mode-select {
  display: flex; gap: 10px; margin: 14px 0;
}
.dash-mode-card {
  flex: 1; display: flex; align-items: flex-start; gap: 12px;
  padding: 14px 16px; border-radius: 10px;
  border: 1.5px solid var(--border); background: var(--bg-surface);
  cursor: pointer; transition: all 0.2s;
}
.dash-mode-card:hover { border-color: var(--border-active); background: var(--bg-elevated); }
.dash-mode-card.selected { border-color: var(--accent-dim); background: rgba(52,211,153,0.05); }
.dash-mode-icon { font-size: 22px; flex-shrink: 0; margin-top: 2px; }
.dash-mode-name { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 3px; }
.dash-mode-card.selected .dash-mode-name { color: var(--accent-bright); }
.dash-mode-desc { font-size: 11px; color: var(--text-dim); line-height: 1.4; }

/* Speed control */
.speed-wrap { position: relative; }
.speed-wrap.hidden { display: none; }
.speed-toggle-btn {
  display: flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 6px; border: 1px solid var(--border);
  background: var(--bg-elevated); color: var(--text-muted); font-size: 11px;
  font-family: var(--font-mono); cursor: pointer; transition: all 0.15s;
}
.speed-toggle-btn:hover { background: var(--bg-hover); }
.speed-val { color: var(--accent); font-weight: 600; }
.speed-label { color: var(--text-dim); }
.speed-menu {
  position: absolute; top: calc(100% + 4px); right: 0;
  background: var(--bg-surface); border: 1px solid var(--border-active); border-radius: 8px;
  padding: 4px 0; min-width: 90px; box-shadow: 0 6px 24px rgba(0,0,0,0.5);
  z-index: 200;
}
.speed-menu.hidden { display: none; }
.speed-menu button {
  display: block; width: 100%; padding: 6px 14px; border: none; background: none;
  color: var(--text-muted); font-size: 12px; font-family: var(--font-mono);
  text-align: left; cursor: pointer;
}
.speed-menu button:hover { background: var(--bg-hover); color: var(--text); }
.speed-menu button.active { color: var(--accent); font-weight: 600; }

/* Voice mode: collapse chat, expand board */
#main-layout.voice-mode #chat-panel {
  width: 0 !important; min-width: 0 !important; overflow: hidden;
  border: none; padding: 0; flex: 0 !important;
}
#main-layout.voice-mode #split-handle { display: none; }
#main-layout.voice-mode #board-panel { flex: 1 !important; }
/* Hide ALL text-mode inputs in voice mode */
#main-layout.voice-mode #chat-panel .chat-input-area,
#main-layout.voice-mode #chat-panel #chat-input-area,
#main-layout.voice-mode .text-input-area,
#main-layout.voice-mode .text-input { display: none !important; }

/* Voice mode interactive — chat pane slides in for MCQ/freetext/video */
#main-layout.voice-mode-interactive #chat-panel {
  width: 35% !important; min-width: 300px !important; overflow: visible !important;
  border-right: 1px solid var(--border); flex: none !important;
  animation: slide-in-chat 0.3s ease;
}
#main-layout.voice-mode-interactive #split-handle { display: none; }
@keyframes slide-in-chat { from { width: 0 !important; min-width: 0 !important; opacity: 0; } to { opacity: 1; } }
/* Voice mode: board takes full width, no constraints */

/* ─── Subtitle Bar (cinematic style) ─────────────────────── */
.voice-subtitle-bar {
  position: fixed; bottom: 70px; left: 0; right: 0; z-index: 50;
  background: linear-gradient(transparent 0%, rgba(10,13,11,0.5) 40%, rgba(10,13,11,0.85) 100%);
  padding: 30px 0 14px; text-align: center; pointer-events: none;
  transition: opacity 0.3s;
}
.voice-subtitle-bar.hidden { display: none; }
.voice-subtitle-text {
  font-family: var(--font-sans); font-size: 17px; color: rgba(232,213,183,0.95);
  text-shadow: 0 1px 8px rgba(0,0,0,0.95), 0 0 20px rgba(0,0,0,0.5);
  line-height: 1.6; max-width: 680px; margin: 0 auto; padding: 0 20px;
  word-wrap: break-word; overflow-wrap: break-word;
  letter-spacing: 0.01em;
  animation: sub-fade-in 0.25s ease;
}
@keyframes sub-fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.voice-subtitle-text em { color: var(--yellow); font-style: normal; font-weight: 600; }
.voice-subtitle-text:empty { display: none; }

/* ─── Voice Indicator (top-left pill) ────────────────────── */
.voice-indicator {
  position: fixed; top: 94px; left: 16px; z-index: 50;
  display: flex; align-items: center; gap: 8px;
  padding: 6px 14px; border-radius: 20px;
  background: rgba(17,20,19,0.88); border: 1px solid var(--border);
  pointer-events: none; backdrop-filter: blur(8px);
}
.voice-indicator.hidden { display: none; }
.voice-indicator-bars { display: flex; gap: 2px; height: 16px; align-items: center; }
.vbar {
  width: 3px; border-radius: 2px; background: var(--text-dim); height: 4px;
  transition: height 0.08s;
}
.voice-indicator.speaking .vbar { background: var(--accent); animation: vwave 0.5s ease-in-out infinite alternate; }
.voice-indicator.listening .vbar { background: var(--yellow); animation: vwave 0.6s ease-in-out infinite alternate; }
.voice-indicator.drawing .vbar { background: #60a5fa; animation: vdraw 1.2s ease-in-out infinite; }
@keyframes vdraw { 0%,100%{height:4px;opacity:.4} 50%{height:12px;opacity:1} }
.vbar:nth-child(1){animation-delay:0s}.vbar:nth-child(2){animation-delay:.1s}
.vbar:nth-child(3){animation-delay:.18s}.vbar:nth-child(4){animation-delay:.08s}
.vbar:nth-child(5){animation-delay:.15s}
@keyframes vwave { 0%{height:4px} 100%{height:16px} }
.voice-indicator-label { font-size: 11px; color: var(--text-muted); font-weight: 500; }

/* ─── Hand Cursor (disabled — caused positioning issues) ─── */
.voice-hand { display: none !important; }

.voice-tap-ring {
  position: absolute; width: 26px; height: 26px; border-radius: 50%;
  border: 2px solid var(--accent); pointer-events: none;
  transform: translate(-50%,-50%) scale(0.4); opacity: 0; z-index: 35;
}
.voice-tap-ring.pop { animation: vtap-ring 0.45s ease-out forwards; }
@keyframes vtap-ring { 0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)} 100%{opacity:0;transform:translate(-50%,-50%) scale(2)} }

/* ─── Voice Input Bar (unified pill) ──────────────────────── */
.voice-bar-wrap {
  position: fixed; bottom: 16px; left: 50%; transform: translateX(-50%);
  z-index: 55; width: 100%; max-width: 500px; padding: 0 16px;
}
.voice-bar-wrap.hidden { display: none; }

/* ── Voice bar progress + status ── */
.vb-progress { height:2px; border-radius:1px; margin:0 8px 0; overflow:hidden; display:none }
.vb-progress.active { display:block }
.vb-progress.thinking { background:rgba(52,211,153,.15) }
.vb-progress.thinking::after { content:''; display:block; height:100%; width:30%;
  background:var(--accent); border-radius:1px; animation:vbPulse 1.5s ease-in-out infinite }
.vb-progress.speaking { background:rgba(52,211,153,.15) }
.vb-progress.speaking::after { content:''; display:block; height:100%; width:100%;
  background:var(--accent); border-radius:1px; animation:vbSlide 3s linear infinite }
.vb-progress.paused { background:rgba(251,191,36,.15) }
.vb-progress.paused::after { content:''; display:block; height:100%; width:60%;
  background:#fbbf24; border-radius:1px }
@keyframes vbPulse { 0%,100%{transform:translateX(-100%)} 50%{transform:translateX(350%)} }
@keyframes vbSlide { from{transform:translateX(-100%)} to{transform:translateX(100%)} }

.vb-status { text-align:center; font-size:11px; padding:4px 0 2px; display:none;
  font-weight:500; letter-spacing:.3px }
.vb-status.active { display:block }
.vb-status.thinking { color:var(--accent) }
.vb-status.speaking { color:var(--text-muted) }
.vb-status.paused { color:#fbbf24 }

/* ── Pause / Resume buttons ── */
.voice-bar-pause, .voice-bar-resume {
  width:36px; height:36px; border-radius:50%; border:none; cursor:pointer;
  display:none; align-items:center; justify-content:center; flex-shrink:0;
  transition:all .15s;
}
.voice-bar-pause { background:rgba(255,255,255,.08); color:var(--text-muted) }
.voice-bar-pause:hover { background:rgba(255,255,255,.14); color:var(--text) }
.voice-bar-resume { background:rgba(52,211,153,.15); color:var(--accent);
  animation:vbResumePulse 1.5s ease-in-out infinite }
.voice-bar-resume:hover { background:rgba(52,211,153,.25) }
@keyframes vbResumePulse { 0%,100%{box-shadow:0 0 0 0 rgba(52,211,153,.2)} 50%{box-shadow:0 0 0 6px rgba(52,211,153,0)} }
.voice-bar-pause:not(.hidden) { display:flex }
.voice-bar-resume:not(.hidden) { display:flex }

.voice-bar {
  background: rgba(17,20,19,0.92);
  border: 1px solid var(--border-active);
  border-radius: 28px;
  padding: 5px 5px 5px 18px;
  display: flex; align-items: center; gap: 6px;
  backdrop-filter: blur(12px);
  box-shadow: 0 4px 24px rgba(0,0,0,0.4);
  transition: border-color 0.2s, box-shadow 0.2s;
}
.voice-bar:focus-within {
  border-color: rgba(52,211,153,0.3);
  box-shadow: 0 0 0 2px rgba(52,211,153,0.08), 0 4px 24px rgba(0,0,0,0.4);
}

.voice-bar-input {
  flex: 1; background: none; border: none; outline: none;
  color: var(--text); font-size: 14px; font-family: var(--font-sans);
  padding: 8px 0; min-width: 0;
  resize: none; overflow-y: auto;
  max-height: 120px; min-height: 24px; line-height: 1.4;
}
.voice-bar-input::placeholder { color: var(--text-dim); }
.voice-bar-input.transcript { color: var(--text-muted); font-style: italic; }

/* Mic button (right side of pill) */
.voice-bar-mic {
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(52,211,153,0.1); border: 1.5px solid rgba(52,211,153,0.25);
  color: var(--accent); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.2s; flex-shrink: 0;
}
.voice-bar-mic:hover {
  background: rgba(52,211,153,0.18); border-color: rgba(52,211,153,0.4);
}
.voice-bar-mic svg { width: 18px; height: 18px; }

/* Recording state — waveform dots + green tick button */
.voice-bar.recording {
  border-color: rgba(52,211,153,0.4);
}
.voice-bar.recording::before {
  content: '';
  position: absolute; top: 6px; left: 16px; right: 80px; height: 4px;
  background: repeating-linear-gradient(
    90deg,
    rgba(52,211,153,0.6) 0px, rgba(52,211,153,0.6) 2px,
    transparent 2px, transparent 6px
  );
  border-radius: 2px;
  animation: vb-waveform 0.8s ease-in-out infinite alternate;
}
@keyframes vb-waveform {
  0% { opacity: 0.3; transform: scaleY(0.5); }
  50% { opacity: 0.8; transform: scaleY(1.5); }
  100% { opacity: 0.5; transform: scaleY(0.8); }
}
.voice-bar.recording .voice-bar-input {
  opacity: 0.7; color: rgba(52,211,153,0.8); font-style: italic;
}
.voice-bar.recording .voice-bar-mic {
  background: rgba(52,211,153,0.2); border-color: rgba(52,211,153,0.5); color: var(--accent);
  animation: vb-tick-pulse 1.5s ease-in-out infinite;
}
.voice-bar.recording .voice-bar-mic:hover {
  background: rgba(52,211,153,0.35); border-color: rgba(52,211,153,0.7);
}
/* Cancel button during recording */
.voice-bar-cancel {
  width: 32px; height: 32px; border-radius: 50%;
  background: transparent; border: 1px solid rgba(255,255,255,0.15);
  color: rgba(255,255,255,0.5); cursor: pointer;
  font-size: 18px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; transition: all 0.15s; margin-right: 6px;
}
.voice-bar-cancel:hover {
  background: rgba(248,113,113,0.15); border-color: rgba(248,113,113,0.4);
  color: rgba(248,113,113,0.8);
}
@keyframes vb-tick-pulse { 0%,100%{box-shadow:0 0 6px rgba(52,211,153,0.15)} 50%{box-shadow:0 0 14px rgba(52,211,153,0.35)} }

/* Speaking state */
.voice-bar.speaking .voice-bar-mic {
  background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.35);
  animation: vb-speak-pulse 2s ease-in-out infinite;
}
@keyframes vb-speak-pulse { 0%,100%{box-shadow:none} 50%{box-shadow:0 0 12px rgba(52,211,153,0.2)} }

/* Thinking state — while tutor generates */
.voice-bar.thinking {
  border-color: rgba(52,211,153,0.2);
}
.voice-bar.thinking .voice-bar-input {
  opacity: 0.4; pointer-events: none;
}
.voice-bar.thinking .voice-bar-mic {
  background: rgba(248,113,113,0.12); border-color: rgba(248,113,113,0.3);
  color: var(--red); cursor: pointer;
  animation: vb-think-pulse 1.8s ease-in-out infinite;
}
.voice-bar.thinking .voice-bar-mic:hover {
  background: rgba(248,113,113,0.25); border-color: rgba(248,113,113,0.5);
}
.voice-bar.thinking .voice-bar-mic svg { width: 14px; height: 14px; }
@keyframes vb-think-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(52,211,153,0.15); }
  50% { box-shadow: 0 0 0 8px rgba(52,211,153,0.0); }
}

/* Send button (visible when text entered) */
.voice-bar-send {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--accent); border: none; color: var(--bg);
  cursor: pointer; display: none; align-items: center; justify-content: center;
  flex-shrink: 0; transition: all 0.15s;
}
.voice-bar-send.visible { display: flex; }
.voice-bar-send:hover { transform: scale(1.05); }
.voice-bar-send svg { width: 16px; height: 16px; }


/* ─── Session Prep Overlay ───────────────────────────────── */
.session-prep {
  position: fixed; inset: 0; z-index: 200;
  background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  transition: opacity 0.5s ease;
}
.session-prep.hidden { display: none; }
.session-prep.fade-out { opacity: 0; pointer-events: none; }

.session-prep-content {
  text-align: center; display: flex; flex-direction: column;
  align-items: center; gap: 24px;
}

.session-prep-orb {
  width: 48px; height: 48px; border-radius: 50%;
  background: radial-gradient(circle at 40% 40%, rgba(52,211,153,0.3), rgba(52,211,153,0.05));
  border: 1.5px solid rgba(52,211,153,0.2);
  animation: prep-orb 2.4s ease-in-out infinite;
}
@keyframes prep-orb {
  0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(52,211,153,0.15); }
  50% { transform: scale(1.15); box-shadow: 0 0 24px 8px rgba(52,211,153,0.08); }
}

.session-prep-msg {
  font-size: 16px; font-weight: 500; color: var(--text);
  letter-spacing: 0.01em;
  animation: prep-fade-in 0.4s ease;
}
.session-prep-sub {
  font-size: 13px; color: var(--text-dim);
  min-height: 18px;
  transition: opacity 0.3s;
}
@keyframes prep-fade-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ─── Inline Media (video/sim on board) ──────────────────── */
.inline-media-box {
  position: absolute; bottom: 80px; left: 50%; transform: translateX(-50%);
  width: 55%; max-width: 650px; aspect-ratio: 16/9;
  background: var(--bg-surface); border: 1px solid var(--border-active);
  border-radius: 10px; overflow: hidden; z-index: 20;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
  animation: inline-media-in 0.3s ease;
}
@keyframes inline-media-in { from { opacity: 0; transform: translateX(-50%) translateY(20px) scale(0.95); } to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); } }

.inline-media-box.fullscreen {
  position: fixed; inset: 0; width: 100%; max-width: none;
  aspect-ratio: auto; border-radius: 0; z-index: 200;
  transform: none; left: 0; bottom: 0;
}
.inline-media-header {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px; background: var(--bg-elevated);
  border-bottom: 1px solid var(--border);
}
.inline-media-badge {
  font-size: 9px; font-weight: 700; text-transform: uppercase;
  padding: 2px 6px; border-radius: 3px; letter-spacing: 0.5px;
  background: #3b1f6e; color: #a78bfa;
}
.inline-media-title { font-size: 12px; color: var(--text-muted); flex: 1; }
.inline-media-controls { display: flex; gap: 4px; }
.inline-media-btn {
  width: 26px; height: 26px; border-radius: 4px; border: none;
  background: var(--bg-hover); color: var(--text-dim); font-size: 12px;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: all 0.15s;
}
.inline-media-btn:hover { background: var(--bg-surface); color: var(--text); }
.inline-media-content { width: 100%; height: calc(100% - 34px); }

/* ─── Board Live Button ──────────────────────────────────── */
.board-live-btn {
  padding: 3px 10px; border-radius: 4px; border: 1px solid var(--accent-dim);
  background: var(--accent-dim); color: var(--accent); font-size: 11px;
  font-family: var(--font-sans); font-weight: 600; cursor: pointer;
  transition: all 0.15s; margin-right: 6px;
}
.board-live-btn:hover { background: var(--accent); color: var(--bg); }
.board-live-btn.hidden { display: none; }

/* ─── Responsive: Laptop ───────────────────────────────── */
@media (max-width: 1440px) {
  #canvas-stream { padding: 24px 32px; }
  .board-text { font-size: 25px; }
  .board-response .response-text { font-size: 22px; }
}
@media (max-width: 1200px) {
  #canvas-stream { padding: 16px 20px; }
  .board-text { font-size: 23px; }
  .board-response .response-text { font-size: 20px; }
  .block-card { padding: 16px 18px; }
}
@media (max-width: 1024px) {
  #canvas-stream { padding: 12px 16px; }
}

/* ─── Voice Mode Responsive ─────────────────────────────── */
@media (max-width: 768px) {
  /* Mobile: voice mode adjustments */
  #main-layout.voice-mode #board-panel { min-width: 100vw; }
  .voice-subtitle-text { font-size: 14px; max-width: 90%; }
  .voice-subtitle-bar { padding: 20px 4% 12px; }
  .board-question-input { padding: 8px 12px; }
  .board-question-text { font-size: 16px; }
  .board-question-field { font-size: 14px; padding: 8px 10px; }
  .voice-indicator { top: 50px; left: 8px; padding: 4px 10px; }
  .plan-heading-bar .plan-hb-content { font-size: 11px; padding: 6px 10px; }
}
@media (max-width: 480px) {
  .voice-subtitle-text { font-size: 13px; }
  .voice-subtitle-bar { padding: 16px 3% 10px; min-height: 60px; }
  .plan-heading-bar .plan-hb-content { gap: 4px; font-size: 10px; }
  .speed-toggle-btn { font-size: 10px; padding: 3px 6px; }
}

/* Assessment checkpoint dividers — REMOVED (assessment renders on board now) */

/* ─── Assessment Summary Card ──────────────────────────── */
.assessment-summary-card {
  max-width: 420px;
  margin: 12px auto;
  padding: 14px 18px;
  border-radius: 12px;
  background: rgba(100, 120, 255, 0.08);
  border: 1px solid rgba(100, 120, 255, 0.2);
  text-align: left;
  animation: assessmentCardIn 0.4s ease;
}
.assessment-summary-card.complete {
  background: rgba(34, 238, 102, 0.06);
  border-color: rgba(34, 238, 102, 0.2);
}
.assessment-summary-card.handback {
  background: rgba(255, 170, 50, 0.06);
  border-color: rgba(255, 170, 50, 0.2);
}
@keyframes assessmentCardIn {
  from { opacity: 0; transform: translateY(8px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.assessment-summary-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.assessment-summary-icon {
  font-size: 16px;
  line-height: 1;
}
.assessment-summary-card.complete .assessment-summary-icon { color: #22ee66; }
.assessment-summary-card.handback .assessment-summary-icon { color: #ffaa32; }
.assessment-summary-title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  flex: 1;
}
.assessment-summary-status {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  border-radius: 6px;
}
.assessment-summary-card.complete .assessment-summary-status {
  background: rgba(34, 238, 102, 0.15);
  color: #22ee66;
}
.assessment-summary-card.handback .assessment-summary-status {
  background: rgba(255, 170, 50, 0.15);
  color: #ffaa32;
}
.assessment-summary-score {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.assessment-score-bar {
  flex: 1;
  height: 6px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 3px;
  overflow: hidden;
}
.assessment-score-fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.6s ease;
}
.assessment-summary-card.complete .assessment-score-fill { background: #22ee66; }
.assessment-summary-card.handback .assessment-score-fill { background: #ffaa32; }
.assessment-score-text {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}
.assessment-concepts-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.assessment-concept-chip {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 10px;
  font-size: 0.72rem;
  font-weight: 500;
  background: rgba(255, 255, 255, 0.06);
  color: var(--text-muted);
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.assessment-concept-chip.strong { color: #22ee66; border-color: rgba(34, 238, 102, 0.25); }
.assessment-concept-chip.developing { color: #5eead4; border-color: rgba(94, 234, 212, 0.25); }
.assessment-concept-chip.weak { color: #f87171; border-color: rgba(248, 113, 113, 0.25); }
.assessment-mastery {
  font-size: 0.78rem;
  font-weight: 600;
  margin-bottom: 4px;
}
.assessment-mastery.strong { color: #22ee66; }
.assessment-mastery.developing { color: #5eead4; }
.assessment-mastery.weak { color: #f87171; }
.assessment-reason {
  font-size: 0.78rem;
  color: var(--text-dim);
  font-style: italic;
}

/* ─── Assessment Transition ───────────────────────────── */
.assessment-transition-msg {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 0;
  animation: assessmentTransIn 0.4s ease;
}
@keyframes assessmentTransIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
.assessment-transition-text {
  font-size: 0.82rem;
  color: var(--text-muted);
  font-style: italic;
  transition: opacity 0.2s ease;
}
.assessment-transition-spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(100, 140, 255, 0.2);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

/* Assessment spotlight styles — REMOVED (all assessment renders on board) */

/* ═══════════════════════════════════════════════════════════
   Landing Page
   ═══════════════════════════════════════════════════════════ */

#landing-panel {
  height: 100vh;
  overflow-y: auto;
  overflow-x: hidden;
  scroll-behavior: smooth;
}

/* ─── Nav ─── */
.lp-nav {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 48px; max-width: 1200px; margin: 0 auto;
}
.lp-logo { font-size: 18px; font-weight: 700; color: var(--accent); letter-spacing: -0.3px; }
.lp-logo-sub { font-size: 10px; color: var(--text-dim); font-weight: 400; letter-spacing: 0.5px; }
.lp-nav-r { display: flex; gap: 20px; align-items: center; }
.lp-nav-link {
  font-size: 13px; color: var(--text-dim); cursor: pointer;
  text-decoration: none; transition: color .15s;
}
.lp-nav-link:hover { color: var(--text-muted); }
.lp-nav-btn {
  font-size: 13px; font-weight: 500; padding: 8px 20px; border-radius: 8px;
  cursor: pointer; border: 1.5px solid var(--accent); font-family: var(--font-sans);
  background: transparent; color: var(--accent); transition: all .15s;
}
.lp-nav-btn:hover { background: rgba(255,255,255,0.05); }

/* ─── Hero Split ─── */
.lp-hero-split {
  max-width: 1200px; margin: 0 auto;
  padding: 28px 48px 20px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 36px;
  align-items: center; min-height: min(60vh, 520px);
}
.lp-hero-left { display: flex; flex-direction: column; }
.lp-pill {
  display: inline-block; font-size: 11px; font-weight: 500;
  color: var(--accent); background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 20px; padding: 5px 14px; margin-bottom: 12px;
  align-self: flex-start;
}
.lp-hero-left h1 {
  font-size: 38px; font-weight: 700; color: #fff;
  line-height: 1.1; margin-bottom: 10px; letter-spacing: -1.5px;
}
.lp-acc { color: var(--accent); }
.lp-sub {
  font-size: 14px; color: var(--text-dim); line-height: 1.55;
  margin-bottom: 18px; max-width: 420px;
}
.lp-cta { display: flex; gap: 10px; margin-bottom: 16px; }
.lp-btn {
  font-size: 13px; font-weight: 600; padding: 10px 22px; border-radius: 10px;
  cursor: pointer; border: none; font-family: var(--font-sans); transition: all .15s;
}
.lp-btn-primary { background: transparent; color: var(--accent); border: 1.5px solid var(--accent); }
.lp-btn-primary:hover { background: rgba(255,255,255,0.04); transform: translateY(-1px); }
.lp-btn-ghost { background: none; color: var(--text-dim); border: 1px solid var(--border); }
.lp-btn-ghost:hover { border-color: var(--border-active); color: var(--text-muted); }

/* Diff strip under CTA */
.lp-diff-strip { display: flex; gap: 16px; flex-wrap: wrap; }
.lp-diff-item {
  display: flex; align-items: center; gap: 5px;
  font-size: 11px; color: var(--text-dim);
}

.lp-hero-right { position: relative; }
.lp-demo {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 16px; overflow: hidden;
}
.lp-demo-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 10px 16px; border-bottom: 1px solid var(--border);
}
.lp-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--border); }
.lp-demo-title { margin-left: 8px; font-size: 11px; color: var(--text-dim); }
.lp-demo-body { padding: 14px; display: flex; flex-direction: column; gap: 10px; }

/* Chat bubbles */
.lp-msg { max-width: 85%; animation: lp-fadeUp .5s ease both; }
.lp-msg-tutor { align-self: flex-start; }
.lp-msg-student { align-self: flex-end; }
.lp-msg-who { font-size: 10px; color: var(--text-dim); margin-bottom: 3px; font-weight: 500; }
.lp-msg-bubble {
  padding: 10px 13px; border-radius: 11px;
  font-size: 12.5px; line-height: 1.5;
}
.lp-bubble-tutor { background: var(--bg-surface); color: var(--text-muted); border: 1px solid var(--border); }
.lp-bubble-student { background: rgba(255,255,255,0.05); color: var(--text-muted); }

/* Board */
.lp-board {
  background: #081008; border: 1px solid #1a2a1a;
  border-radius: 10px; padding: 14px; margin-top: 8px;
  font-family: var(--font-mono);
  display: flex; flex-direction: column; gap: 4px;
}
.lp-board-label {
  font-size: 8px; color: #3a5a3a; letter-spacing: 1px;
  text-transform: uppercase; margin-bottom: 3px;
}
.lp-chalk {
  font-size: 12px; color: #c8c8c8;
  text-shadow: 0 0 6px rgba(255,255,255,0.1);
  opacity: 0; animation: lp-chalk .4s ease forwards;
}
.lp-chalk:nth-child(3) { animation-delay: .15s; color: var(--accent); }
.lp-chalk:nth-child(4) { animation-delay: .3s; color: var(--green); }
.lp-chalk:nth-child(5) { animation-delay: .45s; }
.lp-chalk-blue { color: var(--accent); }
.lp-chalk-green { color: var(--green); }
@keyframes lp-chalk { to { opacity: 1; } }

/* MCQ */
.lp-mcq { margin-top: 8px; display: flex; flex-direction: column; gap: 4px; }
.lp-mcq-opt {
  font-size: 11px; padding: 7px 10px; border-radius: 7px;
  background: var(--bg); border: 1px solid var(--border); color: var(--text-muted);
  cursor: default; transition: all .15s;
}
.lp-mcq-correct { border-color: #2a5a3a; color: var(--green); background: rgba(74,222,128,0.06); }
.lp-mcq-wrong { border-color: #3a1a1a; color: var(--text-dim); opacity: 0.5; }

/* Sim */
.lp-sim {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 10px; padding: 14px; margin-top: 8px;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.lp-sim-label {
  font-size: 8px; color: var(--text-dim); letter-spacing: 1px;
  text-transform: uppercase;
}
.lp-sim-svg { width: 100%; max-width: 280px; height: 60px; }
.lp-sim-hint { font-size: 10px; color: var(--text-dim); }

@keyframes lp-fadeUp {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.lp-msg:nth-child(2) { animation-delay: .1s; }
.lp-msg:nth-child(3) { animation-delay: .2s; }
.lp-msg:nth-child(4) { animation-delay: .35s; }
.lp-msg:nth-child(5) { animation-delay: .5s; }

/* Split-view demo (matches actual product layout) */
.lp-demo-split .lp-demo-split-body {
  display: flex; min-height: 260px;
}
.lp-demo-chat {
  flex: 2; padding: 12px; display: flex; flex-direction: column; gap: 8px;
  border-right: 1px solid var(--border); overflow: hidden;
}
.lp-demo-chat .lp-msg { max-width: 95%; }
.lp-demo-chat .lp-msg-bubble { font-size: 11.5px; padding: 8px 11px; }
.lp-demo-chat .lp-bubble-tutor {
  background: transparent; border: none; color: var(--text-muted);
  padding: 4px 0; font-style: italic;
}
.lp-demo-chat .lp-bubble-student {
  background: rgba(255,255,255,0.05); border-radius: 10px;
}
.lp-demo-input {
  margin-top: auto; display: flex; align-items: center; justify-content: space-between;
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px;
  font-size: 11px; color: var(--text-dim);
}
.lp-demo-board {
  flex: 3; display: flex; flex-direction: column; background: #060a08;
}
.lp-demo-board-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 12px; border-bottom: 1px solid rgba(255,255,255,0.06);
}
.lp-demo-board-badge {
  font-size: 8px; font-weight: 600; letter-spacing: 0.08em;
  color: var(--accent); background: rgba(108,140,255,0.12);
  padding: 2px 6px; border-radius: 3px;
}
.lp-demo-board-title {
  font-size: 11px; color: var(--text-dim);
}
.lp-demo-board-canvas {
  flex: 1; padding: 4px;
}
.lp-demo-board-canvas svg { display: block; }

@media (max-width: 768px) {
  .lp-demo-split .lp-demo-split-body { flex-direction: column; }
  .lp-demo-chat { border-right: none; border-bottom: 1px solid var(--border); }
  .lp-demo-board { min-height: 180px; }
}

/* ─── How Euler teaches — 3 panels ─── */
.lp-section {
  max-width: 1200px; margin: 0 auto; padding: 0 48px 28px;
}
.lp-section-head { text-align: center; margin-bottom: 16px; }
.lp-section-head h2 {
  font-size: 24px; font-weight: 700; color: #fff;
  letter-spacing: -0.5px; margin-bottom: 4px;
}
.lp-section-head p { font-size: 13px; color: var(--text-dim); }

.lp-how-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
}
.lp-how-card {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 14px; overflow: hidden;
  transition: border-color .2s, transform .2s;
}
.lp-how-card:hover { border-color: var(--border-active); transform: translateY(-2px); }
.lp-how-visual {
  padding: 12px; min-height: 90px;
  display: flex; flex-direction: column; justify-content: center;
  border-bottom: 1px solid var(--border);
}
.lp-how-info { padding: 12px 14px; }
.lp-how-info h3 { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.lp-how-info p { font-size: 11px; color: var(--text-dim); line-height: 1.4; }

/* Mini board */
.lp-hv-board { background: linear-gradient(135deg, #060e06, #0a140a); }
.lp-mini-chalk {
  font-family: var(--font-mono); font-size: 11px;
  text-shadow: 0 0 6px rgba(255,255,255,0.08);
  margin-bottom: 3px; opacity: 0; animation: lp-chalk .4s ease forwards;
}
.lp-mini-chalk:nth-child(1) { color: var(--text-muted); animation-delay: 0s; }
.lp-mini-chalk:nth-child(2) { color: var(--accent); animation-delay: .15s; }
.lp-mc-blue { color: var(--accent); }
.lp-mc-green { color: var(--green); }
.lp-mini-chalk:nth-child(3) { color: var(--green); animation-delay: .3s; }
.lp-mc-gold { color: var(--yellow); }
.lp-mini-chalk:nth-child(4) { color: var(--yellow); animation-delay: .45s; font-size: 9px; margin-top: 4px; }

/* Mini Socratic Q&A */
.lp-hv-socratic {
  background: linear-gradient(135deg, #0e0a06, #14100a);
  gap: 6px;
}
.lp-sq, .lp-sa {
  padding: 6px 10px; border-radius: 8px; font-size: 10px; line-height: 1.4;
  max-width: 90%;
}
.lp-sq { background: #1a1408; border: 1px solid #2a2418; color: #c4a862; align-self: flex-start; }
.lp-st { font-size: 9px; color: var(--text-dim); align-self: flex-end; font-style: italic; }
.lp-sa { background: #14120a; border: 1px solid #22200e; color: var(--text-muted); align-self: flex-end; }

/* Mini simulation */
.lp-hv-sim {
  background: linear-gradient(135deg, #060a14, #0a1018);
  align-items: center;
}
.lp-pendulum-svg { width: 100%; max-width: 240px; height: 60px; }
.lp-sim-tag {
  font-size: 8px; color: var(--accent); background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08);
  padding: 2px 8px; border-radius: 4px; margin-top: 4px;
  letter-spacing: 0.5px;
}

/* ─── Study modes section ────────────────────────────────── */
.lp-study-section { padding-bottom: 28px; }
.lp-section-sub {
  font-size: 14px; color: var(--text-dim); max-width: 560px;
  margin: 8px auto 0; line-height: 1.6; text-align: center;
}
.lp-study-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
.lp-study-card {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 14px; padding: 22px 24px; cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  display: flex; flex-direction: column; gap: 14px;
}
.lp-study-card:hover {
  border-color: var(--border-active);
  box-shadow: 0 2px 16px rgba(0,0,0,0.2);
}
.lp-study-card-byo { cursor: default; opacity: 0.7; }
.lp-study-card-byo:hover {
  border-color: var(--border);
  box-shadow: none;
}
.lp-study-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.5px; color: var(--text-dim);
}
.lp-study-course {
  display: flex; align-items: center; gap: 12px;
}
.lp-study-course-icon {
  width: 44px; height: 44px; border-radius: 10px; background: var(--bg-elevated);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.lp-study-course-name { font-size: 15px; font-weight: 600; color: var(--text); }
.lp-study-course-meta { font-size: 12px; color: var(--text-dim); margin-top: 2px; }
.lp-study-desc {
  font-size: 13px; color: var(--text-dim); line-height: 1.6; flex: 1;
}
.lp-study-action {
  display: flex; align-items: center; justify-content: space-between;
  padding-top: 4px;
}
.lp-study-btn {
  font-size: 13px; font-weight: 600; color: var(--accent);
}
.lp-study-arrow {
  font-size: 20px; color: var(--accent); line-height: 1;
}
.lp-study-card:hover .lp-study-btn { text-decoration: underline; }

.lp-study-action-soon { justify-content: flex-start; }
.lp-study-tag-soon {
  font-size: 11px; padding: 4px 10px; border-radius: 5px;
  font-weight: 500; color: var(--text-dim); background: var(--bg-elevated);
}

.lp-byo-formats {
  display: flex; gap: 10px; flex-wrap: wrap;
}
.lp-byo-fmt {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; color: var(--text-dim);
  padding: 5px 10px; border-radius: 6px;
  background: var(--bg-elevated); border: 1px solid var(--border);
}

/* ─── Footer ─── */
.lp-footer {
  max-width: 1200px; margin: 0 auto; padding: 20px 48px;
  border-top: 1px solid var(--border);
  display: flex; justify-content: space-between; align-items: center;
  font-size: 11px; color: var(--text-dim);
}

/* ─── Landing page responsive ─── */
@media (max-width: 900px) {
  .lp-nav { padding: 14px 20px; }
  .lp-hero-split {
    grid-template-columns: 1fr; padding: 20px 20px 16px;
    min-height: auto; gap: 20px;
  }
  .lp-hero-left h1 { font-size: 32px; }
  .lp-hero-left { text-align: center; align-items: center; }
  .lp-pill { align-self: center; }
  .lp-sub { max-width: 100%; }
  .lp-cta { justify-content: center; }
  .lp-diff-strip { justify-content: center; }
  .lp-section { padding: 0 20px 40px; }
  .lp-how-grid { grid-template-columns: 1fr; }
  .lp-study-grid { grid-template-columns: 1fr; }
  .lp-footer { padding: 24px 20px; }
}

/* ─── Dashboard section hint ────────────────────────────── */
.dash-section-hint {
  font-weight: 400;
  font-size: 11px;
  color: var(--text-dim);
  margin-left: 8px;
  opacity: 0.7;
}

/* ─── First-time UI Hints (tooltips) ───────────────────── */
.ui-hint {
  position: absolute;
  z-index: 9999;
  background: var(--accent);
  color: #fff;
  font-size: 12px;
  line-height: 1.5;
  padding: 10px 14px;
  border-radius: 10px;
  max-width: 260px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.3);
  animation: hintAppear 0.35s ease;
  pointer-events: auto;
}
.ui-hint::after {
  content: '';
  position: absolute;
  width: 10px;
  height: 10px;
  background: var(--accent);
  transform: rotate(45deg);
}
.ui-hint.arrow-top::after    { top: -5px; left: 24px; }
.ui-hint.arrow-bottom::after { bottom: -5px; left: 24px; }
.ui-hint.arrow-left::after   { left: -5px; top: 14px; }
.ui-hint.arrow-right::after  { right: -5px; top: 14px; }

.ui-hint-title {
  font-weight: 600;
  margin-bottom: 4px;
  font-size: 13px;
}
.ui-hint-dismiss {
  display: inline-block;
  margin-top: 6px;
  font-size: 11px;
  opacity: 0.8;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.ui-hint-dismiss:hover { opacity: 1; }

@keyframes hintAppear {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ─── Dashboard Animated Background ────────────────────── */
#dash-bg-canvas {
  position: fixed; top: 0; left: 0;
  width: 100vw; height: 100vh;
  z-index: -2; pointer-events: none;
  display: none;
}
.dash-bg-mask {
  position: fixed; top: 0; left: 0; width: 100%; height: 100%;
  z-index: -1; pointer-events: none;
  display: none;
  background: radial-gradient(ellipse 50% 60% at 50% 45%,
    rgba(10,13,11,0.95) 0%, rgba(10,13,11,0.75) 45%, rgba(10,13,11,0.25) 75%, transparent 100%);
}
body.dash-bg-active #dash-bg-canvas,
body.dash-bg-active .dash-bg-mask {
  display: block;
}

/* ═══════════════════════════════════════════════════════════
   New Landing — Search-First
   ═══════════════════════════════════════════════════════════ */

.nl-inner { max-width: 600px; width: 100%; padding-top: 20px; }
.nl-greeting { font-size: 32px !important; font-weight: 800 !important; text-align: center; letter-spacing: -0.5px; margin-bottom: 32px !important; }

/* Search input */
.nl-search-wrap { position: relative; margin-bottom: 16px; }
.nl-search-input {
  width: 100%; padding: 16px 52px 16px 46px;
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: 14px; color: var(--text); font-size: 16px;
  font-family: var(--font-sans); outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.nl-search-input:focus { border-color: rgba(255,255,255,0.1); box-shadow: 0 0 0 3px rgba(255,255,255,0.015); }
.nl-search-input::placeholder { color: transparent; }
.nl-search-icon { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--text-dim); pointer-events: none; }
.nl-search-icon svg { width: 18px; height: 18px; }

/* Typing animation */
.nl-typed-wrap {
  position: absolute; left: 46px; top: 50%; transform: translateY(-50%);
  font-size: 16px; color: var(--text-dim); pointer-events: none;
  transition: opacity 0.2s;
}
.nl-search-input:focus ~ .nl-typed-wrap,
.nl-search-input:not(:placeholder-shown) ~ .nl-typed-wrap { opacity: 0; }
.nl-cursor { display: inline-block; width: 1px; height: 18px; background: var(--text-dim); margin-left: 1px; animation: nl-blink 0.9s infinite; vertical-align: text-bottom; }
@keyframes nl-blink { 0%,50% { opacity: 1; } 51%,100% { opacity: 0; } }

/* Chips */
.nl-chips { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 24px; transition: all 0.3s; }
.nl-chip {
  font-size: 12px; color: var(--text-muted); padding: 7px 16px;
  border-radius: 20px; background: var(--bg-surface); border: 1px solid var(--border);
  font-family: var(--font-sans); cursor: pointer; transition: all 0.15s;
}
.nl-chip:hover { background: var(--bg-elevated); color: var(--text); border-color: rgba(255,255,255,0.08); }

/* Search results */
.nl-results { margin-top: 8px; }

.nl-rlabel { font-size: 10px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px; margin: 16px 0 8px; }

.nl-rcard {
  display: flex; gap: 14px; padding: 10px 12px; border-radius: 12px;
  cursor: pointer; transition: background 0.12s; align-items: center; margin-bottom: 2px;
}
.nl-rcard:hover { background: var(--bg-surface); }

.nl-rthumb { width: 90px; height: 52px; border-radius: 8px; overflow: hidden; flex-shrink: 0; position: relative; background: var(--bg-surface); }
.nl-rthumb img { width: 100%; height: 100%; object-fit: cover; }
.nl-rthumb .nl-pbadge { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.15s; }
.nl-rcard:hover .nl-pbadge { opacity: 1; }
.nl-pbadge svg { width: 20px; height: 20px; color: white; filter: drop-shadow(0 1px 3px rgba(0,0,0,0.5)); }

.nl-rbody { flex: 1; min-width: 0; }
.nl-rtitle { font-size: 14px; font-weight: 600; margin-bottom: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nl-rmeta { font-size: 11px; color: var(--text-muted); }
.nl-raction { font-size: 11px; color: var(--accent); margin-top: 2px; font-weight: 500; }

.nl-rtag { font-size: 9px; padding: 3px 8px; border-radius: 5px; flex-shrink: 0; font-weight: 600; letter-spacing: 0.3px; text-transform: uppercase; }
.nl-rtag.lec { background: rgba(52,211,153,0.06); color: var(--accent); }
.nl-rtag.crs { background: rgba(167,139,250,0.06); color: #a78bfa; }

.nl-rdivider { height: 1px; background: var(--border); margin: 12px 0; }

.nl-loading { text-align: center; padding: 20px; font-size: 12px; color: var(--text-dim); }
.nl-no-results { text-align: center; padding: 24px; font-size: 13px; color: var(--text-dim); }

/* AI tutor option */
.nl-ai-option {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 18px; border-radius: 12px; background: var(--bg-surface);
  cursor: pointer; transition: background 0.15s; margin-top: 12px;
}
.nl-ai-option:hover { background: var(--bg-elevated); }
.nl-ai-icon { width: 36px; height: 36px; border-radius: 10px; background: rgba(52,211,153,0.06); color: var(--accent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.nl-ai-icon svg { width: 18px; height: 18px; }
.nl-ai-body { flex: 1; }
.nl-ai-title { font-size: 13px; font-weight: 600; }
.nl-ai-desc { font-size: 11px; color: var(--text-muted); margin-top: 1px; }

/* Choice buttons (after clicking a result) */
.nl-choice-btn {
  display: flex; align-items: center; gap: 12px;
  padding: 16px 20px; border-radius: 12px; width: 100%;
  background: var(--bg-surface); border: 1px solid var(--border);
  color: var(--text); font-size: 14px; font-weight: 600;
  font-family: var(--font-sans); cursor: pointer;
  text-align: left; transition: all 0.2s;
}
.nl-choice-btn:hover { background: var(--bg-elevated); border-color: rgba(255,255,255,0.1); transform: translateY(-1px); }
.nl-choice-video:hover { border-color: rgba(129,140,248,0.3); }
.nl-choice-tutor:hover { border-color: rgba(52,211,153,0.3); }
.nl-choice-video svg { color: #818cf8; flex-shrink: 0; }
.nl-choice-tutor svg { color: var(--accent); flex-shrink: 0; }

/* Smooth result card entrance */
.nl-rcard { animation: nl-slideIn 0.25s ease both; }
.nl-rcard:nth-child(2) { animation-delay: 0.05s; }
.nl-rcard:nth-child(3) { animation-delay: 0.1s; }
.nl-rcard:nth-child(4) { animation-delay: 0.15s; }
.nl-rcard:nth-child(5) { animation-delay: 0.2s; }
@keyframes nl-slideIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* Results container transition */
.nl-results { transition: opacity 0.2s ease; }

/* ═══ Video Follow-Along Overlay ═══ */
body.video-mode #chat-panel, body.video-mode #split-handle { display: none !important; }
body.video-mode #board-panel { flex: 1 !important; }
body.video-mode #plan-heading-bar { display: none !important; }
body.video-mode #top-bar { display: flex !important; }
body.video-mode #top-bar .top-right .speed-wrap,
body.video-mode #top-bar .course-title { display: none; }

body.assessment-mode #chat-panel, body.assessment-mode #split-handle { display: none !important; }
body.assessment-mode #board-panel { flex: 1 !important; }

/* Board-first: always hide chat panel, board is full width */
#chat-panel, #split-handle { display: none !important; }
#board-panel { flex: 1 !important; }

/* Board pen toggle in header (next to title) */
.board-pen-toggle {
  background: none; border: 1px solid var(--border); border-radius: 6px;
  padding: 3px 10px; cursor: pointer; color: var(--text-dim);
  display: inline-flex; align-items: center; gap: 5px;
  transition: all 0.15s; margin-left: 10px; font-size: 12px;
}
.board-pen-toggle .pen-label { font-weight: 500; }
.board-pen-toggle:hover { color: var(--text); border-color: rgba(255,255,255,0.15); }
.board-pen-toggle.active { color: var(--accent); border-color: var(--accent); background: rgba(52,211,153,0.08); }

.vm-overlay { position: fixed; inset: 0; z-index: 9000; pointer-events: none; }
.vm-overlay .vm-vid-wrap, .vm-overlay .vm-chat-wrap, .vm-overlay .vm-close-btn { pointer-events: all; }
.vm-close-btn { position:fixed; top:12px; right:12px; z-index:9999; width:36px; height:36px;
  border-radius:50%; border:1px solid var(--border); background:rgba(0,0,0,.7); color:var(--text);
  font-size:20px; cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:background .15s, border-color .15s; backdrop-filter:blur(4px) }
.vm-close-btn:hover { background:rgba(239,68,68,.2); border-color:rgba(239,68,68,.4); color:#ef4444 }

.vm-vid-wrap { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 50; background: rgba(0,0,0,0.55); backdrop-filter: blur(3px); transition: all 0.4s cubic-bezier(0.4,0,0.2,1); }
.vm-vid-wrap.vm-mini { inset: auto; top: 12px; right: 12px; background: none; backdrop-filter: none; z-index: 90; }
.vm-vid-box { width: 86%; max-width: 1100px; background: #000; border-radius: 12px; overflow: hidden; box-shadow: 0 24px 64px rgba(0,0,0,0.5); transition: all 0.4s cubic-bezier(0.4,0,0.2,1); }
.vm-vid-wrap.vm-mini .vm-vid-box { width: 300px; max-width: 300px; border-radius: 10px; box-shadow: 0 8px 28px rgba(0,0,0,0.7); }
.vm-vid-box .plyr { width: 100%; border-radius: 0; }
.vm-vid-box video { width: 100%; max-height: 80vh; background: #000; }
.vm-vid-wrap.vm-mini .plyr__controls { display: none; }

.vm-chat-wrap { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); width: 500px; max-width: 80%; z-index: 9010; display: none; }
.vm-chat-wrap.vm-show { display: block; }
.vm-chat-bar { display: flex; align-items: center; gap: 8px; padding: 6px 6px 6px 18px; background: var(--bg-surface); border: 1px solid var(--border); border-radius: 26px; box-shadow: 0 8px 28px rgba(0,0,0,0.5); }
.vm-chat-input { flex: 1; background: none; border: none; color: var(--text); font-size: 14px; font-family: var(--font-sans); outline: none; }
.vm-chat-input::placeholder { color: var(--text-dim); }
.vm-chat-btn { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; border: none; cursor: pointer; }
.vm-chat-btn svg { width: 16px; height: 16px; }
.vm-send-btn { background: var(--accent); color: var(--bg); }

/* ═══ BOARD SCROLL FIX — BULLETPROOF OVERRIDES ═══
   These !important rules ensure only bd-canvas-wrap scrolls.
   Every parent in the chain must constrain height and hide overflow.
   This section MUST be last to win any specificity conflicts. */

#board-panel {
  overflow: hidden !important;
}

#spotlight-content,
.board-content,
#spotlight-content.board-content {
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
  min-height: 0 !important;
}

.board-content .bd-container,
#spotlight-content .bd-container {
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
  min-height: 0 !important;
}

#bd-canvas-wrap,
.bd-canvas-wrap {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  flex: 1 !important;
  min-height: 0 !important;
}

/* ═══ Feedback / Contact / Bug Report ═══ */

/* Bug report button in nav */
.fb-bug-btn { width:32px; height:32px; border-radius:8px; border:1px solid var(--border);
  background:none; color:var(--text-dim); display:grid; place-items:center; cursor:pointer;
  transition:all .15s }
.fb-bug-btn:hover { color:var(--accent); border-color:var(--accent) }

/* Contact section on homepage */
.fb-contact-section { width:100%; max-width:900px; margin:48px auto 40px; padding:0 24px; text-align:center }
.fb-contact-inner h2 { font-size:20px; font-weight:700; margin-bottom:6px }
.fb-contact-inner > p { font-size:14px; color:var(--text-muted); margin-bottom:24px }
.fb-contact-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:14px }
.fb-card { padding:24px 16px; border-radius:14px; background:var(--bg-surface);
  border:1px solid var(--border); cursor:pointer; transition:all .2s; text-align:center }
.fb-card:hover { border-color:var(--accent); transform:translateY(-2px);
  box-shadow:0 4px 20px rgba(52,211,153,.08) }
.fb-card-icon { font-size:28px; margin-bottom:10px }
.fb-card h3 { font-size:14px; font-weight:600; margin-bottom:6px }
.fb-card p { font-size:12px; color:var(--text-muted); line-height:1.5 }
.fb-direct-contact { margin-top:20px; font-size:14px; display:flex; align-items:center;
  justify-content:center; gap:10px }
.fb-direct-contact a { color:var(--accent); text-decoration:none }
.fb-direct-contact a:hover { text-decoration:underline }
.fb-direct-sep { color:var(--text-dim) }
@media (max-width:600px) { .fb-contact-cards { grid-template-columns:1fr } }

/* Feedback modal overlay */
.fb-overlay { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:9999;
  display:flex; align-items:center; justify-content:center; backdrop-filter:blur(4px);
  animation:fbFadeIn .2s ease }
@keyframes fbFadeIn { from{opacity:0} to{opacity:1} }
.fb-modal { background:var(--bg-surface); border:1px solid var(--border); border-radius:16px;
  padding:28px; width:90%; max-width:480px; position:relative; animation:fbSlideIn .25s ease }
@keyframes fbSlideIn { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }
.fb-close { position:absolute; top:12px; right:14px; background:none; border:none;
  color:var(--text-dim); font-size:22px; cursor:pointer; width:30px; height:30px; border-radius:8px;
  display:grid; place-items:center; transition:all .15s }
.fb-close:hover { color:var(--text); background:var(--bg-elevated) }
.fb-modal h2 { font-size:18px; font-weight:700; margin-bottom:18px }
.fb-row { display:flex; gap:10px; margin-bottom:10px }
.fb-input { width:100%; padding:10px 14px; border-radius:10px; border:1px solid var(--border);
  background:var(--bg); color:var(--text); font-size:14px; font-family:inherit;
  transition:border-color .2s; outline:none; resize:vertical }
.fb-input:focus { border-color:var(--accent) }
.fb-input::placeholder { color:var(--text-dim) }
textarea.fb-input { margin-bottom:10px; min-height:100px }
.fb-attach-row { display:flex; align-items:center; gap:10px; margin-bottom:14px; flex-wrap:wrap }
.fb-attach-btn { display:flex; align-items:center; gap:5px; padding:6px 12px; border-radius:8px;
  border:1px solid var(--border); background:none; color:var(--text-muted); font-size:12px;
  cursor:pointer; transition:all .15s; white-space:nowrap }
.fb-attach-btn:hover { border-color:var(--accent); color:var(--accent) }
.fb-file-list { display:flex; gap:6px; flex-wrap:wrap }
.fb-file-tag { display:flex; align-items:center; gap:4px; padding:3px 8px; border-radius:6px;
  background:var(--bg-elevated); font-size:11px; color:var(--text-muted) }
.fb-file-remove { cursor:pointer; color:var(--text-dim); font-size:14px }
.fb-file-remove:hover { color:#ef4444 }
.fb-submit { width:100%; padding:10px; border-radius:10px; border:none; background:var(--accent);
  color:#000; font-size:14px; font-weight:600; cursor:pointer; transition:opacity .15s }
.fb-submit:hover { opacity:.9 }
.fb-submit:disabled { opacity:.5; cursor:not-allowed }
.fb-status { text-align:center; font-size:13px; margin-top:10px; min-height:20px }
.fb-status.success { color:var(--accent) }
.fb-status.error { color:#ef4444 }

/* ═══ For Business / Institutions Page ═══ */
.biz-page { max-width:960px; margin:0 auto; padding:0 24px }

.biz-hero { text-align:center; padding:80px 0 60px }
.biz-hero-label { font-size:12px; font-weight:600; color:var(--accent); text-transform:uppercase;
  letter-spacing:1.5px; margin-bottom:16px }
.biz-hero h1 { font-size:40px; font-weight:800; line-height:1.2; margin-bottom:20px; letter-spacing:-.5px }
.biz-hero h1 em { color:var(--accent); font-style:normal }
.biz-hero-sub { font-size:16px; color:var(--text-muted); line-height:1.7; max-width:640px; margin:0 auto 32px }
.biz-hero-cta { display:flex; gap:12px; justify-content:center; flex-wrap:wrap }
.sc-btn-lg { padding:12px 28px; font-size:15px; border-radius:12px }

.biz-section { padding:60px 0; border-top:1px solid var(--border) }
.biz-section h2 { font-size:28px; font-weight:700; text-align:center; margin-bottom:8px }
.biz-section-sub { font-size:15px; color:var(--text-muted); text-align:center; margin-bottom:36px; line-height:1.6 }

/* Comparison */
.biz-compare { display:grid; grid-template-columns:1fr 1fr; gap:20px }
.biz-compare-col { border-radius:16px; padding:28px; border:1px solid var(--border) }
.biz-compare-bad { background:rgba(255,107,107,.03); border-color:rgba(255,107,107,.2) }
.biz-compare-good { background:rgba(52,211,153,.03); border-color:rgba(52,211,153,.2) }
.biz-compare-header { display:flex; align-items:center; gap:10px; margin-bottom:16px }
.biz-compare-icon { font-size:24px }
.biz-compare-header h3 { font-size:16px; font-weight:600 }
.biz-compare-col ul { list-style:none; padding:0 }
.biz-compare-col li { padding:8px 0; font-size:14px; color:var(--text-muted); line-height:1.5;
  border-bottom:1px solid rgba(255,255,255,.04) }
.biz-compare-col li:last-child { border-bottom:none }
.biz-compare-bad li::before { content:'✕ '; color:#ff6b6b }
.biz-compare-good li::before { content:'✓ '; color:var(--accent) }

/* Experiences grid */
.biz-experiences { display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.biz-exp-card { padding:24px; border-radius:14px; background:var(--bg-surface);
  border:1px solid var(--border); transition:all .2s }
.biz-exp-card:hover { border-color:var(--accent); transform:translateY(-2px) }
.biz-exp-icon { font-size:28px; margin-bottom:12px }
.biz-exp-card h3 { font-size:15px; font-weight:600; margin-bottom:8px }
.biz-exp-card p { font-size:13px; color:var(--text-muted); line-height:1.6 }

/* Integration steps */
.biz-steps { display:flex; align-items:flex-start; gap:12px; justify-content:center }
.biz-step { flex:1; text-align:center; padding:24px; border-radius:14px;
  background:var(--bg-surface); border:1px solid var(--border) }
.biz-step-num { width:36px; height:36px; border-radius:50%; background:var(--accent); color:#000;
  font-size:16px; font-weight:700; display:grid; place-items:center; margin:0 auto 12px }
.biz-step h3 { font-size:14px; font-weight:600; margin-bottom:8px }
.biz-step p { font-size:13px; color:var(--text-muted); line-height:1.5 }
.biz-step-arrow { font-size:24px; color:var(--text-dim); align-self:center; margin-top:20px }

/* CTA section */
.biz-cta-section { text-align:center; background:var(--bg-surface); border-radius:20px;
  padding:60px 40px; margin-bottom:40px; border:1px solid var(--border) }
.biz-cta-actions { margin-bottom:24px }
.biz-contact-info { display:flex; gap:40px; justify-content:center }
.biz-contact-item { font-size:14px; color:var(--text-muted) }
.biz-contact-item strong { display:block; font-size:11px; text-transform:uppercase;
  letter-spacing:1px; color:var(--text-dim); margin-bottom:4px }
.biz-contact-item a { color:var(--accent); text-decoration:none }
.biz-contact-item a:hover { text-decoration:underline }

@media (max-width:768px) {
  .biz-hero h1 { font-size:28px }
  .biz-compare { grid-template-columns:1fr }
  .biz-experiences { grid-template-columns:1fr }
  .biz-steps { flex-direction:column }
  .biz-step-arrow { transform:rotate(90deg); align-self:center }
}

/* ─── Generic Hidden ────────────────────────────────────── */
.hidden { display: none !important; }

/* ═══════════════════════════════════════════════════════════
   NEW MINIMAL REDESIGN STYLES
   (from mockup-complete.html)
   ═══════════════════════════════════════════════════════════ */

/* ── Demo Cards ── */
.demos{max-width:960px;margin:0 auto 60px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.demo{border-radius:14px;border:1px solid var(--border);background:var(--bg2);overflow:hidden;cursor:pointer;transition:all .3s}
.demo:hover{border-color:var(--border-h);transform:translateY(-3px);box-shadow:0 20px 60px rgba(0,0,0,.4)}
.demo-label{padding:14px 16px;display:flex;align-items:center;gap:10px}
.demo-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex-shrink:0}
.demo-icon svg{width:14px;height:14px}
.demo-text h3{font-size:12px;font-weight:600;color:rgba(255,255,255,.85)}
.demo-text p{font-size:10px;color:var(--text2);margin-top:1px}

/* ── Board frame (shared) ── */
.brd{background:#0a0e14;border-bottom:1px solid rgba(255,255,255,.06);overflow:hidden;position:relative}
.brd-head{display:flex;align-items:center;gap:5px;padding:7px 10px;border-bottom:1px solid rgba(255,255,255,.05);background:rgba(255,255,255,.02)}
.brd-dot{width:6px;height:6px;border-radius:50%}
.brd-dot.r{background:#ff5f56}.brd-dot.y{background:#ffbd2e}.brd-dot.g{background:#27c93f}
.brd-title{margin-left:auto;font-size:8px;color:rgba(255,255,255,.18);letter-spacing:.4px;text-transform:uppercase}
.brd-body{padding:14px 16px;min-height:170px;position:relative;
  background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:32px 32px}
.brd-voice{display:flex;align-items:center;gap:6px;padding:6px 10px;border-top:1px solid rgba(255,255,255,.04);background:rgba(255,255,255,.01)}
.vbars{display:flex;gap:2px;align-items:center}
.vbars span{width:2px;border-radius:1px;background:var(--accent)}
.vbars span:nth-child(1){height:7px;animation:vb .4s ease-in-out infinite alternate}
.vbars span:nth-child(2){height:11px;animation:vb .4s .1s ease-in-out infinite alternate}
.vbars span:nth-child(3){height:5px;animation:vb .4s .2s ease-in-out infinite alternate}
.vbars span:nth-child(4){height:9px;animation:vb .4s .3s ease-in-out infinite alternate}
@keyframes vb{to{transform:scaleY(.35)}}
.vtext{font-size:9px;color:rgba(255,255,255,.2)}

/* ── Chalk content appearing ── */
.chalk{opacity:0;transform:translateY(4px);animation:chalkIn .5s ease-out forwards;text-shadow:0 0 6px currentColor}
@keyframes chalkIn{to{opacity:1;transform:none}}
.chalk-eq{font-family:'JetBrains Mono',Georgia,serif;font-size:16px;color:#34d399;font-weight:600;margin:8px 0 4px;display:block}
.chalk-title{font-size:15px;color:#fbbf24;font-weight:600;margin-bottom:4px}
.chalk-dim{font-size:10px;color:rgba(255,255,255,.25);font-style:italic}
.chalk-q{font-size:11px;color:#83d8fb;background:rgba(131,216,251,.06);padding:4px 8px;border-radius:4px;border-left:2px solid #83d8fb;margin-top:6px;display:inline-block}
.chalk-ann{font-size:9px;color:rgba(255,255,255,.3);margin-left:6px}
/* Staggered delays */
.ch1{animation-delay:.4s}.ch2{animation-delay:1s}.ch3{animation-delay:1.8s}.ch4{animation-delay:2.6s}.ch5{animation-delay:3.2s}.ch6{animation-delay:4s}

/* Wave SVG draw */
.wave-svg{width:90%;height:36px;margin:6px 0;opacity:0;animation:chalkIn .5s ease-out forwards}
.wave-path{stroke-dasharray:400;stroke-dashoffset:400;animation:waveDraw 1.2s ease-out forwards}
@keyframes waveDraw{to{stroke-dashoffset:0}}

/* Glow particles */
.glow{position:absolute;border-radius:50%;filter:blur(3px);opacity:0;animation:glowIn .6s ease-out forwards}
@keyframes glowIn{to{opacity:.6}}

/* ── Demo 1: Type input bar ── */
.d1-input{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;gap:6px;padding:7px 10px;border-top:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.15);font-size:9px;color:rgba(255,255,255,.15)}
.d1-input::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0}
.d1-typing{overflow:hidden;white-space:nowrap;color:var(--accent);opacity:.7;width:0;animation:d1t 10s infinite}
.d1-cursor{display:inline-block;width:1px;height:10px;background:var(--accent);animation:blink .8s step-end infinite}
@keyframes d1t{0%,4%{width:0}6%,30%{width:140px}33%{width:0}100%{width:0}}
@keyframes blink{50%{opacity:0}}

/* ── Demo 2: Video — strip right, video shrinks to top-left on pause ── */
.d2-layout{display:flex;min-height:190px}
.d2-board{flex:1;position:relative;
  background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:32px 32px;overflow:hidden}
.d2-strip{width:90px;border-left:1px solid rgba(255,255,255,.05);background:rgba(0,0,0,.2);display:flex;flex-direction:column;overflow:hidden}
.d2-strip-head{padding:4px 6px;font-size:7px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid rgba(255,255,255,.04)}
.d2-thumb{padding:3px 5px;border-bottom:1px solid rgba(255,255,255,.03);display:flex;gap:4px;align-items:center;font-size:7px;color:var(--text3);position:relative}
.d2-thumb.playing{background:rgba(167,139,250,.06);color:var(--purple)}
.d2-thumb.playing::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--purple)}
.d2-tn{width:30px;height:18px;border-radius:2px;flex-shrink:0;display:grid;place-items:center;overflow:hidden}
.d2-tn svg{width:5px;height:5px}
.d2-dur{font-size:6px;color:var(--text3);margin-top:1px}
/* Floating video — starts full, shrinks to top-left on pause */
.d2-vid{position:absolute;z-index:3;border-radius:5px;background:linear-gradient(135deg,#1e1b4b,#312e81);overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.08);display:grid;place-items:center;
  animation:d2vid 12s infinite}
.d2-vid-play{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.12);display:grid;place-items:center}
.d2-vid-pause{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35);opacity:0;animation:d2vpause 12s infinite}
.d2-vid-pause span{width:3px;height:10px;background:#fff;border-radius:1px;margin:0 1px}
.d2-vid-bar{position:absolute;bottom:0;left:0;height:2px;background:var(--purple);animation:d2bar 12s infinite}
.d2-vid-live{position:absolute;top:3px;right:3px;font-size:6px;font-weight:700;padding:1px 4px;border-radius:2px;background:rgba(239,68,68,.85);color:#fff}
/* Board content */
.d2-content{position:absolute;top:8px;left:8px;right:8px;bottom:8px;opacity:0;animation:d2cont 12s infinite}
.d2-c{opacity:0;text-shadow:0 0 6px currentColor}
.d2-c1{animation:d2c 12s infinite 0s}
.d2-c2{animation:d2c 12s infinite .3s}
.d2-c3{animation:d2c 12s infinite .6s}
.d2-c4{animation:d2c 12s infinite .9s}
/* Question bar */
.d2-q{position:absolute;bottom:0;left:0;right:0;padding:5px 8px;background:rgba(10,14,26,.92);border-top:1px solid rgba(131,216,251,.12);display:flex;align-items:center;gap:5px;font-size:8px;opacity:0;animation:d2qbar 12s infinite;z-index:4}
.d2-q::before{content:'';width:4px;height:4px;border-radius:50%;background:#83d8fb;flex-shrink:0}
.d2-q-txt{color:#83d8fb;overflow:hidden;white-space:nowrap;width:0;animation:d2qtype 12s infinite}
.d2-q-cur{display:inline-block;width:1px;height:8px;background:#83d8fb;animation:blink .8s step-end infinite}
@keyframes d2vid{0%{inset:0;border-radius:0}24%{inset:0;border-radius:0}28%{top:6px;left:6px;right:auto;bottom:auto;width:100px;height:58px;border-radius:5px}72%{top:6px;left:6px;right:auto;bottom:auto;width:100px;height:58px;border-radius:5px}78%{inset:0;border-radius:0}100%{inset:0;border-radius:0}}
@keyframes d2vpause{0%,24%{opacity:0}28%{opacity:1}72%{opacity:1}76%{opacity:0}100%{opacity:0}}
@keyframes d2bar{0%{width:0}24%{width:38%}28%,72%{width:38%}78%{width:42%}100%{width:100%}}
@keyframes d2cont{0%,30%{opacity:0}35%{opacity:1}72%{opacity:1}76%{opacity:0}100%{opacity:0}}
@keyframes d2c{0%,36%{opacity:0;transform:translateY(3px)}42%{opacity:1;transform:none}70%{opacity:1}76%{opacity:0}100%{opacity:0}}
@keyframes d2qbar{0%,28%{opacity:0;transform:translateY(4px)}32%{opacity:1;transform:none}72%{opacity:1}76%{opacity:0}100%{opacity:0}}
@keyframes d2qtype{0%,32%{width:0}40%,70%{width:140px}74%{width:0}100%{width:0}}

/* ── Demo 3: BYO — prompt "explain Q5 from my hw" + board explains ── */
.d3-prompt{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:7px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);font-size:9px;opacity:0;animation:d3prompt 11s infinite;z-index:2}
.d3-prompt::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0}
.d3-prompt-txt{color:var(--accent);overflow:hidden;white-space:nowrap;width:0;animation:d3ptype 11s infinite}
.d3-prompt-cur{display:inline-block;width:1px;height:9px;background:var(--accent);animation:blink .8s step-end infinite}
.d3-src{position:absolute;top:36px;left:10px;font-size:7px;color:var(--text3);opacity:0;animation:d3src 11s infinite;display:flex;align-items:center;gap:4px}
.d3-src-dot{width:4px;height:4px;border-radius:1px;background:var(--blue)}
/* Board answer */
.d3-ans{position:absolute;top:52px;left:10px;right:10px;bottom:8px;opacity:0;animation:d3ans 11s infinite}
.d3-a{opacity:0;text-shadow:0 0 6px currentColor}
.d3-a1{animation:d3achalk 11s infinite 0s}
.d3-a2{animation:d3achalk 11s infinite .3s}
.d3-a3{animation:d3achalk 11s infinite .6s}
.d3-a4{animation:d3achalk 11s infinite .9s}
.d3-a5{animation:d3achalk 11s infinite 1.2s}
/* Animated SVG inside board */
.d3-anim{opacity:0;animation:d3achalk 11s infinite 1.5s}
.d3-anim circle{animation:d3pulse 2s ease-in-out infinite alternate}
@keyframes d3pulse{0%{r:3}100%{r:5}}
@keyframes d3prompt{0%,4%{opacity:0}8%{opacity:1}82%{opacity:1}88%{opacity:0}100%{opacity:0}}
@keyframes d3ptype{0%,8%{width:0}26%,78%{width:155px}84%{width:0}100%{width:0}}
@keyframes d3src{0%,28%{opacity:0}32%{opacity:1}82%{opacity:1}88%{opacity:0}100%{opacity:0}}
@keyframes d3ans{0%,34%{opacity:0}38%{opacity:1}82%{opacity:1}88%{opacity:0}100%{opacity:0}}
@keyframes d3achalk{0%,38%{opacity:0;transform:translateY(3px)}44%{opacity:1;transform:none}78%{opacity:1}86%{opacity:0}100%{opacity:0}}

@media(max-width:800px){.demos{grid-template-columns:1fr}}

/* ── Home tab (new) ── */
.home-page{padding:36px 0 80px}
.hero{text-align:center;margin-bottom:44px}
.hero-greeting{font-size:14px;color:var(--text2);margin-bottom:6px}
.hero h1{font-size:26px;font-weight:700;letter-spacing:-.4px;margin-bottom:22px;color:#fff}
.input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:13px;border:1px solid var(--border);background:var(--bg2);max-width:540px;margin:0 auto;transition:all .3s}
.input-wrap:focus-within{border-color:rgba(52,211,153,.25);box-shadow:0 0 0 3px rgba(52,211,153,.06),0 8px 32px rgba(0,0,0,.3)}
.input-wrap svg{color:var(--text3);flex-shrink:0;width:16px;height:16px}
.input-wrap input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:13px;font-family:inherit}
.input-wrap input::placeholder{color:var(--text3)}
.send{width:30px;height:30px;border-radius:8px;border:none;background:var(--accent);color:#000;cursor:pointer;display:grid;place-items:center;opacity:.4;transition:all .2s}
.send:hover{opacity:1}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;justify-content:center}
.chip{padding:5px 12px;border-radius:16px;border:1px solid var(--border);font-size:10px;color:var(--text2);cursor:pointer;transition:all .2s;background:transparent}
.chip:hover{border-color:rgba(52,211,153,.3);color:var(--text);background:var(--accent-dim)}

/* ── Sections ── */
.section{margin-bottom:36px}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.sec-head h2{font-size:13px;font-weight:600;color:var(--text2);letter-spacing:-.1px}
.sec-link{font-size:10px;color:var(--text3);cursor:pointer;transition:color .2s}
.sec-link:hover{color:var(--accent)}
.hscroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.hscroll::-webkit-scrollbar{display:none}

/* Session cards */
.s{padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg2);cursor:pointer;transition:all .2s;flex-shrink:0;min-width:180px;max-width:200px}
.s:hover{border-color:var(--border-h);transform:translateY(-1px)}
.s-top{display:flex;align-items:center;gap:5px;margin-bottom:4px}
.s-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.s-subj{font-size:9px;color:var(--text2);font-weight:500}.s-time{font-size:9px;color:var(--text3);margin-left:auto}
.s-title{font-size:11px;font-weight:600;line-height:1.35;color:rgba(255,255,255,.78)}

/* Course cards */
.c{border-radius:8px;border:1px solid var(--border);background:var(--bg2);cursor:pointer;transition:all .2s;flex-shrink:0;min-width:155px;max-width:170px;overflow:hidden}
.c:hover{border-color:var(--border-h);transform:translateY(-1px)}
.c-top{height:60px;position:relative;display:flex;align-items:flex-end;padding:6px 8px}
.c-tag{font-size:8px;font-weight:600;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.3px}
.c-meta{position:absolute;top:5px;right:6px;font-size:8px;color:rgba(255,255,255,.3)}
.c-body{padding:8px 10px}
.c-body h3{font-size:11px;font-weight:600;line-height:1.3;color:rgba(255,255,255,.78);margin-bottom:1px}
.c-body p{font-size:9px;color:var(--text2);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Video cards */
.v{border-radius:8px;border:1px solid var(--border);background:var(--bg2);cursor:pointer;transition:all .2s;flex-shrink:0;min-width:160px;max-width:175px;overflow:hidden}
.v:hover{border-color:rgba(167,139,250,.2);transform:translateY(-1px)}
.v-thumb{height:52px;display:grid;place-items:center;position:relative}
.v-play{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.1);backdrop-filter:blur(6px);display:grid;place-items:center;color:#fff}
.v-dur{position:absolute;bottom:4px;right:6px;font-size:8px;background:rgba(0,0,0,.6);color:rgba(255,255,255,.7);padding:1px 4px;border-radius:3px}
.v-body{padding:7px 9px}
.v-body h3{font-size:10px;font-weight:600;color:rgba(255,255,255,.78);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-body p{font-size:9px;color:var(--text2)}

/* Gradient utilities */
.g-indigo{background:linear-gradient(135deg,#1e1b4b,#312e81)}.g-emerald{background:linear-gradient(135deg,#042f2e,#064e3b)}.g-amber{background:linear-gradient(135deg,#451a03,#78350f)}.g-slate{background:linear-gradient(135deg,#0f172a,#1e293b)}
/* Color dots */
.d-indigo{background:#818cf8}.d-emerald{background:#34d399}.d-amber{background:#fbbf24}.d-sky{background:#38bdf8}.d-pink{background:#f472b6}
/* Tags */
.t-phys{background:rgba(129,140,248,.12);color:#a5b4fc}.t-bio{background:rgba(52,211,153,.1);color:#6ee7b7}.t-math{background:rgba(251,191,36,.1);color:#fcd34d}.t-cs{background:rgba(56,189,248,.1);color:#7dd3fc}

/* ── My Stuff / Collections ── */
.stuff-page{padding:28px 0 80px}
.stuff-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.stuff-head h2{font-size:16px;font-weight:600}

.collections{display:flex;flex-direction:column;gap:6px}
.col{border-radius:9px;border:1px solid var(--border);background:var(--bg2);cursor:pointer;transition:all .2s;overflow:hidden}
.col:hover{border-color:var(--border-h)}
.col.open{border-color:var(--border-h)}
.col-head{display:flex;align-items:center;gap:9px;padding:10px 12px}
.col-icon{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;flex-shrink:0}
.col-icon svg{width:14px;height:14px}
.col-info{flex:1;min-width:0}
.col-title{font-size:12px;font-weight:600;color:rgba(255,255,255,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.col-meta{font-size:9px;color:var(--text3);margin-top:1px}
.col-teach{padding:5px 10px;border-radius:5px;border:1px solid rgba(52,211,153,.2);background:var(--accent-dim);color:var(--accent);font-size:10px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit;white-space:nowrap}
.col-teach:hover{background:rgba(52,211,153,.15)}
.col-arrow{color:var(--text3);transition:transform .2s;flex-shrink:0;width:14px;height:14px}
.col.open .col-arrow{transform:rotate(90deg)}

.col-body{display:none;border-top:1px solid var(--border);padding:8px 12px}
.col.open .col-body{display:block}
.res{display:flex;align-items:center;gap:7px;padding:5px 6px;border-radius:5px;transition:background .15s;font-size:11px}
.res:hover{background:var(--bg3)}
.res svg{width:14px;height:14px;flex-shrink:0;color:var(--text3)}
.res-name{flex:1;color:rgba(255,255,255,.65);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.res-badge{font-size:8px;padding:1px 5px;border-radius:3px;font-weight:500}
.res-badge.ok{background:var(--accent-dim);color:var(--accent)}
.res-badge.wip{background:var(--warm-dim);color:var(--warm)}
.res-sz{font-size:9px;color:var(--text3)}
.col-add{display:flex;align-items:center;gap:6px;padding:6px;margin-top:4px;border-radius:5px;border:1px dashed var(--border);cursor:pointer;transition:all .2s;color:var(--text3);font-size:10px}
.col-add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}
.col-add svg{width:12px;height:12px}

/* ── Modal ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fi .12s}
.modal{width:100%;max-width:380px;border-radius:12px;border:1px solid var(--border-h);background:#111827;padding:20px}
.modal h3{font-size:15px;font-weight:600;margin-bottom:14px}
.modal-field{margin-bottom:12px}
.modal-field label{display:block;font-size:10px;color:var(--text2);margin-bottom:4px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}
.modal-field input{width:100%;padding:8px 11px;border-radius:7px;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-size:12px;font-family:inherit;outline:none;transition:border-color .2s}
.modal-field input:focus{border-color:rgba(52,211,153,.3)}
.modal-field input::placeholder{color:var(--text3)}
.modal-types{display:flex;gap:5px;flex-wrap:wrap}
.mt{padding:5px 10px;border-radius:6px;border:1px solid var(--border);font-size:10px;color:var(--text2);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:4px}
.mt:hover{border-color:var(--border-h);color:var(--text)}
.mt.on{border-color:rgba(52,211,153,.3);background:var(--accent-dim);color:var(--accent)}
.mt svg{width:12px;height:12px}
.modal-foot{display:flex;justify-content:flex-end;gap:6px;margin-top:16px}

/* ── Landing page updates ── */
.lp-input{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:14px;border:1px solid var(--border);background:var(--bg2);max-width:480px;margin:0 auto;transition:all .3s}
.lp-input:focus-within{border-color:rgba(52,211,153,.25);box-shadow:0 0 0 3px rgba(52,211,153,.06),0 8px 32px rgba(0,0,0,.3)}
.lp-input svg{color:var(--text3);flex-shrink:0;width:18px;height:18px}
.lp-input input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:14px;font-family:inherit}
.lp-input input::placeholder{color:var(--text3)}
.lp-send{width:30px;height:30px;border-radius:8px;border:none;background:var(--accent);color:#000;cursor:pointer;display:grid;place-items:center;opacity:.5;transition:all .2s}
.lp-send:hover{opacity:1}
.lp-note{font-size:11px;color:var(--text3);margin-top:14px}
.lp-footer{text-align:center;padding:40px 24px;border-top:1px solid var(--border);font-size:11px;color:var(--text3)}

/* ── Shared keyframes & animations ── */
@keyframes fi{from{opacity:0}to{opacity:1}}
@keyframes up{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.section{animation:up .4s ease-out both}

@media(max-width:600px){
  .input-wrap{margin:0 16px}
  .demos{grid-template-columns:1fr}
  .lp-hero h1{font-size:26px}
}
