/* Spirinova Self Learning — shared theme, derived from the AI Atlas.
   Loaded AFTER each module's own stylesheet; remaps every module's local
   variable names onto the Atlas palette so layouts stay, colours + type unify. */

:root{
  /* ---- Atlas tokens (light) ---- */
  --paper:#F2F6FC; --grid:#E6EDF7; --ink:#182640; --muted:#5C6B8A;
  --card:#FFFFFF; --border:#DEE7F3; --rail:#B9C8E2;
  --math:#3B5BDB; --math-bg:#EDF2FF; --math-line:#BAC8FF;
  --lib:#099268; --lib-bg:#E6FCF5; --lib-line:#96F2D7;
  --api:#D9480F; --api-bg:#FFF4E6; --api-line:#FFD8A8;
  --chain:#C2255C; --chain-bg:#FFF0F6; --chain-line:#FCC2D7;
  --prac:#6741D9; --prac-bg:#F3F0FF; --prac-line:#D0BFFF;
  --con:#0B7285; --con-bg:#E3FAFC; --con-line:#99E9F2;
  --prog:#9C36B5; --prog-bg:#F8F0FC; --prog-line:#EEBEFA;
  --hover:#F4F7FE; --code-bg:#EEF3FA; --sec-line:rgba(92,107,138,.3);
  --good-bg:#D9F5E7; --good-fg:#0B7050; --warn-bg:#FCF0DA; --warn-fg:#96610C;
  --bad-bg:#FBE4DC; --bad-fg:#B03A22; --hf-bg:#FFF3C4; --hf-fg:#8A5A0B;
  --flash:#FFF3C4; --shadow:rgba(24,38,64,.07);
  --side1:#0E1C3E; --side2:#16305F; --side-ink:#E9EFFC; --side-muted:#93A7D4;
  --active1:#3B5BDB; --active2:#5C7CFA;

  /* ---- Atlas type ---- */
  --f-serif:'Fraunces',Georgia,serif;
  --f-sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  /* ---- Module-local names → Atlas ---- */
  /* biotech */
  --paper-2:var(--grid); --sand:var(--api-bg); --ink-soft:var(--muted);
  --signal:var(--math); --gate:var(--chain); --sage:var(--lib);
  --rule:var(--border); --rule-soft:var(--grid);
  --disp:var(--f-serif); --body:var(--f-sans); --mono:var(--f-mono);
  /* cybersecurity */
  --ink-2:var(--muted); --trunk:var(--ink); --red:var(--chain); --blue:var(--math);
  --teal:var(--lib); --violet:var(--prac); --amber:var(--api); --slate:var(--muted);
  --display:var(--f-serif);
  /* management */
  --line:var(--border); --mark:var(--flash); --mark-deep:var(--api);
  --link:var(--math); --ok:var(--lib); --ok-bg:var(--lib-bg);
  /* appdev */
  --ink-3:var(--muted); --cobalt:var(--math); --cobalt-ink:var(--active1);
  --wash:var(--math-bg); --mint:var(--lib); --mint-wash:var(--lib-bg);
  /* systems */
  --panel:var(--card); --amber-deep:var(--api); --amber-soft:var(--api-bg);
  --blue-soft:var(--math-bg); --green:var(--lib); --green-soft:var(--lib-bg);
  --sans:var(--f-sans);
  /* homepage */
  --bg:var(--paper);
}

html[data-theme="dark"]{
  --paper:#0B1322; --grid:#121C31; --ink:#E7EDF8; --muted:#95A3C1;
  --card:#131E35; --border:#25345A; --rail:#3A4C78;
  --math:#7C9AFF; --math-bg:#1A2B58; --math-line:#34499E;
  --lib:#3DDBA9; --lib-bg:#0E2C26; --lib-line:#1E5D4C;
  --api:#FFA75C; --api-bg:#33240F; --api-line:#6B4A1B;
  --chain:#FF7BA9; --chain-bg:#3A1626; --chain-line:#7A2E4D;
  --prac:#B197FC; --prac-bg:#251A47; --prac-line:#4A357F;
  --con:#4DD4E8; --con-bg:#0E2E36; --con-line:#1D5A68;
  --prog:#E599F7; --prog-bg:#33163B; --prog-line:#6B2E77;
  --hover:#1A2742; --code-bg:#1B2740; --sec-line:rgba(149,163,193,.3);
  --good-bg:#123B2E; --good-fg:#54D6A5; --warn-bg:#3A2A10; --warn-fg:#F2B02F;
  --bad-bg:#3D1B14; --bad-fg:#FF9C82; --hf-bg:#3A300E; --hf-fg:#F5C84C;
  --flash:#2E4070; --shadow:rgba(0,0,0,.35);
  --side1:#0A142B; --side2:#102047; --side-ink:#E9EFFC; --side-muted:#8FA3CE;
  --active1:#4263EB; --active2:#5C7CFA;
  color-scheme:dark;
}

/* ---- Base: same paper + grid texture as the Atlas ---- */
body{
  background-color:var(--paper) !important;
  background-image:
    linear-gradient(var(--grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid) 1px, transparent 1px) !important;
  background-size:28px 28px !important;
  color:var(--ink) !important;
  font-family:var(--f-sans) !important;
  transition:background-color .25s ease,color .25s ease;
}
h1,h2,h3{font-family:var(--f-serif) !important; text-transform:none !important; letter-spacing:-.015em !important}
h1{font-weight:600 !important}
h2,h3{font-weight:600 !important}
h1 em{font-style:italic !important; font-weight:400 !important; color:var(--math) !important}
h4{font-family:var(--f-mono) !important}
code,pre,kbd,samp,.mono,.num,.eyebrow,.spec,.stamp,.kicker{font-family:var(--f-mono) !important}
code:not(pre code){background:var(--code-bg); color:var(--ink)}
pre{background:var(--code-bg) !important; color:var(--ink) !important; border:1px solid var(--border)}
a{color:var(--math)}
a:hover{color:var(--active2)}
::selection{background:var(--math-line); color:var(--ink)}
hr{border-color:var(--border)}
table{border-color:var(--border)}
th,td{border-color:var(--border) !important}
thead th{background:var(--grid) !important; color:var(--ink) !important}

/* Hard-coded whites/blacks in module pages, neutralised for dark mode */
html[data-theme="dark"] [style*="background:#fff"],
html[data-theme="dark"] [style*="background:#ffffff"]{background:var(--card) !important}
html[data-theme="dark"] .card,html[data-theme="dark"] .panel,html[data-theme="dark"] .box,
html[data-theme="dark"] .glance div,html[data-theme="dark"] .top,html[data-theme="dark"] .step,
html[data-theme="dark"] .milestone,html[data-theme="dark"] .term,html[data-theme="dark"] .course,
html[data-theme="dark"] .tile,html[data-theme="dark"] .note,html[data-theme="dark"] .callout,
html[data-theme="dark"] .stage,html[data-theme="dark"] .track{background-color:var(--card)}
html[data-theme="dark"] img{opacity:.9}

/* ---- Shared chrome: back link + theme toggle (injected by theme.js) ---- */
.ssl-chrome{position:fixed;top:10px;right:14px;z-index:9999;display:flex;gap:6px;align-items:center}
.ssl-chrome a,.ssl-chrome button{
  font:600 11px/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;
  color:var(--side-ink);background:linear-gradient(135deg,var(--side1),var(--side2));
  padding:8px 11px;border-radius:7px;border:1px solid var(--rail);cursor:pointer;
  box-shadow:0 4px 14px var(--shadow);transition:filter .15s ease,transform .15s ease
}
.ssl-chrome a:hover,.ssl-chrome button:hover{filter:brightness(1.15);transform:translateY(-1px);color:var(--side-ink)}
.ssl-chrome button{font-size:13px;padding:6px 9px}
@media (max-width:640px){.ssl-chrome a span{display:none}.ssl-chrome a:before{content:"←"}}

/* ---- Page-scoped fixes (ink-filled elements w/ white text, literal whites) ---- */
/* cybersecurity */
html[data-theme="dark"] body[data-module="cybersecurity"] .btn:hover,
html[data-theme="dark"] body[data-module="cybersecurity"] .fast,
html[data-theme="dark"] body[data-module="cybersecurity"] .station.jn i,
html[data-theme="dark"] body[data-module="cybersecurity"] .tag.free{color:var(--paper) !important}
html[data-theme="dark"] body[data-module="cybersecurity"] .roundel{background:var(--border); color:var(--ink) !important}
body[data-module="cybersecurity"] .topbar{background:color-mix(in srgb, var(--paper) 90%, transparent) !important}
body[data-module="cybersecurity"] .check i{background:var(--card) !important}
/* management */
html[data-theme="dark"] body[data-module="management"] .hero,
html[data-theme="dark"] body[data-module="management"] .hero *,
html[data-theme="dark"] body[data-module="management"] .term-head,
html[data-theme="dark"] body[data-module="management"] .term-head *,
html[data-theme="dark"] body[data-module="management"] .transcript,
html[data-theme="dark"] body[data-module="management"] .transcript *{color:var(--paper) !important}
html[data-theme="dark"] body[data-module="management"] .hero a,
html[data-theme="dark"] body[data-module="management"] .term-head a,
html[data-theme="dark"] body[data-module="management"] .transcript a{color:var(--active1) !important}
html[data-theme="dark"] body[data-module="management"] .transcript button{border-color:var(--paper)}
body[data-module="management"] .elective-note{background:var(--hf-bg) !important; color:var(--hf-fg) !important}
body[data-module="management"] .or{color:var(--muted) !important; opacity:.6}
/* appdev */
html[data-theme="dark"] body[data-module="appdev"] .bar a{background:var(--math); color:var(--paper) !important}
html[data-theme="dark"] body[data-module="appdev"] .parallel a{background:var(--muted)}
body[data-module="appdev"] code.commit{background:var(--code-bg) !important; color:var(--ink) !important}
/* biotech */
body[data-module="biotech"] .pnum{color:var(--muted) !important}
/* systems */
body[data-module="systems"] .lede{color:var(--muted) !important}
/* shared */
input,textarea,select{background:var(--card); color:var(--ink); border-color:var(--border)}
html[data-theme="dark"] input[type=checkbox]{accent-color:var(--math)}

/* link back to the main Spirinova site */
.backlink{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-decoration:none;margin-bottom:22px;transition:color .15s ease}
.backlink:hover,.backlink:focus-visible{color:var(--math);outline:none}
