/* ============================================================
   theme.css — The Making Of · shared stylesheet
   ------------------------------------------------------------
   Canonical source: the copper page (themakingof.net/copper/),
   blessed as the reference implementation on 2026-07-25.

   WHAT LIVES HERE
   Shared chrome and universal components every material page
   uses: palette tokens, palette strip, sticky header + scroll
   nav, hero, section scaffolding, the "where you'll meet it"
   band, idea blocks, stat bands, scenario bars, stage/route
   infographic system, cross-link (.xref) cards, sources
   footer, and the full accessibility block (25 July form —
   SVG focus separated from HTML focus).

   WHAT DOES NOT LIVE HERE
   Page-specific diagrams (a material's own supply network,
   bespoke charts, one-off explainer cards) stay in each page's
   inline <style>. Keep this file to things that are TRUE ON
   EVERY PAGE. If a rule only applies to one material, it does
   not belong here.

   USAGE
   Link in <head>, BEFORE the page's own inline <style>, so a
   page can still override a shared rule where genuinely needed:
     <link rel="stylesheet" href="/theme.css">

   MIGRATION NOTE
   New pages (template-derived) link this file. The nine live
   material pages remain on their own inline CSS until migrated
   one at a time — see Website Plan, migration path section.
   Until a page is migrated, this file must not be assumed to
   style it.
   ============================================================ */



/* ===== PALETTE (from "The Making Of – Colour Palette 1") ===== */
:root{
  --blue-deep:#2E5266;   /* Color 1 */
  --blue-mid:#6E8898;    /* Color 2 */
  --blue-light:#9FB1BC;  /* Color 3 */
  --grey-warm:#D3D0CB;   /* Color 4 */
  --gold:#E2C044;        /* Color 5 */

  --ink:#22333d;
  --ink-soft:#4a5a63;
  --paper:#f7f6f3;
  --paper-2:#ffffff;
  --line:#e2ddd5;
  --gold-deep:#b8952a;
  --head-h:55px;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:"Source Serif 4",Georgia,serif;
  color:var(--ink);background:var(--paper);line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,.kicker,.stat-num,.tag,.nav a,.badge,.route-head h3,.big,.mast,.pg{
  font-family:"Archivo",sans-serif;
}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px;}
img,svg{display:block;max-width:100%;}

/* ===== TOP NAV ===== */
.xref{display:flex;gap:14px;align-items:flex-start;max-width:780px;margin:34px auto 0;
  padding:18px 20px;background:#fff;border:1px solid var(--grey-warm);border-left:4px solid var(--gold);
  border-radius:10px;text-decoration:none;transition:transform .18s,box-shadow .18s;}
.xref:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(46,82,102,0.10);}
.xarrow{color:var(--gold);font-size:20px;font-weight:800;line-height:1.2;flex-shrink:0;}
.xlab{display:block;font-family:"Archivo",sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--blue-mid);margin-bottom:3px;}
.xt{display:block;font-family:"Archivo",sans-serif;font-weight:800;font-size:16px;color:var(--blue-deep);margin-bottom:3px;}
.xd{display:block;font-family:"Source Serif 4",serif;font-size:14px;color:var(--ink-soft);line-height:1.45;}

/* ===== where you'll meet it (canonical figure pattern) ===== */
.meet-band{background:var(--paper);border-bottom:1px solid var(--line);padding:30px 0 34px}
.meet-lead{text-align:center;color:var(--ink-soft);font-size:.98rem;margin-bottom:22px}
.meet{display:flex;flex-wrap:wrap;justify-content:center;gap:26px 34px}
.meet figure{width:88px;text-align:center;margin:0}
.meet svg{width:40px;height:40px;margin:0 auto 8px}
.meet span{display:block;font-size:.74rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--blue-mid)}

/* ===== section dek + overview hint (canonical) ===== */
.dek{font-size:1.12rem;color:var(--ink-soft);max-width:640px;margin-top:14px}
.overview-hint{text-align:center;font-family:"Archivo",sans-serif;font-size:.74rem;
  font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-mid);
  margin-bottom:6px}

.palette-strip{display:flex;height:8px;width:100%}
.palette-strip span{flex:1}
.sw1{background:var(--blue-deep)}.sw2{background:var(--blue-mid)}.sw3{background:var(--blue-light)}.sw4{background:var(--grey-warm)}.sw5{background:var(--gold)}

.site-head{
  position:sticky;top:0;z-index:50;background:rgba(46,82,102,0.97);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid rgba(255,255,255,0.12);
}
.head-inner{max-width:1080px;margin:0 auto;padding:12px 24px;display:flex;
  justify-content:space-between;align-items:center;gap:22px;}
.brand{font-family:"Archivo",system-ui,sans-serif;color:#fff;font-weight:800;font-size:15px;letter-spacing:0.02em;
  flex-shrink:0;white-space:nowrap;text-decoration:none}
.brand span{color:var(--gold);}

/* scrollable nav strip */
.site-head .nav{flex:1;min-width:0;display:flex}
.nav-strip{position:relative;flex:1;min-width:0;}
.nav-strip::before,.nav-strip::after{content:"";position:absolute;top:0;bottom:0;width:34px;
  pointer-events:none;z-index:2;opacity:0;transition:opacity .25s;}
.nav-strip::before{left:0;background:linear-gradient(90deg,rgba(46,82,102,0.99),rgba(46,82,102,0));}
.nav-strip::after{right:0;background:linear-gradient(270deg,rgba(46,82,102,0.99),rgba(46,82,102,0));}
.nav-strip.fade-l::before{opacity:1;}
.nav-strip.fade-r::after{opacity:1;}
.nav ul{display:flex;gap:20px;list-style:none;overflow-x:auto;overflow-y:hidden;
  scroll-behavior:smooth;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;-ms-overflow-style:none;padding:2px 0;justify-content:flex-end;}
.nav ul::-webkit-scrollbar{display:none;}
.nav li{flex-shrink:0;}
.nav a{display:block;color:rgba(255,255,255,0.78);text-decoration:none;font-weight:600;
  font-size:12.5px;letter-spacing:0.02em;transition:color .2s,border-color .2s;
  white-space:nowrap;padding-bottom:4px;border-bottom:2px solid transparent;}
.nav a:hover{color:var(--gold);}
.nav a.active{color:var(--gold);border-bottom-color:var(--gold);}
.nav a .lbl-short{display:none;}
.nav a .lbl-full{speak:normal;}
@media(max-width:1000px){.nav ul{gap:15px;}.nav a{font-size:12px;}}
@media(max-width:860px){
  .nav-inner{flex-direction:column;align-items:stretch;gap:8px;padding:10px 0 0;}
  .nav .mast{font-size:14px;padding:0 18px;}
  .nav ul{justify-content:flex-start;gap:18px;padding:2px 18px 8px;}
  .nav a{font-size:12.5px;}
  .nav a .lbl-full{display:none;}
  .nav a .lbl-short{display:inline;}
  .nav-strip::before,.nav-strip::after{width:26px;}
}

/* ===== HERO ===== */
.hero{
  background:
    radial-gradient(1100px 480px at 74% -8%, rgba(226,192,68,.30), rgba(226,192,68,0) 60%),
    radial-gradient(700px 400px at 12% 110%, rgba(159,177,188,.24), rgba(159,177,188,0) 60%),
    linear-gradient(155deg,#22333d 0%, #2E5266 52%, #3c6076 100%);
  color:#fff;position:relative;overflow:hidden;
}
.hero::after{
  content:"";position:absolute;inset:0;opacity:0.5;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,0.045) 1px,transparent 1px);
  background-size:100% 46px;
}
.hero-inner{max-width:1080px;margin:0 auto;padding:96px 24px 104px;position:relative;z-index:2;}
.kicker{display:inline-block;color:var(--gold-deep);font-size:.76rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px;}
.hero h1{font-weight:900;font-size:clamp(2.9rem,7.5vw,5.2rem);line-height:.98;letter-spacing:-.03em;}
.hero h1 em{font-style:normal;color:var(--gold);}
.hero p{font-size:1.28rem;line-height:1.5;max-width:660px;margin-top:22px;
  color:rgba(255,255,255,0.9);font-weight:400;}
.hero-tags{margin-top:34px;display:flex;flex-wrap:wrap;gap:10px;}
.badge{font-family:"Archivo",system-ui,sans-serif;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:7px 14px;border-radius:100px;border:1px solid rgba(255,255,255,0.3);color:rgba(255,255,255,0.9)}
.badge.solid{background:var(--gold);color:#3a2e00;border-color:var(--gold);}

/* ===== SECTIONS ===== */
section{padding:70px 0;scroll-margin-top:60px;}
@media(max-width:860px){section{scroll-margin-top:82px;}}

h2{font-weight:800;font-size:2.15rem;line-height:1.08;letter-spacing:-0.015em;
  color:var(--blue-deep);margin-bottom:14px;}
h2 .thin{font-weight:400;color:var(--blue-light);}

/* base heading sizes. Bare h2 is set to 2.15rem in the rule above; this adds
   a base size for bare h3. Scoped h3 rules (.route-head h3 22px, .path-box h3
   20px, .footer h3 14px) are more specific and still win over this. */
h3{font-size:1.375rem;}

.lead{font-size:clamp(16px,2vw,18px);line-height:1.62;color:var(--ink-soft);max-width:760px;}
.lead b{color:var(--blue-deep);font-weight:600;}

.alt{background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}

/* raw materials cards */
.raw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:38px;}
.raw-card{background:var(--paper-2);border:1px solid var(--line);border-radius:16px;padding:28px 24px;
  transition:transform .2s, box-shadow .2s;}
.raw-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(46,82,102,0.12);}
.raw-ico{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  margin-bottom:18px;}
.raw-card h4{font-weight:700;font-size:19px;color:var(--blue-deep);margin-bottom:7px;}
.raw-card p{font-size:14.5px;line-height:1.5;color:var(--ink-soft);}
@media(max-width:760px){.raw-grid{grid-template-columns:1fr;}}

/* material-card title — shared by the home and index material grids.
   Explicit font-size so it overrides both base h2 (2.15rem) and base h3
   (1.375rem); keeps the Archivo family and blue-deep colour the cards use. */
.card-title{font-family:"Archivo",sans-serif;font-size:1.18rem;color:var(--blue-deep);}

/* two routes */
.routes{display:grid;grid-template-columns:1fr;gap:30px;margin-top:40px;}
.route{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--paper-2);
  box-shadow:0 6px 22px rgba(46,82,102,0.07);}
.route-head{padding:26px 28px 22px;color:#fff;}
.route-head.primary{background:linear-gradient(120deg,#2E5266,#3d6577);}
.route-head.secondary{background:linear-gradient(120deg,#6E8898,#8399a7);}
.route-head .tag{font-size:11px;letter-spacing:0.18em;text-transform:uppercase;opacity:0.85;font-weight:700;}
.route-head h3{font-weight:800;font-size:22px;margin:6px 0 8px;line-height:1.08;}
.route-head .share{display:inline-block;background:var(--gold);color:#3a2e00;font-family:'Archivo';
  font-weight:700;font-size:13px;padding:4px 12px;border-radius:100px;}

/* converge callout */
.callout{background:var(--blue-deep);color:#fff;border-radius:18px;padding:34px 36px;margin-top:34px;
  display:flex;gap:30px;align-items:center;}
.callout .big{font-weight:900;font-size:64px;color:var(--gold);line-height:1;flex-shrink:0;}
.callout p{font-size:16px;line-height:1.55;color:rgba(255,255,255,0.9);}
.callout p b{color:#fff;}
@media(max-width:600px){.callout{flex-direction:column;text-align:center;gap:14px;padding:28px 24px;}}

/* pull quote */
.pull{border-top:3px solid var(--gold);border-bottom:3px solid var(--gold);
  padding:26px 0;margin:46px 0;font-family:'Archivo';font-weight:800;
  font-size:clamp(20px,3vw,28px);line-height:1.25;color:var(--blue-mid);letter-spacing:-0.01em;}
.pull span{color:var(--blue-deep);}

/* ===== INTERACTIVE OVERVIEW INFOGRAPHIC ===== */
.overview{background:var(--paper-2);border-bottom:1px solid var(--line);padding:52px 0 60px;}

.info-stage-wrap{position:relative;margin-top:22px;}
.info-svg{width:100%;height:auto;display:block;}

/* clickable stage hotspots overlaid via <a>/<g> in svg */
.stage{cursor:pointer}
.stage .hit{fill:transparent}
.stage .stage-illus{transition:transform .28s cubic-bezier(.34,1.4,.64,1);
  transform-box:fill-box;transform-origin:center bottom;}
.stage:hover .stage-illus{transform:scale(1.09);}
.stage.active .stage-illus{transform:scale(1.16);}
.stage.active:hover .stage-illus{transform:scale(1.18);}
.stage .stage-label{transition:fill .2s;}
.stage.active .stage-label{fill:var(--gold-deep);}
.stage.active .num-badge{fill:var(--gold);}
.stage.active .num-badge-txt{fill:#3a2e00;}

/* description panel */
.info-panel{max-width:820px;margin:26px auto 0;background:var(--paper);
  border:1px solid var(--line);border-left:5px solid var(--gold);border-radius:0 14px 14px 0;
  padding:26px 30px;display:flex;gap:22px;align-items:flex-start;
  animation:fadeSlide .3s ease;}
@keyframes fadeSlide{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.info-panel .p-ico{width:52px;height:52px;border-radius:13px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;background:var(--blue-deep);}
.info-panel .p-ico svg{width:28px;height:28px;}
.info-panel .p-body{flex:1;}
.info-panel .p-step{font-family:'Archivo';font-weight:700;font-size:11px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--blue-mid);}
.info-panel h4{font-family:'Archivo';font-weight:800;font-size:21px;color:var(--blue-deep);
  margin:3px 0 8px;letter-spacing:-0.01em;}
.info-panel p{font-size:15.5px;line-height:1.6;color:var(--ink-soft);}
.info-panel p b{color:var(--blue-deep);font-weight:600;}
.info-panel .p-temp{display:inline-block;font-family:'Archivo';font-weight:700;font-size:12px;
  background:var(--gold);color:#3a2e00;padding:3px 12px;border-radius:100px;margin-top:12px;}

/* chemical equations */
.eqs{margin-top:16px;background:var(--paper-2);border:1px solid var(--line);
  border-radius:10px;padding:14px 16px;}
.eqs .eq-h{font-family:'Archivo';font-weight:700;font-size:10.5px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--blue-mid);margin-bottom:9px;}
.eq{font-family:"Source Serif 4",Georgia,serif;font-size:15px;color:var(--blue-deep);
  padding:5px 0;border-bottom:1px dashed var(--line);}
.eq:last-child{border-bottom:none;}
.eq .cap{display:block;font-family:'Archivo';font-size:11.5px;font-weight:600;
  color:var(--ink-soft);letter-spacing:0.02em;margin-top:2px;}
.eq b{font-weight:700;}
.eq sub{font-size:0.72em;}
.eq .arrow{color:var(--gold-deep);font-weight:700;padding:0 4px;}
@media(max-width:600px){.eq{font-size:14px;}}
@media(max-width:600px){.info-panel{flex-direction:column;gap:14px;padding:22px 22px;}}

/* neutral (non-hot) pill variant */
.info-panel .p-temp.cool{background:var(--grey-warm);color:var(--ink);}

/* ===== ROUTE INFOGRAPHICS ("Two Roads to Cathode") ===== */
.route-diagram{padding:20px 24px 26px;}
.rd-hint{display:inline-flex;align-items:center;gap:7px;
  font-family:'Archivo';font-weight:700;font-size:11.5px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--gold-deep);background:#fdf6e0;
  border:1px solid #f0e2a8;padding:5px 12px;border-radius:100px;}
.rd-hint svg{width:13px;height:13px;}
.diagram-scroll{margin-top:12px;}
.info-panel.route-panel{max-width:none;margin:20px 0 0;}
@media(max-width:760px){
  .route-diagram{padding:18px 14px 22px;}
  .diagram-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px;}
  .diagram-scroll>svg{min-width:660px;}
}
/* section idea line */
.idea{display:flex;gap:14px;align-items:flex-start;margin:0 0 26px;
  padding:16px 20px;background:linear-gradient(90deg,rgba(226,192,68,0.16),rgba(226,192,68,0.03));
  border-left:4px solid var(--gold);border-radius:0 10px 10px 0;}
.idea .lab{font-family:'Archivo';font-weight:900;font-size:13px;color:var(--gold-deep);
  letter-spacing:0.14em;text-transform:uppercase;flex-shrink:0;padding-top:2px;}
.idea p{font-family:'Archivo';font-weight:700;font-size:clamp(15px,2vw,17.5px);
  line-height:1.4;color:var(--blue-deep);letter-spacing:-0.01em;}
@media(max-width:600px){.idea{flex-direction:column;gap:6px;}}
/* stat band */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;margin-top:40px;
  border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper-2);}
.stat{padding:30px 24px;border-right:1px solid var(--line);}
.stat:last-child{border-right:none;}
.stat-num{font-family:'Archivo';font-weight:900;font-size:2.15rem;color:var(--blue-deep);line-height:1;}
.stat-num small{font-size:18px;}
.cap{font-size:13.5px;line-height:1.4;color:var(--ink-soft);margin-top:9px;}
.est{display:inline-block;font-family:'Archivo';font-size:10px;font-weight:700;letter-spacing:0.06em;
  background:var(--grey-warm);color:#6a655d;padding:1px 7px;border-radius:100px;
  text-transform:uppercase;margin-left:5px;vertical-align:middle;}
@media(max-width:760px){.stats{grid-template-columns:repeat(2,1fr);}
  .stat:nth-child(2){border-right:none;}.stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid var(--line);}}
/* sustainability two-col */
.two-col{columns:2;column-gap:40px;margin-top:34px;}
.two-col p{margin-bottom:16px;break-inside:avoid;font-size:15.5px;line-height:1.62;color:var(--ink-soft);}
.two-col b{font-family:'Archivo';font-weight:700;color:var(--blue-deep);font-size:15.5px;}
@media(max-width:700px){.two-col{columns:1;}}

/* scenario bars */
.path-box{background:linear-gradient(120deg,#eef1f2,#e4e9eb);border:1px solid #d6dee1;
  border-radius:18px;padding:34px 36px;margin-top:40px;}
.path-box h3{font-family:'Archivo';font-weight:800;font-size:20px;color:var(--blue-deep);margin-bottom:22px;}
.path-row{display:flex;align-items:center;gap:18px;margin-bottom:16px;}
.path-row:last-of-type{margin-bottom:0;}
.path-bar{height:34px;border-radius:8px;display:flex;align-items:center;padding-left:14px;
  color:#fff;font-family:'Archivo';font-weight:800;font-size:15px;flex-shrink:0;min-width:70px;}
.path-row .desc{font-size:14.5px;line-height:1.45;color:var(--ink-soft);}
.path-row .desc b{font-family:'Archivo';color:var(--ink);}
.path-intro{font-size:14.5px;line-height:1.6;color:var(--ink-soft);margin-bottom:22px;max-width:780px;}
.path-intro b{color:var(--blue-deep);font-weight:600;}
.sc-tag{display:inline-block;font-family:'Archivo';font-weight:700;font-size:10px;
  letter-spacing:0.08em;text-transform:uppercase;background:#dfe6e8;color:#5b6c74;
  padding:2px 8px;border-radius:100px;margin-left:6px;vertical-align:middle;}
.path-note{font-size:13px;color:#6a655d;margin-top:20px;font-style:italic;line-height:1.5;}
@media(max-width:600px){.path-row{flex-direction:column;align-items:flex-start;gap:6px;}
  .path-bar{width:auto;padding:0 16px;}}

.closing{font-size:17px;line-height:1.62;color:var(--ink-soft);margin-top:38px;max-width:800px;}
.closing em{color:var(--blue-deep);font-style:italic;}

/* sources footer */
.footer{background:var(--blue-deep);color:#fff;padding:56px 0 40px;}
.footer h3{font-family:'Archivo';font-size:14px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--gold);margin-bottom:20px;}
.src-grid{columns:2;column-gap:40px;}
.src-grid li{font-size:13px;line-height:1.5;color:rgba(255,255,255,0.82);margin-bottom:9px;
  break-inside:avoid;list-style:none;padding-left:22px;position:relative;}
.src-grid li::before{content:counter(s);counter-increment:s;position:absolute;left:0;top:0;
  font-family:'Archivo';font-weight:700;color:var(--gold);font-size:12px;}
.src-grid{counter-reset:s;}
.src-grid li em{color:#fff;font-style:italic;}
.footer .note{font-size:12px;color:rgba(255,255,255,0.6);margin-top:24px;
  border-top:1px solid rgba(255,255,255,0.18);padding-top:20px;font-style:italic;line-height:1.55;max-width:820px;}
.footer .foot-mast{display:flex;justify-content:space-between;align-items:center;margin-top:26px;
  font-family:'Archivo';font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:rgba(255,255,255,0.55);}
@media(max-width:640px){.src-grid{columns:1;}}

/* ===== page footer (bare <footer>) — home + index ===== */
/* Distinct from the material-page `.footer` class above. Two <span>s in a
   .wrap, on the deep-blue palette colour. */
footer{background:var(--blue-deep);color:#9FB1BC;padding:34px 0;font-size:.88rem}
footer .wrap{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between}

/* palette strip */
.swatches{display:flex;height:8px;}
.swatches div{flex:1;}

/* ===== accessibility additions ===== */

/* Visible keyboard focus. Applies only to keyboard navigation, so mouse
   users see no change.

   SVG elements are handled separately: `outline` on an <svg> <g> draws a
   rectangle round its bounding box, which reads as a hard black frame on
   click. SVG focus uses stroke/filter instead, never outline. */

/* HTML elements — outline is correct here */
a:focus-visible,
button:focus-visible,
.chip:focus-visible{
  outline:3px solid var(--gold-deep);
  outline-offset:2px;
}

/* SVG interactive groups — no outline; a gold stroke on the artwork itself */
.node:focus-visible rect.box{
  stroke:var(--gold-deep);
  stroke-width:3;
}
.stage:focus-visible .stage-label,
.stage:focus-visible .cyc-label{
  fill:var(--gold-deep);
  text-decoration:underline;
}
.stage:focus-visible .stage-illus{
  filter:drop-shadow(0 0 3px var(--gold-deep));
}
/* SVG interactive groups — structural, not class-scoped, so a diagram added
   later cannot reintroduce the black frame by using a new class name. */
svg [tabindex]:focus,
svg [tabindex]:focus-visible{outline:none}
.app:focus-visible rect.abox{stroke:var(--gold-deep);stroke-width:3.5}
/* Keep bar labels legible if a pale fill is ever given text.
   Defensive: current pages already handle this inline. */
.bar-fill[style*="--blue-light"],
.bar-fill[style*="--grey-warm"],
.bar-fill[style*="--gold)"],
.bar-fill[style*="#9FB1BC"],
.bar-fill[style*="#D3D0CB"]{color:#1f2e35}

/* Respect the OS "reduce motion" setting: disable transforms, transitions
   and animations for users who can be made unwell by movement. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  html{scroll-behavior:auto}
  .card:hover,.mcard:hover,.route:hover,.opt:hover,.raw-card:hover,.xref:hover{
    transform:none
  }
  .stage:hover .stage-illus,
  .stage.active .stage-illus,
  .stage.active:hover .stage-illus{transform:none}
}

/* ===== unified sources footer (2026-07-25) ===== */
.src-head,.footer h3,footer h3{
  font-family:"Archivo",sans-serif !important;color:var(--gold) !important;
  font-size:.8rem !important;font-weight:700 !important;letter-spacing:.18em !important;
  text-transform:uppercase !important;margin-bottom:22px !important;
}
.src .num,.src-grid li::before{color:var(--gold) !important;}
/* bottom mast: white, split left/right */
.foot-mast,.sig{
  display:flex !important;justify-content:space-between !important;align-items:baseline !important;
  gap:16px !important;flex-wrap:wrap !important;margin-top:30px !important;
  font-family:"Archivo",sans-serif !important;font-size:.78rem !important;
  letter-spacing:.16em !important;text-transform:uppercase !important;
  color:#ffffff !important;
}
.foot-mast .fm-verified,.sig .fm-verified{color:#ffffff !important;font-weight:400 !important;}
.foot-mast .fm-name,.sig .fm-name{color:#ffffff !important;font-weight:700 !important;}
/* Pin "Last verified" to the right even when a long material name pushes it
   onto a second flex line. space-between alone left-aligns a lone wrapped
   item; margin-left:auto keeps it bottom-right on every page. (2026-08-02) */
.foot-mast .fm-verified,.sig .fm-verified{margin-left:auto !important;text-align:right;white-space:nowrap;}
