/* ELCI — Electronics Lifecycle Care Institute
   Design tokens: solder-mask green, copper trace, gold pad, board paper. */
/* Self-hosted fonts (SIL Open Font Licence; see assets/fonts). No third-party font requests. */
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/lora-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Lora';font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/lora-latin-400-italic.woff2) format('woff2')}
@font-face{font-family:'Lora';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/lora-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Lora';font-style:italic;font-weight:600;font-display:swap;src:url(../fonts/lora-latin-600-italic.woff2) format('woff2')}
@font-face{font-family:'Lora';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/lora-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-sans-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ibm-plex-sans-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/ibm-plex-sans-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/ibm-plex-sans-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-600-normal.woff2) format('woff2')}
:root{
  --mask:#034219;      /* solder-mask green, primary dark */
  --board:#0B5A2A;     /* lighter board green */
  --trace:#2F7A3E;     /* copper-trace green */
  --spark:#F85703;     /* brand orange: borders, bars, accents */
  --go:#C24100;        /* action orange: button and banner fills (5.2:1 with white) */
  --spark-ink:#B83D00; /* orange text on light grounds (5.2:1) */
  --pad:#FEB43A;       /* gold pad */
  --paper:#F3F6F1;     /* green-tinted paper */
  --sheet:#FFFFFF;
  --ink:#14231A;
  --ink-2:#4A5B50;
  --rule:#D6E0D3;
  --wash:#E5EFE1;
  --serif:'Lora',Georgia,'Times New Roman',serif;
  --sans:'IBM Plex Sans','Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --wrap:1180px;
  --r-s:6px; --r-m:12px; --r-l:22px;
  --step--1:clamp(.84rem,.82rem + .1vw,.9rem);
  --step-0:clamp(1rem,.97rem + .15vw,1.08rem);
  --step-1:clamp(1.2rem,1.1rem + .45vw,1.45rem);
  --step-2:clamp(1.5rem,1.3rem + .9vw,2rem);
  --step-3:clamp(1.9rem,1.5rem + 1.8vw,2.9rem);
  --step-4:clamp(2.4rem,1.7rem + 3.2vw,4.3rem);
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--step-0);line-height:1.62}
img,svg{max-width:100%;display:block}
a{color:var(--board);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--spark-ink)}
:focus-visible{outline:3px solid var(--pad);outline-offset:3px;border-radius:4px}
h1,h2,h3,h4{font-family:var(--serif);color:var(--mask);line-height:1.15;margin:0 0 .5em;font-weight:700;letter-spacing:-.01em}
h1{font-size:var(--step-4)} h2{font-size:var(--step-3)} h3{font-size:var(--step-1)} h4{font-size:var(--step-0)}
p{margin:0 0 1em;max-width:68ch}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.skip{position:absolute;left:-999px;top:8px;background:var(--pad);color:var(--mask);padding:8px 14px;border-radius:var(--r-s);z-index:99}
.skip:focus{left:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- header ---------- */
.site-head{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--rule)}
.site-head .wrap{display:flex;align-items:center;gap:24px;height:72px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:none}
.brand img{height:46px;width:auto}
.nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.nav a{font-size:.95rem;color:var(--ink);text-decoration:none;padding:8px 11px;border-radius:var(--r-s)}
.nav a:hover{background:var(--wash);color:var(--mask)}
.nav a[aria-current="page"]{color:var(--mask);font-weight:600;box-shadow:inset 0 -2px 0 var(--spark);border-radius:0}
.nav .more{position:relative}
.nav .more>button{font:inherit;font-size:.95rem;background:none;border:0;color:var(--ink);padding:8px 11px;border-radius:var(--r-s);cursor:pointer}
.nav .more>button:hover{background:var(--wash)}
.nav .menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:8px;min-width:230px;display:none;box-shadow:0 18px 40px -18px rgba(3,66,25,.35)}
.nav .more.open .menu{display:block}
.nav .menu a{display:block;padding:9px 12px}
.btn{display:inline-flex;align-items:center;gap:8px;font:600 .98rem/1 var(--sans);padding:13px 20px;border-radius:999px;border:2px solid transparent;text-decoration:none;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.btn-go{background:var(--go);color:#fff}
.btn-go:hover{background:#A33600;color:#fff}
.btn-line{border-color:currentColor;color:var(--mask);background:transparent}
.btn-line:hover{background:var(--mask);color:#fff;border-color:var(--mask)}
.on-dark .btn-line{color:#fff}
.on-dark .btn-line:hover{background:#fff;color:var(--mask);border-color:#fff}
.head-cta{margin-left:8px}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--rule);border-radius:var(--r-s);width:44px;height:44px;cursor:pointer}
.burger span{display:block;width:20px;height:2px;background:var(--mask);margin:4px auto}
@media (max-width:1060px){
  .burger{display:block}
  .nav{position:fixed;inset:72px 0 0 0;background:var(--paper);flex-direction:column;align-items:stretch;padding:16px clamp(16px,4vw,40px) 40px;gap:0;overflow:auto;display:none}
  .nav.open{display:flex}
  .nav a,.nav .more>button{padding:14px 4px;border-bottom:1px solid var(--rule);border-radius:0;font-size:1.05rem;text-align:left}
  .nav .more .menu{position:static;display:block;border:0;box-shadow:none;padding:0 0 0 14px;background:none}
  .nav .more>button{display:none}
  .head-cta{margin:18px 0 0;justify-content:center}
}

/* ---------- sections ---------- */
section{padding:clamp(56px,8vw,104px) 0}
.on-dark{background:var(--mask);color:#E3EEDF}
.on-dark h1,.on-dark h2,.on-dark h3{color:#fff}
.on-dark a{color:var(--pad)}
.on-dark p{color:#CFE0CA}
.pcb{position:relative;overflow:hidden}
.pcb::before{content:"";position:absolute;inset:0;background-image:url("../img/traces.svg");background-size:520px;opacity:.08;pointer-events:none}
.pcb>*{position:relative}
.label{font:600 .92rem/1.2 var(--sans);color:var(--spark-ink);margin:0 0 14px;display:flex;align-items:center;gap:10px}
.label::after{content:"";width:40px;height:2px;background:currentColor}
.on-dark .label{color:var(--pad)}
.lede{font-family:var(--serif);font-style:italic;font-size:var(--step-1);line-height:1.5;color:var(--mask);max-width:60ch}
.on-dark .lede{color:#F1F7EE}
.grid{display:grid;gap:clamp(18px,2.4vw,32px)}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}
.split{display:grid;grid-template-columns:5fr 7fr;gap:clamp(28px,5vw,72px);align-items:start}
@media (max-width:900px){.split{grid-template-columns:1fr}}

/* ---------- page head ---------- */
.page-head{padding:clamp(56px,8vw,96px) 0 clamp(40px,5vw,64px)}
.page-head h1{max-width:18ch}
.page-head .lede{margin-top:18px}
.crumbs{font-size:.88rem;color:var(--ink-2);margin-bottom:18px}
.crumbs a{color:var(--ink-2)}

/* ---------- hero ---------- */
.hero{padding:clamp(48px,7vw,90px) 0 clamp(56px,7vw,96px)}
.hero .wrap{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(24px,4vw,56px);align-items:center}
@media (max-width:960px){.hero .wrap{grid-template-columns:1fr}}
.hero h1{font-size:clamp(2.1rem,1.5rem + 2.4vw,3.4rem);color:#fff;margin-bottom:22px}
.creed-lines{font-family:var(--serif);font-size:var(--step-1);line-height:1.5;color:#E8F2E4;border-left:3px solid var(--spark);padding-left:18px;margin:0 0 28px}
.creed-lines b{color:var(--pad);font-weight:700}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.board{background:#022F12;border:1px solid #1F6A35;border-radius:var(--r-l);padding:18px;box-shadow:inset 0 0 0 6px #04391A}
.board svg{width:100%;height:auto}
.board figcaption{font-size:.88rem;color:#A9C7A2;padding:10px 6px 2px}
.stage-pad{cursor:pointer}
.stage-pad circle.pad{transition:r .2s}
.stage-pad:hover circle.pad,.stage-pad.active circle.pad{fill:var(--pad)}
.stage-detail{min-height:3.2em;font-size:.98rem;color:#E3EEDF;padding:6px 6px 0}
.stage-detail b{color:#fff}
#tracePath{stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 2.6s .3s ease-out forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* ---------- truths ---------- */
.truths{counter-reset:t;display:grid;gap:0;border-top:1px solid var(--rule)}
.truth{display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,1.2fr);gap:24px;padding:28px 0;border-bottom:1px solid var(--rule);align-items:start}
.truth .n{font-family:var(--serif);font-size:2.4rem;color:var(--spark-ink);line-height:1}
.truth h3{margin:0}
.truth p{margin:0;color:var(--ink-2)}
@media (max-width:800px){.truth{grid-template-columns:48px 1fr}.truth p{grid-column:2}}

/* ---------- panels / cards ---------- */
.panel{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:clamp(20px,2.4vw,30px)}
.panel h3{margin-bottom:.4em}
.panel p:last-child{margin-bottom:0}
.panel.tint{background:var(--wash);border-color:transparent}
.on-dark .panel{background:#0A4C24;border-color:#1F6A35;color:#E3EEDF}
.on-dark .panel h3{color:#fff}
.meta{font-size:.9rem;color:var(--ink-2)}
.on-dark .meta{color:#A9C7A2}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:2px solid var(--mask)}
.facts div{padding:18px 18px 4px 0}
.facts dt{font-family:var(--serif);font-weight:700;font-size:var(--step-3);color:var(--mask);line-height:1}
.facts dd{margin:8px 0 0;font-size:.95rem;color:var(--ink-2)}
@media (max-width:760px){.facts{grid-template-columns:repeat(2,1fr)}}
.on-dark .facts{border-color:var(--pad)}
.facts.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.facts.two div{padding-bottom:14px}
.on-dark .facts dt{color:var(--pad)} .on-dark .facts dd{color:#CFE0CA}

/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:.96rem;background:var(--sheet);border-radius:var(--r-m);overflow:hidden}
.tbl th{background:var(--mask);color:#fff;text-align:left;font-weight:600;padding:12px 14px}
.tbl td{padding:12px 14px;border-bottom:1px solid var(--rule);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl td:first-child{font-weight:600;color:var(--mask)}
.tbl-wrap{overflow-x:auto;border:1px solid var(--rule);border-radius:var(--r-m)}

/* ---------- tabs ---------- */
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.tabs button{font:600 .98rem var(--sans);padding:11px 18px;border-radius:999px;border:1.5px solid var(--rule);background:var(--sheet);color:var(--ink);cursor:pointer}
.tabs button[aria-selected="true"]{background:var(--mask);border-color:var(--mask);color:#fff}
.tabpanel[hidden]{display:none}

/* ---------- pathway ladder ---------- */
.ladder{display:grid;gap:12px}
.rung{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:18px;align-items:center;background:var(--sheet);border:1px solid var(--rule);border-left:6px solid var(--trace);border-radius:var(--r-m);padding:18px 20px;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}
.rung:hover{border-color:var(--trace)}
.rung[aria-expanded="true"]{border-left-color:var(--spark);background:#FBFDFA}
.rung .code{font-family:var(--serif);font-weight:700;font-size:1.35rem;color:var(--mask)}
.rung .t{font-weight:600}
.rung .d{font-size:.9rem;color:var(--ink-2)}
.rung .chev{transition:transform .2s;color:var(--trace);font-size:1.3rem}
.rung[aria-expanded="true"] .chev{transform:rotate(90deg)}
.rung-body{padding:4px 22px 18px 132px;display:none}
.rung-body.open{display:block}
.rung-body dl{display:grid;grid-template-columns:180px 1fr;gap:6px 18px;margin:0;font-size:.95rem}
.rung-body dt{color:var(--ink-2)}
.rung-body dd{margin:0}
@media (max-width:700px){.rung{grid-template-columns:76px 1fr auto}.rung-body{padding-left:20px}.rung-body dl{grid-template-columns:1fr}.rung-body dt{font-weight:600;margin-top:8px}}

/* ---------- forms ---------- */
form .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:640px){form .row{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.field label,.field legend{font-weight:600;font-size:.95rem;color:var(--mask)}
.field .hint{font-size:.86rem;color:var(--ink-2)}
input,select,textarea{font:inherit;color:var(--ink);background:var(--sheet);border:1.5px solid #C4D2C0;border-radius:var(--r-s);padding:12px 13px;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--trace);outline:3px solid rgba(47,122,62,.18);outline-offset:0}
textarea{min-height:130px;resize:vertical}
fieldset{border:0;padding:0;margin:0 0 16px}
.choices{display:flex;flex-wrap:wrap;gap:8px}
.choices label{display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--ink);background:var(--sheet);border:1.5px solid #C4D2C0;border-radius:999px;padding:9px 15px;cursor:pointer}
.choices input{width:auto;accent-color:var(--spark)}
.choices label:has(input:checked){border-color:var(--spark);background:#FFF4EC}
.hp{position:absolute;left:-9999px}
.form-msg{padding:14px 16px;border-radius:var(--r-s);margin-top:12px;display:none}
.form-msg.ok{display:block;background:#E3F3E1;color:var(--mask);border:1px solid #9BC79A}
.form-msg.err{display:block;background:#FDECE4;color:#8A2A00;border:1px solid #F3B394}
.steps-bar{display:flex;gap:6px;margin-bottom:22px}
.steps-bar span{flex:1;height:6px;border-radius:3px;background:var(--rule)}
.steps-bar span.done{background:var(--trace)} .steps-bar span.now{background:var(--spark)}
.step[hidden]{display:none}
.form-nav{display:flex;gap:10px;justify-content:space-between;margin-top:8px}

/* ---------- tool outputs ---------- */
.result{margin-top:18px;border-radius:var(--r-m);padding:20px;background:var(--sheet);border:1px solid var(--rule)}
.result[hidden]{display:none}
.result.good{border-left:6px solid var(--trace)}
.result.warn{border-left:6px solid var(--pad)}
.result.bad{border-left:6px solid var(--spark)}
.outs{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-top:6px}
.out{background:var(--wash);border-radius:var(--r-s);padding:14px}
.out b{display:block;font-family:var(--serif);font-size:1.6rem;color:var(--mask);line-height:1.1}
.out span{font-size:.88rem;color:var(--ink-2)}
.note{font-size:.88rem;color:var(--ink-2);border-left:3px solid var(--pad);padding:6px 0 6px 12px;margin-top:14px}
.timeline{list-style:none;margin:16px 0 0;padding:0;position:relative}
.timeline::before{content:"";position:absolute;left:11px;top:6px;bottom:6px;width:2px;background:var(--trace)}
.timeline li{position:relative;padding:0 0 18px 38px}
.timeline li::before{content:"";position:absolute;left:4px;top:6px;width:16px;height:16px;border-radius:50%;background:var(--pad);border:3px solid var(--mask)}
.timeline li.ill::before{background:var(--spark)}
.timeline .when{font-size:.86rem;color:var(--ink-2)}
.pill{display:inline-block;font-size:.8rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--wash);color:var(--mask)}
.pill.o{background:#FFE7D6;color:#9A3600}
.pill.g{background:var(--pad);color:var(--mask)}

/* ---------- route finder ---------- */
.q-card{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:24px}
.q-card .opts{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.q-card .opts button{font:600 .98rem var(--sans);padding:12px 18px;border-radius:999px;border:1.5px solid var(--trace);background:#fff;color:var(--mask);cursor:pointer}
.q-card .opts button:hover{background:var(--mask);color:#fff}
.path-crumbs{font-size:.88rem;color:var(--ink-2);margin-top:12px}
.loop{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:16px}
.loop div{padding:10px;border-radius:var(--r-s);background:var(--wash);font-size:.86rem;text-align:center;color:var(--ink-2)}
.loop div.hit{background:var(--mask);color:#fff;font-weight:600}
@media (max-width:640px){.loop{grid-template-columns:1fr 1fr}}

/* ---------- charts ---------- */
.bars{display:grid;gap:10px}
.bar-row{display:grid;grid-template-columns:200px 1fr 60px;gap:12px;align-items:center;font-size:.93rem}
.bar-row .track{background:var(--wash);border-radius:4px;height:16px;overflow:hidden}
.bar-row .fill{height:100%;background:var(--trace);border-radius:4px}
.bar-row.ecm .fill{background:var(--pad)} .bar-row.qa .fill{background:var(--spark)}
.bar-row .v{text-align:right;font-weight:600;color:var(--mask)}
@media (max-width:640px){.bar-row{grid-template-columns:1fr 50px}.bar-row .track{grid-column:1/3;order:3}}

/* ---------- charter page ---------- */
.charter-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:56px}
.toc{position:sticky;top:96px;align-self:start;font-size:.93rem}
.toc a{display:block;padding:7px 0 7px 14px;border-left:2px solid var(--rule);color:var(--ink-2);text-decoration:none}
.toc a.on{border-left-color:var(--spark);color:var(--mask);font-weight:600}
@media (max-width:960px){.charter-layout{grid-template-columns:1fr}.toc{display:none}}
.charter{font-family:var(--serif);font-size:1.12rem;line-height:1.75}
.charter p{max-width:64ch}
.charter h2{margin-top:1.6em;font-size:var(--step-2)}
.charter .sect{scroll-margin-top:96px;padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:28px}
.statement{font-family:var(--serif);font-weight:700;font-size:var(--step-2);line-height:1.35;color:var(--mask);border-left:5px solid var(--spark);padding-left:22px;margin:0 0 28px}
.statement em{font-style:normal;color:var(--spark-ink)}
.ask{background:var(--wash);border-radius:var(--r-m);padding:22px 26px;font-style:italic;color:var(--mask);text-align:center;margin:20px 0}
.oath{list-style:none;padding:24px 28px;margin:16px 0;background:var(--mask);border-radius:var(--r-m);counter-reset:o}
.oath li{counter-increment:o;color:#E8F2E4;font-style:italic;padding:10px 0 10px 46px;position:relative;border-bottom:1px solid rgba(254,180,58,.22)}
.oath li:last-child{border:0}
.oath li::before{content:counter(o,upper-roman);position:absolute;left:0;color:var(--pad);font-style:normal;font-weight:700}
.measure{border:2px solid var(--pad);background:#FFF9EE;border-radius:var(--r-m);padding:28px;text-align:center;font-weight:700;font-style:italic;font-size:var(--step-1);color:var(--mask);margin:22px 0}

/* ---------- footer ---------- */
.site-foot{background:#022F12;color:#B7CEB1;padding:64px 0 28px;font-size:.95rem}
.site-foot .cols{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
@media (max-width:860px){.site-foot .cols{grid-template-columns:1fr 1fr}}
.site-foot h4,.site-foot .fh{color:#fff;font-family:var(--sans);font-size:.98rem;margin-bottom:12px}
.site-foot a{color:#D9E8D4;text-decoration:none;display:block;padding:3px 0}
.site-foot a:hover{color:var(--pad)}
.foot-brand img{height:46px;background:#fff;border-radius:8px;padding:6px 10px;margin-bottom:16px}
.foot-line{font-family:var(--serif);font-style:italic;color:#E3EEDF;max-width:36ch}
.foot-base{border-top:1px solid #1C5530;margin-top:40px;padding-top:20px;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;font-size:.86rem}

/* ---------- misc ---------- */
.cta-band{background:var(--go);color:#fff;padding:clamp(40px,6vw,64px) 0}
.cta-band h2{color:#fff;margin:0 0 8px}
.cta-band p{color:#FFF1E8}
.cta-band .wrap{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
.cta-band .btn-line{color:#fff}
.cta-band .btn-line:hover{background:#fff;color:var(--go);border-color:#fff}
.list-check{list-style:none;padding:0;margin:0}
.list-check li{padding:8px 0 8px 30px;position:relative;border-bottom:1px solid var(--rule)}
.list-check li::before{content:"";position:absolute;left:4px;top:15px;width:12px;height:12px;border-radius:50%;background:var(--pad);box-shadow:0 0 0 3px var(--mask)}
.on-dark .list-check li{border-color:#1F6A35}
.tier{border-top:6px solid var(--trace)}
.tier.silver{border-top-color:#9FB0A6} .tier.gold{border-top-color:var(--pad)} .tier.plat{border-top-color:var(--spark)}
.mt0{margin-top:0}.mt2{margin-top:24px}.mt4{margin-top:48px}.mb0{margin-bottom:0}
.center{text-align:center}
.small{font-size:.88rem;color:var(--ink-2)}
.pub{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:18px 0;border-bottom:1px solid var(--rule)}
.pub .k{font-size:.82rem;font-weight:600;color:var(--spark-ink);min-width:92px}
@media (max-width:640px){.pub{grid-template-columns:1fr}}
.notfound{min-height:60vh;display:grid;place-items:center;text-align:center}

/* white cards placed inside dark sections */
.on-dark .paper,.on-dark .q-card{background:#fff;color:var(--ink);border-color:transparent}
.on-dark .paper h3,.on-dark .paper h4,.on-dark .q-card h3{color:var(--mask)}
.on-dark .paper p,.on-dark .q-card p{color:var(--ink)}
.on-dark .paper .small,.on-dark .paper .path-crumbs,.on-dark .q-card .path-crumbs,.on-dark .paper .meta{color:var(--ink-2)}
.on-dark .paper a:not(.btn){color:var(--board)}
.on-dark .paper .label,.on-dark .q-card .label{color:var(--spark-ink)}
.on-dark .paper .result{color:var(--ink)}
.nav a.btn-go{color:#fff;background:var(--go);border-radius:999px;box-shadow:none}
.nav a.btn-go:hover{color:#fff;background:#A33600;border-radius:999px;box-shadow:none}
.nav a.btn-go:hover{background:#d94a00}
@media (max-width:1060px){.nav a.btn-go{border-bottom:0;justify-content:center;padding:14px}}

#hoursChart .bar-row{grid-template-columns:260px 1fr 60px}
@media (max-width:640px){#hoursChart .bar-row{grid-template-columns:1fr 50px}}
/* ---------- ten schools, course finder, preview ---------- */
.preview-bar{background:var(--pad);color:var(--mask);font-size:.86rem;font-weight:600;text-align:center;padding:6px 16px}
.schools{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:24px}
.school{display:flex;gap:14px;align-items:flex-start;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:18px;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}
.school:hover,.school:focus-visible{border-color:var(--trace);transform:translateY(-2px)}
.school .sn{flex:0 0 40px;height:40px;border-radius:50%;background:var(--mask);color:var(--pad);font-family:var(--serif);font-weight:700;font-size:1.15rem;display:grid;place-items:center}
.school .sb{display:flex;flex-direction:column;gap:4px;min-width:0}
.school .st{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:var(--spark-ink);font-weight:600}
.school b{font-family:var(--serif);font-size:1.08rem;color:var(--mask);line-height:1.3}
.school .sp{font-size:.92rem;color:var(--ink-2)}
.school .sm{font-family:var(--mono);font-size:.78rem;color:var(--trace);margin-top:4px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;gap:8px;align-items:center;padding:7px 14px 7px 8px;border:1px solid var(--rule);border-radius:999px;background:var(--sheet);color:var(--mask);text-decoration:none;font-size:.92rem}
.chip b{width:24px;height:24px;border-radius:50%;background:var(--mask);color:var(--pad);display:grid;place-items:center;font-size:.8rem}
.chip:hover{border-color:var(--trace);background:var(--wash)}
.finder-bar{display:grid;grid-template-columns:1.8fr 1.4fr 1fr 1fr;gap:12px;align-items:end;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:18px}
.finder-bar .field{margin:0}
@media (max-width:1000px){.finder-bar{grid-template-columns:1fr 1fr}.finder-bar .field:first-child{grid-column:1/-1}}
@media (max-width:520px){.finder-bar{grid-template-columns:1fr}}
.course-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.course{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m)}
.course[open]{border-color:var(--trace)}
.course summary{display:flex;gap:14px;align-items:flex-start;padding:14px 18px;cursor:pointer;list-style:none}
.course summary::-webkit-details-marker{display:none}
.course summary::after{content:"+";margin-left:auto;font-size:1.3rem;color:var(--trace);line-height:1}
.course[open] summary::after{content:"−"}
.course .cc{flex:0 0 auto;font-family:var(--mono);font-size:.8rem;font-weight:600;background:var(--wash);color:var(--mask);padding:4px 8px;border-radius:var(--r-s);margin-top:2px}
.course .ct{display:flex;flex-direction:column;gap:2px;min-width:0}
.course .ct b{color:var(--mask)}
.course .cm{font-size:.86rem;color:var(--ink-2)}
.course dl{margin:0;padding:0 18px 6px;display:grid;grid-template-columns:120px 1fr;gap:6px 16px;font-size:.94rem}
.course dt{font-weight:600;color:var(--mask)} .course dd{margin:0}
.course>p{padding:8px 18px 16px}
@media (max-width:640px){.course dl{grid-template-columns:1fr}.bar-row{grid-template-columns:1fr 50px}}
.finder-bar input,.finder-bar select{height:50px}
#hoursChart .track,#hoursChart .fill{display:block}

/* ---------- utilities (replace inline styles so CSP needs no 'unsafe-inline') ---------- */
.pt0{padding-top:0} .bg-wash{background:var(--wash)}
.lede.lede-s{font-size:1.15rem} .lede.lede-c{margin:0 auto 24px}
.crumbs.on-ink,.crumbs.on-ink a{color:#A9C7A2}
.anchor-gap{scroll-margin-top:96px}
a.panel.as-link{text-decoration:none;color:inherit;display:block}
a.panel.as-link:hover h3{color:var(--spark-ink)}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:.95rem;margin-bottom:16px}
.consent input{width:auto;margin-top:5px}
h2.h3{font-size:var(--step-1)}
.site-foot .fh{color:#fff;font-family:var(--sans);font-size:.98rem;margin-bottom:12px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:3px solid var(--pad);outline-offset:2px}
.on-dark :focus-visible{outline-color:#fff}

/* ---------- tables become stacked cards on phones ---------- */
@media (max-width:640px){
  .tbl-wrap.stack{border:0;overflow:visible}
  .stack .tbl,.stack .tbl tbody,.stack .tbl tr,.stack .tbl td{display:block;width:100%}
  .stack .tbl{background:transparent}
  .stack .tbl thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .stack .tbl tr{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);margin-bottom:10px;padding:6px 0}
  .stack .tbl td{border:0;padding:6px 14px;display:grid;grid-template-columns:40% 1fr;gap:10px}
  .stack .tbl td::before{content:attr(data-label);font-weight:600;color:var(--ink-2);font-size:.86rem}
  .stack .tbl td:first-child{font-size:1.02rem}
}

/* ---------- back to top ---------- */
.to-top{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;width:46px;height:46px;border-radius:50%;border:0;background:var(--mask);color:var(--pad);font-size:1.3rem;cursor:pointer;box-shadow:0 6px 18px rgba(3,66,25,.28);opacity:0;pointer-events:none;transition:opacity .2s}
.to-top.show{opacity:1;pointer-events:auto}

/* ---------- study plan (course shortlist) ---------- */
.course-row .pick{border:1.5px solid var(--trace);background:var(--sheet);color:var(--mask);border-radius:999px;font:600 .82rem var(--sans);padding:6px 12px;cursor:pointer;white-space:nowrap}
.course-row .pick[aria-pressed="true"]{background:var(--mask);color:#fff;border-color:var(--mask)}
.course summary::after{margin-left:auto}
.plan{position:sticky;bottom:0;z-index:30;background:var(--mask);color:#fff;border-radius:var(--r-m) var(--r-m) 0 0;padding:14px 18px calc(14px + env(safe-area-inset-bottom,0px));margin-top:20px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.plan b{color:var(--pad)}
.plan .btn{padding:9px 16px}
.plan .btn-line{color:#fff;border-color:#fff}
.plan-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.plan-list li{display:flex;gap:12px;align-items:center;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-s);padding:10px 14px}
.plan-list li span{flex:1;min-width:0}
.plan-list button{border:0;background:none;color:var(--spark-ink);font:600 .86rem var(--sans);cursor:pointer}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0}
.quick button{border:1px solid var(--rule);background:var(--sheet);border-radius:999px;padding:6px 12px;font:500 .86rem var(--sans);color:var(--mask);cursor:pointer}
.quick button[aria-pressed="true"]{background:var(--wash);border-color:var(--trace)}

/* ---------- site search ---------- */
.search-form{display:flex;gap:10px;max-width:640px}
.search-form input{flex:1;min-width:0}
.hits{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;max-width:760px}
.hits a{display:block;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:14px 18px;text-decoration:none;color:inherit}
.hits a:hover{border-color:var(--trace)}
.hits .k{font-size:.78rem;font-weight:600;color:var(--spark-ink);text-transform:uppercase;letter-spacing:.06em}
.hits b{display:block;font-family:var(--serif);color:var(--mask);font-size:1.1rem;margin:2px 0}
.hits mark{background:#FFE7B8;color:inherit;padding:0 2px;border-radius:2px}
.nav .search-link{display:inline-flex;align-items:center;gap:6px}
.nav .search-link svg{width:18px;height:18px}

/* ---------- FAQ ---------- */
.faq{display:flex;flex-direction:column;gap:10px;max-width:820px}
.faq details{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m)}
.faq details[open]{border-color:var(--trace)}
.faq summary{padding:16px 20px;cursor:pointer;font-weight:600;color:var(--mask);list-style:none;display:flex;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";margin-left:auto;color:var(--trace);font-size:1.3rem;line-height:1}
.faq details[open] summary::after{content:"−"}
.faq details>div{padding:0 20px 16px}
.faq-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}

@media print{.site-head,.site-foot,.to-top,.plan,.cta-band,.skip,.preview-bar{display:none!important}body{background:#fff}section{padding:16px 0}}
.search-center{margin:0 auto}
.cf-meta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:14px}
.cf-toggle{display:flex;gap:8px;align-items:center;font-size:.92rem;font-weight:500;cursor:pointer}
.cf-toggle input{width:auto;accent-color:var(--mask)}
.course-row{position:relative}
.course-row .pick{position:absolute;top:12px;right:52px}
.course-row .course summary{padding-right:170px}
@media (max-width:520px){.course-row .pick{position:static;margin:-2px 0 0 18px;align-self:flex-start}.plan{padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));gap:8px;font-size:.92rem}.plan .btn{padding:7px 12px;font-size:.86rem}.plan .hero-actions{gap:6px}.course-row{display:flex;flex-direction:column;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding-bottom:12px}.course-row .course{border:0}.course-row .course summary{padding-right:18px}}
#planMsg{flex-basis:100%;color:#DCE9D6;word-break:break-all}
#planMsg:empty{display:none}
.linkish{border:0;background:none;padding:0;color:var(--mask);text-decoration:underline;font:inherit;cursor:pointer}
.plan .btn-go{background:var(--pad);color:var(--mask)}
.plan .btn-go:hover{background:#fff;color:var(--mask)}
@media (max-width:1060px){.nav .search-link{display:none}}

/* ---------- delivery modes, online learning ---------- */
.mode-tag{display:inline-block;align-self:flex-start;margin-top:4px;font-size:.74rem;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--wash);color:var(--mask)}
.mode-tag.m-online{background:#E3EEF9;color:#14406B}
.mode-tag.m-blended{background:#FFF1D6;color:#6B4300}
.mode-tag.m-centre{background:#E5EFE1;color:var(--mask)}
.mode-card .mode-n{font-family:var(--serif);font-weight:700;font-size:2.6rem;line-height:1;color:var(--mask);margin:0 0 8px}
.journey{list-style:none;counter-reset:j;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.journey li{counter-increment:j;display:grid;grid-template-columns:40px 1fr;gap:4px 14px;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:14px 16px}
.journey li::before{content:counter(j);grid-row:1/3;width:32px;height:32px;border-radius:50%;background:var(--mask);color:var(--pad);font-weight:700;display:grid;place-items:center}
.journey b{color:var(--mask)} .journey span{font-size:.95rem;color:var(--ink-2)}
.ol-groups{columns:2 340px;column-gap:24px}
.ol-group{break-inside:avoid;margin-bottom:20px;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-m);padding:16px 18px}
.ol-group h3{display:flex;gap:10px;align-items:center;font-size:1.05rem;margin-bottom:10px}
.ol-group h3 span{width:26px;height:26px;border-radius:50%;background:var(--mask);color:var(--pad);font-size:.82rem;display:grid;place-items:center;flex:none}
.ol-group ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ol-group li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;justify-content:space-between;font-size:.94rem}
.ol-group li a{color:var(--ink);text-decoration:none;min-width:0} .ol-group li a:hover{color:var(--spark-ink)}
.ol-group .cc,.summary .cc{font-family:var(--mono);font-size:.78rem;font-weight:600;background:var(--wash);color:var(--mask);padding:2px 6px;border-radius:4px}
.lesson{margin:20px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:12px;color:#E8F2E4}
.lesson b{color:#fff;display:block}
.choices.col{flex-direction:column;align-items:stretch}
.quiz fieldset.miss legend{color:var(--spark-ink)}
.quiz fieldset.miss legend::after{content:"  · check this one";font-weight:500;font-size:.86rem}
/* ---------- registration ---------- */
.reg{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}
.reg-side{display:flex;flex-direction:column;gap:16px;position:sticky;top:96px}
@media (max-width:900px){.reg{grid-template-columns:1fr}.reg-side{position:static}}
.summary dl.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:12px 0;font-size:.94rem}
.summary dt{font-weight:600;color:var(--ink-2)} .summary dd{margin:0}
.more-link{display:inline-block;margin-top:6px;font-weight:600;color:var(--spark-ink)}
/* ---------- centres ---------- */
.tiers .tier-k{font:600 .78rem var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--spark-ink);margin:0 0 4px}
.tiers .list-check{margin:12px 0}
.checks{display:flex;flex-direction:column;gap:8px}
.checks label{display:flex;gap:10px;align-items:flex-start;font-size:.95rem;cursor:pointer}
.checks input{width:auto;margin-top:4px;accent-color:var(--mask);flex:none}
.checks.two{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
@media (max-width:640px){.checks.two{grid-template-columns:1fr}}
.places .chip b{width:auto;height:auto;border-radius:4px;padding:2px 6px;font-size:.72rem}
.page-head.on-dark .lede{color:#F1F7EE}
.checks label{font-weight:400;color:var(--ink)}
.tbl.even td:first-child{font-weight:400;color:var(--ink)}
@media (min-width:641px){.tbl.even td{width:50%}}
/* ---------- no-JavaScript notice, QR records, loading states ---------- */
.noscript{background:#FFF4D6;color:var(--ink);border-bottom:1px solid #F0D58A;padding:12px 0;font-size:.95rem}
#courseList:empty,#olList:has(> p.small:only-child){min-height:70vh}
.qr{display:flex;gap:16px;align-items:center;margin:20px 0 14px;padding:14px;border:1px dashed var(--rule);border-radius:var(--r-m);background:var(--sheet)}
.qr-img{flex:none;width:132px;height:132px;background:#fff}
.qr-img svg{width:100%;height:100%;display:block}
.qr figcaption{display:flex;flex-direction:column;gap:4px;min-width:0}
.qr-url{font-family:var(--mono);font-size:.78rem;color:var(--ink-2);word-break:break-all}
@media (max-width:480px){.qr{flex-direction:column;align-items:flex-start}}
@media print{.qr{border-color:#999}.result button,#vCopyMsg,#pCopyMsg{display:none!important}}
.course .share{padding:9px 14px}
