/* ==========================================================================
   Le Réseau Asie — The Atlas
   Sand paper · navy ink · terracotta rules
   ========================================================================== */

:root{
  --paper:#EDE3D2;      /* body sand */
  --ivory:#FBF7EF;      /* panels, cards, header */
  --ink:#1B2A46;        /* navy */
  --accent:#C6402F;     /* terracotta */
  --inset:#F5EEE1;      /* inset panel */
  --sel-row:#F3EADA;
  --img-bg:#E2D6C0;
  --sea:#E4DAC8;

  --t1:#22314C; --t2:#33445F; --t3:#3E4E6C; --t4:#4A5872;
  --m1:#5A6A85; --m2:#6E7C96; --m3:#7C89A0; --m4:#8A96AC;
  --label:#41537A;

  --d-text:#F3EBDC; --d-dek:#C9D2E2; --d-dek2:#B9C4D6; --d-dek3:#A9B6CC;
  --d-mute:#8FA0BC; --d-mute2:#6F80A0; --coral:#E8A48F; --tile-hover:#22355A;

  --h08:rgba(27,42,70,.08); --h10:rgba(27,42,70,.10); --h12:rgba(27,42,70,.12);
  --h14:rgba(27,42,70,.14); --h16:rgba(27,42,70,.16); --h18:rgba(27,42,70,.18);
  --h20:rgba(27,42,70,.20); --h28:rgba(27,42,70,.28);
  --dh14:rgba(243,235,220,.14); --dh16:rgba(243,235,220,.16);
  --dh20:rgba(243,235,220,.20); --dh28:rgba(243,235,220,.28);

  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --sans:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;

  --shell:1320px;
  --gutter:40px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.6;
  font-synthesis-weight:none;-webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
::selection{background:var(--accent);color:var(--ivory)}
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;margin:0}
p{margin:0}
ul,ol{margin:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.shell{max-width:var(--shell);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:99;background:var(--ivory);padding:10px 14px;border:1px solid var(--ink)}

/* ---------- shared type atoms ---------- */
.kicker{font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.kicker--wide{letter-spacing:.26em}
.eyebrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.eyebrow-rule{width:18px;height:1px;background:rgba(27,42,70,.3);flex:none}
.eyebrow .sub{font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--label)}
.label{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--m2)}
.rule--heavy{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  border-bottom:2px solid var(--ink);padding-bottom:13px;margin-bottom:28px;flex-wrap:wrap}
.rule--heavy h2{font-size:33px;line-height:1.1}
.rule--heavy .label{padding-bottom:4px}
.band--dark{background:var(--ink);color:var(--d-text)}
.stat .n{font-family:var(--serif);font-size:34px;line-height:1;display:block}
.stat .c{font-size:11px;letter-spacing:.18em;color:var(--m2)}
.band--dark .stat .c{color:var(--d-mute)}
.arrow-link{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}

/* ---------- header ---------- */
.rz-header{position:sticky;top:0;z-index:60;background:var(--ivory);border-bottom:1px solid var(--h18)}
.rz-header .shell{display:flex;align-items:center;justify-content:space-between;gap:26px;min-height:76px}
.rz-wordmark{display:flex;align-items:baseline;gap:14px;text-decoration:none;color:var(--ink)}
.rz-wordmark:hover{text-decoration:none;color:var(--ink)}
.rz-wordmark b{font-family:var(--serif);font-size:27px;font-weight:500;letter-spacing:.02em;white-space:nowrap}
.rz-wordmark .kick{white-space:nowrap}
.rz-wordmark .div{width:1px;height:20px;background:rgba(27,42,70,.25)}
.rz-wordmark .kick{font-size:10px;font-weight:600;letter-spacing:.22em;color:var(--accent)}

.rz-nav{display:flex;align-items:center;gap:28px}
.rz-nav>ul{display:flex;align-items:center;gap:28px;list-style:none;padding:0;margin:0}
.rz-nav>ul>li{position:relative}
.rz-nav a[data-nav]{display:block;padding:26px 0;font-size:13px;font-weight:500;letter-spacing:.1em;
  text-transform:uppercase;color:var(--t2);border-bottom:2px solid transparent}
.rz-nav a[data-nav]:hover,.rz-nav li:focus-within>a[data-nav]{color:var(--ink);text-decoration:none;border-bottom-color:var(--h28)}
.rz-nav a[data-nav][aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.rz-nav .nav-search{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--m1);
  display:flex;align-items:center;gap:7px}
.rz-nav .nav-search svg{width:13px;height:13px}
.rz-nav .nav-div{width:1px;height:20px;background:var(--h20)}

.nav-sub{position:absolute;top:100%;left:-18px;min-width:322px;list-style:none;margin:0;padding:10px 0 6px;
  background:var(--ivory);border:1px solid var(--h20);border-top:2px solid var(--accent);
  box-shadow:0 14px 34px rgba(27,42,70,.13);opacity:0;visibility:hidden;transform:translateY(4px);
  transition:opacity .14s ease,transform .14s ease;z-index:5}
.has-sub:hover>.nav-sub,.has-sub:focus-within>.nav-sub{opacity:1;visibility:visible;transform:none}
.nav-sub::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}   /* hover bridge */
.nav-sub li{margin:0}
.nav-sub .sub-head{display:block;padding:4px 20px 9px;margin-bottom:4px;border-bottom:1px solid var(--h12);
  font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--m2)}
.nav-sub a{display:block;padding:9px 20px;font-family:var(--serif);font-size:18px;line-height:1.24;color:var(--t1)}
.nav-sub a:hover{background:var(--sel-row);color:var(--ink);text-decoration:none}
.nav-sub .sub-all{display:block;margin-top:6px;padding:11px 20px 4px;border-top:1px solid var(--h12);
  font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.nav-toggle,.nav-toggle-label{display:none}

/* ---------- hero band ---------- */
.hero{border-bottom:3px solid var(--accent)}
.hero .shell{display:grid;grid-template-columns:1.35fr 1fr;gap:60px;align-items:end;padding-top:52px;padding-bottom:40px}
.hero h1{font-size:64px;line-height:1.02;letter-spacing:-.01em;margin:20px 0}
.hero h1 em{font-style:italic;color:var(--coral)}
.hero .dek{font-family:var(--serif);font-size:21px;line-height:1.5;color:var(--d-dek);max-width:56ch}
.hero-rail{display:flex;flex-direction:column;gap:14px;padding-bottom:6px}
.hero-rail .rail-kick{font-size:10px;font-weight:600;letter-spacing:.22em;color:var(--d-mute)}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0;list-style:none}
.chip{font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  padding:9px 14px;border:1px solid var(--h28);background:transparent;color:var(--t2);cursor:pointer}
.chip:hover{border-color:var(--ink);color:var(--ink);text-decoration:none}
.chip[aria-pressed="true"],.chip.is-on{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
.band--dark .chip{border-color:var(--dh28);color:#D8DEEA}
.band--dark .chip:hover{color:var(--d-text);border-color:var(--d-text)}
.band--dark .chip[aria-pressed="true"]{background:var(--accent);color:var(--ivory);border-color:var(--accent)}
.stat-trio{display:flex;gap:28px;margin-top:10px;padding-top:16px;border-top:1px solid var(--dh20)}

/* ---------- the atlas (signature) ---------- */
.atlas-wrap{padding-top:34px}
.atlas-box{display:grid;grid-template-columns:1fr 400px;border:1px solid var(--h20);background:var(--ivory)}
.atlas-map{position:relative;border-right:1px solid var(--h20);min-width:0;background:var(--sea)}
.atlas-map .map-host{height:660px}
.map-host svg{display:block;width:100%;height:100%;touch-action:pan-y}   /* vertical page scroll stays available on touch */
.map-hint .short{display:none}
.map-hint{position:absolute;left:16px;top:16px;background:rgba(251,247,239,.92);border:1px solid var(--h18);
  padding:10px 14px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--label)}
.map-credit{position:absolute;left:16px;bottom:16px;max-width:calc(100% - 96px);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--m2)}
.map-ctrls{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px}
.map-ctrls button{width:30px;height:30px;border:1px solid var(--h20);border-radius:2px;background:var(--ivory);
  color:var(--ink);font-family:var(--sans);font-size:15px;font-weight:500;line-height:1;cursor:pointer;padding:0}
.map-ctrls button:hover{background:var(--sel-row)}
.atlas-list{display:flex;flex-direction:column;min-width:0}
.atlas-list .list-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:22px 26px 15px;border-bottom:1px solid var(--h16)}
.atlas-list .list-head span:first-child{font-size:11px;font-weight:600;letter-spacing:.2em}
.atlas-list .list-head .reg{font-size:11.5px;letter-spacing:.12em;color:var(--m2)}
.atlas-list ul{list-style:none;margin:0;padding:0;overflow-y:auto;max-height:602px;flex:1}
.pin-row{display:block;padding:17px 26px;border-bottom:1px solid var(--h10);cursor:pointer;color:inherit}
.pin-row:hover{background:var(--sel-row);text-decoration:none;color:inherit}
.pin-row.is-on{background:var(--sel-row)}
.pin-row .top{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.pin-row .dot{width:7px;height:7px;border-radius:50%;background:rgba(27,42,70,.3);flex:none}
.pin-row.is-on .dot{background:var(--accent)}
.pin-row .place{font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.pin-row .reg{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--m4)}
.pin-row h3{font-size:21px;line-height:1.24;margin-bottom:5px}
.pin-row p{font-size:14px;line-height:1.5;color:var(--t4)}
.atlas-list .list-foot{padding:16px 26px;border-top:1px solid var(--h16)}

/* ---------- cards ---------- */
.card-grid{display:grid;gap:26px;align-items:stretch}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-2{grid-template-columns:repeat(2,1fr)}
.card{display:flex;flex-direction:column;background:var(--ivory);border:1px solid var(--h18);color:inherit}
.card:hover{border-color:var(--accent);text-decoration:none;color:inherit}
.card .thumb{background:var(--img-bg);aspect-ratio:4/3;overflow:hidden}
.card .thumb img{width:100%;height:100%;object-fit:cover}
.card--wide .thumb{aspect-ratio:16/10}
.card .body{display:flex;flex-direction:column;flex:1;gap:10px;padding:24px 26px 26px}
.card h3{font-size:26px;line-height:1.16;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card--wide h3{font-size:24px;line-height:1.18}
.card .dek{font-size:15px;line-height:1.6;color:var(--t4);flex:1;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{display:flex;flex-wrap:wrap;gap:9px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--m3);border-top:1px solid var(--h12);padding-top:12px;margin-top:auto}
.card .kicker{font-size:10.5px;letter-spacing:.18em}

/* ---------- row list (regions) ---------- */
.row-list{list-style:none;margin:0;padding:0}
.row-list li{border-bottom:1px solid var(--h14)}
.row-list a{display:grid;grid-template-columns:250px 92px 1fr auto;gap:28px;align-items:center;
  padding:22px 4px;color:inherit}
.row-list a:hover{background:rgba(251,247,239,.75);text-decoration:none;color:inherit}
.row-list .name{display:block;font-family:var(--serif);font-size:25px;line-height:1.1}
.row-list .countries{display:block;font-size:11.5px;letter-spacing:.1em;line-height:1.5;color:var(--m4);margin-top:5px}
.row-list .count{font-family:var(--serif);font-size:30px;color:var(--accent)}
.row-list .blurb{font-size:15px;line-height:1.6;color:var(--t4)}

/* ---------- when-to-go grid ---------- */
.wtg{border:1px solid var(--h20);background:var(--ivory)}
.wtg-legend{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding:16px 22px;border-bottom:1px solid var(--h16)}
.wtg-keys{display:flex;flex-wrap:wrap;gap:16px}
.wtg-key{display:flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--m2)}
.wtg-key>span{width:15px;height:15px;border:1px solid var(--h20);display:block}
.wtg-row{display:grid;grid-template-columns:230px 1fr 190px;align-items:center;border-bottom:1px solid var(--h12)}
.wtg-row:last-child{border-bottom:0}
.wtg-head{border-bottom:1px solid var(--h20)}
.wtg-head>*{padding:11px 18px;font-size:10.5px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--m2)}
.wtg-head .wtg-best{text-align:right;color:var(--m2)}
.wtg-head .wtg-cells{display:grid;grid-template-columns:repeat(12,1fr);gap:2px;padding:11px 0}
.wtg-m{text-align:center;font-size:11px;font-weight:500;letter-spacing:.04em;color:var(--label)}
.wtg-name{display:flex;flex-direction:column;gap:3px;padding:14px 18px;color:inherit}
a.wtg-name:hover{background:var(--sel-row);text-decoration:none;color:inherit}
.wtg-name b{font-family:var(--serif);font-size:22px;font-weight:400;line-height:1.15}
.wtg-name span{font-size:11.5px;letter-spacing:.08em;color:var(--m4)}
.wtg-cells{display:grid;grid-template-columns:repeat(12,1fr);gap:2px}
.wtg-cell{display:block;position:relative;min-height:44px;
  border-top:1px solid rgba(251,247,239,.5);border-bottom:1px solid rgba(251,247,239,.5)}
.wtg-best{padding:14px 18px;text-align:right;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.wtg-foot{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding:15px 22px;border-top:1px solid var(--h16);background:var(--inset)}
.wtg-foot p{font-size:13.5px;line-height:1.55;color:var(--m2);max-width:78ch}

/* ---------- festival year timeline ---------- */
.fest{border:1px solid var(--h20);background:var(--ivory)}
.fest-row{display:grid;grid-template-columns:270px 1fr 250px;align-items:stretch;border-bottom:1px solid var(--h12)}
.fest-head{border-bottom:1px solid var(--h20)}
.fest-head>*{padding:11px 18px;font-size:10.5px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--m2)}
.fest-head .fest-track{padding:11px 0;align-items:center}
.fest-m{grid-row:1;text-align:center;font-size:10.5px;font-weight:600;letter-spacing:.06em;color:var(--label)}
.fest-name{display:flex;flex-direction:column;gap:4px;padding:18px;color:inherit;border-right:1px solid var(--h10)}
a.fest-name:hover{background:var(--sel-row);text-decoration:none;color:inherit}
.fest-name b{font-family:var(--serif);font-size:21px;font-weight:400;line-height:1.18}
.fest-name span{font-size:11.5px;letter-spacing:.08em;color:var(--m4)}
.fest-track{display:grid;grid-template-columns:repeat(12,1fr);align-items:center;position:relative;min-height:64px}
.fest-tick{grid-row:1;height:100%;border-left:1px solid var(--h10)}
.fest-bar{grid-row:1;display:flex;align-items:center;justify-content:center;min-height:34px;margin:0 2px;
  background:var(--ink);color:var(--d-text);text-decoration:none}
.fest-bar span{font-size:11.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
  padding:0 8px;overflow:hidden;text-overflow:ellipsis}
.fest-bar:hover{background:var(--accent);color:var(--ivory);text-decoration:none}
.fest-bar.is-accent{background:var(--accent);color:var(--ivory)}
.fest-bar.is-accent:hover{background:var(--ink);color:var(--d-text)}
.fest-when{display:flex;flex-direction:column;gap:5px;padding:18px;border-left:1px solid var(--h10)}
.fest-when b{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent)}
.fest-when span{font-size:13.5px;line-height:1.5;color:var(--t4)}
.fest-foot{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding:15px 22px;border-top:1px solid var(--h16);background:var(--inset)}
.fest-foot p{font-size:13.5px;line-height:1.55;color:var(--m2);max-width:88ch}

/* ---------- practicalities panel ---------- */
.prac{margin-top:52px}
.prac .inner{display:grid;grid-template-columns:280px 1fr;gap:48px;padding:40px 44px}
.prac h2{font-size:34px;line-height:1.1;margin:14px 0}
.prac .dek{font-size:15px;line-height:1.65;color:var(--d-dek2)}
.tilegrid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--dh16)}
.tilegrid a{display:block;background:var(--ink);padding:22px 24px;color:var(--d-text)}
.tilegrid a:hover{background:var(--tile-hover);text-decoration:none}
.tilegrid h3{font-size:21px;margin-bottom:8px}
.tilegrid p{font-size:14px;line-height:1.55;color:var(--d-dek3)}

/* ---------- sponsors ---------- */
.legend{margin-top:56px}
.legend .inner{border:1px solid var(--h20);background:var(--ivory);padding:30px 32px 34px}
.legend-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-bottom:1px solid var(--h16);padding-bottom:16px;margin-bottom:24px}
.legend-head h2{font-size:30px;line-height:1.12}
.legend-head p{font-size:14.5px;color:var(--t4);max-width:52ch;margin-top:6px}
.sponsor-row{display:grid;gap:16px}
.sponsor-row.four{grid-template-columns:repeat(4,1fr)}
.sponsor-row.roll{grid-template-columns:repeat(4,1fr)}
.sponsor{display:flex;flex-direction:column;gap:10px;color:inherit}
.sponsor:hover{text-decoration:none;color:inherit}
.sponsor img{width:100%;aspect-ratio:5/2;object-fit:contain;background:var(--ink);
  border:1px solid var(--h20);padding:16px 18px}
.sponsor:hover img{border-color:var(--accent)}
.sponsor-blurb{font-size:13.5px;line-height:1.5;color:var(--t4);min-height:1.5em}
.sponsor-row.roll .sponsor img{aspect-ratio:7/2;padding:12px 14px}
.sponsor-row.roll .sponsor-blurb{display:none}
.marginalia{margin-top:52px;padding-bottom:8px}
.marginalia .head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-bottom:1px solid var(--h20);padding-bottom:12px;margin-bottom:20px}
.marginalia h2{font-size:26px}
.marginalia .note-line{font-size:13.5px;color:var(--m2);max-width:58ch}

/* ---------- footer ---------- */
.rz-footer{background:var(--ink);color:var(--d-dek3);border-top:3px solid var(--accent);margin-top:60px}
.rz-footer .cols{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:44px;padding:44px 0 30px}
.rz-footer .brand b{display:block;font-family:var(--serif);font-size:24px;font-weight:400;color:var(--d-text);margin-bottom:10px}
.rz-footer .brand p{font-size:14px;line-height:1.6;max-width:34ch}
.rz-footer h3{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--d-mute2);margin-bottom:14px}
.rz-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.rz-footer a{color:var(--d-dek3);font-size:14px}
.rz-footer a:hover{color:var(--d-text)}
.rz-footer .bar{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-top:1px solid var(--dh14);padding:18px 0 34px;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--d-mute2)}

/* ==========================================================================
   Section / category pages
   ========================================================================== */
.sec-hero{background:var(--ivory);border-bottom:1px solid var(--h20)}
.sec-hero .shell{display:grid;grid-template-columns:1fr 420px;gap:60px;align-items:end;padding-top:44px;padding-bottom:34px}
.sec-hero h1{font-size:52px;line-height:1.04;margin:16px 0 14px;max-width:24ch}
.sec-hero .dek{font-family:var(--serif);font-size:20px;line-height:1.55;color:var(--t3);max-width:62ch}
.locator{position:relative;border:1px solid var(--h20);background:var(--sea)}
.locator .map-host{height:250px}
.locator figcaption,.locator .cap{position:absolute;left:0;right:0;bottom:0;background:rgba(251,247,239,.94);
  border-top:1px solid var(--h16);padding:9px 13px;font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--label)}
.filterbar{display:flex;flex-wrap:wrap;gap:32px;align-items:flex-start;padding:24px 0 22px;border-bottom:1px solid var(--h18)}
.filter-group{display:flex;flex-direction:column;gap:10px}
.filter-group>span{font-size:10.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--m2)}
.filter-count{margin-left:auto;text-align:right}
.filter-count .n{font-family:var(--serif);font-size:38px;line-height:1;display:block}
.filter-count .c{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--m2)}
.grid-wrap{padding:32px 0 10px}
.empty-state{display:none;padding:60px 0;text-align:center;font-family:var(--serif);font-size:22px;color:var(--m2)}
.is-empty .empty-state{display:block}
.cat-list{list-style:none;margin:0;padding:0}
.cat-list li{border-bottom:1px solid var(--h14)}
.cat-list a{display:grid;grid-template-columns:120px 1fr 210px;gap:26px;align-items:baseline;padding:20px 4px;color:inherit}
.cat-list a:hover{background:rgba(251,247,239,.8);text-decoration:none;color:inherit}
.cat-list .idx{font-family:var(--serif);font-size:22px;color:var(--accent)}
.cat-list h3{font-size:25px;line-height:1.16;margin-bottom:6px}
.cat-list p{font-size:15px;line-height:1.55;color:var(--t4);max-width:70ch}
.cat-list .meta{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--m3);text-align:right}

/* CSS-only expander */
.more-toggle{position:absolute;opacity:0;pointer-events:none}
.more-wrap .more-item{display:none}
.more-toggle:checked ~ .more-wrap .more-item{display:flex}
.more-label{display:inline-block;margin-top:22px;padding:11px 18px;border:1px solid var(--h28);
  font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);cursor:pointer}
.more-label:hover{background:var(--ivory);border-color:var(--ink)}
.more-toggle:checked ~ .more-label{display:none}
.more-toggle:focus-visible ~ .more-label{outline:2px solid var(--accent);outline-offset:2px}

/* search (sections hub) */
.hub-search{display:flex;gap:12px;align-items:center;margin:26px 0 8px}
.hub-search input{flex:1;max-width:520px;font-family:var(--sans);font-size:16px;padding:13px 15px;
  background:var(--ivory);border:1px solid var(--h28);color:var(--ink)}
.hub-search input::placeholder{color:var(--m3)}
.hub-count{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--m2)}
.hub-sec{padding:34px 0 0}
.hub-sec .hd{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:6px}
.hub-sec h2{font-size:30px}
.no-hits{display:none;padding:40px 0;font-family:var(--serif);font-size:20px;color:var(--m2)}

/* ==========================================================================
   Article
   ========================================================================== */
.art-top{max-width:1090px;padding-top:26px}
.art-head{max-width:1090px;padding-top:24px;padding-bottom:30px}
.art-head h1{font-size:74px;line-height:1;letter-spacing:-.015em;margin:20px 0 22px;max-width:22ch}
.art-head .standfirst{font-family:var(--serif);font-size:24px;line-height:1.48;color:var(--t3);max-width:64ch}
.art-head .meta{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:22px;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--m3)}
.art-hero{margin:0 auto}
.art-hero .frame{aspect-ratio:21/9;background:var(--img-bg);border:1px solid var(--h18);overflow:hidden}
.art-hero .frame img{width:100%;height:100%;object-fit:cover}
.art-hero figcaption{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:10px;
  font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--m2)}
.art-hero figcaption .cap{max-width:82ch;text-transform:none;letter-spacing:.01em;font-size:14px;color:var(--t4)}

/* asymmetric measure: prose sits left of a wide margin used for breakouts */
.art-body{padding:40px var(--gutter) 20px}
.prose{--bo:min(1010px, calc(100vw - 2 * var(--gutter)));max-width:70ch;margin-inline:auto;padding-inline:0}
.prose>*+*{margin-top:22px}
.prose p{font-family:var(--serif);font-size:20.5px;line-height:1.72;color:var(--t1);text-wrap:pretty}
.prose p a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.prose h2{font-size:34px;line-height:1.12;font-weight:500;margin-top:44px;text-wrap:balance}
.prose h2 .num{display:block;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.2em;
  color:var(--accent);margin-bottom:10px}
.prose h3{font-size:25px;line-height:1.2;font-weight:500;margin-top:34px}
.prose>ul,.prose>ol{font-family:var(--serif);font-size:19.5px;line-height:1.66;color:var(--t1);
  padding-left:1.15em;display:flex;flex-direction:column;gap:10px}
.prose em{font-style:italic}
.lead{font-family:var(--serif);font-size:23px;line-height:1.52;color:var(--t2)}
.dcap{float:left;font-family:var(--serif);font-size:76px;line-height:.78;padding:6px 12px 0 0;color:var(--accent)}

.pullquote{margin:38px 0;padding:26px 0;border-top:1px solid var(--h20);border-bottom:1px solid var(--h20)}
.pullquote p{font-family:var(--serif);font-style:italic;font-size:29px;line-height:1.34;color:var(--ink);text-wrap:pretty}
.blockquote{margin:34px 0;padding:0 0 0 24px;border-left:3px solid var(--h28)}
.blockquote p{font-family:var(--serif);font-size:21px;line-height:1.55;color:var(--t2)}
.blockquote cite{display:block;margin-top:12px;font-family:var(--sans);font-style:normal;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--m3)}
.callout{margin:34px 0;background:var(--inset);border:1px solid var(--h18);border-left:3px solid var(--accent);padding:22px 26px}
.callout p{font-family:var(--serif);font-size:19.5px;line-height:1.6;color:var(--t1)}
.callout .ttl{display:block;font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.note{margin:26px 0;padding:14px 0 14px 22px;border-left:3px solid var(--accent);
  font-size:15.5px;line-height:1.62;color:var(--t2)}
.etiquette{margin:30px 0;padding:4px 0 4px 22px;border-left:3px solid var(--accent);list-style:none;
  display:flex;flex-direction:column;gap:10px}
.etiquette li{font-size:16.5px;line-height:1.6;color:var(--t2)}
.etiquette strong{font-weight:600;color:var(--ink)}

/* by-the-numbers */
.numbers{margin:38px 0;border-top:2px solid var(--ink);padding-top:18px}
.numbers>span{display:block;font-size:10.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--m2);margin-bottom:16px}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:2px;background:var(--h14)}
.statblock{background:var(--inset);padding:18px 20px 20px;display:flex;flex-direction:column;gap:6px}
.stat-num{font-family:var(--serif);font-size:38px;line-height:1;color:var(--ink)}
.stat-label{font-size:12.5px;line-height:1.4;letter-spacing:.06em;color:var(--t4)}

/* tables */
.datatable,.versus{width:100%;border-collapse:collapse;margin:34px 0;background:var(--ivory);
  border:1px solid var(--h20);font-size:15.5px}
.datatable caption,.versus caption{caption-side:top;text-align:left;padding:0 0 12px;
  font-size:10.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--m2)}
.datatable th,.versus th{background:var(--ink);color:var(--d-text);text-align:left;padding:12px 14px;
  font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.datatable td,.versus td{padding:13px 14px;border-top:1px solid var(--h12);color:var(--t2);vertical-align:top;line-height:1.5}
.datatable tbody tr:nth-child(even) td{background:var(--inset)}
.datatable td:first-child{font-family:var(--serif);font-size:18px;color:var(--ink)}
.versus th:first-child{background:var(--ink)}
.versus tbody th{background:var(--inset);color:var(--label);font-size:11px;width:150px;border-top:1px solid var(--h12)}
.table-scroll{overflow-x:auto;margin:34px 0}
.table-scroll .datatable{margin:0;min-width:520px}
.table-scroll .versus{margin:0;min-width:460px}

/* route table */
.route{list-style:none;margin:34px 0;padding:0;border-top:2px solid var(--ink)}
.route li{display:grid;grid-template-columns:44px 1fr 96px;gap:22px;align-items:start;
  padding:20px 2px;border-bottom:1px solid var(--h14)}
.route .i{font-family:var(--serif);font-size:27px;color:var(--accent);line-height:1}
.route h4{font-family:var(--serif);font-size:23px;font-weight:400;line-height:1.2;margin-bottom:5px}
.route p{font-size:15.5px;line-height:1.6;color:var(--t4)}
.route .move{display:block;margin-top:8px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--m4)}
.route .n{text-align:right}
.route .n b{font-family:var(--serif);font-size:25px;font-weight:400;display:block;line-height:1}
.route .n span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--m4)}

/* timeline */
.timeline{list-style:none;margin:34px 0;padding:0}
.timeline li{display:grid;grid-template-columns:210px 1fr;gap:24px;padding:16px 0;border-top:1px solid var(--h14);
  position:relative}
.timeline li:last-child{border-bottom:1px solid var(--h14)}
.t-when{font-size:12.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);line-height:1.45}
.t-what{font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--t1)}

/* charts */
.chart{margin:36px 0;background:var(--inset);border:1px solid var(--h18);padding:22px 24px 18px}
.chart .chart-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;
  font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--label)}
.chart .chart-head .r{font-weight:400;color:var(--m2)}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart figcaption{margin-top:14px;font-size:13.5px;line-height:1.55;color:var(--m2)}
.chart text{font-family:var(--sans)}
.seasonbar{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;align-items:end}
.seasonbar .m{display:flex;flex-direction:column;gap:0}
.seasonbar .bar{border:1px solid var(--h14)}
.seasonbar .ml{text-align:center;font-size:11.5px;font-weight:500;color:var(--label);padding-top:7px}
.seasonbar .mn{text-align:center;font-size:10.5px;color:var(--m4)}

/* figures */
.article-figure{margin:38px 0}
.article-figure img{width:100%;background:var(--img-bg)}
.article-figure figcaption{padding-top:10px;font-size:14px;line-height:1.5;color:var(--m2)}
.breakout{max-width:none;width:min(100%,1000px)}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:36px 0}
.gallery figure{margin:0}
.gallery figcaption{padding-top:8px;font-size:13px;color:var(--m2)}
.map-figure{margin:38px 0}
.map-figure .map-slot{position:relative;background:var(--sea);border:1px solid var(--h20);min-height:300px}
.map-figure .map-slot .map-host{height:300px}
.map-figure figcaption{padding-top:10px;font-size:13.5px;line-height:1.5;color:var(--m2)}

/* cards / refs */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin:34px 0}
.profile-card{background:var(--ivory);border:1px solid var(--h18);padding:22px 24px;display:flex;flex-direction:column;gap:9px}
.profile-card .p-photo{width:64px;height:64px;object-fit:cover;background:var(--img-bg);border-radius:50%}
.profile-card h3{font-size:22px}
.profile-card .p-role{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.profile-card p{font-size:15px;line-height:1.6;color:var(--t4)}
.profile-card .p-links{font-size:13.5px;letter-spacing:.04em}
.profile-card .p-attr{font-size:12px;color:var(--m3)}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin:30px 0}
.org-card{display:flex;flex-direction:column;gap:6px;background:var(--ivory);border:1px solid var(--h18);padding:16px 18px;color:inherit}
.org-card:hover{border-color:var(--accent);text-decoration:none;color:inherit}
.org-card .org-logo{width:34px;height:34px;object-fit:contain;background:var(--ink);padding:5px}
.org-card .org-name{font-family:var(--serif);font-size:19px}
.org-card .org-host{font-size:12px;letter-spacing:.1em;color:var(--m3)}
.entity-ref{white-space:nowrap;border-bottom:1px solid var(--h28)}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:26px 0 0}
.further-grid a{background:var(--ivory);border:1px solid var(--h18);padding:18px 20px;font-family:var(--serif);
  font-size:20px;line-height:1.24;color:var(--t1)}
.further-grid a:hover{border-color:var(--accent);text-decoration:none}

/* related + article furniture */
.art-foot{max-width:1090px;padding:10px var(--gutter) 0}
.related h2{font-size:26px;margin-bottom:14px}
.related-links{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.related-links li{border-bottom:1px solid var(--h14)}
.related-links a{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:16px 2px;color:inherit}
.related-links a:hover{background:rgba(251,247,239,.8);text-decoration:none;color:inherit}
.related-links .t{font-family:var(--serif);font-size:22px;line-height:1.2}
.related-links .k{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);flex:none}

.art-aside-wrap{display:grid;grid-template-columns:1fr 300px;gap:64px;align-items:start}
.art-aside{display:flex;flex-direction:column;gap:24px}
.aside-box{background:var(--inset);border:1px solid var(--h20)}
.aside-box>span{display:block;padding:14px 18px;border-bottom:1px solid var(--h16);
  font-size:10.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase}
.aside-box dl{margin:0;padding:0}
.aside-box .kv{display:flex;justify-content:space-between;gap:14px;padding:12px 18px;border-bottom:1px solid var(--h08);font-size:14px}
.aside-box .kv dt{color:var(--m3)}
.aside-box .kv dd{margin:0;text-align:right;font-weight:500;color:var(--t1)}

/* ---------- simple pages ---------- */
.page-body{padding:36px var(--gutter) 20px}
.page-body .prose{max-width:72ch}
.page-hero{background:var(--ivory);border-bottom:1px solid var(--h20)}
.page-hero .shell{padding-top:44px;padding-bottom:32px}
.page-hero h1{font-size:56px;line-height:1.04;margin:14px 0 16px;max-width:24ch}
.page-hero .dek{font-family:var(--serif);font-size:20px;line-height:1.55;color:var(--t3);max-width:64ch}
.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2px;background:var(--h14);margin:34px 0}
.contact-grid div{background:var(--ivory);padding:22px 24px;display:flex;flex-direction:column;gap:8px}
.contact-grid h3{font-size:21px;display:flex;align-items:center;gap:10px}
.contact-grid svg{width:17px;height:17px;color:var(--accent);flex:none}
.contact-grid p{font-size:14.5px;line-height:1.6;color:var(--t4)}
.err-code{font-family:var(--serif);font-size:132px;line-height:.9;color:var(--accent)}

/* ---------- styleguide ---------- */
.sg-nav{display:flex;flex-wrap:wrap;gap:8px;padding:22px 0 8px}
.sg-sec{padding:44px 0 8px;border-top:1px solid var(--h18);margin-top:44px}
.sg-sec:first-of-type{border-top:0;margin-top:0}
.sg-sec>h2{font-size:32px;margin-bottom:6px}
.sg-sec>.label{margin-bottom:26px;display:block}
.sg-case{margin:0 0 34px}
.sg-case>h3{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--m2);margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--h14)}
.sg-swatches{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.sg-swatch{border:1px solid var(--h18);background:var(--ivory)}
.sg-swatch .chipbox{height:74px}
.sg-swatch .t{padding:10px 12px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--m2)}
.sg-swatch .t b{display:block;font-family:var(--sans);font-size:13px;letter-spacing:.04em;
  text-transform:none;color:var(--ink);font-weight:500}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1240px){
  :root{--gutter:32px}
  .hero h1{font-size:54px}
  .art-head h1{font-size:60px}
  .atlas-box{grid-template-columns:1fr 340px}
  .atlas-list ul{max-height:520px}
  .art-aside-wrap{gap:44px;grid-template-columns:1fr 270px}
  .rz-nav>ul{gap:20px}
  .rz-nav{gap:18px}
}
@media (max-width:1040px){
  .hero .shell,.sec-hero .shell{grid-template-columns:1fr;gap:34px;align-items:start}
  .sec-hero .locator{max-width:520px}
  .atlas-box{grid-template-columns:1fr}
  .atlas-map{border-right:0;border-bottom:1px solid var(--h20)}
  .atlas-map .map-host{height:520px}
  .atlas-list ul{max-height:520px}
  .prac .inner{grid-template-columns:1fr;gap:28px;padding:32px 28px}
  .cols-3{grid-template-columns:repeat(2,1fr)}
  .row-list a{grid-template-columns:1fr auto;gap:14px 20px}
  .row-list .blurb{grid-column:1 / -1}
  .row-list .cta{grid-column:1 / -1}
  .art-aside-wrap{grid-template-columns:1fr;gap:36px}
  .art-aside{flex-direction:row;flex-wrap:wrap}
  .art-aside>*{flex:1 1 260px}
  .rz-footer .cols{grid-template-columns:1fr 1fr;gap:32px}
  .sponsor-row.four{grid-template-columns:repeat(2,1fr)}
  .sponsor-row.roll{grid-template-columns:repeat(3,1fr)}
  .cat-list a{grid-template-columns:70px 1fr;gap:16px}
  .cat-list .meta{grid-column:2;text-align:left}
}
@media (max-width:820px){
  /* mobile nav: tap to open */
  .rz-header .shell{flex-wrap:wrap;min-height:0;padding-top:14px;padding-bottom:0;align-items:center}
  .nav-toggle-label{display:flex;align-items:center;gap:9px;margin-left:auto;padding:10px 12px;
    border:1px solid var(--h28);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
  .nav-toggle-label svg{width:15px;height:15px}
  .rz-nav{order:3;width:100%;display:none;padding-bottom:12px}
  .nav-toggle:checked ~ .rz-nav{display:block}
  .rz-nav>ul{flex-direction:column;align-items:stretch;gap:0;width:100%}
  .rz-nav>ul>li{border-top:1px solid var(--h14)}
  .rz-nav a[data-nav]{padding:15px 0;border-bottom:0}
  .nav-sub{position:static;min-width:0;opacity:1;visibility:visible;transform:none;box-shadow:none;
    border:0;border-left:2px solid var(--accent);padding:2px 0 10px;margin:0 0 12px;background:transparent;
    display:none}
  .has-sub>a[data-nav]::after{content:"＋";float:right;color:var(--accent);font-size:14px}
  .has-sub:focus-within>.nav-sub,.has-sub.open>.nav-sub{display:block}
  .nav-sub a{padding:8px 16px;font-size:17px}
  .nav-sub .sub-head{padding:4px 16px 8px}
  .nav-sub .sub-all{padding:10px 16px 2px}
  .rz-nav .nav-div{display:none}
  .rz-nav .nav-search{padding:14px 0;border-top:1px solid var(--h14)}

  .hero h1{font-size:42px}
  .hero .shell{padding-top:34px}
  .art-head h1{font-size:44px;max-width:none}
  .art-head .standfirst{font-size:20px}
  .prose p,.prose>ul,.prose>ol{font-size:18.5px;line-height:1.68}
  .prose h2{font-size:28px}
  .lead{font-size:20px}
  .pullquote p{font-size:23px}
  .dcap{font-size:62px;padding-right:10px}
  .art-hero .frame{aspect-ratio:3/2}
  .cols-3,.cols-2{grid-template-columns:1fr}
  .tilegrid{grid-template-columns:1fr}
  .timeline li{grid-template-columns:1fr;gap:6px}
  .route li{grid-template-columns:34px 1fr;gap:14px}
  .route .n{grid-column:2;text-align:left;display:flex;gap:8px;align-items:baseline}
  .rule--heavy h2{font-size:26px}
  .sec-hero h1{font-size:38px}
  .page-hero h1{font-size:38px}
  .filter-count{margin-left:0;text-align:left}
  .art-aside{flex-direction:column}
  .marginalia h2,.legend-head h2{font-size:23px}
  .err-code{font-size:92px}
}
@media (max-width:560px){
  :root{--gutter:20px}
  .atlas-map .map-host{height:420px}
  .sponsor-row.four,.sponsor-row.roll{grid-template-columns:repeat(2,1fr)}
  .rz-footer .cols{grid-template-columns:1fr}
  .hero h1{font-size:34px}
  .art-head h1{font-size:34px}
  .statrow{grid-template-columns:1fr}
  .seasonbar{grid-template-columns:repeat(6,1fr);gap:6px 4px}
  .atlas-list .list-head,.pin-row,.atlas-list .list-foot{padding-left:20px;padding-right:20px}
  .cat-list a{grid-template-columns:1fr}
  .cat-list .idx{font-size:16px}
  .prose{max-width:none}
}
@media print{
  .rz-header,.map-ctrls,.rz-footer,.legend,.marginalia{display:none}
  body{background:#fff}
}

/* nav collapses earlier than the type scale does */
@media (max-width:1000px){
  .rz-header .shell{flex-wrap:wrap;min-height:0;padding-top:14px;padding-bottom:0;align-items:center}
  .nav-toggle-label{display:flex;align-items:center;gap:9px;margin-left:auto;padding:10px 12px;
    border:1px solid var(--h28);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
  .nav-toggle-label svg{width:15px;height:15px}
  .rz-nav{order:3;width:100%;display:none;padding-bottom:12px}
  .nav-toggle:checked ~ .rz-nav{display:block}
  .rz-nav>ul{flex-direction:column;align-items:stretch;gap:0;width:100%}
  .rz-nav>ul>li{border-top:1px solid var(--h14)}
  .rz-nav a[data-nav]{padding:15px 0;border-bottom:0}
  .nav-sub{position:static;min-width:0;opacity:1;visibility:visible;transform:none;box-shadow:none;
    border:0;border-left:2px solid var(--accent);padding:2px 0 10px;margin:0 0 12px;background:transparent;display:none}
  .has-sub>a[data-nav]::after{content:"＋";float:right;color:var(--accent);font-size:14px}
  .has-sub:focus-within>.nav-sub,.has-sub.open>.nav-sub{display:block}
  .nav-sub a{padding:8px 16px;font-size:17px}
  .nav-sub .sub-head{padding:4px 16px 8px}
  .nav-sub .sub-all{padding:10px 16px 2px}
  .rz-nav .nav-div{display:none}
  .rz-nav .nav-search{padding:14px 0;border-top:1px solid var(--h14)}
}

/* article furniture crosses into the wide right margin (the atlas margin) */
.prose .breakout,
.prose .table-scroll,
.prose .numbers,
.prose .route,
.prose .timeline,
.prose .chart,
.prose .org-grid,
.prose .pullquote{width:var(--bo);max-width:none;margin-inline:calc((100% - var(--bo)) / 2)}
@media (max-width:1240px){
  .prose .breakout,.prose .table-scroll,.prose .numbers,.prose .route,
  .prose .timeline,.prose .chart,.prose .org-grid,.prose .pullquote{width:100%;margin-inline:0}
}

/* ---- the atlas on a phone ---- */
@media (max-width:820px){
  .map-ctrls{gap:8px;right:12px;bottom:12px}
  .map-ctrls button{width:44px;height:44px;font-size:17px}          /* touch target */
  .atlas-list ul{max-height:440px;-webkit-overflow-scrolling:touch}
}
@media (max-width:560px){
  .map-hint{left:12px;top:12px;padding:8px 11px;font-size:10px;letter-spacing:.12em}
  .map-hint .long{display:none}
  .map-hint .short{display:inline}
  .map-credit{left:12px;bottom:12px;font-size:9.5px;letter-spacing:.1em;max-width:calc(100% - 76px)}
  .atlas-list ul{max-height:380px}
  .pin-row{padding-top:15px;padding-bottom:15px}
  .pin-row h3{font-size:19px}
  .pin-row p{font-size:13.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
}

@media (max-width:560px){
  .versus tbody th{width:112px;font-size:10.5px;letter-spacing:.1em}
  .datatable,.versus{font-size:14.5px}
  .datatable td:first-child{font-size:16.5px}
}

/* filter chips pack tighter on phones so the grid starts higher up the page */
@media (max-width:560px){
  .filterbar{gap:20px;padding-top:20px}
  .filter-group{gap:8px;width:100%}
  .filter-group .chips{gap:6px}
  .chip{font-size:11px;letter-spacing:.08em;padding:8px 10px}
  .filter-count{display:flex;align-items:baseline;gap:10px;margin-top:2px}
  .filter-count .n{font-size:30px}
}

/* inline-SVG charts keep their label size on phones and scroll sideways inside the frame */
@media (max-width:820px){
  .chart{overflow-x:auto}
  .chart.bar svg,.chart.line svg{min-width:840px}
  .chart.donut svg{min-width:400px}
  .chart figcaption{position:sticky;left:0}
}

@media (max-width:1040px){
  .wtg-row{grid-template-columns:190px 1fr 150px}
  .wtg-name b{font-size:20px}
  .wtg-best{font-size:11.5px}
}
@media (max-width:820px){
  .wtg-row,.wtg-head{grid-template-columns:1fr;gap:0}
  .wtg-head{display:none}
  .wtg-row{padding-bottom:14px}
  .wtg-name{flex-direction:row;align-items:baseline;gap:10px;flex-wrap:wrap;padding:14px 16px 10px}
  .wtg-cells{margin:0 16px 20px;grid-template-columns:repeat(12,1fr)}
  .wtg-cell{min-height:34px}
  .wtg-cell::after{content:attr(data-m);position:absolute;left:0;right:0;top:100%;padding-top:5px;
    text-align:center;font-size:10px;color:var(--m4)}
  .wtg-best{text-align:left;padding:24px 16px 4px}
  .wtg-best::before{content:"Best · ";color:var(--m3)}
  .wtg-legend{padding:14px 16px}
  .wtg-foot{padding:14px 16px}
}

@media (max-width:1240px){
  .fest-row{grid-template-columns:230px 1fr 200px}
  .fest-name b{font-size:19px}
}
@media (max-width:1040px){
  .fest-row{grid-template-columns:200px 1fr}
  .fest-when{grid-column:2;border-left:0;border-top:1px solid var(--h10);padding-top:12px}
  .fest-head .fest-when{display:none}
}
@media (max-width:820px){
  .fest-row,.fest-head{grid-template-columns:1fr}
  .fest-head{display:none}
  .fest-name{border-right:0;padding:16px 16px 10px}
  .fest-track{margin:0 16px 18px;min-height:44px}
  .fest-track::after{content:"JAN";position:absolute;left:0;bottom:-16px;font-size:9.5px;letter-spacing:.14em;color:var(--m4)}
  .fest-track::before{content:"DEC";position:absolute;right:0;bottom:-16px;font-size:9.5px;letter-spacing:.14em;color:var(--m4)}
  .fest-bar span{font-size:10.5px;letter-spacing:.06em;padding:0 5px}
  .fest-when{grid-column:1;padding:14px 16px 16px;border-top:1px solid var(--h10)}
  .fest-foot{padding:14px 16px}
}

@media (max-width:560px){
  /* bars become pure span markers — the wording lives in the window line below */
  .fest-bar{min-height:26px;margin:0 1px}
  .fest-bar span{display:none}
  .fest-track{min-height:34px}
  .fest-name b{font-size:19px}
}


/* sp-contain-guard: sponsor logos are wordmarks — never object-fit:cover (crops).
   object-fit ONLY. This block used to also set width:auto, padding:4px 10px,
   max-width:calc(100% - 20px) and min/max-height, which overrode Design's own frame and
   let every plate shrink-wrap its logo — the recurring "inconsistent sizing" and
   "lacks padding". Geometry belongs to Design. */
.sponsor img{object-fit:contain!important}

/* 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}

/* op-bold-brands: operator: bold brand names. They were plain text at the head of each sentence
   with no element to select, so embolden_brand.py set them in the estate's own
   <strong class="sp-brand">; the weight and ink are stated here rather than left to the browser.
   (The roll tier's copy is display:none by Design, so only the top four show.) */
.sponsor .sponsor-blurb .sp-brand{font-weight:700;color:var(--t2,inherit)}

/* op-footer-compact: the footer printed 8 rows for 8 link(s) in
   2 list(s) — 898px at 390, 9% of the whole page. Design's own
   good case (evbb) has no list at all: its footer links simply flow inline, 479px in total.
   Here the lists flow inline too, and the group holder takes two columns,
   measured 898 -> 560px (38% shorter) with no new overflow. Both shapes were
   tried and the shorter one kept — two columns helps a wide group set and hurts a narrow one.
   Phone widths only; the desktop footer is untouched. */
@media (max-width:640px){
  footer ul,footer ol{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;column-gap:clamp(9px,3.06vw,44px)!important;row-gap:4px!important}
  footer ul > li,footer ol > li{width:auto!important;flex:0 0 auto;max-width:100%}
  footer [class*=grid],footer [class*=index],footer [class*=cols]{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:24px}
}

/* op-blurb-rows: money blurbs ran to 5 rows at 390, 346px of tier across
   4 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.four .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:60px!important;min-height:0!important;overflow:hidden!important}
}

/* op-odd-tier-lead: .sponsor-row.roll (9 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.roll:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
}

/* op-article-width: the article column was capped at 682px (84 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through max-width 70ch (declared in .prose) to ~102 characters per line in this build's own prose font, never past the edge Design's own content already reaches beside it. Above 1600 the column and the prose type grow together (up to 1.2x). Nothing below 1024 changes. Originals: migration/_backups/article_width/. */
@media (min-width:1024px){
  article.prose{max-width:min(829px, 100%)!important}
}
@media (min-width:1600px){
  article.prose{max-width:min(clamp(829px, 57.569vw, 995px), 100%)!important}
  article.prose > :is(p.dropcap, p:not([class])){font-size:clamp(20.5px,1.4236vw,24.6px)!important}
}
/* op-article-width:end */

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

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

/* op-hover-pad */
.related-links a{padding-left:clamp(12px,3.5vw,22px)!important;padding-right:clamp(12px,3.5vw,22px)!important}
/* op-hover-pad:end */
/* op-heading-levels */
h2:where(.rt-h3){font-family: var(--serif); font-weight: 400; margin: 0px;}
h3.rt-h4{font-family: var(--serif); font-weight: 400; margin: 0px;}
.card h2:where(.rt-h3){font-size: 26px; line-height: 1.16; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;}
.card--wide h2:where(.rt-h3){font-size: 24px; line-height: 1.18;}
.rz-footer h2:where(.rt-h3){font-family: var(--sans); font-size: 10px; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--d-mute2); margin-bottom: 14px;}
.cat-list h2:where(.rt-h3){font-size: 25px; line-height: 1.16; margin-bottom: 6px;}
.route h3.rt-h4{font-family: var(--serif); font-size: 23px; font-weight: 400; line-height: 1.2; margin-bottom: 5px;}
.contact-grid h2:where(.rt-h3){font-size: 21px; display: flex; align-items: center; gap: 10px;}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(a.card > div.thumb > img,
  a.card.card--wide > div.thumb > img,
  a.card.card--wide.more-item > div.thumb > img,
  a.card.more-item > div.thumb > img,
  article.prose > figure.article-figure.breakout > img,
  div.page-body.shell > figure.article-figure > img,
  figure.art-hero.shell > div.frame > img,
  section.shell > figure.article-figure > img){height:auto}
/* op-img-dims:end */
