/* ============================================================
   THE THINK TANK — IDEAS FOR TOMORROW
   Design system: policy intelligence library
   ============================================================ */

:root{
  /* --- core palette --- */
  --ink:        #10141c;   /* near-black charcoal */
  --ink-2:      #1a2130;   /* deep ink navy, panels */
  --ink-3:      #262f42;   /* raised ink surfaces */
  --parchment:  #f1ebdc;   /* warm parchment */
  --parchment-2:#e7dfc9;   /* deeper parchment */
  --paper:      #faf7ef;   /* lightest surface */

  --red:        #8a3226;   /* muted institutional red */
  --copper:     #a3672f;   /* oxidized copper */
  --olive:      #56603f;   /* subdued olive */
  --slate:      #4d5c72;   /* cool slate */
  --blue:       #33587f;   /* restrained electric blue */
  --blue-bright:#3f7bb8;   /* interaction-state blue */

  --text:       #16191f;
  --text-dim:   #52596a;
  --text-faint: #7c8194;
  --line:       rgba(16,20,28,0.16);
  --line-soft:  rgba(16,20,28,0.09);

  --bg:         var(--parchment);
  --surface:    var(--paper);
  --surface-2:  var(--parchment-2);
  --on-ink:     #efe9da;

  --radius: 2px;
  --serif: "Newsreader", "Iowan Old Style", Georgia, serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --container: 1280px;
  --gap: 24px;

  --ease: cubic-bezier(.2,.7,.3,1);
  --speed: 180ms;
}

[data-theme="dark"]{
  --bg:        var(--ink);
  --surface:   var(--ink-2);
  --surface-2: var(--ink-3);
  --text:      #ece7d8;
  --text-dim:  #b6b2a4;
  --text-faint:#82869a;
  --line:      rgba(239,233,218,0.16);
  --line-soft: rgba(239,233,218,0.08);
  --on-ink:    #efe9da;
  --copper:    #c88a52;
  --blue-bright:#6ea3d8;
  --red:       #c1584a;
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.55;
  transition: background var(--speed) var(--ease), color var(--speed) var(--ease);
  -webkit-font-smoothing: antialiased;
}
img,svg{ display:block; max-width:100%; }
a{ color: inherit; text-decoration: none; }
button{ font-family: inherit; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p{ margin:0; }

::selection{ background: var(--copper); color: var(--paper); }

:focus-visible{
  outline: 2px solid var(--blue-bright);
  outline-offset: 3px;
}

/* ---------- layout / grid ---------- */
.wrap{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 32px;
}
.grid12{
  display:grid;
  grid-template-columns: repeat(12,1fr);
  gap: var(--gap);
}
@media (max-width: 980px){
  .grid12{ grid-template-columns: repeat(8,1fr); }
  .wrap{ padding: 0 24px; }
}
@media (max-width: 620px){
  .grid12{ grid-template-columns: repeat(4,1fr); gap: 16px; }
  .wrap{ padding: 0 18px; }
}

.rule{ border:0; border-top:1px solid var(--line); margin:0; }
.eyebrow{
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--text-dim);
}
.serif{ font-family: var(--serif); }

/* ---------- buttons / controls ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding: 12px 20px;
  border:1px solid var(--ink);
  background: var(--ink);
  color: var(--on-ink);
  font-size: 13px; font-weight:600; letter-spacing:.04em;
  text-transform: uppercase;
  cursor:pointer;
  transition: transform var(--speed) var(--ease), background var(--speed);
}
.btn:hover{ transform: translateY(-1px); }
[data-theme="dark"] .btn{ background: var(--parchment); color: var(--ink); border-color: var(--parchment); }
.btn.ghost{ background: transparent; color: var(--text); border-color: var(--line); }
.btn.ghost:hover{ border-color: var(--text); }
.btn.small{ padding: 8px 14px; font-size: 11px; }
.btn[disabled]{ opacity:.5; cursor:default; transform:none; }

.pill{
  display:inline-flex; align-items:center; gap:6px;
  padding: 5px 11px;
  border:1px solid var(--line);
  font-size: 11px; font-weight:600; letter-spacing:.05em; text-transform:uppercase;
  color: var(--text-dim);
  background: var(--surface);
}
.pill.active{ border-color: var(--copper); color: var(--copper); }
.pill button{ background:none;border:0;color:inherit;cursor:pointer;font-size:13px;line-height:1;padding:0; }

input[type="text"],input[type="email"],input[type="search"],textarea,select{
  width:100%;
  font-family: var(--sans);
  font-size: 15px;
  padding: 12px 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  color: var(--text);
  border-radius: var(--radius);
}
textarea{ resize: vertical; min-height: 120px; }
label{ font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color: var(--text-dim); display:block; margin-bottom:6px; }
.field{ margin-bottom:18px; }
.field-error{ color: var(--red); font-size:12px; margin-top:6px; }

/* ---------- header ---------- */
.site-header{
  position: sticky; top:0; z-index:60;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.header-bar{
  display:flex; align-items:center; justify-content:space-between;
  padding: 26px 0;
  transition: padding var(--speed) var(--ease);
}
.site-header.compact .header-bar{ padding: 14px 0; }
.brand{ display:flex; flex-direction:column; gap:2px; }
.brand-name{ font-family: var(--serif); font-size: 21px; font-weight:600; letter-spacing:.01em; }
.brand-sub{ font-size: 10px; letter-spacing:.14em; text-transform:uppercase; color: var(--text-dim); }
.site-header.compact .brand-sub{ display:none; }

.main-nav{ display:flex; align-items:center; gap: 28px; }
.main-nav a{ font-size:13px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; position:relative; }
.main-nav a::after{
  content:""; position:absolute; left:0; bottom:-6px; height:1px; width:0;
  background: var(--copper); transition: width var(--speed) var(--ease);
}
.main-nav a:hover::after, .main-nav a.active::after{ width:100%; }
.header-controls{ display:flex; align-items:center; gap:14px; }
.icon-btn{
  background:none;border:1px solid var(--line); cursor:pointer; color:var(--text);
  padding:9px 12px; font-size:12px; letter-spacing:.04em; text-transform:uppercase; display:flex; align-items:center; gap:6px;
}
.icon-btn:hover{ border-color: var(--text); }
.menu-toggle{ display:none; }

@media (max-width: 980px){
  .main-nav{ display:none; }
  .menu-toggle{ display:flex; }
  .header-controls .label-text{ display:none; }
}

/* mobile nav drawer */
.mobile-nav{
  position: fixed; inset:0; z-index: 100;
  background: var(--ink); color: var(--on-ink);
  transform: translateX(100%);
  transition: transform 260ms var(--ease);
  overflow-y:auto;
}
.mobile-nav.open{ transform: translateX(0); }
.mobile-nav-inner{ padding: 26px 24px 60px; max-width:520px; }
.mobile-nav-top{ display:flex; justify-content:space-between; align-items:center; margin-bottom:34px;}
.mobile-nav a{ display:block; font-family: var(--serif); font-size: 26px; padding: 13px 0; border-bottom:1px solid rgba(239,233,218,.12); }
.mobile-nav .mobile-sub a{ font-family: var(--sans); font-size:14px; text-transform:uppercase; letter-spacing:.04em; padding:11px 0; }
.mobile-nav .close-btn{ background:none;border:1px solid rgba(239,233,218,.3); color:var(--on-ink); padding:9px 13px; cursor:pointer; }
body.nav-locked{ overflow:hidden; }

/* ---------- hero / homepage ---------- */
.hero{ padding: 68px 0 50px; }
.hero-kicker{ font-size:12px; letter-spacing:.14em; text-transform:uppercase; color: var(--copper); font-weight:700; margin-bottom:18px; }
.hero-title{ font-family: var(--serif); font-size: clamp(40px, 6.4vw, 84px); line-height: .98; font-weight:600; letter-spacing:-.01em; }
.hero-title small{ display:block; font-size: .38em; font-family: var(--sans); font-weight:700; letter-spacing:.02em; color: var(--text-dim); margin-top:18px; text-transform:none; }
.hero-lede{ font-family: var(--serif); font-style:italic; font-size:20px; color: var(--text-dim); max-width:560px; margin-top:26px; }

.signals{ margin-top: 56px; border-top:1px solid var(--line); }
.signal-row{
  display:grid; grid-template-columns: repeat(5,1fr);
  border-bottom:1px solid var(--line);
}
.signal{
  padding: 20px 18px; border-right:1px solid var(--line);
  cursor:pointer; background: var(--surface); transition: background var(--speed);
  position:relative;
}
.signal:last-child{ border-right:0; }
.signal:hover, .signal:focus-visible{ background: var(--surface-2); }
.signal-name{ font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.signal-meta{ font-size:11px; color: var(--text-faint); margin-top:8px; }
.signal-detail{ display:none; margin-top:12px; padding-top:12px; border-top:1px dashed var(--line); font-size:12px; color: var(--text-dim); line-height:1.5; }
.signal.open .signal-detail{ display:block; }
@media (max-width: 900px){ .signal-row{ grid-template-columns: repeat(2,1fr); } .signal:nth-child(2n){ border-right:0; } }

.strip{ display:flex; overflow-x:auto; gap:0; border-bottom:1px solid var(--line); }
.strip-item{ flex:0 0 240px; padding: 18px 20px; border-right:1px solid var(--line); }
.strip-tag{ font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--copper); }
.strip-title{ font-family: var(--serif); font-size:17px; margin-top:8px; line-height:1.3; }
.strip-meta{ font-size:11px; color: var(--text-faint); margin-top:10px; }

/* ---------- index rows (editorial list, not cards) ---------- */
.index-row{
  display:grid; grid-template-columns: 64px 1fr auto; gap:20px; align-items:baseline;
  padding: 24px 0; border-bottom:1px solid var(--line);
  transition: background var(--speed);
}
.index-row:hover{ background: var(--surface); }
.index-num{ font-family: var(--serif); font-size:14px; color: var(--text-faint); }
.index-title{ font-family: var(--serif); font-size: 22px; line-height:1.25; }
.index-meta{ font-size:12px; color: var(--text-dim); margin-top:8px; display:flex; gap:12px; flex-wrap:wrap; }
.index-meta span{ white-space:nowrap; }
.index-summary{ font-size:14px; color: var(--text-dim); margin-top:10px; max-width:640px; }
.index-tags{ display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.index-status{ font-size:11px; text-align:right; color: var(--text-faint); white-space:nowrap; }
@media (max-width: 640px){
  .index-row{ grid-template-columns: 1fr; gap:6px; }
  .index-status{ text-align:left; }
}

/* ---------- section scaffolding ---------- */
.section{ padding: 70px 0; border-bottom:1px solid var(--line); }
.section.tight{ padding: 44px 0; }
.section-head{ display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:34px; gap:20px; flex-wrap:wrap; }
.section-title{ font-family: var(--serif); font-size: 34px; }
.section-note{ font-size:13px; color: var(--text-dim); max-width:420px; }

/* ---------- library / filters ---------- */
.library-shell{ display:grid; grid-template-columns: 260px 1fr; gap:44px; align-items:start; }
@media (max-width: 900px){ .library-shell{ grid-template-columns: 1fr; } }
.filter-group{ margin-bottom:30px; }
.filter-group h4{ font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color: var(--text-faint); margin-bottom:12px; }
.filter-opt{
  display:flex; justify-content:space-between; width:100%; text-align:left;
  padding: 9px 0; border-bottom:1px solid var(--line-soft);
  background:none; border-left:0; border-right:0; border-top:0; cursor:pointer;
  font-size:13.5px; color: var(--text);
}
.filter-opt.active{ color: var(--copper); font-weight:700; }
.filter-opt .count{ color: var(--text-faint); font-size:12px; }
.active-filters{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:22px; }
.result-bar{ display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; flex-wrap:wrap; gap:12px; }
.result-count{ font-family: var(--serif); font-size:18px; }
.sort-select{ width:auto; padding:8px 10px; font-size:12px; }

.mobile-filter-btn{ display:none; }
@media (max-width: 900px){
  .mobile-filter-btn{ display:inline-flex; }
  .desktop-filters{ display:none; }
}
.filter-sheet{
  position: fixed; inset:0; z-index:110; display:none;
  background: rgba(16,20,28,.5);
}
.filter-sheet.open{ display:block; }
.filter-sheet-panel{
  position:absolute; right:0; top:0; bottom:0; width:min(92vw,380px);
  background: var(--bg); padding: 24px; overflow-y:auto;
}
@media (max-width: 620px){
  .filter-sheet-panel{ left:0; right:0; width:auto; top:auto; height:82vh; bottom:0; }
}

.empty-state{ text-align:center; padding: 60px 20px; }
.empty-state h3{ font-family: var(--serif); font-size:22px; margin-bottom:10px; }
.empty-state p{ color: var(--text-dim); margin-bottom:20px; }

/* ---------- research detail ---------- */
.research-head{ padding: 50px 0 30px; }
.research-kicker{ font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--text-dim); }
.research-kicker b{ color: var(--copper); }
.research-title{ font-family: var(--serif); font-size: clamp(30px,4.4vw,52px); line-height:1.06; margin-top:16px; }
.research-sub{ font-family: var(--serif); font-style:italic; color: var(--text-dim); font-size:19px; margin-top:14px; }
.research-meta-row{ display:flex; gap:20px; flex-wrap:wrap; margin-top:22px; font-size:13px; color: var(--text-dim); }

.content-shell{ display:grid; grid-template-columns: 200px 1fr 200px; gap:44px; align-items:start; }
@media (max-width: 1080px){ .content-shell{ grid-template-columns: 1fr; } }
.toc{ position: sticky; top: 100px; font-size:12.5px; }
.toc a{ display:block; padding:7px 0; color: var(--text-faint); border-left:2px solid transparent; padding-left:12px; }
.toc a.current{ color: var(--copper); border-left-color: var(--copper); font-weight:600; }
.rail{ position: sticky; top: 100px; }
.rail-box{ border:1px solid var(--line); padding:18px; margin-bottom:16px; }
.rail-box h5{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color: var(--text-faint); margin-bottom:10px; }
.rail-actions{ display:flex; flex-wrap:wrap; gap:8px; }

.prose{ max-width: 720px; font-size: 17.5px; line-height:1.7; }
.prose.narrow{ max-width:600px; }
.prose.wide{ max-width:880px; }
.prose h2{ font-family: var(--serif); font-size:27px; margin-top:46px; margin-bottom:16px; scroll-margin-top:100px; }
.prose h3{ font-family: var(--serif); font-size:20px; margin-top:30px; margin-bottom:10px; scroll-margin-top:100px; }
.prose p{ margin-bottom:18px; color: var(--text); }
.prose p + p{ margin-top:0; }

.finding{ display:grid; grid-template-columns:48px 1fr; gap:16px; padding:22px 0; border-top:1px solid var(--line); }
.finding-num{ font-family: var(--serif); font-size:22px; color: var(--copper); }
.finding h4{ font-family: var(--serif); font-size:18px; margin-bottom:8px; }
.finding p{ font-size:14.5px; color: var(--text-dim); }
.finding .evidence{ font-size:12.5px; color: var(--text-faint); margin-top:8px; font-style:italic; }
.finding .copy-btn{ background:none;border:1px solid var(--line); font-size:11px; padding:5px 9px; margin-top:10px; cursor:pointer; text-transform:uppercase; letter-spacing:.04em; }

.rec{ padding:20px 0; border-top:1px solid var(--line); }
.rec-num{ font-size:12px; color: var(--text-faint); font-weight:700; }
.rec h4{ font-family: var(--serif); font-size:18px; margin:8px 0 8px; }
.rec dl{ display:grid; grid-template-columns: 140px 1fr; gap:6px 14px; font-size:13.5px; margin-top:10px; }
.rec dt{ color: var(--text-faint); text-transform:uppercase; font-size:11px; letter-spacing:.04em; }
.rec dd{ margin:0; color: var(--text-dim); }

details.method{ border:1px solid var(--line); padding: 0; margin-top:20px; }
details.method summary{ cursor:pointer; padding:16px 18px; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; list-style:none; display:flex; justify-content:space-between; }
details.method summary::-webkit-details-marker{ display:none; }
details.method summary::after{ content:"+"; font-family: var(--serif); font-size:18px; }
details.method[open] summary::after{ content:"–"; }
details.method .method-body{ padding: 0 18px 20px; font-size:14px; color: var(--text-dim); }
details.method .method-body dl{ display:grid; grid-template-columns:140px 1fr; gap:10px 14px; margin-top:10px; font-size:13.5px; }
details.method .method-body dt{ color:var(--text-faint); text-transform:uppercase; font-size:11px; }

.progress-bar{ position: fixed; top:0; left:0; height:2px; background: var(--copper); z-index:80; width:0%; transition:width 80ms linear; }

.reading-controls{ display:flex; gap:10px; flex-wrap:wrap; }
.reading-controls .icon-btn.on{ border-color: var(--copper); color: var(--copper); }

/* ---------- policy options / findings / matrices ---------- */
.option-tabs{ display:flex; gap:2px; margin-bottom:24px; flex-wrap:wrap; }
.option-tab{ padding:12px 18px; border:1px solid var(--line); background: var(--surface); cursor:pointer; font-size:12.5px; font-weight:700; letter-spacing:.03em; }
.option-tab.active{ background: var(--ink); color: var(--on-ink); border-color: var(--ink); }
[data-theme="dark"] .option-tab.active{ background: var(--parchment); color: var(--ink); }
.option-panel{ border:1px solid var(--line); padding:26px; }
.option-panel dl{ display:grid; grid-template-columns: 180px 1fr; gap:12px 16px; font-size:14px; }
.option-panel dt{ text-transform:uppercase; font-size:11px; letter-spacing:.04em; color: var(--text-faint); }
.option-panel dd{ margin:0; color: var(--text-dim); }

/* ---------- pressure index ---------- */
.pressure-wrap{ display:grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items:start; }
@media (max-width: 900px){ .pressure-wrap{ grid-template-columns:1fr; } }
.pressure-list{ display:flex; flex-direction:column; }
.pressure-item{ display:flex; align-items:center; justify-content:space-between; padding:16px 0; border-bottom:1px solid var(--line); background:none; border-left:0; border-right:0; border-top:0; width:100%; text-align:left; cursor:pointer; }
.pressure-item.active{ color: var(--copper); }
.pressure-name{ font-family: var(--serif); font-size:19px; }
.pressure-score{ font-size:13px; color: var(--text-faint); display:flex; align-items:center; gap:10px; }
.pressure-track{ width:80px; height:4px; background: var(--line); position:relative; }
.pressure-track i{ position:absolute; left:0; top:0; bottom:0; background: var(--copper); display:block; }
.pressure-detail{ border:1px solid var(--line); padding:26px; min-height: 260px; }
.pressure-detail .num{ font-family: var(--serif); font-size:52px; line-height:1; }

/* ---------- timeline ---------- */
.timeline{ position:relative; padding-left:26px; }
.timeline::before{ content:""; position:absolute; left:5px; top:6px; bottom:6px; width:1px; background: var(--line); }
.timeline-item{ position:relative; padding-bottom:28px; cursor:pointer; }
.timeline-item::before{ content:""; position:absolute; left:-26px; top:5px; width:9px; height:9px; border:2px solid var(--copper); background: var(--bg); }
.timeline-year{ font-family: var(--serif); font-size:15px; color: var(--copper); }
.timeline-body{ font-size:14px; color: var(--text-dim); margin-top:4px; }

/* ---------- network ---------- */
.network-wrap{ border:1px solid var(--line); padding: 20px; overflow-x:auto; }
.network-svg{ min-width: 640px; }
.network-node{ cursor:pointer; }
.network-node circle{ transition: r var(--speed); }
.network-node:hover circle,.network-node:focus circle{ r:9; }
.network-node text{ font-size:10px; font-family: var(--sans); }
.network-detail{ margin-top:18px; padding-top:18px; border-top:1px solid var(--line); font-size:14px; min-height:60px; }

/* ---------- experts ---------- */
.expert-row{ display:grid; grid-template-columns: 1fr 220px; gap:20px; padding:24px 0; border-bottom:1px solid var(--line); align-items:start; }
@media (max-width:700px){ .expert-row{ grid-template-columns:1fr; } }
.expert-name{ font-family: var(--serif); font-size:22px; }
.expert-role{ font-size:12.5px; color: var(--text-dim); margin-top:4px; }
.expert-areas{ display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }

.matrix-wrap{ overflow-x:auto; }
table.matrix{ border-collapse: collapse; width:100%; min-width:720px; font-size:13px; }
table.matrix th, table.matrix td{ border:1px solid var(--line); padding:10px 12px; text-align:center; }
table.matrix th{ font-size:11px; text-transform:uppercase; letter-spacing:.03em; color: var(--text-dim); font-weight:700; }
table.matrix td.name-cell{ text-align:left; font-family: var(--serif); font-size:14.5px; }
table.matrix td button{ width:100%; height:100%; background:none; border:0; cursor:pointer; color: var(--text-faint); font-size:14px; }
table.matrix td button.on{ color: var(--copper); font-weight:700; }

/* ---------- toasts / modals ---------- */
.toast-stack{ position: fixed; bottom: 22px; left:50%; transform:translateX(-50%); z-index:200; display:flex; flex-direction:column; gap:8px; align-items:center; }
.toast{
  background: var(--ink); color: var(--on-ink);
  padding: 12px 20px; font-size:13px; font-weight:600; letter-spacing:.02em;
  border-radius: var(--radius);
  animation: toastin 180ms var(--ease);
}
[data-theme="dark"] .toast{ background: var(--parchment); color: var(--ink); }
@keyframes toastin{ from{ opacity:0; transform: translateY(8px);} to{opacity:1;transform:translateY(0);} }

.modal-overlay{ position:fixed; inset:0; background: rgba(16,20,28,.55); z-index:150; display:none; align-items:center; justify-content:center; padding:20px; }
.modal-overlay.open{ display:flex; }
.modal-box{ background: var(--bg); max-width: 560px; width:100%; max-height:86vh; overflow-y:auto; padding: 30px; position:relative; border:1px solid var(--line); }
.modal-close{ position:absolute; top:16px; right:16px; background:none; border:1px solid var(--line); cursor:pointer; padding:8px 11px; font-size:12px; }

/* command palette */
.cmdk-box{ max-width:600px; padding:0; }
.cmdk-input{ padding:20px 22px; border:0; border-bottom:1px solid var(--line); font-size:18px; font-family: var(--serif); }
.cmdk-input:focus{ outline:none; }
.cmdk-list{ max-height: 380px; overflow-y:auto; }
.cmdk-item{ padding: 13px 22px; border-bottom:1px solid var(--line-soft); cursor:pointer; display:flex; justify-content:space-between; font-size:14px; }
.cmdk-item.sel, .cmdk-item:hover{ background: var(--surface-2); }
.cmdk-item small{ color: var(--text-faint); text-transform:uppercase; font-size:10px; letter-spacing:.05em; }

/* ---------- footer ---------- */
.site-footer{ background: var(--ink); color: var(--on-ink); padding: 60px 0 26px; }
[data-theme="dark"] .site-footer{ background: var(--ink-2); }
.footer-top{ display:grid; grid-template-columns: 1.4fr repeat(4,1fr); gap:30px; padding-bottom:40px; border-bottom:1px solid rgba(239,233,218,.14); }
@media (max-width: 900px){ .footer-top{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px){ .footer-top{ grid-template-columns: 1fr; } }
.footer-top h5{ font-size:11px; text-transform:uppercase; letter-spacing:.06em; color: rgba(239,233,218,.55); margin-bottom:14px; }
.footer-top a{ display:block; font-size:13.5px; padding:6px 0; color: rgba(239,233,218,.85); }
.footer-brand-title{ font-family: var(--serif); font-size:22px; }
.footer-brand-sub{ font-size:11px; letter-spacing:.1em; text-transform:uppercase; color: rgba(239,233,218,.5); margin-top:6px; }
.footer-index{ display:flex; gap:22px; flex-wrap:wrap; padding: 22px 0; font-size:11px; color: rgba(239,233,218,.55); letter-spacing:.04em; }
.footer-index a{ color: rgba(239,233,218,.75); }
.footer-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12px; color: rgba(239,233,218,.5); padding-top:18px; }
.footer-bottom a{ color: rgba(239,233,218,.7); margin-right:16px; }

/* ---------- utility ---------- */
.mt-0{margin-top:0} .center{text-align:center}
.skip-link{ position:absolute; left:-999px; top:0; background:var(--ink); color:var(--on-ink); padding:12px 18px; z-index:300; }
.skip-link:focus{ left:12px; top:12px; }
.loading-line{ height:1px; background: var(--line); position:relative; overflow:hidden; margin: 30px 0; }
.loading-line::after{ content:""; position:absolute; left:-30%; top:0; bottom:0; width:30%; background: var(--copper); animation: loadmove 1.1s ease-in-out infinite; }
@keyframes loadmove{ 0%{left:-30%} 50%{left:60%} 100%{left:130%} }
.loading-label{ font-size:12px; text-transform:uppercase; letter-spacing:.06em; color: var(--text-faint); text-align:center; }

@media print{
  .site-header,.mobile-nav,.signals,.strip,.toast-stack,.modal-overlay,.reading-controls,.rail,.toc,
  .library-shell aside,.mobile-filter-btn,.filter-sheet,.site-footer,.cta-block,.desktop-filters,#cursorLabel{ display:none !important; }
  body{ background:#fff; color:#000; }
  .prose{ max-width:100%; }
}

.cursor-label{
  position: fixed; pointer-events:none; z-index:400;
  font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  background: var(--ink); color: var(--on-ink); padding: 5px 9px; transform: translate(14px,14px);
  display:none;
}
@media (hover:hover) and (pointer:fine){ body.cursor-on .cursor-label{ display:block; } }
