/* ============================================================
   HSCScience — Senior Adventure (Years 11–12)
   Editorial-meets-gamified design system. Cousin of junior-adventure.css.
   Palette: deep navy ink · coral · teal · gold · plum · cream paper.
   Sophistication: assumes independent learners; less microcopy, more density.
   ============================================================ */

/* ── Tokens ── */
:root {
  /* Surfaces */
  --sa-bg:        #f5e9cf;
  --sa-bg-deep:   #ead7a8;
  --sa-bg-warm:   #fbf3df;
  --sa-panel:     #ffffff;
  --sa-soft:      #f4e2cb;
  --sa-rule:      #d8c89a;
  --sa-rule-soft: #ecdfb9;

  /* Text */
  --sa-ink:       #1e2b3a;
  --sa-ink-soft:  #485466;
  --sa-muted:     #87827a;

  /* CORAL — primary accent (warmth, energy) */
  --sa-coral:      #d44a36;
  --sa-coral-deep: #9c2a18;
  --sa-coral-soft: #f7d4c7;

  /* TEAL — knowledge / process */
  --sa-teal:       #0e6e7e;
  --sa-teal-deep:  #08505b;
  --sa-teal-soft:  #cfe5e7;

  /* GOLD — formulas / mastery / earned */
  --sa-gold:       #d6a85f;
  --sa-gold-deep:  #a87f3f;
  --sa-gold-soft:  #f5e4c3;

  /* PLUM — meta / reflection / curated */
  --sa-plum:       #6e4f7e;
  --sa-plum-deep:  #4a3458;
  --sa-plum-soft:  #ece2ef;

  /* ROSE — warm-up / approachable */
  --sa-rose:       #c47b8a;
  --sa-rose-deep:  #8a4554;
  --sa-rose-soft:  #f6dee2;

  /* Semantic */
  --sa-green:      #5d8a6c;
  --sa-green-soft: #d4e2d8;
  --sa-red:        #c4646b;
  --sa-red-soft:   #f5d8db;

  /* Type */
  --sa-display: 'Outfit', 'Inter', system-ui, sans-serif;
  --sa-body:    'Inter',  'DM Sans', system-ui, sans-serif;
  --sa-mono:    'JetBrains Mono', 'DM Mono', monospace;

  /* Radii */
  --sa-r-sm: 8px;
  --sa-r:    12px;
  --sa-r-lg: 16px;
  --sa-r-xl: 22px;

  /* Shadow — softer than junior; senior-tuned */
  --sa-shadow:       0 1px 0 var(--sa-rule), 0 8px 24px -12px rgba(30,43,58,0.15);
  --sa-shadow-tight: 0 1px 0 var(--sa-rule);
  --sa-shadow-flat:  0 0 0 1px var(--sa-rule);

  --sa-shell-pad: 28px;
}

/* ── Reset / base ── */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body.sa {
  background:
    radial-gradient(900px 380px at 90% -10%, rgba(14,110,126,0.10), transparent 60%),
    radial-gradient(700px 320px at -10% 5%, rgba(176,138,58,0.10), transparent 55%),
    linear-gradient(180deg,
      var(--sa-bg-warm) 0%,
      var(--sa-bg) 25%,
      var(--sa-bg) 55%,
      var(--sa-bg-deep) 100%);
  background-attachment: scroll;
  color: var(--sa-ink);
  font-family: var(--sa-body);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
body.sa h1, body.sa h2, body.sa h3, body.sa h4 {
  font-family: var(--sa-display);
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--sa-ink);
  margin: 0;
  line-height: 1.2;
}
body.sa p { margin: 0 0 12px; }
body.sa a { color: var(--sa-teal-deep); text-decoration: none; }
body.sa a:hover { color: var(--sa-coral-deep); text-decoration: underline; }
body.sa strong { color: var(--sa-ink); }

/* Skip link / progress bar */
.sa-skip { position: fixed; top: -48px; left: 0; background: var(--sa-ink); color: #fff; padding: 10px 18px; z-index: 100; transition: top 0.2s; border-radius: 0 0 var(--sa-r) 0; }
.sa-skip:focus { top: 0; }
.sa-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; background: rgba(30,43,58,0.06); z-index: 50; }
.sa-progress-fill { height: 100%; background: linear-gradient(90deg, var(--sa-coral), var(--sa-gold), var(--sa-teal)); width: 0%; transition: width 0.15s ease; }

/* ── Page shell ── */
.sa-shell { max-width: 1200px; margin: 0 auto; }

/* ═══════════════════════════════════════════════════════════
   TOPBAR — gamification surfaces
═══════════════════════════════════════════════════════════ */
.sa-topbar {
  padding: 14px var(--sa-shell-pad);
  display: flex; align-items: center; gap: 14px;
  background: var(--sa-panel);
  border-bottom: 1px solid var(--sa-rule);
  flex-wrap: wrap; position: sticky; top: 0; z-index: 40;
}
.sa-brand { font-family: var(--sa-display); font-size: 17px; font-weight: 700; letter-spacing: -0.01em; color: var(--sa-ink); display: flex; align-items: center; gap: 8px; }
.sa-brand-mark { width: 30px; height: 30px; background: linear-gradient(135deg, var(--sa-coral), var(--sa-plum)); border-radius: 8px; display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 13px; font-family: var(--sa-display); }
.sa-brand-sub { font-family: var(--sa-body); font-size: 11px; font-weight: 500; color: var(--sa-muted); margin-left: 8px; padding-left: 8px; border-left: 1px solid var(--sa-rule); letter-spacing: 0.04em; text-transform: uppercase; }
.sa-topbar-spacer { flex: 1; }

/* Daily goal ring (centrepiece pill) */
.sa-goal {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 12px 5px 5px; background: var(--sa-bg-warm);
  border: 1px solid var(--sa-rule); border-radius: 99px;
  cursor: pointer; transition: border-color .15s ease;
}
.sa-goal:hover { border-color: var(--sa-coral); }
.sa-goal-ring { position: relative; width: 30px; height: 30px; flex-shrink: 0; }
.sa-goal-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.sa-goal-ring-track { fill: none; stroke: var(--sa-rule); stroke-width: 4; }
.sa-goal-ring-fill  { fill: none; stroke: var(--sa-coral); stroke-width: 4; stroke-linecap: round; transition: stroke-dasharray .4s ease; }
.sa-goal.hit .sa-goal-ring-fill { stroke: var(--sa-green); }
.sa-goal-text { font-size: 12px; font-weight: 700; color: var(--sa-ink); }
.sa-goal-text small { display: block; font-size: 9px; font-weight: 600; color: var(--sa-muted); letter-spacing: 0.08em; text-transform: uppercase; }

/* Pills */
.sa-pill { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 99px; font-weight: 700; font-size: 12px; line-height: 1; font-family: var(--sa-body); cursor: default; }
.sa-pill-streak { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-pill-shield { background: var(--sa-teal-soft); color: var(--sa-teal-deep); }
.sa-pill-due    { background: var(--sa-plum-soft); color: var(--sa-plum-deep); cursor: pointer; }
.sa-pill-coins  { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }
.sa-pill-xp     { background: var(--sa-rose-soft); color: var(--sa-rose-deep); }
.sa-pill svg { width: 13px; height: 13px; }

.sa-avatar { width: 34px; height: 34px; border-radius: 99px; background: var(--sa-ink); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 12px; flex-shrink: 0; font-family: var(--sa-display); }

/* Weak-spots strip — sits below topbar */
.sa-weakspots-strip {
  padding: 10px var(--sa-shell-pad);
  background: var(--sa-bg-warm);
  border-bottom: 1px solid var(--sa-rule-soft);
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  font-size: 12.5px; color: var(--sa-ink-soft);
}
.sa-weakspots-strip .ws-label {
  font-size: 10px; font-weight: 700; color: var(--sa-coral-deep);
  letter-spacing: 0.14em; text-transform: uppercase;
}
.sa-weakspots-strip .ws-spots { display: flex; gap: 6px; flex-wrap: wrap; }
.sa-ws-chip {
  padding: 4px 10px; background: #fff; border: 1px solid var(--sa-rule);
  border-radius: 99px; font-size: 12px; font-weight: 600; color: var(--sa-ink);
  cursor: pointer; transition: all .15s ease;
}
.sa-ws-chip:hover { border-color: var(--sa-coral); color: var(--sa-coral-deep); }
.sa-ws-chip strong { color: var(--sa-coral-deep); margin-right: 4px; font-weight: 700; }
.sa-ws-empty { color: var(--sa-muted); font-style: italic; font-size: 12px; }

/* Daily drop toast (variable reward) */
.sa-drop-toast {
  position: fixed; top: 80px; right: 20px; z-index: 90;
  padding: 14px 20px; background: linear-gradient(135deg, var(--sa-gold), var(--sa-coral));
  color: #fff; border-radius: var(--sa-r); box-shadow: 0 12px 28px -10px rgba(0,0,0,0.35);
  display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 14px;
  animation: sa-pop-in .35s cubic-bezier(.5,1.5,.5,1) both;
}
.sa-drop-toast.rare { background: linear-gradient(135deg, var(--sa-plum), var(--sa-coral)); }
@keyframes sa-pop-in { from { transform: translateY(-12px) scale(.85); opacity: 0; } }

/* ═══════════════════════════════════════════════════════════
   HERO — bold gradient, hook + quest ring inside
═══════════════════════════════════════════════════════════ */
.sa-hero {
  margin: 20px var(--sa-shell-pad) 0;
  padding: 36px 38px 32px;
  background:
    radial-gradient(820px 320px at 88% 12%, rgba(245,228,195,0.55), transparent 60%),
    radial-gradient(540px 280px at 8% 90%, rgba(110,79,126,0.30), transparent 65%),
    linear-gradient(135deg, var(--sa-plum) 0%, var(--sa-coral) 55%, var(--sa-gold) 110%);
  border-radius: var(--sa-r-xl);
  position: relative; overflow: hidden;
  color: #fff;
  box-shadow: 0 24px 48px -16px rgba(30,20,58,0.55), 0 1px 0 rgba(255,255,255,0.18) inset;
}
/* Gradient enhancement — top-left light flare + bottom depth vignette */
.sa-hero::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(ellipse 70% 55% at 8% 0%, rgba(255,255,255,0.30) 0%, transparent 60%),
    radial-gradient(ellipse 45% 35% at 95% 100%, rgba(255,255,255,0.12) 0%, transparent 55%),
    linear-gradient(175deg, transparent 40%, rgba(0,0,0,0.22) 100%);
}
.sa-hero[data-bg-image] { background-size: cover; background-position: center; }
.sa-hero-inner {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: 1fr auto; gap: 36px; align-items: center;
}
.sa-hero-badges { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.sa-hero-badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 12px; background: rgba(255,255,255,0.18); border: 1px solid rgba(255,255,255,0.35);
  border-radius: 99px; font-size: 11px; font-weight: 600; color: #fff;
  letter-spacing: 0.02em; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.sa-hero-badge.gold  { background: var(--sa-gold); border-color: var(--sa-gold-deep); color: #2a1a05; }
.sa-hero-badge.teal  { background: var(--sa-teal); border-color: var(--sa-teal-deep); color: #fff; }
.sa-hero-badge.coral { background: rgba(255,255,255,0.95); border-color: rgba(255,255,255,1); color: var(--sa-coral-deep); }
/* body.sa h1 has higher specificity (0,1,2) — override it here */
body.sa .sa-hero h1, .sa-hero h1 {
  font-family: var(--sa-display); font-weight: 700; font-size: 42px;
  color: #fff; margin: 0 0 12px; letter-spacing: -0.02em; line-height: 1.05;
  text-shadow: 0 1px 2px rgba(78,52,88,0.28);
}
.sa-hero-sub, .sa-hero-desc {
  font-size: 16px; color: rgba(255,255,255,0.92); line-height: 1.5; margin: 0;
  max-width: 620px;
}
.sa-hero-sub strong, .sa-hero-desc strong { color: #fff; }
.sa-hero-art {
  width: 180px; height: 180px; flex-shrink: 0;
  display: grid; place-items: center; position: relative;
}
.sa-hero-art svg, .sa-hero-art img { width: 100%; height: 100%; filter: drop-shadow(0 4px 14px rgba(78,52,88,0.3)); }

/* Hook + Quest ring row, inside the hero */
.sa-hero-ring-row {
  position: relative; z-index: 1;
  margin-top: 20px;
  display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center;
}
.sa-hook {
  padding: 14px 18px;
  background: rgba(255,255,255,0.95);
  border: none; border-radius: var(--sa-r);
  display: grid; grid-template-columns: 36px 1fr auto; gap: 14px; align-items: center;
  box-shadow: 0 6px 18px -8px rgba(78,52,88,0.4);
}
.sa-hook-icon {
  width: 36px; height: 36px; border-radius: 99px; background: var(--sa-coral);
  color: #fff; display: grid; place-items: center; flex-shrink: 0;
}
.sa-hook-icon svg { width: 18px; height: 18px; stroke: #fff; fill: none; stroke-width: 2; }
.sa-hook-body {
  font-size: 14px; color: var(--sa-ink); line-height: 1.5;
}
.sa-hook-body strong { color: var(--sa-coral-deep); font-weight: 700; }
.sa-hook-cta {
  padding: 7px 14px; background: var(--sa-ink); color: var(--sa-bg-warm);
  border: none; border-radius: var(--sa-r-sm); font-weight: 600; font-size: 12px;
  cursor: pointer; font-family: var(--sa-body); white-space: nowrap;
}
.sa-hook-cta:hover { background: var(--sa-coral-deep); }
.sa-hook-cta svg { width: 11px; height: 11px; stroke: currentColor; fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.05em; display: inline-block; flex-shrink: 0; }

/* Quest ring (lesson progress) */
.sa-quest-ring {
  width: 84px; height: 84px; position: relative; flex-shrink: 0;
}
.sa-quest-ring svg { transform: rotate(-90deg); }
.sa-quest-ring .qr-track { fill: none; stroke: rgba(255,255,255,0.25); stroke-width: 6; }
.sa-quest-ring .qr-fill  { fill: none; stroke: var(--sa-gold); stroke-width: 6; stroke-linecap: round; transition: stroke-dasharray .4s ease; }
.sa-quest-ring .qr-text {
  position: absolute; inset: 0; display: grid; place-items: center; color: #fff;
  font-family: var(--sa-display); font-weight: 700;
}
.sa-quest-ring .qr-text strong { font-size: 17px; line-height: 1; display: block; }
.sa-quest-ring .qr-text small { font-size: 8px; letter-spacing: 0.18em; opacity: 0.8; margin-top: 2px; display: block; }

/* ═══════════════════════════════════════════════════════════
   TABS (Learn / Practice / Review)
═══════════════════════════════════════════════════════════ */
.sa-tabs {
  margin: 18px var(--sa-shell-pad) 0;
  display: flex; gap: 4px; padding: 4px; background: var(--sa-panel);
  border: 1px solid var(--sa-rule); border-radius: var(--sa-r);
}
.sa-tab {
  flex: 1; padding: 10px 16px; background: transparent; border: none;
  border-radius: var(--sa-r-sm); cursor: pointer; font-family: var(--sa-body);
  display: flex; align-items: center; gap: 10px; color: var(--sa-ink-soft);
  font-weight: 600; transition: all .15s ease;
}
.sa-tab:hover { background: var(--sa-bg-warm); }
.sa-tab.active { background: var(--sa-ink); color: var(--sa-bg-warm); }
.sa-tab-icon-wrap { width: 24px; height: 24px; border-radius: 6px; background: var(--sa-bg-warm); display: grid; place-items: center; flex-shrink: 0; }
.sa-tab.active .sa-tab-icon-wrap { background: rgba(255,255,255,0.12); }
.sa-tab-icon-wrap svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2; }
.sa-tab-label { font-size: 14px; font-weight: 700; }
.sa-tab-count { font-size: 11px; opacity: 0.7; }

/* ═══════════════════════════════════════════════════════════
   PHASE SHELL
═══════════════════════════════════════════════════════════ */
.sa-phase { display: none; padding: 0 var(--sa-shell-pad); }
.sa-phase.active { display: block; }

/* ═══════════════════════════════════════════════════════════
   CARD — core content container
═══════════════════════════════════════════════════════════ */
.sa-card {
  margin: 18px 0;
  background: var(--sa-panel); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-lg); padding: 24px 26px;
  box-shadow: var(--sa-shadow-tight);
}
.sa-card-head {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 16px;
}
.sa-card-num {
  width: 30px; height: 30px; border-radius: 8px;
  background: linear-gradient(180deg, #3a4252 0%, #1e2b3a 100%);
  color: #fff;
  display: grid; place-items: center; font-weight: 700; font-size: 14px;
  font-family: var(--sa-display); flex-shrink: 0;
  box-shadow: 0 1px 0 rgba(255,255,255,0.15) inset, 0 1px 3px rgba(30,43,58,0.25);
}
/* Keyed modifiers — use only when the badge meaningfully tags a sub-system
   (e.g. recall/intentions/key-terms/apply). For plain content cards, leave
   unmodified so the badge reads as a neutral section number. */
.sa-card-num.teal { background: linear-gradient(180deg, var(--sa-teal), var(--sa-teal-deep)); }
.sa-card-num.gold { background: linear-gradient(180deg, var(--sa-gold), var(--sa-gold-deep)); }
.sa-card-num.plum { background: linear-gradient(180deg, var(--sa-plum), var(--sa-plum-deep)); }
.sa-card-num.rose { background: linear-gradient(180deg, #b48956, #8a6a3a); }
.sa-card-num svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; display: block; flex-shrink: 0; }
.sa-xp-tag svg   { width: 11px; height: 11px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.1em; display: inline-block; flex-shrink: 0; }
.sa-card-title {
  font-family: var(--sa-display); font-weight: 600; font-size: 22px;
  color: var(--sa-ink); flex: 1;
}
.sa-xp-tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 99px; font-size: 10px;
  font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
}
.sa-xp-tag.coral { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-xp-tag.teal  { background: var(--sa-teal-soft);  color: var(--sa-teal-deep); }
.sa-xp-tag.gold  { background: var(--sa-gold-soft);  color: var(--sa-gold-deep); }
.sa-xp-tag.plum  { background: var(--sa-plum-soft);  color: var(--sa-plum-deep); }

/* Inline highlights */
.sa-mark-coral { background: linear-gradient(transparent 60%, rgba(212,74,54,0.18) 60%); padding: 0 2px; color: var(--sa-coral-deep); font-weight: 600; }
.sa-mark-gold  { background: linear-gradient(transparent 60%, rgba(214,168,95,0.45) 60%); padding: 0 2px; color: var(--sa-gold-deep); font-weight: 600; }
.sa-mark-teal  { background: linear-gradient(transparent 60%, rgba(14,110,126,0.18) 60%); padding: 0 2px; color: var(--sa-teal-deep); font-weight: 600; }
.sa-mark-plum  { background: linear-gradient(transparent 60%, rgba(110,79,126,0.22) 60%); padding: 0 2px; color: var(--sa-plum-deep); font-weight: 600; }
.sa-mark-rose  { background: linear-gradient(transparent 60%, rgba(196,123,138,0.22) 60%); padding: 0 2px; color: var(--sa-rose-deep); font-weight: 600; }

/* Term-coding chips: small inline pill that names a part with a colour
   e.g. <span class="sa-chip-rose">term</span> */
.sa-chip-coral, .sa-chip-teal, .sa-chip-gold, .sa-chip-plum, .sa-chip-rose {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 600;
  font-family: var(--sa-mono); margin: 0 1px;
}
.sa-chip-coral { background: var(--sa-coral-soft); color: var(--sa-coral-deep); border: 1px solid var(--sa-coral); }
.sa-chip-teal  { background: var(--sa-teal-soft);  color: var(--sa-teal-deep);  border: 1px solid var(--sa-teal); }
.sa-chip-gold  { background: var(--sa-gold-soft);  color: var(--sa-gold-deep);  border: 1px solid var(--sa-gold); }
.sa-chip-plum  { background: var(--sa-plum-soft);  color: var(--sa-plum-deep);  border: 1px solid var(--sa-plum); }
.sa-chip-rose  { background: var(--sa-rose-soft);  color: var(--sa-rose-deep);  border: 1px solid var(--sa-rose); }

/* Chromatic card backgrounds — give cards a subtle tinted fill. */
.sa-card.tint-rose { background: linear-gradient(180deg, var(--sa-rose-soft) 0%, #fdf5f6 60%, var(--sa-panel) 95%); border-color: rgba(196,123,138,0.35); }
.sa-card.tint-teal { background: linear-gradient(180deg, var(--sa-teal-soft) 0%, var(--sa-panel) 80%); border-color: rgba(14,110,126,0.30); }
.sa-card.tint-gold { background: linear-gradient(180deg, var(--sa-gold-soft) 0%, var(--sa-panel) 80%); border-color: rgba(214,168,95,0.40); }
.sa-card.tint-plum { background: linear-gradient(180deg, var(--sa-plum-soft) 0%, var(--sa-panel) 80%); border-color: rgba(110,79,126,0.30); }

/* Card num as icon glyph (instead of a number) */
.sa-card-num.icon { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-card-num.icon.teal { background: var(--sa-teal-soft); color: var(--sa-teal-deep); }
.sa-card-num.icon.gold { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }
.sa-card-num.icon.plum { background: var(--sa-plum-soft); color: var(--sa-plum-deep); }
.sa-card-num.icon.rose { background: var(--sa-rose-soft); color: var(--sa-rose-deep); }
.sa-card-num.icon svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 2; }

/* Bare <h3> inside a content card — subsection divider style.
   Targets only direct-child h3 so it doesn't bleed into sa-tip, sa-worked etc. */
.sa-card > h3 {
  font-family: var(--sa-display);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--sa-teal-deep);
  border-left: 3px solid var(--sa-teal);
  padding: 5px 10px;
  margin: 20px 0 8px;
  background: var(--sa-teal-soft);
  border-radius: 0 6px 6px 0;
}

/* +XP-to-read chip (small reward indicator) */
.sa-xp-tag svg { width: 11px; height: 11px; stroke: currentColor; fill: none; stroke-width: 2.2; margin-right: -2px; }

/* ═══════════════════════════════════════════════════════════
   ANCHOR PATTERN
   3-column layout: words / centerpiece (svg or visual) / equation
═══════════════════════════════════════════════════════════ */
.sa-anchor {
  margin: 16px 0 18px;
  padding: 22px 24px;
  background: var(--sa-bg-warm);
  border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r);
  display: grid;
  grid-template-columns: 1.3fr auto 1fr;
  gap: 28px; align-items: center;
}
.sa-anchor-words { font-size: 14.5px; color: var(--sa-ink); line-height: 1.55; }
.sa-anchor-words p { margin: 0; }
.sa-anchor-svg { display: grid; place-items: center; }
.sa-anchor-svg svg, .sa-anchor-svg img { display: block; max-width: 200px; max-height: 160px; }
.sa-anchor-eq {
  background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r-sm);
  padding: 16px 20px; text-align: center; font-size: 22px; color: var(--sa-ink);
  box-shadow: var(--sa-shadow-tight);
}

/* ═══════════════════════════════════════════════════════════
   TIP ROW — 3-up tinted cards (icon + title + desc)
═══════════════════════════════════════════════════════════ */
.sa-tip-row {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
  margin: 16px 0 4px;
}
.sa-tip {
  padding: 16px 16px 14px; border-radius: var(--sa-r);
  border: 1px solid;
  display: flex; flex-direction: column; gap: 8px;
}
.sa-tip-icon {
  width: 30px; height: 30px; border-radius: 8px;
  display: grid; place-items: center; flex-shrink: 0;
}
.sa-tip-icon svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2; }
.sa-tip-head  { font-family: var(--sa-display); font-weight: 700; font-size: 14px; color: var(--sa-ink); line-height: 1.3; margin-bottom: 4px; }
.sa-tip-title { font-family: var(--sa-display); font-weight: 700; font-size: 14px; color: var(--sa-ink); line-height: 1.3; }
.sa-tip-desc  { font-size: 13px; color: var(--sa-ink-soft); line-height: 1.5; }

.sa-tip.rose  { background: var(--sa-rose-soft);  border-color: rgba(196,123,138,0.45); }
.sa-tip.rose  .sa-tip-icon { background: var(--sa-rose); color: #fff; }
.sa-tip.plum  { background: var(--sa-plum-soft);  border-color: rgba(110,79,126,0.40); }
.sa-tip.plum  .sa-tip-icon { background: var(--sa-plum); color: #fff; }
.sa-tip.gold  { background: var(--sa-gold-soft);  border-color: rgba(214,168,95,0.50); }
.sa-tip.gold  .sa-tip-icon { background: var(--sa-gold); color: #fff; }
.sa-tip.teal  { background: var(--sa-teal-soft);  border-color: rgba(14,110,126,0.35); }
.sa-tip.teal  .sa-tip-icon { background: var(--sa-teal); color: #fff; }
.sa-tip.coral { background: var(--sa-coral-soft); border-color: rgba(212,74,54,0.40); }
.sa-tip.coral .sa-tip-icon { background: var(--sa-coral); color: #fff; }

/* ═══════════════════════════════════════════════════════════
   SCIENCE-TRACK INLINE ACTIVITIES
   Use these BETWEEN content cards in science lessons to maintain
   a content-activity-content rhythm. Lighter than full sa-card.
═══════════════════════════════════════════════════════════ */

/* INLINE CHECK — small one-question check between content chunks */
.sa-inline-check {
  margin: 14px 0 18px;
  padding: 16px 20px;
  background: var(--sa-bg-warm);
  border: 1px solid var(--sa-rule);
  border-left: 4px solid var(--sa-coral);
  border-radius: var(--sa-r);
}
.sa-inline-check.teal { border-left-color: var(--sa-teal); }
.sa-inline-check.gold { border-left-color: var(--sa-gold); }
.sa-inline-check.plum { border-left-color: var(--sa-plum); }
.sa-inline-check-head {
  display: flex; align-items: center; gap: 10px; margin-bottom: 10px;
}
.sa-inline-check-tag {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--sa-coral-deep); padding: 3px 10px; background: var(--sa-coral-soft);
  border-radius: 99px;
}
.sa-inline-check.teal .sa-inline-check-tag { color: var(--sa-teal-deep); background: var(--sa-teal-soft); }
.sa-inline-check.gold .sa-inline-check-tag { color: var(--sa-gold-deep); background: var(--sa-gold-soft); }
.sa-inline-check.plum .sa-inline-check-tag { color: var(--sa-plum-deep); background: var(--sa-plum-soft); }
.sa-inline-check-q {
  font-family: var(--sa-display); font-weight: 600; font-size: 15px;
  color: var(--sa-ink); margin: 0 0 12px; line-height: 1.4;
}
.sa-inline-check-options { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.sa-inline-check-opt {
  padding: 8px 14px; background: var(--sa-panel); border: 1.5px solid var(--sa-rule);
  border-radius: var(--sa-r-sm); font-family: var(--sa-body); font-size: 13px;
  color: var(--sa-ink); cursor: pointer; font-weight: 500; transition: all .15s ease;
}
.sa-inline-check-opt:hover { border-color: var(--sa-coral); }
.sa-inline-check-opt.correct { background: var(--sa-green-soft); border-color: var(--sa-green); color: #2f4234; font-weight: 600; }
.sa-inline-check-opt.wrong   { background: var(--sa-red-soft);   border-color: var(--sa-red);   color: #5b261c; }
.sa-inline-check-feedback {
  margin-top: 10px; padding: 10px 14px; border-radius: var(--sa-r-sm);
  font-size: 13px; line-height: 1.5; display: none;
}
.sa-inline-check-feedback.show { display: block; }
.sa-inline-check-feedback.correct { background: var(--sa-green-soft); color: #2f4234; border-left: 3px solid var(--sa-green); }
.sa-inline-check-feedback.wrong   { background: var(--sa-red-soft);   color: #5b261c; border-left: 3px solid var(--sa-red); }

/* PREDICT-OBSERVE-EXPLAIN — three-stage card */
.sa-poe {
  margin: 18px 0; background: var(--sa-panel); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-lg); overflow: hidden; box-shadow: var(--sa-shadow-tight);
}
.sa-poe-stages {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  background: var(--sa-bg-warm); border-bottom: 1px solid var(--sa-rule);
}
.sa-poe-stage {
  padding: 12px 14px; text-align: center; font-family: var(--sa-display);
  font-weight: 700; font-size: 12px; color: var(--sa-muted);
  border-right: 1px solid var(--sa-rule); display: flex; align-items: center;
  justify-content: center; gap: 6px;
}
.sa-poe-stage:last-child { border-right: none; }
.sa-poe-stage svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2; }
.sa-poe-stage.active { background: var(--sa-coral); color: #fff; }
.sa-poe-stage.done   { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-poe-scenario {
  padding: 18px 22px; background: var(--sa-bg-warm);
  border-bottom: 1px solid var(--sa-rule);
}
.sa-poe-scenario .scenario-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-coral-deep);
  margin-bottom: 6px; text-transform: uppercase;
}
.sa-poe-scenario p { font-family: var(--sa-display); font-size: 16px; color: var(--sa-ink); margin: 0; line-height: 1.45; }
.sa-poe-body { padding: 18px 22px; }
.sa-poe-step { display: none; }
.sa-poe-step.active { display: block; }
.sa-poe-step .step-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-coral-deep);
  margin-bottom: 8px; text-transform: uppercase;
}
.sa-poe-step textarea {
  width: 100%; min-height: 70px; padding: 12px 14px; border: 1.5px solid var(--sa-rule);
  border-radius: var(--sa-r-sm); font-family: var(--sa-body); font-size: 13.5px;
  color: var(--sa-ink); resize: vertical; outline: none; background: var(--sa-bg-warm);
}
.sa-poe-step textarea:focus { border-color: var(--sa-coral); background: var(--sa-panel); }
.sa-poe-observation {
  padding: 14px 16px; background: var(--sa-ink); color: var(--sa-bg-warm);
  border-radius: var(--sa-r-sm); margin: 6px 0;
}
.sa-poe-observation .obs-label { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-gold); margin-bottom: 6px; }
.sa-poe-observation p { margin: 0; font-size: 14px; line-height: 1.5; }
.sa-poe-prediction-recall {
  margin-top: 8px; padding: 10px 14px; background: var(--sa-bg-warm); border-radius: var(--sa-r-sm);
  font-size: 12.5px; color: var(--sa-ink-soft);
}
.sa-poe-prediction-recall strong { color: var(--sa-ink); }
.sa-poe-btn {
  margin-top: 10px; padding: 9px 18px; background: var(--sa-coral); color: #fff;
  border: none; border-radius: var(--sa-r-sm); font-family: var(--sa-body);
  font-weight: 700; font-size: 13px; cursor: pointer;
}
.sa-poe-btn:hover { background: var(--sa-coral-deep); }
.sa-poe-btn:disabled { background: var(--sa-rule); cursor: not-allowed; }

/* CLASSIFY — sort items into bins (drag or click) */
.sa-classify {
  margin: 16px 0; padding: 18px 20px;
  background: var(--sa-bg-warm); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r);
}
.sa-classify-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.sa-classify-tag {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--sa-teal-deep); padding: 3px 10px; background: var(--sa-teal-soft); border-radius: 99px;
}
.sa-classify-q { font-family: var(--sa-display); font-weight: 600; font-size: 14.5px; margin: 0; color: var(--sa-ink); }
.sa-classify-pool {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 12px; background: var(--sa-panel); border: 1.5px dashed var(--sa-rule);
  border-radius: var(--sa-r-sm); margin-bottom: 12px; min-height: 56px;
}
.sa-classify-item {
  padding: 7px 14px; background: var(--sa-panel); border: 1.5px solid var(--sa-rule);
  border-radius: 99px; font-size: 13px; color: var(--sa-ink); cursor: pointer;
  font-weight: 500; transition: all .15s ease;
  -webkit-user-select: none; -moz-user-select: none; user-select: none;
}
.sa-classify-item:hover { border-color: var(--sa-coral); }
.sa-classify-item.placed { opacity: 0.55; cursor: default; }
.sa-classify-bins {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px;
}
.sa-classify-bin {
  padding: 14px; background: var(--sa-panel); border: 2px dashed var(--sa-rule);
  border-radius: var(--sa-r); min-height: 110px;
}
.sa-classify-bin .bin-label {
  font-family: var(--sa-display); font-weight: 700; font-size: 13px;
  color: var(--sa-ink); margin-bottom: 8px; text-align: center;
  padding: 6px; border-radius: var(--sa-r-sm);
}
.sa-classify-bin.coral .bin-label { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-classify-bin.teal  .bin-label { background: var(--sa-teal-soft);  color: var(--sa-teal-deep); }
.sa-classify-bin.gold  .bin-label { background: var(--sa-gold-soft);  color: var(--sa-gold-deep); }
.sa-classify-bin.plum  .bin-label { background: var(--sa-plum-soft);  color: var(--sa-plum-deep); }
.sa-classify-bin .bin-items { display: flex; flex-wrap: wrap; gap: 6px; min-height: 32px; }
.sa-classify-bin .bin-items .sa-classify-item { font-size: 12px; padding: 5px 10px; }
.sa-classify-feedback {
  margin-top: 12px; padding: 10px 14px; border-radius: var(--sa-r-sm);
  font-size: 13px; display: none; align-items: center; gap: 8px;
}
.sa-classify-feedback.show { display: flex; }
.sa-classify-feedback.correct { background: var(--sa-green-soft); color: #2f4234; border-left: 3px solid var(--sa-green); }
.sa-classify-feedback.wrong   { background: var(--sa-red-soft);   color: #5b261c; border-left: 3px solid var(--sa-red); }
.sa-classify-actions { display: flex; gap: 8px; margin-top: 12px; }
.sa-classify-btn {
  padding: 8px 14px; background: var(--sa-ink); color: var(--sa-bg-warm);
  border: none; border-radius: var(--sa-r-sm); font-family: var(--sa-body);
  font-weight: 600; font-size: 12px; cursor: pointer;
}
.sa-classify-btn.secondary { background: transparent; color: var(--sa-ink); border: 1.5px solid var(--sa-rule); }
.sa-classify-btn:hover { background: var(--sa-coral-deep); color: #fff; }

/* ═══════════════════════════════════════════════════════════
   PARTS-OF-WHOLE — coloured term boxes (e.g. for variable / coefficient)
═══════════════════════════════════════════════════════════ */
.sa-parts {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin: 14px 0;
}
.sa-part {
  padding: 14px 16px; border-radius: var(--sa-r-sm);
  border: 1px solid var(--sa-rule);
  border-top: 4px solid var(--sa-coral);
  background: var(--sa-panel);
}
.sa-part.coral { border-top-color: var(--sa-coral); }
.sa-part.teal  { border-top-color: var(--sa-teal); }
.sa-part.gold  { border-top-color: var(--sa-gold); }
.sa-part.plum  { border-top-color: var(--sa-plum); }
.sa-part.rose  { border-top-color: var(--sa-rose); }
.sa-part-icon {
  width: 26px; height: 26px; border-radius: 6px;
  background: var(--sa-bg-warm); border: 1px solid var(--sa-rule);
  display: grid; place-items: center; margin-bottom: 8px;
}
.sa-part-icon svg { width: 14px; height: 14px; stroke: var(--sa-ink-soft); fill: none; stroke-width: 2; }
.sa-part-name { font-family: var(--sa-display); font-weight: 700; font-size: 14px; color: var(--sa-ink); margin-bottom: 4px; }
.sa-part-desc { font-size: 12.5px; color: var(--sa-ink-soft); line-height: 1.5; }

/* Section label divider */
.sa-section-label {
  margin: 28px 0 14px; padding: 8px 14px;
  background: linear-gradient(90deg, var(--sa-bg-warm), transparent);
  border-left: 3px solid var(--sa-coral);
  font-family: var(--sa-display); font-weight: 600; font-size: 14px;
  color: var(--sa-ink); letter-spacing: 0.04em;
}
.sa-section-label.teal { border-left-color: var(--sa-teal); }
.sa-section-label.gold { border-left-color: var(--sa-gold); }
.sa-section-label.plum { border-left-color: var(--sa-plum); }

/* ═══════════════════════════════════════════════════════════
   INTENTIONS (3-up)
═══════════════════════════════════════════════════════════ */
.sa-intentions {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
  margin: 14px 0;
}
.sa-intention {
  padding: 18px 20px; border-radius: var(--sa-r);
  border: 1px solid;
}
.sa-intention.plum { background: var(--sa-plum-soft); border-color: rgba(110,79,126,0.35); }
.sa-intention.rose { background: var(--sa-rose-soft); border-color: rgba(196,123,138,0.35); }
.sa-intention.gold { background: var(--sa-gold-soft); border-color: rgba(214,168,95,0.4); }
.sa-intention .ic-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  margin-bottom: 8px;
}
.sa-intention.plum .ic-label { color: var(--sa-plum-deep); }
.sa-intention.rose .ic-label { color: var(--sa-rose-deep); }
.sa-intention.gold .ic-label { color: var(--sa-gold-deep); }
.sa-intention h4 { font-size: 16px; margin: 0 0 8px; font-weight: 600; }
.sa-intention ul { margin: 0; padding-left: 18px; font-size: 13px; color: var(--sa-ink-soft); line-height: 1.55; }
.sa-intention li { margin-bottom: 4px; }

/* ═══════════════════════════════════════════════════════════
   KEY TERMS
═══════════════════════════════════════════════════════════ */
.sa-kt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; margin: 12px 0; }
.sa-kt {
  padding: 14px 16px; background: var(--sa-bg-warm); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-sm); border-left: 3px solid var(--sa-teal);
}
.sa-kt-term { display: block; font-family: var(--sa-display); font-weight: 600; font-size: 15px; color: var(--sa-ink); margin-bottom: 4px; }
.sa-kt-def  { font-size: 13px; color: var(--sa-ink-soft); line-height: 1.5; }

/* ═══════════════════════════════════════════════════════════
   FORMULAS — anchor card
═══════════════════════════════════════════════════════════ */
.sa-formula-box {
  padding: 18px 22px; background: var(--sa-bg-warm); border: 1px solid var(--sa-gold);
  border-radius: var(--sa-r); margin: 12px 0; text-align: center;
}
.sa-formula-box .label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-gold-deep);
  text-transform: uppercase; margin-bottom: 10px;
}
.sa-formula-box .eq { font-size: 22px; color: var(--sa-ink); }
.sa-formula-side {
  padding: 14px 16px; background: var(--sa-panel); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-sm);
}
.sa-formula-side .mini-tag { font-size: 11px; color: var(--sa-muted); font-weight: 600; letter-spacing: 0.04em; margin-bottom: 6px; }
.sa-formula-side .side-eq { font-size: 16px; color: var(--sa-ink); }
.sa-formula-side .side-note { font-size: 12px; color: var(--sa-ink-soft); margin-top: 4px; line-height: 1.5; }

/* ═══════════════════════════════════════════════════════════
   WORKED EXAMPLES — stepwise reveal
═══════════════════════════════════════════════════════════ */
.sa-worked {
  margin: 16px 0; background: var(--sa-panel); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-lg); overflow: hidden; border-top: 4px solid var(--sa-coral);
}
.sa-worked.teal { border-top-color: var(--sa-teal); }
.sa-worked.gold { border-top-color: var(--sa-gold); }
.sa-worked.rose { border-top-color: var(--sa-rose); }
.sa-worked-problem {
  padding: 16px 22px; background: var(--sa-bg-warm); border-bottom: 1px solid var(--sa-rule);
}
.sa-worked.teal .sa-worked-problem { background: var(--sa-teal-soft); }
.sa-worked.gold .sa-worked-problem { background: var(--sa-gold-soft); }
.sa-worked.rose .sa-worked-problem { background: var(--sa-rose-soft); }
.sa-worked-problem .we-tag { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-coral-deep); margin-bottom: 4px; }
.sa-worked.teal .we-tag { color: var(--sa-teal-deep); }
.sa-worked.gold .we-tag { color: var(--sa-gold-deep); }
.sa-worked.rose .we-tag { color: var(--sa-rose-deep); }
.sa-worked-problem .we-text { font-family: var(--sa-display); font-size: 17px; font-weight: 500; margin: 0; line-height: 1.4; }
.sa-worked-steps { padding: 6px 0; }
.sa-worked-step { display: grid; grid-template-columns: 36px 1fr 1.2fr; gap: 14px; padding: 14px 22px; }
.sa-worked-step[hidden] { display: none; }
.sa-worked-step + .sa-worked-step { border-top: 1px dashed var(--sa-rule); }
.sa-worked-step .step-num { width: 26px; height: 26px; border-radius: 99px; background: var(--sa-coral); color: #fff; display: grid; place-items: center; font-size: 12px; font-weight: 700; }
.sa-worked.teal .step-num { background: var(--sa-teal); }
.sa-worked.gold .step-num { background: var(--sa-gold); }
.sa-worked.rose .step-num { background: var(--sa-rose); }
.sa-worked-step .step-math { font-size: 15px; color: var(--sa-ink); }
.sa-worked-step .step-why  { font-size: 13px; color: var(--sa-muted); font-style: italic; line-height: 1.5; }
.sa-worked-footer {
  padding: 12px 22px; background: var(--sa-bg-warm); border-top: 1px solid var(--sa-rule);
  display: flex; justify-content: space-between; align-items: center;
}
.sa-reveal-btn {
  padding: 7px 14px; background: var(--sa-ink); color: var(--sa-bg-warm);
  border: none; border-radius: var(--sa-r-sm); font-family: var(--sa-body);
  font-weight: 600; font-size: 12px; cursor: pointer; letter-spacing: 0.02em;
}
.sa-reveal-btn:hover { background: var(--sa-coral-deep); }
.sa-step-progress { font-size: 12px; color: var(--sa-muted); }
.sa-worked-complete { font-size: 12px; color: var(--sa-green); font-weight: 600; display: flex; gap: 6px; align-items: center; }

/* ═══════════════════════════════════════════════════════════
   TRAPS / COMMON ERRORS
═══════════════════════════════════════════════════════════ */
.sa-traps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 12px 0; }
.sa-trap {
  padding: 16px 18px; background: var(--sa-panel); border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r); border-left: 4px solid var(--sa-coral);
}
.sa-trap.rose { border-left-color: var(--sa-rose); background: linear-gradient(to right, var(--sa-rose-soft) 0%, var(--sa-panel) 35%); }
.sa-trap.gold { border-left-color: var(--sa-gold); background: linear-gradient(to right, var(--sa-gold-soft) 0%, var(--sa-panel) 35%); }
.sa-trap.teal { border-left-color: var(--sa-teal); background: linear-gradient(to right, var(--sa-teal-soft) 0%, var(--sa-panel) 35%); }
.sa-trap-tag   { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; color: var(--sa-coral-deep); text-transform: uppercase; margin-bottom: 6px; }
.sa-trap.rose .sa-trap-tag { color: var(--sa-rose-deep); }
.sa-trap.gold .sa-trap-tag { color: var(--sa-gold-deep); }
.sa-trap.teal .sa-trap-tag { color: var(--sa-teal-deep); }
.sa-trap-title { font-family: var(--sa-display); font-weight: 600; font-size: 15px; margin-bottom: 6px; }
.sa-trap-detail{ font-size: 13px; color: var(--sa-ink-soft); line-height: 1.55; }

/* ═══════════════════════════════════════════════════════════
   CALLOUT
═══════════════════════════════════════════════════════════ */
.sa-callout {
  padding: 16px 20px; background: var(--sa-teal-soft); border-left: 4px solid var(--sa-teal);
  border-radius: var(--sa-r); margin: 12px 0; font-size: 14px; line-height: 1.55;
}
.sa-callout strong { color: var(--sa-teal-deep); font-weight: 700; }

/* Legacy callout aliases — used by sa.html files ported from lesson.css format */
.callout {
  padding: 14px 18px; border-left: 4px solid var(--sa-teal); border-radius: var(--sa-r);
  margin: 12px 0; font-size: 13.5px; line-height: 1.55;
  background: var(--sa-teal-soft);
}
.callout-sky   { background: var(--sa-teal-soft);  border-left-color: var(--sa-teal); }
.callout-peach, .callout-chemistry { background: var(--sa-rose-soft);  border-left-color: var(--sa-rose); }
.callout-mint  { background: #e8f5e9; border-left-color: #4caf50; }
.callout-gold, .callout-amber { background: var(--sa-gold-soft); border-left-color: var(--sa-gold); }

/* ═══════════════════════════════════════════════════════════
   TEXTAREA / TEXT INPUTS
═══════════════════════════════════════════════════════════ */
.sa-textarea {
  width: 100%; min-height: 80px; padding: 14px 16px; border-radius: var(--sa-r);
  border: 1.5px solid var(--sa-rule); background: var(--sa-panel);
  font-family: var(--sa-body); font-size: 14px; color: var(--sa-ink);
  resize: vertical; outline: none; transition: border-color .15s ease;
}
.sa-textarea:focus { border-color: var(--sa-coral); }
.sa-textwrap { position: relative; }
.sa-autosave { position: absolute; bottom: 8px; right: 14px; font-size: 10px; color: var(--sa-muted); letter-spacing: 0.04em; }
.sa-warmup-done {
  display: block; margin-top: 10px; padding: 9px 20px;
  background: linear-gradient(150deg, var(--sa-coral) 0%, var(--sa-coral-deep) 100%);
  color: #fff; border: none; border-radius: 10px;
  font-family: var(--sa-display); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: opacity 0.15s, transform 0.15s;
  box-shadow: 0 2px 8px -3px rgba(156,42,24,0.45);
}
.sa-warmup-done:hover:not(:disabled) { transform: translateY(-1px); opacity: 0.92; }
.sa-warmup-done:disabled { opacity: 0.35; cursor: not-allowed; transform: none; }
.sa-warmup-done.claimed {
  background: linear-gradient(150deg, #5d8a6c 0%, #3a5e47 100%);
  box-shadow: 0 2px 8px -3px rgba(60,120,80,0.4);
  cursor: default;
}

/* ═══════════════════════════════════════════════════════════
   MASTERY RING (used in module index pages too)
═══════════════════════════════════════════════════════════ */
.sa-mastery-ring { display: inline-block; width: 36px; height: 36px; position: relative; }
.sa-mastery-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.sa-mastery-ring .mr-track { fill: none; stroke: var(--sa-rule); stroke-width: 4; }
.sa-mastery-ring .mr-fill  { fill: none; stroke: var(--sa-coral); stroke-width: 4; stroke-linecap: round; transition: stroke-dasharray .4s ease; }
.sa-mastery-ring .mr-fill.weak { stroke: var(--sa-coral); }
.sa-mastery-ring .mr-fill.mid  { stroke: var(--sa-gold); }
.sa-mastery-ring .mr-fill.strong { stroke: var(--sa-green); }
.sa-mastery-ring .mr-text { position: absolute; inset: 0; display: grid; place-items: center; font-size: 10px; font-weight: 700; color: var(--sa-ink); font-family: var(--sa-mono); }

/* Soft gate notice */
.sa-soft-gate {
  margin: 12px 0; padding: 12px 16px;
  background: var(--sa-gold-soft); border: 1px solid var(--sa-gold);
  border-radius: var(--sa-r-sm);
  display: flex; align-items: center; gap: 10px;
  font-size: 13px; color: var(--sa-gold-deep);
}
.sa-soft-gate strong { color: var(--sa-ink); }

/* ═══════════════════════════════════════════════════════════
   DRILL ROWS (Practice)
═══════════════════════════════════════════════════════════ */
.sa-drill { background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); overflow: hidden; }
.sa-drill-row { padding: 14px 18px; display: grid; grid-template-columns: 30px 1fr; gap: 14px; align-items: start; }
.sa-drill-row + .sa-drill-row { border-top: 1px solid var(--sa-rule-soft); }
.sa-drill-num { width: 26px; height: 26px; border-radius: 99px; background: var(--sa-bg-warm); border: 1.5px solid var(--sa-rule); display: grid; place-items: center; font-size: 12px; font-weight: 700; color: var(--sa-ink-soft); }
.sa-drill-q   { font-family: var(--sa-display); font-size: 15px; font-weight: 500; margin: 0 0 8px; color: var(--sa-ink); }
.sa-drill-input { width: 100%; padding: 8px 12px; border-radius: var(--sa-r-sm); border: 1.5px solid var(--sa-rule); background: var(--sa-bg-warm); font-family: var(--sa-mono); font-size: 13px; color: var(--sa-ink); resize: vertical; min-height: 38px; outline: none; }
.sa-drill-input:focus { border-color: var(--sa-coral); background: var(--sa-panel); }
/* drill answer reveal — .sa-ans / .sa-ans-toggle / .sa-ans-panel */
.sa-ans { margin-top: 6px; }
.sa-ans-toggle {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 14px; border-radius: 999px;
  background: var(--sa-bg-warm); border: 1.5px solid var(--sa-rule);
  font-family: var(--sa-display); font-size: 12px; font-weight: 700;
  color: var(--sa-ink-soft); cursor: pointer; -webkit-user-select: none; user-select: none;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.sa-ans-toggle::before { content: "▶"; font-size: 8px; transition: transform 0.2s ease; display: inline-block; }
.sa-ans:hover .sa-ans-toggle { border-color: var(--sa-coral, #e8909c); color: var(--sa-ink); }
.sa-ans.open .sa-ans-toggle { border-color: var(--sa-coral, #e8909c); color: var(--sa-ink); }
.sa-ans.open .sa-ans-toggle::before { transform: rotate(90deg); }
.sa-ans-panel {
  display: none;
  margin-top: 8px; padding: 10px 14px; border-radius: 10px;
  background: #ede9fe; border-left: 3px solid #7c3aed;
  font-size: 13.5px; color: var(--sa-ink); line-height: 1.6;
}
.sa-ans.open .sa-ans-panel { display: block; }

/* ═══════════════════════════════════════════════════════════
   QUESTION-BANK (.mc-option, .bloom-badge, etc) — themed for sa.
   Mirrors what we built for Studio.
═══════════════════════════════════════════════════════════ */
body.sa .question-bank-note { padding: 10px 14px; background: var(--sa-bg-warm); border-radius: var(--sa-r-sm); margin-bottom: 12px; font-size: 13px; color: var(--sa-ink-soft); }
body.sa .question-bank-note strong { display: block; font-family: var(--sa-display); font-size: 14px; color: var(--sa-ink); margin-bottom: 2px; font-weight: 600; }
body.sa .hsc-qb-question, body.sa .mc-question { padding: 18px; background: var(--sa-bg-warm); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); margin-bottom: 12px; }
body.sa .hsc-qb-question > p, body.sa .mc-question > p { font-family: var(--sa-display); font-size: 16px; color: var(--sa-ink); margin: 0 0 12px; line-height: 1.45; }
body.sa .question-meta { display: flex; gap: 8px; margin-bottom: 10px; align-items: center; }
body.sa .bloom-badge, body.sa .band-badge { font-size: 10px; padding: 3px 10px; border-radius: 99px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; font-family: var(--sa-body); }
body.sa .bloom-badge.bloom-remember, body.sa .bloom-badge.bloom-understand { background: var(--sa-green-soft); color: #2f4234; }
body.sa .bloom-badge.bloom-apply { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }
body.sa .bloom-badge.bloom-analyse, body.sa .bloom-badge.bloom-analyze, body.sa .bloom-badge.bloom-evaluate, body.sa .bloom-badge.bloom-create { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
body.sa .band-badge { background: var(--sa-panel); color: var(--sa-ink-soft); border: 1px solid var(--sa-rule); }
body.sa .mc-option {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 11px 14px; margin-bottom: 6px;
  background: linear-gradient(180deg, rgba(255,250,228,0.85) 0%, rgba(252,242,210,0.65) 100%);
  border: 1.5px solid var(--sa-rule);
  border-radius: var(--sa-r-sm); cursor: pointer; text-align: left;
  font-family: var(--sa-body);
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
body.sa .mc-option:hover:not(.disabled) {
  border-color: var(--sa-gold-deep);
  background: linear-gradient(180deg, rgba(255,247,219,0.95) 0%, rgba(248,234,196,0.85) 100%);
  transform: translateX(2px);
}
body.sa .mc-option.disabled { cursor: default; }
body.sa .mc-letter { width: 26px; height: 26px; border-radius: 6px; background: var(--sa-bg-warm); border: 1.5px solid var(--sa-rule); display: grid; place-items: center; font-size: 12px; font-weight: 700; color: var(--sa-ink-soft); flex-shrink: 0; }
body.sa .mc-text { font-size: 14px; color: var(--sa-ink); flex: 1; }
body.sa .mc-option.correct { background: var(--sa-green-soft); border-color: var(--sa-green); }
body.sa .mc-option.correct .mc-letter { background: var(--sa-green); border-color: var(--sa-green); color: #fff; }
body.sa .mc-option.incorrect { background: var(--sa-red-soft); border-color: var(--sa-red); }
body.sa .mc-option.incorrect .mc-letter { background: var(--sa-red); border-color: var(--sa-red); color: #fff; }
body.sa .mc-feedback { margin-top: 10px; padding: 10px 14px; border-radius: var(--sa-r-sm); font-size: 13px; line-height: 1.5; display: none; }
body.sa .mc-feedback.correct-msg { display: block; background: var(--sa-green-soft); color: #2f4234; border-left: 3px solid var(--sa-green); }
body.sa .mc-feedback.incorrect-msg { display: block; background: var(--sa-red-soft); color: #5b261c; border-left: 3px solid var(--sa-red); }
body.sa .confidence-row { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--sa-rule); flex-wrap: wrap; }
body.sa .confidence-label { font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--sa-muted); font-weight: 600; }
body.sa .confidence-chip { padding: 4px 12px; background: var(--sa-panel); border: 1.5px solid var(--sa-rule); border-radius: 99px; font-family: var(--sa-body); font-size: 12px; color: var(--sa-ink-soft); cursor: pointer; font-weight: 600; }
body.sa .confidence-chip:hover { border-color: var(--sa-ink-soft); color: var(--sa-ink); }
body.sa .confidence-chip.selected { background: var(--sa-ink); border-color: var(--sa-ink); color: var(--sa-bg-warm); }

/* ═══════════════════════════════════════════════════════════
   COMPLETION + LESSON NAV
═══════════════════════════════════════════════════════════ */
.sa-complete { margin: 24px 0; padding: 16px 20px; background: var(--sa-panel); border: 1.5px solid var(--sa-rule); border-radius: var(--sa-r); display: flex; align-items: center; gap: 14px; cursor: pointer; transition: all .15s ease; }
.sa-complete:hover { border-color: var(--sa-coral); }
.sa-complete.done { border-color: var(--sa-green); background: var(--sa-green-soft); }
.sa-complete-box { width: 24px; height: 24px; border-radius: 6px; border: 2px solid var(--sa-rule); background: var(--sa-panel); flex-shrink: 0; display: grid; place-items: center; }
.sa-complete.done .sa-complete-box { background: var(--sa-green); border-color: var(--sa-green); }
.sa-complete.done .sa-complete-box::after { content: '✓'; font-size: 16px; font-weight: 700; color: #fff; }
.sa-complete h4 { font-size: 16px; margin: 0; }
.sa-complete p  { font-size: 12px; color: var(--sa-muted); margin: 2px 0 0; }

.sa-lesson-nav { display: flex; gap: 12px; margin: 20px 0; }
.sa-lesson-nav a { flex: 1; padding: 14px 18px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); color: var(--sa-ink); font-weight: 600; font-size: 13px; transition: border-color .15s ease; }
.sa-lesson-nav a:hover { border-color: var(--sa-ink); text-decoration: none; }
.sa-lesson-nav a.next { text-align: right; }
.sa-meta-links { margin: 14px 0 30px; text-align: center; font-size: 12px; color: var(--sa-muted); }
.sa-meta-links a { color: var(--sa-ink-soft); }

/* Toast (XP earned, drops) */
.sa-toast { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); padding: 12px 22px; background: var(--sa-ink); color: var(--sa-bg-warm); border-radius: 99px; font-weight: 700; font-size: 14px; box-shadow: 0 12px 32px -10px rgba(0,0,0,0.4); z-index: 90; animation: sa-toast-in .3s ease both; }
@keyframes sa-toast-in { from { transform: translate(-50%, 12px); opacity: 0; } }

/* Phase footer continue */
.sa-phase-footer { margin: 30px 0; display: flex; justify-content: center; }
.sa-next-btn { padding: 14px 26px; background: var(--sa-coral); color: #fff; border: none; border-radius: var(--sa-r); font-weight: 700; font-size: 14px; cursor: pointer; }
.sa-next-btn:hover { background: var(--sa-coral-deep); }

/* Diagram wrap */
.sa-diagram { background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); padding: 14px; margin: 12px 0; }
.sa-diagram svg, .sa-diagram img { display: block; max-width: 100%; margin: 0 auto; border-radius: var(--sa-r-sm); }
.sa-diagram .caption { margin-top: 8px; text-align: center; font-size: 12px; color: var(--sa-muted); font-style: italic; }

/* ═══════════════════════════════════════════════════════════
   KIMI-COMPAT — rules for class names used by the Kimi-generated
   lesson pipeline (Module 3 L5-15 and all of Module 4). These
   parallel the M2 gold-standard classes but use slightly different
   names. Built on the same design tokens — visually equivalent.
   Do not remove unless the Kimi templates are migrated to use
   the M2 class names.
═══════════════════════════════════════════════════════════ */

/* Shell / progress / skip-link aliases */
.sa-skip-link { position: fixed; top: -48px; left: 0; background: var(--sa-ink); color: #fff; padding: 10px 18px; z-index: 100; transition: top 0.2s; border-radius: 0 0 var(--sa-r) 0; }
.sa-skip-link:focus { top: 0; }
.sa-progress-bar { height: 100%; background: linear-gradient(90deg, var(--sa-coral), var(--sa-gold), var(--sa-teal)); width: 0%; transition: width 0.15s ease; }

/* Topbar / breadcrumb (Kimi layout) */
.sa-shell > .sa-topbar { padding: 12px var(--sa-shell-pad); display: flex; align-items: center; gap: 12px; background: var(--sa-panel); border-bottom: 1px solid var(--sa-rule); position: sticky; top: 0; z-index: 40; }
.sa-logo { font-family: var(--sa-display); font-weight: 700; font-size: 17px; letter-spacing: -0.01em; color: var(--sa-ink) !important; text-decoration: none !important; }
.sa-breadcrumb { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--sa-ink-soft); flex-wrap: wrap; }
.sa-breadcrumb a { color: var(--sa-teal-deep) !important; text-decoration: none !important; }
.sa-breadcrumb a:hover { color: var(--sa-coral-deep) !important; text-decoration: underline !important; }
.sa-breadcrumb-sep { color: var(--sa-muted); }
.sa-breadcrumb-current { color: var(--sa-ink); font-weight: 600; }

/* Weakspots strip (Kimi layout) */
.sa-weakspots { background: var(--sa-bg-warm); border-bottom: 1px solid var(--sa-rule); padding: 10px var(--sa-shell-pad); }
.sa-weakspots-inner { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; max-width: 1200px; margin: 0 auto; }
.sa-weakspots-label { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sa-muted); }
.sa-weakspot-pill { display: inline-block; padding: 5px 11px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: 999px; font-size: 12px; font-weight: 600; color: var(--sa-ink-soft); }

/* Hero (Kimi simple variant — gradient banner with quest ring) */
.sa-shell > header.sa-hero {
  margin: 18px var(--sa-shell-pad);
  padding: 26px 30px;
  border-radius: var(--sa-r-xl);
  background: linear-gradient(135deg, var(--sa-plum-deep) 0%, var(--sa-coral-deep) 55%, var(--sa-gold-deep) 100%);
  color: #fff;
  position: relative;
  display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: center;
  box-shadow: var(--sa-shadow);
}
.sa-hero-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.sa-hero-tag, .sa-hero-lesson { display: inline-block; padding: 4px 10px; background: rgba(255,255,255,0.18); border: 1px solid rgba(255,255,255,0.32); border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #fff; }
.sa-hero-title { font-family: var(--sa-display); font-size: 32px; font-weight: 700; color: #fff !important; margin: 0 0 10px; line-height: 1.15; }
.sa-hero-sub { color: rgba(255,255,255,0.92); font-size: 15px; line-height: 1.55; margin: 0; max-width: 62ch; }

/* Quest ring (Kimi variant — inside-hero, percent label) */
.sa-shell > header.sa-hero .sa-quest-ring { width: 92px; height: 92px; position: relative; display: flex; align-items: center; justify-content: center; }
.sa-shell > header.sa-hero .sa-quest-ring svg { width: 92px; height: 92px; transform: rotate(-90deg); }
.sa-ring-bg { fill: none; stroke: rgba(255,255,255,0.22); stroke-width: 8; }
.sa-ring-fill { fill: none; stroke: var(--sa-gold); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 0 264; transition: stroke-dasharray 0.4s ease; }
.sa-quest-ring-label { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--sa-display); font-weight: 700; color: #fff; font-size: 16px; }
.sa-quest-ring-pct { font-size: 18px; }

/* Phase tabs (Kimi variant) */
.sa-phase-tabs { display: flex; gap: 6px; margin: 0 var(--sa-shell-pad) 16px; padding: 6px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r-lg); box-shadow: var(--sa-shadow-tight); }
.sa-phase-tab { flex: 1; padding: 10px 14px; background: transparent; border: 0; border-radius: var(--sa-r); font-family: var(--sa-display); font-size: 14px; font-weight: 600; color: var(--sa-ink-soft); cursor: pointer; transition: background 0.15s, color 0.15s; }
.sa-phase-tab:hover { background: var(--sa-bg-warm); }
.sa-phase-tab.active { background: var(--sa-ink); color: var(--sa-bg-warm); }

/* Card lead / concept paragraph */
.sa-card-lead { font-size: 15px; color: var(--sa-ink-soft); margin: 0 0 12px; line-height: 1.6; }
.sa-concept { font-size: 14.5px; color: var(--sa-ink); line-height: 1.65; margin: 0 0 14px; }

/* Two-moves card (the giant-SVG bug) */
.sa-two-moves { display: flex; flex-direction: column; gap: 14px; }
.sa-move { display: grid; grid-template-columns: 44px 1fr; gap: 14px; align-items: start; padding: 14px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); }
.sa-move-icon { width: 44px; height: 44px; border-radius: 50%; background: var(--sa-gold-soft); display: flex; align-items: center; justify-content: center; color: var(--sa-gold-deep); }
.sa-move-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; }
.sa-move-text { display: flex; flex-direction: column; gap: 4px; }
.sa-move-title { font-family: var(--sa-display); font-weight: 600; font-size: 15px; color: var(--sa-ink); }
.sa-move-desc { font-size: 14px; color: var(--sa-ink-soft); line-height: 1.55; }
.sa-move-tip-row { display: flex; gap: 8px; flex-wrap: wrap; padding: 10px 14px; background: var(--sa-bg-warm); border: 1px dashed var(--sa-rule); border-radius: var(--sa-r); }
.sa-move-tip-row .sa-tip { display: inline-block; padding: 4px 10px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: 999px; font-size: 12px; color: var(--sa-ink-soft); }

/* Key terms (Kimi variant) */
.sa-terms { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; }
.sa-term { padding: 12px 14px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); display: flex; flex-direction: column; gap: 4px; }
.sa-term-word { font-family: var(--sa-display); font-weight: 700; font-size: 14px; color: var(--sa-teal-deep); }
.sa-term-def { font-size: 13px; color: var(--sa-ink-soft); line-height: 1.55; }

/* Formula box (Kimi variant) */
.sa-formula-box .sa-formula-title { font-family: var(--sa-display); font-weight: 700; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sa-muted); margin-bottom: 6px; }
.sa-formula-box .sa-formula-math { font-size: 18px; padding: 10px 0; text-align: center; color: var(--sa-ink); }
.sa-formula-box .sa-formula-note { font-size: 12.5px; color: var(--sa-ink-soft); text-align: center; margin-top: 4px; font-style: italic; }

/* Worked example (Kimi variant — header/title/meta/body wrapper) */
.sa-worked-header { display: flex; justify-content: space-between; align-items: start; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--sa-rule); }
.sa-worked-title { font-family: var(--sa-display); font-weight: 600; font-size: 15px; color: var(--sa-ink); line-height: 1.4; flex: 1; min-width: 0; }
.sa-worked-meta { display: flex; gap: 6px; flex-shrink: 0; }
.sa-worked-body { display: flex; flex-direction: column; gap: 10px; }

/* Badges (band + bloom) */
.sa-badge { display: inline-block; padding: 3px 9px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
.sa-badge.band-3 { background: var(--sa-teal-soft); color: var(--sa-teal-deep); }
.sa-badge.band-4 { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }
.sa-badge.band-5 { background: var(--sa-coral-soft); color: var(--sa-coral-deep); }
.sa-badge.bloom-apply { background: var(--sa-plum-soft); color: var(--sa-plum-deep); }
.sa-badge.bloom-analyse { background: var(--sa-rose-soft); color: var(--sa-rose-deep); }
.sa-badge.bloom-remember { background: var(--sa-bg-deep); color: var(--sa-ink-soft); }
.sa-badge.bloom-understand { background: var(--sa-green-soft); color: var(--sa-green); }
.sa-badge.bloom-evaluate { background: var(--sa-red-soft); color: var(--sa-red); }
.sa-badge.bloom-create { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }

/* Short answer (Kimi variant) */
.sa-saq { padding: 16px 18px; background: var(--sa-bg-warm); border: 1px solid var(--sa-rule); border-radius: var(--sa-r); margin-bottom: 12px; }
.sa-saq h4 { font-family: var(--sa-display); font-weight: 600; font-size: 15px; margin: 6px 0 8px; }
.sa-saq-meta { display: flex; gap: 6px; margin-bottom: 4px; }
.sa-saq p { font-size: 14.5px; margin: 0 0 10px; }
.sa-saq-answer { min-height: 100px; }
.sa-saq-details { margin-top: 10px; }
.sa-saq-details summary { cursor: pointer; font-family: var(--sa-display); font-weight: 600; font-size: 13px; color: var(--sa-teal-deep); display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; background: var(--sa-panel); border: 1px solid var(--sa-rule); border-radius: var(--sa-r-sm); list-style: none; }
.sa-saq-details summary::-webkit-details-marker { display: none; }
.sa-saq-details summary svg { fill: none; stroke: currentColor; stroke-width: 2; }
.sa-saq-details[open] summary { background: var(--sa-teal-soft); }
.sa-saq-answer-block { margin-top: 10px; padding: 12px 14px; background: var(--sa-panel); border-left: 3px solid var(--sa-teal); border-radius: var(--sa-r-sm); font-size: 13.5px; line-height: 1.65; color: var(--sa-ink-soft); }
.sa-saq-answer-block p { margin: 0 0 6px; }
.sa-saq .marks { font-size: 11px; color: var(--sa-muted); margin-left: 6px; }

/* Mode-toggle buttons */
.sa-mode-btn { padding: 7px 14px; background: var(--sa-bg-warm); color: var(--sa-ink-soft); border: 1.5px solid var(--sa-rule); border-radius: var(--sa-r-sm); font-weight: 600; font-size: 12px; cursor: pointer; }
.sa-mode-btn:hover { background: var(--sa-panel); color: var(--sa-ink); }

/* Complete checkbox (Kimi label-wrapper variant) */
.sa-complete-toggle { display: flex; align-items: center; gap: 10px; cursor: pointer; padding: 10px 4px; font-size: 14px; color: var(--sa-ink); font-weight: 600; }
.sa-complete-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.sa-complete-toggle .sa-complete-box { width: 26px; height: 26px; border: 2px solid var(--sa-rule); border-radius: 6px; background: var(--sa-panel); display: flex; align-items: center; justify-content: center; transition: background 0.15s, border-color 0.15s; }
.sa-complete-toggle input:checked + .sa-complete-box { background: var(--sa-teal); border-color: var(--sa-teal-deep); }
.sa-complete-check { width: 16px; height: 16px; fill: none; stroke: #fff; stroke-width: 2.5; opacity: 0; transition: opacity 0.15s; }
.sa-complete-toggle input:checked + .sa-complete-box .sa-complete-check { opacity: 1; }

/* Card num colour variants used by Kimi (rose/teal/gold/plum suffixed onto sa-card-num) */
.sa-card-num.rose { background: var(--sa-rose-soft); color: var(--sa-rose-deep); }
.sa-card-num.teal { background: var(--sa-teal-soft); color: var(--sa-teal-deep); }
.sa-card-num.gold { background: var(--sa-gold-soft); color: var(--sa-gold-deep); }
.sa-card-num.plum { background: var(--sa-plum-soft); color: var(--sa-plum-deep); }

/* Intentions when rendered as <ul> (Kimi) instead of grid of intention blocks (M2) */
ul.sa-intentions { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
ul.sa-intentions li { padding: 10px 14px; background: var(--sa-panel); border-left: 3px solid var(--sa-teal); border-radius: var(--sa-r-sm); font-size: 14px; color: var(--sa-ink); }

/* ── Card prose typography (p, ul, ol inside .sa-card) ── */
.sa-card > p {
  font-size: 15px;
  color: var(--sa-ink-soft);
  line-height: 1.65;
  margin: 0 0 12px;
}
.sa-card > ul,
.sa-card > ol {
  font-size: 15px;
  color: var(--sa-ink-soft);
  line-height: 1.65;
  margin: 0 0 12px;
  padding-left: 22px;
}
.sa-card > ul li,
.sa-card > ol li {
  margin-bottom: 6px;
}
.conceptual-first {
  font-size: 15px;
  color: var(--sa-teal-deep);
  font-style: italic;
  line-height: 1.7;
  margin-bottom: 14px;
  padding-left: 14px;
  border-left: 3px solid var(--sa-teal);
}

/* ── Data table wrapper (used in content cards across subjects) ── */
.data-table-wrap,
.table-wrap {
  overflow-x: auto;
  border: 1px solid var(--sa-rule);
  border-radius: var(--sa-r-sm, 8px);
  margin: 16px 0;
}
.data-table-wrap table,
.table-wrap table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.data-table-wrap th,
.table-wrap th {
  background: var(--sa-bg-deep);
  color: var(--sa-ink);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 10px 14px;
  border-bottom: 2px solid var(--sa-rule);
  text-align: left;
}
.data-table-wrap td,
.table-wrap td {
  padding: 9px 14px;
  font-size: 14px;
  color: var(--sa-ink-soft);
  border-bottom: 1px solid var(--sa-rule-soft);
}
.data-table-wrap tr:last-child td,
.table-wrap tr:last-child td {
  border-bottom: none;
}
.data-table-wrap tr:nth-child(even) td,
.table-wrap tr:nth-child(even) td {
  background: rgba(0,0,0,0.025);
}

/* ── Responsive ── */
@media (max-width: 900px) {
  :root { --sa-shell-pad: 16px; }
  .sa-hero { padding: 24px 22px; }
  .sa-hero h1 { font-size: 28px; }
  .sa-hero-title { font-size: 24px; }
  .sa-hero-grid { grid-template-columns: 1fr; gap: 16px; }
  .sa-hero-art { width: 100px; height: 100px; }
  .sa-tab-count { display: none; }
  .sa-intentions, .sa-traps { grid-template-columns: 1fr; }
  .sa-worked-step { grid-template-columns: 28px 1fr; }
  .sa-worked-step .step-why { grid-column: 1 / -1; padding-left: 42px; font-size: 12px; }
  .sa-weakspots-strip { font-size: 12px; }
  .sa-brand-sub { display: none; }
  .sa-shell > header.sa-hero { grid-template-columns: 1fr; }
  .sa-shell > header.sa-hero .sa-quest-ring { justify-self: start; }
  .sa-move { grid-template-columns: 36px 1fr; }
  .sa-move-icon { width: 36px; height: 36px; }
}

/* ── Syllabus Outcomes Reference ─────────────────────────── */
.sa-outcomes-ref {
  margin: 0.5rem 0 0;
  border: none;
}
.sa-outcomes-ref summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.65);
  padding: 0.25rem 0.55rem 0.25rem 0;
  border-radius: 4px;
  -webkit-user-select: none;
  user-select: none;
  transition: color 0.15s;
}
.sa-outcomes-ref summary::-webkit-details-marker { display: none; }
.sa-outcomes-ref summary::before {
  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 6px solid rgba(255,255,255,0.55);
  transition: transform 0.2s;
  flex-shrink: 0;
}
.sa-outcomes-ref[open] summary::before { transform: rotate(90deg); }
.sa-outcomes-ref summary:hover { color: rgba(255,255,255,0.9); }
.sa-outcomes-body {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.55rem 0 0.25rem;
}
.sa-outcome-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.22);
  border-radius: 20px;
  padding: 0.2rem 0.6rem;
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(255,255,255,0.9);
  white-space: nowrap;
  cursor: default;
  position: relative;
}
.sa-outcome-pill[title]:hover::after {
  content: attr(title);
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: rgba(15,23,42,0.96);
  color: #fff;
  border-radius: 6px;
  padding: 0.35rem 0.6rem;
  font-size: 0.7rem;
  font-weight: 400;
  white-space: normal;
  max-width: 280px;
  text-align: left;
  box-shadow: 0 4px 16px rgba(0,0,0,0.35);
  z-index: 100;
  pointer-events: none;
}
