/* ================================================================
   CTMP Canonical Article Stylesheet
   Frozen from anatomy-of-refusal.html + approved supply-chain proof
   ================================================================ */

/* --- design tokens --- */
:root{
  --vault:#0A0F1A;
  --vault-2:#0E1524;
  --ink:#E9E4D6;
  --ink-dim:#A9A697;
  --brass:#C9A227;
  --brass-bright:#E4BE45;
  --steel:#6C8BB0;
  --steel-dim:#41546F;
  --line:#1E2A40;
  --line-bright:#2C3D5C;
}

/* --- reset --- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* --- body & grid overlay --- */
body{
  background:var(--vault);
  color:var(--ink);
  font-family:'Spectral',Georgia,serif;
  font-weight:300;
  font-size:18.5px;
  line-height:1.85;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--brass);color:var(--vault)}
body::before{
  content:"";position:fixed;inset:0;
  background:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:56px 56px;
  opacity:.12;pointer-events:none;z-index:0;
}
main,header.top,footer{position:relative;z-index:1}

/* --- links --- */
a{color:var(--steel);text-decoration:none;border-bottom:1px solid var(--steel-dim)}
a:hover{color:var(--brass-bright);border-color:var(--brass)}
.mono{font-family:'IBM Plex Mono',monospace}

/* --- sticky header --- */
header.top{
  display:flex;justify-content:space-between;align-items:center;
  padding:14px 28px;border-bottom:1px solid var(--line-bright);
  background:rgba(10,15,26,.9);backdrop-filter:blur(6px);
  position:sticky;top:0;z-index:50;
  font-family:'IBM Plex Mono',monospace;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);
}
header.top b{color:var(--brass);font-weight:600}
header.top a{border:none;color:var(--ink-dim)}
header.top a:hover{color:var(--brass-bright)}

/* --- content widths --- */
.wrap{max-width:760px;margin:0 auto;padding:0 26px}
.wrap.wide{max-width:960px}

/* --- hero / title plate --- */
.hero{padding:96px 0 72px;border-bottom:1px solid var(--line-bright);text-align:center}
.hero .eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.34em;
  text-transform:uppercase;color:var(--steel);margin-bottom:30px;
}
h1{
  font-family:'Fraunces',serif;font-weight:700;
  font-size:clamp(44px,7.5vw,84px);line-height:1.02;color:var(--ink);
}
.hero .sub{
  font-family:'Fraunces',serif;font-style:italic;font-weight:400;
  font-size:clamp(19px,2.4vw,24px);color:var(--brass-bright);
  margin-top:26px;
}
.hero .byline{
  margin-top:34px;font-family:'IBM Plex Mono',monospace;font-size:11px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);
}
.hero .rule{
  width:64px;height:2px;background:var(--brass);margin:38px auto 0;
}

/* --- sections / movements --- */
.mv{padding:78px 0 10px}
.mv-tag{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--brass);
  display:flex;align-items:center;gap:14px;margin-bottom:18px;
}
.mv-tag::after{content:"";flex:1;height:1px;background:var(--line-bright)}
h2{
  font-family:'Fraunces',serif;font-weight:600;
  font-size:clamp(27px,3.6vw,40px);line-height:1.14;color:var(--ink);
  margin-bottom:28px;
}
h2 .sec{color:var(--brass);font-weight:700;margin-right:10px;font-variant-numeric:tabular-nums}
h3{font-family:'Fraunces',serif;font-weight:600;font-size:17px;margin:26px 0 6px;color:var(--ink)}

/* --- body text --- */
p{margin-bottom:1.35em}
em{font-style:italic}
strong{font-weight:500;color:var(--ink)}
.drop::first-letter{
  font-family:'Fraunces',serif;font-weight:700;
  font-size:3.3em;line-height:.82;color:var(--brass);
  float:left;padding:6px 12px 0 0;
}
.pull{
  border-left:2px solid var(--brass);
  padding:4px 0 4px 26px;margin:38px 0;
  font-family:'Fraunces',serif;font-size:23px;line-height:1.5;color:var(--ink);
}

/* --- reveal animation --- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* --- figure plates --- */
figure.plate{
  margin:52px auto;border:1px solid var(--line-bright);
  background:linear-gradient(155deg,var(--vault-2),var(--vault));
  box-shadow:0 24px 60px rgba(0,0,0,.4);
}
figure.plate .plate-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 20px;border-bottom:1px solid var(--line-bright);
  font-family:'IBM Plex Mono',monospace;font-size:10px;
  letter-spacing:.22em;text-transform:uppercase;
}
figure.plate .plate-head .t{color:var(--brass)}
figure.plate .plate-head .n{color:var(--steel-dim)}
figure.plate svg{display:block;width:100%;height:auto;
  background:linear-gradient(var(--line) 1px,transparent 1px) 0 0/100% 34px,
  linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/34px 100%,var(--vault)}
figure.plate figcaption{
  padding:16px 22px 18px;border-top:1px solid var(--line-bright);
  font-size:14px;line-height:1.65;color:var(--ink-dim);
  display:flex;flex-wrap:wrap;gap:4px 18px;align-items:baseline;
}
figure.plate figcaption b{color:var(--brass);font-weight:500;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em}
figure.plate figcaption .fig{color:var(--brass);font-weight:600;font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.14em}
figure.plate figcaption .cap{flex:1 1 380px}
figure.plate figcaption .dwg{color:var(--steel-dim);letter-spacing:.06em}

/* --- figure plate images (country updates, articles with photos) --- */
figure.plate img{display:block;width:100%;height:auto}

/* --- SVG text defaults --- */
svg text{font-family:'IBM Plex Mono',monospace}
.st{fill:#E9E4D6}
.sd{fill:#A9A697}
.sb{fill:#C9A227}
.ss{fill:#6C8BB0}
.t-lab{font-family:'IBM Plex Mono',monospace;fill:#E9E4D6}
.t-dim{font-family:'IBM Plex Mono',monospace;fill:#A9A697}
.t-gold{font-family:'IBM Plex Mono',monospace;fill:#E4BE45}
.t-head{font-family:'Fraunces',serif;font-weight:700;fill:#E9E4D6;letter-spacing:.05em}

/* --- abstract / disclosure boxes --- */
.abstract{background:var(--vault-2);border:1px solid var(--line-bright);border-left:4px solid var(--steel);padding:22px 24px;margin:26px 0 6px;font-size:16.5px}
.abstract .lbl{font-family:'Fraunces',serif;font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--steel);display:block;margin-bottom:8px}

/* --- tables --- */
table{width:100%;border-collapse:collapse;margin:18px 0 22px;font-size:15px;background:var(--vault-2)}
th,td{border:1px solid var(--line-bright);padding:9px 12px;text-align:left;vertical-align:top}
th{font-family:'Fraunces',serif;font-weight:600;font-size:13.5px;background:var(--vault);color:var(--brass)}
td b{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:14px;color:var(--brass-bright)}

/* --- references --- */
.refs{font-size:14.5px;line-height:1.55}
.refs p{margin:0 0 10px;padding-left:2.6em;text-indent:-2.6em}
.refs h3{margin-top:22px}

/* --- tagline box --- */
.tagline{font-family:'Fraunces',serif;font-weight:700;text-align:center;border:1px solid var(--line-bright);border-left:4px solid var(--brass);background:var(--vault-2);padding:16px 18px;margin:34px 0 8px;font-size:16.5px}

/* --- coda + footer --- */
.coda-final{
  text-align:center;margin:64px 0 20px;
  font-family:'Fraunces',serif;font-size:22px;line-height:1.7;color:var(--ink);
}
.coda-final .brass{color:var(--brass-bright)}
.endrule{width:64px;height:2px;background:var(--brass);margin:56px auto}
.colophon{
  padding:44px 0 30px;border-top:1px solid var(--line-bright);margin-top:70px;
  font-size:14px;color:var(--ink-dim);font-style:italic;line-height:1.8;
}
footer{
  padding:36px 26px 56px;text-align:center;
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em;
  color:var(--ink-dim);line-height:2.1;
}
footer a{border:none}

/* --- print --- */
@media print{
  body{font-size:11.5pt}
  .wrap{max-width:100%;padding:0}
  figure.plate{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  h2{break-after:avoid}
}
