:root {
  --ink: #17181a;
  --paper: #f7f7f2;
  --paper-deep: #ebede9;
  --news-grey: #dbe0df;
  --news-pink: #efbaca;
  --news-blue: #235dc5;
  --red-pencil: #a9342d;
  --rule: rgba(17, 17, 15, .72);
  --hairline: rgba(17, 17, 15, .28);
  --pad: clamp(20px, 4vw, 72px);
  --serif: Georgia, "Times New Roman", Times, serif;
  --sans: "Arial Narrow", Arial, Helvetica, sans-serif;
  --mono: "Courier New", Courier, monospace;
}

/* BACI Radio concept comparison — private review route */
.radio-concepts-page { min-height: 100svh; background: var(--paper-deep); }
.radio-concepts-intro { display: grid; grid-template-columns: 1.15fr .85fr; align-items: end; gap: 8vw; padding: 34px var(--pad) 29px; border-bottom: 1px solid var(--ink); background: var(--news-grey); }
.radio-concepts-intro h1 { margin: 7px 0 0; font: 400 clamp(59px, 8.6vw, 130px)/.69 var(--serif); letter-spacing: -.078em; }
.radio-concepts-intro h1 em { color: var(--news-blue); font-weight: 400; }
.radio-concepts-intro p { max-width: 540px; margin: 0; font-size: 17px; line-height: 1.25; }
.radio-concept-switcher { grid-template-columns: auto auto 1fr; }
.radio-concept-switcher > a { justify-self: end; align-self: stretch; display: flex; align-items: center; padding: 0 22px; border-left: 1px solid var(--ink); font: 700 9px/1 var(--sans); letter-spacing: .07em; }

.radio-desk { min-height: 665px; padding: 23px var(--pad) 0; border-bottom: 1px solid var(--ink); background: var(--paper); animation: radioConceptIn .55s cubic-bezier(.16,1,.3,1) both; }
@keyframes radioConceptIn { from { opacity: 0; transform: translateY(10px); } }
.radio-desk-top { display: grid; grid-template-columns: 1fr auto 1fr; padding-bottom: 8px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.radio-desk-top span:nth-child(2) { justify-self: center; }
.radio-desk-top span:last-child { justify-self: end; }
.radio-desk-grid { display: grid; grid-template-columns: minmax(290px, .9fr) minmax(340px, 1.15fr) minmax(245px, .65fr); min-height: 535px; border-right: 1px solid var(--ink); border-left: 1px solid var(--ink); }
.radio-desk-art { position: relative; min-height: 535px; overflow: hidden; border-right: 1px solid var(--ink); background: var(--ink); }
.radio-desk-art::after { position: absolute; inset: 0; pointer-events: none; content: ""; background-image: radial-gradient(#fff 0 .55px, transparent .75px); background-size: 3px 3px; opacity: .17; }
.radio-desk-art img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); animation: radioArtworkDrift 7s ease-in-out infinite alternate; }
@keyframes radioArtworkDrift { to { transform: scale(1.045); } }
.radio-desk-art > button { position: absolute; z-index: 3; left: 50%; top: 50%; width: 84px; height: 84px; border: 1px solid var(--paper); border-radius: 50%; background: rgba(17,17,15,.88); color: var(--paper); transform: translate(-50%,-50%); font: 700 17px/1 var(--sans); }
.radio-desk-art figcaption { position: absolute; z-index: 3; left: 12px; right: 12px; bottom: 12px; padding: 8px 9px; border: 1px solid var(--ink); background: var(--news-pink); font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.radio-desk-now { display: flex; flex-direction: column; padding: 29px clamp(22px, 3vw, 46px); border-right: 1px solid var(--ink); background: var(--news-pink); }
.radio-live { display: flex; align-items: center; gap: 8px; font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.radio-live i { width: 8px; height: 8px; border-radius: 50%; background: var(--news-blue); animation: signal 1.5s steps(2,end) infinite; }
.radio-desk-now h2 { max-width: 650px; margin: 34px 0 10px; font: 400 clamp(48px, 5.4vw, 82px)/.77 var(--serif); letter-spacing: -.065em; }
.radio-desk-now > p { margin: 0; font-size: 17px; }
.radio-desk-player { display: grid; grid-template-columns: 72px 1fr auto; gap: 12px; align-items: center; margin-top: 34px; padding: 13px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.radio-desk-player button { min-height: 35px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.radio-desk-player input, .frequency-controls input { width: 100%; accent-color: var(--news-blue); }
.radio-desk-player span { font: 700 8px/1 var(--sans); white-space: nowrap; }
.radio-desk-copy { margin-top: auto; display: grid; grid-template-columns: .7fr 1.3fr; gap: 22px; padding-top: 17px; border-top: 3px double var(--ink); }
.radio-desk-copy strong { font: 400 21px/1 var(--serif); }
.radio-desk-copy p { margin: 0; font-size: 13px; line-height: 1.25; }
.radio-archive-list { display: flex; flex-direction: column; background: var(--news-grey); }
.radio-archive-list > div { display: flex; justify-content: space-between; padding: 13px 12px 10px; border-bottom: 3px double var(--ink); font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.radio-archive-list > button { display: grid; grid-template-columns: 25px 1fr auto; gap: 9px; min-height: 89px; align-items: start; padding: 13px 11px; border: 0; border-bottom: 1px solid var(--ink); background: transparent; text-align: left; }
.radio-archive-list > button:hover, .radio-archive-list > button.active { background: var(--news-blue); }
.radio-archive-list > button span, .radio-archive-list > button i { font: 700 8px/1 var(--sans); font-style: normal; }
.radio-archive-list > button strong { font: 400 17px/.96 var(--serif); }
.radio-archive-list > a { margin-top: auto; padding: 15px 12px; border-top: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.radio-desk-footer { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--ink); }
.radio-desk-footer span { padding: 10px 8px; border-right: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.radio-desk-footer span:last-child { border-right: 0; text-align: right; }

.frequency-wall { position: relative; min-height: 690px; overflow: hidden; padding: 23px var(--pad) 74px; border-bottom: 1px solid var(--ink); background: var(--news-blue); isolation: isolate; animation: radioConceptIn .55s cubic-bezier(.16,1,.3,1) both; }
.frequency-wall::before { position: absolute; z-index: -2; inset: 0; content: ""; background: repeating-linear-gradient(90deg, transparent 0 7.99%, rgba(17,17,15,.13) 8% calc(8% + 1px)); animation: kineticPaper 9s ease-in-out infinite alternate; }
.frequency-top { position: relative; z-index: 6; display: flex; justify-content: space-between; padding-bottom: 8px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.frequency-word { position: absolute; z-index: -1; left: 1.4%; top: 5%; color: var(--paper); font: 700 clamp(180px, 31vw, 470px)/.75 var(--serif); letter-spacing: -.115em; opacity: .28; animation: frequencyWord 8s ease-in-out infinite alternate; }
@keyframes frequencyWord { to { transform: translateX(3%); letter-spacing: -.08em; } }
.frequency-art-stack { position: absolute; z-index: 1; top: 92px; right: 8%; width: min(35vw, 470px); height: 410px; border: 1px solid var(--ink); background: var(--ink); transform: rotate(1deg); }
.frequency-art-stack::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#fff 0 .55px, transparent .75px); background-size: 3px 3px; opacity: .17; }
.frequency-art-stack img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; filter: grayscale(1) contrast(1.3); transform: scale(1.05); transition: opacity .5s, transform 1.1s cubic-bezier(.16,1,.3,1); }
.frequency-art-stack img.active { opacity: .8; transform: scale(1); }
.frequency-readout { position: relative; z-index: 5; width: min(57%, 720px); margin-top: 38px; padding: 21px 23px 24px; border: 1px solid var(--ink); background: rgba(241,240,234,.94); box-shadow: 9px 9px 0 var(--news-pink); }
.frequency-readout > span { display: block; font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.frequency-readout > strong { display: inline-block; margin-top: 11px; font: 400 clamp(90px, 13vw, 190px)/.68 var(--serif); letter-spacing: -.085em; }
.frequency-readout > i { font: 700 11px/1 var(--sans); font-style: normal; }
.frequency-readout h2 { margin: 21px 0 3px; font: 400 clamp(32px, 3.7vw, 55px)/.84 var(--serif); letter-spacing: -.05em; }
.frequency-readout p { margin: 0; font-size: 14px; }
.frequency-controls { display: grid; grid-template-columns: 43px 1fr 32px; gap: 10px; align-items: center; margin-top: 19px; padding-top: 12px; border-top: 1px solid var(--ink); }
.frequency-controls button { width: 43px; height: 43px; border: 1px solid var(--ink); border-radius: 50%; background: var(--ink); color: var(--paper); }
.frequency-controls span { font: 700 8px/1 var(--sans); }
.frequency-scale { position: absolute; z-index: 7; left: var(--pad); right: var(--pad); bottom: 76px; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 3px double var(--ink); }
.frequency-scale button { position: relative; min-height: 76px; display: grid; grid-template-columns: auto 1fr; gap: 2px 9px; align-content: center; padding: 10px; border: 0; border-right: 1px solid var(--ink); background: rgba(241,240,234,.32); text-align: left; }
.frequency-scale button:last-child { border-right: 0; }
.frequency-scale button:hover, .frequency-scale button.active { background: var(--news-pink); }
.frequency-scale button > i { position: absolute; top: -12px; left: 50%; width: 2px; height: 18px; background: var(--ink); }
.frequency-scale button strong { grid-row: 1 / span 2; font: 400 28px/.85 var(--serif); }
.frequency-scale button span { font: 700 7px/1 var(--sans); letter-spacing: .06em; }
.frequency-ticker { position: absolute; left: 0; right: 0; bottom: 0; padding: 11px var(--pad); overflow: hidden; border-top: 1px solid var(--ink); background: var(--ink); color: var(--paper); font: 700 8px/1 var(--sans); letter-spacing: .11em; white-space: nowrap; }

.radio-concept-notes { display: grid; grid-template-columns: 1fr 1fr; }
.radio-concept-notes article { min-height: 275px; padding: 30px var(--pad); border-right: 1px solid var(--ink); opacity: .45; transition: opacity .25s, background .25s; }
.radio-concept-notes article.active { opacity: 1; background: var(--news-pink); }
.radio-concept-notes article > span { font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.radio-concept-notes h2 { margin: 20px 0 8px; font: 400 clamp(36px, 4.3vw, 62px)/.82 var(--serif); letter-spacing: -.055em; }
.radio-concept-notes p { max-width: 610px; font-size: 15px; line-height: 1.28; }
.radio-concept-notes article > strong { font: 700 9px/1 var(--sans); text-transform: uppercase; }

@media (max-width: 950px) {
  .radio-desk-grid { grid-template-columns: minmax(270px, .85fr) minmax(350px, 1.15fr); }
  .radio-archive-list { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ink); }
  .radio-archive-list > div, .radio-archive-list > a { grid-column: 1 / -1; }
  .radio-archive-list > button { border-right: 1px solid var(--ink); }
  .frequency-readout { width: 62%; }
  .frequency-art-stack { right: 4%; width: 39vw; }
}

@media (max-width: 700px) {
  .radio-concepts-intro { grid-template-columns: 1fr; gap: 20px; }
  .concept-switcher.radio-concept-switcher { grid-template-columns: 1fr 1fr; }
  .radio-concept-switcher > a { grid-column: 1 / -1; min-height: 38px; justify-content: center; border-top: 1px solid var(--ink); border-left: 0; }
  .radio-desk { padding-left: 14px; padding-right: 14px; }
  .radio-desk-top { grid-template-columns: 1fr auto; }
  .radio-desk-top span:nth-child(2) { display: none; }
  .radio-desk-grid { grid-template-columns: 1fr; }
  .radio-desk-art { min-height: 390px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .radio-desk-now { min-height: 430px; border-right: 0; }
  .radio-archive-list { grid-template-columns: 1fr; }
  .radio-archive-list > button { border-right: 0; }
  .radio-desk-footer { grid-template-columns: 1fr 1fr; }
  .radio-desk-footer span:nth-child(2) { border-right: 0; }
  .radio-desk-footer span:nth-child(-n + 2) { border-bottom: 1px solid var(--ink); }
  .frequency-wall { min-height: 860px; padding-left: 14px; padding-right: 14px; }
  .frequency-word { top: 8%; font-size: 47vw; }
  .frequency-art-stack { top: 110px; left: 14%; right: 7%; width: auto; height: 330px; }
  .frequency-readout { width: calc(100% - 28px); margin-top: 270px; padding: 18px; }
  .frequency-readout > strong { font-size: 105px; }
  .frequency-scale { left: 14px; right: 14px; bottom: 70px; }
  .frequency-scale button { min-height: 82px; grid-template-columns: 1fr; }
  .frequency-scale button strong { grid-row: auto; font-size: 22px; }
  .radio-concept-notes { grid-template-columns: 1fr; }
  .radio-concept-notes article { border-right: 0; border-bottom: 1px solid var(--ink); }
}

@media (max-width: 470px) {
  .radio-desk-art { min-height: 330px; }
  .radio-desk-now { min-height: 455px; padding: 24px 17px; }
  .radio-desk-now h2 { margin-top: 25px; font-size: 48px; }
  .radio-desk-player { grid-template-columns: 60px 1fr; }
  .radio-desk-player span { grid-column: 2; }
  .radio-desk-copy { grid-template-columns: 1fr; gap: 8px; }
  .frequency-wall { min-height: 900px; }
  .frequency-art-stack { height: 295px; }
  .frequency-readout { margin-top: 250px; }
  .frequency-readout > strong { font-size: 89px; }
  .frequency-scale button span { display: none; }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--ink); }
body { margin: 0; overflow-x: hidden; background: var(--paper); color: var(--ink); font-family: var(--serif); text-rendering: optimizeLegibility; }
body::before { position: fixed; z-index: 300; inset: 0; pointer-events: none; content: ""; opacity: .17; background-image: radial-gradient(circle at 20% 18%, rgba(0,0,0,.34) 0 .55px, transparent .85px), radial-gradient(circle at 75% 62%, rgba(255,255,255,.8) 0 .65px, transparent .95px), repeating-linear-gradient(2deg, rgba(17,17,15,.045) 0 1px, transparent 1px 4px); background-size: 4px 4px, 5px 5px, auto; mix-blend-mode: multiply; }
body.modal-open { overflow: hidden; }
button, input, select, textarea { color: inherit; font: inherit; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
figure { margin: 0; }
::selection { background: var(--news-blue); color: var(--paper); }

.site-shell, .page-shell { position: relative; background: var(--paper); }
.micro-label { display: inline-block; font: 700 10px/1.2 var(--sans); letter-spacing: .095em; text-transform: uppercase; }
.solid-button, .line-button, .text-button, .arrow-link { border: 0; background: none; font: 700 11px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.solid-button { display: inline-flex; align-items: center; justify-content: center; width: max-content; min-height: 43px; padding: 0 17px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); transition: background .2s, color .2s, transform .2s; }
.solid-button:hover { background: var(--news-blue); transform: translate(-2px, -2px); }
.line-button { min-height: 38px; padding: 10px 0 7px; border-bottom: 1px solid currentColor; }
.line-button:hover, .text-button:hover, .arrow-link:hover { color: var(--news-blue); }

/* Masthead */
.venue-strip { position: fixed; z-index: 92; top: 0; left: 0; right: 0; height: 24px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 0 var(--pad); background: var(--ink); color: var(--paper); font: 700 8px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.venue-strip span:nth-child(2) { text-align: center; }
.venue-strip span:last-child { justify-self: end; display: flex; align-items: center; gap: 7px; }
.venue-strip i { width: 6px; height: 6px; border-radius: 50%; background: var(--news-blue); animation: signal 2.3s steps(2, end) infinite; }
@keyframes signal { 50% { opacity: .25; } }
.site-header { position: fixed; z-index: 90; top: 24px; left: 0; right: 0; min-height: 78px; display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(180px, 1fr); align-items: center; padding: 0 var(--pad); border-bottom: 1px solid var(--ink); background: rgba(241, 240, 234, .96); }
.header-spacer { height: 102px; background: var(--paper); }
.wordmark { justify-self: start; display: flex; align-items: center; min-height: 58px; }
.wordmark small { max-width: 72px; margin-left: 12px; padding-left: 10px; border-left: 1px solid var(--ink); font: 700 8px/1.15 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.brand-logo { display: block; background-position: center; background-repeat: no-repeat; background-size: contain; }
.brand-logo-black { aspect-ratio: 1023 / 317; background-image: url("../images/GIRI_BLACK.png"); }
.brand-logo-white { aspect-ratio: 1023 / 317; background-image: url("../images/GIRI_WHITE.png"); }
.brand-logo-stylised { aspect-ratio: 1040 / 360; background-image: url("../images/giri-logo-stylised-crop.png"); mix-blend-mode: multiply; }
.header-logo { width: 114px; flex: 0 0 auto; }
.site-header nav { display: flex; align-items: center; gap: clamp(7px, 1.15vw, 19px); }
.site-header nav a { position: relative; min-height: 52px; display: inline-flex; align-items: center; padding: 10px 4px; font: 700 clamp(13px, 1.1vw, 16px)/1 var(--sans); letter-spacing: .035em; text-transform: uppercase; }
.site-header nav a::after { position: absolute; left: 4px; right: 100%; bottom: 8px; height: 2px; content: ""; background: var(--news-blue); transition: right .28s cubic-bezier(.16, 1, .3, 1); }
.site-header nav a:hover::after, .site-header nav a.active::after { right: 4px; }
.header-tools { justify-self: end; display: flex; align-items: center; gap: 16px; }
.open-status { display: flex; align-items: center; gap: 7px; font: 700 8px/1 var(--sans); letter-spacing: .06em; text-transform: uppercase; }
.open-status i, .live-dot i { width: 7px; height: 7px; border-radius: 50%; background: var(--news-blue); }
.scroll-progress { position: absolute; left: 0; bottom: -1px; width: 100%; height: 3px; background: var(--news-blue); transform: scaleX(0); transform-origin: left center; will-change: transform; }
.menu-button { display: none; width: 44px; height: 44px; padding: 11px; border: 1px solid var(--ink); background: transparent; }
.menu-button i { display: block; height: 1px; margin: 5px 0; background: currentColor; transition: transform .25s; }
.menu-button.active i:first-child { transform: translateY(3px) rotate(45deg); }
.menu-button.active i:last-child { transform: translateY(-3px) rotate(-45deg); }

/* Front page */
.venue-hero { --mx: 0; --my: 0; position: relative; min-height: 690px; height: min(76svh, 780px); overflow: hidden; border-bottom: 1px solid var(--ink); background: linear-gradient(90deg, transparent 0 36.5%, var(--hairline) 36.5% calc(36.5% + 1px), transparent calc(36.5% + 1px)), var(--paper); }
.venue-hero::before { position: absolute; top: 22px; left: var(--pad); right: var(--pad); height: 5px; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--ink); content: ""; }
.hero-grid-code { position: absolute; z-index: 6; top: 34px; right: var(--pad); font: 700 8px/1 var(--sans); letter-spacing: .12em; }
.hero-window { position: absolute; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); animation: printFrame .9s cubic-bezier(.16, 1, .3, 1) both; }
.hero-window::after { position: absolute; inset: 0; pointer-events: none; content: ""; opacity: .2; background-image: radial-gradient(circle, #111 0 .7px, transparent .85px); background-size: 3px 3px; mix-blend-mode: multiply; }
.hero-window img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.17) brightness(.94); }
.hero-window-main { top: 54px; right: var(--pad); bottom: 38px; width: 60.5%; }
.hero-window-main .hero-slide { position: absolute; inset: 0; opacity: 0; object-position: center 54%; transform: scale(1.025) translate(calc(var(--mx) * -7px), calc(var(--my) * -5px)); transition: opacity 1.05s ease; will-change: opacity, transform; }
.hero-window-main .hero-slide.is-active { z-index: 1; opacity: 1; animation: heroDrift 5.2s linear both; }
.hero-window-detail { z-index: 4; left: var(--pad); bottom: 38px; width: 30%; height: 188px; animation-delay: .12s; }
.hero-window-detail img { transform: scale(1.04) translate(calc(var(--mx) * 6px), calc(var(--my) * 4px)); }
@keyframes printFrame { from { opacity: 0; clip-path: inset(0 100% 0 0); transform: rotate(-.35deg); } to { opacity: 1; clip-path: inset(0); transform: rotate(0); } }
@keyframes heroDrift { from { scale: 1.025; } to { scale: 1.075; } }
.hero-address { position: absolute; z-index: 5; top: 52px; left: var(--pad); width: 30%; padding: 11px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.hero-address span, .hero-address i { display: block; font: 700 8px/1.3 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.hero-address strong { display: block; margin: 8px 0; font: 400 clamp(22px, 2.2vw, 34px)/.92 var(--serif); }
.hero-address i { font-style: normal; }
.hero-glass { position: absolute; z-index: 6; top: 169px; left: var(--pad); width: 30%; padding: 0 0 18px; animation: editorialIn .9s .18s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes editorialIn { from { opacity: 0; transform: translateY(20px) rotate(-.5deg); } to { opacity: 1; transform: none; } }
.hero-glass-top { display: flex; justify-content: space-between; padding-bottom: 8px; border-bottom: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.hero-brand { width: 100%; margin: 13px 0 5px; transform: rotate(-1.1deg); }
.hero-glass p { max-width: 360px; margin: 8px 0 15px; font-size: clamp(15px, 1.4vw, 20px); line-height: 1.12; }
.hero-glass p strong { font-weight: 400; font-size: 1.22em; }
.hero-glass a { display: flex; justify-content: space-between; padding: 10px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); font: 700 10px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.hero-glass a:hover { color: var(--news-blue); }
.hero-material { position: absolute; z-index: 7; right: calc(var(--pad) + 13px); bottom: 51px; display: grid; gap: 4px; padding: 11px 13px; border: 1px solid var(--paper); background: var(--ink); color: var(--paper); font: 700 8px/1.2 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.hero-cross { position: absolute; z-index: 8; right: calc(var(--pad) - 9px); top: 42px; width: 31px; height: 31px; border: 1px solid var(--ink); }
.hero-cross i { position: absolute; background: var(--ink); }
.hero-cross i:first-child { width: 1px; top: -7px; bottom: -7px; left: 50%; }
.hero-cross i:last-child { height: 1px; left: -7px; right: -7px; top: 50%; }
.ticker { overflow: hidden; border-bottom: 1px solid var(--ink); background: var(--ink); color: var(--paper); }
.ticker div { width: max-content; padding: 9px 0 8px; font: 700 10px/1 var(--sans); letter-spacing: .1em; white-space: nowrap; animation: tickerMove 36s linear infinite; }
@keyframes tickerMove { to { transform: translateX(-33.333%); } }

/* Shared editorial headings */
.section-intro { position: relative; padding: 30px var(--pad) 22px; border-bottom: 1px solid var(--ink); }
.split-intro { display: grid; grid-template-columns: minmax(300px, .9fr) minmax(300px, 1.1fr); gap: clamp(35px, 9vw, 150px); align-items: end; }
.section-intro h2, .crossword-heading h2 { margin: 5px 0 0; font-size: clamp(48px, 7.4vw, 112px); font-weight: 400; line-height: .72; letter-spacing: -.07em; }
.section-intro h2 em, .crossword-heading h2 em { color: var(--news-blue); font-weight: 400; }
.section-intro p { max-width: 530px; margin: 0; font-size: clamp(15px, 1.4vw, 20px); line-height: 1.25; }
.programme-note { display: grid; grid-template-columns: auto 1fr; gap: 24px; align-items: start; }
.live-dot { display: flex; align-items: center; gap: 7px; white-space: nowrap; font: 700 9px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; }

/* Programme */
.programme-section { background: var(--paper-deep); }
.programme-board { display: grid; grid-template-columns: minmax(0, 4fr) minmax(245px, 1fr); border-bottom: 1px solid var(--ink); }
.programme-calendar { min-width: 0; padding: 17px var(--pad) 30px; border-right: 1px solid var(--ink); }
.calendar-label, .panel-index, .crossword-edition { display: flex; justify-content: space-between; padding-bottom: 8px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.calendar-toolbar { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 12px 0; }
.month-nav { display: flex; align-items: center; gap: 11px; }
.month-nav button { width: 34px; height: 34px; padding: 0; border: 1px solid var(--ink); background: transparent; font: 16px/1 var(--sans); }
.month-nav button:hover { background: var(--ink); color: var(--paper); }
.month-nav h3 { min-width: 140px; margin: 0; text-align: center; font: 400 23px/1 var(--serif); }
.month-nav h3 span { font-size: .72em; }
.event-filters { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 3px; }
.event-filters button, .menu-tabs button { min-height: 31px; padding: 0 10px; border: 1px solid var(--ink); background: transparent; font: 700 8px/1 var(--sans); letter-spacing: .06em; text-transform: uppercase; }
.event-filters button.active, .event-filters button:hover, .menu-tabs button.active, .menu-tabs button:hover { background: var(--ink); color: var(--paper); }
.calendar-wrap { overflow-x: auto; scrollbar-color: var(--ink) transparent; }
.calendar { min-width: 690px; }
.weekday-row { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--ink); border-left: 1px solid var(--ink); }
.weekday-row > span { display: flex; justify-content: space-between; padding: 8px; border-right: 1px solid var(--ink); font: 700 9px/1 var(--sans); letter-spacing: .06em; }
.weekday-row small { font: 700 7px/1 var(--sans); opacity: .55; }
.calendar-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, minmax(94px, 1fr)); border-left: 1px solid var(--ink); border-top: 1px solid var(--ink); }
.calendar-day { position: relative; min-height: 108px; padding: 8px; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: rgba(255,255,255,.12); }
.calendar-day:nth-child(8n + 4), .calendar-day:nth-child(8n + 5) { background: rgba(207,214,209,.45); }
.calendar-day.is-private-day { background: rgba(220,180,192,.34); }
.calendar-day.is-empty { background: repeating-linear-gradient(-45deg, transparent 0 6px, rgba(17,17,15,.06) 6px 7px); }
.calendar-number { font: 400 22px/1 var(--serif); }
.day-status { position: absolute; top: 10px; right: 8px; font: 700 7px/1 var(--sans); letter-spacing: .04em; text-transform: uppercase; opacity: .6; }
.day-events { display: grid; gap: 4px; margin-top: 10px; }
.calendar-event { width: 100%; padding: 5px 5px 5px 7px; border: 0; border-left: 3px solid var(--ink); background: rgba(241,240,234,.82); text-align: left; font: 700 8px/1.15 var(--sans); text-transform: uppercase; }
.calendar-event span { display: block; margin-bottom: 2px; font-size: 7px; opacity: .55; }
.calendar-event.music { border-color: var(--news-blue); }
.calendar-event.food { border-color: var(--red-pencil); }
.calendar-event.community { border-color: #50675c; }
.calendar-event.private { border-color: var(--news-pink); }
.calendar-event:hover { background: var(--ink); color: var(--paper); }
.programme-feature { display: flex; flex-direction: column; justify-content: space-between; min-width: 0; padding: 17px 17px 30px; background: var(--news-grey); }
.featured-event { border-top: 3px double var(--ink); }
.featured-image { position: relative; width: 100%; aspect-ratio: 4 / 3; margin: 9px 0 0; padding: 0; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); }
.featured-image::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#111 0 .55px, transparent .7px); background-size: 3px 3px; opacity: .24; }
.featured-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); transition: transform .6s cubic-bezier(.16,1,.3,1); }
.featured-image:hover img { transform: scale(1.04); }
.image-index { position: absolute; z-index: 2; top: 7px; left: 7px; padding: 5px 6px; background: var(--paper); font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.featured-copy { display: grid; grid-template-columns: auto 1fr; gap: 10px; padding: 12px 0; }
.featured-date { display: grid; align-content: start; text-align: center; }
.featured-date span { font: 700 7px/1.2 var(--sans); text-transform: uppercase; }
.featured-date strong { font: 400 34px/.9 var(--serif); }
.featured-copy h3 { margin: 4px 0 2px; font: 400 22px/.95 var(--serif); }
.featured-copy p { margin: 0; font-size: 12px; line-height: 1.2; }
.featured-link { grid-column: 1 / -1; display: flex; justify-content: space-between; width: 100%; padding: 8px 0; border: 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: none; font: 700 9px/1 var(--sans); text-transform: uppercase; }
.programme-key { display: grid; gap: 5px; margin-top: 28px; padding-top: 8px; border-top: 1px solid var(--ink); font: 700 8px/1 var(--sans); text-transform: uppercase; }
.programme-key span { display: flex; align-items: center; gap: 7px; }
.programme-key i { width: 10px; height: 3px; background: var(--ink); }
.programme-key i.music { background: var(--news-blue); }
.programme-key i.food { background: var(--red-pencil); }
.programme-key i.community { background: #50675c; }

/* Menu */
.bar-section { border-bottom: 1px solid var(--ink); background: var(--news-pink); }
.bar-layout { display: grid; grid-template-columns: minmax(340px, .85fr) minmax(420px, 1.15fr); }
.bar-image-stack { position: relative; min-height: 570px; padding: 24px var(--pad) 32px; border-right: 1px solid var(--ink); }
.bar-image-main { width: 82%; height: 86%; overflow: hidden; border: 1px solid var(--ink); }
.bar-image-main img, .bar-image-small img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.16); }
.bar-image-main::after, .bar-image-small::after { position: absolute; inset: 0; pointer-events: none; content: ""; background-image: radial-gradient(#111 0 .55px, transparent .7px); background-size: 3px 3px; opacity: .18; }
.bar-image-main, .bar-image-small { position: relative; }
.bar-image-small { position: absolute; right: var(--pad); bottom: 28px; width: 40%; height: 42%; overflow: hidden; border: 8px solid var(--news-pink); outline: 1px solid var(--ink); transform: rotate(1.5deg); }
.vertical-note { position: absolute; top: 24px; right: 12px; writing-mode: vertical-rl; font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.menu-panel { padding: 24px var(--pad) 32px; }
.menu-tabs { display: flex; flex-wrap: wrap; gap: 4px; padding: 14px 0; }
.menu-list { border-top: 1px solid var(--ink); animation: listIn .4s cubic-bezier(.16,1,.3,1); }
@keyframes listIn { from { opacity: 0; transform: translateY(7px); } }
.menu-item { display: grid; grid-template-columns: 30px 1fr auto; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--hairline); animation: menuLine .35s var(--item-delay) both; }
@keyframes menuLine { from { opacity: 0; transform: translateX(-7px); } }
.menu-item > span { font: 700 8px/1.2 var(--sans); }
.menu-item h3 { margin: 0 0 2px; font: 400 17px/1 var(--serif); }
.menu-item p { margin: 0; font: 10px/1.2 var(--sans); opacity: .66; }
.menu-item strong { font: 700 13px/1 var(--sans); }
.menu-footnote { margin: 12px 0 0; font-size: 10px; font-style: italic; }

/* About and radio */
.culture-section { background: var(--paper); }
.about-teaser { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(330px, .65fr); border-bottom: 1px solid var(--ink); }
.about-gallery { position: relative; min-height: 560px; overflow: hidden; border-right: 1px solid var(--ink); background: var(--ink); }
.about-shot { position: absolute; overflow: hidden; border: 1px solid var(--paper); }
.about-shot::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#fff 0 .6px, transparent .8px); background-size: 3px 3px; opacity: .15; mix-blend-mode: screen; }
.about-shot img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.35); }
.shot-one { inset: 28px 21% 28px var(--pad); }
.shot-two { z-index: 2; top: 57px; right: var(--pad); width: 29%; height: 42%; transform: rotate(1.5deg); }
.shot-three { z-index: 3; right: calc(var(--pad) + 5%); bottom: 47px; width: 31%; height: 37%; transform: rotate(-1deg); }
.about-teaser-copy { align-self: center; padding: 45px var(--pad); }
.about-teaser-copy h2 { margin: 8px 0 18px; font: 400 clamp(43px, 5.5vw, 82px)/.78 var(--serif); letter-spacing: -.06em; }
.about-teaser-copy h2 em { color: var(--news-blue); font-weight: 400; }
.about-teaser-copy p { max-width: 400px; margin: 0 0 23px; font-size: 17px; line-height: 1.25; }
.arrow-link { display: flex; justify-content: space-between; padding: 10px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.music-section { background: var(--paper-deep); }
.music-intro { grid-template-columns: 1fr 1fr; display: grid; align-items: end; gap: 8vw; }
.music-grid { display: grid; grid-template-columns: 1.4fr .72fr .88fr; border-bottom: 1px solid var(--ink); }
.music-grid > * { padding: 22px; border-right: 1px solid var(--ink); }
.music-grid > *:last-child { border-right: 0; }
.radio-card { display: grid; grid-template-columns: minmax(150px, .72fr) 1fr; gap: 21px; }
.radio-art { position: relative; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); }
.radio-art img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.15); }
.play-button { position: absolute; left: 50%; top: 50%; width: 52px; height: 52px; border: 1px solid var(--paper); border-radius: 50%; background: var(--ink); color: var(--paper); transform: translate(-50%, -50%); }
.radio-copy { align-self: center; }
.radio-copy h3, .release-card h3 { margin: 7px 0 4px; font: 400 clamp(24px, 2.5vw, 38px)/.94 var(--serif); }
.radio-copy p, .release-card p { margin: 0; font: 11px/1.25 var(--sans); }
.progress-track { height: 5px; margin: 22px 0 7px; border: 1px solid var(--ink); }
.progress-track i { display: block; height: 100%; background: var(--news-blue); }
.player-time { display: flex; justify-content: space-between; font: 700 8px/1 var(--sans); }
.release-card img { width: 100%; aspect-ratio: 1; margin: 13px 0; object-fit: cover; filter: grayscale(1) contrast(1.13); }
.release-card a { display: inline-block; margin-top: 16px; padding-bottom: 5px; border-bottom: 1px solid; font: 700 9px/1 var(--sans); text-transform: uppercase; }
.formats-card > span { margin-bottom: 10px; }
.formats-card > div { display: grid; grid-template-columns: 28px 1fr auto; padding: 9px 0; border-top: 1px solid var(--hairline); font: 11px/1 var(--sans); }
.formats-card > div strong { font: 400 15px/1 var(--serif); }
.formats-card figure { height: 150px; margin-top: 10px; overflow: hidden; border: 1px solid var(--ink); }
.formats-card img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); }

/* Crossword */
.crossword-section { border-bottom: 1px solid var(--ink); background: var(--news-grey); }
.crossword-heading { display: grid; grid-template-columns: 1.35fr .65fr; gap: 8vw; align-items: end; padding: 34px var(--pad) 25px; border-bottom: 1px solid var(--ink); }
.crossword-heading p { max-width: 420px; margin: 0; font-size: 17px; line-height: 1.25; }
.crossword-layout { display: grid; grid-template-columns: minmax(520px, 1.2fr) minmax(360px, .8fr); }
.crossword-board-wrap { padding: 24px var(--pad) 30px; border-right: 1px solid var(--ink); }
.crossword-grid { display: grid; grid-template-columns: repeat(var(--crossword-size), minmax(0, 1fr)); width: min(100%, 610px); aspect-ratio: 1; margin: 18px auto 12px; border-top: 2px solid var(--ink); border-left: 2px solid var(--ink); background: var(--ink); box-shadow: 7px 7px 0 rgba(17,17,15,.16); }
.crossword-block { border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: var(--ink); }
.crossword-cell { position: relative; min-width: 0; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: var(--paper); transition: background .15s; }
.crossword-cell > span { position: absolute; z-index: 2; top: 2px; left: 3px; font: 700 clamp(6px, .58vw, 9px)/1 var(--sans); pointer-events: none; }
.crossword-cell input { width: 100%; height: 100%; padding: 10% 0 0; border: 0; outline: 0; background: transparent; text-align: center; font: 700 clamp(15px, 2vw, 29px)/1 var(--sans); text-transform: uppercase; caret-color: var(--news-blue); }
.crossword-cell.is-active { background: #d8e5f7; }
.crossword-cell:focus-within { box-shadow: inset 0 0 0 3px var(--news-blue); }
.crossword-cell.is-correct { background: #dce7dc; }
.crossword-cell.is-wrong { background: #efb4ae; }
.crossword-status { display: flex; align-items: center; gap: 10px; min-height: 38px; border-top: 3px double var(--ink); border-bottom: 1px solid var(--ink); }
.crossword-status > span { font-size: 20px; }
.crossword-status p { margin: 0; font: 700 10px/1.2 var(--sans); letter-spacing: .04em; text-transform: uppercase; }
.crossword-clues { display: grid; grid-template-columns: 1fr 1fr; align-content: start; gap: 24px; padding: 24px var(--pad) 30px; }
.clue-column h3 { margin: 0 0 8px; padding-bottom: 7px; border-bottom: 3px double var(--ink); font: 400 30px/1 var(--serif); text-transform: capitalize; }
.clue-column button { display: grid; grid-template-columns: 25px 1fr; width: 100%; padding: 8px 4px; border: 0; border-bottom: 1px solid var(--hairline); background: transparent; text-align: left; font: 13px/1.15 var(--serif); }
.clue-column button strong { font: 700 9px/1.3 var(--sans); }
.clue-column button:hover, .clue-column button.active { background: var(--ink); color: var(--paper); }
.crossword-actions { grid-column: 1 / -1; display: flex; align-items: center; gap: 16px; padding-top: 4px; }

/* Private events teaser */
.private-teaser { display: grid; grid-template-columns: 1.22fr .78fr; min-height: 510px; border-bottom: 1px solid var(--ink); background: var(--paper); }
.private-teaser > figure { position: relative; min-height: 510px; overflow: hidden; border-right: 1px solid var(--ink); }
.private-teaser > figure::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#111 0 .55px, transparent .75px); background-size: 3px 3px; opacity: .2; }
.private-teaser > figure img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.16); }
.private-teaser-copy { align-self: center; padding: 38px var(--pad); }
.private-teaser-copy h2 { margin: 7px 0 16px; font: 400 clamp(47px, 6vw, 88px)/.78 var(--serif); letter-spacing: -.06em; }
.private-teaser-copy h2 em { color: var(--news-blue); font-weight: 400; }
.private-teaser-copy > p { max-width: 430px; margin: 0 0 20px; font-size: 16px; line-height: 1.25; }
.private-stats { display: grid; grid-template-columns: repeat(3, 1fr); margin: 20px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.private-stats div { padding: 10px 8px; border-right: 1px solid var(--ink); }
.private-stats div:last-child { border: 0; }
.private-stats strong { display: block; font: 400 25px/1 var(--serif); }
.private-stats span { font: 700 8px/1 var(--sans); text-transform: uppercase; }
.private-actions { display: flex; align-items: center; gap: 18px; }

/* Floating radio */
.floating-radio { position: fixed; z-index: 80; right: 16px; bottom: 16px; width: min(390px, calc(100vw - 32px)); border: 1px solid var(--ink); background: var(--paper); box-shadow: 7px 7px 0 rgba(17,17,15,.58); font-family: var(--sans); }
.floating-radio-bar { display: flex; align-items: center; justify-content: space-between; min-height: 31px; padding-left: 10px; border-bottom: 1px solid var(--ink); background: var(--news-blue); }
.floating-radio-bar span { display: flex; align-items: center; gap: 7px; font: 700 8px/1 var(--sans); letter-spacing: .09em; }
.floating-radio-bar span i { width: 6px; height: 6px; border-radius: 50%; background: var(--ink); animation: signal 1.8s steps(2,end) infinite; }
.floating-radio-bar button { align-self: stretch; width: 31px; border: 0; border-left: 1px solid var(--ink); background: transparent; font: 20px/1 var(--sans); }
.floating-radio-body { padding: 10px; }
.floating-radio-source { position: absolute; width: 1px; height: 1px; overflow: hidden; border: 0; opacity: 0; pointer-events: none; }
.floating-radio-now { display: grid; grid-template-columns: 58px 1fr; gap: 10px; align-items: center; }
.floating-radio-now img { width: 58px; height: 58px; object-fit: cover; filter: grayscale(1) contrast(1.2); }
.floating-radio-now strong { display: block; font: 700 11px/1.15 var(--sans); }
.floating-radio-now span { display: block; margin-top: 4px; font: 8px/1.2 var(--sans); opacity: .6; }
.floating-radio-controls { display: grid; grid-template-columns: 25px 31px 25px minmax(70px,1fr) auto; gap: 6px; align-items: center; margin-top: 9px; }
.floating-radio-play { width: 29px; height: 29px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); font-size: 10px; }
.floating-radio-skip { width: 25px; height: 25px; padding: 0; border: 1px solid var(--ink); background: var(--news-grey); font: 700 11px/1 var(--sans); }
.floating-radio-skip:hover { background: var(--news-pink); }
.floating-radio-controls input { width: 100%; accent-color: var(--news-blue); }
.floating-radio-controls span { font: 700 7px/1 var(--sans); white-space: nowrap; }
.floating-radio-error { margin: 7px 0 0; padding: 6px 7px; background: var(--news-pink); font: 700 7px/1.2 var(--sans); text-transform: uppercase; }
.floating-radio-links { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; margin-top: 8px; padding-top: 7px; border-top: 1px solid var(--ink); font: 700 7px/1 var(--sans); text-transform: uppercase; }
.floating-radio-links > span { padding-right: 9px; border-right: 1px solid var(--ink); }
.floating-radio-links a:nth-child(2) { overflow: hidden; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.floating-radio-links a:hover { color: var(--news-blue); }
.floating-radio.is-collapsed { width: 202px; box-shadow: 4px 4px 0 rgba(17,17,15,.45); }
.floating-radio.is-collapsed .floating-radio-bar { border-bottom: 0; }

/* Footer */
footer { padding: 24px var(--pad) 15px; background: var(--ink); color: var(--paper); }
.footer-topline { display: flex; justify-content: space-between; padding-bottom: 8px; border-bottom: 3px double var(--paper); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.footer-wordmark { width: min(620px, 64vw); margin: 18px auto 10px; }
.footer-columns { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 18px; border-top: 1px solid rgba(241,240,234,.55); }
.footer-columns > div { min-height: 145px; padding: 15px 16px 15px 0; border-right: 1px solid rgba(241,240,234,.4); }
.footer-columns > div + div { padding-left: 16px; }
.footer-columns > div:last-child { border: 0; }
.footer-columns p { margin: 7px 0 11px; font-size: 15px; line-height: 1.22; }
.footer-columns a, .footer-columns button { font: 700 9px/1 var(--sans); text-transform: uppercase; }
.footer-bottom { display: grid; grid-template-columns: 1fr 1fr 1fr; padding-top: 10px; border-top: 1px solid var(--paper); font: 700 8px/1 var(--sans); letter-spacing: .05em; }
.footer-bottom span:nth-child(2) { text-align: center; }
.footer-bottom a { justify-self: end; }

/* Dialogs */
.modal-backdrop, .booking-backdrop { position: fixed; z-index: 210; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(17,17,15,.82); }
.event-modal { position: relative; display: grid; grid-template-columns: minmax(260px, .8fr) minmax(330px, 1.2fr); width: min(880px, 96vw); max-height: 90svh; overflow: auto; border: 1px solid var(--ink); background: var(--paper); box-shadow: 10px 10px 0 var(--news-blue); animation: modalIn .32s cubic-bezier(.16,1,.3,1); }
@keyframes modalIn { from { opacity: 0; transform: translateY(18px) rotate(-.5deg); } }
.event-modal > figure { min-height: 450px; }
.event-modal > figure img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.15); }
.event-modal-copy { padding: 35px; }
.event-modal-copy h2 { margin: 9px 0 4px; font: 400 clamp(38px, 5vw, 68px)/.82 var(--serif); letter-spacing: -.05em; }
.event-subtitle { margin: 0 0 24px; font-size: 17px; }
.event-modal-copy dl { margin: 0 0 20px; border-top: 3px double var(--ink); }
.event-modal-copy dl div { display: grid; grid-template-columns: 90px 1fr; padding: 8px 0; border-bottom: 1px solid var(--hairline); }
.event-modal-copy dt { font: 700 9px/1 var(--sans); text-transform: uppercase; }
.event-modal-copy dd { margin: 0; font-size: 13px; }
.event-description { font-size: 15px; line-height: 1.35; }
.modal-close { position: absolute; z-index: 3; top: 10px; right: 10px; width: 38px; height: 38px; border: 1px solid var(--ink); background: var(--paper); font: 24px/1 var(--sans); }
.booking-backdrop { justify-items: end; padding: 0; }
.booking-panel { width: min(620px, 100vw); height: 100svh; overflow: auto; border-left: 1px solid var(--ink); background: var(--news-pink); animation: panelIn .42s cubic-bezier(.16,1,.3,1); }
@keyframes panelIn { from { transform: translateX(100%); } }
.booking-top { position: sticky; z-index: 2; top: 0; display: flex; justify-content: space-between; align-items: center; min-height: 42px; padding-left: 20px; border-bottom: 1px solid var(--ink); background: var(--news-pink); font: 700 9px/1 var(--sans); text-transform: uppercase; }
.booking-top button { align-self: stretch; width: 42px; border: 0; border-left: 1px solid var(--ink); background: transparent; font-size: 24px; }
.booking-panel form, .booking-success { padding: 38px clamp(20px, 6vw, 58px); }
.booking-panel h2 { margin: 9px 0 26px; font: 400 clamp(46px, 6vw, 78px)/.82 var(--serif); letter-spacing: -.05em; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-grid label { display: grid; gap: 5px; font: 700 9px/1 var(--sans); text-transform: uppercase; }
.form-grid label.full { grid-column: 1 / -1; }
.form-grid input, .form-grid select, .form-grid textarea { width: 100%; min-height: 44px; padding: 10px; border: 1px solid var(--ink); border-radius: 0; background: rgba(241,240,234,.55); font: 14px/1.2 var(--serif); text-transform: none; }
.form-grid textarea { resize: vertical; }
.form-submit { margin-top: 19px; }
.booking-success { display: grid; align-content: center; min-height: 80svh; }
.booking-success > span { font-size: 48px; }

/* Inner pages */
.page-hero { position: relative; min-height: 610px; display: grid; grid-template-columns: .72fr 1.28fr; border-bottom: 1px solid var(--ink); }
.page-hero > img { grid-column: 2; width: 100%; height: 100%; min-height: 610px; object-fit: cover; filter: grayscale(1) contrast(1.18); }
.page-hero::after { position: absolute; inset: 0 0 0 36%; pointer-events: none; content: ""; background-image: radial-gradient(#111 0 .55px, transparent .75px); background-size: 3px 3px; opacity: .2; }
.page-hero-copy { grid-column: 1; grid-row: 1; align-self: center; padding: 45px var(--pad); }
.page-hero-copy h1 { margin: 9px 0 19px; font: 400 clamp(55px, 8vw, 118px)/.72 var(--serif); letter-spacing: -.07em; }
.page-hero-copy h1 em { color: var(--news-blue); font-weight: 400; }
.page-hero-copy p { max-width: 430px; margin: 0 0 23px; font-size: 18px; line-height: 1.25; }
.story-section { position: relative; display: grid; grid-template-columns: .65fr 1.35fr; min-height: 650px; border-bottom: 1px solid var(--ink); background: var(--news-grey); }
.story-copy { padding: 50px var(--pad); border-right: 1px solid var(--ink); }
.story-copy h2, .facts-section h2, .included-section h2, .booking-content h2 { margin: 9px 0 20px; font: 400 clamp(45px, 6vw, 88px)/.79 var(--serif); letter-spacing: -.055em; }
.story-copy p { font-size: 16px; line-height: 1.3; }
.story-mosaic { position: relative; min-height: 650px; padding: 28px var(--pad); background: var(--ink); }
.story-mosaic figure { position: absolute; overflow: hidden; border: 1px solid var(--paper); }
.story-mosaic figure:nth-child(1) { inset: 28px 39% 30% var(--pad); }
.story-mosaic figure:nth-child(2) { top: 28px; right: var(--pad); width: 32%; height: 43%; }
.story-mosaic figure:nth-child(3) { left: 12%; bottom: 28px; width: 35%; height: 38%; }
.story-mosaic figure:nth-child(4) { right: var(--pad); bottom: 28px; width: 42%; height: 44%; }
.story-mosaic img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); }
.story-coordinate { position: absolute; left: var(--pad); bottom: 12px; font: 700 8px/1 var(--sans); }
.facts-section, .included-section { display: grid; grid-template-columns: .58fr 1.42fr; border-bottom: 1px solid var(--ink); background: var(--paper-deep); }
.facts-section > .reveal:first-child, .included-section > .reveal:first-child { padding: 35px var(--pad); border-right: 1px solid var(--ink); }
.fact-grid, .included-grid { display: grid; grid-template-columns: repeat(3, 1fr); }
.fact-card, .included-card { min-height: 220px; padding: 22px; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.fact-card:nth-child(3n), .included-card:last-child { border-right: 0; }
.fact-card > span, .included-card > span { font: 700 8px/1 var(--sans); letter-spacing: .07em; text-transform: uppercase; }
.fact-card h3, .included-card h3 { margin: 33px 0 8px; font: 400 25px/.95 var(--serif); }
.fact-card p, .included-card p { margin: 0; font-size: 13px; line-height: 1.28; }
.included-grid { grid-template-columns: repeat(3, 1fr); }
.included-section { background: var(--news-pink); }
.full-gallery { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--ink); background: var(--ink); }
.full-gallery figure { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border-right: 1px solid var(--paper); border-bottom: 1px solid var(--paper); }
.full-gallery figure::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#fff 0 .45px, transparent .7px); background-size: 3px 3px; opacity: .15; }
.full-gallery img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); transition: transform .7s cubic-bezier(.16,1,.3,1); }
.full-gallery figure:hover img { transform: scale(1.045); }
.booking-cta { display: grid; grid-template-columns: 1fr 1fr; min-height: 500px; background: var(--news-pink); }
.booking-cta > figure { min-height: 500px; overflow: hidden; border-right: 1px solid var(--ink); }
.booking-cta > figure img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.18); }
.booking-content { align-self: center; padding: 45px var(--pad); }
.booking-content p { max-width: 500px; font-size: 17px; line-height: 1.3; }

/* Reveal system */
.reveal { opacity: 0; clip-path: inset(0 0 12% 0); transform: translateY(18px) rotate(.12deg); transition: opacity .65s var(--reveal-delay) ease, transform .8s var(--reveal-delay) cubic-bezier(.16,1,.3,1), clip-path .8s var(--reveal-delay) cubic-bezier(.16,1,.3,1); }
.reveal.is-visible { opacity: 1; clip-path: inset(0); transform: none; }
.reveal-left { transform: translateX(20px); }
.media-reveal { clip-path: inset(0 0 100% 0); transform: none; }
.media-reveal.is-visible { clip-path: inset(0); }

@media (max-width: 1180px) {
  .site-header { grid-template-columns: auto 1fr auto; }
  .site-header nav { justify-self: center; }
  .open-status { display: none; }
  .wordmark small { display: none; }
  .programme-board { grid-template-columns: minmax(0, 3fr) minmax(220px, 1fr); }
  .music-grid { grid-template-columns: 1.3fr .7fr; }
  .formats-card { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(5, 1fr); }
  .formats-card > span, .formats-card figure { grid-column: 1 / -1; }
  .formats-card figure { height: 220px; }
  .crossword-layout { grid-template-columns: 1.05fr .95fr; }
}

@media (max-width: 920px) {
  .site-header { grid-template-columns: 1fr auto; }
  .site-header nav { position: absolute; top: 77px; left: 0; right: 0; display: none; padding: 12px var(--pad) 22px; border-bottom: 1px solid var(--ink); background: var(--paper); }
  .site-header nav.is-open { display: grid; }
  .site-header nav a { min-height: 48px; border-bottom: 1px solid var(--hairline); font-size: 18px; }
  .header-tools { grid-column: 2; }
  .menu-button { display: block; }
  .text-button { display: none; }
  .venue-hero { min-height: 760px; height: 82svh; background: var(--paper); }
  .hero-address { width: 42%; }
  .hero-glass { width: 42%; }
  .hero-window-main { width: 52%; }
  .hero-window-detail { width: 41%; }
  .split-intro, .crossword-heading { grid-template-columns: 1fr; gap: 20px; }
  .programme-board { grid-template-columns: 1fr; }
  .programme-calendar { border-right: 0; }
  .programme-feature { display: grid; grid-template-columns: 230px 1fr; gap: 18px; border-top: 1px solid var(--ink); }
  .programme-key { align-content: end; }
  .bar-layout, .about-teaser, .private-teaser, .crossword-layout { grid-template-columns: 1fr; }
  .bar-image-stack, .about-gallery, .private-teaser > figure, .crossword-board-wrap { border-right: 0; border-bottom: 1px solid var(--ink); }
  .crossword-board-wrap { display: grid; justify-items: center; }
  .crossword-edition, .crossword-status { width: min(100%, 610px); }
  .music-grid { grid-template-columns: 1fr 1fr; }
  .radio-card { grid-column: 1 / -1; }
  .formats-card { grid-column: auto; display: block; }
  .page-hero { grid-template-columns: 1fr; }
  .page-hero > img { grid-column: 1; grid-row: 2; min-height: 430px; }
  .page-hero-copy { grid-column: 1; grid-row: 1; }
  .page-hero::after { inset: 46% 0 0; }
  .story-section, .facts-section, .included-section { grid-template-columns: 1fr; }
  .story-copy, .facts-section > .reveal:first-child, .included-section > .reveal:first-child { border-right: 0; border-bottom: 1px solid var(--ink); }
  .fact-grid { grid-template-columns: repeat(2, 1fr); }
  .fact-card:nth-child(3n) { border-right: 1px solid var(--ink); }
  .fact-card:nth-child(2n) { border-right: 0; }
  .full-gallery { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
  :root { --pad: 16px; }
  .venue-strip { grid-template-columns: 1fr 1fr; }
  .venue-strip span:nth-child(2) { display: none; }
  .site-header { min-height: 66px; }
  .header-spacer { height: 90px; }
  .site-header nav { top: 65px; }
  .header-logo { width: 104px; }
  .venue-hero { min-height: 765px; height: 765px; }
  .venue-hero::before { top: 14px; }
  .hero-grid-code { top: 26px; }
  .hero-address { top: 43px; width: calc(100% - 32px); }
  .hero-address strong { font-size: 21px; }
  .hero-glass { top: 152px; width: calc(100% - 32px); }
  .hero-brand { width: 88%; }
  .hero-glass p { max-width: 90%; font-size: 16px; }
  .hero-window-main { top: 416px; left: 16px; right: 16px; bottom: 28px; width: auto; }
  .hero-window-detail { display: none; }
  .hero-material { right: 27px; bottom: 40px; }
  .hero-cross { top: 32px; right: 8px; }
  .section-intro, .crossword-heading { padding-top: 26px; }
  .section-intro h2, .crossword-heading h2 { font-size: clamp(54px, 19vw, 82px); }
  .programme-note { grid-template-columns: 1fr; gap: 12px; }
  .calendar-toolbar { align-items: flex-start; flex-direction: column; }
  .event-filters { justify-content: flex-start; }
  .programme-feature { grid-template-columns: 1fr; }
  .featured-event { display: grid; grid-template-columns: 118px 1fr; gap: 12px; }
  .featured-image { aspect-ratio: 3 / 4; }
  .featured-copy { align-content: start; }
  .programme-key { grid-template-columns: repeat(3, 1fr); margin-top: 8px; }
  .bar-layout { display: block; }
  .bar-image-stack { min-height: 410px; }
  .bar-image-main { height: 85%; }
  .menu-panel { padding-top: 22px; }
  .about-gallery { min-height: 430px; }
  .shot-one { right: 17%; }
  .shot-two { width: 34%; }
  .shot-three { width: 38%; }
  .music-grid { grid-template-columns: 1fr; }
  .music-grid > * { border-right: 0; border-bottom: 1px solid var(--ink); }
  .radio-card { display: grid; grid-template-columns: 120px 1fr; }
  .formats-card { display: block; }
  .crossword-board-wrap { padding-left: 9px; padding-right: 9px; }
  .crossword-grid { box-shadow: 4px 4px 0 rgba(17,17,15,.15); }
  .crossword-cell input { padding-top: 16%; font-size: clamp(12px, 4.3vw, 21px); }
  .crossword-cell > span { top: 1px; left: 2px; font-size: 6px; }
  .crossword-clues { grid-template-columns: 1fr; }
  .crossword-actions { grid-column: 1; flex-wrap: wrap; }
  .private-teaser > figure { min-height: 330px; }
  .private-stats strong { font-size: 21px; }
  .private-actions { align-items: flex-start; flex-direction: column; }
  .floating-radio { right: 10px; bottom: 10px; width: min(315px, calc(100vw - 20px)); }
  .footer-topline span:last-child { display: none; }
  .footer-wordmark { width: 88vw; }
  .footer-columns { grid-template-columns: 1fr; }
  .footer-columns > div, .footer-columns > div + div { min-height: 0; padding: 14px 0; border-right: 0; border-bottom: 1px solid rgba(241,240,234,.4); }
  .footer-bottom { grid-template-columns: 1fr auto; }
  .footer-bottom span:nth-child(2) { display: none; }
  .event-modal { grid-template-columns: 1fr; }
  .event-modal > figure { min-height: 260px; max-height: 310px; }
  .event-modal-copy { padding: 25px 20px; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid label.full { grid-column: 1; }
  .page-hero > img { min-height: 340px; }
  .story-mosaic { min-height: 520px; }
  .fact-grid, .included-grid { grid-template-columns: 1fr; }
  .fact-card, .included-card, .fact-card:nth-child(3n) { min-height: 170px; border-right: 0; }
  .full-gallery { grid-template-columns: 1fr 1fr; }
  .booking-cta { grid-template-columns: 1fr; }
  .booking-cta > figure { min-height: 340px; border-right: 0; border-bottom: 1px solid var(--ink); }
}

/* Front-page and editorial hierarchy refinement */
.newspaper-hero {
  display: grid;
  grid-template-columns: minmax(330px, .72fr) minmax(560px, 1.28fr);
  min-height: 0;
  height: auto;
  overflow: visible;
  background: var(--paper);
}
.newspaper-hero::before { display: none; }
.frontpage-rule {
  grid-column: 1 / -1;
  display: flex;
  justify-content: space-between;
  margin: 19px var(--pad) 0;
  padding: 7px 0 6px;
  border-top: 3px double var(--ink);
  border-bottom: 1px solid var(--ink);
  font: 700 8px/1 var(--sans);
  letter-spacing: .11em;
  text-transform: uppercase;
}
.hero-editorial {
  display: grid;
  grid-template-rows: auto auto auto minmax(170px, 1fr) auto;
  gap: 12px;
  min-height: 625px;
  padding: 17px var(--pad) 26px;
  border-right: 1px solid var(--ink);
  background: linear-gradient(155deg, var(--paper) 0 72%, rgba(220,180,192,.34) 72% 100%);
}
.hero-editorial-top, .hero-event-header {
  display: flex;
  justify-content: space-between;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--ink);
  font: 700 8px/1 var(--sans);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.hero-editorial .hero-brand { width: 100%; max-width: 430px; margin: 0; transform: rotate(-.65deg); }
.hero-deck { max-width: 480px; margin: 0; font-size: clamp(16px, 1.42vw, 21px); line-height: 1.12; }
.hero-deck strong { display: block; font-size: 1.22em; font-weight: 400; }
.hero-editorial-image { position: relative; min-height: 170px; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); }
.hero-editorial-image::after, .hero-event-art::after { position: absolute; inset: 0; pointer-events: none; content: ""; opacity: .19; background-image: radial-gradient(#111 0 .65px, transparent .8px); background-size: 3px 3px; mix-blend-mode: multiply; }
.hero-editorial-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); }
.hero-opening { display: grid; grid-template-columns: 1fr auto; gap: 5px 14px; padding-top: 8px; border-top: 3px double var(--ink); font: 700 8px/1.15 var(--sans); letter-spacing: .07em; text-transform: uppercase; }
.hero-opening strong { grid-column: 2; grid-row: 1 / span 2; align-self: center; font: 400 21px/1 var(--serif); letter-spacing: 0; }
.hero-opening a { width: max-content; border-bottom: 1px solid var(--ink); }
.hero-event-highlight { min-width: 0; padding: 17px var(--pad) 26px; background: var(--news-grey); }
.hero-event-art { position: relative; width: 100%; height: clamp(300px, 38vw, 455px); margin: 13px 0 15px; padding: 0; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); }
.hero-event-art img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.18); transition: transform .75s cubic-bezier(.16,1,.3,1), filter .4s; }
.hero-event-art:hover img { transform: scale(1.035); filter: grayscale(.7) contrast(1.12); }
.hero-event-art > span { position: absolute; z-index: 3; top: 10px; right: 10px; padding: 6px 8px; border: 1px solid var(--ink); background: var(--news-pink); font: 700 8px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
.hero-event-body { display: grid; grid-template-columns: minmax(100px, .27fr) 1fr; gap: clamp(18px, 3vw, 42px); padding-top: 12px; border-top: 3px double var(--ink); }
.hero-event-date { display: grid; align-content: start; }
.hero-event-date strong { font: 400 clamp(58px, 7vw, 102px)/.7 var(--serif); letter-spacing: -.08em; }
.hero-event-date span { margin-top: 12px; font: 700 9px/1.2 var(--sans); text-transform: uppercase; }
.hero-event-copy h1 { margin: 6px 0 4px; font: 400 clamp(36px, 4.5vw, 67px)/.82 var(--serif); letter-spacing: -.055em; }
.hero-event-copy p { margin: 0 0 12px; font-size: 15px; }

/* Calendar now drives the adjacent story panel */
.programme-board { grid-template-columns: minmax(0, 3.35fr) minmax(285px, .95fr); }
.programme-feature { padding: 17px 18px 30px; background: var(--news-pink); }
.calendar-preview { min-width: 0; border-top: 3px double var(--ink); }
.calendar-preview-content { padding-top: 9px; animation: calendarStoryIn .34s cubic-bezier(.16,1,.3,1); }
@keyframes calendarStoryIn { from { opacity: 0; transform: translateY(8px); } }
.calendar-preview-top { display: flex; justify-content: space-between; padding-bottom: 7px; border-bottom: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .07em; text-transform: uppercase; }
.calendar-preview-image { width: 100%; aspect-ratio: 4 / 3; margin: 10px 0; padding: 0; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); }
.calendar-preview-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); transition: transform .45s cubic-bezier(.16,1,.3,1); }
.calendar-preview-image:hover img { transform: scale(1.035); }
.calendar-preview-date { display: flex; align-items: flex-end; gap: 9px; border-bottom: 1px solid var(--ink); }
.calendar-preview-date strong { font: 400 43px/.82 var(--serif); letter-spacing: -.06em; }
.calendar-preview-date span { padding-bottom: 3px; font: 700 8px/1 var(--sans); text-transform: uppercase; }
.calendar-preview h3 { margin: 10px 0 4px; font: 400 27px/.9 var(--serif); letter-spacing: -.035em; }
.calendar-preview p { margin: 0 0 12px; font-size: 13px; line-height: 1.22; }
.calendar-preview dl { margin: 0; border-top: 1px solid var(--ink); }
.calendar-preview dl div { display: grid; grid-template-columns: 54px 1fr; padding: 6px 0; border-bottom: 1px solid var(--hairline); }
.calendar-preview dt { font: 700 8px/1 var(--sans); text-transform: uppercase; }
.calendar-preview dd { margin: 0; font-size: 11px; }
.calendar-preview.is-empty { min-height: 420px; display: grid; align-content: start; }
.calendar-preview-prompt { margin: 52px 0 18px; font: 400 clamp(70px, 8vw, 112px)/.65 var(--serif); color: var(--news-blue); animation: promptNudge 2.8s ease-in-out infinite; }
@keyframes promptNudge { 50% { transform: translateX(-7px); } }
.calendar-preview.is-empty h3 { margin: 0 0 12px; font-size: clamp(32px, 3vw, 47px); }
.calendar-preview.is-empty p { max-width: 260px; font-size: 14px; }
.calendar-day:has(.calendar-event):hover { background: #d8e5f7; }
.calendar-event:focus-visible { outline: 3px solid var(--news-blue); outline-offset: 2px; }

/* Formats live with the About story */
.about-teaser { grid-template-columns: minmax(0, 1.2fr) minmax(370px, .8fr); }
.about-teaser-copy { align-self: stretch; display: flex; flex-direction: column; justify-content: center; background: var(--news-pink); }
.about-formats { margin: 2px 0 20px; border-top: 3px double var(--ink); }
.about-formats > .micro-label { display: block; padding: 8px 0 6px; }
.about-formats > div { display: grid; grid-template-columns: 30px 1fr auto; padding: 7px 2px; border-top: 1px solid var(--hairline); }
.about-formats > div > span, .about-formats > div > i { font: 700 8px/1.2 var(--sans); font-style: normal; }
.about-formats > div strong { font: 400 15px/1 var(--serif); }
.formats-section { display: grid; grid-template-columns: .86fr .8fr .58fr; min-height: 560px; border-bottom: 1px solid var(--ink); background: var(--news-pink); }
.formats-intro { align-self: center; padding: 42px var(--pad); border-right: 1px solid var(--ink); }
.formats-intro h2 { margin: 8px 0 18px; font: 400 clamp(45px, 5.8vw, 84px)/.78 var(--serif); letter-spacing: -.06em; }
.formats-intro h2 em { color: var(--news-blue); font-weight: 400; }
.formats-intro p { max-width: 430px; margin: 0; font-size: 16px; line-height: 1.28; }
.formats-list { border-right: 1px solid var(--ink); }
.formats-list article { min-height: 112px; display: grid; grid-template-columns: 32px 1fr; align-content: center; gap: 4px 12px; padding: 14px 22px; border-bottom: 1px solid var(--ink); }
.formats-list article:last-child { border-bottom: 0; }
.formats-list article > span { grid-row: 1 / span 2; font: 700 8px/1.2 var(--sans); }
.formats-list h3 { margin: 0; font: 400 23px/.95 var(--serif); }
.formats-list p { margin: 0; font-size: 12px; line-height: 1.22; }
.formats-image { min-height: 560px; overflow: hidden; background: var(--ink); }
.formats-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.24); }

/* BACI receives the full music spread */
.music-section { background: var(--paper-deep); }
.music-grid { grid-template-columns: minmax(0, 1.34fr) minmax(300px, .66fr); }
.music-grid > * { padding: clamp(24px, 3vw, 42px); }
.radio-card { background: var(--news-grey); }
.release-card { background: var(--news-pink); }
.release-card img { aspect-ratio: 4 / 3; }
.floating-radio-bar { background: var(--news-pink); }

/* Standalone menu */
.menu-page-hero { background: var(--news-pink); }
.menu-page-hero > img { object-position: center 58%; }
.menu-page-section .bar-layout { min-height: 590px; }
.menu-page-section .menu-panel { align-self: stretch; }

@media (max-width: 920px) {
  .newspaper-hero { grid-template-columns: minmax(280px, .8fr) minmax(430px, 1.2fr); }
  .hero-editorial { min-height: 610px; padding-left: 22px; padding-right: 22px; }
  .hero-event-highlight { padding-left: 22px; padding-right: 22px; }
  .hero-event-art { height: 355px; }
  .programme-feature { display: block; }
  .calendar-preview.is-empty { min-height: 300px; }
  .programme-key { grid-template-columns: repeat(3, 1fr); }
  .about-teaser { grid-template-columns: 1fr; }
  .formats-section { grid-template-columns: 1fr 1fr; }
  .formats-intro { border-bottom: 1px solid var(--ink); }
  .formats-image { grid-column: 1 / -1; min-height: 320px; }
  .music-grid { grid-template-columns: 1.2fr .8fr; }
}

@media (max-width: 760px) {
  .newspaper-hero { grid-template-columns: 1fr; }
  .frontpage-rule { grid-column: 1; }
  .hero-editorial { min-height: 610px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .hero-event-highlight { padding-top: 22px; }
  .hero-event-art { height: min(88vw, 430px); }
  .hero-event-body { grid-template-columns: 92px 1fr; }
  .formats-section { grid-template-columns: 1fr; }
  .formats-intro, .formats-list { border-right: 0; border-bottom: 1px solid var(--ink); }
  .formats-image { grid-column: 1; }
}

@media (max-width: 640px) {
  .frontpage-rule { margin-top: 12px; }
  .hero-editorial { min-height: 570px; padding: 14px var(--pad) 20px; }
  .hero-editorial .hero-brand { width: 86%; }
  .hero-editorial-image { min-height: 155px; }
  .hero-opening { grid-template-columns: 1fr; }
  .hero-opening strong { grid-column: 1; grid-row: auto; }
  .hero-event-highlight { padding: 17px var(--pad) 24px; }
  .hero-event-art { height: 310px; }
  .hero-event-body { grid-template-columns: 74px 1fr; gap: 14px; }
  .hero-event-date strong { font-size: 60px; }
  .hero-event-copy h1 { font-size: 38px; }
  .calendar-preview.is-empty { min-height: 245px; }
  .calendar-preview-prompt { margin-top: 30px; }
  .about-teaser-copy { padding-top: 32px; padding-bottom: 32px; }
  .music-grid { grid-template-columns: 1fr; }
  .formats-image { min-height: 300px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1; clip-path: none; transform: none; }
}

/* Hero concept comparison — not linked from the public navigation */
.concepts-page { min-height: 100svh; background: var(--paper-deep); }
.concepts-header { min-height: 76px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 0 var(--pad); border-bottom: 1px solid var(--ink); background: var(--paper); }
.concepts-header > a:first-child { justify-self: start; }
.concepts-header > a:first-child span { width: 118px; }
.concepts-header > div { display: grid; text-align: center; }
.concepts-header > div span, .concepts-header > a:last-child { font: 700 8px/1.2 var(--sans); letter-spacing: .09em; text-transform: uppercase; }
.concepts-header > div strong { margin-top: 3px; font: 400 18px/1 var(--serif); }
.concepts-header > a:last-child { justify-self: end; padding-bottom: 4px; border-bottom: 1px solid; }
.concepts-intro { display: grid; grid-template-columns: 1.2fr .8fr; align-items: end; gap: 8vw; padding: 35px var(--pad) 28px; border-bottom: 1px solid var(--ink); background: var(--news-pink); }
.concepts-intro h1 { margin: 7px 0 0; font: 400 clamp(58px, 8.4vw, 126px)/.7 var(--serif); letter-spacing: -.075em; }
.concepts-intro h1 em { color: var(--news-blue); font-weight: 400; }
.concepts-intro p { max-width: 520px; margin: 0; font-size: 17px; line-height: 1.25; }
.concept-switcher { position: sticky; z-index: 20; top: 0; display: grid; grid-template-columns: auto auto 1fr; border-bottom: 1px solid var(--ink); background: rgba(241,240,234,.96); }
.concept-switcher > button { min-height: 56px; padding: 0 20px; border: 0; border-right: 1px solid var(--ink); background: transparent; font: 700 11px/1 var(--sans); letter-spacing: .05em; text-transform: uppercase; }
.concept-switcher > button span { display: inline-grid; place-items: center; width: 27px; height: 27px; margin-right: 9px; border: 1px solid var(--ink); }
.concept-switcher > button.active { background: var(--ink); color: var(--paper); }
.concept-switcher > .concept-replay { justify-self: end; border-right: 0; border-left: 1px solid var(--ink); }
.concept-stage { display: grid; grid-template-columns: minmax(310px, .7fr) minmax(600px, 1.3fr); min-height: 710px; border-bottom: 1px solid var(--ink); background: var(--paper); }
.concept-stage-masthead { display: block; min-height: 0; }
.concept-reference { display: grid; grid-template-rows: auto auto auto minmax(190px, 1fr) auto; gap: 15px; padding: 25px var(--pad); border-right: 1px solid var(--ink); background: linear-gradient(155deg, var(--paper) 0 73%, rgba(220,180,192,.36) 73% 100%); }
.concept-reference-meta { display: flex; justify-content: space-between; padding-bottom: 7px; border-bottom: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .07em; }
.concept-reference-logo { width: 100%; max-width: 440px; }
.concept-reference > p { max-width: 460px; margin: 0; font-size: clamp(17px, 1.5vw, 22px); line-height: 1.12; }
.concept-reference > p strong { display: block; font-size: 1.2em; font-weight: 400; }
.concept-reference figure { min-height: 190px; overflow: hidden; border: 1px solid var(--ink); }
.concept-reference figure img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); }
.concept-reference-hours { display: flex; align-items: end; justify-content: space-between; padding-top: 8px; border-top: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .06em; }
.concept-reference-hours strong { font: 400 21px/1 var(--serif); }

.kinetic-masthead { position: relative; min-width: 0; overflow: hidden; padding: 25px var(--pad); background: var(--news-blue); isolation: isolate; }
.kinetic-masthead::before { position: absolute; z-index: -2; inset: 0; content: ""; background: linear-gradient(128deg, transparent 0 52%, rgba(241,240,234,.34) 52% 71%, transparent 71%), repeating-linear-gradient(90deg, transparent 0 8.2%, rgba(17,17,15,.08) 8.2% calc(8.2% + 1px)); animation: kineticPaper 8s ease-in-out infinite alternate; }
@keyframes kineticPaper { to { transform: translateX(2.4%); } }
.kinetic-topline { position: relative; z-index: 5; display: flex; justify-content: space-between; padding-bottom: 8px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.kinetic-registration { position: absolute; z-index: 4; top: 58px; right: var(--pad); display: flex; gap: 6px; }
.kinetic-registration i { width: 11px; height: 11px; border: 1px solid var(--ink); border-radius: 50%; }
.kinetic-registration i:nth-child(1) { background: var(--news-pink); }
.kinetic-registration i:nth-child(2) { background: var(--news-grey); }
.kinetic-registration i:nth-child(3) { background: var(--ink); }
.kinetic-logo-stack { position: absolute; left: 5%; right: 4%; top: 14%; height: 47%; }
.kinetic-logo { position: absolute; inset: 0; width: 100%; animation: kineticLogo 1.15s cubic-bezier(.16,1,.3,1) both; }
.kinetic-logo-blue { opacity: .5; transform: translate(-11px, 5px) rotate(-1.3deg); filter: hue-rotate(8deg) saturate(1.4); animation-delay: .05s; }
.kinetic-logo-pink { opacity: .46; transform: translate(12px, -5px) rotate(1deg); filter: sepia(1) saturate(2) hue-rotate(285deg); animation-delay: .13s; }
.kinetic-logo-ink { animation-delay: .24s; }
@keyframes kineticLogo { from { opacity: 0; clip-path: inset(0 100% 0 0); transform: translateX(-9%) rotate(-2deg); } }
.kinetic-headlines { position: absolute; z-index: 7; left: var(--pad); right: var(--pad); top: 53%; height: 175px; overflow: hidden; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.kinetic-headlines span { position: absolute; inset: 0; display: flex; align-items: center; opacity: 0; font: 400 clamp(48px, 6.7vw, 104px)/.73 var(--serif); letter-spacing: -.07em; animation: headlineCycle 10.4s infinite; animation-delay: calc(var(--headline-index) * 2.6s); }
@keyframes headlineCycle { 0% { opacity: 0; transform: translateY(85%) rotate(1deg); } 5%, 20% { opacity: 1; transform: none; } 25%, 100% { opacity: 0; transform: translateY(-85%) rotate(-1deg); } }
.kinetic-columns { position: absolute; left: var(--pad); right: var(--pad); bottom: 77px; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ink); }
.kinetic-columns span { padding: 10px 8px 7px 0; border-right: 1px solid var(--ink); font: 700 9px/1.15 var(--sans); letter-spacing: .07em; }
.kinetic-columns span + span { padding-left: 10px; }
.kinetic-event-strip { position: absolute; left: 0; right: 0; bottom: 0; min-height: 53px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 16px; padding: 0 var(--pad); border-top: 1px solid var(--ink); background: var(--news-pink); font: 700 9px/1 var(--sans); letter-spacing: .06em; }
.kinetic-event-strip span { padding: 6px 8px; background: var(--ink); color: var(--paper); }
.kinetic-event-strip i { font-style: normal; }

.kinetic-masthead-integrated { min-height: 780px; }
.home-kinetic-hero { min-height: clamp(720px, calc(100svh - 102px), 820px); border-bottom: 1px solid var(--ink); }
.home-kinetic-hero .kinetic-event-strip { width: 100%; border-right: 0; border-bottom: 0; border-left: 0; text-align: left; }
.home-kinetic-hero .kinetic-event-strip:hover { background: var(--paper); }
.home-kinetic-hero .kinetic-event-strip:focus-visible { outline: 3px solid var(--ink); outline-offset: -4px; }
.kinetic-masthead-integrated .kinetic-topline { display: grid; grid-template-columns: 1fr auto 1fr; }
.kinetic-masthead-integrated .kinetic-topline span:nth-child(2) { justify-self: center; }
.kinetic-masthead-integrated .kinetic-topline span:last-child { justify-self: end; }
.kinetic-masthead-integrated .kinetic-logo-stack { z-index: 6; left: 13%; right: 13%; top: 12%; height: 39%; }
.kinetic-intro-block { position: absolute; z-index: 8; top: 76px; left: var(--pad); width: clamp(230px, 23vw, 340px); padding: 14px 16px 16px; border: 1px solid var(--ink); background: rgba(241,240,234,.95); box-shadow: 7px 7px 0 var(--news-pink); animation: kineticCardIn .8s .18s cubic-bezier(.16,1,.3,1) both; }
.kinetic-intro-block > span { font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.kinetic-intro-block p { margin: 17px 0 0; font: 400 clamp(18px, 1.65vw, 25px)/1.03 var(--serif); letter-spacing: -.025em; }
.kinetic-intro-block strong { display: block; font-weight: 400; }
.kinetic-venue-window { position: absolute; z-index: 1; top: 68px; left: 19%; right: 19%; height: 330px; margin: 0; overflow: hidden; border: 1px solid var(--ink); background: var(--paper); transform: rotate(-.65deg); animation: kineticPhotoIn 1s .08s cubic-bezier(.16,1,.3,1) both; }
.kinetic-venue-window::after { position: absolute; inset: 0; content: ""; background: linear-gradient(90deg, rgba(35,115,216,.38), transparent 35% 68%, rgba(220,180,192,.46)), radial-gradient(var(--ink) 0 .5px, transparent .75px); background-size: auto, 3px 3px; mix-blend-mode: multiply; opacity: .72; }
.kinetic-venue-window img { width: 100%; height: 100%; object-fit: cover; object-position: center 58%; filter: grayscale(1) contrast(1.18) brightness(1.12); opacity: .78; }
.kinetic-hours-rail { position: absolute; z-index: 8; top: 77px; right: var(--pad); width: clamp(150px, 15vw, 210px); display: grid; padding: 12px 14px 14px; border: 1px solid var(--ink); background: var(--news-pink); box-shadow: -7px 7px 0 rgba(241,240,234,.74); animation: kineticCardIn .8s .3s cubic-bezier(.16,1,.3,1) both; }
.kinetic-hours-rail span { font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.kinetic-hours-rail strong { margin-top: 16px; font: 700 12px/1 var(--sans); }
.kinetic-hours-rail b { margin-top: 6px; font: 400 clamp(27px, 3vw, 45px)/.78 var(--serif); letter-spacing: -.05em; }
.kinetic-about-button { position: absolute; z-index: 12; top: 36%; right: calc(var(--pad) + 1%); width: clamp(145px, 15vw, 198px); min-height: 91px; display: grid; grid-template-columns: 1fr auto; gap: 7px 10px; align-content: center; padding: 12px 13px; border: 1px solid var(--ink); background: rgba(241,240,234,.97); box-shadow: -7px 7px 0 var(--ink); transform: rotate(1.2deg); animation: kineticCardIn .8s .42s cubic-bezier(.16,1,.3,1) both; transition: background .25s, color .25s, transform .35s cubic-bezier(.16,1,.3,1); }
.kinetic-about-button:hover { background: var(--news-pink); transform: translate(-4px,-4px) rotate(0); }
.kinetic-about-button > span { grid-column: 1 / -1; font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.kinetic-about-button strong { font: 400 clamp(16px,1.55vw,22px)/.9 var(--serif); }
.kinetic-about-button i { align-self: end; font: 700 7px/1 var(--sans); font-style: normal; letter-spacing: .08em; }
.kinetic-masthead-integrated .kinetic-headlines { z-index: 10; top: 52%; height: 166px; background: rgba(35,115,216,.9); }
.kinetic-masthead-integrated .kinetic-columns { z-index: 9; }
@keyframes kineticCardIn { from { opacity: 0; clip-path: inset(0 100% 0 0); transform: translateY(13px) rotate(-1deg); } }
@keyframes kineticPhotoIn { from { opacity: 0; clip-path: inset(100% 0 0); transform: translateY(24px) rotate(1.3deg) scale(.96); } }

.weekly-concept { position: relative; min-width: 0; overflow: hidden; padding: 25px var(--pad) 74px; background: var(--ink); }
.weekly-cover { position: relative; min-height: 610px; display: grid; grid-template-columns: 112px minmax(210px, .9fr) minmax(260px, 1.1fr); grid-template-rows: auto 1fr auto; overflow: hidden; border: 1px solid var(--ink); background: var(--paper); box-shadow: 9px 9px 0 var(--news-blue); animation: coverPrint .65s cubic-bezier(.16,1,.3,1) both; }
@keyframes coverPrint { from { opacity: 0; clip-path: inset(0 0 100% 0); transform: rotate(-.7deg) translateY(12px); } }
.weekly-masthead { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr auto 1fr; align-items: end; padding: 13px 15px 9px; border-bottom: 3px double var(--ink); }
.weekly-masthead span:first-child { font: 400 clamp(28px, 3.7vw, 54px)/.75 var(--serif); letter-spacing: -.055em; }
.weekly-masthead span:nth-child(2), .weekly-masthead span:last-child { font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.weekly-masthead span:last-child { justify-self: end; }
.weekly-date-rail { grid-row: 2; display: grid; align-content: start; padding: 20px 12px; border-right: 1px solid var(--ink); background: var(--news-pink); }
.weekly-date-rail strong { font: 400 clamp(60px, 7vw, 100px)/.68 var(--serif); letter-spacing: -.08em; }
.weekly-date-rail span { margin-top: 14px; font: 700 9px/1 var(--sans); text-transform: uppercase; writing-mode: vertical-rl; }
.weekly-lead { grid-column: 2; padding: 22px; border-right: 1px solid var(--ink); }
.weekly-lead h2 { margin: 9px 0 12px; font: 400 clamp(42px, 5.5vw, 82px)/.75 var(--serif); letter-spacing: -.065em; }
.weekly-lead p { margin: 0; font-size: clamp(12px, 1.2vw, 16px); line-height: 1.25; }
.weekly-image { position: relative; min-height: 390px; overflow: hidden; background: var(--ink); }
.weekly-image::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#fff 0 .55px, transparent .75px); background-size: 3px 3px; opacity: .16; }
.weekly-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); animation: weeklyImage 4.2s linear both; }
@keyframes weeklyImage { from { transform: scale(1.035); } to { transform: scale(1.085); } }
.weekly-facts { grid-column: 1 / 3; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ink); }
.weekly-facts div { padding: 9px 12px; border-right: 1px solid var(--ink); }
.weekly-facts span { display: block; font: 700 7px/1 var(--sans); text-transform: uppercase; }
.weekly-facts strong { display: block; margin-top: 4px; font: 400 13px/1 var(--serif); }
.weekly-side-copy { grid-column: 3; padding: 10px 13px; overflow: hidden; border-top: 1px solid var(--ink); font: 700 8px/1 var(--sans); word-spacing: 10px; }
.weekly-footer { position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; padding: 6px 10px; border-top: 1px solid var(--ink); font: 700 7px/1 var(--sans); }
.weekly-controls { position: absolute; left: var(--pad); right: var(--pad); bottom: 18px; display: grid; grid-template-columns: 38px 1fr 38px; gap: 8px; }
.weekly-controls > button, .weekly-controls > div button { height: 34px; border: 1px solid var(--paper); background: transparent; color: var(--paper); }
.weekly-controls > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }
.weekly-controls > div button.active { background: var(--news-pink); color: var(--ink); }
.weekly-controls > div button span { font: 700 8px/1 var(--sans); }

.concept-notes { display: grid; grid-template-columns: 1fr 1fr; background: var(--paper-deep); }
.concept-notes article { min-height: 280px; padding: 30px var(--pad); border-right: 1px solid var(--ink); opacity: .48; transition: opacity .25s, background .25s; }
.concept-notes article.active { opacity: 1; background: var(--news-pink); }
.concept-notes article > span { font: 700 8px/1 var(--sans); letter-spacing: .08em; }
.concept-notes h2 { margin: 20px 0 8px; font: 400 clamp(34px, 4vw, 58px)/.85 var(--serif); letter-spacing: -.05em; }
.concept-notes p { max-width: 590px; font-size: 15px; line-height: 1.28; }
.concept-notes article > strong { font: 700 9px/1 var(--sans); text-transform: uppercase; }

@media (max-width: 1000px) {
  .concept-stage { grid-template-columns: minmax(280px, .62fr) minmax(500px, 1.38fr); }
  .concept-stage-masthead { display: block; }
  .concept-reference { padding-left: 24px; padding-right: 24px; }
  .kinetic-masthead-integrated .kinetic-logo-stack { left: 9%; right: 9%; }
  .kinetic-venue-window { left: 16%; right: 16%; }
  .weekly-cover { grid-template-columns: 88px minmax(185px, .9fr) minmax(220px, 1.1fr); }
}

@media (max-width: 780px) {
  .concepts-header { grid-template-columns: 1fr auto; }
  .concepts-header > div { display: none; }
  .concepts-intro { grid-template-columns: 1fr; gap: 18px; }
  .concept-switcher { grid-template-columns: 1fr 1fr; }
  .concept-switcher > button { padding: 0 10px; font-size: 9px; }
  .concept-switcher > .concept-replay { grid-column: 1 / -1; min-height: 38px; justify-self: stretch; border-top: 1px solid var(--ink); border-left: 0; }
  .concept-stage { grid-template-columns: 1fr; }
  .concept-stage-masthead { display: block; }
  .concept-reference { min-height: 590px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .kinetic-masthead, .weekly-concept { min-height: 690px; }
  .concept-stage-masthead .kinetic-masthead { min-height: 770px; }
  .kinetic-masthead-integrated .kinetic-logo-stack { left: 6%; right: 6%; top: 18%; height: 32%; }
  .kinetic-intro-block { top: 68px; width: min(42vw, 300px); }
  .kinetic-venue-window { top: 74px; left: 21%; right: 18%; height: 305px; }
  .kinetic-hours-rail { top: 240px; width: 150px; }
  .kinetic-about-button { top: 306px; left: 24px; right: auto; width: 158px; min-height: 74px; padding: 10px 11px; }
  .kinetic-masthead-integrated .kinetic-headlines { top: 51%; }
  .concept-notes { grid-template-columns: 1fr; }
  .concept-notes article { border-right: 0; border-bottom: 1px solid var(--ink); }
}

@media (max-width: 560px) {
  .concepts-header > a:first-child span { width: 94px; }
  .concepts-header > a:last-child { font-size: 7px; }
  .concept-switcher > button span { display: none; }
  .kinetic-headlines { top: 48%; height: 205px; }
  .kinetic-headlines span { font-size: 54px; }
  .home-kinetic-hero { min-height: 850px; }
  .concept-stage-masthead .kinetic-masthead { min-height: 850px; }
  .kinetic-masthead-integrated .kinetic-topline { grid-template-columns: 1fr auto; }
  .kinetic-masthead-integrated .kinetic-topline span:nth-child(2) { display: none; }
  .kinetic-intro-block { top: 66px; left: 14px; width: calc(100% - 28px); padding: 11px 13px 13px; box-shadow: 5px 5px 0 var(--news-pink); }
  .kinetic-intro-block p { margin-top: 10px; font-size: 19px; }
  .kinetic-venue-window { top: 194px; left: 14px; right: 14px; height: 220px; }
  .kinetic-masthead-integrated .kinetic-logo-stack { left: 5%; right: 5%; top: 25%; height: 23%; }
  .kinetic-hours-rail { top: 358px; right: 22px; width: 144px; padding: 10px 12px 12px; box-shadow: -5px 5px 0 rgba(241,240,234,.74); }
  .kinetic-hours-rail strong { margin-top: 9px; }
  .kinetic-hours-rail b { font-size: 27px; }
  .kinetic-about-button { top: 337px; left: 22px; width: 147px; min-height: 67px; box-shadow: -5px 5px 0 var(--ink); }
  .kinetic-about-button strong { font-size: 16px; }
  .kinetic-masthead-integrated .kinetic-headlines { top: 54%; height: 196px; }
  .kinetic-masthead-integrated .kinetic-headlines span { font-size: 51px; }
  .kinetic-columns { bottom: 90px; }
  .kinetic-event-strip { grid-template-columns: auto 1fr; gap: 9px; }
  .kinetic-event-strip i { grid-column: 2; }
  .weekly-concept { padding-left: 9px; padding-right: 14px; }
  .weekly-cover { min-height: 640px; grid-template-columns: 66px 1fr; grid-template-rows: auto auto 230px auto; }
  .weekly-masthead { grid-column: 1 / -1; }
  .weekly-masthead span:first-child { font-size: 28px; }
  .weekly-date-rail { grid-column: 1; grid-row: 2 / 4; }
  .weekly-lead { grid-column: 2; grid-row: 2; border-right: 0; }
  .weekly-lead h2 { font-size: 45px; }
  .weekly-image { grid-column: 2; grid-row: 3; min-height: 230px; }
  .weekly-facts { grid-column: 1 / -1; grid-row: 4; }
  .weekly-side-copy { display: none; }
}

/* BACI label concepts — three directions */
.label-concepts-page { position: relative; padding-bottom: 86px; }
.label-concepts-intro { background: linear-gradient(104deg, var(--news-grey) 0 67%, var(--news-pink) 67%); }
.label-concepts-intro h1 { font-size: clamp(55px, 8vw, 118px); }
.label-concepts-intro p { padding: 16px 18px; border: 1px solid var(--ink); background: rgba(241,240,234,.7); box-shadow: 7px 7px 0 var(--news-blue); }
.concept-switcher.label-concept-switcher { grid-template-columns: auto auto auto 1fr; }
.label-concept-stage { animation: labelConceptIn .58s cubic-bezier(.16,1,.3,1) both; }
@keyframes labelConceptIn { from { opacity: 0; transform: translateY(12px); } }

/* A — A/B catalogue */
.label-ab { min-height: 710px; padding: 20px var(--pad) 0; border-bottom: 1px solid var(--ink); background: var(--paper); }
.label-ab-header { display: grid; grid-template-columns: 1fr auto 1fr; padding: 0 0 9px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.label-ab-header strong { justify-self: center; }
.label-ab-header span:last-child { justify-self: end; }
.label-ab-intro { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px,7vw,110px); align-items: end; padding: 24px 0 20px; }
.label-ab-intro h2 { margin: 7px 0 0; font: 400 clamp(45px,6vw,84px)/.76 var(--serif); letter-spacing: -.065em; }
.label-ab-intro h2 em { color: var(--news-blue); font-weight: 400; }
.label-ab-intro p { max-width: 540px; margin: 0; font-size: 16px; line-height: 1.24; }
.label-ab-grid { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--ink); }
.label-side { display: grid; grid-template-columns: minmax(180px,.76fr) minmax(190px,1.24fr); grid-template-rows: auto 1fr; min-height: 390px; }
.label-side:first-child { border-right: 1px solid var(--ink); background: rgba(220,180,192,.55); }
.label-side:last-child { background: rgba(207,214,209,.58); }
.label-side-title { grid-column: 1 / -1; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 13px; padding: 9px 11px; border-bottom: 1px solid var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .09em; }
.label-side-title strong { justify-self: center; font: 400 19px/1 var(--serif); letter-spacing: 0; }
.label-side-title i { font-style: normal; }
.label-side-art { position: relative; overflow: hidden; padding: 0; border: 0; border-right: 1px solid var(--ink); background: var(--ink); text-align: left; }
.label-side-art::after { position: absolute; inset: 0; pointer-events: none; content: ""; background-image: radial-gradient(#fff 0 .55px,transparent .75px); background-size: 3px 3px; opacity: .16; }
.label-side-art img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); transition: filter .45s, transform .8s cubic-bezier(.16,1,.3,1); }
.label-side-art:hover img { filter: grayscale(.3) contrast(1.13); transform: scale(1.045); }
.label-side-art span { position: absolute; z-index: 2; left: 9px; bottom: 9px; padding: 6px 7px; border: 1px solid var(--ink); background: var(--paper); font: 700 7px/1.15 var(--sans); letter-spacing: .08em; }
.label-side-copy { display: flex; flex-direction: column; justify-content: center; padding: 20px clamp(16px,2vw,30px); }
.label-side-copy > span { font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.label-side-copy h3 { margin: 16px 0 8px; font: 400 clamp(27px,3vw,44px)/.85 var(--serif); letter-spacing: -.04em; }
.label-side-copy p { margin: 0; font-size: 13px; line-height: 1.25; }
.label-side-copy button { display: flex; justify-content: space-between; margin-top: auto; padding: 10px 0 6px; border: 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: transparent; font: 700 8px/1 var(--sans); letter-spacing: .07em; }
.label-side-copy button:hover { color: var(--news-blue); }
.label-ab-footer { display: grid; grid-template-columns: repeat(3,1fr); border: 1px solid var(--ink); border-top: 0; }
.label-ab-footer span { padding: 9px 8px; border-right: 1px solid var(--ink); font: 700 7px/1 var(--sans); letter-spacing: .1em; }
.label-ab-footer span:last-child { border-right: 0; text-align: right; }

/* B — record shop counter */
.record-counter { min-height: 735px; overflow: hidden; padding: 20px var(--pad) 0; border-bottom: 1px solid var(--ink); background: var(--news-pink); }
.record-counter-header { display: grid; grid-template-columns: 1fr auto 1fr; padding-bottom: 9px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .1em; }
.record-counter-header span:nth-child(2) { justify-self: center; }
.record-counter-header span:last-child { justify-self: end; }
.record-counter-statement { display: grid; grid-template-columns: 1.25fr .75fr; column-gap: 8vw; align-items: end; padding: 22px 0 13px; }
.record-counter-statement > span { grid-column: 1 / -1; }
.record-counter-statement h2 { margin: 6px 0 0; font: 400 clamp(50px,7.4vw,105px)/.73 var(--serif); letter-spacing: -.073em; }
.record-counter-statement h2 em { color: var(--news-blue); font-weight: 400; }
.record-counter-statement p { max-width: 460px; margin: 0 0 4px; font-size: 16px; line-height: 1.24; }
.record-counter-floor { position: relative; min-height: 440px; margin-top: 4px; border: 1px solid var(--ink); background: linear-gradient(180deg,rgba(241,240,234,.35),rgba(207,214,209,.72)); isolation: isolate; }
.record-counter-floor::before { position: absolute; z-index: -1; inset: 0; content: ""; background: repeating-linear-gradient(90deg,transparent 0 calc(12.5% - 1px),rgba(17,17,15,.13) calc(12.5% - 1px) 12.5%); }
.record-object { position: absolute; padding: 7px 7px 25px; border: 1px solid var(--ink); background: var(--paper); box-shadow: 7px 7px 0 rgba(17,17,15,.18); transition: z-index 0s, transform .65s cubic-bezier(.16,1,.3,1); }
.record-object:hover { z-index: 8; transform: translateY(-13px) rotate(0); }
.record-object button { width: 100%; height: calc(100% - 18px); overflow: hidden; padding: 0; border: 1px solid var(--ink); background: var(--ink); }
.record-object img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.22); transition: filter .35s, transform .65s; }
.record-object:hover img { filter: grayscale(.18) contrast(1.1); transform: scale(1.04); }
.record-object > span,.record-object > strong { position: absolute; bottom: 8px; font: 700 7px/1 var(--sans); letter-spacing: .07em; }
.record-object > span { left: 8px; }
.record-object > strong { right: 8px; }
.record-object-release { z-index: 3; left: 5%; top: 28px; width: 29%; height: 360px; transform: rotate(-2.2deg); }
.record-object-set { z-index: 2; left: 34%; top: 60px; width: 27%; height: 325px; transform: rotate(2.4deg); }
.record-object-archive { z-index: 1; right: 11%; top: 19px; width: 26%; height: 350px; transform: rotate(-1deg); }
.record-counter-ticket { position: absolute; z-index: 10; right: 2.5%; bottom: 18px; width: 220px; padding: 12px 14px 14px; border: 1px solid var(--ink); background: var(--news-blue); color: var(--paper); box-shadow: 5px 5px 0 var(--ink); transform: rotate(2deg); }
.record-counter-ticket > span,.record-counter-ticket > i { font: 700 8px/1 var(--sans); letter-spacing: .1em; font-style: normal; }
.record-counter-ticket > strong { display: block; margin: 4px 0 10px; font: 400 28px/.9 var(--serif); }
.record-counter-ticket > i { position: absolute; top: 13px; right: 14px; }
.record-counter-ticket p { margin: 0; padding-top: 8px; border-top: 1px solid var(--paper); font-size: 11px; line-height: 1.2; }
.record-counter-footer { display: grid; grid-template-columns: repeat(3,1fr); border: 1px solid var(--ink); border-top: 0; background: var(--paper); }
.record-counter-footer span { padding: 9px; border-right: 1px solid var(--ink); font: 700 7px/1 var(--sans); letter-spacing: .1em; }
.record-counter-footer span:nth-child(2) { text-align: center; }
.record-counter-footer span:last-child { border-right: 0; text-align: right; }

/* C — catalogue index */
.label-index { min-height: 690px; padding: 24px var(--pad) 0; border-bottom: 1px solid var(--ink); background: var(--news-grey); }
.label-index-header { display: grid; grid-template-columns: 1.18fr .82fr; gap: 8vw; align-items: end; padding-bottom: 22px; border-bottom: 3px double var(--ink); }
.label-index-header h2 { margin: 6px 0 0; font: 400 clamp(52px,7vw,100px)/.73 var(--serif); letter-spacing: -.073em; }
.label-index-header h2 em { color: var(--news-blue); font-weight: 400; }
.label-index-header > div:last-child { max-width: 520px; }
.label-index-header > div:last-child strong { font: 700 9px/1 var(--sans); letter-spacing: .08em; }
.label-index-header p { margin: 13px 0 0; font-size: 16px; line-height: 1.24; }
.label-platform-buttons { display: grid; grid-template-columns: 1fr 1fr; margin-top: 18px; border: 1px solid var(--ink); }
.label-platform-buttons a { display: grid; grid-template-columns: 34px 1fr auto; gap: 9px; align-items: center; min-height: 52px; padding: 7px 9px; background: var(--paper); }
.label-platform-buttons a + a { border-left: 1px solid var(--ink); }
.label-platform-buttons a:hover { background: var(--news-pink); }
.label-platform-buttons img { width: 30px; height: 24px; object-fit: contain; }
.label-platform-buttons span { display: grid; gap: 3px; font: 700 10px/1 var(--sans); text-transform: uppercase; }
.label-platform-buttons small { font: 700 6px/1 var(--sans); letter-spacing: .06em; opacity: .6; }
.label-platform-buttons i { font-style: normal; }
.label-index-grid { display: grid; grid-template-columns: minmax(500px,1.35fr) minmax(300px,.65fr); height: 590px; min-height: 430px; border-right: 1px solid var(--ink); border-left: 1px solid var(--ink); }
.label-index-list { display: grid; grid-template-rows: auto auto minmax(0,1fr) auto; min-height: 0; border-right: 1px solid var(--ink); }
.label-index-filters { display: grid; grid-template-columns: repeat(3,1fr); min-height: 38px; border-bottom: 1px solid var(--ink); }
.label-index-filters button { border: 0; border-right: 1px solid var(--ink); background: var(--news-pink); font: 700 8px/1 var(--sans); letter-spacing: .07em; }
.label-index-filters button:last-child { border-right: 0; }
.label-index-filters button:hover,.label-index-filters button.active { background: var(--news-blue); color: var(--paper); }
.label-index-columns,.label-index-entries > a { display: grid; grid-template-columns: .72fr .65fr 1.65fr .8fr 20px; align-items: center; gap: 10px; }
.label-index-columns { min-height: 34px; padding: 0 12px; border-bottom: 1px solid var(--ink); font: 700 7px/1 var(--sans); letter-spacing: .09em; }
.label-index-entries { min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: var(--news-blue) var(--paper-deep); scrollbar-width: thin; }
.label-index-entries > a { min-height: 60px; padding: 8px 12px; border-bottom: 1px solid var(--ink); background: transparent; text-align: left; }
.label-index-entries > a:hover,.label-index-entries > a.active { background: var(--news-pink); }
.label-index-entries > a > span { font: 700 8px/1 var(--sans); letter-spacing: .05em; }
.label-index-entries > a > strong { font: 400 clamp(15px,1.35vw,21px)/.94 var(--serif); }
.label-index-entries > a > i { justify-self: end; font-style: normal; }
.label-index-about { display: grid; grid-template-columns: .58fr 1.42fr; gap: 20px; padding: 15px 12px; }
.label-index-about span { font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.label-index-about p { margin: 0; font-size: 12px; line-height: 1.23; }
.label-index-preview { display: grid; grid-template-rows: 1fr auto; background: var(--paper); }
.label-index-image { position: relative; min-height: 280px; overflow: hidden; background: var(--ink); }
.label-index-image::after { position: absolute; inset: 0; content: ""; background-image: radial-gradient(#fff 0 .55px,transparent .75px); background-size: 3px 3px; opacity: .15; }
.label-index-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.23); animation: indexImageIn .65s cubic-bezier(.16,1,.3,1) both; }
@keyframes indexImageIn { from { opacity: 0; transform: scale(1.055); } }
.label-index-image span { position: absolute; z-index: 2; top: 8px; right: 8px; padding: 5px 7px; border: 1px solid var(--ink); background: var(--news-pink); font: 700 7px/1 var(--sans); }
.label-index-meta { padding: 15px 16px 17px; border-top: 1px solid var(--ink); }
.label-index-meta > span { font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.label-index-meta h3 { margin: 9px 0 4px; font: 400 27px/.9 var(--serif); letter-spacing: -.035em; }
.label-index-meta p { margin: 0; font-size: 11px; }
.label-index-actions { display: grid; margin-top: 14px; border-top: 1px solid var(--ink); }
.label-index-actions > * { display: flex; justify-content: space-between; width: 100%; padding: 8px 0 6px; border: 0; border-bottom: 1px solid var(--ink); background: transparent; font: 700 8px/1 var(--sans); text-align: left; }
.label-index-actions > *:hover { padding-left: 7px; padding-right: 7px; background: var(--news-pink); }
.label-index-actions b { font-weight: 700; }
.label-index-footer { display: grid; grid-template-columns: repeat(3,1fr); border: 1px solid var(--ink); }
.label-index-footer > * { padding: 9px; border-right: 1px solid var(--ink); font: 700 7px/1 var(--sans); letter-spacing: .09em; }
.label-index-footer > *:nth-child(2) { text-align: center; }
.label-index-footer > *:last-child { border-right: 0; text-align: right; }
.label-index-footer a:hover { background: var(--news-pink); }
.home-label-index { min-height: 0; padding-bottom: 0; }
.home-label-index .label-index-header { min-height: 260px; }
.home-label-index .label-index-grid { min-height: 455px; }
.home-label-index .label-index-footer { border-top: 0; }

/* Shared BACI receiver: listening utility, not the label identity */
.label-receiver { position: fixed; z-index: 120; right: 18px; bottom: 17px; width: min(345px,calc(100vw - 36px)); filter: drop-shadow(7px 7px 0 rgba(17,17,15,.24)); transition: width .35s cubic-bezier(.16,1,.3,1); }
.label-receiver-fold { position: absolute; right: 0; bottom: 100%; display: flex; align-items: center; gap: 10px; min-height: 27px; padding: 0 9px; border: 1px solid var(--ink); border-bottom: 0; background: var(--news-pink); font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.label-receiver-fold i { font: 400 15px/1 var(--serif); font-style: normal; }
.label-receiver-face { overflow: hidden; max-height: 290px; border: 1px solid var(--ink); background: var(--paper); transition: max-height .45s cubic-bezier(.16,1,.3,1),opacity .25s; }
.label-receiver.is-collapsed { width: 118px; }
.label-receiver.is-collapsed .label-receiver-face { max-height: 0; opacity: 0; }
.label-receiver-heading { display: flex; justify-content: space-between; padding: 8px 10px 7px; border-bottom: 3px double var(--ink); background: var(--news-grey); font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.label-receiver-display { display: flex; justify-content: space-between; align-items: center; margin: 10px 10px 0; padding: 9px 10px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); }
.label-receiver-display div { display: grid; gap: 4px; }
.label-receiver-display span { font: 700 7px/1 var(--sans); letter-spacing: .08em; }
.label-receiver-display strong { font: 400 22px/.9 var(--serif); }
.label-receiver-display > i { width: 12px; height: 12px; border: 1px solid var(--paper); border-radius: 50%; background: var(--news-pink); }
.label-receiver-display > i.is-playing { animation: receiverPulse 1.25s steps(2,end) infinite; }
@keyframes receiverPulse { 50% { background: var(--news-blue); transform: scale(.72); } }
.label-receiver-track { display: grid; gap: 3px; padding: 10px 11px 8px; }
.label-receiver-track strong { overflow: hidden; font: 400 18px/.95 var(--serif); text-overflow: ellipsis; white-space: nowrap; }
.label-receiver-track span { font: 700 7px/1 var(--sans); letter-spacing: .06em; text-transform: uppercase; }
.label-receiver-controls { display: grid; grid-template-columns: 39px 1fr; gap: 10px; align-items: center; padding: 0 10px 10px; }
.label-receiver-controls > button { width: 39px; height: 39px; padding: 0; border: 1px solid var(--ink); border-radius: 50%; background: var(--news-blue); color: var(--paper); font: 700 11px/1 var(--sans); }
.label-receiver-controls > div { display: grid; grid-template-columns: 1fr auto; gap: 2px 9px; align-items: center; }
.label-receiver-controls input { grid-column: 1 / -1; width: 100%; accent-color: var(--news-blue); }
.label-receiver-controls span { grid-column: 2; font: 700 7px/1 var(--sans); }
.label-concept-notes { grid-template-columns: repeat(3,1fr); }
.label-concept-notes article { min-height: 260px; padding-left: clamp(18px,2.4vw,38px); padding-right: clamp(18px,2.4vw,38px); }
.label-concept-notes h2 { font-size: clamp(32px,3.5vw,53px); }

@media (max-width: 950px) {
  .label-side { grid-template-columns: 1fr; grid-template-rows: auto 240px auto; }
  .label-side-art { border-right: 0; border-bottom: 1px solid var(--ink); }
  .label-side-copy { min-height: 250px; }
  .record-counter-statement { grid-template-columns: 1fr 1fr; }
  .record-object-release { left: 3%; width: 34%; }
  .record-object-set { left: 32%; width: 34%; }
  .record-object-archive { right: 3%; width: 32%; }
  .label-index-grid { grid-template-columns: minmax(460px,1.2fr) minmax(270px,.8fr); }
  .label-index-columns,.label-index-entries > a { grid-template-columns: .7fr .6fr 1.5fr .75fr 18px; gap: 7px; }
}

@media (max-width: 720px) {
  .label-concepts-intro { background: var(--news-grey); }
  .label-concepts-intro p { box-shadow: 5px 5px 0 var(--news-pink); }
  .concept-switcher.label-concept-switcher { grid-template-columns: repeat(3,1fr); }
  .label-concept-switcher > button { min-width: 0; padding: 0 6px; font-size: 8px; }
  .label-concept-switcher > button span { display: none; }
  .label-concept-switcher > a { grid-column: 1 / -1; min-height: 38px; justify-content: center; border-top: 1px solid var(--ink); border-left: 0; }
  .label-ab,.record-counter,.label-index { padding-left: 14px; padding-right: 14px; }
  .label-ab-header,.record-counter-header { grid-template-columns: 1fr auto; }
  .label-ab-header strong,.record-counter-header span:nth-child(2) { display: none; }
  .label-ab-intro,.label-index-header { grid-template-columns: 1fr; gap: 18px; }
  .label-ab-grid { grid-template-columns: 1fr; }
  .label-side:first-child { border-right: 0; border-bottom: 1px solid var(--ink); }
  .label-side { grid-template-columns: minmax(145px,.72fr) minmax(170px,1.28fr); grid-template-rows: auto 310px; }
  .label-side-art { border-right: 1px solid var(--ink); border-bottom: 0; }
  .label-side-copy { min-height: 310px; }
  .record-counter-statement { grid-template-columns: 1fr; gap: 15px; }
  .record-counter-floor { min-height: 675px; }
  .record-object-release { left: 5%; top: 25px; width: 55%; height: 330px; }
  .record-object-set { left: auto; right: 4%; top: 130px; width: 52%; height: 320px; }
  .record-object-archive { left: 11%; right: auto; top: 335px; width: 52%; height: 300px; }
  .record-counter-ticket { right: 4%; bottom: 27px; width: 190px; }
  .label-index-grid { grid-template-columns: 1fr; }
  .label-index-grid { height: auto; }
  .label-index-list { min-height: 520px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .label-index-entries { max-height: 390px; }
  .label-index-preview { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; }
  .label-index-image { min-height: 270px; }
  .label-index-meta { align-self: end; border-top: 0; border-left: 1px solid var(--ink); }
  .label-concept-notes { grid-template-columns: 1fr; }
  .label-concept-notes article { border-right: 0; border-bottom: 1px solid var(--ink); }
}

@media (max-width: 500px) {
  .label-concepts-page { padding-bottom: 72px; }
  .label-ab-intro h2,.record-counter-statement h2,.label-index-header h2 { font-size: 48px; }
  .label-ab-grid { border-bottom: 0; }
  .label-side { grid-template-columns: 1fr; grid-template-rows: auto 260px auto; }
  .label-side-art { border-right: 0; border-bottom: 1px solid var(--ink); }
  .label-side-copy { min-height: 235px; }
  .label-ab-footer,.record-counter-footer,.label-index-footer { grid-template-columns: 1fr; }
  .label-ab-footer span,.record-counter-footer span,.label-index-footer > * { border-right: 0; border-bottom: 1px solid var(--ink); text-align: left !important; }
  .label-ab-footer span:last-child,.record-counter-footer span:last-child,.label-index-footer > *:last-child { border-bottom: 0; }
  .record-counter-floor { min-height: 720px; }
  .record-object-release { width: 69%; height: 315px; }
  .record-object-set { top: 165px; width: 63%; height: 295px; }
  .record-object-archive { top: 375px; left: 5%; width: 63%; height: 285px; }
  .record-counter-ticket { bottom: 20px; width: 172px; }
  .label-index-columns { display: none; }
  .label-platform-buttons { grid-template-columns: 1fr; }
  .label-platform-buttons a + a { border-top: 1px solid var(--ink); border-left: 0; }
  .label-index-filters button { font-size: 6px; }
  .label-index-entries > a { grid-template-columns: .75fr 1.65fr 18px; min-height: 66px; }
  .label-index-entries > a > span:nth-of-type(2),.label-index-entries > a > span:nth-of-type(3) { display: none; }
  .label-index-preview { grid-template-columns: 1fr; }
  .label-index-meta { border-left: 0; border-top: 1px solid var(--ink); }
  .label-index-about { grid-template-columns: 1fr; gap: 7px; }
  .label-receiver { right: 10px; bottom: 10px; width: calc(100vw - 20px); }
  .label-receiver.is-collapsed { width: 112px; }
}

@media (prefers-reduced-motion: reduce) {
  .label-concept-stage,.label-index-image img,.label-receiver-display > i.is-playing { animation: none; }
  .record-object,.label-side-art img { transition: none; }
}

/* Find us — interactive Hermannplatz walking guide */
.route-guide { scroll-margin-top: 102px; border-bottom: 1px solid var(--ink); background: var(--paper); }
.route-guide-heading { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(36px,8vw,130px); align-items: end; padding: 34px var(--pad) 28px; border-bottom: 3px double var(--ink); background: linear-gradient(108deg,var(--paper) 0 72%,rgba(220,180,192,.52) 72%); }
.route-guide-heading h2 { margin: 8px 0 0; font: 400 clamp(58px,8vw,118px)/.7 var(--serif); letter-spacing: -.075em; }
.route-guide-heading h2 em { color: var(--news-blue); font-weight: 400; }
.route-guide-summary { align-self: stretch; display: grid; grid-template-columns: 1fr auto; align-content: end; padding: 17px 18px 18px; border: 1px solid var(--ink); background: rgba(241,240,234,.88); box-shadow: 8px 8px 0 var(--news-blue); }
.route-guide-summary > strong { font: 400 clamp(34px,4vw,57px)/.8 var(--serif); letter-spacing: -.045em; }
.route-guide-summary > span { align-self: end; font: 700 8px/1 var(--sans); letter-spacing: .09em; text-transform: uppercase; }
.route-guide-summary p { grid-column: 1 / -1; margin: 14px 0 0; padding-top: 10px; border-top: 1px solid var(--ink); font-size: 13px; line-height: 1.25; }
.route-guide-spread { display: grid; grid-template-columns: minmax(0,1.48fr) minmax(290px,.52fr); min-height: 630px; }
.route-map-wrap { min-width: 0; padding: clamp(15px,2.8vw,42px); border-right: 1px solid var(--ink); background: var(--news-pink); }
.route-map { position: relative; width: 100%; overflow: hidden; border: 1px solid var(--ink); background: var(--paper); box-shadow: 10px 10px 0 rgba(17,17,15,.19); isolation: isolate; }
.route-map::after { position: absolute; z-index: 8; inset: 0; pointer-events: none; content: ""; background-image: radial-gradient(rgba(17,17,15,.55) 0 .5px,transparent .72px),repeating-linear-gradient(2deg,transparent 0 4px,rgba(17,17,15,.04) 4px 5px); background-size: 4px 4px,auto; mix-blend-mode: multiply; opacity: .2; }
.route-map svg { display: block; width: 100%; height: auto; }
.route-map-paper { fill: var(--paper); }
.route-map-blocks path { fill: var(--news-grey); stroke: var(--ink); stroke-width: 1.1; }
.route-map-blocks path:nth-child(2),.route-map-blocks path:nth-child(5),.route-map-blocks path:nth-child(8) { fill: rgba(220,180,192,.6); }
.route-map-blocks path:nth-child(3),.route-map-blocks path:nth-child(6) { fill: var(--paper-deep); }
.route-map-streets path { fill: none; stroke: var(--ink); stroke-width: 2; stroke-dasharray: 5 6; opacity: .47; }
.route-map-labels text { fill: var(--ink); font: 700 12px/1 var(--sans); letter-spacing: 1.4px; }
.route-map-place path { fill: var(--ink); stroke: var(--ink); stroke-width: 1; }
.route-map-place text { fill: var(--paper); font: 700 16px/1 var(--sans); letter-spacing: 1px; }
.route-map-place text:first-of-type { fill: var(--news-pink); font-size: 24px; }
.route-map-place text:last-of-type { font-size: 10px; letter-spacing: 1.5px; }
.route-map-route-underlay,.route-map-route { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.route-map-route-underlay { stroke: var(--paper); stroke-width: 23px; opacity: .92; }
.route-map-route { stroke: var(--news-blue); stroke-width: 11px; stroke-dasharray: 620; stroke-dashoffset: 620; animation: routeDraw 2.1s .35s cubic-bezier(.16,1,.3,1) forwards; }
@keyframes routeDraw { to { stroke-dashoffset: 0; } }
.route-map-direction { fill: none; stroke: var(--news-blue); stroke-width: 8px; stroke-linecap: square; opacity: 0; animation: routeArrowIn .35s 1.55s ease forwards; }
.route-map-direction-two { animation-delay: 1.9s; }
@keyframes routeArrowIn { to { opacity: 1; } }
.route-map-destination path { fill: var(--news-pink); stroke: var(--ink); stroke-width: 1.5; }
.route-map-destination path:last-child { fill: var(--news-blue); }
.route-map-destination text { fill: var(--ink); font: 700 25px/1 var(--sans); letter-spacing: 2px; }
.route-map-destination text:nth-of-type(2) { font-size: 12px; letter-spacing: 1.2px; }
.route-map-compass text { fill: var(--ink); font: 700 17px/1 var(--sans); }
.route-map-compass path { fill: none; stroke: var(--ink); stroke-width: 2; }
.route-map-marker { position: absolute; z-index: 10; display: grid; place-items: center; width: clamp(36px,4.2vw,54px); aspect-ratio: 1; padding: 0; border: 1px solid var(--ink); border-radius: 50%; background: var(--paper); transform: translate(-50%,-50%); transition: color .2s,background .2s,box-shadow .2s,transform .25s cubic-bezier(.16,1,.3,1); }
.route-map-marker span { font: 700 clamp(8px,.8vw,11px)/1 var(--sans); letter-spacing: .05em; }
.route-map-marker:hover,.route-map-marker:focus-visible,.route-map-marker.active { z-index: 12; outline: 0; background: var(--news-blue); color: var(--paper); box-shadow: 5px 5px 0 var(--ink); transform: translate(-50%,-50%) scale(1.1); }
.route-map-marker-1 { left: 52.6%; top: 17.9%; }
.route-map-marker-2 { left: 52%; top: 50%; }
.route-map-marker-3 { left: 52.2%; top: 86%; }
.route-map-caption { position: absolute; z-index: 9; left: 8px; bottom: 8px; padding: 6px 7px; border: 1px solid var(--ink); background: var(--paper); font: 700 7px/1 var(--sans); letter-spacing: .09em; }
.route-itinerary { display: flex; min-width: 0; flex-direction: column; background: var(--news-grey); }
.route-itinerary-top { display: flex; justify-content: space-between; padding: 11px 13px 9px; border-bottom: 3px double var(--ink); font: 700 8px/1 var(--sans); letter-spacing: .09em; text-transform: uppercase; }
.route-active-card { min-height: 258px; display: flex; flex-direction: column; justify-content: center; padding: 28px clamp(19px,3vw,38px); border-bottom: 1px solid var(--ink); background: var(--news-pink); animation: routeCardIn .42s cubic-bezier(.16,1,.3,1) both; }
@keyframes routeCardIn { from { opacity: .35; transform: translateX(9px); } }
.route-active-card > span,.route-active-card > small { font: 700 8px/1.15 var(--sans); letter-spacing: .09em; text-transform: uppercase; }
.route-active-card > strong { display: block; margin: 18px 0 10px; font: 400 clamp(31px,3vw,46px)/.82 var(--serif); letter-spacing: -.05em; }
.route-active-card p { max-width: 360px; margin: 0; font-size: 14px; line-height: 1.28; }
.route-active-card small { margin-top: 24px; padding-top: 9px; border-top: 1px solid var(--ink); }
.route-step-list { border-bottom: 1px solid var(--ink); }
.route-step-list button { display: grid; grid-template-columns: 33px 1fr auto; align-items: center; gap: 9px; width: 100%; min-height: 57px; padding: 0 13px; border: 0; border-bottom: 1px solid rgba(17,17,15,.28); background: transparent; text-align: left; }
.route-step-list button:last-child { border-bottom: 0; }
.route-step-list button:hover,.route-step-list button:focus-visible,.route-step-list button.active { outline: 0; background: var(--paper); }
.route-step-list span,.route-step-list i { font: 700 8px/1 var(--sans); letter-spacing: .06em; font-style: normal; }
.route-step-list strong { font: 400 15px/1 var(--serif); }
.route-maps-link { display: grid; gap: 9px; margin-top: auto; padding: 18px 17px 20px; border-top: 1px solid var(--ink); background: var(--news-blue); color: var(--paper); transition: color .2s,background .2s; }
.route-maps-link:hover,.route-maps-link:focus-visible { outline: 0; background: var(--ink); color: var(--news-pink); }
.route-maps-link span { font: 700 8px/1 var(--sans); letter-spacing: .09em; text-transform: uppercase; }
.route-maps-link strong { font: 400 clamp(23px,2.2vw,34px)/.86 var(--serif); }
.route-source-note { margin: 0; padding: 10px 13px 12px; font: 700 7px/1.3 var(--sans); letter-spacing: .055em; text-transform: uppercase; }

@media (max-width: 920px) {
  .route-guide-heading { grid-template-columns: 1fr .72fr; gap: 35px; }
  .route-guide-spread { grid-template-columns: 1fr; }
  .route-map-wrap { border-right: 0; border-bottom: 1px solid var(--ink); }
  .route-itinerary { display: grid; grid-template-columns: 1fr 1fr; }
  .route-itinerary-top { grid-column: 1 / -1; }
  .route-active-card { grid-column: 1; grid-row: 2 / 4; border-right: 1px solid var(--ink); }
  .route-step-list { grid-column: 2; border-bottom: 0; }
  .route-maps-link { grid-column: 2; margin-top: 0; }
  .route-source-note { grid-column: 1 / -1; border-top: 1px solid var(--ink); }
}

@media (max-width: 640px) {
  .route-guide { scroll-margin-top: 90px; }
  .route-guide-heading { grid-template-columns: 1fr; gap: 22px; background: var(--paper); }
  .route-guide-heading h2 { font-size: clamp(56px,19vw,82px); }
  .route-guide-summary { box-shadow: 6px 6px 0 var(--news-blue); }
  .route-map-wrap { padding: 14px 13px 20px; }
  .route-map { box-shadow: 6px 6px 0 rgba(17,17,15,.19); }
  .route-map-labels text { font-size: 14px; }
  .route-map-marker { width: 37px; }
  .route-itinerary { display: flex; }
  .route-active-card { min-height: 230px; border-right: 0; }
  .route-step-list { order: 3; border-bottom: 1px solid var(--ink); }
  .route-maps-link { order: 4; }
  .route-source-note { order: 5; }
}

@media (prefers-reduced-motion: reduce) {
  .route-map-route { stroke-dashoffset: 0; animation: none; }
  .route-map-direction,.route-active-card { opacity: 1; animation: none; }
  .route-map-marker { transition: none; }
}
