:root {
  --ciarb-white: #FFFFFF;
  --ciarb-neutral: #F7F3F0;
  --ciarb-hero-red: #BE0000;
  --ciarb-deep-red: #77000C;
  --ciarb-vibrant-red: #FF1824;
  --ciarb-muted-red: #DE7165;
  --ciarb-pale-red: #F7E7E5;
  --ciarb-orange: #F55200;
  --ciarb-yellow: #FE9C25;
  --darbd-burgundy: #3a0205;
  --darbd-burgundy-2: #6f0008;
  --darbd-burgundy-3: #99020e;
  --darbd-orange: #f55200;
  --darbd-orange-soft: #ff8a34;
  --ciarb-black: #000000;
  --ciarb-black-90: #3C3C3B;
  --ciarb-line: #e7ddd8;
  --motion-duration-fast: 180ms;
  --motion-duration-standard: 340ms;
  --motion-duration-slow: 620ms;
  --motion-duration-hero: 720ms;
  --motion-ease-standard: cubic-bezier(.22, 1, .36, 1);
  --motion-ease-emphasized: cubic-bezier(.16, 1, .3, 1);
  --motion-distance-small: 10px;
  --motion-distance-medium: 22px;
  --motion-stagger-step: 72ms;
  --motion-fast: var(--motion-duration-fast);
  --motion-standard: var(--motion-duration-standard);
  --motion-slow: var(--motion-duration-slow);
  --motion-hero: var(--motion-duration-hero);
  --ease-standard: var(--motion-ease-standard);
  --ease-emphasized: var(--motion-ease-emphasized);
  --surface-page: #fbf8f6;
  --surface-card: rgba(255, 255, 255, .94);
  --surface-raised: #ffffff;
  --surface-warm: #f5eee9;
  --glass-light: rgba(255, 255, 255, .74);
  --glass-deep: rgba(65, 0, 8, .62);
  --glass-red: rgba(119, 0, 12, .68);
  --glass-border-light: rgba(255, 255, 255, .42);
  --glass-border-deep: rgba(255, 255, 255, .18);
  --line-soft: rgba(119, 0, 12, .14);
  --line-bright: rgba(245, 82, 0, .42);
  --shadow-soft: 0 18px 48px rgba(58, 2, 5, .08);
  --shadow-medium: 0 26px 70px rgba(58, 2, 5, .13);
  --shadow-deep: 0 34px 90px rgba(28, 0, 4, .34);
  --radius-xs: .35rem;
  --radius-sm: .55rem;
  --radius-md: .85rem;
  --radius-lg: 1.15rem;
  --radius-xl: 1.5rem;
  --header-height: 82px;
  --bs-primary: var(--ciarb-hero-red);
  --bs-primary-rgb: 190, 0, 0;
  --bs-body-bg: var(--ciarb-white);
  --bs-body-color: var(--ciarb-black-90);
  --bs-link-color: var(--ciarb-hero-red);
  --bs-link-hover-color: var(--ciarb-deep-red);
  /* Bootstrap 5.3 resolves anchor colour as
     `rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1))`, so the two
     variables above are read by nothing and every plain link fell back to
     Bootstrap's stock #0d6efd / #0a58ca. It was most visible on Contact,
     where every email address and the phone number rendered blue against the
     burgundy palette, and on all four form pages. Same failure mode as the
     button press state: overriding a variable Bootstrap does not consume.
     Values track --ciarb-hero-red (#be0000) and --ciarb-deep-red (#76000d);
     the channel triple is spelled out because that is what Bootstrap needs,
     matching the existing --bs-primary / --bs-primary-rgb pairing above. */
  --bs-link-color-rgb: 190, 0, 0;
  --bs-link-hover-color-rgb: 118, 0, 13;
  --bs-border-radius: .35rem;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  max-width: 100%;
  overflow-x: hidden;
}

body {
  max-width: 100%;
  overflow-x: hidden;
  color: var(--ciarb-black-90);
  font-family: "Poppins", Verdana, sans-serif;
  background:
    linear-gradient(rgba(255, 255, 255, .94), rgba(255, 255, 255, .94)),
    url("../img/brand/darbd-geometric-background.png") top right / min(60rem, 100vw) auto no-repeat,
    var(--ciarb-white);
}

[dir="rtl"] body {
  font-family: "Cairo", "Poppins", Verdana, sans-serif;
  line-height: 1.8;
}

html[lang="ar"],
html[lang="ar"] body,
html[lang="ar"] button,
html[lang="ar"] input,
html[lang="ar"] select,
html[lang="ar"] textarea {
  font-family: "Cairo", "Poppins", Verdana, sans-serif;
}

a {
  text-underline-offset: .18em;
  transition: color var(--motion-fast) var(--ease-standard), text-decoration-color var(--motion-fast) var(--ease-standard);
}

.site-header {
  background: rgba(255, 255, 255, .97);
  border-bottom: 1px solid var(--ciarb-line);
  backdrop-filter: blur(10px);
  transition: background-color var(--motion-standard) var(--ease-standard), border-color var(--motion-standard) var(--ease-standard), transform var(--motion-standard) var(--ease-standard);
}

.site-header.is-condensed {
  background: rgba(255, 255, 255, .985);
  border-bottom-color: rgba(119, 0, 12, .16);
}

.site-header.is-scrolled {
  background: rgba(255, 255, 255, .985);
}

/* The site header legitimately spans the full viewport, and the homepage hero
   carries its own explicit container widths (see customer-homepage.css). The
   inner-page hero must NOT be in this list: releasing it from the container's
   max-width pushed every inner-page H1 off the site content spine — measured
   -211px at 1920 (-226px on /speakers/) against the body container beneath it,
   on all 20 inner routes in both languages. The mobile `.page-hero .container`
   rules inside @media (max-width: 767.98px) are unaffected and still apply. */
.site-header .container,
.home-hero .container {
  max-width: 100%;
}

.navbar {
  padding-block: 1rem;
  transition: padding var(--motion-standard) var(--ease-standard);
}

.site-header.is-condensed .navbar {
  padding-block: .62rem;
}

.navbar-brand {
  min-width: 0;
}

.brand-logo {
  width: auto;
  height: 62px;
  max-width: 162px;
  flex: 0 0 auto;
  object-fit: contain;
  transition: height var(--motion-standard) var(--ease-standard), max-width var(--motion-standard) var(--ease-standard);
}

.site-header.is-condensed .brand-logo {
  height: 54px;
  max-width: 145px;
}

.brand-event {
  min-width: 0;
}

.brand-title {
  display: block;
  color: var(--ciarb-deep-red);
  font-weight: 600;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.brand-subtitle {
  display: block;
  color: var(--ciarb-black-90);
  font-size: .76rem;
}

@media (min-width: 1200px) {
  .brand-event {
    display: none;
  }
}

.footer-logo {
  width: auto;
  height: 54px;
  max-width: 150px;
  padding: .35rem .5rem;
  object-fit: contain;
  background: var(--ciarb-white);
}

.nav-link {
  position: relative;
  color: var(--ciarb-black-90);
  font-size: .84rem;
  font-weight: 500;
  white-space: nowrap;
  transition: color var(--motion-fast) var(--ease-standard);
}

.nav-link::after {
  position: absolute;
  inset-inline: .5rem;
  inset-block-end: .25rem;
  height: 2px;
  content: "";
  background: var(--ciarb-hero-red);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--motion-standard) var(--ease-emphasized);
}

.nav-link:hover::after,
.nav-link:focus-visible::after,
.nav-link.active::after,
.nav-button[aria-expanded="true"]::after {
  transform: scaleX(1);
}

.nav-link:hover,
.nav-link:focus,
.nav-link.active,
.dropdown-item.active {
  color: var(--ciarb-hero-red);
}

.nav-button {
  appearance: none;
  background: transparent;
  border: 0;
}

.navbar-nav {
  align-items: center;
  gap: .35rem;
}

.dropdown-menu {
  --bs-dropdown-link-active-bg: var(--ciarb-pale-red);
  --bs-dropdown-link-active-color: var(--ciarb-deep-red);
  min-width: 14rem;
  padding: .45rem;
  border-color: var(--ciarb-line);
  border-radius: .25rem;
  box-shadow: 0 20px 50px rgba(60, 60, 59, .08);
  opacity: 0;
  transform: translateY(.4rem);
  transition: opacity var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard);
}

.dropdown-menu.show {
  opacity: 1;
  transform: translateY(0);
}

.dropdown-item {
  border-radius: .2rem;
  color: var(--ciarb-black-90);
  font-size: .86rem;
  font-weight: 500;
}

[dir="rtl"] .dropdown-menu {
  text-align: right;
}

.header-actions {
  min-width: max-content;
}

.btn {
  min-height: 42px;
  border-radius: .28rem;
  font-weight: 600;
  position: relative;
  overflow: hidden;
  transition: transform var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.btn:hover,
.btn:focus-visible {
  transform: translateY(-1px);
}

.btn:active {
  transform: translateY(0);
}

.btn-primary {
  --bs-btn-bg: var(--ciarb-hero-red);
  --bs-btn-border-color: var(--ciarb-hero-red);
  --bs-btn-hover-bg: var(--ciarb-deep-red);
  --bs-btn-hover-border-color: var(--ciarb-deep-red);
  --bs-btn-focus-shadow-rgb: 190, 0, 0;
}

.btn-outline-primary {
  --bs-btn-color: var(--ciarb-deep-red);
  --bs-btn-border-color: var(--ciarb-deep-red);
  --bs-btn-hover-bg: var(--ciarb-deep-red);
  --bs-btn-hover-border-color: var(--ciarb-deep-red);
}

.btn-outline-primary:disabled,
.btn-outline-primary.disabled {
  color: #8a7f7b;
  background: var(--ciarb-neutral);
  border-color: #d8ceca;
  opacity: 1;
}

.breadcrumb-wrap {
  padding-block: .7rem;
  background: var(--ciarb-neutral);
  border-bottom: 1px solid var(--ciarb-line);
}

.breadcrumb {
  font-size: .82rem;
}

.home-hero {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  min-height: clamp(460px, 58vh, 600px);
  padding-block: clamp(2.75rem, 4.2vw, 4rem);
  color: var(--ciarb-white);
  background:
    radial-gradient(circle at 78% 30%, rgba(245, 82, 0, .17), transparent 24rem),
    radial-gradient(circle at 20% 110%, rgba(190, 0, 0, .55), transparent 34rem),
    linear-gradient(135deg, var(--darbd-burgundy) 0%, var(--darbd-burgundy-2) 54%, #260003 100%);
  border-bottom: 1px solid rgba(245, 82, 0, .38);
}

.home-hero::before {
  position: absolute;
  inset: 0;
  width: auto;
  content: "";
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size: 42px 42px;
  opacity: .42;
  mix-blend-mode: screen;
  animation: textureDrift 18s linear infinite;
  pointer-events: none;
}

.hero-texture {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 40% 20%, rgba(255,255,255,.06), transparent 1px),
    radial-gradient(circle at 80% 60%, rgba(255,255,255,.045), transparent 1px),
    radial-gradient(circle at 20% 78%, rgba(245,82,0,.08), transparent 1px);
  background-size: 9px 9px, 13px 13px, 17px 17px;
  opacity: .45;
  pointer-events: none;
}

.hero-svg {
  position: absolute;
  z-index: 1;
  width: min(42rem, 48vw);
  fill: none;
  stroke: rgba(255, 24, 36, .34);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  pointer-events: none;
  transform: translate3d(var(--motion-x, 0), var(--motion-y, 0), 0);
}

.hero-svg path,
.hero-svg circle,
.hero-svg rect {
  vector-effect: non-scaling-stroke;
  stroke-dasharray: 900;
  stroke-dashoffset: 900;
  animation: lineDraw 720ms var(--ease-emphasized) forwards, ambientStroke 5.8s var(--ease-standard) 820ms infinite alternate;
}

.hero-svg .accent {
  stroke: rgba(245, 82, 0, .76);
}

.hero-svg-top {
  inset-block-start: 4rem;
  inset-inline-end: -5rem;
}

.hero-svg-bottom {
  inset-block-end: -1rem;
  inset-inline-start: -4rem;
  width: min(48rem, 62vw);
  stroke: rgba(255, 24, 36, .28);
}

.home-hero-grid {
  display: grid;
  position: relative;
  z-index: 2;
  grid-template-columns: minmax(0, 1fr) minmax(280px, .58fr);
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
  min-height: 0;
  width: 100%;
}

.home-hero-copy {
  position: relative;
  z-index: 2;
  max-width: 730px;
}

.page-hero {
  overflow: hidden;
  position: relative;
  padding-block: clamp(1rem, 2.2vw, 1.65rem) clamp(1.25rem, 3vw, 2.45rem);
  color: var(--ciarb-black-90);
  background:
    linear-gradient(180deg, rgba(247, 243, 240, .72), rgba(255,255,255,.95)),
    var(--ciarb-neutral);
  border-bottom: 1px solid var(--ciarb-line);
}

.internal-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 390px);
  gap: clamp(1.5rem, 4.5vw, 4rem);
  align-items: end;
  min-height: clamp(300px, 33vw, 440px);
  padding: clamp(1.7rem, 4.2vw, 3.7rem);
  overflow: hidden;
  color: var(--ciarb-white);
  background:
    radial-gradient(circle at 82% 22%, rgba(245, 82, 0, .22), transparent 18rem),
    radial-gradient(circle at 18% 95%, rgba(255, 24, 36, .22), transparent 20rem),
    linear-gradient(135deg, #310004 0%, var(--darbd-burgundy-2) 58%, #160002 100%);
  border: 1px solid rgba(119, 0, 12, .22);
  border-radius: .55rem;
  box-shadow: 0 34px 80px rgba(60, 60, 59, .12);
}

.internal-hero::before {
  position: absolute;
  inset: 0;
  content: "";
  background:
    linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.036) 1px, transparent 1px);
  background-size: 38px 38px;
  opacity: .55;
  animation: textureDrift 12s linear infinite;
  pointer-events: none;
}

.internal-hero::after {
  position: absolute;
  inset-block-end: 0;
  inset-inline-start: clamp(1.5rem, 5vw, 4rem);
  width: min(26rem, 42vw);
  height: 4px;
  content: "";
  background: linear-gradient(90deg, var(--darbd-orange), rgba(255,255,255,.18));
  transform-origin: left;
  animation: lineScale 620ms var(--ease-emphasized) 90ms both;
  pointer-events: none;
}

[dir="rtl"] .internal-hero::after {
  transform-origin: right;
}

.internal-hero-bg {
  position: absolute;
  inset: -18% -10%;
  background: url("../img/brand/darbd-geometric-background.png") center / min(48rem, 86vw) auto no-repeat;
  opacity: .18;
  filter: brightness(1.35) saturate(1.35);
  mix-blend-mode: screen;
  transform: translate3d(var(--motion-x, 0), var(--motion-y, 0), 0);
  pointer-events: none;
}

.internal-hero-lines {
  position: absolute;
  inset-block: auto -2rem;
  inset-inline-end: -5rem;
  width: min(54rem, 60vw);
  fill: none;
  stroke: rgba(255,255,255,.24);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transform: translate3d(var(--motion-x, 0), var(--motion-y, 0), 0);
  pointer-events: none;
}

.internal-hero-lines path,
.internal-hero-lines circle,
.internal-hero-lines rect {
  vector-effect: non-scaling-stroke;
  stroke-dasharray: 920;
  stroke-dashoffset: 920;
  animation: lineDraw 640ms var(--ease-emphasized) 80ms forwards, ambientStroke 5.2s var(--ease-standard) 760ms infinite alternate;
}

.internal-hero-copy,
.internal-hero-panel {
  position: relative;
  z-index: 2;
}

.internal-hero-copy {
  max-width: 850px;
}

.section-index {
  display: inline-flex;
  margin-block-end: .85rem;
  color: var(--darbd-orange-soft);
  font-size: clamp(2.25rem, 4vw, 4rem);
  font-weight: 700;
  line-height: .82;
  opacity: .92;
}

.page-hero h1 {
  max-width: 960px;
  color: var(--ciarb-white);
  font-size: clamp(2.4rem, 4.2vw, 4.4rem);
  line-height: 1;
  letter-spacing: 0;
}

.page-hero .lead {
  color: rgba(255,255,255,.84);
  font-size: clamp(1.03rem, 1.5vw, 1.28rem);
  line-height: 1.72;
}

.internal-hero-panel {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: clamp(1.1rem, 2.4vw, 1.55rem);
  background: linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,.055));
  border: 1px solid rgba(255,255,255,.2);
  border-block-start: 4px solid var(--darbd-orange);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
  backdrop-filter: blur(9px);
}

.internal-hero-panel p {
  margin-block-end: 1rem;
  color: var(--ciarb-white);
  font-size: .86rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

[dir="rtl"] .internal-hero-panel p {
  letter-spacing: 0;
}

.hero-chip-list {
  display: grid;
  gap: .55rem;
}

.hero-chip-list span {
  display: block;
  padding-block: .58rem;
  color: rgba(255,255,255,.82);
  border-block-start: 1px solid rgba(255,255,255,.17);
  font-weight: 500;
}

.internal-hero-programme,
.internal-hero-agenda,
.internal-hero-agenda-workshop {
  background:
    radial-gradient(circle at 80% 18%, rgba(254, 156, 37, .24), transparent 18rem),
    linear-gradient(135deg, #250003 0%, #77000c 50%, #210003 100%);
}

.internal-hero-people,
.internal-hero-speakers {
  background:
    radial-gradient(circle at 20% 20%, rgba(255,255,255,.13), transparent 16rem),
    radial-gradient(circle at 82% 28%, rgba(245,82,0,.26), transparent 17rem),
    linear-gradient(135deg, #2c0004, #680008 56%, #170002);
}

.internal-hero-registration,
.internal-hero-application-sponsorship,
.internal-hero-application-workshop {
  background:
    radial-gradient(circle at 84% 18%, rgba(245,82,0,.28), transparent 17rem),
    linear-gradient(135deg, #340004, #77000c 58%, #2b0003);
}

.internal-hero-legal,
.internal-hero-contact,
.internal-hero-institutional,
.internal-hero-sponsors,
.internal-hero-pathways {
  background:
    radial-gradient(circle at 88% 24%, rgba(255,255,255,.14), transparent 15rem),
    linear-gradient(135deg, #3a0205, #620008 58%, #220003);
}

.eyebrow,
.kicker {
  color: var(--ciarb-hero-red);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.hero-label {
  margin-bottom: .85rem;
  color: var(--darbd-orange);
}

[dir="rtl"] .eyebrow,
[dir="rtl"] .kicker {
  letter-spacing: 0;
}

.home-title {
  max-width: 760px;
  margin-block: .5rem .9rem;
  color: var(--ciarb-white);
  font-size: clamp(2.5rem, 4.4vw, 4.5rem);
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
  text-shadow: 0 14px 36px rgba(0,0,0,.22);
}

.home-title span {
  display: block;
}

.home-title span:first-child {
  white-space: nowrap;
}

.home-title span:last-child {
  color: var(--darbd-orange);
  font-weight: 700;
}

.hero-copy,
.lead {
  max-width: 760px;
  color: #524947;
  font-weight: 400;
  overflow-wrap: anywhere;
}

.hero-copy {
  max-width: 670px;
  margin-block-end: 1.45rem;
  color: rgba(255,255,255,.82);
  font-size: clamp(1rem, 1.15vw, 1.08rem);
  line-height: 1.75;
}

.hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem 1.1rem;
  max-width: 650px;
  margin-block-start: 1.1rem;
  padding-block-start: .85rem;
  border-block-start: 2px solid rgba(245, 82, 0, .88);
}

.hero-facts div + div {
  padding-inline-start: 1.1rem;
  border-inline-start: 1px solid rgba(255, 255, 255, .26);
}

.hero-facts span {
  color: var(--ciarb-white);
  font-size: clamp(1.05rem, 1.6vw, 1.35rem);
  font-weight: 650;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .85rem;
  margin-block-start: 1.35rem;
}

.home-hero .btn-primary {
  --bs-btn-bg: var(--darbd-orange);
  --bs-btn-border-color: var(--darbd-orange);
  --bs-btn-hover-bg: #ff6a1a;
  --bs-btn-hover-border-color: #ff6a1a;
  --bs-btn-color: var(--ciarb-white);
}

.home-hero .btn-outline-primary {
  --bs-btn-color: var(--ciarb-white);
  --bs-btn-border-color: rgba(255,255,255,.7);
  --bs-btn-hover-color: var(--darbd-burgundy);
  --bs-btn-hover-bg: var(--ciarb-white);
  --bs-btn-hover-border-color: var(--ciarb-white);
}

.hero-visual {
  position: relative;
  min-height: clamp(240px, 28vw, 380px);
  transform: translate3d(var(--motion-x, 0), var(--motion-y, 0), 0);
  transition: transform var(--motion-slow) var(--ease-emphasized);
  pointer-events: none;
}

.hero-geometry {
  position: absolute;
  inset: -2% -16% 0 -4%;
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  transform: scale(1.18);
  transform-origin: center;
  opacity: .58;
  filter: brightness(1.25) saturate(1.4) drop-shadow(0 28px 40px rgba(0,0,0,.22));
  mix-blend-mode: screen;
}

[dir="rtl"] .hero-geometry {
  transform: scale(1.18) scaleX(-1);
}

.hero-line {
  position: absolute;
  display: block;
  background: var(--darbd-orange);
  opacity: .28;
  pointer-events: none;
}

.scroll-cue {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  margin-block-start: clamp(1.5rem, 4vw, 3rem);
  color: rgba(255,255,255,.62);
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.scroll-cue::after {
  width: 42px;
  height: 1px;
  content: "";
  background: var(--darbd-orange);
  animation: cuePulse 1600ms var(--ease-standard) infinite alternate;
}

.hero-line-one {
  inset-block-start: 8%;
  inset-inline-end: 14%;
  width: 1px;
  height: 76%;
}

.hero-line-two {
  inset-block-end: 14%;
  inset-inline: 0 8%;
  height: 1px;
}

.institutional-panel {
  padding: clamp(1.25rem, 4vw, 2rem);
  background: rgba(255, 255, 255, .9);
  border: 1px solid var(--ciarb-line);
  border-inline-start: 4px solid var(--ciarb-hero-red);
  border-radius: .45rem;
  box-shadow: 0 20px 60px rgba(119, 0, 12, .06);
}

.measure {
  max-width: min(760px, 100%);
}

.section {
  position: relative;
  overflow-x: clip;
  padding-block: clamp(2.75rem, 4.5vw, 4.5rem);
}

.section-neutral {
  background:
    linear-gradient(rgba(247, 243, 240, .94), rgba(247, 243, 240, .94)),
    url("../img/brand/darbd-geometric-background.png") left center / min(46rem, 90vw) auto no-repeat,
    var(--ciarb-neutral);
}

.section-intro {
  background: var(--ciarb-white);
}

.premium-section,
.programme-overview-section,
.agenda-section,
.people-section,
.pathway-section,
.sponsors-section,
.form-section,
.legal-section {
  position: relative;
}

.premium-section::before,
.people-section::before,
.agenda-section::before,
.sponsors-section::before,
.legal-section::before {
  position: absolute;
  inset-block-start: 2rem;
  inset-inline-end: 0;
  width: min(24rem, 28vw);
  height: min(24rem, 28vw);
  content: "";
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  opacity: .07;
  pointer-events: none;
}

.editorial-layout,
.agenda-layout,
.legal-layout,
.sponsor-layout,
.form-layout {
  display: grid;
  grid-template-columns: minmax(260px, .42fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: start;
}

.editorial-aside,.agenda-sidebar,.legal-nav,.sponsor-aside{
  position: sticky;
  top: 116px;
}

.editorial-aside h2,
.agenda-sidebar h2,
.legal-nav h2 {
  color: var(--ciarb-deep-red);
  font-size: clamp(2rem, 3.8vw, 3.45rem);
  font-weight: 700;
  line-height: 1.05;
}

.editorial-aside p,
.agenda-sidebar p,
.legal-nav p,
.split-heading p {
  color: #5b5351;
  line-height: 1.82;
}

.index-stack,
.legal-stack,
.programme-list,
.sponsor-tier-stack {
  display: grid;
  gap: .85rem;
}

.index-row,
.legal-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: clamp(1rem, 2.5vw, 1.6rem);
  align-items: start;
  padding: clamp(1.05rem, 2.4vw, 1.55rem);
  background: rgba(255,255,255,.94);
  border: 1px solid var(--ciarb-line);
  border-inline-start: 4px solid rgba(190,0,0,.82);
  box-shadow: 0 18px 44px rgba(60,60,59,.045);
  transition: transform var(--motion-standard) var(--ease-standard), border-color var(--motion-standard) var(--ease-standard), box-shadow var(--motion-standard) var(--ease-standard);
}

.index-row:hover,
.legal-row:hover {
  border-color: rgba(190,0,0,.34);
  transform: translateY(-2px);
  box-shadow: 0 24px 58px rgba(60,60,59,.075);
}

.index-row > span,
.legal-row > span,
.panel-index {
  color: var(--ciarb-hero-red);
  font-size: .9rem;
  font-weight: 800;
  letter-spacing: .08em;
}

[dir="rtl"] .index-row > span,
[dir="rtl"] .legal-row > span,
[dir="rtl"] .panel-index {
  letter-spacing: 0;
}

.index-row h3,
.legal-row h2 {
  margin-block-end: .35rem;
  color: var(--ciarb-black);
  font-size: clamp(1.12rem, 1.8vw, 1.45rem);
  font-weight: 700;
}

.people-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 1.35rem);
}

.split-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 2rem;
  max-width: none;
}

.split-heading > p {
  max-width: 360px;
  margin: 0;
}

.person-card {
  min-height: 100%;
  padding: 0;
  overflow: hidden;
  background: var(--ciarb-white);
}

.person-card-copy {
  padding: clamp(1rem, 2.2vw, 1.35rem);
}

.person-card h3 {
  color: var(--ciarb-black);
  font-size: clamp(1.06rem, 1.5vw, 1.28rem);
  font-weight: 700;
}

.profile-status {
  margin-block-end: .45rem;
  color: var(--ciarb-hero-red);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

[dir="rtl"] .profile-status {
  letter-spacing: 0;
}

.photo-placeholder {
  position: relative;
  display: grid;
  place-items: end start;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 4 / 3.25;
  margin: 0;
  padding: 1rem;
  background:
    linear-gradient(135deg, rgba(119,0,12,.04), rgba(245,82,0,.1)),
    url("../img/brand/darbd-geometric-background.png") center / cover,
    var(--ciarb-neutral);
  border: 0;
  border-radius: 0;
}

.photo-placeholder::after {
  position: absolute;
  inset: auto 0 0;
  height: 38%;
  content: "";
  background: linear-gradient(180deg, transparent, rgba(58,2,5,.18));
}

.photo-placeholder span {
  position: relative;
  z-index: 1;
  color: var(--ciarb-white);
  font-size: clamp(2rem, 5vw, 3.8rem);
  font-weight: 800;
  line-height: .8;
  text-shadow: 0 12px 28px rgba(58,2,5,.3);
}

.programme-rail{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 3vw, 1.5rem);
}

.programme-panel{
  position: relative;
  min-height: 360px;
  padding: clamp(1.4rem, 4vw, 2.5rem);
  overflow: hidden;
  color: var(--ciarb-white);
  background:
    radial-gradient(circle at 92% 14%, rgba(245,82,0,.28), transparent 12rem),
    linear-gradient(135deg, var(--darbd-burgundy), var(--ciarb-deep-red));
  border: 1px solid rgba(119,0,12,.22);
  box-shadow: 0 24px 64px rgba(60,60,59,.09);
}

.programme-panel::before{
  position: absolute;
  inset: auto -10% -20% auto;
  width: 20rem;
  height: 20rem;
  content: "";
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  opacity: .18;
  filter: brightness(1.4);
  pointer-events: none;
}

.programme-panel h2{
  position: relative;
  max-width: 620px;
  color: var(--ciarb-white);
  font-size: clamp(1.8rem, 3.4vw, 3.2rem);
  font-weight: 700;
  line-height: 1.06;
}

.programme-panel p{
  position: relative;
  max-width: 620px;
  color: rgba(255,255,255,.82);
}

.programme-panel .btn{
  position: relative;
  margin-block-start: 1rem;
}

.programme-note {
  margin-block-start: 1rem;
}

.agenda-sidebar {
  padding-block-start: .5rem;
}

.programme-card {
  grid-template-columns: minmax(118px, 160px) 1fr;
  position: relative;
  padding: clamp(1.1rem, 2.4vw, 1.5rem);
  border-inline-start: 4px solid var(--ciarb-hero-red);
  box-shadow: 0 18px 50px rgba(60,60,59,.045);
}

.programme-card::after {
  position: absolute;
  inset-block: 1.2rem;
  inset-inline-start: calc(160px + 1.8rem);
  width: 1px;
  content: "";
  background: linear-gradient(var(--ciarb-hero-red), rgba(190,0,0,0));
  opacity: .28;
  pointer-events: none;
}

[dir="rtl"] .programme-card::after {
  inset-inline-start: auto;
  inset-inline-end: calc(160px + 1.8rem);
}

.programme-card h2 {
  color: var(--ciarb-black);
  font-size: clamp(1.15rem, 1.9vw, 1.45rem);
  font-weight: 700;
}

.time-badge {
  border-radius: .2rem;
  box-shadow: 0 14px 32px rgba(119,0,12,.14);
}

.sponsor-layout {
  grid-template-columns: minmax(0, 1fr) minmax(280px, 380px);
}

.sponsor-tier {
  display: grid;
  grid-template-columns: 62px minmax(150px, .32fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: center;
  min-height: 128px;
  margin: 0;
}

.sponsor-tier h2 {
  margin: 0;
  color: var(--ciarb-deep-red);
  font-size: clamp(1.2rem, 2vw, 1.65rem);
  font-weight: 800;
}

.sponsor-tier .sponsor-tier-slots {
  margin-block: .3rem 0;
}

.sponsor-tier-1,
.sponsor-tier-2 {
  border-inline-start: 5px solid var(--darbd-orange);
}

.sponsor-tier-3,
.sponsor-tier-4 {
  border-inline-start: 5px solid var(--ciarb-muted-red);
}

.form-layout {
  grid-template-columns: minmax(0, 1fr) minmax(280px, 410px);
}

.form-shell {
  position: relative;
  padding: clamp(1.25rem, 3.2vw, 2.1rem);
  box-shadow: 0 22px 64px rgba(60,60,59,.06);
}

.form-shell::after {
  position: absolute;
  inset-block-start: 0;
  inset-inline-end: 0;
  width: 34%;
  height: 4px;
  content: "";
  background: linear-gradient(90deg, var(--ciarb-hero-red), var(--darbd-orange));
}

.form-control:hover,
.form-select:hover {
  border-color: rgba(190,0,0,.32);
}

/* The start padding must clear Bootstrap's `.form-check-input` negative inline
   margin (-1.5em). At 1rem it did not: the radio and checkbox controls rendered
   8px outside their own left border and read as clipped. RTL already carried
   the 2.2rem below and was correct, so LTR was the side that never got it. */
.form-check {
  padding: .85rem 1rem;
  padding-inline-start: 2.2rem;
  background: rgba(247,243,240,.62);
  border: 1px solid var(--ciarb-line);
  border-radius: .35rem;
}

[dir="rtl"] .form-check {
  padding-inline: 2.2rem 1rem;
}

.legal-layout {
  grid-template-columns: minmax(260px, .36fr) minmax(0, 1fr);
}

.legal-row {
  grid-template-columns: 54px minmax(0, 1fr);
  border-inline-start-color: rgba(119,0,12,.52);
}

.home-editorial {
  position: relative;
  background:
    linear-gradient(135deg, rgba(255,255,255,.98), rgba(247,243,240,.65)),
    var(--ciarb-white);
}

.home-editorial::after {
  position: absolute;
  inset-block: 16% auto;
  inset-inline-end: 0;
  width: min(24rem, 28vw);
  height: min(24rem, 28vw);
  content: "";
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  opacity: .08;
  pointer-events: none;
}

.home-editorial-grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(320px, .65fr);
  gap: clamp(2.5rem, 7vw, 6rem);
  align-items: start;
}

.home-editorial-copy {
  max-width: 760px;
}

.home-editorial h2 {
  max-width: 680px;
  margin-block-end: 1rem;
  color: var(--ciarb-deep-red);
  font-size: clamp(2rem, 3.6vw, 3.35rem);
  font-weight: 650;
  line-height: 1.12;
}

.home-editorial h2::after,
.section-heading h2::after,
.previous-copy h2::after {
  display: block;
  width: 74px;
  height: 4px;
  margin-block-start: 1rem;
  content: "";
  background: var(--darbd-orange);
}

.home-editorial-copy p {
  max-width: 680px;
  color: #5b5351;
  font-size: 1.02rem;
  line-height: 1.85;
}

.text-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: .42rem .72rem;
  margin-block-start: .75rem;
  color: var(--ciarb-deep-red);
  border: 1px solid transparent;
  border-radius: var(--radius-pill);
  font-weight: 700;
  text-decoration: none;
}

.text-link:hover,
.text-link:focus-visible,
.home-day-summary a:hover,
.home-day-summary a:focus-visible {
  color: var(--ciarb-hero-red);
  text-decoration-color: transparent;
}

.home-day-summary {
  display: grid;
  gap: 1.3rem;
  padding-block-start: .25rem;
}

.home-day-summary article {
  padding-block: 0 1.25rem;
  border-block-end: 1px solid var(--ciarb-line);
  transition: border-color var(--motion-standard) var(--ease-standard), transform var(--motion-standard) var(--ease-standard);
}

.day-card {
  padding-inline-start: 1.1rem;
  border-inline-start: 4px solid var(--ciarb-deep-red);
}

.day-card-two {
  border-inline-start-color: var(--darbd-orange);
}

.day-card-two p,
.day-card-two a {
  color: var(--darbd-orange);
}

.workshop-disclaimer {
  padding: 1rem 1.1rem;
  color: var(--ciarb-deep-red);
  background: #fff7f2;
  border: 1px solid rgba(245, 82, 0, .28);
  border-inline-start: 4px solid var(--darbd-orange);
  border-radius: .35rem;
  font-weight: 600;
}

.home-day-summary article:hover {
  border-block-end-color: var(--ciarb-muted-red);
  transform: translateX(.2rem);
}

[dir="rtl"] .home-day-summary article:hover {
  transform: translateX(-.2rem);
}

.home-day-summary article:first-child {
  border-block-start: 3px solid var(--ciarb-hero-red);
  padding-block-start: 1.2rem;
}

.home-day-summary p {
  margin-bottom: .3rem;
  color: var(--ciarb-hero-red);
  font-size: .8rem;
  font-weight: 700;
  text-transform: uppercase;
}

[dir="rtl"] .home-day-summary p {
  letter-spacing: 0;
}

.home-day-summary h3 {
  margin-bottom: .45rem;
  color: var(--ciarb-black);
  font-size: clamp(1.25rem, 2vw, 1.65rem);
  font-weight: 700;
}

.home-day-summary span {
  display: block;
  color: #5b5351;
  line-height: 1.75;
}

.home-day-summary a {
  display: inline-flex;
  margin-block-start: .75rem;
  color: var(--ciarb-deep-red);
  font-weight: 700;
}

.section-heading {
  max-width: 820px;
  margin-block-end: clamp(1.5rem, 2.5vw, 2.5rem);
}

.section-heading h2 {
  color: var(--ciarb-deep-red);
  font-size: clamp(1.9rem, 3.4vw, 3rem);
  font-weight: 650;
  line-height: 1.15;
}

.previous-editions {
  position: relative;
  background: var(--ciarb-white);
}

.previous-editions::before {
  position: absolute;
  inset-block-start: 8%;
  inset-inline-end: 0;
  width: min(28rem, 30vw);
  height: min(38rem, 44vw);
  content: "";
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  opacity: .12;
  pointer-events: none;
}

.previous-grid {
  display: grid;
  grid-template-columns: minmax(0, .55fr) minmax(0, 1fr);
  gap: clamp(2rem, 7vw, 6rem);
  align-items: start;
}

.previous-copy {
  position: sticky;
  top: 120px;
  max-width: 520px;
}

.previous-copy h2 {
  color: var(--ciarb-deep-red);
  font-size: clamp(2.1rem, 4vw, 3.45rem);
  font-weight: 700;
  line-height: 1.08;
}

.previous-copy p {
  color: #5b5351;
  font-size: 1.03rem;
  line-height: 1.85;
}

.previous-gallery {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 1rem;
}

.previous-photo {
  position: relative;
  overflow: hidden;
  min-height: 220px;
  margin: 0;
  background: var(--ciarb-neutral);
  border: 1px solid rgba(119, 0, 12, .22);
}

.previous-photo-large {
  grid-column: 1 / -1;
  min-height: 320px;
}

.previous-photo img {
  width: 100%;
  height: 100%;
  min-height: inherit;
  object-fit: cover;
  transform: translateY(var(--photo-y, 0));
  transition: transform var(--motion-slow) var(--ease-standard), filter var(--motion-standard) var(--ease-standard);
}

.previous-photo:hover img {
  filter: saturate(1.08) contrast(1.03);
  transform: scale(1.025) translateY(var(--photo-y, 0));
}

.previous-photo figcaption {
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  padding: .45rem .75rem;
  color: var(--ciarb-white);
  background: var(--ciarb-deep-red);
  font-size: 1.1rem;
  font-weight: 700;
}

.teaser-strip {
  background: linear-gradient(180deg, var(--ciarb-white), var(--ciarb-neutral));
}

.teaser-panel {
  position: relative;
  min-height: 100%;
  padding: clamp(1.5rem, 4vw, 2.4rem);
  background: var(--ciarb-white);
  border: 1px solid var(--ciarb-line);
  border-block-start: 4px solid var(--darbd-orange);
  overflow: hidden;
}

.teaser-panel::after {
  position: absolute;
  inset-block-end: -7rem;
  inset-inline-end: -5rem;
  width: 16rem;
  height: 16rem;
  content: "";
  background: url("../img/brand/darbd-geometric-background.png") center / contain no-repeat;
  opacity: .12;
  pointer-events: none;
}

.teaser-panel h2 {
  color: var(--ciarb-deep-red);
  font-weight: 700;
}

.teaser-panel-dark {
  color: var(--ciarb-white);
  background:
    radial-gradient(circle at 100% 0%, rgba(245,82,0,.25), transparent 16rem),
    var(--ciarb-deep-red);
  border-color: rgba(255,255,255,.18);
}

.teaser-panel-dark h2,
.teaser-panel-dark p {
  color: var(--ciarb-white);
}

.teaser-panel-dark .kicker {
  color: var(--darbd-orange-soft);
}

.action-card,
.feature-panel,
.info-card,
.person-card,
.pdf-card,
.form-shell,
.sponsor-tier,
.programme-card,
.cta-band {
  background: rgba(255, 255, 255, .94);
  border: 1px solid var(--ciarb-line);
  border-radius: .45rem;
  transition: border-color var(--motion-standard) var(--ease-standard), transform var(--motion-standard) var(--ease-standard), box-shadow var(--motion-standard) var(--ease-standard), background-color var(--motion-standard) var(--ease-standard);
}

.action-card,
.feature-panel,
.info-card,
.person-card,
.pdf-card,
.form-shell,
.sponsor-tier {
  height: 100%;
  padding: clamp(1.2rem, 3vw, 1.8rem);
}

.action-card::before,
.feature-panel::before,
.info-card::before,
.person-card::before,
.programme-card::before,
.sponsor-tier::before {
  position: absolute;
  inset-block-start: 0;
  inset-inline: 0;
  height: 3px;
  content: "";
  background: var(--ciarb-hero-red);
  transform: scaleX(0);
  transform-origin: var(--line-origin, left);
  transition: transform var(--motion-standard) var(--ease-emphasized);
}

[dir="rtl"] .action-card,
[dir="rtl"] .feature-panel,
[dir="rtl"] .info-card,
[dir="rtl"] .person-card,
[dir="rtl"] .programme-card,
[dir="rtl"] .sponsor-tier {
  --line-origin: right;
}

.action-card,
.feature-panel,
.info-card,
.person-card,
.programme-card,
.sponsor-tier {
  position: relative;
  overflow: hidden;
}

.action-card:hover,
.feature-panel:hover,
.person-card:hover,
.info-card:hover,
.programme-card:hover,
.sponsor-tier:hover {
  border-color: rgba(190, 0, 0, .26);
  transform: translateY(-3px);
  box-shadow: 0 22px 54px rgba(60, 60, 59, .07);
}

.action-card:hover::before,
.feature-panel:hover::before,
.info-card:hover::before,
.person-card:hover::before,
.programme-card:hover::before,
.sponsor-tier:hover::before {
  transform: scaleX(1);
}

.action-card p,
.feature-panel p,
.info-card p,
.person-card p,
.pdf-card p,
.sponsor-tier p {
  color: #5b5351;
}

.status-note {
  padding: 1rem 1.15rem;
  background: var(--ciarb-neutral);
  border: 1px solid var(--ciarb-line);
  border-inline-start: 4px solid var(--ciarb-hero-red);
  border-radius: .35rem;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  width: fit-content;
  padding: .35rem .65rem;
  color: var(--ciarb-deep-red);
  font-size: .76rem;
  font-weight: 600;
  background: var(--ciarb-pale-red);
  border: 1px solid rgba(119, 0, 12, .16);
  border-radius: 999px;
}

.status-pill::before {
  content: "";
  width: .45rem;
  height: .45rem;
  background: var(--ciarb-hero-red);
  border-radius: 999px;
}

.cta-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  padding: clamp(1.2rem, 4vw, 2rem);
}

.photo-placeholder {
  width: 100%;
  aspect-ratio: 4 / 3;
  margin-block-end: 1rem;
  background:
    linear-gradient(135deg, rgba(190, 0, 0, .1), rgba(119, 0, 12, .06)),
    url("../img/brand/darbd-geometric-background.png") center / cover,
    var(--ciarb-neutral);
  border: 1px solid var(--ciarb-line);
  border-radius: .35rem;
}

.programme-list {
  display: grid;
  gap: 1rem;
}

.programme-card {
  display: grid;
  grid-template-columns: minmax(120px, 180px) 1fr;
  gap: 1.25rem;
  padding: 1.25rem;
  border-inline-start: 4px solid var(--ciarb-hero-red);
}

/* Authoritative for the badge. Ivory on the wine fill reads warmer than pure
   white and clears AA comfortably at 10.9:1; the palette's golds do not, which
   is what four successive override blocks had quietly done to it. */
.time-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* A grid item stretches by default, which turned a three-character time
     label into a slab taller and heavier than the session title beside it.
     Sized to its content and pinned to the top, it reads as a timetable
     marker and the session title leads the card again. */
  align-self: start;
  justify-self: start;
  min-height: 42px;
  padding: .45rem .75rem;
  color: var(--brand-ivory, #faf5ef);
  font-size: .9rem;
  font-weight: 700;
  background: var(--ciarb-deep-red);
  border-radius: .3rem;
}

.sponsor-tier {
  margin-block-end: 1rem;
}

.empty-state {
  padding: 1rem;
  color: #5b5351;
  background: var(--ciarb-neutral);
  border: 1px dashed #cbbfba;
  border-radius: .35rem;
}

.form-shell {
  height: auto;
}

.form-shell h2,
.form-shell p {
  overflow-wrap: anywhere;
}

.form-label {
  font-weight: 500;
}

.required::after {
  content: " *";
  color: var(--ciarb-hero-red);
}

.form-control,
.form-select {
  min-height: 44px;
  border-color: #d8ceca;
  transition: border-color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--ciarb-hero-red);
  box-shadow: 0 0 0 .2rem rgba(190, 0, 0, .16);
}

.form-feedback {
  padding: 1rem;
  color: var(--ciarb-deep-red);
  background: var(--ciarb-pale-red);
  border: 1px solid rgba(119, 0, 12, .18);
  border-radius: .35rem;
}

/* Premium internal-page overrides after legacy card defaults. */
.people-grid .person-card {
  height: 100%;
  padding: 0;
}

.people-grid .photo-placeholder {
  position: relative;
  display: grid;
  place-items: end start;
  overflow: hidden;
  aspect-ratio: 4 / 3.25;
  margin: 0;
  padding: 1rem;
  background:
    linear-gradient(135deg, rgba(119,0,12,.04), rgba(245,82,0,.1)),
    url("../img/brand/darbd-geometric-background.png") center / cover,
    var(--ciarb-neutral);
  border: 0;
  border-radius: 0;
}

.people-grid .photo-placeholder span {
  position: relative;
  z-index: 1;
}

.programme-list .programme-card {
  display: grid;
  grid-template-columns: minmax(118px, 160px) minmax(0, 1fr);
  gap: 1.25rem;
  padding: clamp(1.1rem, 2.4vw, 1.5rem);
}

.sponsor-tier-stack .sponsor-tier {
  display: grid;
  grid-template-columns: 62px minmax(150px, .32fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: center;
  height: auto;
  margin: 0;
  padding: clamp(1.1rem, 2.4vw, 1.5rem);
}

/* A sponsorship category the client asked us to show that has no approved 2026
   entrant — client Website Comments-3 item 9. It uses the same card shell as
   the tiers above it so the stack stays visually one system, but collapses to
   a single column: rendered on the three-column tier grid it would read as a
   tier card whose fee, logo row and call to action had failed to render. It
   asserts nothing beyond the category name, and is shorter than a commercial
   tier so it never out-weighs a paid one. */
.sponsor-tier-stack .sponsor-tier-structural {
  grid-template-columns: minmax(0, 1fr);
  min-height: 0;
  /* Shallower than a commercial tier: this box states a category, it does not
     sell one, and at full tier padding it read as a card whose fee and action
     had failed to render. */
  padding-block: clamp(.9rem, 1.8vw, 1.2rem);
}

.sponsor-tier-structural h2 {
  color: var(--ciarb-deep-red);
}

/* Current confirmed sponsor logos within tier cards */
.current-sponsor-logos {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .75rem;
  grid-column: 1 / -1;
  padding-block: .75rem .25rem;
}

/* Column direction so the tier label sits above the logo. In a row the label
   competes with the brand asset for width and forces it outside the frame. */
.sponsor-logo-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .75rem 1.5rem;
  background: #fff;
  border: 1px solid rgba(59, 0, 6, .08);
  border-radius: .35rem;
  max-width: min(100%, 480px);
}

.sponsor-logo-wrap .sponsor-tier-label {
  margin: 0;
}

.sponsor-logo-wrap img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.sponsor-tier-label {
  font-size: .78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--brand-wine-2);
  text-align: center;
}

.sponsor-tier-bronze .sponsor-tier-label {
  color: #8b6914;
}

.form-layout .form-shell {
  height: auto;
}

body.js-motion-ready [data-scroll-reveal],body.js-motion-ready .programme-panel,body.js-motion-ready .index-row,body.js-motion-ready .legal-row{
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 520ms var(--ease-emphasized) var(--reveal-delay, 0ms),
    transform 520ms var(--ease-emphasized) var(--reveal-delay, 0ms),
    border-color var(--motion-standard) var(--ease-standard),
    box-shadow var(--motion-standard) var(--ease-standard);
}

/* Internal-page hero entrance is CSS-driven (see the home hero note): it plays
   from first paint so the late motion script can never flash it, and it degrades
   to a correct static hero with JavaScript disabled. */
.internal-hero-copy > * {
  animation: revealUp var(--motion-hero) var(--ease-emphasized) both;
}

.internal-hero-copy > *:nth-child(2) {
  animation-delay: 45ms;
}

.internal-hero-copy > *:nth-child(3) {
  animation-delay: 90ms;
}

.internal-hero-copy > *:nth-child(4) {
  animation-delay: 130ms;
}

.internal-hero-panel {
  animation: revealPanel 620ms var(--ease-emphasized) 110ms both;
}

body.js-motion-ready .action-card,
body.js-motion-ready .feature-panel,
body.js-motion-ready .person-card,
body.js-motion-ready .info-card,
body.js-motion-ready .programme-card,
body.js-motion-ready .sponsor-tier,
body.js-motion-ready .pdf-card,
body.js-motion-ready .form-shell,
body.js-motion-ready .cta-band {
  opacity: 0;
  transform: translateY(22px);
}

body.js-motion-ready [data-scroll-reveal],body.js-motion-ready .programme-panel,body.js-motion-ready .index-row,body.js-motion-ready .legal-row{
  opacity: 1;
}

.home-hero-copy > * {
  animation: revealUp var(--motion-hero) var(--ease-emphasized) both;
}

.home-hero-copy > *:nth-child(2) {
  animation-delay: 90ms;
}

.home-hero-copy > *:nth-child(3) {
  animation-delay: 170ms;
}

.home-hero-copy > *:nth-child(4) {
  animation-delay: 250ms;
}

.home-hero-copy > *:nth-child(5) {
  animation-delay: 330ms;
}

.hero-visual {
  animation: revealGeometry 1100ms var(--ease-emphasized) 180ms both;
}

body .is-visible,body .is-visible .action-card,body .is-visible .feature-panel,body .is-visible .person-card,body .is-visible .info-card,body .is-visible .programme-card,body .is-visible .sponsor-tier,body .is-visible .pdf-card,body .is-visible .form-shell,body .is-visible .cta-band,body .is-visible [data-scroll-reveal],body .is-visible .programme-panel,body .is-visible .index-row,body .is-visible .legal-row,body .is-visible .internal-hero-panel{
  opacity: 1;
  transform: translateY(0);
}

.is-visible .action-card:hover,
.is-visible .feature-panel:hover,
.is-visible .person-card:hover,
.is-visible .info-card:hover,
.is-visible .programme-card:hover,
.is-visible .sponsor-tier:hover {
  transform: translateY(-3px);
}

@keyframes revealUp {
  from {
    opacity: 0;
    transform: translateY(22px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes revealGeometry {
  from {
    opacity: 0;
    transform: translate3d(24px, 12px, 0) scale(.98);
  }
  to {
    opacity: 1;
    transform: translate3d(var(--motion-x, 0), var(--motion-y, 0), 0) scale(1);
  }
}

@keyframes revealPanel {
  from {
    opacity: 0;
    transform: translate3d(18px, 0, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes lineScale {
  from {
    transform: scaleX(.12);
  }
  to {
    transform: scaleX(1);
  }
}

@keyframes lineDraw {
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes ambientStroke {
  from {
    opacity: .45;
    transform: translate3d(0, 0, 0);
  }
  to {
    opacity: .9;
    transform: translate3d(8px, -6px, 0);
  }
}

@keyframes textureDrift {
  from {
    background-position: 0 0, 0 0;
  }
  to {
    background-position: 42px 84px, -42px 42px;
  }
}

@keyframes cuePulse {
  from {
    transform: scaleX(.55);
    transform-origin: left;
    opacity: .55;
  }
  to {
    transform: scaleX(1);
    transform-origin: left;
    opacity: 1;
  }
}

.form-alert {
  margin-block-end: 1rem;
}

.form-alert[data-status="error"],
.form-feedback[data-status="error"] {
  color: var(--ciarb-deep-red);
  background: var(--ciarb-pale-red);
  border-color: rgba(119, 0, 12, .28);
}

.form-feedback[data-status="success"] {
  color: #1f5132;
  background: #eef8f1;
  border-color: #b7dfc4;
}

.form-feedback[data-status="loading"],
.form-feedback[data-status="info"] {
  color: #4e4846;
  background: var(--ciarb-neutral);
  border-color: var(--ciarb-line);
}

/* Outcome block: heading, explanation, then the reference set apart so it can
   be read back over the phone or copied without hunting through a sentence. */
.form-feedback-title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.45;
}

.form-feedback-body {
  margin: .5rem 0 0;
  font-size: .9375rem;
  line-height: 1.65;
}

.form-feedback-reference {
  display: flex;
  flex-wrap: wrap;
  gap: .15rem 0;
  flex-direction: column;
  margin: .9rem 0 0;
  padding-block-start: .85rem;
  border-block-start: 1px solid currentColor;
}

.form-feedback-reference span {
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: .8;
}

[dir="rtl"] .form-feedback-reference span {
  letter-spacing: 0;
}

.form-feedback-reference strong {
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: .02em;
}

.form-feedback-note {
  margin: .85rem 0 0;
  font-size: .85rem;
  line-height: 1.6;
  opacity: .85;
}

/* Sits under the sponsorship submit button: what the button will actually do,
   stated once, quietly. */
.form-submit-note {
  max-width: 52ch;
  margin: .85rem 0 0;
  color: var(--brand-ink-soft, #4a4a52);
  font-size: .8125rem;
  line-height: 1.6;
}

.email-preview {
  min-height: 18rem;
  white-space: pre-wrap;
}

.source-note {
  color: #665d5b;
  font-size: .92rem;
}

.site-footer {
  color: rgba(255, 255, 255, .82);
  background: var(--ciarb-deep-red);
}

.site-footer a {
  color: var(--ciarb-white);
}

.site-footer a:hover,
.site-footer a:focus-visible {
  color: var(--ciarb-pale-red);
}

[dir="rtl"] .breadcrumb-item + .breadcrumb-item::before {
  float: none;
  padding-inline: .5rem;
}

[dir="rtl"] input[type="email"],
[dir="rtl"] input[type="tel"],
[dir="rtl"] input[type="url"],
[dir="rtl"] input[type="number"],
[dir="rtl"] .ltr-field {
  direction: ltr;
  text-align: start;
}

[dir="rtl"] .page-hero h1,
[dir="rtl"] .page-hero .lead,
[dir="rtl"] .form-shell,
[dir="rtl"] .form-label,
[dir="rtl"] .source-note,
[dir="rtl"] .form-feedback {
  direction: rtl;
  text-align: right;
}

@media (max-width: 1199.98px) {
  .header-actions {
    min-width: 0;
  }

  .navbar-collapse {
    flex-basis: 100%;
    order: 3;
    padding-block-start: 1rem;
  }

  .navbar-nav {
    align-items: stretch;
  }

  .nav-link {
    font-size: .95rem;
    white-space: normal;
  }

  .internal-hero,
  .editorial-layout,
  .agenda-layout,
  .legal-layout,
  .sponsor-layout,
  .form-layout {
    grid-template-columns: 1fr;
  }

  .internal-hero-panel,.editorial-aside,.agenda-sidebar,.legal-nav,.sponsor-aside{
    position: static;
  }

  .people-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767.98px) {
  html,
  body {
    width: 100%;
    max-width: 100vw;
    overflow-x: hidden;
  }

  body > * {
    max-width: 100vw;
  }

  .container {
    width: 100%;
    max-width: 100vw;
  }

  .home-hero,
  .page-hero,
  .section,
  .form-shell {
    max-width: 100vw;
    overflow-x: clip;
  }

  .home-hero .container,
  .page-hero .container,
  .section .container {
    padding-inline: 1.5rem;
  }

  .navbar > .container {
    flex-wrap: wrap;
  }

  .navbar-brand {
    max-width: calc(100% - 72px);
    gap: .65rem !important;
  }

  .brand-logo {
    height: 46px;
    max-width: 118px;
  }

  .brand-title {
    font-size: .95rem;
  }

  .brand-subtitle {
    display: none;
  }

  .home-hero {
    min-height: auto;
    padding-block: 3.25rem 2.75rem;
  }

  .home-hero-grid {
    grid-template-columns: 1fr;
    gap: 1.6rem;
    min-height: 0;
  }

  .home-title {
    font-size: clamp(2.75rem, 14vw, 4.25rem);
    line-height: 1.03;
  }

  .home-title span:first-child {
    white-space: normal;
  }

  .hero-copy {
    font-size: 1rem;
    line-height: 1.7;
  }

  .hero-facts {
    display: grid;
    max-width: 100%;
  }

  .hero-facts div + div {
    padding-inline-start: 0;
    border-inline-start: 0;
  }

  .hero-visual {
    min-height: 180px;
    margin-block-start: .25rem;
  }

  .hero-geometry {
    inset: -20% -22%;
    background-position: center;
    background-size: min(34rem, 140vw) auto;
    transform: scale(1.08);
  }

  .hero-svg-top {
    inset-block-start: 2rem;
    inset-inline-end: -10rem;
    width: 34rem;
  }

  .hero-svg-bottom {
    inset-block-end: -2rem;
    inset-inline-start: -10rem;
    width: 36rem;
  }

  .scroll-cue {
    display: none;
  }

  .hero-actions {
    flex-direction: column;
  }

  .hero-actions .btn {
    width: 100%;
  }

  .page-hero .display-4 {
    max-width: 100%;
    font-size: clamp(2.1rem, 11vw, 3rem);
    overflow-wrap: anywhere;
  }

  .page-hero {
    padding-block: .75rem 1.7rem;
  }

  .internal-hero {
    min-height: auto;
    padding: clamp(1.35rem, 7vw, 2rem);
    border-radius: .35rem;
  }

  .internal-hero::after {
    width: 42vw;
  }

  .internal-hero-lines {
    inset-inline-end: -14rem;
    width: 42rem;
    opacity: .72;
  }

  .internal-hero-panel {
    min-height: auto;
  }

  .section-index {
    font-size: clamp(2.2rem, 15vw, 3.7rem);
  }

  .page-hero .lead,
  .hero-copy {
    max-width: 100%;
  }

  .cta-band {
    align-items: stretch;
    flex-direction: column;
  }

  .previous-grid,
  .previous-gallery {
    grid-template-columns: 1fr;
  }

  .previous-copy {
    position: static;
  }

  .previous-photo,
  .previous-photo-large {
    min-height: 220px;
  }

  /* Must match .programme-list .programme-card, which sets the two-column
     timetable outside this query and otherwise outbids a bare .programme-card
     here — leaving a 118px time column and barely 200px for the session on a
     390px screen. */
  .programme-card,
  .programme-list .programme-card {
    grid-template-columns: 1fr;
    gap: .85rem;
  }

  .programme-card::after {
    display: none;
  }

  .programme-rail,.people-grid{
    grid-template-columns: 1fr;
  }

  .split-heading {
    align-items: start;
    flex-direction: column;
    gap: .75rem;
  }

  .index-row,
  .legal-row,
  .sponsor-tier-stack .sponsor-tier {
    grid-template-columns: 1fr;
  }

  .programme-panel{
    min-height: 300px;
  }

  [dir="rtl"] .row {
    margin-inline: 0;
    --bs-gutter-x: 0;
  }

  [dir="rtl"] [class*="col-"] {
    padding-inline: 0;
  }

  [dir="rtl"] .page-hero,
  [dir="rtl"] .home-hero,
  [dir="rtl"] .section,
  [dir="rtl"] .form-shell {
    max-width: 100vw;
    overflow-x: clip;
  }

  [dir="rtl"] .page-hero .container,
  [dir="rtl"] .home-hero .container,
  [dir="rtl"] .section .container {
    width: 100%;
    max-width: 100vw;
    padding-inline: 1.5rem;
  }

  [dir="rtl"] .page-hero .display-4,
  [dir="rtl"] .page-hero .lead,
  [dir="rtl"] .home-title,
  [dir="rtl"] .hero-copy {
    width: 100%;
    max-width: calc(100vw - 3rem);
    margin-inline: auto;
    text-align: right;
  }

  [dir="rtl"] .hero-geometry {
    transform: scale(1.08) scaleX(-1);
  }

  [dir="rtl"] .form-shell,[dir="rtl"] .pdf-card,[dir="rtl"] .status-note,[dir="rtl"] .feature-panel,[dir="rtl"] .info-card,[dir="rtl"] .person-card,[dir="rtl"] .sponsor-tier,[dir="rtl"] .programme-card,[dir="rtl"] .internal-hero,[dir="rtl"] .programme-panel,[dir="rtl"] .index-row,[dir="rtl"] .legal-row{
    width: min(100%, calc(100vw - 2rem));
    margin-inline: auto;
  }

  [dir="rtl"] .form-shell {
    padding-inline: 1rem;
  }
}

@media (max-width: 480px) {
  body.js-motion-ready [data-scroll-reveal],body.js-motion-ready .action-card,body.js-motion-ready .feature-panel,body.js-motion-ready .person-card,body.js-motion-ready .info-card,body.js-motion-ready .programme-card,body.js-motion-ready .sponsor-tier,body.js-motion-ready .pdf-card,body.js-motion-ready .form-shell,body.js-motion-ready .cta-band,body.js-motion-ready .programme-panel,body.js-motion-ready .index-row,body.js-motion-ready .legal-row{
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 1199.98px) {
  .brand-logo {
    height: 52px;
    max-width: 136px;
  }

  .navbar-nav {
    align-items: stretch;
    gap: .1rem;
    padding-block-start: 1rem;
  }

  .nav-button,
  .nav-link {
    width: 100%;
    text-align: start;
  }

  .dropdown-menu {
    border: 0;
    box-shadow: none;
    padding-inline: .75rem;
  }

  .header-actions {
    padding-block: .75rem 1rem;
  }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
  .home-hero {
    min-height: auto;
  }

  .home-hero-grid,
  .home-editorial-grid,
  .previous-grid {
    grid-template-columns: 1fr;
  }

  .hero-visual {
    min-height: 280px;
  }

  .previous-copy {
    position: static;
  }

  [dir="rtl"] .hero-geometry {
    transform: scale(1.04) scaleX(-1);
  }
}

@media (min-width: 1200px) and (max-width: 1366px) {
  .brand-logo {
    height: 58px;
    max-width: 150px;
  }

  .nav-link,
  .dropdown-item {
    font-size: .8rem;
  }

  .home-title {
    font-size: clamp(3.2rem, 4.8vw, 4.8rem);
  }

  .navbar-nav {
    gap: .18rem;
  }

  .header-actions .btn {
    padding-inline: .65rem;
  }

  .internal-hero {
    grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
    min-height: 340px;
    padding: 2.45rem 3rem;
  }

  .page-hero h1 {
    font-size: clamp(3.2rem, 4.6vw, 4.7rem);
  }

  .people-grid {
    gap: 1rem;
  }

  .programme-panel{
    min-height: 330px;
  }

  .editorial-layout,
  .agenda-layout,
  .legal-layout,
  .form-layout,
  .sponsor-layout {
    gap: 2.4rem;
  }
}

/* Premium glass redesign pass */
body {
  background:
    radial-gradient(circle at 14% 8%, rgba(245, 82, 0, .08), transparent 22rem),
    linear-gradient(180deg, rgba(255,255,255,.96), rgba(251,248,246,.98) 34rem),
    url("../img/brand/darbd-geometric-background.png") top right / min(58rem, 100vw) auto no-repeat,
    var(--surface-page);
}

.container {
  --bs-gutter-x: clamp(1.25rem, 3vw, 4rem);
}

.site-header {
  background: linear-gradient(180deg, rgba(255,255,255,.86), rgba(255,255,255,.68));
  border-bottom: 1px solid rgba(119, 0, 12, .12);
  box-shadow: 0 12px 35px rgba(58, 2, 5, .05);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
  transition:
    background-color var(--motion-standard) var(--ease-standard),
    box-shadow var(--motion-standard) var(--ease-standard),
    border-color var(--motion-standard) var(--ease-standard);
}

.site-header::after {
  position: absolute;
  inset-inline: 0;
  inset-block-end: -1px;
  height: 1px;
  content: "";
  background: linear-gradient(90deg, transparent, rgba(245,82,0,.45), transparent);
  opacity: .48;
}

.site-header.is-scrolled,
.site-header.is-condensed {
  background: rgba(255,255,255,.78);
  border-bottom-color: rgba(119, 0, 12, .18);
  box-shadow: 0 18px 52px rgba(58, 2, 5, .12);
}

.premium-navbar {
  min-height: var(--header-height);
  padding-block: .72rem;
}

.site-header.is-condensed .premium-navbar {
  padding-block: .54rem;
}

.header-container {
  gap: clamp(.75rem, 1.6vw, 1.35rem);
}

.navbar-brand {
  padding: .2rem .55rem .2rem 0;
}

[dir="rtl"] .navbar-brand {
  padding: .2rem 0 .2rem .55rem;
}

.brand-logo {
  height: 58px;
  max-width: 158px;
}

.site-header.is-condensed .brand-logo {
  height: 50px;
  max-width: 140px;
}

.primary-nav {
  gap: .18rem;
  padding: .25rem;
  border: 1px solid rgba(119, 0, 12, .08);
  border-radius: 999px;
  background: rgba(255,255,255,.44);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.74);
}

.nav-link {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: .56rem .78rem;
  color: #352d2b;
  font-size: .82rem;
  font-weight: 650;
  letter-spacing: 0;
  transition:
    color var(--motion-fast) var(--ease-standard),
    background-color var(--motion-fast) var(--ease-standard),
    box-shadow var(--motion-fast) var(--ease-standard),
    transform var(--motion-fast) var(--ease-standard);
}

.nav-link::after {
  inset-inline: .82rem;
  inset-block-end: .36rem;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--ciarb-hero-red), var(--darbd-orange));
}

.nav-link:hover,
.nav-link:focus-visible,
.nav-link.active,
.nav-button[aria-expanded="true"] {
  color: var(--ciarb-deep-red);
  background: rgba(119, 0, 12, .07);
  box-shadow: inset 0 0 0 1px rgba(119, 0, 12, .08);
}

.nav-link.active {
  background: linear-gradient(180deg, rgba(119,0,12,.11), rgba(245,82,0,.055));
}

.dropdown-menu {
  margin-block-start: .55rem;
  padding: .55rem;
  border: 1px solid rgba(119, 0, 12, .12);
  border-radius: var(--radius-md);
  background: rgba(255,255,255,.92);
  box-shadow: var(--shadow-medium);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.dropdown-item {
  min-height: 40px;
  display: flex;
  align-items: center;
  border-radius: var(--radius-sm);
  padding: .58rem .7rem;
  color: #352d2b;
  font-weight: 600;
}

.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active {
  color: var(--ciarb-deep-red);
  background: rgba(119, 0, 12, .08);
}

.header-actions {
  align-items: center;
  min-width: max-content;
}

.header-actions .btn,
.hero-actions .btn,
.cta-band .btn {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  padding-inline: 1rem;
  white-space: nowrap;
}

.btn {
  border-radius: 999px;
  letter-spacing: 0;
  box-shadow: 0 10px 22px rgba(58, 2, 5, .06);
}

.btn:focus-visible,
.nav-link:focus-visible,
.dropdown-item:focus-visible,
.footer-group a:focus-visible,
.text-link:focus-visible {
  outline: 3px solid rgba(245, 82, 0, .42);
  outline-offset: 3px;
}

.btn-primary {
  --bs-btn-bg: linear-gradient(135deg, var(--ciarb-hero-red), var(--ciarb-deep-red));
  --bs-btn-border-color: rgba(119, 0, 12, .88);
  --bs-btn-hover-bg: linear-gradient(135deg, var(--darbd-burgundy-2), var(--darbd-burgundy));
  --bs-btn-hover-border-color: var(--darbd-burgundy-2);
  background-image: linear-gradient(135deg, var(--ciarb-hero-red), var(--ciarb-deep-red));
  box-shadow: 0 14px 30px rgba(119, 0, 12, .2);
}

.btn-primary:hover,
.btn-primary:focus-visible {
  background-image: linear-gradient(135deg, var(--darbd-burgundy-2), var(--darbd-burgundy));
}

.nav-control {
  color: var(--ciarb-deep-red);
  background: rgba(255,255,255,.58);
  border-color: rgba(119, 0, 12, .24);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.86), 0 12px 26px rgba(58,2,5,.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.register-cta {
  min-width: 104px;
}

.menu-trigger {
  width: 46px;
  height: 46px;
  position: relative;
  border: 1px solid rgba(119, 0, 12, .16);
  border-radius: 999px;
  background: rgba(255,255,255,.64);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.82), 0 12px 26px rgba(58,2,5,.08);
}

.menu-trigger::before,
.menu-trigger::after {
  position: absolute;
  inset-inline: 13px;
  height: 2px;
  content: "";
  border-radius: 999px;
  background: var(--ciarb-deep-red);
  transition: transform var(--motion-fast) var(--ease-standard), inset var(--motion-fast) var(--ease-standard);
}

.menu-trigger::before {
  inset-block-start: 16px;
}

.menu-trigger::after {
  inset-block-end: 16px;
}

.menu-trigger.is-active::before,
.menu-trigger[aria-expanded="true"]::before {
  inset-block-start: 21px;
  transform: rotate(45deg);
}

.menu-trigger.is-active::after,
.menu-trigger[aria-expanded="true"]::after {
  inset-block-end: 21px;
  transform: rotate(-45deg);
}

.menu-trigger .navbar-toggler-icon {
  background-image: none;
}

.home-editorial,
.people-section,
.sponsors-section,
.registration-section,
.pathway-section {
  background:
    linear-gradient(180deg, rgba(255,255,255,.82), rgba(251,248,246,.92)),
    radial-gradient(circle at 90% 18%, rgba(119,0,12,.06), transparent 24rem);
}

.home-showcase,
.programme-overview-section,
.agenda-section,
.legal-section,
.form-section {
  background:
    linear-gradient(135deg, rgba(245,238,233,.88), rgba(255,255,255,.95) 46%, rgba(247,231,229,.66));
  border-block: 1px solid rgba(119, 0, 12, .08);
}

.home-editorial-grid,
.previous-grid,
.editorial-layout,
.agenda-layout,
.legal-layout,
.sponsor-layout,
.form-layout {
  align-items: start;
}

.section-heading h2,
.editorial-aside h2,
.agenda-sidebar h2,
.legal-nav h2,
.previous-copy h2,
.home-editorial-copy h2 {
  color: var(--ciarb-deep-red);
  letter-spacing: 0;
}

.action-card,.teaser-panel,.day-card,.index-row,.person-card,.programme-card,.programme-panel,.sponsor-tier,.pdf-card,.info-card,.form-shell,.legal-row,.cta-band{
  border: 1px solid rgba(119, 0, 12, .1);
  border-radius: var(--radius-lg);
  background: var(--surface-card);
  box-shadow: var(--shadow-soft);
}

.action-card,.programme-panel,.person-card,.sponsor-tier{
  position: relative;
  overflow: hidden;
}

.action-card::before,.programme-panel::before,.person-card::before,.sponsor-tier::before{
  position: absolute;
  inset: 0;
  pointer-events: none;
  content: "";
  background:
    linear-gradient(120deg, rgba(255,255,255,.46), transparent 34%),
    radial-gradient(circle at 100% 0, rgba(245,82,0,.12), transparent 15rem);
  opacity: .78;
}

.action-card:hover,.programme-panel:hover,.person-card:hover,.sponsor-tier:hover,.index-row:hover,.legal-row:hover{
  transform: translateY(-3px);
  box-shadow: var(--shadow-medium);
}

.home-day-summary {
  border-radius: var(--radius-xl);
  padding: clamp(1rem, 2.4vw, 1.8rem);
  background: linear-gradient(145deg, rgba(58,2,5,.96), rgba(119,0,12,.9));
  box-shadow: var(--shadow-deep);
}

.day-card {
  color: var(--ciarb-white);
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.16);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.16);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.day-card a,
.teaser-panel-dark a {
  color: var(--ciarb-white);
}

.workshop-disclaimer,
.status-note {
  border-radius: var(--radius-md);
  border: 1px solid rgba(245, 82, 0, .18);
  background: linear-gradient(135deg, rgba(255,255,255,.82), rgba(247,231,229,.7));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}

.internal-hero,
.home-hero {
  box-shadow: inset 0 -1px 0 rgba(255,255,255,.1);
}

.internal-hero-panel,
.hero-facts {
  background: var(--glass-deep);
  border-color: var(--glass-border-deep);
  box-shadow: var(--shadow-deep), inset 0 1px 0 rgba(255,255,255,.16);
  backdrop-filter: blur(16px) saturate(1.12);
  -webkit-backdrop-filter: blur(16px) saturate(1.12);
}

.photo-placeholder {
  border-radius: var(--radius-lg);
  background:
    linear-gradient(145deg, rgba(58,2,5,.96), rgba(119,0,12,.82)),
    linear-gradient(90deg, transparent, rgba(245,82,0,.22));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.16);
}

.programme-card {
  border-inline-start: 4px solid var(--darbd-orange);
}

[dir="rtl"] .programme-card {
  border-inline-start: 0;
  border-inline-end: 4px solid var(--darbd-orange);
}

.panel-index,
.section-index {
  color: var(--darbd-orange);
}

.form-shell {
  background: #fff;
  box-shadow: var(--shadow-medium);
}

.form-control,
.form-select {
  min-height: 46px;
  border-color: rgba(119, 0, 12, .16);
  border-radius: var(--radius-sm);
  background-color: rgba(255,255,255,.96);
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: rgba(245, 82, 0, .72);
  box-shadow: 0 0 0 .22rem rgba(245, 82, 0, .14);
}

.site-footer .footer-backdrop {
  position: absolute;
  inset: 0;
  pointer-events: none;
  content: "";
  background-image:
    linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px),
    linear-gradient(135deg, transparent 42%, rgba(245,82,0,.18) 42.2%, transparent 42.8%);
  background-size: 68px 68px, 68px 68px, 520px 520px;
  opacity: .48;
}

.site-footer {
  position: relative;
  overflow: hidden;
  padding-block: clamp(3rem, 5vw, 4.8rem) 1.5rem;
  color: rgba(255,255,255,.8);
  background:
    radial-gradient(circle at 86% 20%, rgba(245,82,0,.2), transparent 22rem),
    linear-gradient(135deg, #250003, #65000a 58%, #360004);
}

.site-footer .container {
  position: relative;
}

.footer-main {
  display: grid;
  grid-template-columns: minmax(300px, 440px) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}

.footer-brand-panel {
  display: grid;
  gap: 1.15rem;
  padding: clamp(1.3rem, 2vw, 1.8rem);
  border: 1px solid rgba(255,255,255,.14);
  border-radius: var(--radius-xl);
  background: rgba(255,255,255,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14);
}

.footer-logo {
  height: 58px;
  max-width: 168px;
  padding: .45rem .62rem;
  border-radius: var(--radius-sm);
  background: rgba(255,255,255,.95);
}

.footer-brand-panel h2 {
  color: var(--ciarb-white);
  font-size: clamp(1.6rem, 2vw, 2.2rem);
}

.footer-brand-panel p {
  max-width: 34rem;
  margin: 0;
  color: rgba(255,255,255,.78);
}

.footer-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.footer-meta span {
  padding: .48rem .68rem;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px;
  color: rgba(255,255,255,.84);
  background: rgba(255,255,255,.07);
  font-size: .86rem;
  font-weight: 650;
}

.footer-link-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1.2rem, 2.5vw, 2.5rem);
}

.footer-group h3 {
  margin-block-end: .95rem;
  color: var(--ciarb-white);
  font-size: .82rem;
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}

[dir="rtl"] .footer-group h3 {
  letter-spacing: 0;
}

.footer-group li + li {
  margin-block-start: .52rem;
}

.site-footer a {
  color: rgba(255,255,255,.82);
  text-decoration: none;
}

.site-footer a:hover,
.site-footer a:focus-visible {
  color: var(--ciarb-white);
  text-decoration: none;
}

.footer-group a {
  display: inline-flex;
  min-height: 30px;
  align-items: center;
  border-radius: 999px;
  transition:
    color var(--motion-fast) var(--ease-standard),
    padding var(--motion-fast) var(--ease-standard),
    background-color var(--motion-fast) var(--ease-standard);
}

.footer-group a:hover,
.footer-group a:focus-visible {
  padding-inline: .55rem;
  background: rgba(255,255,255,.08);
}

.footer-lower {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-block-start: clamp(2.4rem, 4vw, 4rem);
  padding-block-start: 1.2rem;
  border-top: 1px solid rgba(255,255,255,.14);
  color: rgba(255,255,255,.62);
  font-size: .9rem;
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header,
  .dropdown-menu,
  .nav-control,
  .internal-hero-panel,
  .hero-facts,
  .day-card {
    background: rgba(255,255,255,.96);
  }

  .internal-hero-panel,
  .hero-facts,
  .day-card {
    background: rgba(58, 2, 5, .94);
  }
}

@media (min-width: 1200px) and (max-width: 1366px) {
  .premium-navbar {
    min-height: 74px;
  }

  .brand-logo {
    height: 50px;
    max-width: 136px;
  }

  .primary-nav {
    gap: .08rem;
  }

  .nav-link {
    min-height: 44px;
    padding: .48rem .58rem;
    font-size: .76rem;
  }

  .header-actions .btn {
    min-height: 40px;
    padding-inline: .76rem;
    font-size: .78rem;
  }

  .register-cta {
    min-width: 92px;
  }
}

@media (max-width: 1199.98px) {
  .site-header {
    background: rgba(255,255,255,.88);
  }

  .premium-navbar {
    min-height: 72px;
  }

  .nav-panel {
    position: fixed;
    inset-block-start: 5rem;
    inset-inline: 1rem;
    z-index: 1040;
    margin-block-start: .75rem;
    padding: .85rem;
    max-height: calc(100vh - 6rem);
    overflow-y: auto;
    border: 1px solid rgba(119, 0, 12, .12);
    border-radius: var(--radius-lg);
    background: #fff;
    box-shadow: var(--shadow-medium);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .primary-nav {
    align-items: stretch;
    border-radius: var(--radius-md);
    background: #fff;
  }

  .nav-link {
    width: 100%;
    justify-content: space-between;
    padding: .72rem .9rem;
    white-space: normal;
  }

  .header-actions {
    align-items: stretch;
    padding-block-start: .75rem;
  }

  .header-actions .btn {
    width: 100%;
  }

  body.is-nav-open {
    overflow: hidden;
  }

  .footer-main {
    grid-template-columns: 1fr;
  }

  .footer-link-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767.98px) {
  .premium-navbar > .header-container,
  .navbar > .header-container {
    position: relative;
    flex-wrap: nowrap;
    align-items: center;
    padding-inline-end: 4.25rem;
  }

  .navbar-brand {
    flex: 1 1 auto;
    max-width: calc(100% - 54px);
    min-width: 0;
  }

  .brand-event {
    min-width: 0;
  }

  .brand-title {
    max-width: 12rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .brand-logo {
    height: 46px;
    max-width: 126px;
  }

  .premium-navbar {
    min-height: 66px;
    padding-block: .5rem;
  }

  .menu-trigger {
    width: 42px;
    height: 42px;
    display: inline-flex !important;
    position: fixed;
    inset-block-start: .72rem;
    inset-inline-end: 1rem;
    flex: 0 0 42px;
    align-items: center;
    justify-content: center;
    margin-inline-start: auto;
    opacity: 1;
    visibility: visible;
    transform: none;
    z-index: 8;
  }

  .menu-trigger .navbar-toggler-icon {
    width: 1.15em;
    height: 1.15em;
  }

  .home-title {
    max-width: 100%;
    font-size: clamp(2.35rem, 10.8vw, 3rem);
    overflow-wrap: anywhere;
  }

  .home-title span:first-child {
    white-space: normal;
  }

  .hero-copy {
    max-width: 100%;
  }

  .footer-brand-panel {
    border-radius: var(--radius-lg);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .footer-lower {
    flex-direction: column;
  }

  .footer-link-grid {
    grid-template-columns: 1fr;
  }

  .footer-group h3 {
    margin-block-end: .55rem;
  }

  .footer-group li + li {
    margin-block-start: .25rem;
  }
}

/* Customer brief visual correction pass */
:root {
  --darbd-brief-burgundy: #4b0008;
  --darbd-brief-burgundy-2: #72000d;
  --darbd-brief-burgundy-3: #9a0b1d;
  --darbd-brief-gold: #c8891e;
  --darbd-brief-gold-soft: #e3b766;
  --darbd-brief-cream: #f8f2eb;
  --darbd-brief-ink: #2e2421;
  --radius-institutional: .72rem;
  --radius-institutional-lg: .95rem;
}

.home-hero,
.internal-hero,
.site-footer {
  background-image:
    radial-gradient(circle at 78% 22%, rgba(200,137,30,.14), transparent 22rem),
    radial-gradient(circle at 14% 108%, rgba(154,11,29,.36), transparent 32rem),
    linear-gradient(135deg, #320005 0%, var(--darbd-brief-burgundy) 48%, #1d0003 100%);
}

/* Gold as text colour for labels. The time badge is deliberately absent: it
   sets gold-on-wine, which no gold in the palette clears at label size. */
.kicker,
.eyebrow,
.hero-label,
.home-title span:last-child,
.section-index,
.panel-index {
  color: var(--darbd-brief-gold);
}

/* Gold as a painted rule. Decorative pseudo-elements only. */
.home-editorial h2::after,
.section-heading h2::after,
.previous-copy h2::after,
.nav-link::after {
  background: var(--darbd-brief-gold);
}

.breadcrumb-wrap {
  padding-block: .6rem;
  background:
    linear-gradient(90deg, rgba(75,0,8,.055), rgba(248,242,235,.76), rgba(75,0,8,.035));
  border-block: 1px solid rgba(75,0,8,.1);
}

.breadcrumb {
  display: inline-flex;
  max-width: 100%;
  flex-wrap: wrap;
  gap: .35rem;
  align-items: center;
  padding: .32rem .5rem;
  border: 1px solid rgba(75,0,8,.12);
  border-radius: 999px;
  background: rgba(255,255,255,.78);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85);
}

.breadcrumb-item {
  display: inline-flex;
  align-items: center;
  color: rgba(46,36,33,.72);
  font-weight: 650;
}

.breadcrumb-item a {
  color: var(--darbd-brief-burgundy-2);
  text-decoration: none;
}

.breadcrumb-item a:hover,
.breadcrumb-item a:focus-visible {
  color: var(--darbd-brief-burgundy);
  text-decoration: none;
}

.breadcrumb-item + .breadcrumb-item::before {
  color: rgba(75,0,8,.42);
  content: "/";
}

[dir="rtl"] .breadcrumb {
  direction: rtl;
}

[dir="rtl"] .breadcrumb-item + .breadcrumb-item::before {
  content: "/";
  padding-inline: .35rem;
}

.internal-hero {
  min-height: clamp(300px, 36vw, 440px);
  border-radius: var(--radius-institutional-lg);
  background:
    radial-gradient(circle at 78% 22%, rgba(200,137,30,.12), transparent 18rem),
    linear-gradient(135deg, rgba(50,0,5,.98), rgba(91,0,11,.96) 58%, rgba(25,0,3,.98));
}

.internal-hero-copy {
  max-width: 760px;
}

.page-hero h1 {
  max-width: 11ch;
  font-size: clamp(2.45rem, 4.35vw, 4.35rem);
  line-height: .98;
}

/* Arabic display headings need more leading than Latin ones. Cairo's
   Arabic ascenders (ل, ك) and descenders (و, م, ي) reach well past the
   Latin cap/baseline band, so the .98 display line-height above makes
   consecutive lines overlap - verified on /ar/media/1st-arbitration-day/
   where "اليوم الأول" collided with "للتحكيم". Latin headings keep the
   tighter display setting. */
[dir="rtl"] .page-hero h1,
[dir="rtl"] .programme-preview-copy h2 {
  line-height: 1.3;
}

.section-index {
  display: inline-flex;
  width: fit-content;
  margin-block: .1rem .55rem;
  padding: .28rem .55rem;
  border: 1px solid rgba(200,137,30,.32);
  border-radius: 999px;
  background: rgba(255,255,255,.055);
  font-size: .82rem;
  font-weight: 800;
  line-height: 1;
  opacity: 1;
}

.internal-hero-panel {
  align-self: center;
  padding: clamp(1rem, 2vw, 1.35rem);
  border-radius: var(--radius-institutional);
  background:
    linear-gradient(150deg, rgba(255,255,255,.12), rgba(255,255,255,.045)),
    rgba(45,0,5,.72);
}

.internal-hero-panel p {
  color: var(--ciarb-white);
  font-size: .88rem;
  letter-spacing: .05em;
}

.hero-chip-list span {
  color: rgba(255,255,255,.84);
  border-color: rgba(227,183,102,.28);
  background: rgba(255,255,255,.055);
}

.patronage-strip {
  padding-block: clamp(2.2rem, 4vw, 3.5rem);
  background: var(--darbd-brief-cream);
  border-block: 1px solid rgba(75,0,8,.09);
}

.patronage-shell {
  display: grid;
  grid-template-columns: minmax(180px, 260px) minmax(0, 1fr);
  gap: clamp(1rem, 3vw, 2rem);
  align-items: start;
  padding: clamp(1rem, 2vw, 1.4rem);
  border: 1px solid rgba(75,0,8,.12);
  border-radius: var(--radius-institutional-lg);
  background: rgba(255,255,255,.72);
  box-shadow: var(--shadow-soft);
}

.patronage-items {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}

.patronage-items article {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .75rem;
  align-items: start;
  padding: .9rem 1rem;
  border: 1px solid rgba(75,0,8,.1);
  border-radius: var(--radius-institutional);
  background: #fff;
}

.patronage-items span {
  color: var(--darbd-brief-gold);
  font-weight: 800;
}

.patronage-items p {
  margin: 0;
  color: #544744;
  line-height: 1.65;
}

.home-day-summary {
  gap: .9rem;
  padding: clamp(1rem, 2vw, 1.35rem);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: var(--radius-institutional-lg);
  background:
    linear-gradient(155deg, rgba(255,255,255,.08), rgba(255,255,255,.025)),
    rgba(40,0,5,.74);
}

.home-day-summary article,
.day-card {
  border: 0;
}

.home-day-summary article:first-child {
  padding-block-start: 0;
  border-block-start: 0;
}

.day-card {
  display: grid;
  gap: .35rem;
  padding: 1rem;
  border-radius: var(--radius-institutional);
  background: rgba(255,255,255,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
}

.day-card-two {
  border-inline-start: 3px solid var(--darbd-brief-gold);
}

.home-day-summary p,
.day-card-two p,
.day-card-two a {
  color: var(--darbd-brief-gold-soft);
}

.home-day-summary h3 {
  color: #fff;
  font-size: clamp(1.05rem, 1.55vw, 1.35rem);
}

.home-day-summary span {
  color: rgba(255,255,255,.82);
}

.home-day-summary a,
.programme-preview-card a,
.home-support-strip a {
  width: fit-content;
  margin-block-start: .35rem;
  padding: .42rem .7rem;
  border: 1px solid rgba(200,137,30,.35);
  border-radius: 999px;
  color: #fff;
  background: rgba(200,137,30,.14);
  text-decoration: none;
  font-size: .86rem;
  font-weight: 750;
}

.workshop-disclaimer {
  border-color: rgba(200,137,30,.24);
  border-inline-start-color: var(--darbd-brief-gold);
  color: rgba(255,255,255,.86);
  background: rgba(255,255,255,.06);
}

.programme-preview {
  display: grid;
  grid-template-columns: minmax(280px, .68fr) minmax(0, 1fr);
  gap: clamp(1.2rem, 3vw, 2rem);
  align-items: stretch;
}

.programme-preview-copy,
.programme-preview-card,
.home-support-strip article {
  border: 1px solid rgba(75,0,8,.12);
  border-radius: var(--radius-institutional-lg);
  background: rgba(255,255,255,.94);
  box-shadow: var(--shadow-soft);
}

.programme-preview-copy {
  padding: clamp(1.35rem, 3vw, 2.2rem);
}

.programme-preview-copy h2 {
  max-width: 10ch;
  color: var(--darbd-brief-burgundy);
  font-size: clamp(2.2rem, 4vw, 4rem);
  line-height: .98;
}

.programme-preview-copy p:not(.kicker) {
  color: #544744;
  line-height: 1.78;
}

.programme-preview-days {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .9rem;
}

.programme-preview-card {
  position: relative;
  overflow: hidden;
  display: grid;
  align-content: start;
  gap: .45rem;
  min-height: 260px;
  padding: clamp(1.15rem, 2vw, 1.6rem);
  background:
    linear-gradient(145deg, #fff, rgba(248,242,235,.92));
}

.programme-preview-card::after {
  position: absolute;
  inset: auto -12% -18% auto;
  width: 13rem;
  height: 13rem;
  content: "";
  border: 1px solid rgba(75,0,8,.12);
  border-radius: 50%;
}

.programme-preview-card > span {
  color: rgba(75,0,8,.22);
  font-size: clamp(3rem, 6vw, 6rem);
  font-weight: 800;
  line-height: .8;
}

.programme-preview-card p {
  margin: 0;
  color: var(--darbd-brief-gold);
  font-weight: 800;
  text-transform: uppercase;
}

[dir="rtl"] .programme-preview-card p {
  letter-spacing: 0;
}

.programme-preview-card h3 {
  margin: 0;
  color: var(--darbd-brief-burgundy);
}

.programme-preview-card small,
.home-support-strip span {
  color: #5b514d;
  line-height: 1.65;
}

.programme-preview-card a,
.home-support-strip a {
  color: var(--darbd-brief-burgundy);
  background: rgba(200,137,30,.12);
}

.home-support-strip {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .9rem;
}

.home-support-strip article {
  padding: 1.05rem 1.15rem;
}

.home-support-strip h3 {
  margin-block: .1rem .35rem;
  color: var(--darbd-brief-burgundy);
}

.sponsor-logo-strip {
  background:
    linear-gradient(135deg, rgba(75,0,8,.05), rgba(255,255,255,.95)),
    #fff;
}

.previous-gallery {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: .9rem;
}

.previous-photo {
  min-height: 0;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-institutional);
  background: #1d0003;
  box-shadow: var(--shadow-soft);
}

.previous-photo-large {
  grid-column: span 4;
  aspect-ratio: 16 / 10;
}

.previous-photo:not(.previous-photo-large) {
  grid-column: span 2;
  aspect-ratio: 4 / 5;
}

.previous-photo img {
  min-height: 0;
  object-fit: cover;
  object-position: 50% 50%;
}

.previous-photo-group img {
  object-position: 50% 38%;
}

.previous-photo-audience img {
  object-position: 50% 42%;
}

.previous-photo-stage img {
  object-position: 50% 48%;
}

.previous-photo figcaption {
  inset-block-start: .75rem;
  inset-inline-start: .75rem;
  padding: .34rem .62rem;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 999px;
  color: #fff;
  background: rgba(75,0,8,.82);
  font-size: .86rem;
}

.btn-primary {
  --bs-btn-bg: var(--darbd-brief-burgundy-2);
  --bs-btn-border-color: var(--darbd-brief-burgundy-2);
  --bs-btn-hover-bg: var(--darbd-brief-burgundy);
  --bs-btn-hover-border-color: var(--darbd-brief-burgundy);
  background-image: linear-gradient(135deg, var(--darbd-brief-burgundy-2), var(--darbd-brief-burgundy));
}

.btn-primary:hover,
.btn-primary:focus-visible {
  background-image: linear-gradient(135deg, var(--darbd-brief-burgundy), #290004);
}

@media (max-width: 1199.98px) {
  .programme-preview,
  .patronage-shell {
    grid-template-columns: 1fr;
  }

  .previous-copy {
    position: static;
  }
}

@media (max-width: 767.98px) {
  .page-hero h1 {
    max-width: 100%;
    font-size: clamp(2rem, 10.5vw, 3rem);
  }

  .section-index {
    font-size: .78rem;
  }

  .internal-hero {
    min-height: 0;
    padding: 1.45rem;
  }

  .internal-hero-panel {
    padding: 1rem;
  }

  .programme-preview-days,
  .home-support-strip,
  .patronage-items,
  .previous-gallery {
    grid-template-columns: 1fr;
  }

  .programme-preview-card {
    min-height: 0;
  }

  .previous-photo,
  .previous-photo-large,
  .previous-photo:not(.previous-photo-large) {
    grid-column: auto;
    aspect-ratio: 4 / 3;
  }

  .home-day-summary {
    border-radius: var(--radius-institutional);
  }
}

/* Brand consistency and responsive polish pass */
:root {
  --brand-wine: #3b0006;
  --brand-wine-2: #5a0009;
  --brand-wine-3: #76000d;
  --brand-ciarb-red: #be0000;
  --brand-gold: #c8891e;
  --brand-gold-readable: #8b5a10;
  --brand-gold-soft: #e2bd72;
  --brand-ivory: #faf5ef;
  --brand-cream: #f6eee7;
  --brand-ink: #2f2724;
  --brand-muted: #5b514d;
  --ciarb-hero-red: var(--brand-ciarb-red);
  --ciarb-deep-red: var(--brand-wine-3);
  --darbd-burgundy: var(--brand-wine);
  --darbd-burgundy-2: var(--brand-wine-2);
  --darbd-burgundy-3: var(--brand-wine-3);
  --darbd-orange: var(--brand-gold);
  --darbd-orange-soft: var(--brand-gold-soft);
  --darbd-brief-burgundy: var(--brand-wine);
  --darbd-brief-burgundy-2: var(--brand-wine-2);
  --darbd-brief-burgundy-3: var(--brand-wine-3);
  --darbd-brief-gold: var(--brand-gold);
  --darbd-brief-gold-soft: var(--brand-gold-soft);
  --darbd-brief-cream: var(--brand-ivory);
  --darbd-brief-ink: var(--brand-ink);
  --radius-institutional: .68rem;
  --radius-institutional-lg: .9rem;
}

body {
  color: var(--brand-ink);
  font-size: 1rem;
  line-height: 1.72;
  background:
    radial-gradient(circle at 14% 8%, rgba(200, 137, 30, .075), transparent 22rem),
    linear-gradient(180deg, rgba(255,255,255,.97), rgba(250,245,239,.98) 34rem),
    url("../img/brand/darbd-geometric-background.png") top right / min(58rem, 100vw) auto no-repeat,
    var(--brand-ivory);
}

[dir="rtl"] body {
  line-height: 1.88;
}

.kicker,
.eyebrow {
  color: var(--brand-gold-readable);
  font-size: clamp(.78rem, .72vw, .86rem);
  letter-spacing: .055em;
}

/* The darker gold above is tuned for the ivory page. Over the wine hero it
   falls to about 2.8:1, so labels there take the soft gold already carried by
   the other dark panels. */
.internal-hero .eyebrow,
.internal-hero .kicker {
  color: var(--brand-gold-soft);
}

[dir="rtl"] .kicker,
[dir="rtl"] .eyebrow {
  letter-spacing: 0;
  font-size: clamp(.86rem, .8vw, .95rem);
}

.home-hero .kicker,
.internal-hero .kicker,
.site-footer .kicker,
.hero-label,
.home-title span:last-child,
.internal-hero .section-index {
  color: var(--brand-gold-soft);
}

.site-header {
  background: linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.78));
  border-bottom-color: rgba(59, 0, 6, .12);
}

.site-header::after {
  background: linear-gradient(90deg, transparent, rgba(200,137,30,.52), transparent);
}

.site-header.is-scrolled,
.site-header.is-condensed {
  background: rgba(255,255,255,.985);
  border-bottom-color: rgba(59, 0, 6, .18);
}

.primary-nav {
  gap: .22rem;
  border-color: rgba(59, 0, 6, .1);
  background: rgba(255,255,255,.58);
}

.nav-link {
  min-height: 42px;
  padding: .58rem .82rem;
  color: var(--brand-ink);
  font-size: .875rem;
  font-weight: 650;
}

.nav-link:hover,
.nav-link:focus-visible,
.nav-link.active,
.nav-button[aria-expanded="true"] {
  color: var(--brand-wine-3);
  background: rgba(59, 0, 6, .075);
}

.nav-link.active {
  background: linear-gradient(180deg, rgba(59,0,6,.105), rgba(200,137,30,.07));
}

.dropdown-item {
  color: var(--brand-ink);
  font-size: .92rem;
}

.nav-control,
.btn-outline-primary {
  color: var(--brand-wine-3);
  border-color: rgba(59, 0, 6, .28);
}

.btn:focus-visible,
.nav-link:focus-visible,
.dropdown-item:focus-visible,
.footer-group a:focus-visible,
.text-link:focus-visible,
.home-day-summary a:focus-visible,
.programme-preview-card a:focus-visible,
.home-support-strip a:focus-visible,
.breadcrumb-item a:focus-visible {
  outline: 3px solid rgba(200, 137, 30, .46);
  outline-offset: 3px;
}

.home-day-summary {
  background:
    linear-gradient(155deg, rgba(255,255,255,.075), rgba(255,255,255,.025)),
    linear-gradient(145deg, rgba(59,0,6,.95), rgba(90,0,9,.9));
}

.day-card {
  padding: clamp(1rem, 1.8vw, 1.25rem);
  background: rgba(255,255,255,.075);
}

.day-card-two {
  border-inline-start-color: var(--brand-gold);
}

.home-day-summary p,
.day-card-two p,
.day-card-two a {
  color: var(--brand-gold-soft);
}

.home-day-summary span {
  color: rgba(255,255,255,.86);
  font-size: .98rem;
  line-height: 1.68;
}

.home-day-summary a,
.programme-preview-card a,
.home-support-strip a {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .42rem .82rem;
  border-color: rgba(200,137,30,.46);
  text-decoration: none;
  transition:
    color var(--motion-fast) var(--ease-standard),
    background-color var(--motion-fast) var(--ease-standard),
    border-color var(--motion-fast) var(--ease-standard),
    transform var(--motion-fast) var(--ease-standard);
}

.home-day-summary a:hover,
.home-day-summary a:focus-visible,
.programme-preview-card a:hover,
.programme-preview-card a:focus-visible,
.home-support-strip a:hover,
.home-support-strip a:focus-visible {
  color: var(--brand-wine);
  border-color: var(--brand-gold);
  background: var(--brand-gold-soft);
  transform: translateY(-1px);
}

.workshop-disclaimer {
  color: rgba(255,255,255,.9);
  background: rgba(255,255,255,.075);
}

.home-showcase {
  padding-block: clamp(3.2rem, 5vw, 5rem);
  background:
    linear-gradient(135deg, rgba(250,245,239,.94), rgba(255,255,255,.98) 48%, rgba(246,238,231,.86));
}

.home-showcase + .section-neutral {
  padding-block-start: clamp(2.4rem, 4vw, 3.8rem);
}

.programme-preview {
  grid-template-columns: minmax(290px, .62fr) minmax(0, 1fr);
  gap: clamp(1rem, 2.3vw, 1.65rem);
}

.programme-preview-copy,
.programme-preview-card,
.home-support-strip article {
  border-color: rgba(59, 0, 6, .12);
  background: rgba(255,255,255,.96);
}

.programme-preview-copy {
  background:
    linear-gradient(145deg, rgba(255,255,255,.96), rgba(250,245,239,.92)),
    var(--brand-ivory);
}

.programme-preview-copy h2 {
  color: var(--brand-wine-2);
  font-size: clamp(2rem, 3.45vw, 3.45rem);
}

.programme-preview-copy p:not(.kicker),.previous-copy p,.programme-preview-card small,.home-support-strip span,.source-note,.info-card p,.pdf-card p,.person-card-copy p,.index-row p,.legal-row p,.programme-panel p{
  color: var(--brand-muted);
  font-size: clamp(.98rem, .92vw, 1.05rem);
  line-height: 1.78;
}

.programme-preview-card {
  min-height: 238px;
  padding: clamp(1.1rem, 1.85vw, 1.45rem);
}

.programme-preview-card > span {
  color: rgba(59, 0, 6, .3);
  font-size: clamp(3.2rem, 5vw, 5.4rem);
}

.programme-preview-card p {
  color: var(--brand-gold-readable);
  font-size: .84rem;
  letter-spacing: .045em;
}

.programme-preview-card h3,
.home-support-strip h3,
.section-heading h2,
.editorial-aside h2,
.agenda-sidebar h2,
.legal-nav h2,
.previous-copy h2,
.home-editorial-copy h2 {
  color: var(--brand-wine-2);
}

.programme-preview-card a,
.home-support-strip a {
  color: var(--brand-wine-3);
  background: rgba(200,137,30,.13);
}

.previous-gallery {
  display: grid;
  grid-template-columns: minmax(0, 1.24fr) minmax(240px, .76fr);
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: clamp(.75rem, 1.4vw, 1rem);
  min-height: clamp(31rem, 42vw, 38rem);
}

.previous-photo {
  min-height: 0;
  border: 1px solid rgba(59, 0, 6, .16);
  border-radius: var(--radius-institutional);
  background: var(--brand-wine);
  box-shadow: 0 18px 42px rgba(59, 0, 6, .1);
}

.previous-photo-large {
  grid-column: 1;
  grid-row: 1 / 3;
  aspect-ratio: auto;
}

.previous-photo:not(.previous-photo-large) {
  grid-column: 2;
  aspect-ratio: auto;
}

.previous-photo img {
  width: 100%;
  height: 100%;
  min-height: 0;
  transform-origin: var(--gallery-origin, 50% 50%);
  transform: translateY(var(--photo-y, 0)) scale(var(--gallery-scale, 1));
  filter: saturate(1.03) contrast(1.02) brightness(1.01);
}

.previous-photo:hover img {
  filter: saturate(1.07) contrast(1.04) brightness(1.02);
  transform: translateY(var(--photo-y, 0)) scale(var(--gallery-hover-scale, 1.025));
}

.previous-photo-group img {
  object-position: 50% 39%;
}

.previous-photo-audience img {
  object-position: 52% 43%;
}

.previous-photo-stage img {
  object-position: 50% 50%;
}

.previous-photo-stage {
  --gallery-scale: 1.48;
  --gallery-hover-scale: 1.52;
  --gallery-origin: 52% 18%;
}

.previous-photo figcaption {
  inset-block-start: .85rem;
  inset-inline-start: .85rem;
  padding: .38rem .68rem;
  border-color: rgba(255,255,255,.34);
  color: #fff;
  background: rgba(59,0,6,.86);
  font-size: .9rem;
  line-height: 1;
}

/* A darker gold, for gold text on light backgrounds. The time badge is not one
   of those: it sits on a wine fill and sets its own colour. */
.panel-index,
.section-index {
  color: var(--brand-gold-readable);
}

.programme-card {
  border-inline-start-color: var(--brand-gold);
}

[dir="rtl"] .programme-card {
  border-inline-end-color: var(--brand-gold);
}

.action-card,.teaser-panel,.index-row,.person-card,.programme-card,.programme-panel,.sponsor-tier,.pdf-card,.info-card,.form-shell,.legal-row,.cta-band{
  border-color: rgba(59, 0, 6, .11);
  border-radius: var(--radius-institutional-lg);
}

.person-card h3,.programme-card h2,.programme-panel h2,.sponsor-tier h2,.info-card h2,.info-card h3,.pdf-card h2,.legal-row h2,.index-row h3{
  color: var(--brand-wine-2);
}

.site-footer {
  background-image:
    radial-gradient(circle at 82% 18%, rgba(200,137,30,.16), transparent 23rem),
    radial-gradient(circle at 12% 100%, rgba(118,0,13,.42), transparent 30rem),
    linear-gradient(135deg, #250003 0%, var(--brand-wine-2) 54%, #180002 100%);
}

.site-footer .footer-backdrop {
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(135deg, transparent 42%, rgba(200,137,30,.15) 42.2%, transparent 42.8%);
}

.footer-main {
  grid-template-columns: minmax(320px, 470px) minmax(0, 1fr);
  gap: clamp(2rem, 4vw, 4.5rem);
}

.footer-brand-panel {
  border-radius: var(--radius-institutional-lg);
  background: rgba(255,255,255,.085);
}

.footer-brand-panel p {
  color: rgba(255,255,255,.84);
  font-size: 1rem;
  line-height: 1.75;
}

.footer-group h3 {
  margin-block-end: .8rem;
  color: #fff;
  font-size: .88rem;
  letter-spacing: .055em;
}

.footer-group li + li {
  margin-block-start: .42rem;
}

.site-footer a,
.footer-group a {
  color: rgba(255,255,255,.88);
  font-size: .96rem;
  line-height: 1.45;
}

.footer-meta span,
.footer-lower {
  color: rgba(255,255,255,.74);
}

/* Button system correction: concrete state colors prevent Bootstrap variable cascade regressions. */
:root {
  --button-radius: 999px;
  --button-border-width: 1.5px;
  --button-focus-ring: rgba(226, 189, 114, .74);
  --button-primary-bg: var(--brand-wine-2);
  --button-primary-bg-hover: var(--brand-wine);
  --button-primary-text: #fff;
  --button-primary-border: rgba(75, 0, 8, .95);
  --button-primary-shadow: 0 10px 22px rgba(59, 0, 6, .16);
  --button-secondary-text: var(--brand-wine-3);
  --button-secondary-bg: rgba(255, 255, 255, .72);
  --button-secondary-border: rgba(59, 0, 6, .34);
  --button-secondary-hover-bg: var(--brand-wine-2);
  --button-secondary-hover-text: #fff;
  --button-dark-secondary-bg: rgba(255, 255, 255, .94);
  --button-dark-secondary-text: var(--brand-wine-3);
  --button-dark-secondary-border: rgba(255, 255, 255, .86);
  --button-dark-secondary-hover-bg: #fff;
  --button-dark-secondary-hover-text: var(--brand-wine);
  --button-disabled-bg: #eee8e4;
  --button-disabled-text: #645a56;
  --button-disabled-border: #d3c8c2;
}

.btn,
.btn:visited {
  min-height: 44px;
  border-width: var(--button-border-width);
  border-radius: var(--button-radius);
  padding: .64rem 1.08rem;
  font-size: clamp(.94rem, .9vw, 1rem);
  font-weight: 750;
  line-height: 1.18;
  letter-spacing: 0;
  text-decoration: none;
  white-space: normal;
  box-shadow: none;
  transition:
    color 140ms var(--ease-standard),
    background-color 140ms var(--ease-standard),
    border-color 140ms var(--ease-standard);
}

.btn:hover,
.btn:focus-visible {
  text-decoration: none;
  transform: none;
}

.btn:active {
  transform: none;
}

.btn-sm,
.btn-sm:visited {
  min-height: 40px;
  padding: .48rem .82rem;
  font-size: .86rem;
}

.btn-lg,
.btn-lg:visited {
  min-height: 48px;
  padding: .76rem 1.22rem;
  font-size: clamp(1rem, 1.05vw, 1.12rem);
}

.btn-primary,
.btn-primary:visited,
button.btn-primary {
  color: var(--button-primary-text);
  background-color: var(--button-primary-bg);
  background-image: linear-gradient(135deg, var(--button-primary-bg), var(--ciarb-deep-red));
  border-color: var(--button-primary-border);
  box-shadow: var(--button-primary-shadow);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:focus-visible,
.btn-primary:active,
button.btn-primary:hover,
button.btn-primary:focus-visible,
button.btn-primary:active {
  color: var(--button-primary-text);
  background-color: var(--button-primary-bg-hover);
  background-image: linear-gradient(135deg, var(--button-primary-bg-hover), var(--darbd-burgundy));
  border-color: var(--button-primary-bg-hover);
}

.btn-outline-primary,
.btn-outline-primary:visited,
.btn-outline-light,
.btn-outline-light:visited {
  color: var(--button-secondary-text);
  background-color: var(--button-secondary-bg);
  background-image: none;
  border-color: var(--button-secondary-border);
}

.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:focus-visible,
.btn-outline-primary:active,
.btn-outline-light:hover,
.btn-outline-light:focus,
.btn-outline-light:focus-visible,
.btn-outline-light:active {
  color: var(--button-secondary-hover-text);
  background-color: var(--button-secondary-hover-bg);
  border-color: var(--button-secondary-hover-bg);
}

/* ---------------------------------------------------------------------------
   Press-state contract (MAQA-002).

   Bootstrap resolves :active through selectors of its own that outrank
   anything reasonable this stylesheet can write:

       :not(.btn-check) + .btn:active   (0,3,0)
       .btn:first-child:active          (0,2,1)

   Both beat the (0,2,0) `.btn-*:active` rules above regardless of source
   order, so every button on the site fell through to Bootstrap's stock
   `--bs-btn-active-*` values and flashed #0d6efd / #0a58ca on mouse-down —
   296 controls across all 41 routes, both languages. It presented as a blue
   fill on the outline pills and a blue border ring on Register.

   Rather than escalate the selector war or reach for !important, the press
   state is supplied through the very variables Bootstrap's own winning rule
   reads. Bootstrap keeps its specificity and resolves brand values, so the
   fix needs no override of its selectors, covers every .btn on every route
   including ones added later, and leaves press feedback intact — the control
   still visibly darkens to the burgundy hover fill when pressed.

   This stylesheet already drives Bootstrap through --bs-btn-* elsewhere
   (.btn-primary, .btn-outline-primary), so this follows the existing idiom.
   --------------------------------------------------------------------------- */
.btn,
.btn:visited {
  --bs-btn-active-color: var(--button-primary-text);
  --bs-btn-active-bg: var(--button-primary-bg-hover);
  --bs-btn-active-border-color: var(--button-primary-bg-hover);
  --bs-btn-focus-shadow-rgb: 190, 0, 0;
}

/* Outline/secondary pills press to the same burgundy fill they hover to. */
.btn-outline-primary,
.btn-outline-light,
.nav-control {
  --bs-btn-active-color: var(--button-secondary-hover-text);
  --bs-btn-active-bg: var(--button-secondary-hover-bg);
  --bs-btn-active-border-color: var(--button-secondary-hover-bg);
}

/* Outline buttons on dark ground invert instead: white fill, burgundy label,
   matching the light-on-dark hover contract defined further down. */
.home-hero .btn-outline-primary,
.internal-hero .btn-outline-primary,
.site-footer .btn-outline-primary,
.home-day-summary .btn-outline-primary,
.day-card .btn-outline-primary,
.teaser-panel-dark .btn-outline-primary,
.customer-hero-actions .btn-outline-light,
.customer-hero-venue-cta {
  --bs-btn-active-color: var(--button-dark-secondary-hover-text);
  --bs-btn-active-bg: var(--button-dark-secondary-hover-bg);
  --bs-btn-active-border-color: var(--button-dark-secondary-hover-bg);
}

.home-hero .hero-actions,
.cta-band-actions {
  position: relative;
  z-index: 2;
}

.home-hero .btn-outline-primary,
.home-hero .btn-outline-primary:visited,
.internal-hero .btn-outline-primary,
.internal-hero .btn-outline-primary:visited,
.site-footer .btn-outline-primary,
.site-footer .btn-outline-primary:visited,
.home-day-summary .btn-outline-primary,
.home-day-summary .btn-outline-primary:visited,
.day-card .btn-outline-primary,
.day-card .btn-outline-primary:visited,
.teaser-panel-dark .btn-outline-primary,
.teaser-panel-dark .btn-outline-primary:visited {
  color: var(--button-dark-secondary-text);
  background-color: var(--button-dark-secondary-bg);
  background-image: none;
  border-color: var(--button-dark-secondary-border);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .82);
}

.home-hero .btn-outline-primary:hover,
.home-hero .btn-outline-primary:focus,
.home-hero .btn-outline-primary:focus-visible,
.home-hero .btn-outline-primary:active,
.internal-hero .btn-outline-primary:hover,
.internal-hero .btn-outline-primary:focus-visible,
.internal-hero .btn-outline-primary:active,
.site-footer .btn-outline-primary:hover,
.site-footer .btn-outline-primary:focus-visible,
.site-footer .btn-outline-primary:active,
.home-day-summary .btn-outline-primary:hover,
.home-day-summary .btn-outline-primary:focus-visible,
.home-day-summary .btn-outline-primary:active,
.day-card .btn-outline-primary:hover,
.day-card .btn-outline-primary:focus-visible,
.day-card .btn-outline-primary:active,
.teaser-panel-dark .btn-outline-primary:hover,
.teaser-panel-dark .btn-outline-primary:focus-visible,
.teaser-panel-dark .btn-outline-primary:active {
  color: var(--button-dark-secondary-hover-text);
  background-color: var(--button-dark-secondary-hover-bg);
  border-color: #fff;
}

.home-hero .btn-primary,
.home-hero .btn-primary:visited,
.site-footer .btn-primary,
.site-footer .btn-primary:visited,
.home-day-summary .btn-primary,
.home-day-summary .btn-primary:visited,
.day-card .btn-primary,
.day-card .btn-primary:visited,
.teaser-panel-dark .btn-primary,
.teaser-panel-dark .btn-primary:visited {
  color: var(--button-primary-text);
  background-color: var(--brand-gold-readable);
  background-image: linear-gradient(135deg, var(--brand-gold-readable), #9b6412);
  border-color: rgba(226, 189, 114, .9);
}

.home-hero .btn-primary:hover,
.home-hero .btn-primary:focus-visible,
.home-hero .btn-primary:active,
.site-footer .btn-primary:hover,
.site-footer .btn-primary:focus-visible,
.site-footer .btn-primary:active,
.home-day-summary .btn-primary:hover,
.home-day-summary .btn-primary:focus-visible,
.home-day-summary .btn-primary:active,
.day-card .btn-primary:hover,
.day-card .btn-primary:focus-visible,
.day-card .btn-primary:active,
.teaser-panel-dark .btn-primary:hover,
.teaser-panel-dark .btn-primary:focus-visible,
.teaser-panel-dark .btn-primary:active {
  color: #fff;
  background-color: var(--button-primary-bg);
  background-image: linear-gradient(135deg, var(--button-primary-bg), var(--darbd-burgundy));
  border-color: rgba(255, 255, 255, .72);
}

.nav-control,
.nav-control:visited {
  min-height: 40px;
  color: var(--brand-wine-3);
  background-color: rgba(255, 255, 255, .86);
  border-color: rgba(59, 0, 6, .24);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .78);
}

.nav-control:hover,
.nav-control:focus-visible,
.nav-control:active {
  color: #fff;
  background-color: var(--brand-wine-2);
  border-color: var(--brand-wine-2);
}

.home-day-summary a:not(.btn),
.day-card a:not(.btn),
.teaser-panel-dark a:not(.btn) {
  color: #fff;
  background-color: rgba(255, 255, 255, .14);
  border-color: rgba(255, 255, 255, .54);
}

.home-day-summary a:not(.btn):hover,
.home-day-summary a:not(.btn):focus-visible,
.day-card a:not(.btn):hover,
.day-card a:not(.btn):focus-visible,
.teaser-panel-dark a:not(.btn):hover,
.teaser-panel-dark a:not(.btn):focus-visible {
  color: var(--brand-wine);
  background-color: #fff;
  border-color: #fff;
}

.programme-preview-card a:not(.btn),
.home-support-strip a:not(.btn) {
  color: var(--brand-wine-3);
  background-color: rgba(255, 255, 255, .92);
  border-color: rgba(59, 0, 6, .24);
}

.programme-preview-card a:not(.btn):hover,
.programme-preview-card a:not(.btn):focus-visible,
.home-support-strip a:not(.btn):hover,
.home-support-strip a:not(.btn):focus-visible {
  color: #fff;
  background-color: var(--brand-wine-2);
  border-color: var(--brand-wine-2);
}

.btn:focus-visible,
.btn-primary:focus-visible,
.btn-outline-primary:focus-visible,
.btn-outline-light:focus-visible,
.nav-control:focus-visible {
  outline: 3px solid var(--button-focus-ring);
  outline-offset: 3px;
}

.btn:disabled,
.btn.disabled,
.btn-primary:disabled,
.btn-primary.disabled,
.btn-outline-primary:disabled,
.btn-outline-primary.disabled,
.btn-outline-light:disabled,
.btn-outline-light.disabled {
  color: var(--button-disabled-text);
  background: var(--button-disabled-bg);
  border-color: var(--button-disabled-border);
  box-shadow: none;
  opacity: 1;
  cursor: not-allowed;
}

.hero-actions .btn,
.cta-band .btn {
  min-width: 0;
}

.hero-actions,
.cta-band-actions,
.site-form .d-flex {
  gap: .7rem;
}

[dir="rtl"] .home-hero .hero-actions {
  justify-content: flex-start;
}

@media (max-width: 430px) {
  .hero-actions .btn,
  .site-form .btn {
    width: 100%;
  }
}

/* Animation lag correction: premium motion without continuous paint pressure. */
.home-hero::before,
.internal-hero::before {
  animation: none;
}

.hero-svg path,
.hero-svg circle,
.hero-svg rect,
.internal-hero-lines path,
.internal-hero-lines circle,
.internal-hero-lines rect {
  animation: lineDraw 560ms var(--ease-emphasized) forwards;
}

.scroll-cue::after {
  animation-duration: 2200ms;
}

body.js-motion-ready [data-scroll-reveal],body.js-motion-ready .internal-hero-panel,body.js-motion-ready .internal-hero-copy > *,body.js-motion-ready .programme-panel,body.js-motion-ready .index-row,body.js-motion-ready .legal-row{
  transition:
    opacity 380ms var(--ease-emphasized) var(--reveal-delay, 0ms),
    transform 380ms var(--ease-emphasized) var(--reveal-delay, 0ms),
    border-color var(--motion-fast) var(--ease-standard);
}

.action-card,.teaser-panel,.day-card,.index-row,.person-card,.programme-card,.programme-panel,.sponsor-tier,.pdf-card,.info-card,.form-shell,.legal-row,.cta-band{
  transition:
    transform 160ms var(--ease-standard),
    border-color 160ms var(--ease-standard),
    background-color 160ms var(--ease-standard);
}

body.is-motion-lite .home-hero::before,
body.is-motion-lite .internal-hero::before,
body.is-motion-lite .scroll-cue::after {
  animation: none;
}

body.is-motion-lite .hero-svg path,
body.is-motion-lite .hero-svg circle,
body.is-motion-lite .hero-svg rect,
body.is-motion-lite .internal-hero-lines path,
body.is-motion-lite .internal-hero-lines circle,
body.is-motion-lite .internal-hero-lines rect {
  animation: none;
  stroke-dashoffset: 0;
}

body.is-motion-lite .hero-svg,
body.is-motion-lite .hero-visual,
body.is-motion-lite .hero-texture,
body.is-motion-lite .internal-hero-lines,
body.is-motion-lite .internal-hero-bg,
body.is-motion-lite [data-parallax],
body.is-motion-lite [data-parallax-layer] {
  transform: none !important;
}

body.is-parallax-disabled .hero-svg,
body.is-parallax-disabled .hero-visual,
body.is-parallax-disabled .hero-texture,
body.is-parallax-disabled .internal-hero-lines,
body.is-parallax-disabled .internal-hero-bg,
body.is-parallax-disabled [data-parallax],
body.is-parallax-disabled [data-parallax-layer] {
  transform: none !important;
}

body.is-motion-lite .site-header,
body.is-motion-lite .dropdown-menu,
body.is-motion-lite .nav-control,
body.is-motion-lite .internal-hero-panel,
body.is-motion-lite .hero-facts,
body.is-motion-lite .day-card {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body.is-motion-lite .previous-photo img {
  filter: saturate(1.02) contrast(1.01);
}

/* Mobile approval correction: make the first screen compact and keep geometry behind content. */
@media (max-width: 767.98px) {
  [dir="rtl"] body {
    font-family: "Cairo", "Poppins", Verdana, sans-serif;
    line-height: 1.85;
  }

  .premium-navbar {
    min-height: 62px;
    padding-block: .42rem;
  }

  .premium-navbar > .header-container,
  .navbar > .header-container {
    min-height: 54px;
    padding-inline: .75rem 4rem;
  }

  /* Deliberately no [dir="rtl"] override here. `padding-inline` is a logical
     property, so the rule above already reserves the 4rem on whichever side
     `.menu-trigger`'s `inset-inline-end` puts the hamburger — the right in LTR,
     the left in RTL. The previous RTL override re-stated it physically and
     reserved the space on the wrong side, so in Arabic the fixed 44px toggler
     (left: 16px) sat directly on top of the language pill (left: 12px): a
     44x35px overlap, with the toggler's z-index: 8 winning every tap. Hit
     testing the pill's centre returned .navbar-toggler-icon at every width from
     320 to 767px, so an Arabic visitor on a phone could not switch back to
     English at all. */

  .brand-logo {
    height: 42px;
    max-width: 116px;
  }

  .brand-title {
    max-width: 9.5rem;
    font-size: .86rem;
  }

  .menu-trigger {
    inset-block-start: .62rem;
    width: 40px;
    height: 40px;
  }

  .home-hero {
    min-height: auto;
    padding-block: 2rem 2.15rem;
  }

  .home-hero .container {
    padding-inline: 1.25rem;
  }

  .home-hero-grid {
    gap: 0;
    min-height: 0;
  }

  .home-hero-copy {
    max-width: 100%;
  }

  .hero-label {
    margin-block-end: .7rem;
  }

  .home-title {
    max-width: min(22rem, 100%);
    margin-block: .6rem .85rem;
    font-size: clamp(2.05rem, 9vw, 2.55rem);
    line-height: 1.06;
    text-wrap: balance;
  }

  [dir="rtl"] .home-title {
    font-size: clamp(2rem, 9.6vw, 2.45rem);
    line-height: 1.22;
  }

  .hero-copy {
    margin-block-end: 1rem;
    font-size: .96rem;
    line-height: 1.66;
  }

  .hero-facts {
    gap: .45rem;
    margin-block-start: .95rem;
    padding: .9rem 1rem;
    border-block-start-width: 1px;
  }

  .hero-facts span {
    font-size: 1rem;
    line-height: 1.35;
  }

  .hero-actions {
    gap: .65rem;
    margin-block-start: 1.15rem;
  }

  .hero-actions .btn {
    min-height: 44px;
    padding-block: .68rem;
  }

  .hero-visual {
    display: none;
  }

  .home-hero::before {
    opacity: .22;
  }

  .hero-texture {
    opacity: .26;
  }

  .hero-svg {
    z-index: 1;
    opacity: .34;
  }

  .hero-svg-top {
    inset-block-start: 3.8rem;
    inset-inline-end: -18rem;
    width: 32rem;
  }

  .hero-svg-bottom {
    inset-block-end: -8rem;
    inset-inline-start: -16rem;
    width: 35rem;
  }

  .section {
    padding-block: 2.75rem;
  }

  .page-hero {
    padding-block: .6rem 1.35rem;
  }

  .internal-hero {
    padding: 1.2rem;
    border-radius: .55rem;
  }

  .internal-hero-lines,
  .internal-hero-bg {
    opacity: .22;
  }

  .site-footer {
    padding-block-start: 2.6rem;
  }
}

@media (max-width: 390px) {
  .home-hero .container,
  .page-hero .container,
  .section .container {
    padding-inline: 1.1rem;
  }

  .home-title {
    font-size: clamp(1.95rem, 8.8vw, 2.28rem);
  }

  [dir="rtl"] .home-title {
    font-size: clamp(1.9rem, 9.4vw, 2.28rem);
  }

  .hero-copy {
    font-size: .94rem;
  }
}

@media (max-width: 1023.98px) {
  .hero-texture,
  .hero-svg-bottom,
  .internal-hero-lines {
    display: none;
  }

  .home-hero::before,
  .internal-hero::before {
    opacity: .22;
  }

  .hero-svg path,
  .hero-svg circle,
  .hero-svg rect,
  .internal-hero-lines path,
  .internal-hero-lines circle,
  .internal-hero-lines rect {
    animation: none;
    stroke-dashoffset: 0;
  }

  .hero-svg,
  .hero-visual,
  .hero-texture,
  .internal-hero-lines,
  .internal-hero-bg,
  [data-parallax],
  [data-parallax-layer] {
    transform: none !important;
  }
}

@media (min-width: 1200px) and (max-width: 1366px) {
  .primary-nav {
    gap: .05rem;
    padding: .18rem;
  }

  .nav-link {
    min-height: 39px;
    padding: .48rem .54rem;
    font-size: .805rem;
  }

  .dropdown-item {
    font-size: .9rem;
  }

  .header-actions .btn {
    min-height: 40px;
    padding-inline: .72rem;
    font-size: .82rem;
  }
}

@media (max-width: 1199.98px) {
  .nav-panel {
    border-color: rgba(59, 0, 6, .14);
    background: rgba(255,255,255,.98);
  }

  .primary-nav {
    gap: .18rem;
  }

  .nav-link {
    font-size: .98rem;
  }

  .programme-preview,
  .previous-gallery {
    grid-template-columns: 1fr;
  }

  .previous-gallery {
    grid-template-rows: none;
    min-height: 0;
  }

  .previous-photo-large,
  .previous-photo:not(.previous-photo-large) {
    grid-column: auto;
    grid-row: auto;
    aspect-ratio: 16 / 10;
  }
}

@media (max-width: 767.98px) {
  body {
    font-size: 1rem;
  }

  .section,
  .home-showcase {
    padding-block: 3rem;
  }

  .home-showcase + .section-neutral {
    padding-block-start: 2.25rem;
  }

  .programme-preview-card,
  .home-support-strip article,
  .programme-preview-copy {
    padding: 1rem;
  }

  .programme-preview-copy h2 {
    max-width: 100%;
    font-size: clamp(1.95rem, 9vw, 2.65rem);
  }

  .programme-preview-card > span {
    font-size: clamp(2.8rem, 16vw, 4rem);
  }

  .previous-photo,
  .previous-photo-large,
  .previous-photo:not(.previous-photo-large) {
    aspect-ratio: 4 / 3;
  }

  .footer-brand-panel p,
  .site-footer a,
  .footer-group a {
    font-size: 1rem;
  }
}

/* Mobile/tablet programme-preview flow correction. */
@media (max-width: 1024px) {
  .home-editorial-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    width: 100%;
    max-width: 100%;
    gap: clamp(1rem, 3.4vw, 1.4rem);
  }

  .home-editorial-copy,
  .home-day-summary {
    position: static;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    transform: none;
  }

  .home-editorial-copy h2,
  .home-editorial-copy p {
    max-width: 100%;
  }

  .home-day-summary {
    gap: clamp(.75rem, 2.6vw, 1rem);
    padding: clamp(1rem, 3vw, 1.25rem);
  }

  .home-day-summary article,
  .home-day-summary article:first-child,
  .day-card {
    width: 100%;
    min-width: 0;
    min-height: 0;
    margin: 0;
    transform: none;
  }

  .home-day-summary a {
    min-height: 44px;
  }

  .home-showcase {
    padding-block: clamp(2.5rem, 7vw, 3.5rem);
  }

  .programme-preview {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    width: 100%;
    max-width: 100%;
    gap: clamp(1rem, 3.4vw, 1.4rem);
  }

  .programme-preview-copy,
  .programme-preview-days,
  .home-support-strip {
    position: static;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    transform: none;
  }

  .programme-preview-copy {
    padding: clamp(1.1rem, 3.6vw, 1.45rem);
  }

  .programme-preview-copy h2 {
    max-width: 18ch;
    line-height: 1.05;
    text-wrap: balance;
  }

  .programme-preview-days {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(.75rem, 2.6vw, 1rem);
  }

  .programme-preview-card {
    width: 100%;
    min-width: 0;
    min-height: 0;
    padding: clamp(1rem, 3vw, 1.25rem);
  }

  .programme-preview-card small,
  .home-support-strip span {
    line-height: 1.65;
  }

  .programme-preview-card a,
  .home-support-strip a {
    min-height: 44px;
  }
}

@media (max-width: 767.98px) {
  .home-editorial {
    padding-block: 2.75rem;
  }

  .home-editorial-copy h2 {
    font-size: clamp(1.85rem, 8vw, 2.45rem);
    line-height: 1.1;
    text-wrap: balance;
  }

  .home-day-summary {
    padding: 1rem;
  }

  .home-day-summary h3 {
    font-size: clamp(1.05rem, 5.5vw, 1.35rem);
  }

  .home-day-summary span,
  .workshop-disclaimer {
    font-size: .98rem;
    line-height: 1.7;
  }

  .programme-preview-days,
  .home-support-strip {
    grid-template-columns: minmax(0, 1fr);
  }

  .programme-preview-copy h2 {
    max-width: 100%;
    font-size: clamp(1.85rem, 8vw, 2.45rem);
  }

  .programme-preview-copy p:not(.kicker),
  .programme-preview-card small,
  .home-support-strip span {
    font-size: .98rem;
    line-height: 1.7;
  }

  .programme-preview-card > span {
    font-size: clamp(2.4rem, 13vw, 3.4rem);
  }
}

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

  [data-reveal],.home-hero-copy > *,.hero-visual,.action-card,.feature-panel,.person-card,.info-card,.programme-card,.sponsor-tier,.pdf-card,.form-shell,.cta-band,[data-scroll-reveal],.internal-hero-copy > *,.internal-hero-panel,.programme-panel,.index-row,.legal-row{
    opacity: 1 !important;
    transform: none !important;
  }

  .hero-svg path,
  .hero-svg circle,
  .hero-svg rect,
  .internal-hero-lines path,
  .internal-hero-lines circle,
  .internal-hero-lines rect,
  .internal-hero::before,
  .internal-hero::after,
  .home-hero::before,
  .scroll-cue::after {
    animation: none !important;
    stroke-dashoffset: 0 !important;
  }
}

body.is-reduced-motion [data-reveal],body.is-reduced-motion .home-hero-copy > *,body.is-reduced-motion .hero-visual,body.is-reduced-motion .action-card,body.is-reduced-motion .feature-panel,body.is-reduced-motion .person-card,body.is-reduced-motion .info-card,body.is-reduced-motion .programme-card,body.is-reduced-motion .sponsor-tier,body.is-reduced-motion .pdf-card,body.is-reduced-motion .form-shell,body.is-reduced-motion .cta-band,body.is-reduced-motion [data-scroll-reveal],body.is-reduced-motion .internal-hero-copy > *,body.is-reduced-motion .internal-hero-panel,body.is-reduced-motion .programme-panel,body.is-reduced-motion .index-row,body.is-reduced-motion .legal-row{
  opacity: 1 !important;
  transform: none !important;
}

body.is-reduced-motion .hero-svg path,
body.is-reduced-motion .hero-svg circle,
body.is-reduced-motion .hero-svg rect,
body.is-reduced-motion .internal-hero-lines path,
body.is-reduced-motion .internal-hero-lines circle,
body.is-reduced-motion .internal-hero-lines rect,
body.is-reduced-motion .internal-hero::before,
body.is-reduced-motion .internal-hero::after,
body.is-reduced-motion .home-hero::before,
body.is-reduced-motion .scroll-cue::after {
  animation: none !important;
  stroke-dashoffset: 0 !important;
}

/* Customer revision pass: structural components added 2026-07-20. */
html {
  scroll-padding-top: calc(var(--header-height) + 1.5rem);
}

.header-container {
  gap: 1rem;
}

/* The header Sponsor pill sits on the white header bar, so the shared 72%
   translucent secondary fill read as a smudge and it needed a solid ground.
   That was originally written as a flat `background` declaration here, which
   was the MAQA-001 defect: this selector is (0,2,0), identical to
   `.btn-outline-primary:hover`, but lands ~800 lines later, so it silently won
   the cascade and pinned the background to white in EVERY interactive state
   while the state rule still supplied white text — a white-on-white label at
   1.00:1 on hover AND focus-visible, on all 41 routes, EN and AR.

   Setting the token instead of the property is the fix. The base rule already
   resolves `background-color: var(--button-secondary-bg)`, so the pill still
   renders solid white at rest, but this rule no longer emits a competing
   `background-color` declaration for the state rules to lose to. Hover, focus
   and active keep their intended burgundy fill. No specificity war, no
   !important, no per-route duplication. */
.header-actions .sponsor-cta {
  --button-secondary-bg: var(--ciarb-white);
}

.home-title span {
  display: block;
}

.hero-facts-strong {
  margin-block: 1.35rem;
}

.countdown {
  display: grid;
  grid-template-columns: repeat(4, minmax(4rem, 1fr));
  max-width: 30rem;
  gap: .5rem;
  margin-block: .9rem;
}

.countdown-unit {
  min-height: 60px;
  padding: .5rem .5rem;
  text-align: center;
  background: rgba(255, 255, 255, .92);
  border: 1px solid rgba(255, 255, 255, .45);
  box-shadow: var(--shadow-soft);
}

.countdown-unit strong,
.countdown-unit small {
  display: block;
}

.countdown-unit strong {
  color: var(--ciarb-deep-red);
  font-size: clamp(1.3rem, 4vw, 1.7rem);
  line-height: 1;
}

.countdown-unit small {
  margin-top: .25rem;
  color: var(--ciarb-black-90);
  font-size: .76rem;
}

.hero-urgency {
  max-width: 34rem;
  margin-block: .35rem 0;
  color: #ffc48a;
  font-size: .95rem;
  font-weight: 600;
}

.rich-copy {
  color: var(--ciarb-black-90);
  font-size: 1.02rem;
  line-height: 1.85;
}

.rich-copy p:last-child {
  margin-bottom: 0;
}

.role-card-grid,.info-grid,.external-link-grid,.media-collection-grid,.gallery-grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.role-card-grid.single {
  grid-template-columns: minmax(0, 1fr);
  max-width: 58rem;
}

.role-card,.home-tbc-card,.become-sponsor-card,.media-teaser-card,.external-card,.media-collection-card,.workshop-cell,.speaker-session,.sponsor-tier{
  position: relative;
  display: block;
  padding: 1.25rem;
  color: inherit;
  text-decoration: none;
  background: var(--surface-card);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-soft);
}

.role-card {
  display: grid;
  grid-template-columns: minmax(9rem, 15rem) minmax(0, 1fr);
  align-items: center;
  gap: 1.1rem;
}

.role-card img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  border-radius: var(--radius-xs);
}

.portrait-placeholder,
.photo-placeholder {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 9rem;
  color: var(--ciarb-deep-red);
  background: var(--ciarb-pale-red);
  border: 1px dashed var(--line-bright);
  border-radius: var(--radius-xs);
  font-weight: 700;
}

.portrait-placeholder i {
  font-size: 2rem;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  min-height: 2rem;
  padding: .25rem .55rem;
  color: var(--ciarb-deep-red);
  background: var(--ciarb-pale-red);
  border: 1px solid var(--line-soft);
  border-radius: .25rem;
  font-size: .82rem;
  font-weight: 600;
}

.status-pill-pending {
  margin-inline-start: .5rem;
  color: var(--ink-strong, #33383f);
  background: var(--surface-muted, #f0efe9);
  border: 1px solid var(--line-soft);
  font-weight: 600;
  font-size: .74rem;
  letter-spacing: .01em;
  vertical-align: middle;
}

.home-tbc-card,
.become-sponsor-card {
  display: grid;
  grid-template-columns: 8rem minmax(0, 1fr);
  align-items: center;
  gap: 1rem;
}

.become-sponsor-card {
  grid-template-columns: minmax(0, 1fr);
  color: var(--ciarb-white);
  background: linear-gradient(135deg, var(--ciarb-deep-red), var(--ciarb-orange));
}

.become-sponsor-card span {
  font-size: clamp(1.4rem, 4vw, 2rem);
  font-weight: 700;
}

.become-sponsor-card small {
  color: rgba(255, 255, 255, .86);
}

.media-teaser-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(16rem, .75fr);
  gap: 1.2rem;
  align-items: center;
}

.media-teaser-thumbs,
/* === Previous Years editorial gallery ===
   Replaces a uniform 3-column 4/3 grid. That grid cropped every photograph to
   the same box, which cut speakers out of frame and gave a keynote the same
   visual weight as a lanyard close-up. */

.gallery-editorial {
  --gallery-gutter: clamp(.65rem, 1.4vw, 1.1rem);
  margin-top: .25rem;
}

/* Featured opening image. The only cropped photograph in the gallery: each
   year leads with an establishing venue/stage view, so a 2/1 letterbox takes
   ceiling and carpet rather than faces. */
.gallery-lead {
  display: block;
  inline-size: 100%;
  margin-block-end: var(--gallery-gutter);
}

.gallery-lead img {
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 2 / 1;
  object-fit: cover;
  object-position: 50% 42%;
  border-radius: var(--radius-sm, .5rem);
}

/* Justified editorial rows.
   Row grouping is decided at build time from real pixel dimensions; here each
   cell simply grows in proportion to its own aspect ratio. Because width is
   proportional to aspect, every cell in a row resolves to the same height, so
   rows align top and bottom with no cropping anywhere — the box always matches
   the photograph's own ratio. Widths vary photograph to photograph, which is
   where the editorial rhythm comes from. */
.gallery-rows {
  display: flex;
  flex-direction: column;
  gap: var(--gallery-gutter);
}

.gallery-row {
  display: flex;
  gap: var(--gallery-gutter);
}

.gallery-cell {
  /* flex-grow is set per cell to the photograph's aspect ratio. */
  flex-basis: 0;
  min-inline-size: 0;
}

.gallery-cell .gallery-item {
  display: block;
  inline-size: 100%;
  block-size: 100%;
}

/* Wall images keep their own ratio, so the box never crops the photograph.
   The width/height attributes are on the tag for CLS; block-size:auto is what
   stops the presentational height attribute winning over the real ratio. */
.gallery-cell .gallery-item img {
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}

button.gallery-item {
  padding: 0;
  border: 0;
  color: inherit;
  font: inherit;
  text-align: inherit;
  background: none;
  cursor: zoom-in;
}

.gallery-item {
  overflow: hidden;
  border-radius: var(--radius-sm, .5rem);
}

.gallery-item img {
  display: block;
  border-radius: var(--radius-sm, .5rem);
  background: var(--ciarb-neutral, #f4f1ee);
  transition: transform .45s cubic-bezier(.22, .61, .36, 1), filter .45s ease;
}

@media (hover: hover) {
  .gallery-item:hover img {
    transform: scale(1.028);
    filter: brightness(1.03);
  }
}

@media (prefers-reduced-motion: reduce) {
  .gallery-item img { transition: none; }
  .gallery-item:hover img { transform: none; }
}

@media (max-width: 991.98px) {
  .gallery-lead img { aspect-ratio: 16 / 9; }
}

@media (max-width: 575.98px) {
  .gallery-lead img { aspect-ratio: 4 / 3; }
}

.gallery-lead img[data-photo-role="audience"],
.gallery-lead img[data-photo-role="audience_2025"],
.gallery-lead img[data-photo-role="audience_2024"],
.gallery-lead img[data-photo-role="panel_2023"] {
  object-position: 32% 50%;
}

.gallery-item img[data-photo-role="stage"],
.gallery-lead img[data-photo-role="stage_2025"] {
  object-position: 50% 40%;
}

.gallery-item img[data-photo-role="panel"],
.gallery-lead img[data-photo-role="panel_2024"] {
  object-position: 50% 45%;
}

.gallery-lead img[data-photo-role="agm_2023"] {
  object-position: 50% 38%;
}

.gallery-item:focus-visible,
.media-collection-card:focus-visible,
.external-card:focus-visible,
.person-card-button:focus-visible,
.become-sponsor-card:focus-visible {
  outline: 3px solid var(--ciarb-orange);
  outline-offset: 3px;
}

.four-up {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 2rem;
}

.org-chart-grid,
.speaker-session-list,
.workshop-agenda,
.sponsor-tier-stack,
.legal-stack,
.index-stack {
  display: grid;
  gap: 1rem;
}

.person-card-button {
  display: grid;
  width: 100%;
  grid-template-columns: 6rem minmax(0, 1fr);
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  text-align: inherit;
  color: inherit;
  background: var(--surface-card);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm);
}

.person-card-button small,
.external-card span {
  display: block;
  margin-top: .25rem;
  color: var(--ciarb-deep-red);
  font-size: .82rem;
}

.programme-rail {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.workshop-window {
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
  padding-block: 1rem;
  border-bottom: 1px solid var(--line-soft);
}

.workshop-window h2 {
  color: var(--ciarb-deep-red);
  font-size: 1.1rem;
}

.workshop-track-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .8rem;
}

[dir="rtl"] .workshop-track-grid {
  direction: rtl;
}

.speaker-session {
  display: grid;
  grid-template-columns: 8rem minmax(0, 1fr);
  gap: 1rem;
}

/* Deep red suits a bare time label on a light card. It must not reach
   .time-badge, which carries a deep red fill of its own. */
.speaker-session time {
  color: var(--ciarb-deep-red);
  font-weight: 700;
}

.speaker-placeholder {
  margin-top: .8rem;
  padding: .8rem;
  background: var(--ciarb-neutral);
  border-radius: var(--radius-xs);
}

.sponsor-tier {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: center;
}

.sponsor-tier-stack .sponsor-tier {
  grid-template-columns: minmax(0, 1fr) auto;
}

.sponsor-tier details {
  grid-column: 1 / -1;
}

/* Secondary action inside a tier card. It must stay findable without
   outweighing a confirmed sponsor's logo, so it is an inline wine outline
   rather than a full-bleed saturated red bar. */
.become-sponsor-slot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  justify-self: start;
  min-height: 44px;
  padding: .5rem 1.35rem;
  color: var(--brand-wine-2, #5c0b17);
  text-decoration: none;
  background: transparent;
  border: 1px solid rgba(92, 11, 23, .38);
  border-radius: .25rem;
  font-size: .88rem;
  font-weight: 600;
}

[dir="rtl"] .become-sponsor-slot {
  justify-self: end;
}

.become-sponsor-slot:hover,
.become-sponsor-slot:focus-visible {
  color: var(--ciarb-white, #fff);
  background: var(--brand-wine-2, #5c0b17);
  border-color: var(--brand-wine-2, #5c0b17);
}

/* Must sit after the desktop two-column tier rules above. An earlier
   max-width:767 rule was being overridden here, which left the Arabic
   "Become a Sponsor" label hanging off the right edge of phone screens. */
@media (max-width: 767.98px) {
  .sponsor-tier,
  .sponsor-tier-stack .sponsor-tier {
    grid-template-columns: 1fr;
    gap: .85rem;
    align-items: stretch;
  }

  .become-sponsor-slot,
  [dir="rtl"] .become-sponsor-slot {
    justify-self: stretch;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }
}

.previous-sponsors-block {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--line-soft);
}

.previous-sponsors-block h2 {
  font-size: 1.15rem;
  color: var(--ciarb-deep-red);
  margin-bottom: .5rem;
}

.previous-sponsors-note {
  max-width: 48rem;
  margin-bottom: 1.25rem;
  color: var(--ink-muted, #5a5a5a);
  font-size: .95rem;
}

/* Logo ticker items. Height-capped, never width-capped: the brochure marks
   range from 1.0:1 to 3.8:1, and sizing by width would make a wide wordmark
   tower over a square crest. One cap on height puts every organisation on the
   same optical footing. */
.ticker-set {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.previous-sponsor-logo {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--line-soft);
  border-radius: .25rem;
  padding: .7rem 1.1rem;
  block-size: 92px;
}

.previous-sponsor-logo img {
  display: block;
  inline-size: auto;
  block-size: auto;
  max-block-size: 56px;
  max-inline-size: 200px;
  object-fit: contain;
  image-rendering: auto;
}

/* Additional Silver recognition follows the existing sponsor-honour plate
   rather than introducing a new card type. */
.sponsor-category-trophy,
.sponsor-tier-trophy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.4rem;
  height: 2.4rem;
  color: var(--brand-gold-readable, #8c5b16);
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 1.05rem;
}

/* Silver roster contains sponsor logos only; remove the accidental standalone trophy. */
.sponsor-category[aria-label="Silver Sponsors"] .sponsor-category-trophy,
.sponsor-tier-silver .sponsor-tier-trophy {
  display: none;
}

.previous-sponsor-ticker {
  margin-top: 2rem;
  overflow: hidden;
}

.previous-sponsor-ticker:focus-visible {
  outline: 3px solid var(--brand-gold);
  outline-offset: 4px;
}

.previous-sponsor-ticker h2 {
  font-size: 1rem;
  color: var(--ciarb-deep-red);
}

.ticker-track {
  display: flex;
  width: max-content;
  gap: .75rem;
  padding-block: .75rem;
  animation: sponsorTicker 55s linear infinite;
}



.previous-sponsor-ticker:hover .ticker-track,
.previous-sponsor-ticker:focus-within .ticker-track {
  animation-play-state: paused;
}

@keyframes sponsorTicker {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

[dir="rtl"] .ticker-track {
  animation-name: sponsorTickerRtl;
}

@keyframes sponsorTickerRtl {
  from { transform: translateX(0); }
  to { transform: translateX(50%); }
}

.form-shell {
  scroll-margin-top: calc(var(--header-height) + 1rem);
}

.footer-inline {
  columns: 2;
}

.btn-close {
  flex: 0 0 auto;
}

@media (max-width: 1199.98px) {
  .header-actions {
    min-width: 0;
  }

  .nav-panel {
    max-height: calc(100vh - var(--header-height));
    overflow-y: auto;
  }
}

@media (max-width: 767.98px) {
  .countdown {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .role-card-grid,.info-grid,.external-link-grid,.media-collection-grid,.gallery-grid,.programme-rail,.four-up{
    grid-template-columns: minmax(0, 1fr);
  }

  .role-card,
  .home-tbc-card,
  .media-teaser-card,
  .workshop-window,
  .speaker-session,
  .sponsor-tier {
    grid-template-columns: minmax(0, 1fr);
  }

  .workshop-track-grid,
  .media-teaser-thumbs {
    grid-template-columns: minmax(0, 1fr);
  }

  .footer-inline {
    columns: 1;
  }
}

@media (max-width: 390px) {
  .countdown-unit {
    min-height: 68px;
  }

  .person-card-button {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ticker-track {
    animation: none !important;
    transform: none !important;
  }
}

body.is-reduced-motion .ticker-track {
  animation: none !important;
  transform: none !important;
}

/* Rev6 coordinated motion system: progressive enhancement only. */
@supports (overflow: clip) {
  html,
  body {
    overflow-x: clip;
  }
}

.site-header.sticky-top {
  position: sticky;
  inset-block-start: 0;
  z-index: 1030;
}

.site-header.is-condensed .premium-navbar {
  padding-block: .72rem;
}

.site-header.is-condensed .brand-logo {
  height: 58px;
  max-width: 158px;
}

@media (min-width: 1200px) and (max-width: 1366px) {
  .site-header.is-condensed .brand-logo {
    height: 50px;
    max-width: 136px;
  }
}

/* --- Above-the-fold entrance: CSS-driven, plays from the first paint --------
   The motion script sits at the end of <body> and initialises only after the
   first screen has painted, so gating the hero/header entrance on
   `js-motion-ready` produced a visible flash (base content shown, hidden, then
   re-revealed). These entrances therefore run purely from CSS keyframes on
   load — no JavaScript dependency, no flash, and a correct static result when
   JavaScript is disabled. They are disabled under reduced motion via @media.
   Parallax is preserved: revealGeometry's held final frame references
   --motion-x/--motion-y, so pointer updates continue to flow through it.
   The base `.home-hero-copy > *` (revealUp) and `.hero-visual` (revealGeometry)
   keyframes are defined earlier in this file and now run uninterrupted. */
.site-header {
  animation: rev6HeaderEnter var(--motion-duration-standard) var(--motion-ease-emphasized) both;
}

/* With scripting unavailable, honour the strict JS-disabled contract: essential
   above-the-fold content must be visible immediately, with no opacity:0 entrance
   phase. Force these CSS-driven entrances straight to their final visible state.
   (JS-enabled browsers do not match this query, so the entrance still plays.) */
@media (scripting: none) {
  .site-header,
  .home-hero-copy > *,
  .hero-visual,
  .internal-hero-copy > *,
  .internal-hero-panel {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

body.js-motion-ready .motion-reveal.motion-self:not(.is-visible),
body.js-motion-ready .motion-reveal:not(.is-visible) .motion-item {
  opacity: 0;
  transform: translateY(var(--motion-distance-medium));
}

body.js-motion-ready .motion-reveal.motion-self,
body.js-motion-ready .motion-reveal .motion-item {
  transition:
    opacity var(--motion-duration-slow) var(--motion-ease-emphasized) var(--motion-delay, 0ms),
    transform var(--motion-duration-slow) var(--motion-ease-emphasized) var(--motion-delay, 0ms),
    border-color var(--motion-duration-fast) var(--motion-ease-standard),
    box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
}

body.js-motion-ready .motion-reveal.is-visible.motion-self,
body.js-motion-ready .motion-reveal.is-visible .motion-item {
  opacity: 1;
  transform: translateY(0);
}

body.js-motion-ready .motion-image {
  opacity: 0;
  transform: scale(1.025);
  transition:
    opacity var(--motion-duration-slow) var(--motion-ease-emphasized),
    transform var(--motion-duration-slow) var(--motion-ease-emphasized);
}

body.js-motion-ready .motion-image.is-image-ready {
  opacity: 1;
  transform: scale(1);
}

/* Card hover lift. Each card reveals itself via `.motion-reveal.is-visible`
   which pins transform to translateY(0); this hover rule carries higher
   specificity plus a fast dedicated transition so revealed cards give the same
   2-3px feedback as buttons. Fine-pointer only, so touch never sticks. */
@media (hover: hover) {
  body.js-motion-ready .action-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .feature-panel.motion-reveal.is-visible:hover,
  body.js-motion-ready .role-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .home-tbc-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .become-sponsor-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .media-teaser-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .person-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .info-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .programme-card.motion-reveal.is-visible:hover,
  body.js-motion-ready .sponsor-tier.motion-reveal.is-visible:hover,
  body.js-motion-ready .workshop-cell.motion-reveal.is-visible:hover,
  body.js-motion-ready .pdf-card.motion-reveal.is-visible:hover {
    transform: translateY(-3px);
    transition:
      transform var(--motion-duration-fast) var(--motion-ease-standard),
      border-color var(--motion-duration-fast) var(--motion-ease-standard),
      box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
  }
}

.home-hero .hero-geometry {
  animation: rev6AmbientGeometry 11s ease-in-out infinite alternate;
}

/* RTL keeps the artwork's horizontal flip while drifting: the keyframe transform
   would otherwise drop the static scaleX(-1) mirror. Drift direction mirrored. */
[dir="rtl"] .home-hero .hero-geometry {
  animation-name: rev6AmbientGeometryRtl;
}

@keyframes rev6AmbientGeometryRtl {
  from { transform: translate3d(7px, 4px, 0) scale(1.178) scaleX(-1); }
  to { transform: translate3d(-7px, -6px, 0) scale(1.188) scaleX(-1); }
}

body.is-document-hidden .home-hero .hero-geometry,
body.is-document-hidden .ticker-track {
  animation-play-state: paused;
}

.countdown-unit strong.is-changing {
  animation: rev6DigitChange 170ms var(--motion-ease-standard) both;
}

.btn:not(:disabled):not([aria-disabled="true"]),.become-sponsor-slot,.text-link,.media-collection-card,.gallery-item,.person-card-button{
  transition:
    transform var(--motion-duration-fast) var(--motion-ease-standard),
    color var(--motion-duration-fast) var(--motion-ease-standard),
    background-color var(--motion-duration-fast) var(--motion-ease-standard),
    border-color var(--motion-duration-fast) var(--motion-ease-standard),
    box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
}

@media (hover: hover) and (pointer: fine) {
  .btn:not(:disabled):not([aria-disabled="true"]):hover,.become-sponsor-slot:hover,.media-collection-card:hover,.gallery-item:hover,.person-card-button:hover{
    transform: translateY(-2px);
  }

  .role-card:hover img,
  .gallery-item:hover img,
  .media-teaser-thumbs a:hover img {
    transform: scale(1.018);
  }
}

.role-card img,
.gallery-item img,
.media-teaser-thumbs img {
  transition: transform var(--motion-duration-standard) var(--motion-ease-emphasized);
}

.btn:disabled,
.btn[aria-disabled="true"] {
  transform: none !important;
  animation: none !important;
}

.nav-link::after {
  transform-origin: left center;
  transition: transform var(--motion-duration-standard) var(--motion-ease-emphasized);
}

[dir="rtl"] .nav-link::after {
  transform-origin: right center;
}

/* Desktop flyout dropdowns only when navbar is expanded (xl / 1200px+).
   Below that the hamburger panel must use Bootstrap collapse behaviour —
   display:none until .show — otherwise visibility:hidden flyouts still
   consume layout height and push Contact / CTAs below the fold (D12). */
@media (min-width: 1200px) {
  .dropdown-menu {
    display: block;
    visibility: hidden;
    pointer-events: none;
    opacity: 0;
    transform: translateY(6px) scale(.99);
    transition:
      opacity var(--motion-duration-fast) var(--motion-ease-standard),
      transform var(--motion-duration-fast) var(--motion-ease-standard),
      visibility 0s linear var(--motion-duration-fast);
  }

  .dropdown-menu.show {
    visibility: visible;
    pointer-events: auto;
    opacity: 1;
    transform: translateY(0) scale(1);
    transition-delay: 0s;
  }
}

.modal.fade .modal-dialog {
  transform: translateY(10px) scale(.985);
  transition: transform 220ms var(--motion-ease-emphasized);
}

.modal.show .modal-dialog {
  transform: translateY(0) scale(1);
}

.modal-backdrop.fade {
  transition: opacity 180ms var(--motion-ease-standard);
}

.form-control,.form-select,.form-check-input,.form-alert,.form-feedback{
  transition:
    border-color var(--motion-duration-fast) var(--motion-ease-standard),
    box-shadow var(--motion-duration-fast) var(--motion-ease-standard),
    background-color var(--motion-duration-fast) var(--motion-ease-standard),
    opacity var(--motion-duration-fast) var(--motion-ease-standard),
    transform var(--motion-duration-fast) var(--motion-ease-standard);
}

.programme-card::after,
.workshop-window::after,
.sponsor-tier::before {
  transform-origin: left center;
}

[dir="rtl"] .programme-card::after,
[dir="rtl"] .workshop-window::after,
[dir="rtl"] .sponsor-tier::before {
  transform-origin: right center;
}

.previous-sponsor-ticker .ticker-track {
  animation-duration: 64s;
  will-change: transform;
}

@keyframes rev6HeaderEnter {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes rev6AmbientGeometry {
  from { transform: translate3d(-7px, 4px, 0) scale(1.178); }
  to { transform: translate3d(7px, -6px, 0) scale(1.188); }
}

@keyframes rev6DigitChange {
  from { opacity: .62; transform: translateY(3px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 1023.98px), (pointer: coarse) {
  body.js-motion-ready .home-hero:not(.hero-motion-started) .home-hero-copy > *,
  body.js-motion-ready .page-hero:not(.hero-motion-started) .internal-hero-copy > *,
  body.js-motion-ready .motion-reveal.motion-self:not(.is-visible),
  body.js-motion-ready .motion-reveal:not(.is-visible) .motion-item {
    transform: translateY(8px);
  }

  .home-hero .hero-geometry {
    animation-play-state: paused;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.js-motion-ready .site-header,
  body.js-motion-ready .home-hero-copy > *,
  body.js-motion-ready .hero-visual,
  body.js-motion-ready .internal-hero-copy > *,
  body.js-motion-ready .internal-hero-panel,
  body.js-motion-ready .motion-reveal.motion-self,
  body.js-motion-ready .motion-reveal .motion-item,
  body.js-motion-ready .motion-image,
  body.js-motion-ready .motion-image.is-image-ready {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }

  .home-hero .hero-geometry,
  .previous-sponsor-ticker .ticker-track,
  .countdown-unit strong.is-changing {
    animation: none !important;
    transform: none !important;
  }

  .modal.fade .modal-dialog,
  .modal.show .modal-dialog,
  .dropdown-menu,
  .dropdown-menu.show {
    transition-duration: .01ms !important;
  }
}

body.is-reduced-motion .home-hero .hero-geometry,
body.is-reduced-motion .previous-sponsor-ticker .ticker-track {
  animation: none !important;
  transform: none !important;
}

/* Navbar dual branding: DArbD (primary) + Ciarb Qatar Branch (supporting).
   New, self-contained classes only — the legacy .brand-logo/.brand-event
   rules above are left untouched and are simply no longer emitted by the
   generator, so there is nothing here to reconcile against that cascade.
   flex-direction is left at its default `row` (declared explicitly for
   clarity) so the browser's own RTL-aware inline-axis ordering keeps the
   DArbD logo first/primary in both reading directions without ever
   reversing which logo is first — no [dir="rtl"] override is added here
   on purpose. */
.navbar-brand-dual {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: clamp(.5rem, 1vw, .75rem);
}

/* Retains the approved header geometry when the primary DArbD mark stands
   alone, without leaving a spacer for the removed secondary branding. */
.navbar-brand-single {
  display: flex;
  align-items: center;
}

.navbar-brand-logo {
  display: block;
  width: auto;
  flex: 0 0 auto;
  object-fit: contain;
  transition: height var(--motion-standard) var(--ease-standard);
}

.navbar-brand-logo-darbd {
  height: clamp(32px, 2.6vw, 40px);
}

.navbar-brand-logo-ciarb {
  height: clamp(22px, 1.9vw, 28px);
}

.navbar-brand-divider {
  align-self: stretch;
  flex: 0 0 auto;
  width: 1px;
  margin-block: 2px;
  background: var(--ciarb-line);
}

.site-header.is-condensed .navbar-brand-logo-darbd {
  height: clamp(28px, 2.3vw, 34px);
}

.site-header.is-condensed .navbar-brand-logo-ciarb {
  height: clamp(19px, 1.7vw, 24px);
}

.navbar-brand-dual:focus-visible {
  outline: 3px solid rgba(245, 82, 0, .42);
  outline-offset: 3px;
  border-radius: .2rem;
}

@media (max-width: 1024px) {
  .navbar-brand-dual {
    gap: .5rem;
  }

  .navbar-brand-logo-darbd {
    height: 32px;
  }

  .navbar-brand-logo-ciarb {
    height: 22px;
  }
}

@media (max-width: 767.98px) {
  .navbar-brand-dual {
    gap: .45rem;
  }

  .navbar-brand-logo-darbd {
    height: 29px;
  }

  .navbar-brand-logo-ciarb {
    height: 20px;
  }
}

@media (max-width: 430px) {
  .navbar-brand-dual {
    gap: .4rem;
  }

  .navbar-brand-logo-darbd {
    height: 25px;
  }

  .navbar-brand-logo-ciarb {
    height: 17px;
  }
}

@media (max-width: 390px) {
  .navbar-brand-dual {
    gap: .35rem;
  }

  .navbar-brand-logo-darbd {
    height: 23px;
  }

  .navbar-brand-logo-ciarb {
    height: 16px;
  }
}

@media (max-width: 375px) {
  .navbar-brand-dual {
    gap: .32rem;
  }

  .navbar-brand-logo-darbd {
    height: 22px;
  }

  .navbar-brand-logo-ciarb {
    height: 15px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .navbar-brand-logo {
    transition: none;
  }
}

/* New 2: bilingual institutional content, committees and application paths. */
.about-darbd-narrative,
.institutional-copy-grid {
  align-items: start;
  margin-block-end: clamp(2rem, 4vw, 3.5rem);
}

.credibility-panel,
.about-route-card,
.institutional-copy-grid > article,
.board-route-card,
.event-director-card,
.speaker-empty-state,
.speaker-session-card,
.sponsor-benefits,
.sponsor-workshop-participation,
.sponsor-activation {
  padding: clamp(1.2rem, 2.5vw, 2rem);
  background: var(--surface-card);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-institutional-lg);
  box-shadow: var(--shadow-soft);
}

.credibility-panel {
  margin-block: clamp(2rem, 4vw, 3.5rem);
  border-inline-start: 4px solid var(--brand-gold);
}

.credibility-panel h2,
.about-route-card h2,
.institutional-copy-grid h2,
.board-route-card h2,
.event-director-card h2,
.speaker-session-card h2,
.sponsor-benefits h2,
.sponsor-workshop-participation h2,
.sponsor-activation h2 {
  color: var(--brand-wine-2);
}

.about-route-grid,
.institutional-copy-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.about-route-card,
.institutional-copy-grid > article {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.about-route-card .btn {
  margin-block-start: auto;
}

.board-route-card,
.event-director-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  margin-block: 1rem 2rem;
}

.committee-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(.9rem, 2vw, 1.4rem);
  margin-block-start: 2rem;
}

.committee-person-card {
  display: flex;
  min-width: 0;
  flex-direction: column;
  overflow: hidden;
  background: var(--surface-card);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-institutional-lg);
  box-shadow: var(--shadow-soft);
}

.committee-person-photo,
.committee-photo-pending {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center 22%;
  background: var(--ciarb-pale-red);
}

.committee-person-photo.person-photo-landscape {
  object-position: 50% 35%;
}

.committee-photo-pending {
  display: grid;
  place-items: center;
  color: var(--brand-wine-2);
  background: linear-gradient(145deg, var(--brand-cream), #fff);
  border-block-end: 1px dashed var(--line-bright);
  font-size: clamp(2rem, 5vw, 4rem);
  font-weight: 700;
}

.committee-person-copy {
  display: flex;
  min-height: 13.5rem;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  padding: 1.15rem;
}

.committee-person-copy h2 {
  color: var(--brand-wine-2);
  font-size: clamp(1.15rem, 1.6vw, 1.45rem);
  line-height: 1.35;
}

.committee-person-copy .btn {
  margin-block-start: auto;
}

.committee-source-link {
  display: inline-flex;
  gap: .45rem;
  margin-block-start: 1.5rem;
}

.committee-profile-modal .modal-body {
  line-height: 1.8;
}

.programme-preliminary {
  margin-block-end: 1rem;
}

.workshop-placeholder-details {
  display: grid;
  gap: .5rem;
  margin-block: .85rem;
}

.workshop-placeholder-details div {
  padding-block-start: .45rem;
  border-block-start: 1px solid var(--line-soft);
}

.workshop-placeholder-details dt {
  color: var(--brand-muted);
  font-size: .78rem;
}

.workshop-placeholder-details dd {
  margin: 0;
  font-weight: 600;
}

.speaker-empty-state {
  margin-block-start: 2rem;
  border-inline-start: 3px solid var(--brand-gold);
}

.speaker-empty-state p {
  max-width: 58ch;
  margin: 0;
  color: var(--brand-ink);
  font-size: 1rem;
  line-height: 1.65;
}

.speaker-mapping-note {
  max-width: 70ch;
  margin-block: 1.25rem 2rem;
  color: var(--brand-muted);
}

.speaker-session-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 2.5vw, 1.5rem);
}

.speaker-session-card {
  display: grid;
  grid-template-columns: minmax(7.5rem, 32%) minmax(0, 1fr);
  gap: 1.1rem;
  align-items: start;
}

.speaker-session-card > img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--radius-sm);
}

.speaker-session-card ul {
  padding-inline-start: 1.15rem;
}

.speaker-session-card .btn {
  max-width: 100%;
  white-space: normal;
}

/* === SPEAKERS-DESIGN-001 — featured keynote + compact hero === */
.page-speakers .internal-hero-speakers,
.internal-hero.internal-hero-speakers {
  min-height: 0;
  align-items: center;
  padding-block: clamp(1.35rem, 3vw, 2.1rem);
  padding-inline: clamp(1.35rem, 3.5vw, 2.75rem);
  background:
    radial-gradient(circle at 18% 22%, rgba(255, 255, 255, .1), transparent 14rem),
    radial-gradient(circle at 86% 30%, rgba(200, 137, 30, .18), transparent 16rem),
    linear-gradient(135deg, #2c0004, #680008 56%, #170002);
}

.page-speakers .internal-hero-speakers .display-4 {
  font-size: clamp(1.85rem, 3.2vw, 2.65rem);
  margin-bottom: .35rem;
}

.page-speakers .internal-hero-speakers .lead {
  max-width: 38rem;
  font-size: clamp(.95rem, 1.2vw, 1.08rem);
  color: rgba(255, 255, 255, .86);
}

.speakers-section {
  padding-block-start: clamp(1.5rem, 3vw, 2.35rem);
  padding-block-end: clamp(1.75rem, 3.5vw, 2.75rem);
}

/* SPEAKERS-DESIGN-002 — layout lives inside restored .container (never max-width:none on .container) */
.speakers-layout {
  display: grid;
  gap: clamp(1.35rem, 2.5vw, 2rem);
  width: 100%;
  max-width: none;
  margin-inline: 0;
  justify-items: start;
}

/* Tight editorial cluster: portrait + name, centered in the page container */
.speakers-keynote {
  display: grid;
  grid-template-columns: minmax(12.5rem, 16.5rem) minmax(14rem, 26rem);
  gap: clamp(1.25rem, 2.8vw, 2.5rem);
  align-items: start;
  width: max-content;
  max-width: 100%;
  margin-inline: auto;
  padding: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.speakers-keynote-portrait {
  position: relative;
  width: 100%;
  max-width: 16.5rem;
  aspect-ratio: 1 / 1;
  min-height: 0;
  overflow: hidden;
  background: #2a0004;
  border-radius: 0;
}

.speakers-keynote-portrait::after {
  display: none;
}

.speakers-keynote-portrait img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 18%;
  image-rendering: auto;
}

.speakers-keynote-copy {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: .75rem;
  min-height: 0;
  padding: .35rem 0 0;
  background: transparent;
}

.speakers-supporting {
  width: 100%;
  max-width: 42rem;
  margin-inline: auto;
  margin-block-start: 0;
  padding-block-start: 1.15rem;
  border-block-start: 1px solid rgba(119, 0, 12, .14);
  text-align: start;
}

.speakers-supporting .speaker-mapping-note {
  margin: 0;
  max-width: 42rem;
  color: var(--brand-muted);
  font-size: .88rem;
  line-height: 1.55;
}

.speakers-keynote-eyebrow {
  margin: 0;
  color: var(--brand-gold-readable, #9a6b1a);
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.speakers-keynote-copy h2 {
  margin: 0;
  max-width: 16ch;
  color: var(--brand-wine-2, #3b0006);
  font-size: clamp(1.85rem, 3.2vw, 2.85rem);
  font-weight: 400;
  line-height: 1.12;
  text-wrap: balance;
}

[dir="rtl"] .speakers-keynote-copy h2 {
  max-width: 18ch;
  line-height: 1.3;
}

.speakers-keynote-session {
  margin: .35rem 0 0;
  padding-block-start: .9rem;
  border-block-start: 1px solid rgba(119, 0, 12, .16);
  max-width: 28rem;
  color: rgba(53, 45, 43, .78);
  font-size: 1.02rem;
  font-weight: 500;
  letter-spacing: .01em;
}

.speakers-confirmed-title {
  margin: 0 0 1rem;
  color: var(--brand-wine-2, #3b0006);
  font-size: clamp(1.25rem, 2vw, 1.55rem);
  font-weight: 500;
}

@media (max-width: 991.98px) {
  .speakers-layout {
    justify-items: stretch;
  }

  .speakers-keynote {
    grid-template-columns: 1fr;
    width: 100%;
    max-width: 22rem;
    margin-inline: auto;
    gap: 1.15rem;
  }

  .speakers-keynote-portrait {
    max-width: 14rem;
    aspect-ratio: 1 / 1;
  }

  .speakers-keynote-copy h2 {
    max-width: none;
  }

  .speakers-supporting {
    max-width: 22rem;
  }
}

@media (max-width: 575.98px) {
  .page-speakers .internal-hero-speakers {
    padding-block: 1.15rem;
  }

  .speakers-keynote {
    max-width: 100%;
  }

  .speakers-keynote-portrait {
    max-width: 12.5rem;
  }

  .speakers-keynote-copy {
    padding: 0;
  }

  .speakers-supporting {
    max-width: 100%;
    padding-block-start: 1rem;
  }
}

.sponsor-intro,
.sponsor-benefits,
.sponsor-workshop-participation,
.sponsor-activation {
  margin-block-end: 1.5rem;
}

.sponsor-workshop-participation {
  border-inline-start: 4px solid var(--brand-gold);
}

.sponsor-workshop-participation p {
  max-width: 78ch;
}

.sponsor-workshop-participation .btn {
  max-width: 100%;
  white-space: normal;
}

/* Columns rather than a grid. A grid ties the two tracks into shared rows, so
   one benefit wrapping to a second line opened a gap under its single-line
   neighbour that read as a missing item. Columns let each side flow on its own,
   and reading order runs down each column. */
.sponsor-benefits ul,
.sponsor-activation ul {
  /* Two columns only where a column can still hold a readable line. Below that
     the browser drops to one, instead of breaking every benefit after three
     words on a phone. */
  columns: 17rem 2;
  column-gap: 1.5rem;
  margin: 0;
  padding-inline-start: 1.2rem;
}

.sponsor-benefits li,
.sponsor-activation li {
  margin-block-end: .7rem;
  break-inside: avoid;
}

.sponsor-benefits li:last-child,
.sponsor-activation li:last-child {
  margin-block-end: 0;
}

.sponsor-matrix-section {
  margin-block: clamp(2rem, 5vw, 4rem);
}

.sponsor-matrix-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-block-end: 1rem;
}

.sponsor-matrix-heading h2,
.sponsor-matrix-heading p {
  margin: 0;
}

.sponsor-matrix-heading p,
.sponsor-matrix-note {
  color: var(--brand-muted);
  font-size: .88rem;
}

.sponsor-matrix-shell {
  overflow-x: auto;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-institutional-lg);
  box-shadow: var(--shadow-soft);
  scrollbar-color: var(--brand-gold) var(--brand-cream);
}

.sponsor-matrix-shell:focus-visible {
  outline: 3px solid var(--brand-gold);
  outline-offset: 3px;
}

.sponsor-matrix {
  min-width: 980px;
  margin: 0;
  border-color: var(--line-soft);
  font-size: .86rem;
  vertical-align: middle;
}

.sponsor-matrix thead th {
  padding: 1rem .8rem;
  color: #fff;
  background: var(--brand-wine-2);
  text-align: center;
}

.sponsor-matrix thead th:first-child,
.sponsor-matrix tbody th {
  position: sticky;
  inset-inline-start: 0;
  z-index: 1;
  width: 15rem;
  min-width: 15rem;
  text-align: start;
}

.sponsor-matrix thead th:first-child {
  z-index: 2;
}

.sponsor-matrix thead span,
.sponsor-matrix thead small {
  display: block;
}

.sponsor-matrix thead small {
  margin-block-start: .25rem;
  color: var(--brand-gold-soft);
  font-weight: 500;
}

.sponsor-matrix tbody th {
  padding: .8rem;
  color: var(--brand-wine-2);
  background: var(--surface-card);
}

.sponsor-matrix td {
  min-width: 10.5rem;
  padding: .8rem;
  text-align: center;
  background: #fff;
}

.sponsor-matrix tbody tr:nth-child(even) td,
.sponsor-matrix tbody tr:nth-child(even) th {
  background: var(--brand-cream);
}

.sponsor-matrix-note {
  margin-block: .8rem 0;
}

/* Registration page ------------------------------------------------------- */
.registration-intro {
  margin-block-end: clamp(1.75rem, 3vw, 2.5rem);
  color: var(--brand-ink);
  font-size: 1.05rem;
  line-height: 1.65;
}

.registration-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 20rem);
  gap: clamp(1.75rem, 4vw, 3.25rem);
  align-items: start;
}

.registration-aside {
  position: sticky;
  top: 116px;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}

.registration-aside-block h2 {
  margin-block-end: .65rem;
  color: var(--brand-muted);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.registration-detail-list {
  margin: 0;
}

.registration-detail-list > div {
  padding-block: .6rem;
  border-block-end: 1px solid rgba(59, 0, 6, .09);
}

.registration-detail-list dt {
  color: var(--brand-wine-2);
  font-size: .88rem;
  font-weight: 600;
}

.registration-detail-list dd {
  margin: .15rem 0 0;
  color: var(--brand-ink);
  font-size: .9rem;
  line-height: 1.55;
}

.registration-note-list {
  margin: 0;
  padding-inline-start: 1.1rem;
  color: var(--brand-ink);
  font-size: .88rem;
  line-height: 1.6;
}

.registration-note-list li + li {
  margin-block-start: .55rem;
}

/* Day choice. Rows rather than large cards: this is a single question inside a
   form, not a plan chooser. */
.registration-day-fieldset {
  margin-block-end: .5rem;
  padding: 0;
  border: 0;
}

.registration-day-fieldset > legend {
  float: none;
  width: auto;
  margin-block-end: .65rem;
  font-size: 1rem;
}

.registration-day-options {
  display: grid;
  gap: .5rem;
}

.registration-day-choice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: .75rem;
  padding: .85rem 1rem;
  border: 1px solid rgba(59, 0, 6, .14);
  border-radius: var(--radius-institutional);
  transition: border-color 160ms var(--ease-standard), background-color 160ms var(--ease-standard);
}

.registration-day-choice:has(input:checked) {
  background: rgba(200, 137, 30, .05);
  border-color: var(--brand-gold-readable);
}

.registration-day-choice input {
  margin-block-start: .2rem;
}

.registration-day-choice label {
  display: grid;
  gap: .15rem;
  cursor: pointer;
}

.registration-day-title {
  color: var(--brand-wine-2);
  font-size: .98rem;
  font-weight: 600;
}

.registration-day-note {
  color: var(--brand-muted);
  font-size: .85rem;
  line-height: 1.5;
}

.registration-day-error {
  margin-block: .55rem 0;
  color: var(--bs-form-invalid-color, #b32d2e);
  font-size: .875rem;
}

.registration-day-error[hidden] {
  display: none;
}

/* The Ciarb-member radio group's error sits after a wrapper rather than
   directly after an input, so Bootstrap's `.was-validated :invalid ~
   .invalid-feedback` selector never reaches it. It was previously forced
   visible with `d-block`, which meant the message showed on first load. It is
   now driven by the `hidden` attribute from site.js, like the Day-2 error, and
   these two rules give the attribute something to switch. Keeping the
   `.invalid-feedback` class preserves the styling shared with every other
   field error on the form. */
.site-form .invalid-feedback[data-member-feedback] {
  display: block;
}

.site-form .invalid-feedback[data-member-feedback][hidden] {
  display: none;
}

.registration-window {
  max-width: 26rem;
  margin-block-start: 1rem;
}

.form-group-title {
  margin-block: 1.25rem 0;
  padding-block-start: 1.25rem;
  border-block-start: 1px solid rgba(59, 0, 6, .1);
  color: var(--brand-muted);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
}

@media (max-width: 991.98px) {
  .registration-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .registration-aside {
    position: static;
  }
}

.share-privacy-note {
  margin-block-start: .75rem;
  color: var(--brand-muted);
  font-size: .88rem;
}

.form-check-optional {
  padding-block: .75rem;
  padding-inline-end: .75rem;
  background: rgba(200, 137, 30, .08);
  border-radius: var(--radius-xs);
}

.contact-links,
.event-director-card address {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1rem;
  margin: 0;
}

.contact-links a,
.event-director-card address a {
  overflow-wrap: anywhere;
}

.event-director-card address {
  flex-direction: column;
  align-items: flex-start;
}

@media (max-width: 991.98px) {
  .committee-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767.98px) {
  .about-route-grid,
  .institutional-copy-grid,
  .speaker-session-grid,
  .committee-grid,
  .sponsor-benefits ul,
  .sponsor-activation ul {
    grid-template-columns: minmax(0, 1fr);
  }

  .board-route-card,
  .event-director-card,
  .speaker-session-card {
    grid-template-columns: minmax(6.5rem, 30%) minmax(0, 1fr);
  }

  .committee-person-card {
    display: grid;
    grid-template-columns: minmax(7.5rem, 36%) minmax(0, 1fr);
  }

  .committee-person-photo,
  .committee-photo-pending {
    height: 100%;
    min-height: 17rem;
  }

  .committee-person-copy {
    min-height: 17rem;
  }

  .sponsor-matrix-heading {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (max-width: 430px) {
  .speaker-session-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .speaker-session-card > img {
    max-width: 11rem;
  }
}

@media (max-width: 479.98px) {
  .committee-person-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .committee-person-photo,
  .committee-photo-pending {
    height: auto;
    min-height: 0;
  }

  .committee-person-copy {
    min-height: 12.5rem;
  }
}

/* Sponsorship & Workshops — two separate routes on one page.
   Day 2 workshop participation is deliberately given its own block and its own
   visual treatment so it can never read as a sponsorship tier. */
.route-split-intro {
  max-width: 62ch;
  margin: 0 0 clamp(2rem, 4vw, 3rem);
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--brand-ink-soft, #4a4a52);
}

.route-block + .route-block {
  margin-top: clamp(2.75rem, 6vw, 4.5rem);
  padding-top: clamp(2.75rem, 6vw, 4.5rem);
  border-top: 1px solid rgba(92, 11, 23, .12);
}

.route-block-head {
  max-width: 68ch;
}

.route-block-eyebrow {
  margin: 0 0 .5rem;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brand-gold, #b08d3f);
}

.route-block-head h2 {
  margin: 0 0 .75rem;
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  line-height: 1.25;
}

.route-block-head p {
  margin: 0 0 .75rem;
  line-height: 1.7;
  color: var(--brand-ink-soft, #4a4a52);
}

.route-block-disclaimer {
  font-weight: 600;
  color: var(--brand-wine-2, #5c0b17) !important;
}

.tier-list {
  margin: clamp(1.5rem, 3vw, 2.25rem) 0 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid rgba(92, 11, 23, .14);
}

.tier-row {
  display: grid;
  grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 1rem;
  align-items: baseline;
  padding: .95rem 0;
  border-bottom: 1px solid rgba(92, 11, 23, .1);
}

.tier-row-head {
  padding-block: .6rem;
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

.tier-row-name {
  font-weight: 600;
  color: var(--brand-ink, #1d1d20);
}

.tier-row-fee {
  font-variant-numeric: tabular-nums;
  color: var(--brand-wine-2, #5c0b17);
}

.tier-row-slots {
  font-size: .9375rem;
  color: var(--brand-ink-soft, #4a4a52);
}

.route-block-note {
  max-width: 68ch;
  margin: 1.5rem 0 0;
  font-size: .9375rem;
  line-height: 1.65;
  color: var(--brand-ink-soft, #4a4a52);
}

.route-block-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
  margin: clamp(1.5rem, 3vw, 2rem) 0 0;
}

.link-quiet {
  font-size: .9375rem;
  color: var(--brand-wine-2, #5c0b17);
  text-decoration-color: rgba(92, 11, 23, .35);
  text-underline-offset: .2em;
}

.workshop-windows {
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

.workshop-windows h3 {
  margin: 0 0 .85rem;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

.workshop-windows ul {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: .85rem 1.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.workshop-windows li {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding-inline-start: .9rem;
  border-inline-start: 2px solid var(--brand-gold, #b08d3f);
}

.workshop-window-time {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--brand-ink, #1d1d20);
}

.workshop-window-label {
  font-size: .875rem;
  color: var(--brand-ink-soft, #4a4a52);
}

.application-form-layout {
  max-width: 62rem;
  margin-inline: auto;
}

@media (max-width: 575.98px) {
  .tier-row {
    grid-template-columns: minmax(0, 1fr) auto;
    row-gap: .3rem;
  }

  .tier-row-name {
    grid-column: 1 / -1;
  }

  .tier-row-slots {
    text-align: end;
  }

  .tier-row-head {
    display: none;
  }
}

/* Sponsorship matrix: the table is comparison-first and needs width. Below the
   breakpoint the same rows are rendered as one card per tier instead, because a
   240px sticky label column leaves ~110px for values in a 390px viewport. */
.sponsor-matrix-stack {
  display: none;
}

.tier-benefit-card {
  padding: 1.15rem 1.15rem 1.25rem;
  background: rgba(255, 255, 255, .94);
  border: 1px solid rgba(92, 11, 23, .14);
  border-radius: 10px;
}

.tier-benefit-card + .tier-benefit-card {
  margin-top: 1rem;
}

.tier-benefit-card h3 {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .5rem .75rem;
  margin: 0 0 .85rem;
  padding-bottom: .7rem;
  border-bottom: 1px solid rgba(92, 11, 23, .14);
  font-size: 1.0625rem;
}

.tier-benefit-fee {
  font-size: .875rem;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--brand-wine-2, #5c0b17);
}

.tier-benefit-card dl {
  margin: 0;
}

.tier-benefit {
  display: grid;
  gap: .1rem;
  padding: .55rem 0;
}

.tier-benefit + .tier-benefit {
  border-top: 1px solid rgba(92, 11, 23, .08);
}

.tier-benefit dt {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

.tier-benefit dd {
  margin: 0;
  font-size: .9375rem;
  line-height: 1.55;
  color: var(--brand-ink, #1d1d20);
}

/* Day 2 windows, presented as a list rather than an empty booking grid. */
.day2-lead {
  max-width: 62ch;
  margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
  font-size: 1.0625rem;
  line-height: 1.7;
}

.day2-windows-title {
  margin: 0 0 1rem;
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

.day2-window-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1rem 2rem;
  margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
  padding: 0;
  list-style: none;
}

.day2-window {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  padding-inline-start: 1rem;
  border-inline-start: 2px solid var(--brand-gold, #b08d3f);
}

.day2-window-time {
  font-size: 1.05rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--brand-ink, #1d1d20);
}

.day2-window-label {
  font-size: .9375rem;
  color: var(--brand-ink-soft, #4a4a52);
}

.day2-capacity {
  max-width: 62ch;
  margin: 0 0 1.5rem;
  line-height: 1.7;
  color: var(--brand-ink-soft, #4a4a52);
}

.day2-actions {
  margin: clamp(1.5rem, 3vw, 2rem) 0 0;
}

@media (max-width: 767.98px) {
  .sponsor-matrix-shell,
  .sponsor-matrix-scroll-note {
    display: none;
  }

  .sponsor-matrix-stack {
    display: block;
  }
}

/* Contact routes read as a list of destinations, not as ranked feature cards. */
.contact-route {
  padding: 1rem 0;
  border-top: 1px solid rgba(92, 11, 23, .12);
}

.contact-route:last-child {
  border-bottom: 1px solid rgba(92, 11, 23, .12);
}

.contact-route h2 {
  margin: 0 0 .3rem;
  font-size: 1rem;
  font-weight: 600;
}

.contact-route .contact-links {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem 1.25rem;
  margin: 0;
  font-size: .9375rem;
}

/* Speakers pending state. One quiet statement, held at a modest width and
   given a short section so the page reads as deliberately awaiting content
   rather than as a page that failed to load. */
.speakers-pending {
  padding-block: clamp(2.5rem, 5vw, 4rem);
}

.speakers-pending-panel {
  max-width: 44rem;
  margin-inline: auto;
  padding-block: clamp(1.75rem, 3vw, 2.5rem);
  border-block: 1px solid rgba(59, 0, 6, .14);
  text-align: center;
}

.speakers-pending-note {
  max-width: 46ch;
  margin: 0 auto;
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--brand-ink-soft, #4a4a52);
}

/* Day 1 and programme note. */
.day1-lead {
  max-width: 62ch;
  margin: 0 0 clamp(1.75rem, 4vw, 2.5rem);
  font-size: 1.0625rem;
  line-height: 1.7;
}

.programme-note {
  max-width: 62ch;
  margin-top: clamp(1.75rem, 4vw, 2.5rem);
  padding-inline-start: 1rem;
  border-inline-start: 2px solid var(--brand-gold, #b08d3f);
}

.programme-note h2 {
  margin: 0 0 .35rem;
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

.programme-note p {
  margin: 0;
  font-size: .9375rem;
  line-height: 1.65;
  color: var(--brand-ink-soft, #4a4a52);
}

/* Field groups carry real fieldset semantics; the browser default border and
   inline-size behaviour are reset so the grid layout is unaffected. */
.form-group-set {
  min-inline-size: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.form-group-set + .form-group-set,
.col-12 > .form-group-set {
  margin-top: .25rem;
}

legend.form-group-title {
  float: none;
  width: auto;
  margin: 0 0 .75rem;
  padding: 0;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}

/* A tier row must not grow because it happens to hold a confirmed logo: tier
   prominence on this page is contractual, and Bronze outsizing Platinum
   misrepresents the packages. */
.current-sponsor-logos-inline {
  display: flex;
  /* Row, not the column the base rule sets. As a column, a second confirmed
     logo stacked instead of sitting beside the first and pushed Bronze to
     1.65x the height of Platinum — tier prominence here is contractual, so a
     lower tier must never out-size a higher one. */
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: .5rem;
  /* The base rule spans the full grid width, which forces an extra row. */
  grid-column: auto;
  justify-content: flex-end;
  padding-block: 0;
}

.current-sponsor-logos-inline .sponsor-logo-wrap {
  flex-direction: row;
  align-items: center;
  gap: .75rem;
  margin: 0;
  padding: .5rem .65rem;
  /* Shrink to share the column instead of overflowing it. min-width:0 is what
     actually lets a flex item go below its content width. */
  flex: 0 1 auto;
  min-width: 0;
  max-width: none;
}

.current-sponsor-logos-inline .sponsor-logo-wrap img {
  /* Height cap first, so a wide wordmark never reads as a bigger sponsor than
     a compact one; max-width lets the pair shrink together when the column is
     narrow, and each logo keeps its own native aspect ratio throughout. */
  max-height: 52px;
  max-width: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

.current-sponsor-logos-inline .sponsor-tier-label {
  margin: 0;
  font-size: .68rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand-ink-soft, #4a4a52);
}


/* === Customer revision 2026-08-13 — compact chrome === */
/* HOME-DESIGN-002: brand + countdown as one optical cluster */
.header-brand-cluster {
  display: inline-flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  gap: .55rem .75rem;
  order: 1;
}

.navbar-brand.navbar-brand-dual {
  flex: 0 0 auto;
  min-width: max-content;
  max-width: none;
  overflow: visible;
  margin-inline-end: 0;
}

.header-countdown {
  display: inline-flex;
  align-items: center;
  gap: .15rem .28rem;
  margin-inline-start: 0;
  padding: .28rem .55rem .22rem;
  border: 1px solid rgba(119, 0, 12, .12);
  border-radius: .45rem;
  background: linear-gradient(180deg, rgba(255, 255, 255, .96), rgba(247, 243, 240, .92));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .7);
  white-space: nowrap;
  flex: 0 0 auto;
  min-width: 0;
  position: relative;
  z-index: 1;
}
.header-countdown-unit {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  line-height: 1.05;
  min-width: 1.65rem;
  padding-inline: .08rem;
}
.header-countdown-unit strong {
  color: var(--ciarb-deep-red);
  font-size: 1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}
.header-countdown-unit small {
  color: rgba(53, 45, 43, .72);
  font-size: .52rem;
  font-weight: 650;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.header-countdown-sep {
  color: rgba(119, 0, 12, .38);
  font-weight: 600;
  font-size: .95rem;
  padding-bottom: .55rem;
  align-self: center;
}

/* Below xxl: brand cluster + persistent CTAs + toggler; countdown stays with branding */
@media (max-width: 1199.98px) {
  .premium-navbar > .header-container,
  .navbar > .header-container {
    flex-wrap: wrap;
    align-items: center;
  }

  .header-brand-cluster {
    order: 1;
    flex: 1 1 auto;
    max-width: calc(100% - 11.5rem);
    min-width: 0;
    flex-wrap: wrap;
  }

  .header-brand-cluster .navbar-brand.navbar-brand-dual {
    max-width: 100%;
    min-width: 0;
  }

  .navbar-brand.navbar-brand-dual .navbar-brand-logo-darbd,
  .navbar-brand.navbar-brand-dual .navbar-brand-logo-ciarb {
    flex-shrink: 1;
  }

  .header-brand-cluster .header-countdown {
    flex: 1 1 100%;
    width: auto;
    justify-content: flex-start;
    margin: .2rem 0 0;
  }

  .header-actions-persistent {
    order: 2;
    margin-inline-start: auto;
    flex: 0 0 auto;
    align-items: center;
  }

  .header-actions-persistent .btn {
    padding: .28rem .5rem;
    font-size: .68rem;
    min-height: 34px;
    white-space: nowrap;
  }

  .menu-trigger {
    order: 3;
    margin-inline-start: .35rem;
  }

  .nav-panel {
    order: 4;
    width: 100%;
    max-height: min(70dvh, calc(100dvh - 8.5rem));
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
  }

  /* Collapsed nav: dropdowns must not reserve flyout layout space. */
  .nav-panel .dropdown-menu {
    display: none;
    position: static;
    float: none;
    width: 100%;
    margin: 0;
    border: 0;
    box-shadow: none;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    padding-inline: .75rem;
    transform: none;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .nav-panel .dropdown-menu.show {
    display: block;
  }
}

/* HOME-DESIGN-002-L1-01: on phones, flatten brand cluster so countdown
   can occupy a full header row — never crush Minutes/Seconds into ~130px. */
@media (max-width: 575.98px) {
  .header-brand-cluster {
    display: contents;
  }

  .navbar-brand.navbar-brand-dual {
    order: 1;
    flex: 1 1 auto;
    min-width: 0;
    max-width: calc(100% - 7.5rem);
  }

  .header-actions-persistent {
    order: 2;
  }

  .menu-trigger {
    order: 3;
  }

  .header-countdown {
    order: 4;
    flex: 1 1 100%;
    width: 100%;
    max-width: none;
    justify-content: space-between;
    gap: .1rem .2rem;
    margin: .35rem 0 0;
    padding: .32rem .55rem .28rem;
    box-sizing: border-box;
  }

  .header-countdown-unit {
    flex: 1 1 0;
    min-width: 0;
  }

  .header-countdown-unit strong {
    font-size: .95rem;
  }

  .header-countdown-unit small {
    font-size: .5rem;
    letter-spacing: .03em;
    max-width: 100%;
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
  }

  .header-countdown-sep {
    flex: 0 0 auto;
    padding-bottom: .5rem;
  }

  .nav-panel {
    order: 5;
  }
}

@media (min-width: 1200px) {
  .header-brand-cluster {
    order: 1;
    flex: 0 1 auto;
  }

  .header-countdown {
    display: inline-flex;
    width: auto;
    margin-inline-start: 0;
  }

  /* Keep brand cluster → nav → actions on one row without clipping. */
  .premium-navbar > .header-container,
  .navbar > .header-container {
    flex-wrap: nowrap;
    align-items: center;
    gap: .55rem;
  }

  .navbar-brand.navbar-brand-dual {
    flex: 0 0 auto;
  }

  .navbar-brand.navbar-brand-dual .navbar-brand-logo-darbd {
    height: clamp(28px, 2.2vw, 34px);
  }

  .navbar-brand.navbar-brand-dual .navbar-brand-logo-ciarb {
    height: clamp(18px, 1.5vw, 22px);
  }

  .nav-panel {
    flex: 1 1 auto;
    min-width: 0;
    justify-content: flex-end;
    gap: .45rem;
    order: 2;
    max-height: none;
    overflow: visible;
  }

  .primary-nav {
    flex: 0 1 auto;
    min-width: 0;
    flex-wrap: nowrap;
    gap: .04rem;
    padding: .12rem;
  }

  .primary-nav .nav-link {
    min-height: 34px;
    padding: .32rem .46rem;
    font-size: .7rem;
  }

  .header-actions-persistent {
    flex: 0 0 auto;
    gap: .28rem !important;
    margin-inline-start: .45rem;
    order: 3;
  }

  .header-actions-persistent .btn {
    padding: .3rem .55rem;
    font-size: .7rem;
    white-space: nowrap;
    min-height: 34px;
  }

  .header-actions-persistent .register-cta {
    min-width: 0;
  }

  .menu-trigger {
    order: 4;
  }
}
/* Short landscape: keep a compact countdown visible (do not drop it). */
@media (max-height: 420px) and (orientation: landscape) {
  .header-countdown {
    display: inline-flex;
    padding: .2rem .4rem;
  }
  .header-countdown-unit strong { font-size: .78rem; }
  .header-countdown-unit small { font-size: .5rem; }
  .header-countdown-sep { padding-bottom: .45rem; }
}

.customer-hero .eyebrow.hero-label,
.kicker.kicker-preserve-case {
  text-transform: none;
  letter-spacing: .04em;
}

/* Brand casing must survive any parent uppercase transform (A1: Ciarb, never CIARB). */
.brand-case {
  text-transform: none;
}

.internal-hero-centered {
  grid-template-columns: minmax(0, 1fr) minmax(240px, 340px);
  align-items: center;
}
.internal-hero-centered .internal-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-self: center;
  min-height: 100%;
}
.internal-hero-solo {
  grid-template-columns: 1fr;
  align-items: center;
  min-height: clamp(220px, 28vw, 340px);
}
.internal-hero-solo .internal-hero-copy {
  max-width: 52rem;
}
@media (max-width: 991.98px) {
  .internal-hero,
  .internal-hero-centered {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .internal-hero-panel { min-height: 0; }
}

.site-footer-compact {
  padding-block: 1rem .85rem;
}
.site-footer-compact .footer-compact-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .85rem 1.35rem;
}
.site-footer-compact .footer-logo-pair {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  padding: .4rem .65rem;
  background: rgba(255, 255, 255, .94);
  border-radius: .4rem;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .2);
}
.site-footer-compact .footer-logo {
  height: auto;
  max-width: none;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
.site-footer-compact .footer-logo-darbd {
  height: 36px;
  width: auto;
  max-width: 130px;
  object-fit: contain;
}
.site-footer-compact .footer-logo-ciarb {
  height: 32px;
  width: auto;
  max-width: 110px;
  object-fit: contain;
}
.site-footer-compact .footer-compact-nav .footer-inline {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem .85rem;
  margin: 0;
  padding: 0;
  justify-content: flex-end;
}
.site-footer-compact .footer-compact-nav a {
  color: rgba(255, 255, 255, .9);
  font-size: .8rem;
  font-weight: 500;
  text-decoration: none;
}
.site-footer-compact .footer-compact-nav a:hover,
.site-footer-compact .footer-compact-nav a:focus-visible {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: .18em;
}
.site-footer-compact .footer-lower {
  margin-top: .7rem;
  padding-top: .55rem;
  border-top: 1px solid rgba(255, 255, 255, .18);
  font-size: .76rem;
  color: rgba(255, 255, 255, .72);
}
@media (max-width: 575.98px) {
  .site-footer-compact .footer-logo-pair { width: auto; justify-content: flex-start; }
  .site-footer-compact .footer-logo-darbd { height: 32px; }
  .site-footer-compact .footer-logo-ciarb { height: 28px; }
  .site-footer-compact .footer-compact-nav .footer-inline { justify-content: flex-start; }
}

.programme-confirm-note {
  margin-top: 1.5rem;
  color: var(--ciarb-black-90);
  font-size: .95rem;
  font-style: italic;
}
.programme-card p:empty { display: none; }
.media-year-header { margin-bottom: 1.25rem; }
.media-edition-label {
  margin: .35rem 0 0;
  color: var(--ciarb-black-90);
  font-size: 1.05rem;
  font-weight: 600;
}
.media-photo-gallery { margin-top: .5rem; }
.legal-notice-header { margin-bottom: 1.75rem; }
.legal-notice-meta { color: var(--ciarb-black-90); }
.legal-notice-stack { display: grid; gap: 1.35rem; }
.legal-notice-block h2 {
  margin-bottom: .65rem;
  font-size: 1.2rem;
}
.ciarb-member-options { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; }
.form-help { color: var(--ciarb-black-90); font-size: .9rem; margin: 0 0 .35rem; }


/* === Corrective closure 2026-08-20 === */

/* Previous-sponsor logo ticker.
   The track holds the logo list twice and translates by -50%, so the second
   copy is exactly under the first when the keyframe wraps — no visible seam.
   Slow by requirement: 27 logos over 90s is roughly 3.3s per logo, which is
   readable rather than a blur. */
.previous-sponsor-ticker {
  margin-top: 1.25rem;
  overflow: hidden;
  /* Fade the two ends so logos enter and leave instead of being guillotined. */
  -webkit-mask-image: linear-gradient(to right, transparent, #000 4%, #000 96%, transparent);
          mask-image: linear-gradient(to right, transparent, #000 4%, #000 96%, transparent);
}

.previous-sponsor-ticker .ticker-track {
  display: flex;
  width: max-content;
  gap: .75rem;
  padding-block: .5rem;
  animation: sponsorTicker 90s linear infinite;
  animation-duration: 90s;
  will-change: transform;
}

/* Touch devices cannot hover to pause, so give them a longer cycle. */
@media (pointer: coarse) {
  .previous-sponsor-ticker .ticker-track { animation-duration: 110s; }
  .previous-sponsor-logo { block-size: 78px; padding: .55rem .85rem; }
  .previous-sponsor-logo img { max-block-size: 46px; max-inline-size: 160px; }
}

@media (max-width: 575.98px) {
  .previous-sponsor-logo { block-size: 70px; padding: .5rem .75rem; }
  .previous-sponsor-logo img { max-block-size: 40px; max-inline-size: 140px; }
}

/* Reduced motion: the ticker stops and becomes a wrapping, fully readable
   grid, because a frozen single-line track would hide most of the list. */
@media (prefers-reduced-motion: reduce) {
  .previous-sponsor-ticker {
    overflow: visible;
    -webkit-mask-image: none;
            mask-image: none;
  }
  .previous-sponsor-ticker .ticker-track {
    width: auto;
    flex-wrap: wrap;
  }
  .previous-sponsor-ticker .ticker-set {
    flex-wrap: wrap;
    justify-content: center;
  }
  .previous-sponsor-ticker .ticker-set[aria-hidden="true"] { display: none; }
}

/* Previous-year video, shown first and larger than a gallery tile. Dormant
   until an approved video is supplied. */
/* The client's supplied event films, shown above that year's photographs.
   A year may carry more than one: 2024 has a 16/9 film and a 480x848 phone
   clip. They sit in one centred, wrapping row so a portrait clip reads as a
   deliberate second item rather than as a broken wide one. */
.media-video-feature {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: center;
  gap: clamp(1rem, 2.5vw, 2rem);
  margin-block-end: clamp(1.75rem, 4vw, 2.75rem);
}

.media-video-heading {
  flex: 1 0 100%;
  margin-block-end: 0;
  color: var(--ciarb-deep-red);
  font-size: 1.05rem;
}

.media-video {
  flex: 1 1 min(100%, 42rem);
  min-width: 0;
  margin: 0;
}

/* Native aspect ratio, published from the file's own pixel dimensions, so the
   box is right before any video data is fetched and nothing shifts on load. A
   fixed 16/9 would pillarbox the portrait clip into black bars across two
   thirds of its width. */
.media-video video {
  display: block;
  width: 100%;
  /* `height: auto` is load-bearing. The width/height HTML attributes map to
     CSS width/height presentational hints on <video> (unlike <img>, where the
     UA sheet derives the ratio from them). With both dimensions resolved,
     `aspect-ratio` is ignored: the 1920x1080 film rendered 619px wide by a
     literal 1080px tall. Releasing height lets the ratio drive the box. */
  height: auto;
  max-width: 1100px;
  margin-inline: auto;
  aspect-ratio: var(--media-video-ratio, 16 / 9);
  background: #000;
  border-radius: .35rem;
}

/* A 480x848 clip rendered at full column width would run taller than the
   viewport on every device. Capped to a phone-shaped column; the ratio is
   still its own, so nothing is cropped or stretched. */
.media-video-portrait {
  flex: 0 1 min(100%, 19rem);
}

.media-video-portrait video {
  max-width: 19rem;
}

.media-video figcaption {
  margin-top: .5rem;
  text-align: center;
  color: var(--ink-muted, #5a5a5a);
  font-size: .92rem;
}

.media-photos-heading {
  font-size: 1.05rem;
  color: var(--ciarb-deep-red);
  margin-bottom: .75rem;
}

/* One cell holds a tier's confirmed logos and its Become a Sponsor action, so
   a tier that has logos keeps the same grid row count as one that does not. */
.sponsor-tier-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: .75rem 1rem;
  min-width: 0;
}

.sponsor-tier-actions .current-sponsor-logos-inline {
  flex: 0 1 auto;
  min-width: 0;
}

.sponsor-tier-actions .become-sponsor-slot {
  flex: 0 0 auto;
  justify-self: auto;
}

@media (max-width: 767.98px) {
  .sponsor-tier-actions {
    justify-content: flex-start;
  }
  .sponsor-tier-actions .current-sponsor-logos-inline {
    justify-content: flex-start;
    flex-basis: 100%;
  }
}

/* Transparent sponsor artwork integrates with the approved neutral surface;
   the commercial tier card itself remains unchanged. */
.sponsor-tier-actions .sponsor-logo-wrap {
  padding: .25rem .5rem;
  background: transparent;
  border: 0;
}

.sponsor-tier-supporting .support-logo-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: center;
  justify-items: center;
  width: 100%;
  gap: .9rem .65rem;
}

.sponsor-tier-supporting .support-logo-grid .sponsor-logo-wrap {
  width: 100%;
  max-width: none;
  min-width: 0;
  padding: .25rem;
  background: transparent;
  border: 0;
}

.sponsor-tier-supporting .support-logo-grid .sponsor-logo-wrap img {
  max-width: min(100%, 10rem);
  max-height: 3.5rem;
}

.sponsor-tier-supporting .media-logo-row {
  justify-content: center;
  width: 100%;
}

.sponsor-tier-supporting .media-logo-row .sponsor-logo-wrap {
  background: transparent;
  border: 0;
}

@media (min-width: 576px) and (max-width: 991.98px) {
  .sponsor-tier-supporting .support-logo-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 575.98px) {
  .sponsor-tier-supporting .support-logo-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Breadcrumb links rendered 40x23 at every viewport — a pixel under the 24px
   WCAG 2.2 AA minimum target size, on every inner page. */
.breadcrumb-item a {
  display: inline-flex;
  align-items: center;
  min-block-size: 24px;
}

/* Sponsorship brochure download (Website Brief, "Downloads"). Sits between the
   sponsor intro and the tier stack so it is reachable without scrolling the
   whole page. */
.brochure-download {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  margin-block: 1.5rem 2rem;
  padding: 1.25rem 1.4rem;
  background: #fff;
  border: 1px solid var(--line-soft);
  border-inline-start: 4px solid var(--ciarb-deep-red);
  border-radius: .35rem;
}

.brochure-download-copy {
  flex: 1 1 22rem;
  min-width: 0;
}

.brochure-download h2 {
  margin: 0 0 .35rem;
  font-size: 1.05rem;
  color: var(--ciarb-deep-red);
}

.brochure-download p {
  margin: 0;
  max-width: 46rem;
  color: var(--ink-muted, #5a5a5a);
  font-size: .93rem;
  line-height: 1.55;
}

.brochure-download-link {
  flex: 0 0 auto;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .15rem;
  min-block-size: 44px;
  text-align: center;
}

.brochure-download-link i {
  font-size: 1.05em;
  line-height: 1;
}

/* Size/page count is deliberately quieter than the action itself. */
.brochure-download-meta {
  font-size: .74rem;
  font-weight: 500;
  letter-spacing: .04em;
  opacity: .85;
}

@media (max-width: 575.98px) {
  .brochure-download {
    padding: 1rem;
  }
  .brochure-download-link {
    inline-size: 100%;
  }
}

/* Header actions, 768-1199.98px: the clipped "Sponsor" label.
   `.register-cta` carries an unconditional `min-width: 104px`. Above 1200px a
   rule already relaxes it to 0, which is why the bar is correct there. Between
   768 and 1199.98px the floor stayed, so Register held 104px of a 233px
   content box and Sponsor and the language switcher split the remaining 113px
   at 56px each — 2px short of Sponsor's 58px of nowrap text, which then
   clipped. Extending the existing override into this range lets all three take
   their own width; nothing else changes. */
/* Header actions, 768-1199.98px: the clipped "Sponsor" label.
   Two rules scoped to `max-width: 1199.98px` are written for the phone layout,
   where the actions stack full-width inside the collapsed panel:
     .header-actions      { min-width: 0 }     - cancels max-content sizing
     .header-actions .btn { width: 100% }      - equalises every button
   Above 768px the actions sit as a horizontal strip instead, so `width: 100%`
   forced all three controls to one shared width (59px) and "Sponsor" (60px of
   nowrap text) clipped. Restoring content sizing for the strip range only;
   below 768px the phone rules still apply untouched. */
@media (min-width: 768px) and (max-width: 1199.98px) {
  .header-actions {
    min-width: max-content;
  }

  .header-actions .btn,
  .header-actions .nav-cta {
    width: auto;
  }

  .header-actions-persistent .register-cta {
    min-width: 0;
  }
}

/* Year intro: give the heading air before the photography starts. */
/* The event title and edition live in the page hero. This header is metadata
   only — a kicker and the date/venue line — so it needs the rhythm of a
   caption, not of a second title block. */
.media-year-header {
  max-inline-size: 46rem;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .3rem .85rem;
  margin-block-end: clamp(1.1rem, 2.2vw, 1.75rem);
  padding-block-end: .8rem;
  border-block-end: 1px solid var(--line-soft);
}

.media-year-kicker {
  margin: 0;
  color: var(--brand-ink-soft, #6b6b73);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
}

[dir="rtl"] .media-year-kicker {
  letter-spacing: 0;
  text-transform: none;
}

.media-year-header h2 {
  margin: 0;
  font-size: clamp(1.5rem, 3.2vw, 2.3rem);
  line-height: 1.15;
  color: var(--ciarb-deep-red);
}

.media-year-meta {
  margin: 0;
  color: var(--ink-muted, #5a5a5a);
  font-size: .93rem;
}

/* On a phone the kicker and the date read better stacked than wrapped mid-line. */
@media (max-width: 575.98px) {
  .media-year-header {
    flex-direction: column;
    align-items: flex-start;
    gap: .3rem;
  }
}

.media-section {
  background: var(--ciarb-neutral, #f7f5f2);
}

/* Below 992px the justified rows stop working: three photographs across a
   768px screen resolve to ~160px tall and 123px wide, which is a thumbnail
   sheet, not a gallery. Wrapping the rows into 50% cells was also tried and
   produced 703-1282px rows against 254px on desktop.
   Narrow widths therefore flow the same photographs down two columns, then
   one. `display: contents` drops the build-time row wrappers out of the box
   tree so the cells join the column flow directly — the DOM order, the
   lightbox and the markup are all unchanged, only the visual arrangement. */
@media (max-width: 991.98px) {
  .gallery-rows {
    display: block;
    column-count: 2;
    column-gap: var(--gallery-gutter);
  }

  .gallery-row {
    display: contents;
  }

  .gallery-cell {
    display: block;
    flex-grow: 0 !important;
    margin-block-end: var(--gallery-gutter);
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
  }

  .gallery-cell .gallery-item,
  .gallery-cell .gallery-item img {
    block-size: auto;
  }
}

/* Phones: one photograph at full width. Two columns on a 360px screen halves
   every photograph and takes the tap target with it. */
@media (max-width: 575.98px) {
  .gallery-rows {
    column-count: 1;
  }
}



/* Keep the editorial composition from stretching thin on very wide screens. */
.gallery-editorial {
  max-inline-size: 1180px;
  margin-inline: auto;
}

/* Load More. Deliberately a plain, centred action rather than infinite scroll:
   the reader decides when to pull the rest of the archive. Hidden rows carry
   no image src at all, so nothing below has been downloaded yet. */
.gallery-more {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  margin-block-start: clamp(1.25rem, 2.5vw, 2rem);
}

/* On a 290-photograph year the reader otherwise has no way to tell how much
   archive is left below the fold. Updated in place as rows are revealed. */
.gallery-count {
  margin: 0;
  color: var(--ink-muted, #5a5a5a);
  font-size: .9rem;
  text-align: center;
}

/* When every photograph already fits, the script removes the Load More button
   but leaves this wrapper in flow, so its top margin survived as up to 32px of
   dead space under the gallery. */
.gallery-more:empty {
  display: none;
}

.gallery-more .btn {
  min-block-size: 44px;
  padding-inline: clamp(1.25rem, 3vw, 2rem);
}

/* === Previous Years archive index ===
   Three editions as one deliberate set, each led by its own gallery opening
   photograph. Previously three text-only boxes on the entry point to a photo
   archive, laid out 2 + 1 so the fourth quadrant read as a missing card. */
.media-collection-grid {
  display: grid;
  /* Exactly three across where there is room, then two, then one — the set is
     always complete, never 2 + 1 with a hole. */
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(.9rem, 1.8vw, 1.5rem);
  align-items: stretch;
}

.media-collection-card {
  display: flex;
  flex-direction: column;
  /* Stretch so a two-line title never leaves one card short of its neighbours. */
  block-size: 100%;
  padding: 0;
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-sm, .5rem);
  text-decoration: none;
  color: inherit;
}

.media-card-figure {
  display: block;
  overflow: hidden;
  background: var(--ciarb-neutral, #f4f1ee);
}

.media-card-figure img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  /* One ratio across all three so the row reads as a set; these are wide
     establishing views, so the crop takes ceiling and floor, not faces. */
  aspect-ratio: 3 / 2;
  object-fit: cover;
  object-position: 50% 45%;
  transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}

.media-card-body {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  /* margin-block-start:auto on the cue pins it to the bottom, which is what
     keeps the three cards' baselines aligned when one title wraps. */
  flex: 1 1 auto;
  padding: clamp(.9rem, 1.6vw, 1.15rem) clamp(1rem, 1.8vw, 1.25rem) clamp(1rem, 1.8vw, 1.25rem);
}

.media-card-title {
  font-size: clamp(1.02rem, 1.5vw, 1.2rem);
  font-weight: 700;
  line-height: 1.25;
  color: var(--ciarb-deep-red);
  text-wrap: balance;
}

.media-card-edition {
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--brand-ink-soft, #6b6b73);
}

.media-card-meta {
  font-size: .86rem;
  color: var(--ink-muted, #5a5a5a);
}

.media-card-cue {
  margin-block-start: auto;
  padding-block-start: .7rem;
  font-size: .82rem;
  font-weight: 600;
  color: var(--ciarb-deep-red);
}

.media-card-cue::after {
  content: " \2192";           /* rightwards arrow */
}

[dir="rtl"] .media-card-cue::after {
  content: " \2190";           /* mirrored for RTL */
}

@media (hover: hover) {
  .media-collection-card:hover .media-card-figure img {
    transform: scale(1.035);
  }
  .media-collection-card:hover .media-card-cue {
    text-decoration: underline;
    text-underline-offset: .2em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .media-card-figure img { transition: none; }
  .media-collection-card:hover .media-card-figure img { transform: none; }
}

/* Mobile header finish: compact, opaque and vertically aligned. */
@media (max-width: 767.98px) {
  .site-header.sticky-top,
  .site-header.is-scrolled,
  .site-header.is-condensed {
    position: sticky;
    inset-block-start: 0;
    z-index: 1030;
    background: #fff;
    background-image: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .site-header .premium-navbar {
    min-height: 90px;
    padding-block: 0;
  }

  .site-header .premium-navbar > .header-container {
    min-height: 90px;
    align-items: center;
  }

  .site-header .nav-panel {
    background: #fff;
    background-image: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  .site-header .navbar-brand.navbar-brand-dual {
    align-items: center;
    min-height: 44px;
    padding-block: 0;
  }

  .site-header .header-actions-persistent {
    align-self: center;
    gap: .125rem !important;
    position: relative;
    inset-inline-start: 2px;
    inset-block-start: 2px;
  }

  .site-header .header-actions-persistent .language-control {
    box-sizing: border-box;
    width: 48px;
    min-width: 48px;
    height: 44px;
    min-height: 44px;
    padding: 0 .18rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .64rem;
    line-height: 1;
    white-space: nowrap;
  }

  .site-header .menu-trigger {
    position: absolute;
    inset-block-start: 50%;
    inset-inline-end: 1rem;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    transform: translateY(-50%);
  }
}

/* Tablet: two across, the third centred on its own row rather than left-
   aligned against an empty half. */
@media (max-width: 991.98px) {
  .media-collection-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .media-collection-grid > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
    max-inline-size: calc(50% - (clamp(.9rem, 1.8vw, 1.5rem) / 2));
    margin-inline: auto;
  }
}

@media (max-width: 575.98px) {
  .media-collection-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .media-collection-grid > :last-child:nth-child(odd) {
    max-inline-size: none;
    margin-inline: 0;
  }
}
