/* pbd-india.com — Sea Miles
   Dark manifest ledger. Tokens drive every component. */

:root{
  --ink:#0C0A06;
  --panel:#14110C;
  --panel2:#1E1912;
  --paper:#EDE4D2;
  --sand:#A79C88;
  --mute:#7F7563;
  --rule:#2A251E;
  --rule2:#3B342A;
  --amber:#D19A4E;
  --amber-dim:#B07A32;
  --serif:'Newsreader',Georgia,'Times New Roman',serif;
  --narrow:'Archivo Narrow','Arial Narrow',Helvetica,sans-serif;
  --step--1:13.5px;
  --step-0:clamp(17px,.95rem + .25vw,19.5px);
  --step-1:clamp(21px,1.1rem + .4vw,24px);
  --step-2:clamp(25px,1.3rem + .8vw,31px);
  --step-3:clamp(30px,1.5rem + 1.4vw,42px);
  --step-4:clamp(36px,1.7rem + 3vw,64px);
  --step-5:clamp(42px,1.9rem + 4.6vw,88px);
  --gut:clamp(20px,4vw,48px);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ink);color:var(--paper);
  font-family:var(--serif);font-size:var(--step-0);line-height:1.62;
  font-synthesis-weight:none;text-wrap:pretty;
}
img{max-width:100%;display:block}
a{color:var(--amber);text-decoration:none}
a:hover{color:var(--paper)}
h1,h2,h3,h4{font-weight:500;line-height:1.06;margin:0;letter-spacing:-.015em}
p{margin:0}
ul,ol{margin:0;padding:0}
table{border-collapse:collapse;width:100%}
hr{border:0;border-top:1px solid var(--rule);margin:0}
::selection{background:var(--amber);color:var(--ink)}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}

.wrap{max-width:1320px;margin:0 auto;padding-inline:var(--gut)}
.measure{max-width:70ch}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:99;background:var(--amber);color:var(--ink);padding:10px 14px;font-family:var(--narrow)}
.label{font-family:var(--narrow);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);margin:0}
.label--amber{color:var(--amber)}
.rule-top{border-top:1px solid var(--rule)}

/* ---------- kilometre signature ---------- */
.km{font-family:var(--narrow);color:var(--amber);font-variant-numeric:tabular-nums;letter-spacing:.02em;line-height:1;display:block}
.km-unit{font-size:.5em;letter-spacing:.18em;text-transform:uppercase;color:var(--amber-dim);margin-left:.35em}
.km-route{font-family:var(--narrow);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);display:block;margin-top:6px}

/* ---------- masthead ---------- */
.masthead{background:var(--ink);border-bottom:1px solid var(--rule2);position:relative;z-index:20}
.clauses{display:flex;flex-wrap:wrap;gap:6px 22px;padding:8px 0;border-bottom:1px solid var(--rule);font-family:var(--narrow);font-size:11px;letter-spacing:.17em;text-transform:uppercase;color:var(--mute)}
.clauses span:last-child{color:var(--amber-dim)}
.mast-main{display:flex;align-items:flex-end;justify-content:space-between;gap:36px;padding:22px 0 18px}
.wordmark{font-family:var(--serif);font-size:var(--step-4);line-height:.9;color:var(--paper);letter-spacing:-.025em;display:inline-block}
.wordmark:hover{color:var(--paper)}
.mast-standing{font-size:15px;line-height:1.5;color:var(--sand);max-width:44ch;margin-bottom:6px}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--rule)}
.nav ul{display:flex;flex-wrap:wrap;list-style:none;gap:0}
.nav a{display:block;padding:12px 20px 12px 0;font-family:var(--narrow);font-size:13px;letter-spacing:.13em;text-transform:uppercase;color:var(--paper)}
.nav li+li a{padding-left:20px}
.nav a[aria-current]{color:var(--amber)}
.nav .nav-index a{color:var(--sand);padding-right:0}
.nav-toggle{display:none}

/* ---------- hero / spine ---------- */
.hero{border-bottom:1px solid var(--rule2);padding:44px 0 40px}
.hero h1{font-size:var(--step-5);max-width:24ch}
.hero-sub{font-size:var(--step-1);color:var(--sand);max-width:52ch;margin-top:18px}
.hero-note{font-family:var(--narrow);font-size:13px;line-height:1.55;color:var(--mute);max-width:60ch;margin-top:16px}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:end}

/* ---------- band ---------- */
.band{border-bottom:1px solid var(--rule2);padding:38px 0 40px}
.band--panel{background:var(--panel)}
.band-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px 28px;border-bottom:1px solid var(--paper);padding-bottom:10px;margin-bottom:22px}
.band-head h2{font-size:var(--step-3)}
.band-no{font-family:var(--narrow);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}
.band-span{font-family:var(--narrow);font-size:12.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--amber);font-variant-numeric:tabular-nums}
.band-blurb{color:var(--sand);max-width:70ch;margin-bottom:26px;font-size:var(--step-0)}

/* ---------- ledger rows ---------- */
.ledger{list-style:none}
.ledger li{border-bottom:1px solid var(--rule)}
.ledger li:first-child{border-top:1px solid var(--rule)}
.ledger-row{display:grid;grid-template-columns:minmax(104px,132px) minmax(0,1fr) minmax(90px,auto);gap:clamp(14px,2.5vw,34px);align-items:start;padding:20px 0;color:var(--paper);position:relative}
.ledger-row:hover{color:var(--paper);background:var(--panel)}
.ledger-row:hover .lr-title{color:var(--amber)}
.lr-km{padding-top:3px}
.lr-km .km{font-size:26px}
.lr-title{font-size:var(--step-1);line-height:1.16;margin-bottom:7px;transition:color .12s}
.lr-dek{color:var(--sand);font-size:16px;line-height:1.55;max-width:66ch}
.lr-meta{font-family:var(--narrow);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);text-align:right;padding-top:8px}

/* ---------- ports strip ---------- */
.ports{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule)}
.port{background:var(--panel);padding:20px 22px 22px}
.port h3{font-size:var(--step-1);margin-bottom:6px}
.port .km{font-size:20px;margin-bottom:12px}
.port p{font-size:15px;color:var(--sand);line-height:1.5}
.port-coord{font-family:var(--narrow);font-size:11.5px;letter-spacing:.1em;color:var(--mute);margin-top:10px;font-variant-numeric:tabular-nums}

/* ---------- flagship ---------- */
.flagship{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,52px);align-items:center}
.flagship figure{margin:0}
.flagship img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:saturate(.72) contrast(1.04)}
.flagship h2{font-size:var(--step-4);margin:14px 0 16px}
.flagship .lead{font-size:var(--step-1);color:var(--sand)}
.more{display:inline-block;margin-top:22px;font-family:var(--narrow);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber);border-bottom:1px solid var(--amber-dim);padding-bottom:4px}
.credit{font-family:var(--narrow);font-size:11px;letter-spacing:.08em;color:var(--mute);margin-top:8px}

/* ---------- cards ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:clamp(18px,2.4vw,30px);list-style:none}
.card{display:flex;flex-direction:column;height:100%;background:var(--panel);border:1px solid var(--rule);color:var(--paper)}
.card:hover{border-color:var(--amber-dim);color:var(--paper)}
.card img{width:100%;aspect-ratio:3/2;object-fit:cover;filter:saturate(.7) contrast(1.05)}
.card-body{display:flex;flex-direction:column;flex:1;padding:18px 20px 20px;gap:8px}
.card .km{font-size:19px}
.card h3{font-size:var(--step-1);line-height:1.15;min-height:2.3em}
.card p{color:var(--sand);font-size:15.5px;line-height:1.55}
.card-meta{margin-top:auto;padding-top:14px;font-family:var(--narrow);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}

/* ---------- map ---------- */
.map-figure{margin:0;background:var(--panel);border:1px solid var(--rule2);padding:clamp(10px,1.4vw,18px)}
.map-figure svg{width:100%;height:auto;display:block;background:#0C0A06}
.map-figure figcaption{font-family:var(--narrow);font-size:12.5px;line-height:1.5;color:var(--mute);margin-top:12px;max-width:78ch}
.map-slot{display:block}
.maplands path{fill:#5A4A30;stroke:#9B8355;stroke-width:.6;stroke-linejoin:round}
.mapneighbours path{fill:#2A2419;stroke:#463D2D;stroke-width:.4;stroke-linejoin:round}
.maproute{fill:none;stroke:#C08B3E;stroke-width:1.1;stroke-dasharray:4 3.5;opacity:.9}
.maphome-ring{fill:none;stroke:var(--amber);stroke-width:1;opacity:.55}
.maphome{fill:var(--paper)}
.maplabel-home{fill:var(--paper);font-weight:600}
.maplabel-home tspan{fill:var(--paper)}
.mappin{fill:var(--amber)}
.mappin-ring{fill:none;stroke:var(--amber-dim);stroke-width:1}
.maplabel{font-family:var(--narrow);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;fill:#EFE8D8;paint-order:stroke;stroke:#0C0A06;stroke-width:2.4px;stroke-linejoin:round}
.maplabel tspan{fill:var(--amber);letter-spacing:.04em}
.mappin-ring{fill:none;stroke:var(--amber-dim);stroke-width:.9}

/* ---------- supporters ---------- */
.sponsor-groups{display:flex;flex-direction:column;gap:30px}
.sponsor-group h3{font-family:var(--narrow);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);font-weight:600;margin-bottom:12px;border-bottom:1px solid var(--rule);padding-bottom:8px}
.sponsor-row{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}
.sponsor{flex:1 1 250px;min-width:236px;display:flex;flex-direction:column;gap:12px;background:var(--panel2);border:1px solid var(--rule2);padding:16px}
.sponsor.feat{flex:2 1 514px}
.sponsor:hover{border-color:var(--amber-dim)}
.sponsor img{width:100%;height:48px;max-height:48px;object-fit:contain;object-position:left center;background:var(--ink);border:1px solid var(--rule);padding:7px 12px}
.sponsor-blurb{display:block;width:100%;min-width:200px;min-height:2.9em;border-top:1px solid var(--rule);padding-top:11px;font-family:var(--serif);font-size:15.5px;line-height:1.5;color:var(--sand)}

/* ---------- article ---------- */
.art-head{border-bottom:1px solid var(--rule2);padding:34px 0 30px}
.crumbs{font-family:var(--narrow);font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--mute);margin-bottom:20px}
.crumbs a{color:var(--sand)}
.art-head .km{font-size:clamp(30px,4vw,44px);margin-bottom:10px}
.art-head h1{font-size:var(--step-4);max-width:30ch;margin-bottom:18px}
.art-meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-family:var(--narrow);font-size:13px;letter-spacing:.13em;text-transform:uppercase;color:var(--mute);margin-top:22px}
.lead{font-size:var(--step-2);line-height:1.36;color:var(--paper);max-width:46ch}
.art-hero{margin:0;border-bottom:1px solid var(--rule2)}
.art-hero img{width:100%;max-height:min(62vh,640px);object-fit:cover;filter:saturate(.7) contrast(1.05)}
.art-hero figcaption{padding:10px 0 14px;font-family:var(--narrow);font-size:12.5px;color:var(--mute)}
.prose{padding:36px 0 10px}
.prose .measure{margin-inline:0}
.prose h2{font-size:var(--step-2);margin:38px 0 16px;max-width:34ch}
.prose h2:first-child{margin-top:0}
.prose p{margin-bottom:20px}
.prose p a{border-bottom:1px solid var(--rule2)}
.prose em{font-style:italic}

/* full-bleed record interruptions */
.record{background:var(--panel);border-top:1px solid var(--paper);border-bottom:1px solid var(--rule2);margin:40px 0;padding:26px 0 30px}
.record-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;margin-bottom:20px}
.record-head h2{font-size:var(--step-1);margin:0}
.record--wide{background:var(--panel2)}
.timeline{list-style:none;counter-reset:t}
.timeline li{display:grid;grid-template-columns:minmax(150px,230px) minmax(0,1fr);gap:clamp(14px,2vw,30px);padding:14px 0;border-bottom:1px solid var(--rule)}
.timeline li:first-child{border-top:1px solid var(--rule)}
.t-when{font-family:var(--narrow);font-size:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--amber);line-height:1.3}
.t-what{color:var(--paper);font-size:16.5px;line-height:1.55}
.datatable th,.datatable td{text-align:left;vertical-align:top;padding:14px 0;border-bottom:1px solid var(--rule)}
.datatable tr:first-child th,.datatable tr:first-child td{border-top:1px solid var(--rule)}
.datatable th{font-family:var(--narrow);font-weight:600;font-size:15px;letter-spacing:.06em;color:var(--amber);width:clamp(150px,26%,260px);padding-right:clamp(14px,2vw,30px)}
.datatable td{color:var(--paper);font-size:16.5px;line-height:1.55}
.datatable thead th{color:var(--mute);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase}
.callout{background:transparent;border-left:2px solid var(--amber);padding:4px 0 4px 20px;margin:0}
.callout ul{list-style:none}
.callout li{padding:8px 0;border-bottom:1px solid var(--rule);font-size:16.5px}
.callout li:last-child{border-bottom:0}
.callout p{font-size:var(--step-1);line-height:1.45}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--rule)}
.statblock{background:var(--panel2);padding:20px 22px;display:flex;flex-direction:column;gap:8px}
.stat-num{font-family:var(--narrow);font-size:clamp(28px,3.4vw,40px);line-height:1;color:var(--amber);font-variant-numeric:tabular-nums}
.stat-label{font-size:15.5px;line-height:1.5;color:var(--sand)}
.pullquote{margin:34px 0;border-top:2px solid var(--amber);border-bottom:1px solid var(--rule2);padding:20px 0 22px}
.pullquote p{font-size:var(--step-2);line-height:1.35;font-style:italic;margin:0;color:var(--paper)}
.blockquote{margin:30px 0;padding-left:20px;border-left:2px solid var(--rule2)}
.blockquote p{font-size:var(--step-1);font-style:italic;margin-bottom:10px}
.blockquote cite{font-family:var(--narrow);font-style:normal;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.note{font-family:var(--narrow);font-size:14.5px;line-height:1.6;color:var(--sand);border-top:1px solid var(--rule);padding-top:14px}
.article-figure{margin:34px 0}
.article-figure img{width:100%}
.article-figure figcaption{font-family:var(--narrow);font-size:12.5px;line-height:1.5;color:var(--mute);margin-top:10px}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.gallery figure{margin:0}
.gallery figcaption{font-family:var(--narrow);font-size:12px;color:var(--mute);margin-top:8px}
.versus th,.versus td{border:1px solid var(--rule);padding:12px 14px;text-align:left;vertical-align:top;font-size:16px}
.versus thead th{font-family:var(--narrow);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber);background:var(--panel2)}

/* related / further */
.related-links,.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;list-style:none}
.related-links a,.further-grid a{display:flex;flex-direction:column;gap:8px;height:100%;background:var(--panel);border:1px solid var(--rule);padding:18px;color:var(--paper);font-size:17px;line-height:1.25}
.related-links a:hover,.further-grid a:hover{border-color:var(--amber-dim);color:var(--amber)}
.related-links .km{font-size:16px}
.entity-ref{border-bottom:1px solid var(--rule2)}

/* profile / org cards */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.profile-card{display:flex;flex-direction:column;gap:10px;background:var(--panel);border:1px solid var(--rule);padding:20px}
.profile-card .p-photo{width:100%;aspect-ratio:1;object-fit:cover;filter:saturate(.7)}
.profile-card h3{font-size:var(--step-1)}
.profile-card .p-role{font-family:var(--narrow);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber)}
.profile-card p{font-size:15.5px;color:var(--sand);line-height:1.5}
.profile-card .p-links{margin-top:auto}
.profile-card .p-attr{font-family:var(--narrow);font-size:11.5px;color:var(--mute)}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.org-card{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:auto auto;gap:2px 14px;align-items:center;background:var(--panel);border:1px solid var(--rule);padding:14px}
.org-logo{grid-row:1/3;width:44px;height:44px;object-fit:contain;background:var(--ink);border:1px solid var(--rule)}
.org-name{font-size:16.5px;color:var(--paper);align-self:end}
.org-host{font-family:var(--narrow);font-size:12px;letter-spacing:.1em;color:var(--mute);align-self:start}
.org-card.no-logo{grid-template-columns:minmax(0,1fr)}
.org-card.no-logo .org-logo{display:none}

/* category list */
.cat-list{list-style:none}
.cat-list li{border-bottom:1px solid var(--rule)}
.cat-list li:first-child{border-top:1px solid var(--rule)}

/* index table */
.index-table{font-variant-numeric:tabular-nums}
.index-table thead th{font-family:var(--narrow);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);text-align:left;padding:0 14px 9px 0;border-bottom:1px solid var(--paper)}
.index-table td{padding:13px 14px 13px 0;border-bottom:1px solid var(--rule);vertical-align:top;font-size:16.5px}
.index-table .c-km{font-family:var(--narrow);color:var(--amber);white-space:nowrap}
.index-table .c-route{font-family:var(--narrow);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--sand)}
.index-table .c-sec{font-family:var(--narrow);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
.filters button{font-family:var(--narrow);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;background:transparent;border:1px solid var(--rule2);color:var(--sand);padding:7px 14px;cursor:pointer}
.filters button[aria-pressed=true]{background:var(--paper);color:var(--ink);border-color:var(--paper)}

/* expander */
.expander{margin-top:16px}
.expander input{position:absolute;opacity:0;pointer-events:none}
.expander .more-items{display:none}
.expander input:checked~.more-items{display:block}
.expander label{display:inline-block;margin-top:14px;font-family:var(--narrow);font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--amber);border-bottom:1px solid var(--amber-dim);padding-bottom:4px;cursor:pointer}
.expander input:checked~label{color:var(--sand);border-color:var(--rule2)}
.expander input:checked~label .lbl-more,.expander label .lbl-less{display:none}
.expander input:checked~label .lbl-less{display:inline}

/* footer */
.foot{background:var(--panel);border-top:1px solid var(--rule2);padding:38px 0 34px;color:var(--sand)}
.foot-top{display:flex;flex-wrap:wrap;gap:34px;justify-content:space-between;border-bottom:1px solid var(--rule);padding-bottom:24px}
.foot-state{max-width:56ch}
.foot-state p{margin-bottom:10px;font-size:16px;line-height:1.55;color:var(--paper)}
.foot-state .note{border:0;padding:0;color:var(--mute)}
.foot-nav{display:flex;flex-wrap:wrap;gap:34px}
.foot-nav ul{list-style:none;display:flex;flex-direction:column;gap:4px}
.foot-nav a{font-family:var(--narrow);font-size:13.5px;letter-spacing:.08em;color:var(--sand)}
.foot-nav a:hover{color:var(--amber)}
.foot-nav .label{margin-bottom:8px}
.foot-base{font-family:var(--narrow);font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--mute);padding-top:18px}

@media (max-width:900px){
  .hero-grid,.flagship{grid-template-columns:minmax(0,1fr)}
  .flagship figure{order:-1}
  .ledger-row{grid-template-columns:minmax(84px,104px) minmax(0,1fr)}
  .lr-meta{grid-column:2;text-align:left;padding-top:2px}
  .timeline li{grid-template-columns:minmax(0,1fr)}
  .t-when{margin-bottom:4px}
  .datatable th{width:auto;display:block;padding-bottom:4px;border-bottom:0}
  .datatable td{display:block;padding-top:0}
  .datatable tr:first-child td{border-top:0}
  .sponsor,.sponsor.feat{flex:1 1 100%}
  .sponsor.feat img{height:48px}
  .org-card{grid-template-columns:40px minmax(0,1fr)}
}
@media (max-width:720px){
  .mast-main{flex-direction:column;align-items:flex-start;gap:14px;padding-bottom:14px}
  .mast-standing{margin-bottom:0}
  .nav{flex-wrap:wrap;align-items:stretch}
  .nav-toggle{display:block;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--rule);color:var(--paper);font-family:var(--narrow);font-size:13px;letter-spacing:.15em;text-transform:uppercase;padding:12px 0;cursor:pointer}
  .nav ul{display:none;flex-direction:column;width:100%;padding-bottom:10px}
  .nav.open ul{display:flex}
  .nav a,.nav li+li a{padding:10px 0}
  .nav .nav-index{border-top:1px solid var(--rule)}
  .index-table thead{display:none}
  .index-table td{display:block;padding:4px 0;border:0}
  .index-table tr{display:block;border-bottom:1px solid var(--rule);padding:14px 0}
  .art-head .km{font-size:30px}
}
@media print{
  body{background:#fff;color:#111}
  .nav,.filters,.sponsor-groups{display:none}
}

/* ---------- band figures, charts, styleguide ---------- */
.band-figure{margin:0 0 26px}
.band-figure img{width:100%;aspect-ratio:21/9;object-fit:cover;filter:saturate(.7) contrast(1.05)}
.band-figure figcaption{font-family:var(--narrow);font-size:12.5px;line-height:1.5;color:var(--sand);margin-top:10px}
.credit-inline{color:var(--mute)}
.hero-grid .band-figure img{aspect-ratio:4/3}
.band-figure-wrap{padding:6px 0}
.chart{margin:0;overflow-x:auto}
.chart svg{width:100%;height:auto;min-width:620px;display:block}
.ch-lab{font-family:var(--narrow);font-size:12.5px;fill:var(--paper)}
.ch-val{font-family:var(--narrow);font-size:12px;fill:var(--amber)}
.ch-bar{fill:var(--amber-dim)}
.ch-axis{stroke:var(--rule2);stroke-width:1}
.ch-line{fill:none;stroke:var(--amber);stroke-width:2}
.ch-dot{fill:var(--paper)}
.chart figcaption{font-family:var(--narrow);font-size:12.5px;line-height:1.5;color:var(--mute);margin-top:12px;max-width:78ch}
.sg-item{border-top:1px solid var(--rule);padding:30px 0}
.sg-item>.label{margin-bottom:16px}
.sg-narrow{max-width:360px;border:1px dashed var(--rule2);padding:14px}

.hero h1{font-size:var(--step-4)}
.hero-stack{display:grid;gap:clamp(22px,3vw,38px)}
.hero-cols{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(20px,3vw,44px);align-items:start;margin-top:18px}
.hero-cols .hero-sub,.hero-cols .hero-note{margin-top:0}
@media (max-width:820px){.hero-cols{grid-template-columns:minmax(0,1fr)}}
@media (min-width:1240px){.hero h1{font-size:var(--step-5)}}

.map-legend{display:none;list-style:none;margin:12px 0 0;border-top:1px solid var(--rule)}
.map-legend li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid var(--rule);font-family:var(--narrow);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--sand)}
.map-legend li.home{color:var(--paper)}
.map-legend b{font-weight:500;color:var(--amber);font-variant-numeric:tabular-nums}
@media (max-width:720px){
  .maplabel{display:none}
  .map-legend{display:block}
  .mappin{r:4}
  .maproute{stroke-width:1.6;stroke-dasharray:6 5}
  .chart svg{min-width:720px}
  .ch-lab{font-size:16px}
  .ch-val{font-size:15px}
  .chart{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .filters button{flex:1 1 46%}
  .art-hero img{max-height:46vh}
  .statblock{padding:16px 18px}
  .record{margin:28px 0;padding:22px 0 24px}
}

@media (max-width:720px){
  .km-unit{font-size:11px;letter-spacing:.14em}
  .label,.band-no,.credit,.clauses,.port-coord,.foot-base,.credit-inline,
  .map-figure figcaption,.chart figcaption,.band-figure figcaption,
  .article-figure figcaption,.art-hero figcaption,.gallery figcaption{font-size:12px}
  .crumbs,.lr-meta,.km-route,.sponsor-group h3{font-size:12px}
  .art-meta{font-size:12.5px}
  .index-table .c-km,.index-table .c-route,.index-table .c-sec{font-size:13px}
  .note,.foot-nav a{font-size:14px}
}

/* sp-blurb-unhide: every supporter slot shows its text — no half-texted grids */
.sponsor-blurb:not(:empty){display:block!important;line-height:1.5}

/* sp-blurb-link: money-link anchors in blurbs must inherit the blurb colour (readable on dark OR light tiles) */
.sponsor-blurb a{color:inherit;text-decoration:underline;text-underline-offset:2px}



/* auto-fit counts repetitions using the track's MAX when it is definite, so a 296px cap
   still computed 4x296+42=1226 > 1224 and fell back to three columns. 290 fits four.
   Original note: 4x296 + 3x14 gaps = 1226 against a 1224px container — two pixels short, so auto-fit dropped to
   three columns and left a whole column empty. A minmax track fits four and grows them to fill. */

/* op-uniform-marks — logo grids are the one place variety must not apply: our marks run 1.0:1 to
   14.6:1, so the SLOT stays constant and the mark fits inside it.
   The design shipped `flex:1 1 250px` with `.feat{flex:2 1 514px}`, so tiles grew to absorb leftover
   space and a lone featured slot stretched one wordmark across a whole row.
   Track sizing is fiddly here: `auto-fit` counts repetitions using the track's MAXIMUM when that is
   definite, so a 296px cap computed 4x296+3x14 = 1226 against a 1224px container and silently fell
   back to THREE columns, orphaning the fourth slot. 290 fits four. */
.sponsor-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,290px));justify-content:start;gap:14px;align-items:stretch}
.sponsor,.sponsor.feat{flex:none;min-width:0;width:auto}
@media (max-width:820px){.sponsor-row{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}}

/* op-centre-artwork: operator: centre the logos. The BOX was already centred in the tile (17px
   either side) — the artwork inside it was not: object-position was 0% 50%, so every wordmark sat
   flush against the left edge of its plate. Centre it in both axes.
   (⚠️ this build links assets/site.css; the style.css beside index.html is an unused leftover and
   my first attempt went in there, which changed nothing.) */
.sponsor img,.sponsor-box img,.sp-logo img{object-position:center center!important}

/* op-money-columns: the supporters block ran one tile per row — 10 tiles,
   1856px at 390, 13% of the whole page. Two columns bring it to
   1623px (13% shorter). Checked before writing: no new overflow, smallest mark still
   132px wide, longest blurb 1 lines, tile heights 176-273px.
   A block that fails any of those is left in one column — two narrow columns can make a block
   TALLER once the copy rewraps, which is the case the operator warned about.
   An odd tile count means the lead tile spans the whole row, so the block does not end on an empty cell. Only the tier(s) that were one-per-row are touched (.sponsor-row), never the section
   that holds several tiers: forcing a grid on that would put a featured row and a regulars run
   side by side. Phone widths only. */
@media (max-width:640px){
  .sponsor-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:14px!important}
    .sponsor-row > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-row > * *{min-width:0!important;max-width:100%}
    .sponsor-row img,.sponsor-row svg{max-width:100%;height:auto}

}

/* op-blurb-rows: money blurbs ran to 8 rows at 390, 1623px of tier across
   10 tiles. Operator: blurbs should show "2-3 rows max" on mobile —
   a blurb that long eats the screen and, in a two-column grid, rewraps into more height than
   the columns save. Held to three rows at phone width; the copy stays in the markup and
   desktop is untouched. Only the tier(s) measured past three rows are clamped. */
@media (max-width:640px){
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:81px!important;min-height:0!important;overflow:hidden!important}
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:81px!important;min-height:0!important;overflow:hidden!important}
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:81px!important;min-height:0!important;overflow:hidden!important}
}

/* op-odd-tier-lead: .sponsor-row (3 tiles), .sponsor-row (3 tiles) lay out two per row with an ODD tile count, so the
   block ended on a lone tile beside an empty cell. The lead tile takes the whole row instead —
   operator: "the 1st item in such rows to be 100% width, then split" — so the grid reads as
   complete. These tiers were already two-per-row, which is why the column pass never wrote the
   rule for them. Checked before writing: no new horizontal overflow, block not more than 15%
   taller. Phone widths only; desktop keeps Design's layout. */
@media (max-width:640px){
  .sponsor-row:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
  .sponsor-row:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
}

/* op-hover-pad */
.ledger-row{padding-left:clamp(12px,3.5vw,22px)!important;padding-right:clamp(12px,3.5vw,22px)!important}
/* op-hover-pad:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(div > figure.band-figure > img,
  div.flagship > figure > img,
  div.wrap > figure.article-figure > img,
  div.wrap > figure.band-figure > img,
  main > figure.art-hero > img){height:auto}
/* op-img-dims:end */
@media (min-width:860px) and (max-width:1439px){.sponsor-row.sponsor-row:has(> [data-partner]){grid-template-columns:repeat(auto-fill,minmax(min(290px,calc(50% - 7px)),1fr))!important;justify-content:stretch!important}.sponsor-row.sponsor-row > [data-partner]{width:auto!important;max-width:none!important}}
.sponsor-row > [data-partner] img{background:transparent!important}
.sponsor-row [data-partner] img{border:0!important}.sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
