/* Homepage: a full-width news front. Cover, then wire left, lead centre, events right; then desks. */
.ed-home { color:var(--ed-ivory); font-family:var(--ed-ui); padding-bottom:16px; }
.ed-home [hidden] { display:none !important; }
.ed-home .container { width:min(calc(100% - 64px),var(--ed-page-width)); max-width:var(--ed-page-width); padding-inline:0; margin-inline:auto; }
.ed-home a { color:inherit; text-decoration:none; }
.ed-home :is(a,button,input):focus-visible { outline:2px solid var(--ed-highlight); outline-offset:3px; }

/* Shared type */
.ed-kicker { display:block; color:var(--ed-brand); font:500 10.5px/1.4 var(--font-mono); letter-spacing:.12em; text-transform:uppercase; }
.ed-byline { margin:6px 0 0; color:var(--ed-muted); font:400 11px/1.6 var(--font-mono); letter-spacing:.02em; }
.ed-byline a { color:var(--ed-ivory); }
.ed-byline a:hover { text-decoration:underline; text-underline-offset:3px; }
.ed-more { display:inline-block; margin-top:12px; color:var(--ed-brand) !important; font:600 12px/1.5 var(--ed-ui); }
.ed-more:hover { text-decoration:underline !important; text-underline-offset:3px; }
.ed-rail-head, .ed-section-head { display:flex; align-items:baseline; justify-content:space-between; gap:16px; border-top:2px solid var(--ed-brand); padding-top:10px; margin-bottom:14px; }
.ed-home .ed-rail-head h2, .ed-home .ed-section-head h2 { margin:0; color:var(--ed-ivory); font:800 13px/1.4 var(--ed-ui) !important; letter-spacing:.08em; text-transform:uppercase; }
.ed-section-head a { color:var(--ed-brand) !important; font:600 12px/1.5 var(--ed-ui); white-space:nowrap; }
.ed-section-head a:hover { text-decoration:underline !important; text-underline-offset:3px; }

/* Cover: the lead story. A framed photo with its cutline, then the headline on ink. */
.ed-cover { padding-top:24px; }
.ed-cover-figure { margin:0; }
.ed-cover-image { display:block; height:clamp(340px,30vw,560px); overflow:hidden; border:1px solid var(--ed-rule); background:var(--ed-surface); }
.ed-cover-image img { display:block; width:100%; height:100%; object-fit:cover; object-position:center 35%; transition:transform .6s ease; }
.ed-cover:has(.ed-cover-link:hover) .ed-cover-image img, .ed-cover-image:hover img { transform:scale(1.012); }
.ed-cover-link { display:block; }
.ed-cover-copy { max-width:1180px; padding:28px 0 0; }
.ed-cover-plain .ed-cover-copy { padding-top:32px; }
.ed-home .ed-cover h1 { margin:12px 0 16px; color:var(--ed-ivory) !important; font:800 clamp(40px,5vw,88px)/.98 var(--ed-display) !important; font-variation-settings:"wdth" 40 !important; letter-spacing:-.025em; text-wrap:balance; }
.ed-cover-link:hover h1 { text-decoration:underline; text-decoration-thickness:3px; text-underline-offset:8px; }
.ed-cover .ed-dek { max-width:68ch; color:#d3dedb; font-size:18px; }
.ed-cover .ed-byline { margin-top:14px; }
.ed-cover .ed-kicker { display:inline-block; padding:4px 8px; border:1px solid rgb(241 243 239 / 40%); color:var(--ed-ivory); }
.ed-cover .ed-credit { display:flex; gap:8px; margin-top:8px; font:400 11px/1.5 var(--ed-ui); }
.ed-cover .ed-credit::before { content:"\25B2"; content:"\25B2" / ""; flex:0 0 auto; color:var(--ed-brand); font:400 9px/16px var(--font-mono); }

/* Row 1: the front */
.ed-front { display:grid; grid-template-columns:280px minmax(0,1fr) 320px; grid-template-areas:"wire main rail"; gap:0 36px; padding-top:32px; align-items:start; }
.ed-front-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 28px; }
.ed-front-grid .ed-card h3 { font-size:22px !important; }
.ed-front-main { grid-area:main; min-width:0; }
.ed-front-wire { grid-area:wire; min-width:0; }
.ed-front-rail { grid-area:rail; min-width:0; display:grid; gap:28px; }
.ed-home :is(.ed-front-rail > *, .ed-front-wire, .ed-desk, .ed-band) { margin-block-end:0; }
.ed-front-wire, .ed-front-rail { position:sticky; top:16px; }

.ed-dek { margin:0; max-width:64ch; color:#d3dedb; font:16px/1.55 var(--ed-ui); }
.ed-credit { margin-top:6px; color:var(--ed-muted); font:11px/1.5 var(--ed-ui); overflow-wrap:anywhere; }
.ed-credit p { margin:0; font:inherit; }
.ed-credit a { text-decoration:underline !important; text-underline-offset:3px; }

/* Latest wire */
.ed-wire { list-style:none; margin:0; padding:0; counter-reset:wire; }
.ed-wire li { border-bottom:1px solid var(--ed-rule); }
.ed-wire li:first-child a { padding-top:2px; }
.ed-wire a { display:block; padding:12px 0; }
.ed-wire-meta { display:block; color:var(--ed-brand); font:500 10.5px/1.4 var(--font-mono); letter-spacing:.08em; text-transform:uppercase; }
.ed-wire-title { display:block; margin-top:4px; color:var(--ed-ivory); font:650 15px/1.35 var(--ed-ui); }
.ed-wire a:hover .ed-wire-title { color:var(--ed-brand); }

/* Events rail */
.ed-events { list-style:none; margin:0; padding:0; }
.ed-events li { border-bottom:1px solid var(--ed-rule); }
.ed-events a { display:grid; grid-template-columns:44px minmax(0,1fr); gap:12px; padding:10px 0; align-items:start; }
.ed-event-date { display:flex; flex-direction:column; align-items:center; padding:5px 0 6px; border:1px solid var(--ed-rule); color:var(--ed-brand); font:500 10px/1.2 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; }
.ed-event-date strong { color:var(--ed-ivory); font:750 19px/1.1 var(--ed-display); letter-spacing:0; }
.ed-event-name { display:block; color:var(--ed-ivory); font:650 14px/1.35 var(--ed-ui); }
.ed-event-venue { display:block; margin-top:3px; color:var(--ed-muted); font:12px/1.4 var(--ed-ui); }
.ed-events a:hover .ed-event-name { color:var(--ed-brand); }

.ed-rail-note { margin:0; color:#d3dedb; font:13px/1.55 var(--ed-ui); }
.ed-rail-events .ed-more + .ed-more { margin-left:14px; }

/* Genre links */
.ed-sounds ul { display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0; }
.ed-sounds a { display:inline-flex; align-items:center; min-height:32px; padding:0 12px; border:1px solid var(--ed-rule); color:var(--ed-ivory); font:600 12px/1 var(--ed-ui); }
.ed-sounds a:hover { border-color:var(--ed-brand); color:var(--ed-brand); }

/* Masthead box (who we are, for readers and for search) */
.ed-masthead { padding:16px; border:1px solid var(--ed-rule); background:var(--ed-surface); }
.ed-masthead p { margin:0; color:#d3dedb; font:13px/1.55 var(--ed-ui); }
.ed-masthead .ed-masthead-name { margin-bottom:6px; color:var(--ed-ivory); font:750 17px/1.2 var(--ed-display); letter-spacing:-.2px; }
.ed-masthead nav { display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:10px; }
.ed-masthead nav a { color:var(--ed-brand); font:600 12px/1.5 var(--ed-ui); }
.ed-masthead nav a:hover { text-decoration:underline; text-underline-offset:3px; }

/* Cards and rows */
.ed-card { min-width:0; }
.ed-card-image { aspect-ratio:16/9; overflow:hidden; margin-bottom:12px; background:var(--ed-surface); }
.ed-card-image img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.ed-card-link:hover img { transform:scale(1.02); }
.ed-home .ed-card h3 { margin:6px 0 0; color:var(--ed-ivory); font:700 19px/1.25 var(--ed-display) !important; letter-spacing:-.2px; text-wrap:pretty; }
.ed-card-link:hover h3 { color:var(--ed-brand); }
.ed-row { display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px; align-items:start; padding:12px 0; }
.ed-row:not(:has(.ed-row-image)) { grid-template-columns:minmax(0,1fr); }
.ed-row-image { width:96px; height:72px; object-fit:cover; background:var(--ed-surface); }
.ed-row-title { display:block; color:var(--ed-ivory); font:650 14.5px/1.35 var(--ed-ui); }
.ed-row time { display:block; margin-top:4px; color:var(--ed-muted); font:400 11px/1.4 var(--font-mono); letter-spacing:.02em; }
.ed-row:hover .ed-row-title { color:var(--ed-brand); }

/* Desks: four sections side by side */
.ed-desks { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:32px; margin-top:48px; }
.ed-desks:empty { display:none; }
.ed-desk { min-width:0; }
.ed-desk-list { list-style:none; margin:14px 0 0; padding:0; }
.ed-desk-list li { border-top:1px solid var(--ed-rule); }

/* Full-width bands */
.ed-band { margin-top:48px; }
.ed-grid-4 { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
/* Up to five across; four stories still fill the row */
.ed-grid-fill { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr)); gap:24px; }
.ed-more-list { list-style:none; margin:0; padding:0; gap:0 24px; }
.ed-more-list li { border-bottom:1px solid var(--ed-rule); }

/* Newsletter */
.ed-home .newsletter-close { width:min(calc(100% - 64px),var(--ed-page-width)); margin:48px auto 0; padding:28px; border:1px solid var(--ed-rule); border-radius:0; background:var(--ed-surface); }
.ed-home .newsletter-close-inner { padding:0; gap:12px 28px; border:0; background:none; overflow:visible; }
.ed-home .newsletter-close-fineprint { grid-column:1 / -1; justify-self:end; margin:0; }
.ed-home .newsletter-close-form { display:grid; grid-template-columns:minmax(0, 1fr) auto; }
.ed-home .newsletter-close-form input { width:100%; }
.ed-home .newsletter-close-h { font:700 27px/1.2 var(--ed-display) !important; }
.ed-home .newsletter-close button { background:var(--ed-ivory); color:var(--ed-ink); border-radius:0; font:500 12px/1 var(--font-mono); letter-spacing:.12em; text-transform:uppercase; }

/* Smaller desktop */
@media (max-width:1399px) {
  .ed-front { grid-template-columns:240px minmax(0,1fr) 280px; gap:0 28px; }
  .ed-home .ed-card h3 { font-size:18px !important; }
  .ed-front-grid .ed-card h3 { font-size:20px !important; }
  .ed-row { grid-template-columns:80px minmax(0,1fr); }
  .ed-row-image { width:80px; height:60px; }
}
/* Laptop: four features, lighter type */
@media (max-width:1279px) {
  .ed-front { grid-template-columns:220px minmax(0,1fr) 250px; gap:0 24px; }
  .ed-front-grid { gap:24px 20px; }
  .ed-desks { gap:24px; }
}
/* Tablet: stories on top, wire and rail side by side under them */
@media (max-width:1099px) {
  .ed-cover-image { height:clamp(320px,50vw,500px); }
  .ed-front { grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-areas:"main main" "wire rail"; gap:36px 28px; }
  .ed-front-wire, .ed-front-rail { position:static; }
  .ed-desks { grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px 28px; }
  .ed-grid-4, .ed-grid-fill { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
/* Phone: one column; the cover photo sits above its headline */
@media (max-width:700px) {
  .ed-home .container, .ed-home .newsletter-close { width:calc(100% - 32px); }
  .ed-cover { padding-top:16px; }
  .ed-cover-image { height:auto; aspect-ratio:4/3; }
  .ed-cover-copy { padding:18px 0 0; }
  .ed-home .ed-cover h1 { font-size:38px !important; line-height:1; letter-spacing:-.02em; }
  .ed-cover .ed-dek { font-size:15px; }
  .ed-front { grid-template-columns:minmax(0,1fr); grid-template-areas:"main" "wire" "rail"; padding-top:24px; }
  .ed-front-grid, .ed-desks, .ed-grid-4, .ed-grid-fill { grid-template-columns:minmax(0,1fr); }
  .ed-front-grid { gap:18px; }
  :is(.ed-front-grid, .ed-band) .ed-card { display:grid; grid-template-columns:120px minmax(0,1fr); gap:0 14px; }
  :is(.ed-front-grid, .ed-band) .ed-card-link { display:contents; }
  :is(.ed-front-grid, .ed-band) .ed-card-image { grid-row:1/4; margin:0; aspect-ratio:4/3; }
  :is(.ed-front-grid, .ed-band) .ed-card :is(.ed-kicker,h3,.ed-byline) { grid-column:2; }
  .ed-home .ed-card h3, .ed-home .ed-front-grid .ed-card h3 { font-size:17px !important; }
  .ed-wire a, .ed-events a, .ed-row { min-height:44px; }
  .ed-wire li:nth-child(n+7) { display:none; }
  .ed-home .newsletter-close { padding:20px; }
  .ed-home .newsletter-close-inner { grid-template-columns:1fr; }
  .ed-home .newsletter-close-form { grid-template-columns:minmax(0, 1fr); }
}
@media (prefers-reduced-motion:reduce) {
  .ed-cover-image img, .ed-card-image img { transition:none; }
  .ed-cover:has(.ed-cover-link:hover) .ed-cover-image img, .ed-cover-image:hover img, .ed-card-link:hover img { transform:none; }
}

/* ================================================================
   v0.30 character pass: uneven section heads
   Every homepage section head mixes three voices from Roboto Flex's
   axes: a tall condensed heavy part (.ed-h-x), a small mono joiner
   (.ed-h-m) and a wide light italic part dropped to a lower baseline
   (.ed-h-l). Each head is still one h2 that reads as plain text.
   Features & opinion is the loudest; "Latest" carries the broadcast
   mark (assets/images/icons/signal.svg), whose waves fade like a beacon.
   ================================================================ */
.ed-home :is(.ed-rail-head, .ed-section-head) h2.ed-h { display:flex; flex-wrap:wrap; align-items:flex-start; gap:0 .22em; padding-bottom:4px; letter-spacing:0; text-transform:none; }
.ed-h .ed-h-x { color:var(--ed-ivory); font:900 clamp(30px, 2.6vw, 40px)/.86 var(--ed-display); font-variation-settings:"wdth" 30; letter-spacing:-.01em; text-transform:uppercase; }
.ed-h .ed-h-m { margin-top:.6em; color:var(--ed-brand); font:500 11px/1 var(--font-mono); letter-spacing:.06em; }
.ed-h .ed-h-l { margin-top:clamp(12px, 1.1vw, 16px); color:var(--ed-ivory); font:italic 300 clamp(21px, 1.8vw, 27px)/1 var(--ed-display); font-variation-settings:"wdth" 151; letter-spacing:-.01em; }
.ed-h .ed-h-l:first-child { margin-top:clamp(10px, .9vw, 13px); }
.ed-desk .ed-h .ed-h-x { font-size:clamp(28px, 2.2vw, 36px); }
.ed-desk .ed-h .ed-h-l { font-size:clamp(19px, 1.5vw, 24px); }
#ed-desk-culture .ed-h-x { transform:rotate(-2deg); transform-origin:left bottom; }
.ed-features-h .ed-h-x { font-size:clamp(40px, 5.2vw, 64px); line-height:.84; }
.ed-features-h .ed-h-m { margin-top:.35em; font-size:13px; }
.ed-features-h .ed-h-l { margin-top:clamp(18px, 2.2vw, 28px); font-size:clamp(26px, 3.2vw, 40px); }
.ed-h-live { align-items:center; }
.ed-h-live::after {
 content:""; width:36px; height:36px; flex:0 0 36px; margin:-4px 0 -4px 2px; background:var(--ed-brand);
 -webkit-mask:url("../images/icons/signal.svg") center / contain no-repeat; mask:url("../images/icons/signal.svg") center / contain no-repeat;
 animation:ed-h-live 2.6s ease-in-out infinite;
}
@keyframes ed-h-live { 0%, 100% { opacity:.45; } 40%, 60% { opacity:1; } }
@media (prefers-reduced-motion: reduce) { .ed-h-live::after { animation:none; opacity:1; } }

/* Trend kicker: three signal bars fill in turn, 1.8 s a cycle. Still under reduced motion. */
.ed-kicker.ed-kicker-trend { display:flex; align-items:center; gap:7px; }
.ed-cover .ed-kicker.ed-kicker-trend { display:inline-flex; }
.ed-signal { display:inline-flex; align-items:flex-end; gap:2px; height:10px; }
.ed-signal i { width:2px; background:currentColor; opacity:.3; animation:ed-signal-bar 1.8s ease-in-out infinite; }
.ed-signal i:nth-child(1) { height:4px; }
.ed-signal i:nth-child(2) { height:7px; animation-delay:.2s; }
.ed-signal i:nth-child(3) { height:10px; animation-delay:.4s; }
@keyframes ed-signal-bar { 0%, 100% { opacity:.3; } 40%, 60% { opacity:1; } }
@media (prefers-reduced-motion: reduce) { .ed-signal i { animation:none; opacity:1; } }
