/* Data Center Edition: visual system (October 2026 redesign).
   Loaded last. New components use the ed- prefix; tokens are shared with the Lab and the reader.
   Design notes: work/visual-2026-10-26/DESIGN.md */
:root{
  --ed-paper:#F7F4EE;--ed-stone:#ECE7DC;--ed-ink:#151C21;--ed-night:#0D1418;--ed-night-2:#16222A;--ed-muted:#5E625F;--ed-line:#D7D2C7;
  --ed-heat:#B4432C;--ed-heat-tint:#F2D8CE;--ed-water:#1F6F78;--ed-water-tint:#CFE5E4;--ed-power:#86590C;--ed-power-tint:#F1E2BF;
  --ed-network:#2E4E8C;--ed-network-tint:#D6DEEE;--ed-build:#56624A;--ed-build-tint:#DDE3D3;
  --ed-heat-on-night:#F08A6E;--ed-water-on-night:#7CC3C6;--ed-power-on-night:#E3B860;--ed-network-on-night:#9DB4E8;--ed-muted-on-night:#A9B0AE;
  --ed-display:Edition,Georgia,serif;--ed-text:SourceText,Georgia,serif;--ed-sans:Inter,Arial,sans-serif;
  --ed-max:1320px;--ed-read:680px;--ed-wide:1040px;--ed-gutter:clamp(20px,4.4vw,64px);
  --ed-gap:clamp(72px,9vw,152px);--ed-ease:cubic-bezier(.2,.7,.2,1);
  --paper:var(--ed-paper);--ink:var(--ed-ink);--muted:var(--ed-muted);--line:var(--ed-line);--accent:var(--ed-heat);
}
html{background:var(--ed-paper)}
body{background:var(--ed-paper);color:var(--ed-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--ed-heat-tint);color:var(--ed-ink)}
.ed-topic-heat{--ed-topic:var(--ed-heat);--ed-topic-tint:var(--ed-heat-tint);--ed-topic-night:var(--ed-heat-on-night)}
.ed-topic-water{--ed-topic:var(--ed-water);--ed-topic-tint:var(--ed-water-tint);--ed-topic-night:var(--ed-water-on-night)}
.ed-topic-power{--ed-topic:var(--ed-power);--ed-topic-tint:var(--ed-power-tint);--ed-topic-night:var(--ed-power-on-night)}
.ed-topic-network{--ed-topic:var(--ed-network);--ed-topic-tint:var(--ed-network-tint);--ed-topic-night:var(--ed-network-on-night)}
.ed-topic-build{--ed-topic:var(--ed-build);--ed-topic-tint:var(--ed-build-tint);--ed-topic-night:var(--ed-heat-on-night)}

/* Layout primitives */
.ed-wrap{width:min(100% - 2*var(--ed-gutter),var(--ed-max));margin-inline:auto}
.ed-read{width:min(100% - 2*var(--ed-gutter),var(--ed-read));margin-inline:auto}
.ed-band{padding-block:var(--ed-gap)}
.ed-band.is-night{background:var(--ed-night);color:var(--ed-paper)}
.ed-band.is-stone{background:var(--ed-stone)}
.ed-kicker{font:600 13px/1.3 var(--ed-sans);letter-spacing:.02em;color:var(--ed-topic,var(--ed-muted));margin:0 0 14px}
.is-night .ed-kicker{color:var(--ed-topic-night,var(--ed-muted-on-night))}
.ed-section-title{font:400 clamp(34px,4.2vw,56px)/1.04 var(--ed-display);letter-spacing:-.01em;margin:0}
.ed-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:clamp(28px,4vw,48px)}
.ed-section-head p{font:400 17px/1.5 var(--ed-text);color:var(--ed-muted);max-width:44ch;margin:12px 0 0}
.is-night .ed-section-head p{color:var(--ed-muted-on-night)}
.ed-more{font:600 14px/1 var(--ed-sans);color:inherit;white-space:nowrap;display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:currentColor}
.ed-more:hover{color:var(--ed-topic,var(--ed-heat))}
.is-night .ed-more:hover{color:var(--ed-heat-on-night)}
.ed-button{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;background:var(--ed-ink);color:var(--ed-paper);font:600 15px/1 var(--ed-sans);text-decoration:none;border:0;cursor:pointer;transition:background .2s var(--ed-ease)}
.ed-button:hover{background:#2B3740}
.ed-button.is-light{background:var(--ed-paper);color:var(--ed-ink)}
.ed-button.is-light:hover{background:#fff}
.ed-button.is-ghost{background:transparent;color:inherit;box-shadow:inset 0 0 0 1px currentColor}
.ed-button.is-ghost:hover{background:rgba(127,127,127,.12)}
.ed-button:focus-visible,.ed-more:focus-visible{outline:3px solid currentColor;outline-offset:3px}

/* Pictures: reserved space, quiet captions, fade in when decoded */
.ed-pic{margin:0;position:relative}
.ed-pic-frame{position:relative;overflow:hidden;background:var(--ed-stone)}
.is-night .ed-pic-frame{background:var(--ed-night-2)}
.ed-pic-frame img{display:block;width:100%;height:100%;object-fit:cover}
.ed-pic figcaption,.ed-caption{font:400 13px/1.45 var(--ed-sans);color:var(--ed-muted);margin-top:10px;max-width:64ch}
.is-night .ed-pic figcaption,.is-night .ed-caption{color:var(--ed-muted-on-night)}
.ed-pic figcaption a,.ed-caption a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.ed-ratio-21x9{aspect-ratio:21/9}.ed-ratio-16x9{aspect-ratio:16/9}.ed-ratio-3x2{aspect-ratio:3/2}.ed-ratio-4x3{aspect-ratio:4/3}.ed-ratio-4x5{aspect-ratio:4/5}.ed-ratio-1x1{aspect-ratio:1}
/* Only images that begin loading after a client-side navigation fade in (portal.js marks them is-pending);
   server-rendered first views and script failures always show their images. */
@media (prefers-reduced-motion:no-preference){
  .ed-pic-frame img{transition:opacity .6s var(--ed-ease)}
  .ed-pic-frame img.is-pending{opacity:0}
  .ed-zoom .ed-pic-frame img{transition:transform .9s var(--ed-ease),opacity .6s var(--ed-ease)}
  .ed-zoom:hover .ed-pic-frame img,.ed-zoom:focus-within .ed-pic-frame img{transform:scale(1.025)}
}

/* Header: one compact row with the drawn wordmark; navigation wraps to its own row on phones */
.ed-header{position:relative;z-index:30;background:var(--ed-paper);border-bottom:1px solid var(--ed-line)}
.ed-header-inner{display:flex;align-items:center;gap:clamp(16px,3vw,40px);min-height:68px}
.ed-brand{display:inline-flex;align-items:center;min-height:44px;flex:none}
.ed-brand img{display:block;width:190px;height:auto}
.ed-header .primary-nav{display:flex;align-items:center;gap:clamp(18px,2.4vw,34px);margin:0 0 0 auto;padding:0;border:0;overflow:visible}
.ed-header .primary-nav a{font:500 15px/1 var(--ed-sans);color:var(--ed-ink);text-decoration:none;min-height:44px;display:inline-flex;align-items:center;padding:0;letter-spacing:0;text-transform:none;position:relative}
.ed-header .primary-nav a:hover{color:var(--ed-heat)}
.ed-header .primary-nav a[aria-current=page]{color:var(--ed-ink)}
.ed-header .primary-nav a[aria-current=page]::after{content:"";position:absolute;left:0;right:0;bottom:8px;height:2px;background:var(--ed-heat)}
.ed-header .header-tools{display:flex;gap:4px;position:static;margin:0}
.ed-header .header-tool{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ed-ink);background:transparent;border:0;position:relative;padding:0}
.ed-header .header-tool:hover{background:var(--ed-stone)}
.ed-header .header-tool svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.ed-header .saved-count{position:absolute;top:6px;right:5px;min-width:16px;height:16px;border-radius:8px;background:var(--ed-heat);color:#fff;font:700 10px/16px var(--ed-sans);text-align:center;padding:0 3px}
@media(max-width:760px){
  .ed-header-inner{flex-wrap:wrap;column-gap:8px;row-gap:0;padding-top:6px}
  .ed-brand img{width:164px}
  .ed-header .header-tools{margin-left:auto}
  .ed-header .primary-nav{order:3;width:100%;margin:0;justify-content:space-between;gap:12px;border-top:1px solid var(--ed-line)}
  .ed-header .primary-nav a{font-size:14px}
}
/* On phones the wordmark is the way home, so the nav row keeps Stories, Watch, Lab, Magazine and About. */
@media(max-width:760px){.ed-header .primary-nav a[data-nav=home]{display:none}}
@media(max-width:359px){.ed-header .primary-nav{gap:8px}.ed-header .primary-nav a{font-size:13px}}

/* Home cover: the issue photograph at full width with the nameplate, like the printed cover */
.ed-cover{position:relative;background:var(--ed-night);color:var(--ed-paper);overflow:hidden;isolation:isolate}
.ed-cover-photo{position:absolute;inset:0;margin:0;z-index:-2}
.ed-cover-photo img{width:100%;height:100%;object-fit:cover;object-position:68% 42%}
.ed-cover::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(13,20,24,.94) 0%,rgba(13,20,24,.84) 30%,rgba(13,20,24,.25) 62%,rgba(13,20,24,0) 80%),linear-gradient(0deg,rgba(13,20,24,.7) 0%,rgba(13,20,24,0) 34%)}
.ed-cover-copy{min-height:min(86vh,880px);display:flex;flex-direction:column;justify-content:flex-end;padding-block:clamp(56px,8vw,112px) clamp(40px,5vw,72px)}
.ed-cover-nameplate{width:clamp(220px,24vw,330px);height:auto;margin-bottom:auto}
.ed-cover .ed-kicker{color:var(--ed-heat-on-night);margin-top:48px}
.ed-cover h1{font:400 clamp(52px,7.4vw,112px)/.96 var(--ed-display);letter-spacing:-.025em;margin:0;max-width:9.5ch}
.ed-cover h1 a{color:inherit;text-decoration:none}
.ed-cover-standfirst{font:400 clamp(19px,1.6vw,23px)/1.45 var(--ed-text);color:#D9DDDA;max-width:31ch;margin:26px 0 34px}
.ed-cover-actions{display:flex;align-items:center;gap:18px 26px;flex-wrap:wrap}
.ed-cover-credit{position:absolute;right:var(--ed-gutter);bottom:20px;font:400 12px/1.4 var(--ed-sans);color:rgba(247,244,238,.72);max-width:42ch;text-align:right;margin:0}
.ed-cover-credit a{color:inherit}
@media(max-width:760px){
  .ed-cover{display:flex;flex-direction:column}
  .ed-cover::before{display:none}
  .ed-cover-photo{position:relative;inset:auto;z-index:0;aspect-ratio:4/5}
  .ed-cover-photo img{object-position:66% 30%}
  .ed-cover-copy{min-height:0;padding-block:34px 44px}
  .ed-cover-nameplate{display:none}
  .ed-cover .ed-kicker{margin-top:0}
  .ed-cover-credit{position:static;text-align:left;margin:-26px var(--ed-gutter) 34px;color:var(--ed-muted-on-night)}
}

/* Story groupings on the home page: one lead, a contrasting pair, then a compact row */
.ed-issue-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(40px,5vw,72px) clamp(20px,2.6vw,40px)}
.ed-story{position:relative}
.ed-story a.ed-story-link{color:inherit;text-decoration:none}
.ed-story h3{font:400 clamp(26px,2.4vw,34px)/1.1 var(--ed-display);letter-spacing:-.01em;margin:0 0 12px;text-wrap:balance}
.ed-story p{font:400 17px/1.55 var(--ed-text);color:#3E4440;margin:0;max-width:46ch}
.ed-story .ed-meta{font:400 13px/1.4 var(--ed-sans);color:var(--ed-muted);margin-top:14px}
.ed-story a.ed-story-link:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.ed-story .ed-pic{margin-bottom:22px}
.ed-story.is-lead{grid-column:1/-1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);align-items:end}
.ed-story.is-lead .ed-story-picture{grid-column:1/9}.ed-story.is-lead .ed-pic{margin:0}
.ed-story.is-lead .ed-story-copy{grid-column:9/-1;padding-bottom:6px}
.ed-story.is-lead h3{font-size:clamp(34px,3.6vw,52px);line-height:1.02}
.ed-story.is-lead p{font-size:19px}
.ed-story.is-pair-a{grid-column:1/8}
.ed-story.is-pair-b{grid-column:8/-1;padding-top:clamp(0px,9vw,140px)}
.ed-story.is-small{grid-column:span 4;display:grid;grid-template-columns:116px minmax(0,1fr);gap:18px;align-items:start;padding-top:24px;border-top:1px solid var(--ed-line)}
.ed-story.is-small .ed-pic{margin:0}
.ed-story.is-small h3{font-size:23px}
.ed-story.is-small p{font-size:15px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:900px){
  .ed-issue-grid{grid-template-columns:1fr;gap:52px}
  .ed-story.is-lead{display:block}.ed-story.is-lead .ed-pic{margin-bottom:22px}
  .ed-story.is-pair-a,.ed-story.is-pair-b,.ed-story.is-small{grid-column:auto;padding-top:0}
  .ed-story.is-small{padding-top:22px;grid-template-columns:96px minmax(0,1fr)}
}

/* Cinema band: wide stills, an obvious play control, quiet credits */
.ed-cinema-lead{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);align-items:end}
.ed-film{color:inherit;text-decoration:none;display:block}
.ed-film .ed-pic-frame{border-radius:2px}
.ed-play{position:absolute;left:clamp(16px,2vw,28px);bottom:clamp(16px,2vw,28px);width:clamp(56px,5.4vw,76px);height:clamp(56px,5.4vw,76px);border-radius:50%;background:rgba(247,244,238,.94);display:grid;place-items:center;transition:transform .35s var(--ed-ease),background .2s;box-shadow:0 6px 28px rgba(0,0,0,.35)}
.ed-play svg{width:34%;height:34%;margin-left:6%;fill:var(--ed-night)}
.ed-film:hover .ed-play,.ed-film:focus-visible .ed-play{transform:scale(1.07);background:#fff}
.ed-film:focus-visible{outline:3px solid var(--ed-paper);outline-offset:4px}
.ed-duration{position:absolute;right:14px;bottom:14px;font:600 12px/1 var(--ed-sans);color:#fff;background:rgba(13,20,24,.72);padding:6px 8px;border-radius:3px}
.ed-cinema-lead .ed-film{grid-column:1/10}
.ed-cinema-lead .ed-film-copy{grid-column:10/-1}
.ed-film-title{font:400 clamp(28px,2.8vw,40px)/1.08 var(--ed-display);margin:0 0 12px;text-wrap:balance}
.ed-film-credit{font:400 13px/1.5 var(--ed-sans);color:var(--ed-muted-on-night);margin:0 0 14px}
.ed-film-copy p:not(.ed-film-credit):not(.film-original-title){font:400 17px/1.55 var(--ed-text);color:#C9CFCC;margin:0 0 20px}
.ed-cinema-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);margin-top:clamp(40px,5vw,72px)}
.ed-cinema-row .ed-film-title{font-size:clamp(23px,2vw,28px);margin-top:18px}
.ed-cinema-note{font:400 13px/1.5 var(--ed-sans);color:var(--ed-muted-on-night);margin:clamp(32px,4vw,52px) 0 0;max-width:70ch}
@media(max-width:900px){.ed-cinema-lead{display:block}.ed-cinema-lead .ed-film-copy{margin-top:20px}.ed-cinema-row{grid-template-columns:1fr}}

/* Instrument band (Lab): a quiet grid, each experiment shown by its own scene */
.ed-instrument{background:var(--ed-night-2);color:var(--ed-paper);background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:32px 32px}
.ed-lab-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,28px);list-style:none;margin:0;padding:0}
.ed-lab-tile a{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none;background:rgba(13,20,24,.62);border:1px solid rgba(255,255,255,.08);border-radius:4px;padding:18px 18px 22px;transition:border-color .25s,background .25s}
.ed-lab-tile a:hover,.ed-lab-tile a:focus-visible{border-color:rgba(255,255,255,.32);background:rgba(13,20,24,.9)}
.ed-lab-tile a:focus-visible{outline:3px solid var(--ed-paper);outline-offset:3px}
.ed-scene{display:block;width:100%;height:auto;aspect-ratio:4/3;margin-bottom:18px}
.ed-lab-tile .ed-kicker{margin-bottom:8px}
.ed-lab-tile .ed-lab-tile-title{font:400 26px/1.1 var(--ed-display);margin:0 0 10px;color:inherit}
.ed-lab-tile p{font:400 15px/1.5 var(--ed-sans);color:#C3C9C6;margin:0 0 16px}
.ed-lab-meta{margin-top:auto;font:500 13px/1.3 var(--ed-sans);color:var(--ed-muted-on-night)}
.ed-lab-explored{color:var(--ed-water-on-night)}
@media(max-width:1000px){.ed-lab-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Phones: the experiments become a row you can swipe, with the next one peeking in */
@media(max-width:560px){.ed-lab-tiles{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:82%;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:12px;margin-inline:calc(-1*var(--ed-gutter));padding-inline:var(--ed-gutter);scroll-padding-inline:var(--ed-gutter)}.ed-lab-tile{scroll-snap-align:start}}

/* Issue band: the cover and a sequence of real pages */
.ed-issue{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,88px);align-items:center}
.ed-issue-cover{box-shadow:0 30px 60px -20px rgba(21,28,33,.45),0 0 0 1px rgba(21,28,33,.06);transform:rotate(-1.2deg)}
.ed-issue h2{font:400 clamp(38px,4.6vw,64px)/1.02 var(--ed-display);margin:0 0 18px;letter-spacing:-.015em}
.ed-issue p.ed-lede{font:400 19px/1.55 var(--ed-text);color:#3E4440;max-width:42ch;margin:0 0 28px}
.ed-pages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:40px;list-style:none;padding:0}
.ed-pages a{display:block;color:inherit;text-decoration:none}
.ed-pages img{display:block;width:100%;height:auto;aspect-ratio:1323/1871;object-fit:cover;box-shadow:0 0 0 1px rgba(21,28,33,.08);transition:transform .35s var(--ed-ease)}
.ed-pages a:hover img{transform:translateY(-4px)}
.ed-pages span{display:block;font:500 12px/1.3 var(--ed-sans);color:var(--ed-muted);margin-top:8px}
@media(max-width:900px){.ed-issue{grid-template-columns:1fr}.ed-issue-cover{max-width:300px;transform:none}.ed-pages{gap:10px}}

/* Footer */
.ed-footer{background:var(--ed-night);color:var(--ed-paper);padding:clamp(56px,7vw,96px) 0 32px}
.ed-footer-grid{display:grid;grid-template-columns:minmax(0,5fr) repeat(2,minmax(0,2fr)) minmax(0,3fr);gap:32px}
.ed-footer-brand img{width:240px;height:auto;display:block}
.ed-footer-brand p{font:400 17px/1.5 var(--ed-text);color:var(--ed-muted-on-night);margin:16px 0 0;max-width:30ch}
.ed-footer h2{font:600 13px/1 var(--ed-sans);color:var(--ed-muted-on-night);margin:0 0 16px}
.ed-footer nav a{display:flex;align-items:center;min-height:36px;font:400 15px/1.3 var(--ed-sans);color:var(--ed-paper);text-decoration:none}
.ed-footer nav a:hover{color:var(--ed-heat-on-night)}
.ed-footer-note{border-top:1px solid rgba(255,255,255,.12);margin-top:clamp(40px,5vw,64px);padding-top:22px;font:400 13px/1.5 var(--ed-sans);color:var(--ed-muted-on-night);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.ed-footer-note a{color:inherit}
@media(max-width:900px){.ed-footer-grid{grid-template-columns:1fr 1fr}.ed-footer-brand{grid-column:1/-1}}

/* Focal points per picture (CSP keeps style attributes out of the markup) */
[data-img="network"] img{object-position:66% 40%}
[data-img="frontier"] img{object-position:50% 45%}
[data-img="water"] img{object-position:42% 50%}
[data-img="heat-exchanger-editorial"] img{object-position:50% 50%}
[data-img="operations"] img{object-position:50% 40%}
.ed-story-picture{display:block;color:inherit}
.ed-story h3 a{color:inherit;text-decoration:none}
.ed-story h3 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.ed-story h3 a:focus-visible{outline:3px solid var(--ed-topic,var(--ed-ink));outline-offset:4px}
.ed-film{position:relative}
.ed-film-title a{color:inherit;text-decoration:none}
.ed-film-title a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}

/* Lab scenes: thin lines, heat and water flows, quiet labels */
.ed-scene .s-line{fill:none;stroke:rgba(247,244,238,.5);stroke-width:1.4}
.ed-scene .s-dash{stroke-dasharray:4 5}
.ed-scene .s-heat{fill:none;stroke:var(--ed-heat-on-night);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.ed-scene .s-water{fill:none;stroke:var(--ed-water-on-night);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.ed-scene .s-heat-soft{fill:none;stroke:var(--ed-heat-on-night);stroke-width:1.6;stroke-linecap:round;opacity:.7}
.ed-scene .s-fill-heat{fill:var(--ed-heat-on-night)}
.ed-scene .s-fill-water{fill:var(--ed-water-on-night)}
.ed-scene .s-fill-ok{fill:#7ED39A}
.ed-scene .s-fill-dim{fill:rgba(247,244,238,.38)}
.ed-scene .s-track{fill:rgba(247,244,238,.12)}
.ed-scene text{font-family:var(--ed-sans);fill:rgba(247,244,238,.78);font-size:13px}
.ed-scene .s-value{font-size:13px;font-weight:600;fill:var(--ed-paper)}
.ed-scene .s-value-heat{font-size:14px;font-weight:700;fill:var(--ed-heat-on-night)}
.ed-scene .s-big-power,.ed-scene .s-big-heat,.ed-scene .s-big-water,.ed-scene .s-big-network{font-family:var(--ed-display);font-size:34px}
.ed-scene .s-big-power{fill:var(--ed-power-on-night)}.ed-scene .s-big-heat{fill:var(--ed-heat-on-night)}
.ed-scene .s-big-water{fill:var(--ed-water-on-night)}.ed-scene .s-big-network{fill:var(--ed-network-on-night)}
@media (prefers-reduced-motion:no-preference){
  .ed-scene .s-flow{stroke-dasharray:10 8;animation:ed-flow 2.4s linear infinite}
  .ed-lab-tile a:not(:hover):not(:focus-visible) .ed-scene .s-flow{animation-play-state:paused}
}
@keyframes ed-flow{to{stroke-dashoffset:-36}}

/* Page heads for index views */
.ed-page-head{padding-block:clamp(48px,6vw,96px) clamp(28px,3vw,44px)}
.ed-page-head h1{font:400 clamp(52px,7vw,104px)/.95 var(--ed-display);letter-spacing:-.025em;margin:0}
.ed-page-lede{font:400 clamp(19px,1.6vw,23px)/1.45 var(--ed-text);color:#3E4440;max-width:46ch;margin:22px 0 0}
.ed-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:34px}
.ed-filters button{min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--ed-line);background:transparent;font:500 14px/1 var(--ed-sans);color:var(--ed-ink);cursor:pointer}
.ed-filters button:hover{border-color:var(--ed-ink)}
.ed-filters button[aria-pressed=true]{background:var(--ed-ink);border-color:var(--ed-ink);color:var(--ed-paper)}
.ed-filters button:focus-visible{outline:3px solid var(--ed-ink);outline-offset:2px}

/* Stories index: a lead, then entries that alternate picture shapes */
.ed-collection{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(48px,6vw,96px) clamp(20px,2.6vw,40px);padding-bottom:var(--ed-gap)}
.ed-entry h2{font:400 clamp(28px,2.6vw,38px)/1.08 var(--ed-display);letter-spacing:-.01em;margin:0 0 12px;text-wrap:balance}
.ed-entry h2 a,.ed-card h3 a{color:inherit;text-decoration:none}
.ed-entry h2 a:hover,.ed-card h3 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.ed-entry .collection-summary{font:400 17px/1.55 var(--ed-text);color:#3E4440;margin:0;max-width:46ch}
.ed-entry .ed-pic{margin-bottom:20px}
.ed-entry.is-lead{grid-column:1/-1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);align-items:end}
.ed-entry.is-lead .collection-picture{grid-column:1/8}.ed-entry.is-lead .ed-pic{margin:0}
.ed-entry.is-lead .collection-copy{grid-column:8/-1}
.ed-entry.is-lead h2{font-size:clamp(36px,3.8vw,56px);line-height:1.02}
.ed-entry.is-entry{grid-column:span 6}
.ed-entry.is-entry:nth-child(even){padding-top:clamp(0px,6vw,96px)}
.ed-entry-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;font:400 13px/1.4 var(--ed-sans);color:var(--ed-muted)}
.ed-save{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--ed-line);background:transparent;color:var(--ed-ink);cursor:pointer;flex:none}
.ed-save svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6}
.ed-save:hover{border-color:var(--ed-ink)}
.ed-save.is-saved svg{fill:currentColor}
.ed-save:focus-visible{outline:3px solid var(--ed-ink);outline-offset:2px}
@media(max-width:900px){.ed-collection{grid-template-columns:1fr;gap:56px}.ed-entry.is-lead{display:block}.ed-entry.is-lead .ed-pic{margin-bottom:20px}.ed-entry.is-entry{grid-column:auto;padding-top:0!important}}

/* Cards (More to read, saved) */
.ed-three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.6vw,40px)}
.ed-card h3{font:400 clamp(24px,2vw,30px)/1.1 var(--ed-display);margin:0 0 10px;text-wrap:balance}
.ed-card>p:not(.ed-kicker){font:400 16px/1.55 var(--ed-text);color:#3E4440;margin:0}
.ed-card .ed-pic{margin-bottom:18px}
@media(max-width:900px){.ed-three{grid-template-columns:1fr;gap:48px}}

/* Story page */
.ed-opener{padding-bottom:clamp(32px,4vw,56px)}
.ed-opener-pic .ed-pic-frame{aspect-ratio:21/9;max-height:76vh;width:100%}
@media(max-width:760px){.ed-opener-pic .ed-pic-frame{aspect-ratio:4/3}}
.ed-opener-copy{padding-top:clamp(36px,5vw,64px)}
.ed-opener h1{font:400 clamp(44px,6vw,84px)/1 var(--ed-display);letter-spacing:-.02em;margin:0 0 22px;text-wrap:balance}
.ed-standfirst{font:400 clamp(20px,1.8vw,25px)/1.45 var(--ed-text);color:#30363A;margin:0 0 26px}
.ed-byline{display:flex;flex-wrap:wrap;gap:6px 18px;font:400 14px/1.4 var(--ed-sans);color:var(--ed-muted);margin:0 0 20px}
.ed-tools{display:flex;flex-wrap:wrap;gap:10px}
.ed-tools button{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 16px;border-radius:999px;border:1px solid var(--ed-line);background:transparent;font:500 14px/1 var(--ed-sans);color:var(--ed-ink);cursor:pointer}
.ed-tools button:hover{border-color:var(--ed-ink)}
.ed-tools button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6}
.ed-tools button[aria-pressed=true] svg{fill:currentColor}
.ed-tools button[aria-expanded=true]{background:var(--ed-ink);border-color:var(--ed-ink);color:var(--ed-paper)}
.ed-tools button:focus-visible{outline:3px solid var(--ed-ink);outline-offset:2px}
.ed-opener-credit{font:400 13px/1.45 var(--ed-sans);color:var(--ed-muted);margin:26px 0 0;padding-top:14px;border-top:1px solid var(--ed-line)}
.ed-opener-credit a{color:inherit}
.ed-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--ed-read)) minmax(0,1fr);column-gap:var(--ed-gutter);padding-bottom:var(--ed-gap)}
.ed-toc{grid-column:1;justify-self:end;position:sticky;top:24px;align-self:start;width:min(220px,100%);display:flex;flex-direction:column;gap:2px;padding-top:6px}
.ed-toc-title{font:600 13px/1 var(--ed-sans);color:var(--ed-muted);margin:0 0 10px}
.ed-toc a{font:400 14px/1.35 var(--ed-sans);color:var(--ed-ink);text-decoration:none;padding:7px 0 7px 12px;border-left:2px solid var(--ed-line)}
.ed-toc a:hover{border-left-color:var(--ed-topic,var(--ed-heat));color:var(--ed-topic,var(--ed-heat))}
.ed-prose{grid-column:2}
.ed-prose h2{font:400 clamp(30px,2.8vw,38px)/1.1 var(--ed-display);margin:clamp(48px,5vw,72px) 0 18px;letter-spacing:-.01em}
.ed-prose section:first-child h2{margin-top:0}
.ed-prose p{font:400 clamp(18px,1.3vw,20px)/1.68 var(--ed-text);margin:0 0 1.15em;color:#22292E}
.ed-section-sources{display:flex;flex-wrap:wrap;gap:6px 14px;font:400 13px/1.4 var(--ed-sans)!important;color:var(--ed-muted)!important}
.ed-section-sources a{color:var(--ed-muted);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.ed-section-sources:empty{display:none}
.ed-sources{margin-top:clamp(56px,6vw,88px);padding-top:28px;border-top:1px solid var(--ed-ink)}
.ed-sources h2{font:600 15px/1 var(--ed-sans);margin:0 0 18px;letter-spacing:0}
.ed-sources ol{margin:0;padding-left:20px;display:grid;gap:12px}
.ed-sources li{font:400 15px/1.45 var(--ed-sans)}
.ed-sources li a{color:var(--ed-ink)}
.ed-sources li span{display:block;color:var(--ed-muted);font-size:13px}
.ed-sources>p{font:400 14px/1.5 var(--ed-sans)!important;color:var(--ed-muted)!important;margin-top:22px!important}
.ed-sources>p a{color:inherit}
@media(max-width:1100px){.ed-body{grid-template-columns:minmax(0,1fr)}.ed-toc{display:none}.ed-prose{grid-column:1;width:min(100% - 2*var(--ed-gutter),var(--ed-read));margin-inline:auto}}

/* Figures inside the story: wider than the text, with title, text alternative and source */
.ed-figure{margin:clamp(40px,5vw,72px) 0;width:min(var(--ed-wide),calc(100vw - 2*var(--ed-gutter)));position:relative;left:50%;transform:translateX(-50%)}
.ed-figure-title{font:600 15px/1.35 var(--ed-sans)!important;color:var(--ed-ink)!important;margin:0 0 14px!important}
.ed-figure-art{background:#FBF9F5;border:1px solid var(--ed-line);border-radius:4px;padding:clamp(14px,2.4vw,32px)}
.ed-figure-art svg{display:block;width:100%;height:auto}
.ed-figure figcaption{font:400 14px/1.5 var(--ed-sans);color:var(--ed-muted);margin-top:12px;max-width:72ch}
.ed-figure-source a{color:inherit}
@media(max-width:1100px){.ed-figure{width:100%;left:auto;transform:none}}

/* Watch index: the whole page sits in the cinema register */
.ed-watch{background:var(--ed-night);color:var(--ed-paper);padding-bottom:var(--ed-gap)}
.ed-watch .ed-page-lede{color:#C9CFCC}
.ed-watch .ed-kicker{color:var(--ed-heat-on-night)}
.ed-film-desc{font:400 16px/1.55 var(--ed-text);color:#C3C9C6;margin:0;max-width:52ch}
.ed-watch .ed-cinema-note a,.ed-film-page a{color:inherit}
.film-original-title{font:400 14px/1.5 var(--ed-sans);color:var(--ed-muted-on-night);margin:0 0 12px}
.film-original-title cite{font-style:italic}

/* Film page: a dark stage for the player, notes on paper, more films back in the dark */
.ed-film-page.page-wrap{width:auto;max-width:none;margin:0;padding:0;background:var(--ed-night);color:var(--ed-paper)}
.ed-film-page>.back-link,.ed-film-page>.return-crumbs{display:flex;width:min(100% - 2*var(--ed-gutter),var(--ed-max));margin:0 auto;padding-top:22px;min-height:44px;align-items:center;font:500 14px/1 var(--ed-sans);color:var(--ed-muted-on-night)}
.ed-film-page>.return-crumbs{gap:22px}
.ed-film-page>.return-crumbs .back-link{color:var(--ed-muted-on-night);font:500 14px/1 var(--ed-sans)}
.ed-film-page .return-link{color:var(--ed-paper)!important}
.ed-film-head{width:min(100% - 2*var(--ed-gutter),920px);margin:0 auto;text-align:center;padding:clamp(28px,4vw,56px) 0 clamp(28px,3vw,40px)}
.ed-film-head .ed-kicker{color:var(--ed-heat-on-night)}
.ed-film-head h1{font:400 clamp(40px,5.4vw,76px)/1.02 var(--ed-display);letter-spacing:-.02em;margin:0 0 18px;text-wrap:balance}
.ed-film-lede{font:400 clamp(18px,1.5vw,21px)/1.5 var(--ed-text);color:#C9CFCC;margin:0 auto 18px;max-width:46ch}
.ed-stage{width:min(100% - 2*var(--ed-gutter),1200px);margin:0 auto;padding-bottom:clamp(40px,5vw,72px)}
.ed-stage .inline-film{border-radius:4px;overflow:hidden;box-shadow:0 30px 80px -30px rgba(0,0,0,.8)}
.ed-film-links{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:14px;font:500 14px/1 var(--ed-sans)}
.ed-film-links a,.ed-film-links button{color:var(--ed-muted-on-night);min-height:44px;display:inline-flex;align-items:center;gap:8px;background:none;border:0;cursor:pointer;font:inherit}
.ed-film-links a:hover,.ed-film-links button:hover{color:var(--ed-paper)}
.ed-film-links svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6}
.ed-film-notes{background:var(--ed-paper);color:var(--ed-ink);padding-block:clamp(56px,7vw,104px)}
.ed-film-notes .film-companion{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(32px,5vw,88px)}
.ed-film-watch h2{font:400 clamp(30px,2.8vw,40px)/1.1 var(--ed-display);margin:0 0 20px}
.ed-film-watch p{font:400 18px/1.65 var(--ed-text);color:#22292E;margin:0 0 1em;max-width:62ch}
.ed-film-watch .film-summary-title{font:400 24px/1.2 var(--ed-display);margin:36px 0 12px}
.ed-film-watch .film-source-context,.ed-film-watch .film-summary-note,.ed-film-watch .film-captions,.ed-film-watch .embed-notice{font:400 14px/1.55 var(--ed-sans);color:var(--ed-muted)}
.ed-film-related{display:flex;flex-direction:column;gap:28px}
.ed-related-story,.ed-related-lab{display:block;color:var(--ed-ink);text-decoration:none}
.ed-related-story .ed-pic{margin-bottom:14px}
.ed-related-title{display:block;font:400 26px/1.15 var(--ed-display);margin-top:4px}
.ed-related-story:hover .ed-related-title,.ed-related-lab:hover .ed-related-title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.ed-related-lab{background:var(--ed-night-2);color:var(--ed-paper);border-radius:4px;padding:18px}
.ed-related-lab .ed-scene{margin-bottom:12px}
.ed-related-lab .ed-kicker{color:var(--ed-water-on-night)}
.ed-film-page .film-lab-link{margin:0}
@media(max-width:900px){.ed-film-notes .film-companion{grid-template-columns:1fr}}

/* Lab invitation inside a story */
.ed-invite{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(18px,3vw,36px);align-items:center;background:var(--ed-night-2);color:var(--ed-paper);border-radius:6px;padding:clamp(20px,3vw,36px);margin:clamp(48px,5vw,72px) 0;scroll-margin-top:24px;border:0;max-width:none;width:min(var(--ed-wide),calc(100vw - 2*var(--ed-gutter)));position:relative;left:50%;transform:translateX(-50%);background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:28px 28px}
.ed-invite .ed-scene{margin:0}
.ed-invite .lab-invite-kicker{color:var(--ed-water-on-night);font:600 13px/1.3 var(--ed-sans);margin:0 0 10px;text-transform:none;letter-spacing:.01em}
.ed-invite h2{font:400 clamp(30px,3vw,40px)/1.05 var(--ed-display)!important;margin:0 0 12px!important;color:var(--ed-paper)}
.ed-invite p:not(.lab-invite-kicker){font:400 17px/1.55 var(--ed-text)!important;color:#C9CFCC!important;margin:0 0 20px!important}
.ed-invite .lab-invite-link{background:var(--ed-paper);color:var(--ed-ink);font:600 15px/1 var(--ed-sans);padding:0 22px;min-height:48px}
@media(max-width:1100px){.ed-invite{width:100%;left:auto;transform:none}}
@media(max-width:640px){.ed-invite{grid-template-columns:1fr}}

/* Lab index: the whole page is the instrument register */
.ed-lab-index.page-wrap{width:auto;max-width:none;margin:0;padding:0 max(var(--ed-gutter),calc((100% - var(--ed-max))/2)) var(--ed-gap);color:var(--ed-paper)}
.ed-lab-index .lab-index-heading{padding-left:0;padding-right:0}
.ed-lab-index .ed-page-lede{color:#C9CFCC}
.ed-lab-index .ed-kicker{color:var(--ed-water-on-night)}
.ed-lab-index>.return-crumbs{padding-top:22px}
.ed-lab-index .return-link,.ed-lab-index .return-crumbs a{color:var(--ed-paper)}
.ed-lab-tiles.is-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,2.4vw,36px)}
.ed-lab-tiles.is-index .ed-lab-tile a{padding:clamp(22px,2.6vw,36px)}
.ed-lab-tiles.is-index .ed-lab-tile .ed-lab-tile-title{font-size:clamp(30px,3vw,42px)}
.ed-lab-tiles.is-index .ed-lab-tile p{font-size:17px;max-width:44ch}
.ed-lab-notes{margin-top:clamp(40px,5vw,64px);max-width:70ch;font:400 15px/1.6 var(--ed-sans);color:var(--ed-muted-on-night)}
.ed-lab-notes .text-button{color:var(--ed-paper);text-decoration:underline;text-underline-offset:4px;background:none;border:0;font:inherit;font-weight:600;min-height:44px;cursor:pointer;padding:0 4px}
@media(max-width:760px){.ed-lab-tiles.is-index{grid-template-columns:1fr}}

/* Experiment page: an opener with the scene, the activity on paper, more experiments back in the dark */
.ed-lab-detail.page-wrap{width:auto;max-width:none;margin:0;padding:0}
.ed-lab-hero{color:var(--ed-paper);padding:0 max(var(--ed-gutter),calc((100% - var(--ed-max))/2)) clamp(36px,5vw,72px)}
.ed-lab-hero .lab-crumbs{padding-top:22px}
.ed-lab-hero .lab-crumbs a,.ed-lab-hero .back-link{color:var(--ed-muted-on-night)}
.ed-lab-hero .return-link{color:var(--ed-paper)}
.ed-lab-hero .lab-heading{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(24px,4vw,64px);align-items:center;padding-top:clamp(24px,4vw,56px);margin:0}
.ed-lab-hero .ed-kicker{color:var(--ed-water-on-night)}
.ed-lab-hero h1{font:400 clamp(48px,6.4vw,92px)/.98 var(--ed-display);letter-spacing:-.02em;margin:0 0 20px;color:var(--ed-paper)}
.ed-lab-hero .standfirst{font:400 clamp(19px,1.7vw,24px)/1.45 var(--ed-text);color:#C9CFCC;margin:0 0 16px;max-width:36ch}
.ed-lab-hero .lab-meta{font:500 14px/1.4 var(--ed-sans);color:var(--ed-muted-on-night)}
.ed-lab-hero .ed-scene{margin:0;max-width:440px;justify-self:end;width:100%}
.ed-lab-hero .ed-scene .s-flow{animation-play-state:running}
@media(max-width:760px){.ed-lab-hero .lab-heading{grid-template-columns:1fr}.ed-lab-hero .ed-scene{justify-self:start;max-width:360px}}
.ed-lab-detail>.lab-intro,.ed-lab-detail>#lab-mount,.ed-lab-detail>.lab-method,.ed-lab-detail>.lab-related{width:min(100% - 2*var(--ed-gutter),1120px);margin-left:auto;margin-right:auto}
.ed-lab-detail>.lab-intro{font:400 19px/1.6 var(--ed-text);max-width:min(100% - 2*var(--ed-gutter),68ch);margin-top:clamp(36px,4vw,56px)}
.ed-lab-detail>#lab-mount{margin-top:clamp(32px,4vw,56px)}
.ed-lab-more{color:var(--ed-paper);padding:var(--ed-gap) max(var(--ed-gutter),calc((100% - var(--ed-max))/2));margin:0;border:0}
.ed-lab-more h2{color:var(--ed-paper);margin-bottom:clamp(28px,3vw,44px)!important}
.ed-lab-tiles.is-compact{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:900px){.ed-lab-tiles.is-compact{grid-template-columns:1fr}}

/* Film page fixes against older rules */
.ed-film-head .ed-film-lede{color:#C9CFCC}
.ed-film-head .ed-film-credit,.ed-film-head .film-original-title{color:var(--ed-muted-on-night)}
.ed-related-lab .ed-related-title{color:var(--ed-paper);font:400 26px/1.15 var(--ed-display)}
.ed-film-page .film-lab-link a{display:block;margin:0}

/* Focal points for the photographs in the media catalogue (generated from work/visual-2026-10-26/selection.json) */
[data-img="op-cdu"] img{object-position:50% 38%}
[data-img="op-ai-factory"] img{object-position:50% 62%}
[data-img="op-asia"] img{object-position:50% 64%}
[data-img="op-water"] img{object-position:50% 60%}
[data-img="op-modular"] img{object-position:50% 50%}
[data-img="op-commissioning"] img{object-position:50% 58%}
[data-img="cdu-plate-hx"] img{object-position:50% 50%}
[data-img="cdu-cold-plate"] img{object-position:50% 50%}
[data-img="cdu-towers"] img{object-position:50% 50%}
[data-img="ai-coolant-hoses"] img{object-position:60% 50%}
[data-img="ai-node-hands"] img{object-position:50% 50%}
[data-img="ai-campus"] img{object-position:50% 50%}
[data-img="asia-port"] img{object-position:50% 50%}
[data-img="asia-night"] img{object-position:50% 50%}
[data-img="asia-cableship"] img{object-position:50% 50%}
[data-img="water-lake-intake"] img{object-position:50% 50%}
[data-img="water-plume"] img{object-position:50% 45%}
[data-img="water-district-heat"] img{object-position:50% 50%}
[data-img="mod-substation-lift"] img{object-position:50% 50%}
[data-img="mod-site-aerial"] img{object-position:50% 50%}
[data-img="comm-switchgear-test"] img{object-position:50% 50%}
[data-img="comm-cooling-plant"] img{object-position:40% 50%}
[data-img="about-aisle"] img{object-position:50% 50%}
[data-img="contribute-tech"] img{object-position:50% 40%}
[data-img="watch-frontier-lead"] img{object-position:50% 40%}

/* Natural-ratio pictures (in-story photographs keep their own shape) */
.ed-pic-frame.ed-ratio-auto img{height:auto}

/* Split opener: the picture beside the headline, for stories whose best photograph is upright */
.ed-opener.is-split{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(28px,4vw,72px);align-items:center;width:min(100% - 2*var(--ed-gutter),var(--ed-max));margin:0 auto;padding-top:clamp(32px,4vw,64px)}
.ed-opener.is-split .ed-opener-pic{order:2}
.ed-opener.is-split .ed-opener-pic .ed-pic-frame{aspect-ratio:4/5;max-height:82vh}
.ed-opener.is-split .ed-opener-copy{width:auto;margin:0;padding-top:0}
@media(max-width:760px){.ed-opener.is-split{grid-template-columns:1fr;width:auto;padding-top:0}.ed-opener.is-split .ed-opener-pic{order:0}.ed-opener.is-split .ed-opener-pic .ed-pic-frame{aspect-ratio:4/3}.ed-opener.is-split .ed-opener-copy{width:min(100% - 2*var(--ed-gutter),var(--ed-read));margin:0 auto;padding-top:28px}}

/* Photographs inside a story: wider than the text, one wide or a pair */
.ed-visual{margin:clamp(40px,5vw,72px) 0;width:min(var(--ed-wide),calc(100vw - 2*var(--ed-gutter)));position:relative;left:50%;transform:translateX(-50%)}
.ed-visual.is-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,2vw,28px);align-items:start}
.ed-visual .ed-pic figcaption{max-width:58ch}
@media(max-width:1100px){.ed-visual{width:100%;left:auto;transform:none}}
@media(max-width:640px){.ed-visual.is-pair{grid-template-columns:1fr}}

/* Captions under film stills */
.ed-cinema-still{min-width:0}
.ed-cinema-lead .ed-cinema-still{grid-column:1/10}
.ed-cinema-lead .ed-cinema-still .ed-film{grid-column:auto}
.ed-still-caption{color:var(--ed-muted-on-night)!important;margin-top:12px}
.ed-still-caption a{color:inherit}
@media(max-width:900px){.ed-cinema-lead .ed-cinema-still{grid-column:auto}}

/* Secondary films: portrait stills beside their text, cropped to the work (hardware, the factory floor) */
.ed-ratio-3x4{aspect-ratio:3/4}
[data-img="cooling-still"] img{object-position:0% 50%}
[data-img="modular-still"] img{object-position:21% 50%}
[data-img="frontier-still"] img{object-position:50% 50%}
.ed-cinema-row.is-portrait{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,3vw,56px)}
.ed-film-item{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(16px,2vw,28px);align-items:end}
.ed-film-item .ed-play{width:52px;height:52px;left:14px;bottom:14px}
.ed-film-item .ed-film-title{margin-top:0}
.ed-film-item .ed-still-caption{font-size:12px}
@media(max-width:900px){.ed-cinema-row.is-portrait{grid-template-columns:1fr}}
@media(max-width:480px){.ed-film-item{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}

/* Figure vocabulary for story explainers (inline SVG; the CSP forbids style attributes and <style> in markup).
   Lines: f-ink, f-muted, f-heat, f-water, f-power, f-network, f-build (add f-thin or f-thick, f-dash).
   Fills: f-fill-paper, f-fill-stone, f-fill-heat, f-fill-water, f-fill-power, f-fill-network, f-fill-build and -tint variants.
   Text: f-label, f-label-strong, f-note, f-value (display numbers), f-value-heat/-water/-power/-network, f-axis. */
.ed-figure-art svg text{font-family:var(--ed-sans);font-size:13px;fill:var(--ed-ink)}
.ed-figure-art .f-label{font-size:13px;fill:var(--ed-ink)}
.ed-figure-art .f-label-strong{font-size:14px;font-weight:600;fill:var(--ed-ink)}
.ed-figure-art .f-note{font-size:12px;fill:var(--ed-muted)}
.ed-figure-art .f-axis{font-size:11px;fill:var(--ed-muted)}
.ed-figure-art .f-value{font-family:var(--ed-display);font-size:30px;fill:var(--ed-ink)}
.ed-figure-art .f-value-heat{font-family:var(--ed-display);font-size:30px;fill:var(--ed-heat)}
.ed-figure-art .f-value-water{font-family:var(--ed-display);font-size:30px;fill:var(--ed-water)}
.ed-figure-art .f-value-power{font-family:var(--ed-display);font-size:30px;fill:var(--ed-power)}
.ed-figure-art .f-value-network{font-family:var(--ed-display);font-size:30px;fill:var(--ed-network)}
.ed-figure-art .f-ink,.ed-figure-art .f-muted,.ed-figure-art .f-heat,.ed-figure-art .f-water,.ed-figure-art .f-power,.ed-figure-art .f-network,.ed-figure-art .f-build{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
.ed-figure-art .f-ink{stroke:var(--ed-ink)}.ed-figure-art .f-muted{stroke:#9A9C93}
.ed-figure-art .f-heat{stroke:var(--ed-heat);stroke-width:4}.ed-figure-art .f-water{stroke:var(--ed-water);stroke-width:4}
.ed-figure-art .f-power{stroke:var(--ed-power);stroke-width:4}.ed-figure-art .f-network{stroke:var(--ed-network);stroke-width:3}
.ed-figure-art .f-build{stroke:var(--ed-build);stroke-width:3}
.ed-figure-art .f-thin{stroke-width:1.2}.ed-figure-art .f-thick{stroke-width:6}.ed-figure-art .f-dash{stroke-dasharray:6 6}
.ed-figure-art .f-fill-paper{fill:#FBF9F5}.ed-figure-art .f-fill-stone{fill:var(--ed-stone)}
.ed-figure-art .f-fill-heat{fill:var(--ed-heat)}.ed-figure-art .f-fill-water{fill:var(--ed-water)}.ed-figure-art .f-fill-power{fill:var(--ed-power)}.ed-figure-art .f-fill-network{fill:var(--ed-network)}.ed-figure-art .f-fill-build{fill:var(--ed-build)}
.ed-figure-art .f-fill-heat-tint{fill:var(--ed-heat-tint)}.ed-figure-art .f-fill-water-tint{fill:var(--ed-water-tint)}.ed-figure-art .f-fill-power-tint{fill:var(--ed-power-tint)}.ed-figure-art .f-fill-network-tint{fill:var(--ed-network-tint)}.ed-figure-art .f-fill-build-tint{fill:var(--ed-build-tint)}
.ed-figure-art .f-fill-ink{fill:var(--ed-ink)}.ed-figure-art .f-fill-land{fill:#E6E1D6}.ed-figure-art .f-fill-sea{fill:#F3F1EB}

/* About and Contribute: one photograph, a calm reading column */
.ed-page-opener{padding-bottom:clamp(40px,5vw,72px)}
.ed-page-opener h1{font:400 clamp(44px,6vw,84px)/1 var(--ed-display);letter-spacing:-.02em;margin:0 0 22px;text-wrap:balance}
.ed-about .ed-prose{padding-bottom:var(--ed-gap)}
.ed-about .ed-prose h2:first-child{margin-top:0}
.ed-about .ed-prose a:not(.ed-more){color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.ed-pitch{padding-bottom:var(--ed-gap)}
.ed-pitch .pitch-layout{max-width:var(--ed-read)}
.ed-pitch .pitch-guidance h2{font:400 clamp(30px,3vw,40px)/1.1 var(--ed-display);margin:0 0 20px}
.ed-pitch .pitch-guidance article{display:grid;grid-template-columns:64px minmax(0,1fr);gap:16px;padding:24px 0;border-top:1px solid var(--ed-line)}
.ed-pitch .pitch-guidance article>span{font:400 34px/1 var(--ed-display);color:var(--ed-heat)}
.ed-pitch .pitch-guidance h3{font:400 25px/1.2 var(--ed-display);margin:0 0 8px}
.ed-pitch .pitch-guidance p{font:400 17px/1.6 var(--ed-text);margin:0;color:#30363A}
.ed-pitch details{border-top:1px solid var(--ed-line);padding-top:16px;margin-top:8px}
.ed-pitch details summary{font:600 15px/1.4 var(--ed-sans);min-height:44px;display:list-item;padding:11px 0;box-sizing:border-box;cursor:pointer}
@media(max-width:900px){.ed-pitch .pitch-layout{grid-template-columns:1fr}}

/* Quiet system states: not found, empty search, empty saved list, loading */
.ed-quiet{width:min(100% - 2*var(--ed-gutter),760px);margin:0 auto;padding:clamp(64px,10vw,140px) 0}
.ed-quiet h1{font:400 clamp(40px,5vw,64px)/1.05 var(--ed-display);margin:0 0 16px}
.ed-quiet p{font:400 19px/1.55 var(--ed-text);color:#3E4440;margin:0 0 28px}
.ed-quiet nav{display:flex;flex-wrap:wrap;gap:10px}
.ed-quiet nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--ed-line);font:500 15px/1 var(--ed-sans);color:var(--ed-ink);text-decoration:none}
.ed-quiet nav a:hover{border-color:var(--ed-ink)}
.loading-state{width:min(100% - 2*var(--ed-gutter),var(--ed-max));margin:0 auto;padding:clamp(64px,10vw,140px) 0;font:400 17px/1.5 var(--ed-sans);color:var(--ed-muted)}

/* The Watch index keeps .page-wrap for the return path; its width comes from ed-wrap inside */
.ed-watch.page-wrap{width:auto;max-width:none;margin:0;padding:0 0 var(--ed-gap)}
.ed-watch>.return-crumbs{width:min(100% - 2*var(--ed-gutter),var(--ed-max));margin:0 auto;padding-top:22px}
.ed-watch .return-link{color:var(--ed-paper)}

/* Search and saved panels */
.search-dialog{border:0;border-radius:8px;padding:clamp(20px,3vw,36px);width:min(680px,calc(100% - 32px));max-height:calc(100dvh - 48px);box-shadow:0 30px 80px -20px rgba(13,20,24,.45);background:var(--ed-paper);color:var(--ed-ink)}
.search-dialog::backdrop{background:rgba(13,20,24,.55)}
.search-dialog .dialog-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.search-dialog h2{font:400 clamp(28px,3vw,36px)/1.1 var(--ed-display);margin:0}
.search-dialog .icon-button{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:26px;line-height:1;color:var(--ed-ink);background:transparent;border:0;cursor:pointer}
.search-dialog .icon-button:hover{background:var(--ed-stone)}
.search-dialog label{font:500 14px/1.4 var(--ed-sans);color:var(--ed-muted);display:block;margin-bottom:8px}
.search-dialog input[type=search]{width:100%;min-height:52px;border:1px solid var(--ed-line);border-radius:999px;padding:0 20px;font:400 17px/1 var(--ed-sans);background:#fff;color:var(--ed-ink)}
.search-dialog input[type=search]:focus{outline:3px solid var(--ed-ink);outline-offset:2px}
.ed-result{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;align-items:start;padding:16px 0;border-top:1px solid var(--ed-line);color:var(--ed-ink);text-decoration:none}
.ed-result .ed-pic-frame{border-radius:4px}
.ed-result .ed-kicker{margin:0 0 4px;font-size:12px}
.ed-result h3{font:400 21px/1.15 var(--ed-display);margin:0 0 4px}
.ed-result p{font:400 15px/1.45 var(--ed-sans);color:var(--ed-muted);margin:0}
.ed-result:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.ed-result:focus-visible{outline:3px solid var(--ed-ink);outline-offset:3px}
.empty-results{font:400 16px/1.5 var(--ed-sans);color:var(--ed-muted);padding:18px 0}

/* Pictures, figures and Lab invitations inside a story start at the text's left edge and extend to the right, so they
   never pass under the sticky contents list. */
@media(min-width:1101px){.ed-prose .ed-visual,.ed-prose .ed-figure,.ed-prose .ed-invite{left:auto;transform:none;width:min(var(--ed-wide),calc(50vw + var(--ed-read)/2 - var(--ed-gutter) - 8px))}}
.ed-visual.is-first-2x{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.ed-visual.is-first-wider{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.ed-visual.is-second-2x{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.ed-visual.is-second-wider{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
@media(max-width:640px){.ed-visual.is-pair{grid-template-columns:1fr}}
/* A figure with a phone drawing shows it at 640 px and below, and its wide drawing above. */
.ed-figure-art.has-narrow .ed-figure-narrow{display:none}
@media(max-width:640px){.ed-figure-art.has-narrow .ed-figure-wide{display:none}.ed-figure-art.has-narrow .ed-figure-narrow{display:block}}
/* Phone drawings are 340 units wide and shown at about 320 px, so their smallest text classes step up one size. */
.ed-figure-narrow .f-note{font-size:13px}
.ed-figure-narrow .f-axis{font-size:12px}
/* Reduced motion: hover feedback changes colour only, never position or scale. */
@media (prefers-reduced-motion:reduce){.ed-film:hover .ed-play,.ed-film:focus-visible .ed-play,.ed-pages a:hover img,.ed-lab-tile a:hover,.ed-lab-tile a:focus-visible{transform:none}.ed-play,.ed-pages img,.ed-lab-tile a{transition:none}}
/* The experiment opener uses the full content width, so its scene can lead. */
.ed-lab-hero .lab-heading{max-width:none}
@media(min-width:761px){.ed-lab-hero .ed-scene{max-width:520px}}
/* Phones: other experiments scroll sideways as one row; the Lab index stacks its four instruments. */
@media(max-width:560px){
  .ed-lab-tiles.is-compact{grid-template-columns:none}
  .ed-lab-tiles.is-index{grid-template-columns:1fr;grid-auto-flow:row;grid-auto-columns:auto;overflow:visible;margin-inline:0;padding-inline:0;padding-bottom:0}
}
/* Home story items: the topic label and reading time keep the interface style, whatever the item's size. */
.ed-story .ed-story-copy p.ed-kicker{display:block;font:600 13px/1.3 var(--ed-sans);letter-spacing:.02em;color:var(--ed-topic,var(--ed-muted));margin:0 0 10px;max-width:none}
.ed-story .ed-story-copy p.ed-meta{display:block;font:400 13px/1.4 var(--ed-sans);color:var(--ed-muted);margin-top:14px;max-width:none}
/* Lab buttons share the site's pill shape across all four experiments. */
#lab-mount .lab-button{border-radius:999px;padding-left:22px;padding-right:22px;text-align:center}
/* The Watch band starts right under the header (an older top margin collapsed through it and showed paper). */
.ed-watch .watch-intro{margin-top:0}

/* Figure steps: a row of large buttons above the drawing. While a step is lit the row stays in view as the reader
   scrolls through a tall drawing, its parts stay at full strength and the rest dims. */
.ed-steps{margin:0 0 16px;background:var(--ed-paper)}
.ed-figure.is-stepping .ed-steps{position:sticky;top:0;z-index:3;padding:10px 0 12px;box-shadow:0 1px 0 var(--ed-line)}
.ed-steps-row{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:6px;margin:-6px}
.ed-steps-row.has-more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 40px),transparent)}
/* With a mouse or trackpad the buttons wrap onto a second line instead of hiding behind a scrollbar. */
@media (hover:hover) and (pointer:fine){.ed-steps-row{flex-wrap:wrap;overflow:visible}.ed-steps-row.has-more{-webkit-mask-image:none;mask-image:none}}
.ed-steps-row::-webkit-scrollbar{display:none}
.ed-step{flex:none;display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 18px 0 12px;border:1px solid var(--ed-line);border-radius:999px;background:#FFFDF9;color:var(--ed-ink);font:600 14px/1.2 var(--ed-sans);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .18s var(--ed-ease),color .18s var(--ed-ease),border-color .18s var(--ed-ease)}
.ed-step[data-figure-step="-1"]{padding-left:18px}
.ed-step:hover{border-color:var(--ed-ink)}
.ed-step:active{background:var(--ed-stone)}
.ed-step[aria-pressed=true]{background:var(--ed-ink);border-color:var(--ed-ink);color:var(--ed-paper)}
.ed-step:focus-visible{outline:3px solid var(--ed-topic,var(--ed-ink));outline-offset:2px}
.ed-step-n{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--ed-topic,var(--ed-heat));color:#fff;font:700 12px/1 var(--ed-sans)}
.ed-step[aria-pressed=true] .ed-step-n{background:var(--ed-paper);color:var(--ed-ink)}
.ed-figure .ed-step-output{font:400 16px/1.5 var(--ed-sans);color:var(--ed-ink);margin:12px 0 0;max-width:64ch}
.ed-figure .ed-step-texts{font:400 15px/1.55 var(--ed-sans);color:var(--ed-ink);margin:0;padding-left:1.4em}
.ed-step-texts li{margin:0 0 6px}
.ed-figure:not(.is-enhanced) .ed-steps-row,.ed-figure:not(.is-enhanced) .ed-step-output,.ed-figure.is-enhanced .ed-step-texts{display:none}
.ed-figure.has-steps .ed-figure-art [data-part]{transition:opacity .28s var(--ed-ease)}
.ed-figure.is-stepping .ed-figure-art [data-part]:not(.is-lit){opacity:.13}
@media (prefers-reduced-motion:reduce){.ed-figure.has-steps .ed-figure-art [data-part],.ed-step{transition:none}}
@media (forced-colors:active){.ed-step[aria-pressed=true]{border:3px solid CanvasText}}

/* Story photographs open in a full-screen viewer; the picture itself is the way in. */
.ed-pic-open{display:block;color:inherit;cursor:zoom-in;-webkit-tap-highlight-color:transparent}
.ed-pic-open:focus-visible{outline:3px solid var(--ed-topic,var(--ed-ink));outline-offset:3px}
html.has-viewer{overflow:hidden;background:#0B1114}
.ed-viewer{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#0B1114;color:var(--ed-paper);overflow:hidden}
.ed-viewer::backdrop{background:#0B1114}
@media (prefers-reduced-motion:no-preference){.ed-viewer[open]{animation:ed-viewer-in .22s var(--ed-ease)}}
@keyframes ed-viewer-in{from{opacity:0}to{opacity:1}}
.ed-viewer-track{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior:contain;scrollbar-width:none}
.ed-viewer-track::-webkit-scrollbar{display:none}
.ed-viewer-slide{flex:0 0 100%;height:100%;margin:0;scroll-snap-align:center;scroll-snap-stop:always;display:grid;grid-template-rows:minmax(0,1fr) auto;padding:64px clamp(12px,4vw,72px) 92px;box-sizing:border-box}
.ed-viewer-frame{display:grid;place-items:center;min-height:0;cursor:zoom-out}
.ed-viewer-frame img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;cursor:default}
.ed-viewer-slide figcaption{font:400 14px/1.5 var(--ed-sans);color:#C9CFCC;max-width:72ch;margin:14px auto 0;text-align:center}
.ed-viewer-slide figcaption a{color:var(--ed-paper)}
.ed-viewer-close{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));display:grid;place-items:center;width:48px;height:48px;border:0;border-radius:50%;background:rgba(247,244,238,.12);color:var(--ed-paper);cursor:pointer}
.ed-viewer-close svg,.ed-viewer-step svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ed-viewer-bar{position:absolute;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:4px;border-radius:999px;background:rgba(22,34,42,.92)}
.ed-viewer-step{display:grid;place-items:center;width:48px;height:48px;border:0;border-radius:50%;background:transparent;color:var(--ed-paper);cursor:pointer}
.ed-viewer-step[aria-disabled=true]{opacity:.3;cursor:default}
.ed-viewer-count{min-width:64px;margin:0;text-align:center;font:600 14px/1 var(--ed-sans);color:var(--ed-paper)}
.ed-viewer-close:hover,.ed-viewer-step:not([aria-disabled=true]):hover{background:rgba(247,244,238,.2)}
.ed-viewer-close:focus-visible,.ed-viewer-step:focus-visible{outline:3px solid var(--ed-paper);outline-offset:2px}
@media(max-width:640px){.ed-viewer-slide{padding:64px 0 96px}.ed-viewer-slide figcaption{padding:0 16px}}

/* Stories index: a sequence, not a grid. A lead, then an offset pair and a full-width band in turn. */
.ed-sequence{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(64px,8vw,128px) clamp(20px,2.6vw,40px);padding-bottom:var(--ed-gap)}
.ed-sequence .ed-entry.is-pair-a{grid-column:1/7}
.ed-sequence .ed-entry.is-pair-b{grid-column:7/-1;padding-top:clamp(0px,8vw,128px)}
.ed-sequence .ed-entry.is-wide{grid-column:1/-1}
.ed-sequence .ed-entry.is-wide .ed-pic{margin-bottom:28px}
.ed-sequence .ed-entry.is-wide .collection-copy{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-areas:"kicker summary" "title summary" "title meta";column-gap:clamp(24px,4vw,64px);align-items:start}
.ed-sequence .ed-entry.is-wide .collection-topic{grid-area:kicker}
.ed-sequence .ed-entry.is-wide h2{grid-area:title;font-size:clamp(34px,3.6vw,52px);line-height:1.02}
.ed-sequence .ed-entry.is-wide .collection-summary{grid-area:summary;font-size:19px;max-width:44ch}
.ed-sequence .ed-entry.is-wide .collection-meta{grid-area:meta;margin-top:12px}
@media(max-width:900px){.ed-sequence .ed-entry.is-wide .collection-copy{display:block}}
/* Phones: the lead and the bands stay large; pairs become compact rows with a portrait picture. */
@media(max-width:760px){
  .ed-sequence{grid-template-columns:minmax(0,1fr);gap:44px}
  .ed-sequence .ed-entry.is-lead,.ed-sequence .ed-entry.is-wide{grid-column:auto;display:block}
  .ed-sequence .ed-entry.is-lead .ed-pic-frame{aspect-ratio:4/5}
  .ed-sequence .ed-entry.is-wide .ed-pic-frame{aspect-ratio:3/2}
  .ed-sequence .ed-entry.is-lead .ed-pic,.ed-sequence .ed-entry.is-wide .ed-pic{margin:0 calc(-1*var(--ed-gutter)) 20px}
  .ed-sequence .ed-entry.is-pair-a,.ed-sequence .ed-entry.is-pair-b{grid-column:auto;padding-top:0;display:grid;grid-template-columns:38% minmax(0,1fr);gap:16px;align-items:start}
  .ed-sequence .ed-entry.is-pair-a .ed-pic,.ed-sequence .ed-entry.is-pair-b .ed-pic{margin:0}
  .ed-sequence .ed-entry.is-pair-a .ed-pic-frame,.ed-sequence .ed-entry.is-pair-b .ed-pic-frame{aspect-ratio:4/5}
  .ed-sequence .ed-entry.is-pair-a h2,.ed-sequence .ed-entry.is-pair-b h2{font-size:22px;margin-bottom:8px}
  .ed-sequence .ed-entry.is-pair-a .collection-summary,.ed-sequence .ed-entry.is-pair-b .collection-summary{font-size:15px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
  .ed-sequence .ed-entry.is-pair-a .collection-meta,.ed-sequence .ed-entry.is-pair-b .collection-meta{margin-top:10px}
}
.ed-sequence .collection-picture{display:block;color:inherit}
@media(max-width:760px){.ed-sequence .ed-entry.is-pair-a .collection-copy,.ed-sequence .ed-entry.is-pair-b .collection-copy{padding-top:0}}
/* Touch: standalone links and buttons are at least 44 px in each direction. */
.ed-tools button,.ed-filters button,.ed-section-sources a,.ed-footer-grid nav a{min-height:44px}
.ed-footer-note a,.lab-related li a{display:inline-flex;align-items:center;min-height:44px}
/* Short nav words keep a 44 px tap area through an invisible extension, so spacing and the underline follow the word. */
.ed-header .primary-nav a::before{content:"";position:absolute;top:0;bottom:0;left:min(0px,calc(50% - 22px));right:min(0px,calc(50% - 22px))}
/* Scenes are still pictures. Only an experiment's opener shows its flow, three times on arrival, never in a loop. */
@media (prefers-reduced-motion:no-preference){.ed-scene .s-flow{animation:none}.ed-lab-hero .ed-scene .s-flow{animation:ed-flow 2.4s linear 3}}
/* Film page header: an older .film-page-heading>p rule outranked these, leaving grey serif text on the dark stage. */
.ed-film-page .ed-film-head>p.ed-kicker{font:600 13px/1.3 var(--ed-sans);letter-spacing:.02em;color:var(--ed-heat-on-night);margin:0 auto 14px;max-width:none}
.ed-film-page .ed-film-head>p.ed-film-lede{font:400 clamp(18px,1.6vw,21px)/1.5 var(--ed-text);color:#C9CFCC;max-width:60ch;margin:0 auto 16px}
.ed-film-page .ed-film-head>p.ed-film-credit,.ed-film-page .ed-film-head>p.film-original-title{font:400 14px/1.5 var(--ed-sans);color:var(--ed-muted-on-night);margin:0 auto 10px}
/* Credits for story pictures shown in a list: one quiet line under the list. */
.ed-group-credits{font:400 13px/1.55 var(--ed-sans);color:var(--ed-muted);margin:clamp(28px,3vw,40px) 0 0;max-width:110ch}
.ed-group-credits a{color:inherit}
.is-night .ed-group-credits{color:var(--ed-muted-on-night)}
.ed-sequence .ed-group-credits{grid-column:1/-1;margin-top:0}
.ed-film-related .ed-group-credits{margin-top:10px;font-size:12px}
.search-dialog .ed-group-credits{margin:16px 0 4px}
/* The magazine cover keeps its own proportions at every width (its height attribute is only a hint). */
.ed-issue-cover{display:block;width:100%;height:auto;aspect-ratio:760/1075}
.ed-pic-frame picture{display:contents}
/* Focus rings contrast with what surrounds a control, not with its own fill. */
.ed-button:focus-visible{outline:3px solid var(--ed-ink);outline-offset:3px}
.is-night .ed-button:focus-visible,.ed-cover .ed-button:focus-visible,.ed-invite .ed-button:focus-visible,.ed-instrument .ed-button:focus-visible,.ed-watch .ed-button:focus-visible{outline-color:var(--ed-paper)}
.ed-instrument a:focus-visible,.ed-instrument button:focus-visible{outline:3px solid var(--ed-paper);outline-offset:2px}
.ed-opener-pic .ed-pic-open:focus-visible{outline:4px solid var(--ed-topic,var(--ed-ink));outline-offset:-4px}
@media (forced-colors:active){.ed-filters button[aria-pressed=true]{border:3px solid CanvasText;text-decoration:underline}}
/* Film pages on phones: the player runs to the screen edge and no further. */
@media(max-width:600px){.ed-stage .inline-film{margin-left:calc(-1*var(--ed-gutter));margin-right:calc(-1*var(--ed-gutter))}}
/* Reading list: each story has its own bookmark toggle beside it. */
.ed-result-row{display:flex;align-items:center;gap:8px}
.ed-result-row .ed-result{flex:1;min-width:0}
.ed-result-row .ed-save{flex:none}
/* Phones: "More to read" is a row to swipe through, with the next story peeking in, rather than a stack of cards. */
@media(max-width:760px){
  .ed-three{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:78%;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;margin-inline:calc(-1*var(--ed-gutter));padding:0 var(--ed-gutter) 4px;scroll-padding-inline:var(--ed-gutter)}
  .ed-three::-webkit-scrollbar{display:none}
  .ed-three>.ed-card{scroll-snap-align:start;min-width:0}
}
.ed-card p.ed-kicker{font:600 13px/1.3 var(--ed-sans);letter-spacing:.02em;color:var(--ed-topic,var(--ed-muted));margin:0 0 8px}
/* Wide story openers leave room for the headline in the first screen, on desktop and in phone landscape. */
.ed-opener:not(.is-split) .ed-opener-pic .ed-pic-frame{max-height:min(50vh,540px)}
@media (orientation:landscape) and (max-height:520px){.ed-opener:not(.is-split) .ed-opener-pic .ed-pic-frame{max-height:46vh}.ed-opener.is-split .ed-opener-pic .ed-pic-frame{max-height:70vh}}
/* Film pages: a compact header, so the player (the page's focal point) and its play button sit in the first screen. */
.ed-film-page .ed-film-head{padding:clamp(14px,2.2vw,28px) 0 clamp(16px,1.8vw,24px)}
.ed-film-page .ed-film-head h1{font-size:clamp(34px,3.8vw,56px);margin-bottom:12px}
.ed-film-page .ed-film-head>p.ed-film-lede{font-size:clamp(17px,1.4vw,19px);margin-bottom:8px}
.ed-film-page .ed-film-head>p.ed-film-credit,.ed-film-page .ed-film-head>p.film-original-title{display:inline-block;margin:0 .6em}
.ed-film-page .ed-stage{width:min(100% - 2*var(--ed-gutter),1200px,calc((100vh - 300px)*16/9))}
@media(max-width:600px){.ed-film-page .ed-stage{width:min(100% - 2*var(--ed-gutter),1200px)}}
/* Phone landscape: the film first, its title under it. */
@media (orientation:landscape) and (max-height:520px){
  .ed-film-page.page-wrap{display:flex;flex-direction:column}
  .ed-film-page>.ed-stage{order:1;width:min(100% - 2*var(--ed-gutter),calc((100vh - 64px)*16/9));padding-top:6px}
  .ed-film-page>.ed-film-head{order:2}.ed-film-page>.ed-film-notes{order:3}.ed-film-page>.more-films{order:4}
}
/* Figures sit a little wider than the text, not at photo width, so their labels stay near body size. */
@media(min-width:1101px){.ed-prose .ed-figure{width:min(780px,calc(50vw + var(--ed-read)/2 - var(--ed-gutter) - 8px))}}
/* Step buttons are compact enough on desktop to keep a figure's steps on one or two even lines. */
@media (hover:hover) and (pointer:fine){.ed-step{font-size:13px;padding:0 14px 0 9px;gap:7px}.ed-step[data-figure-step="-1"]{padding-left:14px}.ed-step-n{width:22px;height:22px;font-size:11px}}
/* The front page names the publication once, in the header; the cover photograph carries the issue line alone. */
.ed-cover-nameplate{display:none}
/* The magazine band opens on a spread from inside the issue. */
.ed-issue-spread{display:grid;grid-template-columns:1fr 1fr;align-self:center;box-shadow:0 30px 60px -24px rgba(21,28,33,.45),0 0 0 1px rgba(21,28,33,.08);border-radius:2px;overflow:hidden;color:inherit;max-width:640px}
.ed-issue-spread img{display:block;width:100%;height:auto;aspect-ratio:640/905}
.ed-issue-spread:focus-visible{outline:3px solid var(--ed-ink);outline-offset:4px}
@media(max-width:900px){.ed-issue-spread{max-width:560px}}

/* Contribute: the status is one quiet line under the standfirst. */
.ed-contribute .contribute-status{font:600 14px/1.4 var(--ed-sans);color:var(--ed-muted);margin:14px 0 0}
/* The outer links extend their tap area inward only, so it never reaches past the row. */
.ed-header .primary-nav a:last-child::before{right:0;left:min(0px,calc(100% - 44px))}
.ed-header .primary-nav a:first-child::before{left:0;right:min(0px,calc(100% - 44px))}

/* Imagery, 27 October 2026: bigger pictures where the page had small ones, crops sized to what each source supports. */
/* Home, In this issue: the coast story runs edge to edge (the band measures its own width; no 100vw), then a pair. */
.ed-issue-stories{container-type:inline-size}
.ed-story.is-band{grid-column:1/-1}
.ed-story.is-band .ed-story-picture{margin-inline:calc(50% - 50cqw)}
.ed-story.is-band .ed-pic{margin:0 0 clamp(22px,2.6vw,36px)}
.ed-story.is-band .ed-pic-frame{width:100%;max-height:min(78vh,720px)}
.ed-story.is-band .ed-story-copy{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:clamp(24px,4vw,64px);align-items:end}
.ed-story.is-band .ed-story-copy>*{grid-column:1}
.ed-story.is-band .ed-story-copy>p:not(.ed-kicker):not(.ed-meta){grid-column:2;grid-row:1/span 2;align-self:end;font-size:19px}
.ed-story.is-band .ed-story-copy>p.ed-meta{grid-column:2}
.ed-story.is-band h3{font-size:clamp(34px,3.6vw,52px);line-height:1.02;margin:0}
.ed-story.is-duo-a{grid-column:1/7}
.ed-story.is-duo-b{grid-column:7/-1}
@media(max-width:900px){
  .ed-story.is-duo-a,.ed-story.is-duo-b{grid-column:auto}
  .ed-story.is-band .ed-story-copy{display:block}
  .ed-story.is-band .ed-story-copy>p:not(.ed-kicker):not(.ed-meta){margin-top:14px;font-size:17px}
  .ed-story.is-band .ed-pic-frame{aspect-ratio:4/3}
}
@media(max-width:760px){
  /* Phones: after three full-width pictures and the edge-to-edge band, the last two become compact rows. */
  .ed-story.is-duo-a,.ed-story.is-duo-b{display:grid;grid-template-columns:38% minmax(0,1fr);gap:16px;align-items:start}
  .ed-story.is-duo-a .ed-pic,.ed-story.is-duo-b .ed-pic{margin:0}
  .ed-story.is-duo-a .ed-pic-frame,.ed-story.is-duo-b .ed-pic-frame{aspect-ratio:4/5}
  .ed-story.is-duo-a h3,.ed-story.is-duo-b h3{font-size:22px;margin-bottom:8px}
  .ed-story.is-duo-a .ed-story-copy>p:not(.ed-kicker):not(.ed-meta),.ed-story.is-duo-b .ed-story-copy>p:not(.ed-kicker):not(.ed-meta){font-size:15px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
  .ed-issue-grid .ed-story.is-duo-a+.ed-story.is-duo-b{margin-top:-24px}
}
/* Films: the lead still runs the full width with its words beneath; the two company films keep upright crops no wider
   than their 1280 x 720 frames allow on a 2x screen, with their descriptions beside them. */
.ed-cinema-lead{display:block}
.ed-cinema-lead .ed-cinema-still{grid-column:auto}
.ed-cinema-lead .ed-pic-frame{width:100%;max-height:min(70vh,640px)}
.ed-cinema-lead .ed-film-copy{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);column-gap:clamp(24px,4vw,64px);align-items:start;margin-top:clamp(20px,2.4vw,32px)}
.ed-cinema-lead .ed-film-copy>*{grid-column:1}
/* The description (and on Watch the film's original title) starts level with the credit, beside the title. */
.ed-cinema-lead .ed-film-copy>.ed-film-about{grid-column:2;grid-row:1/span 2}
.ed-cinema-lead .ed-film-title{font-size:clamp(32px,3.4vw,48px);line-height:1.04;margin:6px 0 14px}
.ed-film-item{grid-template-columns:minmax(0,min(280px,45%)) minmax(0,1fr);align-items:start}
.ed-film-item .ed-film-copy,.ed-film-item .ed-film-item-copy{padding-top:4px}
@media(max-width:900px){
  .ed-cinema-lead .ed-film-copy{display:block}
  .ed-cinema-lead .ed-pic-frame{aspect-ratio:4/3}
}
@media(max-width:480px){.ed-film-item{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}
/* Story openers: a taller crop on desktop that still leaves the headline in the first screen; square on phones. */
.ed-opener:not(.is-split) .ed-opener-pic .ed-pic-frame{max-height:min(62vh,680px)}
@media(max-width:760px){.ed-opener:not(.is-split) .ed-opener-pic .ed-pic-frame{aspect-ratio:1/1;max-height:none}}
@media (orientation:landscape) and (max-height:520px){.ed-opener:not(.is-split) .ed-opener-pic .ed-pic-frame{aspect-ratio:21/9;max-height:46vh}}
/* Lab index: one experiment per row, the scene given room beside its words, alternating sides. */
.ed-lab-tile-copy{display:flex;flex-direction:column;flex:1}
@media(min-width:901px){
  .ed-lab-tiles.is-index{grid-template-columns:1fr}
  .ed-lab-tiles.is-index .ed-lab-tile a{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:clamp(32px,4.5vw,72px);align-items:center;padding:clamp(28px,3.4vw,52px)}
  .ed-lab-tiles.is-index .ed-scene{grid-column:1;grid-row:1;width:100%;max-width:560px;justify-self:center;margin:0}
  .ed-lab-tiles.is-index .ed-lab-tile-copy{grid-column:2;grid-row:1}
  .ed-lab-tiles.is-index .ed-lab-tile:nth-child(even) a{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
  .ed-lab-tiles.is-index .ed-lab-tile:nth-child(even) .ed-scene{grid-column:2}
  .ed-lab-tiles.is-index .ed-lab-tile:nth-child(even) .ed-lab-tile-copy{grid-column:1}
  .ed-lab-tiles.is-index .ed-lab-meta{margin-top:8px}
  .ed-lab-tiles.is-index .ed-lab-tile .ed-lab-tile-title{font-size:clamp(34px,3.4vw,48px)}
  .ed-lab-tiles.is-index .ed-lab-tile p{font-size:18px;max-width:34ch}
}
/* Story narration: Stop stays focusable while there is nothing to stop. */
.article-audio button[aria-disabled="true"]{opacity:.45;cursor:default}
/* Listen shows that its panel is open, also in forced colours. */
@media (forced-colors:active){.ed-tools button[aria-expanded=true]{border:3px solid CanvasText}}
/* About and Contribute: on phones the opener photograph runs edge to edge, its caption keeps the page gutter. */
@media(max-width:760px){.ed-opener.is-split .ed-pic figcaption{padding-inline:var(--ed-gutter)}}
/* Phones held sideways: the Stories lead, the front page's upright pair and its cover take a landscape crop no taller
   than the screen allows, rather than an upright one over two screens tall. */
@media (max-width:760px) and (orientation:landscape) and (max-height:520px){.ed-cover-photo{width:100%;aspect-ratio:3/2;max-height:70vh}}
@media (max-width:900px) and (orientation:landscape) and (max-height:520px){.ed-sequence .ed-entry.is-lead .ed-pic-frame,.ed-story.is-pair-b .ed-pic-frame{width:100%;aspect-ratio:3/2;max-height:70vh}}
