/* WUKF Bratislava 2027 - shared styles. No remote fonts or CSS dependencies. */
:root {
  --navy: #072a59;
  --deep: #041c3c;
  --blue: #124ca1;
  --red: #d91635;
  --red-dark: #b8102b;
  --ink: #142d4f;
  --muted: #4d6179;
  --soft: #f3f6fa;
  --line: #d7e1ec;
  --white: #fff;
  --radius: .875rem;
  --shadow: 0 10px 28px rgb(7 42 89 / 7%);
}
*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; scroll-behavior: smooth; scroll-padding-top: 7rem; }
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; font-size: 1rem; line-height: 1.65; color: var(--ink); background: var(--white); }
[hidden] { display: none !important; }
img { display: block; max-width: 100%; height: auto; }
figure, dl, dd { margin: 0; }
main { min-width: 0; overflow-wrap: anywhere; }
.content-grid > *, .venue-overview > *, .programme-band > *, .intro-grid > *, .notice > div, .status-banner > div, .transfer-steps li > div, .facts > div { min-width: 0; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: var(--blue); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
p { margin: 0 0 1.1rem; }
p:last-child { margin-bottom: 0; }
h1, h2, h3 { margin: 0 0 1rem; color: var(--navy); font-weight: 800; line-height: 1.12; letter-spacing: -.025em; overflow-wrap: anywhere; }
h1 { font-size: clamp(2rem, 1.5rem + 2.8vw, 4.25rem); }
h2 { font-size: clamp(1.8rem, 1.2rem + 1.5vw, 2.75rem); }
h3 { font-size: 1.2rem; line-height: 1.3; }
address { font-style: normal; }
.container { width: min(1280px, calc(100% - 64px)); margin-inline: auto; }
.narrow { max-width: 820px; }
.narrow h2 { font-size: 1.65rem; margin-top: 2.5rem; }
.section { padding-block: clamp(2.75rem, 5vw, 5rem); }
.section-inner { margin-top: 2.5rem; }
.soft { background: var(--soft); }
.section-heading { max-width: 820px; margin-bottom: 1.8rem; }
.section-heading .eyebrow { margin-bottom: .5rem; }
.section-heading h2 { margin-bottom: .85rem; }
.section-heading.compact { margin-top: 2.5rem; }
.eyebrow { font-size: .8125rem; font-weight: 800; line-height: 1.5; letter-spacing: .1em; color: var(--red); text-transform: uppercase; }
.eyebrow.light { color: #fff; }
.lead { color: var(--muted); font-size: 1.125rem; line-height: 1.7; }
.icon { display: inline-block; flex: 0 0 auto; width: 1.5rem; height: 1.5rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: middle; }
.icon-box { display: grid; place-items: center; width: 3.25rem; height: 3.25rem; margin-bottom: 1.1rem; color: var(--blue); background: #eaf1fa; border-radius: .8rem; }
.icon-box .icon { width: 1.6rem; height: 1.6rem; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; box-shadow: 0 0 0 3px #fff; }
#main:focus { outline: none; }
.skip-link { position: absolute; z-index: 100; top: .5rem; left: .5rem; padding: .9rem 1.2rem; background: var(--navy); color: #fff; transform: translateY(-180%); border-radius: .4rem; }
.skip-link:focus { transform: translateY(0); }
.actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: 1.5rem; }
.btn { max-width: 100%; overflow-wrap: anywhere; display: inline-flex; align-items: center; justify-content: center; gap: .65rem; min-height: 48px; padding: .8rem 1.3rem; border: 2px solid transparent; border-radius: .45rem; font-size: .9rem; font-weight: 750; line-height: 1.4; text-align: center; text-decoration: none; transition: background-color .18s, border-color .18s; }
.btn .icon { width: 1.25rem; height: 1.25rem; }
.btn-red { background: var(--red); color: #fff; }
.btn-red:hover { background: var(--red-dark); }
.btn-blue { background: var(--blue); color: #fff; }
.btn-blue:hover { background: var(--navy); }
.btn-outline { background: #fff; border-color: #526d8d; color: var(--navy); }
.btn-outline:hover { background: #edf3fa; border-color: var(--navy); }
.btn-ghost { color: #fff; background: rgb(4 28 60 / 70%); border-color: #fff; }
.btn-ghost:hover { background: var(--navy); }
.text-link { display: inline-flex; align-items: center; gap: .6rem; min-height: 44px; padding-block: .45rem; font-size: .9375rem; font-weight: 700; }
.text-link .icon { width: 1.1rem; height: 1.1rem; }
/* Header: the disclosure stays in document flow on narrow viewports. */
.site-header { background: #fff; border-bottom: 1px solid var(--line); z-index: 50; }
.header-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .8rem 1.6rem; padding-block: .7rem; }
.brand { display: inline-flex; align-items: center; gap: .7rem; color: var(--navy); text-decoration: none; flex-shrink: 0; }
.brand img { width: 102px; height: auto; }
.wordmark { width: 140px; line-height: 1.15; }
.wordmark strong { font-size: .875rem; letter-spacing: -.02em; }
.wordmark > span { display: block; font-size: .63rem; line-height: 1.35; letter-spacing: .02em; margin-top: .25rem; }
.site-nav { flex: 1 1 auto; }
.site-nav ul { display: flex; flex-wrap: wrap; gap: .2rem .65rem; align-items: center; justify-content: flex-end; padding: 0; margin: 0; list-style: none; }
.site-nav li { min-width: 0; }
.site-nav a:not(.btn) { display: flex; align-items: center; min-height: 46px; padding: .6rem .12rem; color: var(--navy); font-size: .8125rem; font-weight: 700; text-decoration: none; border-bottom: 3px solid transparent; }
.site-nav a:not(.btn):hover, .site-nav a:not(.btn)[aria-current] { color: var(--red-dark); border-bottom-color: var(--red); }
.site-nav .btn { min-height: 44px; padding: .65rem .95rem; font-size: .8125rem; }
.menu-toggle { display: flex; align-items: center; gap: .5rem; justify-content: center; min-width: 48px; min-height: 48px; padding: .65rem; color: var(--navy); border: 1px solid #526d8d; background: #fff; border-radius: .5rem; font-weight: 750; }
.close-icon { display: none; }
.menu-toggle[aria-expanded="true"] .menu-icon { display: none; }
.menu-toggle[aria-expanded="true"] .close-icon { display: inline-block; }
@media (min-width: 72rem) { .site-header { position: sticky; top: 0; } }
/* Photographic headers. Images are local files, not broken CSS background URLs. */
.home-hero, .page-hero { position: relative; isolation: isolate; background: var(--deep); color: #fff; }
.home-hero > picture, .page-hero > picture { position: absolute; inset: 0; z-index: -2; }
.home-hero > picture img, .page-hero > picture img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.home-hero > picture { left: 28%; -webkit-mask-image: linear-gradient(90deg, transparent, #000 22%); mask-image: linear-gradient(90deg, transparent, #000 22%); }
.home-hero > picture img { object-position: 60% center; }
.hero-shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, #041c3c 0%, rgb(4 28 60 / 98%) 25%, rgb(4 28 60 / 83%) 44%, rgb(4 28 60 / 35%) 68%, rgb(4 28 60 / 12%) 100%); }
.home-hero-content { padding-block: 4.5rem 5.3rem; }
.hero-kicker { font-size: clamp(1.1rem, 1rem + .55vw, 1.6rem); line-height: 1.22; font-weight: 800; letter-spacing: -.015em; margin-bottom: 1rem; max-width: 36rem; }
.home-hero h1 { font-size: clamp(2.7rem, 1.8rem + 3.4vw, 4.6rem); line-height: .98; letter-spacing: -.035em; color: #fff; margin-bottom: 1.3rem; }
.home-hero h1 span { color: #ff6677; }
.hero-claim { font-size: clamp(1.1rem, .8rem + .8vw, 1.65rem); letter-spacing: .16em; line-height: 1.4; margin-bottom: 1.7rem; }
.hero-meta { display: flex; flex-wrap: wrap; gap: .6rem 1.6rem; font-size: .9375rem; font-weight: 600; max-width: 620px; }
.hero-meta span { display: flex; align-items: center; gap: .55rem; }
.hero-meta .icon { width: 1.25rem; height: 1.25rem; }

.tricolour { height: 5px; background: linear-gradient(90deg, var(--red) 0 33.333%, #fff 33.333% 66.666%, var(--blue) 66.666%); }
.page-hero-content { padding-block: 1.5rem 3.5rem; min-height: 300px; display: flex; flex-direction: column; justify-content: flex-end; }
.page-hero h1 { color: #fff; max-width: 900px; font-size: clamp(2.15rem, 1.4rem + 2.8vw, 4rem); }
.page-hero-content > p:last-child { font-size: 1.1rem; max-width: 650px; }
.page-hero .hero-shade { background: linear-gradient(90deg, rgb(4 28 60 / 98%), rgb(4 28 60 / 82%) 55%, rgb(4 28 60 / 35%)); }
.breadcrumb { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; font-size: .875rem; margin-bottom: 1.5rem; }
.breadcrumb a { color: #fff; display: inline-flex; align-items: center; min-height: 44px; }
.breadcrumb .icon { width: .8rem; height: .8rem; }
.breadcrumb.dark, .breadcrumb.dark a { color: var(--muted); }
/* Home overview. */
.intro-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 3rem; align-items: center; }
.intro-grid figure { border-radius: var(--radius); overflow: hidden; background: var(--soft); }
.intro-grid figure img { width: 100%; aspect-ratio: 1.9; object-fit: cover; }
figcaption { padding: .65rem .95rem; font-size: .8rem; line-height: 1.5; color: var(--muted); }
.intro .section-heading { margin-bottom: 1rem; }
.facts-band { border-block: 1px solid var(--line); background: var(--soft); }
.facts { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); padding-block: 1.9rem; }
.facts > div { text-align: center; padding: .35rem 1rem; border-right: 1px solid var(--line); }
.facts > div:last-child { border: 0; }
.facts .icon { color: var(--blue); margin-bottom: .5rem; }
.facts dt { font-size: .75rem; letter-spacing: .08em; color: var(--muted); }
.facts dd { font-size: 1rem; font-weight: 750; margin-top: .3rem; }
.event-cards { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 1rem; }
.event-card { display: flex; flex-direction: column; color: var(--navy); border: 1px solid var(--line); border-radius: .5rem; box-shadow: var(--shadow); text-decoration: none; background: #fff; transition: border-color .18s, box-shadow .18s; min-width: 0; }
.event-card picture { overflow: hidden; border-radius: .5rem .5rem 0 0; }
.event-card img { width: 100%; aspect-ratio: 1.25; object-fit: cover; }
.event-card > span { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: 1rem .85rem; flex: 1; font-size: .9rem; font-weight: 750; line-height: 1.4; }
.event-card .icon { width: 1.1rem; height: 1.1rem; color: var(--blue); }
.event-card:hover { border-color: var(--blue); box-shadow: 0 10px 30px rgb(7 42 89 / 13%); }
.programme-band { display: grid; grid-template-columns: .9fr 1.1fr; gap: 3rem; align-items: center; }
.status-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.partner-band { display: flex; gap: 2rem; align-items: center; justify-content: space-between; }
.partner-band .section-heading { margin-bottom: .75rem; }
/* Shared cards and subpage layouts. */
.venue-overview { display: grid; grid-template-columns: 1.5fr 1fr; gap: 3rem; align-items: start; }
.address-card { background: var(--soft); border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); padding: 1.75rem; }
.address-card h2 { font-size: 1.45rem; }
.address-card .icon-box { float: right; margin-left: 1rem; }
.address-card address { font-size: 1.075rem; line-height: 1.7; margin-bottom: 1.25rem; }
.copy-fallback { margin-top: 1rem; padding: .75rem; background: #fff; border: 1px solid #8a9bb0; overflow-wrap: anywhere; user-select: all; }
.icon-grid { display: grid; gap: 1.2rem; margin-top: 2rem; }
.icon-grid.four { grid-template-columns: repeat(4,minmax(0,1fr)); }
.icon-grid.three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.icon-grid.two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.icon-card { display: flex; flex-direction: column; align-items: flex-start; padding: 1.65rem; border: 1px solid var(--line); background: #fff; border-radius: var(--radius); min-width: 0; }
.icon-card p { font-size: .9375rem; color: var(--muted); line-height: 1.7; }
.icon-card .text-link { margin-top: auto; }
.notice { display: flex; gap: 1rem; align-items: flex-start; padding: 1.1rem 1.35rem; margin-top: 1.75rem; background: #fff4f5; border-left: 4px solid var(--red); border-radius: 0 .5rem .5rem 0; }
.notice > .icon { color: var(--red-dark); margin-top: .1rem; }
.notice strong { color: var(--navy); }
.notice p { margin-top: .3rem; font-size: .9375rem; color: var(--muted); }
.content-grid { display: grid; grid-template-columns: minmax(0,1.9fr) minmax(0,1fr); gap: 3rem; align-items: start; }
.help-panel { border-radius: var(--radius); padding: 2rem; background: var(--navy); color: #fff; }
.help-panel .icon-box { color: #fff; background: #214875; }
.help-panel h2 { color: #fff; font-size: 1.65rem; }
.help-panel p { color: #e1e9f3; }
.help-panel .btn { margin-top: .6rem; }
.help-email { display: block; font-size: .875rem; margin-top: 1rem; color: #fff; overflow-wrap: anywhere; }
.source-note { color: var(--muted); font-size: .8125rem; line-height: 1.65; margin-top: 1.25rem; }
.source-note a { color: var(--blue); }
/* Maps remain readable offline and do not connect to Google until requested. */
.map-section { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.map-heading { padding: 1.7rem 2rem; display: flex; gap: 1.5rem; align-items: center; justify-content: space-between; }
.map-heading h2 { font-size: 1.8rem; margin-bottom: .5rem; }
.map-heading .eyebrow { margin-bottom: .35rem; }
.map-heading p { color: var(--muted); }
.map-heading .btn { flex-shrink: 0; }
.map-shell { border-block: 1px solid var(--line); background: #e9eff6; }
.map-placeholder { min-height: 365px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 2.25rem 1.25rem; background-image: linear-gradient(rgb(114 144 177 / 12%) 1px,transparent 1px),linear-gradient(90deg,rgb(114 144 177 / 12%) 1px,transparent 1px); background-size: 36px 36px; }
.map-marker { width: 3.75rem; height: 3.75rem; display: grid; place-items: center; background: #fff; color: var(--red); border-radius: 50%; box-shadow: var(--shadow); margin-bottom: .9rem; }
.map-marker .icon { width: 1.8rem; height: 1.8rem; }
.map-placeholder p { margin-bottom: .55rem; }
.map-name { font-size: 1.2rem; font-weight: 750; }
.map-load { margin-block: .65rem; }
.map-privacy { font-size: .8125rem; color: #465b72; }
.map-frame-slot iframe { width: 100%; height: 400px; display: block; border: 0; }
.map-foot { padding: .9rem 1.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.map-foot p { font-size: .8125rem; color: var(--muted); margin: 0; }
.map-foot .text-link { flex-shrink: 0; }
/* Travel and FAQs. */
.jump-links { display: flex; flex-wrap: wrap; gap: .6rem; margin-block: 1.5rem 2rem; }
.chip { display: inline-flex; gap: .5rem; align-items: center; padding: .65rem .9rem; min-height: 46px; border: 1px solid #8a9bb0; border-radius: 2rem; font-size: .875rem; font-weight: 650; color: var(--navy); background: #fff; text-decoration: none; }
.chip .icon { width: 1.125rem; height: 1.125rem; }
.chip:hover { background: var(--soft); }
.airport-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; }
.airport-card { display: flex; flex-direction: column; padding: 1.7rem; border: 1px solid var(--line); border-radius: var(--radius); border-top: 4px solid var(--blue); background: #fff; }
.airport-card:nth-child(2) { border-top-color: var(--red); }
.airport-top { display: flex; justify-content: space-between; align-items: center; color: var(--blue); margin-bottom: 1.25rem; }
.airport-top > .icon { width: 2rem; height: 2rem; }
.airport-code { color: var(--navy); background: var(--soft); padding: .2rem .6rem; letter-spacing: .1em; font-size: 1.3rem; font-weight: 800; }
.airport-card p { color: var(--muted); font-size: .9375rem; }
.airport-card .travel-time { display: flex; align-items: center; gap: .6rem; color: var(--navy); font-weight: 700; margin-top: auto; padding-top: .6rem; }
.travel-time .icon { width: 1.15rem; height: 1.15rem; }
.airport-card .text-link { border-top: 1px solid var(--line); padding-top: .8rem; }
.transfer-steps { padding: 0; margin: 1.75rem 0 0; list-style: none; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.transfer-steps li { display: flex; align-items: flex-start; gap: 1rem; padding: 1.1rem; border: 1px solid var(--line); border-radius: .6rem; }
.step-number { flex: 0 0 auto; font-size: 1rem; font-weight: 800; color: var(--red-dark); line-height: 1.5; }
.transfer-steps h3 { font-size: 1rem; margin-bottom: .5rem; }
.transfer-steps p { font-size: .9375rem; color: var(--muted); }
.faq-list { display: grid; gap: .7rem; margin-top: 1.4rem; }
.faq-list details { background: #fff; border: 1px solid var(--line); border-radius: .6rem; }
.faq-list summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 54px; padding: 1rem 1.2rem; font-size: 1rem; line-height: 1.5; font-weight: 700; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary .icon { width: 1rem; height: 1rem; }
.faq-list details[open] summary .icon { transform: rotate(90deg); }
.faq-answer { padding: 0 1.2rem 1.2rem; font-size: .9375rem; color: var(--muted); }
.status-banner { display: flex; gap: 1.1rem; background: var(--soft); padding: 1.6rem; border: 1px solid var(--line); border-radius: var(--radius); }
.status-banner > .icon { color: var(--blue); margin-top: .2rem; }
.status-banner h2 { font-size: 1.3rem; }
.subheading { margin-top: 2.5rem; font-size: 1.6rem; }
.resource-list { padding-left: 1.25rem; }
.resource-list a { display: inline-block; padding-block: .5rem; }
/* Footer. */
.site-footer { color: #e0e9f3; background: var(--deep); }
.footer-grid { display: grid; grid-template-columns: 1.2fr .9fr .9fr 1.45fr; gap: 2.25rem; padding-block: 3rem 2rem; }
.footer-brand img { width: 115px; margin-bottom: 1rem; }
.footer-title { font-size: .8rem; color: #fff; letter-spacing: .05em; font-weight: 800; margin-bottom: .9rem; }
.site-footer p:not(.footer-title) { font-size: .875rem; line-height: 1.7; }
.footer-claim { display: inline-block; letter-spacing: .13em; margin-top: .3rem; font-size: .75rem; }
.footer-links { list-style: none; margin: 0; padding: 0; }
.footer-links a { display: inline-flex; align-items: center; padding-block: .45rem; min-height: 40px; color: #e0e9f3; font-size: .8125rem; text-decoration: none; overflow-wrap: anywhere; }
.footer-links a:hover { text-decoration: underline; }
.footer-bottom { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; justify-content: space-between; padding-block: 1rem; border-top: 1px solid #284360; }
.footer-bottom p { margin: 0; }
.footer-bottom a { color: #e0e9f3; font-size: .8125rem; padding-block: .5rem; }
/* Tablet / mobile: no fixed-height text boxes or page-level overflow hiding. */
@media (max-width: 71.999rem) {
  html { scroll-padding-top: 1rem; }
  .site-header { position: static; }
  .site-nav { flex-basis: 100%; }
  .site-nav ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); justify-content: stretch; gap: .3rem .8rem; border-top: 1px solid var(--line); padding-block: .6rem; }
  .site-nav a:not(.btn) { padding: .65rem .5rem; min-height: 48px; font-size: .95rem; }
  .site-nav .btn { min-height: 48px; font-size: .95rem; }
  .nav-ticket { grid-column: 1 / -1; }
  .nav-ticket .btn { max-width: 100%; overflow-wrap: anywhere; display: flex; }
  .event-cards { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .event-card img { aspect-ratio: 1.8; }
  .icon-grid.four { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .content-grid { grid-template-columns: minmax(0,1.6fr) minmax(0,1fr); gap: 1.5rem; }
  .transfer-steps { grid-template-columns: minmax(0,1fr); }
  .help-panel { padding: 1.5rem; }
  .footer-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2rem; }
}
@media (max-width: 52rem) {
  .container { width: calc(100% - 40px); }
  .home-hero > picture { left: 15%; }
  .hero-shade { background: linear-gradient(90deg,#041c3c 0%,rgb(4 28 60 / 96%) 30%,rgb(4 28 60 / 77%) 60%,rgb(4 28 60 / 40%)); }
  .home-hero-content { padding-block: 3.5rem 4.5rem; }
  .intro-grid, .venue-overview, .programme-band, .content-grid { grid-template-columns: minmax(0,1fr); gap: 2rem; }
  .venue-overview .section-heading { margin-bottom: 1rem; }
  .icon-grid.three, .airport-grid { grid-template-columns: minmax(0,1fr); }
  .airport-card { padding: 1.5rem; }
  .airport-top { margin-bottom: .8rem; }
  .map-heading { flex-direction: column; align-items: flex-start; padding: 1.5rem; }
  .map-foot { flex-wrap: wrap; padding: 1rem 1.5rem; }
  .partner-band { flex-direction: column; align-items: flex-start; }
  .help-panel { max-width: none; }
  .transfer-steps { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 36rem) {
  .container { width: calc(100% - 32px); }
  .header-inner { gap: .65rem; padding-block: .65rem; }
  .brand img { width: 79px; }
  .wordmark { width: 112px; }
  .wordmark strong { font-size: .725rem; }
  .wordmark > span { font-size: .57rem; }
  .brand { gap: .45rem; }
  .menu-toggle { font-size: .8rem; gap: .35rem; padding: .55rem; }
  .menu-toggle .icon { width: 1.15rem; height: 1.15rem; }
  .home-hero-content { padding-block: 2.8rem 3.6rem; }
  .home-hero > picture { left: 0; -webkit-mask-image: none; mask-image: none; }
  .home-hero .hero-shade { background: rgb(4 28 60 / 87%); }
  .home-hero h1 { font-size: clamp(2.4rem, 2rem + 2vw, 3rem); }
  .hero-kicker { font-size: 1.1rem; }
  .hero-meta { display: grid; font-size: .875rem; }
  .home-hero .actions { align-items: stretch; flex-direction: column; max-width: 26rem; }

  .page-hero-content { min-height: 255px; padding-bottom: 3rem; }
  .page-hero h1 { font-size: 2rem; }
  .page-hero .hero-shade { background: rgb(4 28 60 / 88%); }
  .page-hero-content > p:last-child { font-size: 1rem; }
  .breadcrumb { margin-bottom: 1rem; font-size: .8rem; }
  .eyebrow { font-size: .75rem; }
  .lead { font-size: 1.05rem; }
  .intro-grid { gap: 1.5rem; }
  .facts { grid-template-columns: repeat(2,minmax(0,1fr)); row-gap: 1.5rem; }
  .facts > div:nth-child(2) { border-right: 0; }
  .facts dd { font-size: .9rem; }
  .event-cards { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .85rem; }
  .event-card img { aspect-ratio: 1.4; }
  .event-card > span { font-size: .875rem; padding: .85rem .7rem; }
  .icon-grid.four, .icon-grid.two, .status-cards, .transfer-steps { grid-template-columns: minmax(0,1fr); }
  .icon-card { padding: 1.4rem; }
  .address-card { padding: 1.4rem; }
  .address-card .icon-box { float: none; }
  .notice { padding: 1rem; gap: .7rem; }
  .map-heading { padding: 1.25rem; }
  .map-placeholder { min-height: 340px; }
  .map-frame-slot iframe { height: 340px; }
  .map-foot { padding: .8rem 1.25rem; }
  .map-foot .text-link { flex-shrink: 1; }
  .jump-links { gap: .5rem; }
  .chip { padding-inline: .7rem; font-size: .8125rem; }
  .help-panel h2 { font-size: 1.5rem; }
  .footer-grid { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .footer-links a { min-height: 44px; font-size: .875rem; }
  .footer-bottom { align-items: flex-start; flex-direction: column; gap: .2rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media (forced-colors: active) {
  .btn, .chip, .icon-card, .event-card, .help-panel, .map-section { border: 1px solid ButtonText; }
  :focus-visible { outline: 3px solid Highlight; }
  .hero-shade { background: Canvas; }
  .home-hero-content, .page-hero-content { background: Canvas; color: CanvasText; }
}
@media print {
  .site-header, .site-footer, .skip-link, .map-load { display: none !important; }
  .container { width: 100%; }
  .section { padding-block: 1.5rem; }
  .home-hero > picture, .page-hero > picture, .hero-shade { display: none; }
  .home-hero, .page-hero { background: #fff; color: #000; }
  .home-hero h1, .page-hero h1, .home-hero h1 span, .eyebrow.light { color: #000; }
  .page-hero-content, .home-hero-content { min-height: auto; padding-block: 1rem; }
  .content-grid, .venue-overview { grid-template-columns: minmax(0,1fr); }
  .map-shell { display: none; }
  .icon-card, .address-card { break-inside: avoid; }
  .help-panel, .notice, .address-card { background: #fff; border: 1px solid #888; color: #000; }
  .help-panel h2, .help-panel p, .help-panel a { color: #000; }
}
/* v5: real presentation photography, hotel booking and a focused city guide. */
/* A single shared stylesheet governs every page. No remote font dependencies. */
.small-text { font-size: .875rem; color: var(--muted); line-height: 1.65; }
.help-panel .text-link { color: #fff; }
.help-panel hr { border: 0; border-top: 1px solid #54749a; margin-block: 1.6rem; }
.page-hero > picture img { object-position: center 44%; }
.venue-gallery { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; }
.venue-gallery figure { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.venue-gallery img { width: 100%; aspect-ratio: 1.45; object-fit: cover; }
.venue-gallery figcaption { font-weight: 650; }
.layout-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.1fr); gap: 3rem; align-items: center; }
.venue-plan { border: 1px solid var(--line); background: #fff; padding: 1rem; border-radius: var(--radius); }
.venue-plan img { width: 100%; height: auto; }
.venue-plan figcaption { padding: .75rem 0 0; }
.layout-facts { display: grid; gap: .75rem; margin-block: 1.5rem; }
.layout-facts > div { padding-block: .85rem; border-block-end: 1px solid var(--line); }
.layout-facts dt { font-size: .875rem; color: var(--muted); }
.layout-facts dd { font-size: 1.15rem; font-weight: 700; margin-top: .25rem; }
.booking-card { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr); gap: 2.25rem; align-items: center; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); padding: 2.3rem; box-shadow: var(--shadow); }
.booking-person { display: flex; align-items: center; gap: 1.5rem; }
.booking-person > picture { flex: 0 0 116px; }
.booking-person img { width: 116px; height: auto; border-radius: .65rem; }
.booking-person h2 { font-size: clamp(1.6rem,1.3rem + .7vw,2.1rem); }
.booking-person p { color: var(--muted); }
.booking-person .eyebrow { color: var(--red-dark); }
.booking-copy { border-left: 1px solid var(--line); padding-left: 2.25rem; }
.booking-email { display: inline-block; min-height: 44px; padding-block: .5rem; font-weight: 750; font-size: 1.05rem; overflow-wrap: anywhere; }
.booking-copy .small-text { margin-top: 1.1rem; }
.hotel-feature { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); margin-top: 2rem; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.1fr); }
.hotel-gallery { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-content: start; gap: .35rem; background: var(--soft); }
.hotel-photo-main { grid-column: 1 / -1; }
.hotel-gallery picture { display: block; height: 100%; }
.hotel-gallery img { width: 100%; height: 100%; aspect-ratio: 1.5; object-fit: cover; }
.hotel-photo-main img { aspect-ratio: 1.7; object-position: center; }
.hotel-details { padding: 2rem; min-width: 0; }
.hotel-details h3 { font-size: clamp(1.6rem,1.3rem + .7vw,2rem); margin-top: 1.15rem; }
.badge { display: inline-flex; padding: .35rem .65rem; color: var(--red-dark); background: #fff0f2; border: 1px solid #f3c5cc; border-radius: .35rem; font-size: .75rem; font-weight: 800; letter-spacing: .04em; line-height: 1.5; }
.walk-time { display: flex; align-items: center; gap: .6rem; font-weight: 700; color: var(--blue); }
.hotel-benefits { display: grid; gap: .6rem; font-size: .875rem; margin-block: 1.4rem; }
.hotel-benefits > span { display: flex; align-items: center; gap: .6rem; }
.hotel-benefits .icon { width: 1.1rem; height: 1.1rem; }
.airport-grid.two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.airport-stats { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.7fr); gap: 1.25rem; padding-block: 1.5rem; margin-top: auto; }
.airport-stats > div { border-left: 3px solid var(--line); padding-left: 1rem; }
.airport-stats strong { display: block; font-size: 1.4rem; line-height: 1.3; margin-bottom: .5rem; }
.airport-stats span { color: var(--muted); font-size: .875rem; }
.airport-card .actions { margin-top: .5rem; }
.airport-card .text-link { border: 0; }
.attraction-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2rem; }
.attraction-card { display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.attraction-photo { position: relative; background: #e5edf5; }
.attraction-photo > img { width: 100%; aspect-ratio: 1.6; object-fit: cover; height: auto; min-height: 180px; }
.attraction-photo figcaption { background: #fff; padding: .35rem 1rem; font-size: .75rem; border-bottom: 1px solid var(--line); }
.attraction-photo figcaption a { display: inline-block; min-height: 30px; padding-block: .2rem; }
.attraction-body { display: flex; flex-direction: column; flex: 1; padding: 1.7rem; }
.attraction-body h3 { font-size: clamp(1.45rem,1.2rem + .5vw,1.8rem); margin-bottom: .45rem; }
.attraction-meta { display: flex; align-items: center; gap: .85rem; margin-bottom: 1rem; }
.place-number { color: var(--navy); font-size: 1.5rem; line-height: 1; font-weight: 850; letter-spacing: -.04em; }
.attraction-meta .eyebrow { font-size: .7rem; margin: 0; }
.local-name { font-size: .875rem; color: var(--muted); margin-bottom: 1rem; }
.why-visit { font-size: 1.1rem; font-weight: 750; color: var(--navy); line-height: 1.5; }
.attraction-body > p:not(.why-visit) { color: var(--muted); }
.visit-tip { display: flex; gap: .75rem; margin-top: auto; padding: 1rem; background: var(--soft); border-radius: .5rem; }
.visit-tip .icon { width: 1.15rem; height: 1.15rem; margin-top: .2rem; color: var(--blue); }
.visit-tip p { font-size: .875rem; color: var(--muted); }
.visit-tip strong { color: var(--navy); }
.attraction-body .actions { justify-content: space-between; gap: .4rem 1rem; margin-top: 1rem; }
.photo-unavailable { color: var(--navy); padding: 1.5rem; }
.photo-fallback { position: absolute; left: 1rem; top: 30%; max-width: calc(100% - 2rem); background: #fff; padding: .8rem 1rem; font-size: .875rem; border: 1px solid var(--line); }
.resource-items { display: grid; gap: 1.3rem; }
.resource-items article { border: 1px solid var(--line); border-radius: .65rem; background: #fff; padding: 1.5rem; }
.host-feature { display: flex; gap: 2rem; align-items: center; padding: 2rem; border: 1px solid var(--line); border-radius: var(--radius); }
.host-feature > img { width: 150px; height: auto; flex-shrink: 0; }
.organisation-logos { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.5rem; margin-top: 2rem; }
.organisation-logos figure, .support-grid figure { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 1.2rem; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.organisation-logos img { width: 135px; height: 135px; object-fit: contain; }
.support-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.3rem; }
.support-grid img { width: 100%; height: 110px; object-fit: contain; }
.support-grid figcaption { font-weight: 650; }
.credits-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.credit-item { padding: 1.4rem; border: 1px solid var(--line); border-radius: .65rem; font-size: .875rem; }
.credit-item a { overflow-wrap: anywhere; }
.layout-grid > *, .booking-card > *, .booking-person > *, .hotel-feature > *, .airport-stats > *, .attraction-grid > *, .host-feature > * { min-width: 0; }
@media (max-width: 71.999rem) {
  .booking-card { grid-template-columns: minmax(0,1fr); }
  .booking-copy { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); padding-top: 1.5rem; }
  .hotel-feature { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .hotel-details { padding: 1.5rem; }
}
@media (max-width: 52rem) {
  .layout-grid, .hotel-feature, .airport-grid.two { grid-template-columns: minmax(0,1fr); }
  .venue-gallery { grid-template-columns: minmax(0,1fr); }
  .venue-gallery img { aspect-ratio: 1.9; }
  .hotel-gallery { grid-template-columns: minmax(0,1.3fr) minmax(0,1fr); }
  .hotel-photo-main { grid-column: 1; grid-row: 1 / span 2; }
  .hotel-photo-main img { aspect-ratio: auto; height: 100%; object-fit: cover; }
  .attraction-grid { gap: 1.25rem; }
  .attraction-body { padding: 1.25rem; }
  .attraction-body .actions { align-items: flex-start; flex-direction: column; }
  .support-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 40rem) {
  .attraction-grid { grid-template-columns: minmax(0,1fr); }
  .attraction-body .actions { flex-direction: row; align-items: center; }
  .credits-grid { grid-template-columns: minmax(0,1fr); }
  .booking-card { padding: 1.5rem; gap: 1.5rem; }
  .booking-person { gap: 1rem; }
  .booking-person > picture { flex-basis: 80px; }
  .booking-person img { width: 80px; }
  .booking-person h2 { font-size: 1.45rem; }
  .host-feature { flex-direction: column; align-items: flex-start; padding: 1.5rem; }
  .organisation-logos { grid-template-columns: minmax(0,1fr); }
  .support-grid { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 24rem) {
  .airport-stats { grid-template-columns: minmax(0,1fr); }
  .booking-person { align-items: flex-start; }
}
@media print {
  .attraction-card, .hotel-feature, .booking-card, .icon-card { break-inside: avoid; }
  .attraction-grid, .hotel-feature, .layout-grid { grid-template-columns: 1fr; }
  .booking-copy { border: 0; padding: 0; }
}

/* v6: review changes and a first-party, click-to-load promo player. */
.programme-with-video { grid-template-columns: minmax(0,.9fr) minmax(0,1.15fr); }
.promo-module { min-width: 0; }
.promo-heading { display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: baseline; margin-bottom: 1rem; }
.promo-heading p, .promo-heading h3 { margin: 0; }
.promo-heading h3 { font-size: 1.35rem; }
.promo-stage { aspect-ratio: 16 / 9; position: relative; isolation: isolate; background: var(--deep); overflow: hidden; border: 1px solid #aebed2; border-radius: var(--radius); box-shadow: var(--shadow); }
.promo-cover { display: block; width: 100%; height: 100%; min-height: 160px; padding: 0; border: 0; position: relative; color: #fff; background: var(--deep); }
.promo-cover > img { width: 100%; height: 100%; object-fit: cover; }
.promo-cover::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg,rgba(4,28,60,.95),rgba(4,28,60,.10) 65%); }
.promo-play-icon { position: absolute; z-index: 1; left: 50%; top: 44%; transform: translate(-50%,-50%); display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; border: 2px solid #fff; background: rgba(4,28,60,.85); transition: background-color .18s; }
.promo-play-icon .icon { width: 28px; height: 28px; fill: #fff; stroke: none; margin-left: -3px; }
.promo-cover:hover .promo-play-icon { background: var(--red-dark); }
.promo-cover:focus-visible { outline: 4px solid #fff; outline-offset: -7px; box-shadow: inset 0 0 0 3px var(--blue); }
.promo-play-label { position: absolute; z-index: 1; left: 1rem; right: 1rem; bottom: 1.15rem; font-weight: 750; font-size: 1rem; line-height: 1.4; text-shadow: 0 1px 3px #041c3c; }
.promo-stage video { display: block; width: 100%; height: 100%; object-fit: contain; background: #041c3c; }
.promo-stage video:focus-visible { outline-offset: -5px; outline-color: #fff; box-shadow: inset 0 0 0 3px var(--blue); }
.promo-status { font-size: .875rem; color: var(--muted); line-height: 1.55; margin-top: .7rem; }
.promo-status:empty { margin-top: 0; }
[data-promo-player][data-state="error"] .promo-status { color: var(--red-dark); }
.hotel-plus-identity { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 3rem 1.5rem; background: #eaf1fa; color: var(--navy); min-height: 340px; }
.hotel-plus-symbol { display: grid; place-items: center; width: 92px; height: 92px; border: 1px solid #bbcde3; border-radius: 24px; margin-bottom: 1.5rem; background: #fff; }
.hotel-plus-symbol > .icon { width: 48px; height: 48px; }
.hotel-plus-name { font-size: clamp(2rem,1.6rem + 1vw,3rem); line-height: 1.15; letter-spacing: .04em; margin: .3rem 0 .75rem; }
.hotel-plus-name strong { color: var(--red-dark); }
.hotel-plus-stars { font-size: 1.4rem; letter-spacing: .15em; color: var(--navy); }
.accommodation-help { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 1.5rem; padding: clamp(1.5rem,3vw,2.5rem); border: 1px solid var(--line); border-left: 4px solid var(--blue); background: var(--soft); border-radius: var(--radius); }
.accommodation-help h2 { font-size: clamp(1.6rem,1.2rem + 1vw,2rem); }
.patronage { display: flex; gap: 1.25rem; padding: clamp(1.5rem,3vw,2.5rem); background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); margin-bottom: 2rem; }
.patronage > .icon-box { flex-shrink: 0; }
.patronage-copy { font-size: clamp(1.05rem,.95rem + .3vw,1.3rem); line-height: 1.7; color: var(--navy); max-width: 900px; }
.home-patronage { max-width: 960px; padding-top: 1.5rem; margin-top: 1.5rem; border-top: 1px solid var(--line); font-size: .95rem; color: var(--muted); }
.destination-section { padding-top: 0; }
.destination-partner { display: grid; grid-template-columns: minmax(0,.7fr) minmax(0,1.3fr); gap: 2.5rem; align-items: center; padding: clamp(1.5rem,3vw,2.5rem); border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); background: var(--soft); }
.destination-name h2 { color: var(--red-dark); font-size: clamp(1.8rem,1.4rem + 1vw,2.7rem); letter-spacing: -.02em; }
.destination-name > .icon-box { float: left; margin-right: 1.25rem; }
.destination-partner .lead { color: var(--navy); font-weight: 750; }
.ticket-announcement { padding: clamp(2rem,5vw,4rem) clamp(1.25rem,4vw,3rem); max-width: 900px; margin: 0 auto; border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); text-align: center; background: var(--soft); }
.ticket-announcement > .icon-box { margin: 0 auto 1.5rem; width: 64px; height: 64px; }
.ticket-announcement > .icon-box > .icon { width: 32px; height: 32px; }
.ticket-announcement .actions { justify-content: center; }
@media (max-width: 52rem) {
 .programme-with-video, .destination-partner { grid-template-columns: minmax(0,1fr); }
 .destination-partner { gap: 1.25rem; }
 .hotel-plus-identity { min-height: 250px; padding: 2rem 1.5rem; }
}
@media (max-width: 40rem) {
 .accommodation-help { grid-template-columns: minmax(0,1fr); gap: .75rem; }
 .patronage { flex-direction: column; gap: .5rem; }
 .promo-play-icon { width: 54px; height: 54px; top: 40%; }
 .promo-play-label { bottom: .85rem; font-size: .9rem; }
 .promo-cover { min-height: 0; }
 .ticket-announcement .actions { flex-direction: column; align-items: stretch; }
}
@media (prefers-reduced-motion: reduce) { .promo-play-icon { transition: none; } }
@media (forced-colors: active) {
 .promo-cover, .promo-play-icon { border: 2px solid ButtonText; }
 .promo-play-icon, .promo-play-label { color: ButtonText; background: ButtonFace; }
 .promo-play-icon .icon { fill: ButtonText; }
 .promo-cover::after { display: none; }
}
@media print { .promo-stage, .promo-status { display: none; } }
/* A compact poster has one clear Play control. Its full name remains available
   to assistive technology; text zoom must not overlap the icon and label. */
@media (max-width: 40rem) {
 .promo-play-icon { top: 50%; }
 .promo-play-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
}


/* v15: leadership quotes, patronage stack, footer WUKF link and spacing polish. */
.help-panel .help-secondary-link { display: inline-flex; margin-top: 1.25rem; }
.footer-wukf { margin-top: 1.35rem; }
.footer-wukf .footer-title { margin-bottom: .45rem; }
.patronage-secondary { margin-top: -1rem; }
.welcome-quotes { background: linear-gradient(180deg,#fff 0%,#f5f8fc 100%); }
.welcome-heading { max-width: 760px; }
.quote-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.35rem; align-items: stretch; }
.quote-card { position: relative; display: flex; flex-direction: column; min-width: 0; padding: clamp(1.35rem,2.2vw,2rem); border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.quote-card::before { content: '\201C'; position: absolute; right: 1rem; top: .2rem; color: #d8e4f2; font-family: Georgia,serif; font-size: 5.5rem; line-height: 1; pointer-events: none; }
.quote-person { display: grid; grid-template-columns: 84px minmax(0,1fr); gap: 1rem; align-items: center; position: relative; z-index: 1; margin-bottom: 1.15rem; }
.quote-person picture, .quote-placeholder { width: 84px; height: 84px; border-radius: 50%; overflow: hidden; border: 3px solid #fff; box-shadow: 0 0 0 1px var(--line); background: var(--soft); }
.quote-person img { width: 100%; height: 100%; object-fit: cover; }
.quote-placeholder { display: grid; place-items: center; background: linear-gradient(145deg,var(--navy),var(--blue)); color: #fff; font-weight: 850; font-size: 1.4rem; letter-spacing: .08em; }
.quote-person h3 { margin: 0 0 .25rem; font-size: 1.08rem; color: var(--navy); }
.quote-person p { margin: 0; color: var(--muted); font-size: .9rem; line-height: 1.4; }
.quote-card blockquote { margin: 0; padding: 0; border: 0; position: relative; z-index: 1; }
.quote-card blockquote p { margin: 0; color: #263b55; font-size: 1rem; line-height: 1.72; }
@media (max-width: 64rem) { .quote-grid { grid-template-columns: minmax(0,1fr); } .quote-card { max-width: 850px; } }
@media (max-width: 40rem) { .quote-person { grid-template-columns: 70px minmax(0,1fr); } .quote-person picture, .quote-placeholder { width: 70px; height: 70px; } .quote-card::before { font-size: 4.2rem; } .patronage-secondary { margin-top: -.75rem; } }


/* FINAL: systematic separation of inline buttons and adjacent explanatory links.
   In particular, "Competition enquiry" and "Find your hotel" in the
   Travelling with a team? card never sit on the same crowded baseline. */
.help-panel > p + .btn { margin-top: .85rem; }
.help-panel > .btn + .text-link,
.help-panel > .btn + .help-email {
  display: flex;
  width: fit-content;
  max-width: 100%;
  align-items: center;
  margin-top: 1.2rem;
}
.help-panel > .btn + .help-email { display: block; }
.help-panel > .help-secondary-link { display: flex; width: fit-content; max-width: 100%; margin-top: 1.25rem; }
.map-placeholder > .btn + .map-privacy { margin-top: .95rem; }
@media (max-width: 40rem) {
  .help-panel > .btn { width: 100%; }
  .help-panel > .btn + .text-link { width: fit-content; }
}
