/* Shared responsive rules for every public page. */
html{scroll-padding-top:calc(var(--nav-height) + 16px)}
body{min-width:0}
.site,.site-header-inner,.site-footer-inner,.shell-404{width:100%;box-sizing:border-box}
.site-header-inner{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
.site-header-inner>*,.site-footer-inner>*,.site section>*,.site article>*{min-width:0}
.site-header .shell-nav a,.shell-contact{min-height:44px;display:inline-flex;align-items:center}
.shell-footer-nav a{min-height:44px;display:inline-flex;align-items:center}
.shell-footer-brand>span{min-width:0}
.site h1,.site h2,.site h3,.site p,.data-guide a,.image-credits a{overflow-wrap:anywhere}
.skip:focus{z-index:100}

/* Both editorial heroes sit outside the capped reading column. */
.page-layout .hero{margin-inline:0}
.thesis-page .thesis-hero{padding-inline:var(--page-gutter)}
.thesis-page .thesis-hero h1{width:100%;max-width:none;font-size:clamp(38px,min(8.1vw,17svh),150px);overflow-wrap:break-word}
.thesis-page .thesis-hero h1>span{display:block}
.thesis-page .thesis-hero .hero-intro{min-width:0;flex-wrap:wrap}
.thesis-page .thesis-hero .text-link{text-align:left;max-width:none;min-height:44px;display:inline-flex;align-items:center}
.hero-kicker>*{min-width:0}
.hero .hero-source{overflow-wrap:anywhere}
.observation-tag{right:0;max-width:100%}
.steps>article,.funding-list>div,.inline-facts>div{min-width:0}
.steps h3,.funding-list strong{overflow-wrap:anywhere}
.launch-spread>span{max-width:calc(100% - 32px)}

/* Let dense map content reflow inside its panel instead of being clipped. */
.map-page{height:auto;min-height:100%;--rail:clamp(250px,19vw,320px);--dossier:clamp(310px,25vw,460px)}
.map-page .frame{min-width:0;overflow-anchor:none}
.map-page #rail,.map-page #stage,.map-page #side{scroll-margin-top:calc(var(--map-tools-height) + 8px)}
.map-page #rail,.map-page #side,.map-page .pane,.map-page .doc{min-width:0}
.map-page .row{grid-template-columns:10px minmax(0,1fr) auto}
.map-page .row .n,.map-page .doc h2,.map-page .doc a{overflow-wrap:anywhere}
.map-page .row .m{white-space:normal;overflow:visible;overflow-wrap:anywhere}
.map-page dl.kv{grid-template-columns:minmax(70px,92px) minmax(0,1fr)}
.map-page .letterbox .lh,.map-page .alertbox .ah{flex-wrap:wrap}
.map-page .maptools .tool,.map-page .mapbtns button{min-height:40px}
.map-page .mapbtns button{width:40px}
.map-page .map-context{top:64px}
.map-page .map-command-bar{min-width:0}
.map-page .console-toolbar nav{min-width:0}
.map-page .fld{min-width:0;max-width:100%}
.map-page .doc{container:record / inline-size}
.map-page table.ch{table-layout:fixed;overflow-wrap:anywhere}
.map-page table.ch th,.map-page table.ch td{white-space:normal}
.cf-contact label{min-width:0}
.cf-contact .cf-contact-close{width:44px;height:44px}

@media(max-width:980px){
  .site-header-inner{grid-template-columns:minmax(0,1fr) auto}
  .map-page .console-toolbar>.lbl{display:none}
  .map-page .console-toolbar nav{width:100%;justify-content:space-between;gap:6px}
  .map-page #stage{height:clamp(360px,60svh,720px);min-height:0}
  .map-page #rail,.map-page #side{width:100%;flex-basis:auto}
  .map-page #pane-list{max-height:55svh}
  .map-page .tabs button,.map-page .filters label,.map-page .clearbtn{min-height:44px}
  .map-page .fld{font-size:16px;min-height:44px}
}
@media(max-width:700px){
  :root{--map-tools-height:96px}
  .map-page .map-command-bar .console-toolbar{padding:6px 0}
  .map-page .map-command-bar .console-toolbar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;overflow:visible}
  .map-page .map-command-bar .console-toolbar .tool{min-height:40px;padding:7px 4px;font-size:9px;text-align:center;white-space:normal}
}
@media(min-width:601px) and (max-width:980px){
  .site-header-inner{grid-template-columns:minmax(0,1fr) auto auto;gap:16px}
  .site-header .shell-contact.ui-arrow-link{display:inline-flex;font-size:12px}
  .site-header .shell-nav,.map-page .site-header .shell-nav{gap:18px}
}
@media(max-width:600px){
  :root{--nav-height:104px;--shell-gutter:16px}
  .site-header-inner{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:56px 48px;gap:0 12px}
  .site-header .shell-brand{grid-column:1;grid-row:1;font-size:20px}
  .site-header .shell-brand img{width:30px;height:30px}
  .site-header .shell-contact.ui-arrow-link{display:inline-flex;grid-column:2;grid-row:1;font-size:12px}
  .site-header .shell-nav{grid-column:1/-1;grid-row:2;width:100%;justify-content:space-between;gap:12px}
  .site-header .shell-nav a{font-size:13px;padding:10px 0}
  .shell-footer-brand{font-size:13vw;gap:12px}
  .shell-footer-brand img{width:40px}
  .thesis-page .thesis-hero h1{font-size:clamp(34px,9.5vw,56px);line-height:1.02}
  .thesis-page .thesis-hero .hero-intro{gap:12px}
  .thesis-page .thesis-hero .hero-source{max-width:25ch}
  .launch-spread>span{max-width:calc(100% - 18px);overflow-wrap:normal}
}
@container record (max-width:440px){
  .map-page table.ch,.map-page table.ch tbody,.map-page table.ch tr{display:block;width:100%}
  .map-page table.ch thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .map-page table.ch tbody tr{padding:10px 0;border-bottom:1px solid var(--rule)}
  .map-page table.ch td{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;border:0;padding:4px 0}
  .map-page table.ch td:empty{display:none}
  .map-page table.ch td::before{font:9px/1.5 var(--mono);color:var(--mute);text-transform:uppercase}
  .map-page table.ch td:nth-child(1)::before{content:'Code'}
  .map-page table.ch td:nth-child(2)::before{content:'Product'}
  .map-page table.ch td:nth-child(3)::before{content:'Published'}
  .map-page table.ch td:nth-child(4)::before{content:'Notes'}
}
@media(max-width:360px){
  .index-facts strong{font-size:34px}
  .section-title h2{font-size:36px}
  .steps h3{font-size:56px}
  .launch-spread>span{font-size:20px}
  .funding-list strong{font-size:19px}
  .map-page .row{grid-template-columns:10px minmax(0,1fr);gap:8px}
  .map-page .row .d{grid-column:2}
}
@media(max-height:600px) and (min-width:601px){
  .hero.home-hero{height:auto;min-height:100svh}
  .thesis-page .thesis-hero{height:auto;min-height:calc(100svh - var(--nav-height))}
  .thesis-page .thesis-hero h1{font-size:clamp(32px,10svh,64px);margin-top:24px}
  .hero-composition{padding-block:20px}
}
