  /* Bootstrap container override — preserve original 1240px max content width */
  .container-xxl {
    max-width: 1240px;
  }

  :root {
    /* Headings & labels on dark backgrounds (AA). Safe as a text color on --ink / --ink-deep / --nightblue. */
    --cupcake: #f4d0d9;
    /* Default body text on dark backgrounds (AA). Safe on --ink / --ink-deep / --nightblue. */
    --azure: #cde6f6;
    /* Accent surface only — never use as a text color on dark (fails WCAG). Use as background/gradient only. */
    --nightblue: #00496f;
    /* Brand red — large display headings only on dark bg (AA-large). Use --orion-red-ui for anything small. Never on --nightblue or --cupcake. */
    --orion-red: #d60846;
    /* Small text & links on dark only — NOT for fills, use --orion-red-fill. AA on --ink / --ink-deep. Never on --nightblue or --cupcake. */
    --orion-red-ui: #ff466e;
    /* Button & badge fills — use with white text, passes WCAG AA. */
    --orion-red-fill: #cc1248;
    /* Legacy neutral — do NOT use as a text color on dark backgrounds (fails WCAG). */
    --warmgrey: #333333;
    /* B2C brand guide: Hellgrau (same value as legacy --warmgrey, semantic alias). */
    --hellgrau: #333333;
    /* B2C brand guide: Reinweiß. */
    --white: #ffffff;
    /* Official dark-mode background token (slightly lifted surface). */
    --ink: #06121b;
    /* Official dark-mode background token (page base, deepest). */
    --ink-deep: #030a10;
  }

  /* ---------- Brand fonts (local, see assets/fonts/) ---------- */
  @font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('../fonts/montserrat-v14-latin-300.woff2') format('woff2');
  }
  @font-face {
    font-family: 'Open Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/open-sans-v17-latin-regular.woff2') format('woff2');
  }
  @font-face {
    font-family: 'Open Sans';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/open-sans-v17-latin-700.woff2') format('woff2');
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { scroll-behavior: smooth; }

  body {
    background: var(--ink-deep);
    color: var(--azure);
    font-family: 'Fraunces', Georgia, serif;
    font-weight: 300;
    line-height: 1.55;
    overflow-x: hidden;
    min-height: 100vh;
  }

  ::selection { background: var(--orion-red-fill); color: #ffffff; }

  /* ---------- Atmospheric background ---------- */
  .starfield {
    position: fixed; inset: 0; z-index: 0;
    background:
      radial-gradient(ellipse at 15% 5%, rgba(0, 73, 111, 0.55) 0%, transparent 55%),
      radial-gradient(ellipse at 85% 60%, rgba(214, 8, 70, 0.15) 0%, transparent 50%),
      radial-gradient(ellipse at 50% 100%, rgba(244, 208, 217, 0.08) 0%, transparent 60%),
      var(--ink-deep);
  }
  .stars {
    position: fixed; inset: 0; z-index: 0;
    background-image:
      radial-gradient(1px 1px at 20px 30px, rgba(255,255,255,0.7), transparent),
      radial-gradient(1px 1px at 60px 70px, rgba(205,230,246,0.5), transparent),
      radial-gradient(1.5px 1.5px at 130px 40px, rgba(255,255,255,0.8), transparent),
      radial-gradient(1px 1px at 200px 100px, rgba(244,208,217,0.6), transparent),
      radial-gradient(1px 1px at 270px 60px, rgba(255,255,255,0.4), transparent),
      radial-gradient(1.5px 1.5px at 340px 130px, rgba(205,230,246,0.7), transparent),
      radial-gradient(1px 1px at 80px 180px, rgba(255,255,255,0.6), transparent),
      radial-gradient(1px 1px at 250px 200px, rgba(255,255,255,0.5), transparent);
    background-size: 400px 250px;
    background-repeat: repeat;
    opacity: 0.6;
    animation: drift 140s linear infinite;
  }
  @keyframes drift {
    from { background-position: 0 0; }
    to { background-position: 400px 250px; }
  }

  main { position: relative; z-index: 1; }
  .wrap { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

  /* ---------- Nav ---------- */
  nav {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 100;
    padding: 10px 32px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    background: linear-gradient(180deg, rgba(3,10,16,0.75) 0%, rgba(3,10,16,0.35) 100%);
    border-bottom: 1px solid rgba(205,230,246,0.08);
  }
  nav .brand img {
    height: 52px;
    width: auto;
    display: block;
  }
  nav ul {
    display: flex; gap: 36px;
    list-style: none;
  }
  nav a {
    color: var(--azure);
    text-decoration: none;
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    opacity: 0.75;
    transition: opacity 0.3s, color 0.3s;
  }
  nav a:hover { opacity: 1; color: var(--cupcake); }
  .nav-cta {
    padding: 10px 20px;
    background: var(--orion-red-fill);
    border-radius: 999px;
    color: #ffffff !important;
    opacity: 1 !important;
    transition: all 0.3s ease;
  }
  .nav-cta:hover {
    background: var(--cupcake);
    color: var(--orion-red-ui) !important;
  }
  @media (max-width: 768px) {
    nav ul li:not(:last-child) { display: none; }
  }

  /* ---------- Hero ---------- */
  .hero {
    padding: 150px 32px 0;
    max-width: 1240px;
    margin: 0 auto;
    position: relative;
  }
  /* Spacing between top-level sections is controlled via Bootstrap mt-* / mb-* utilities in index.php.
     The hero keeps its own padding-top to clear the fixed navbar. */

  .eyebrow {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--cupcake);
    margin-bottom: 32px;
    display: flex;
    align-items: center;
    gap: 14px;
    opacity: 0;
    animation: fadeUp 1s 0.2s forwards ease-out;
  }
  .eyebrow::before {
    content: '';
    width: 30px; height: 1px;
    background: var(--orion-red);
  }

  h1.headline {
    font-family: 'Fraunces', serif;
    font-weight: 300;
    font-size: clamp(46px, 7.5vw, 104px);
    line-height: 0.95;
    letter-spacing: -0.025em;
    color: var(--cupcake);
    margin-bottom: 36px;
    opacity: 0;
    animation: fadeUp 1s 0.4s forwards ease-out;
  }
  h1.headline em {
    font-style: italic;
    font-weight: 400;
    color: var(--azure);
  }
  h1.headline .red {
    color: var(--orion-red);
    font-weight: 500;
    font-style: italic;
    position: relative;
  }

  .lede {
    font-size: 19px;
    line-height: 1.6;
    color: var(--azure);
    opacity: 0;
    max-width: 520px;
    margin-bottom: 44px;
    animation: fadeUp 1s 0.6s forwards ease-out;
  }
  .lede.show { opacity: 0.88; }

  .cta-row {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    opacity: 0;
    animation: fadeUp 1s 0.8s forwards ease-out;
  }
  .orion-btn-primary {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 17px 30px;
    background: var(--orion-red-fill);
    color: #ffffff;
    text-decoration: none;
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 500;
    transition: transform 0.3s, box-shadow 0.3s;
  }
  .orion-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 40px -8px rgba(214, 8, 70, 0.55);
  }
  .orion-btn-primary .arrow { transition: transform 0.3s; }
  .orion-btn-primary:hover .arrow { transform: translateX(4px); }

  .orion-btn-secondary {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 17px 30px;
    background: transparent;
    color: var(--azure);
    text-decoration: none;
    border: 1px solid rgba(205, 230, 246, 0.3);
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition: all 0.3s;
  }
  .orion-btn-secondary:hover {
    border-color: var(--cupcake);
    background: rgba(244, 208, 217, 0.05);
    color: var(--cupcake);
    transform: translateY(-2px);
  }
  .orion-btn-secondary .arrow { transition: transform 0.3s; }
  .orion-btn-secondary:hover .arrow { transform: translateX(4px); }

  /* ---------- Hero side card ---------- */
  .hero-art {
    position: relative;
    aspect-ratio: 3/4;
    background: linear-gradient(160deg, rgba(0, 73, 111, 0.45) 0%, rgba(3, 10, 16, 0.7) 100%);
    border: 1px solid rgba(205, 230, 246, 0.15);
    border-radius: 4px;
    padding: 0;
    overflow: hidden;
    opacity: 0;
    animation: fadeIn 1.2s 0.3s forwards ease-out;
  }
  .hero-art::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(circle at 70% 30%, rgba(214, 8, 70, 0.28) 0%, transparent 45%),
      radial-gradient(circle at 30% 75%, rgba(244, 208, 217, 0.18) 0%, transparent 45%);
    pointer-events: none;
  }
  .hero-art img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    object-position: center;
  }
  .hero-art-meta {
    position: absolute;
    bottom: 24px;
    left: 32px;
    right: 32px;
    display: flex;
    justify-content: space-between;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.55;
  }

  @media (max-width: 991.98px) {
    .hero { padding-top: 130px; }
  }

  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  /* ---------- Marquee ---------- */
  .marquee {
    overflow: hidden;
    border-top: 1px solid rgba(205, 230, 246, 0.1);
    border-bottom: 1px solid rgba(205, 230, 246, 0.1);
    padding: 16px 0;
    background: rgba(0, 73, 111, 0.18);
    /* Vertical spacing is controlled via Bootstrap mt-* / mb-* utilities in index.php */
    margin: 0;
    position: relative;
    z-index: 2;
  }
  /* Section-level vertical spacing is controlled via Bootstrap mt-* / mb-* utilities in index.php */
  @media (max-width: 767.98px) {
    .marquee-track { animation-duration: 18s; }
  }
  @media (min-width: 768px) and (max-width: 1199.98px) {
    .marquee-track { animation-duration: 32s; }
  }
  .marquee-track {
    display: flex;
    gap: 48px;
    white-space: nowrap;
    animation: scroll 50s linear infinite;
    font-family: 'Fraunces', serif;
    font-style: italic;
    font-size: 24px;
    line-height: 1.2;
    color: var(--cupcake);
  }
  .marquee-track span { display: flex; align-items: center; gap: 48px; color: var(--cupcake); }
  .marquee-track span::after {
    content: '◦';
    color: var(--orion-red-ui);
    font-style: normal;
  }
  @keyframes scroll {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
  }

  /* ---------- Sections ---------- */
  /* Horizontal padding kept; vertical spacing comes from mt-* / mb-* utilities on each section in index.php */
  section { padding: 0 32px; position: relative; }

  /* Full-width banner background */
  #partner-banner {
    background: rgba(0, 73, 111, 0.12);
    padding: 25px !important;
    border-top: 1px solid rgba(205, 230, 246, 0.05);
    border-bottom: 1px solid rgba(205, 230, 246, 0.05);
  }
  #partner-banner .wrap {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  #partner-banner .container-xxl {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  #partner-banner a,
  #partner-banner picture,
  #partner-banner img {
    display: block;
    width: 100%;
  }
  @media (max-width: 767.98px) {
    #partner-banner {
      padding: 25px !important;
    }
  }

  /* Event details page needs top padding to clear the fixed navbar (mirrors .hero padding-top). */
  .event-details { padding-top: 150px; }

  /* Extra Bootstrap-style spacer utilities (Bootstrap ships only *-0 .. *-5 = 3rem by default).
     These extend the scale so section spacing on index.php can be visibly larger. */
  .mt-6 { margin-top: 4.5rem !important; }
  .mb-6 { margin-bottom: 4.5rem !important; }
  .mt-7 { margin-top: 6rem !important; }
  .mb-7 { margin-bottom: 6rem !important; }
  .mt-8 { margin-top: 7.5rem !important; }
  .mb-8 { margin-bottom: 7.5rem !important; }

  .section-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--orion-red-ui);
    margin-bottom: 24px;
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .section-label::before {
    content: '✧';
    color: var(--orion-red-ui);
  }

  .section-heading {
    font-family: 'Fraunces', serif;
    font-weight: 300;
    font-size: clamp(34px, 5vw, 60px);
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--cupcake);
    margin-bottom: 24px;
    max-width: 900px;
  }
  .section-heading em {
    font-style: italic;
    color: var(--azure);
  }

  .section-intro {
    font-size: 18px;
    color: var(--azure);
    opacity: 0.8;
    max-width: 620px;
    margin-bottom: 60px;
    line-height: 1.6;
  }
  .section-intro p {
    margin: 0 0 1em;
  }
  .section-intro p:last-child {
    margin-bottom: 0;
  }

  /* ---------- About: layout (text + image) ---------- */
  .about-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
    gap: 64px;
    align-items: center;
  }
  .about-layout__text .section-intro {
    margin-bottom: 0;
    max-width: 620px;
  }
  .about-layout__media {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .about-layout__image {
    width: 100%;
    max-width: 520px;
    height: auto;
    display: block;
    border-radius: 4px;
    opacity: 0.92;
    filter: drop-shadow(0 20px 40px rgba(0, 0, 0, 0.45));
  }
  @media (max-width: 991.98px) {
    .about-layout {
      grid-template-columns: 1fr;
      gap: 40px;
    }
    .about-layout__media {
      order: -1;
    }
    .about-layout__image {
      max-width: 360px;
    }
  }

  /* ---------- About: what it is ---------- */
  .about-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }

  @media (max-width: 1199.98px) {
    .about-grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  @media (max-width: 767.98px) {
    .about-carousel {
      margin-left: calc(-1 * var(--bs-gutter-x, 12px));
      margin-right: calc(-1 * var(--bs-gutter-x, 12px));
    }
    .about-carousel .simplebar-content {
      display: block;
    }
    .about-grid {
      display: flex;
      grid-template-columns: none;
      gap: 16px;
      padding: 4px 16px 16px;
    }
    .about-grid > .about-card {
      flex: 0 0 80%;
      max-width: 320px;
      scroll-snap-align: start;
    }
    .about-carousel .simplebar-track.simplebar-horizontal {
      height: 6px;
    }
    .about-carousel .simplebar-scrollbar:before {
      background: var(--azure, #cde6f6);
      opacity: 0.5;
    }
  }

  .about-card {
    padding: 36px 32px;
    background: linear-gradient(180deg, rgba(0, 73, 111, 0.25) 0%, rgba(3, 10, 16, 0.4) 100%);
    border: 1px solid rgba(205, 230, 246, 0.12);
    border-radius: 4px;
    position: relative;
    transition: border-color 0.4s, transform 0.4s;
  }
  .about-card:hover {
    border-color: rgba(244, 208, 217, 0.4);
    transform: translateY(-4px);
  }
  .about-card .num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.2em;
    color: var(--orion-red-ui);
    margin-bottom: 24px;
  }
  .about-card h3 {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 26px;
    color: var(--cupcake);
    margin-bottom: 14px;
    letter-spacing: -0.01em;
    line-height: 1.2;
  }
  .about-card h3 em { font-style: italic; color: var(--orion-red-ui); }
  .about-card p {
    font-size: 15px;
    color: var(--azure);
    opacity: 0.78;
    line-height: 1.6;
  }

  /* ---------- Topics list ---------- */
  .topics-section {
    background: linear-gradient(180deg, transparent 0%, rgba(0, 73, 111, 0.18) 50%, transparent 100%);
  }

  .topic-list { max-width: 1240px; margin: 0 auto; }

  .topic-item {
    display: grid;
    grid-template-columns: 110px 1fr auto;
    column-gap: 40px;
    row-gap: 12px;
    align-items: center;
    padding: 36px 0;
    border-bottom: 1px solid rgba(205, 230, 246, 0.1);
    transition: padding 0.3s;
    cursor: pointer;
    text-decoration: none;
    color: inherit;
  }
  .topic-item:hover,
  .topic-item:focus,
  .topic-item:visited,
  .topic-item:active { text-decoration: none; color: inherit; }
  .topic-item:hover { padding-left: 16px; }
  .topic-item:hover h4 { color: var(--orion-red); }
  .topic-item:hover .topic-date .day { color: var(--cupcake); }

  .topic-date {
    text-align: center;
    line-height: 0.9;
    margin-right: -20px;
    transition: color 0.3s;
  }
  .topic-date .day {
    display: block;
    font-family: 'Fraunces', serif;
    font-weight: 300;
    font-size: 46px;
    letter-spacing: -0.03em;
    color: var(--orion-red);
    transition: color 0.3s;
  }
  .topic-date .month {
    display: block;
    margin-top: 6px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 17px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.7;
  }
  .topic-venue-badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 12px;
    padding: 5px 12px;
    border: 1px solid rgba(205, 230, 246, 0.2);
    border-radius: 999px;
    background: rgba(205, 230, 246, 0.04);
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.75;
  }
  .topic-venue-badge::before {
    content: '';
    width: 5px; height: 5px;
    border-radius: 50%;
    background: var(--orion-red);
  }
  .topic-venue-badge--date-changed {
    border-color: transparent;
    background: var(--azure);
    color: var(--ink-deep);
    opacity: 1;
  }
  .topic-venue-badge--date-changed::before {
    width: 6px;
    height: 6px;
    background: var(--ink-deep);
    box-shadow: 0 0 10px color-mix(in srgb, var(--azure) 60%, transparent);
  }
  .topic-content h4 {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 28px;
    color: var(--cupcake);
    margin-bottom: 8px;
    letter-spacing: -0.01em;
    transition: color 0.3s;
  }
  .topic-content h4 em { font-style: italic; color: var(--azure); }
  .topic-content p {
    font-size: 15px;
    color: var(--azure);
    opacity: 0.7;
    max-width: 620px;
  }
  .topic-meta {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--cupcake);
    opacity: 1;
    text-align: right;
    line-height: 1.4;
  }
  .topic-meta strong {
    display: block;
    font-family: 'Fraunces', serif;
    font-style: italic;
    font-weight: 400;
    font-size: 18px;
    letter-spacing: -0.005em;
    text-transform: none;
    color: var(--orion-red-ui);
    margin-bottom: 6px;
  }
  /* ---------- Topic filter bar ---------- */
  .topic-filter-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-bottom: 18px;
  }
  .venue-toggle {
    display: inline-flex;
    padding: 4px;
    border: 1px solid rgba(205, 230, 246, 0.18);
    border-radius: 999px;
    background: rgba(205, 230, 246, 0.04);
  }
  .venue-toggle button {
    appearance: none;
    border: none;
    cursor: pointer;
    padding: 9px 20px;
    border-radius: 999px;
    background: transparent;
    color: var(--azure);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    opacity: 0.65;
    transition: background 0.3s, color 0.3s, opacity 0.3s;
  }
  .venue-toggle button:hover { opacity: 1; }
  .venue-toggle button.active {
    background: var(--orion-red-fill);
    color: #ffffff;
    opacity: 1;
  }
  .filter-btn {
    appearance: none;
    cursor: pointer;
    width: 42px; height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(205, 230, 246, 0.18);
    border-radius: 999px;
    background: rgba(205, 230, 246, 0.04);
    color: var(--azure);
    transition: background 0.3s, color 0.3s, border-color 0.3s;
  }
  .filter-btn:hover {
    background: rgba(214, 8, 70, 0.12);
    border-color: rgba(214, 8, 70, 0.4);
    color: var(--cupcake);
  }
  .filter-btn svg { width: 18px; height: 18px; display: block; }

  @media (max-width: 768px) {
    .topic-item { grid-template-columns: 1fr; gap: 12px; }
    .topic-meta { text-align: left; }
    .topic-date { text-align: left; }
    .topic-date .day { font-size: 48px; }
  }

  /* ---------- Speakers ---------- */
  .speakers-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
  }
  .speaker-card {
    position: relative;
    aspect-ratio: 3/4;
    background: linear-gradient(160deg, rgba(0, 73, 111, 0.5) 0%, rgba(3, 10, 16, 0.85) 100%);
    border: 1px solid rgba(205, 230, 246, 0.12);
    overflow: hidden;
    transition: transform 0.4s, border-color 0.4s;
    border-radius: 4px;
  }
  .speaker-card:hover {
    transform: translateY(-4px);
    border-color: var(--cupcake);
  }
  .speaker-portrait {
    height: 60%;
    background: linear-gradient(135deg, var(--nightblue), var(--ink-deep));
    position: relative;
    overflow: hidden;
  }
  .speaker-portrait svg { width: 100%; height: 100%; opacity: 0.85; }
  .speaker-info { padding: 26px 24px; }
  .speaker-info h4 {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 22px;
    color: var(--cupcake);
    margin-bottom: 6px;
    letter-spacing: -0.01em;
  }
  .speaker-info .role {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.7;
  }
  .speaker-card .num {
    position: absolute;
    top: 16px; right: 20px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: var(--cupcake);
    opacity: 0.5;
  }
  @media (max-width: 768px) { .speakers-grid { grid-template-columns: 1fr; } }

  /* ---------- Locations ---------- */
  .locations-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
    padding-top: 8px;
  }

  @media (max-width: 991.98px) {
    .locations-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 767.98px) {
    .locations-carousel {
      margin-left: calc(-1 * var(--bs-gutter-x, 12px));
      margin-right: calc(-1 * var(--bs-gutter-x, 12px));
    }
    .locations-carousel .simplebar-content {
      display: block;
    }
    .locations-grid {
      display: flex;
      grid-template-columns: none;
      gap: 16px;
      padding: 8px 16px 16px;
    }
    .locations-grid > .location-card {
      flex: 0 0 85%;
      max-width: 360px;
      scroll-snap-align: start;
    }
    .locations-carousel .simplebar-track.simplebar-horizontal {
      height: 6px;
    }
    .locations-carousel .simplebar-scrollbar:before {
      background: var(--azure, #cde6f6);
      opacity: 0.5;
    }
  }

  .location-card {
    padding: 48px 40px;
    background: linear-gradient(160deg, rgba(0, 73, 111, 0.4) 0%, rgba(3, 10, 16, 0.7) 100%);
    border: 1px solid rgba(205, 230, 246, 0.15);
    border-radius: 4px;
    position: relative;
    overflow: hidden;
    transition: transform 0.4s, border-color 0.4s;
    display: flex;
    flex-direction: column;
    height: 100%;
  }
  .location-card::before {
    content: '';
    position: absolute;
    top: -50px; right: -50px;
    width: 200px; height: 200px;
    background: radial-gradient(circle, rgba(214, 8, 70, 0.25) 0%, transparent 70%);
    pointer-events: none;
  }
  .location-card:hover {
    transform: translateY(-4px);
    border-color: var(--cupcake);
  }
  .location-card .city {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--orion-red-ui);
    margin-bottom: 16px;
  }
  .location-card h3 {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 36px;
    color: var(--cupcake);
    margin-bottom: 24px;
    letter-spacing: -0.02em;
    line-height: 1;
  }
  .location-card h3 em { font-style: italic; color: var(--azure); }
  .location-detail {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
    color: var(--azure);
    font-size: 15px;
    line-height: 1.5;
  }
  .location-detail svg {
    width: 16px; height: 16px;
    color: var(--orion-red-ui);
    flex-shrink: 0;
    margin-top: 3px;
  }
  .location-detail strong {
    display: block;
    color: var(--cupcake);
    font-weight: 400;
    font-size: 13px;
    font-family: 'JetBrains Mono', monospace;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 4px;
    opacity: 0.9;
  }
  .location-detail a {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  .location-detail a:hover {
    color: var(--orion-red-ui);
    text-decoration: none;
  }
  .location-detail .address-note {
    margin-top: 8px;
    color: var(--cupcake);
    font-style: italic;
    font-size: 14px;
    opacity: 0.95;
  }
  .location-detail .maps-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--orion-red-ui);
    text-decoration: none;
    transition: opacity 0.2s ease;
  }
  .location-detail .maps-link svg {
    width: 14px;
    height: 14px;
    margin-top: 0;
    color: var(--orion-red-ui);
  }
  .location-detail .maps-link:hover {
    color: var(--orion-red-ui);
    opacity: 0.75;
  }
  .location-card .next-event {
    margin-top: auto;
    padding-top: 24px;
    border-top: 1px solid rgba(205, 230, 246, 0.15);
    display: flex;
    justify-content: space-between;
    align-items: center;
    text-decoration: none;
    transition: background 0.3s ease, border-color 0.3s ease;
  }
  .location-card .next-event:hover {
    border-top-color: var(--orion-red-ui);
  }
  .location-card .next-event:hover .next-event-date {
    color: var(--orion-red-ui);
  }
  .next-event-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.65;
  }
  .next-event-date {
    font-family: 'Fraunces', serif;
    font-style: italic;
    font-size: 18px;
    color: var(--cupcake);
    transition: color 0.3s ease;
  }
  /* ---------- FAQ ---------- */
  .faq-list { max-width: 880px; margin: 0 auto; }
  .faq-item {
    border-bottom: 1px solid rgba(205, 230, 246, 0.12);
    padding: 28px 0;
  }
  .faq-question {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 22px;
    color: var(--cupcake);
    letter-spacing: -0.01em;
    list-style: none;
    transition: color 0.3s;
  }
  .faq-question:hover { color: var(--orion-red-ui); }
  .faq-icon {
    width: 24px; height: 24px;
    border-radius: 50%;
    border: 1px solid var(--orion-red-ui);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--orion-red-ui);
    font-size: 14px;
    transition: transform 0.3s;
    flex-shrink: 0;
    margin-left: 24px;
  }
  .accordion-button:not(.collapsed) .faq-icon { transform: rotate(45deg); }

  /* Neutralize Bootstrap accordion-button defaults; preserve custom FAQ styling */
  .faq-question.accordion-button {
    background: transparent;
    color: var(--cupcake);
    box-shadow: none;
    padding: 0;
    border-radius: 0;
  }
  .faq-question.accordion-button::after {
    display: none;
  }
  .faq-question.accordion-button:not(.collapsed) {
    background: transparent;
    color: var(--cupcake);
    box-shadow: none;
  }
  .faq-question.accordion-button:focus {
    box-shadow: none;
    border-color: transparent;
  }
  .faq-item.accordion-item {
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(205, 230, 246, 0.12);
    border-radius: 0;
    color: inherit;
  }
  .faq-answer.accordion-body {
    padding: 18px 0 0 0;
  }
  .faq-answer {
    padding-top: 18px;
    color: var(--azure);
    opacity: 0.8;
    font-size: 16px;
    line-height: 1.7;
    max-width: 720px;
  }

  /* ---------- Host a Talk section ---------- */
  .host-section {
    background: linear-gradient(180deg, transparent 0%, rgba(0, 73, 111, 0.22) 50%, transparent 100%);
  }
  .host-grid {
    align-items: start;
  }
  .host-info .section-heading { margin-bottom: 28px; }
  .host-lede {
    font-size: 18px;
    color: var(--azure);
    opacity: 0.85;
    line-height: 1.65;
    margin-bottom: 36px;
    max-width: 540px;
  }
  .host-specs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    background: rgba(205, 230, 246, 0.12);
    border: 1px solid rgba(205, 230, 246, 0.12);
    margin-bottom: 32px;
  }
  .host-spec {
    background: var(--ink-deep);
    padding: 28px 24px;
  }
  .host-spec .label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--orion-red-ui);
    margin-bottom: 10px;
  }
  .host-spec .value {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 22px;
    color: var(--cupcake);
    line-height: 1.2;
    letter-spacing: -0.01em;
  }
  .host-spec .value em { font-style: italic; color: var(--azure); }
  .host-spec .value span {
    display: block;
    font-size: 13px;
    color: var(--azure);
    opacity: 0.65;
    margin-top: 6px;
    font-weight: 300;
  }

  .host-perks {
    list-style: none;
    margin-bottom: 8px;
  }
  .host-perks li {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 12px 0;
    color: var(--azure);
    font-size: 15px;
    line-height: 1.5;
    border-bottom: 1px solid rgba(205, 230, 246, 0.08);
  }
  .host-perks li:last-child { border-bottom: none; }
  .host-perks li::before {
    content: '✧';
    color: var(--orion-red-ui);
    font-size: 12px;
    margin-top: 4px;
  }

  /* Form */
  .host-form {
    background: linear-gradient(160deg, rgba(0, 73, 111, 0.4) 0%, rgba(3, 10, 16, 0.7) 100%);
    border: 1px solid rgba(205, 230, 246, 0.15);
    border-radius: 4px;
    padding: 44px 40px;
    position: relative;
    overflow: hidden;
  }
  .host-form::before {
    content: '';
    position: absolute;
    top: -60px; right: -60px;
    width: 220px; height: 220px;
    background: radial-gradient(circle, rgba(214, 8, 70, 0.22) 0%, transparent 70%);
    pointer-events: none;
  }
  .host-form-header {
    margin-bottom: 28px;
    position: relative;
  }
  .host-form-header h3 {
    font-family: 'Fraunces', serif;
    font-weight: 400;
    font-size: 28px;
    color: var(--cupcake);
    letter-spacing: -0.01em;
    margin-bottom: 8px;
    line-height: 1.2;
  }
  .host-form-header h3 em { font-style: italic; color: var(--azure); }
  .host-form-header p {
    font-size: 14px;
    color: var(--azure);
    opacity: 0.7;
  }
  .form-row {
    margin-bottom: 16px;
  }
  .form-field { position: relative; }
  .form-field label {
    display: block;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.75;
    margin-bottom: 8px;
  }
  .form-field input,
  .form-field textarea,
  .form-field select {
    width: 100%;
    background: rgba(3, 10, 16, 0.5);
    border: 1px solid rgba(205, 230, 246, 0.18);
    border-radius: 4px;
    padding: 12px 14px;
    color: var(--cupcake);
    font-family: 'Fraunces', serif;
    font-size: 15px;
    font-weight: 300;
    transition: border-color 0.3s, background 0.3s;
  }
  .form-field input:focus,
  .form-field textarea:focus,
  .form-field select:focus {
    outline: none;
    border-color: var(--orion-red-ui);
    background: rgba(3, 10, 16, 0.75);
  }
  .form-field input::placeholder,
  .form-field textarea::placeholder {
    color: var(--azure);
    opacity: 0.4;
    font-style: italic;
  }
  .form-field textarea {
    resize: vertical;
    min-height: 110px;
    font-family: 'Fraunces', serif;
  }
  .form-fineprint {
    margin-top: 16px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.55;
    text-align: center;
  }

  .oe-venue-hardcoded {
    position: relative;
  }
  .oe-venue-hardcoded .form-control {
    padding-right: 52px;
  }
  .oe-venue-info-btn {
    position: absolute;
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex: 0 0 auto;
    border: 1px solid var(--c-night);
    border-radius: 50%;
    background: transparent;
    font-family: var(--f-body);
    font-style: italic;
    font-weight: 700;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
  }

  .host-form input[type="datetime-local"]::-webkit-calendar-picker-indicator {
    filter: invert(1) brightness(1.2);
    opacity: 0.7;
    cursor: pointer;
    transition: opacity 0.2s ease;
  }
  .host-form input[type="datetime-local"]::-webkit-calendar-picker-indicator:hover {
    opacity: 1;
  }

  @media (max-width: 560px) {
    .host-form { padding: 32px 24px; }
  }

  /* === Host offer: 3 kolonner med Gratis / Inklusiv / Eksklusiv === */
  .host-offer {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-top: 2.5rem;
  }
  .host-offer-col {
    position: relative;
    padding: 1.75rem 1.25rem;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(6px);
  }
  .host-offer-col:nth-child(2) {
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(255, 255, 255, 0.12);
  }
  .host-offer-title {
    font-family: inherit;
    font-style: italic;
    font-weight: 500;
    font-size: 1.5rem;
    margin: 0 0 1rem 0;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--cupcake);
    letter-spacing: 0.01em;
  }
  .host-offer-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
  }
  .host-offer-list li {
    position: relative;
    padding-left: 1.4rem;
    font-size: 0.95rem;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.85);
  }
  .host-offer-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55rem;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--orion-red);
  }
  @media (max-width: 991.98px) {
    .host-offer {
      grid-template-columns: 1fr;
      gap: 0.75rem;
    }
    .host-offer-col {
      padding: 1.5rem 1.25rem;
    }
  }

  /* ---------- Register CTA ---------- */
  .register-section {
    padding: 140px 32px;
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .register-section::before {
    content: '';
    position: absolute;
    top: 50%; left: 50%;
    width: 800px; height: 800px;
    transform: translate(-50%, -50%);
    background: radial-gradient(circle, rgba(214, 8, 70, 0.15) 0%, transparent 60%);
    pointer-events: none;
  }
  .register-content { position: relative; z-index: 1; max-width: 800px; margin: 0 auto; }
  .register-content h2 {
    font-family: 'Fraunces', serif;
    font-weight: 300;
    font-size: clamp(38px, 5.5vw, 72px);
    line-height: 1.05;
    letter-spacing: -0.02em;
    color: var(--cupcake);
    margin-bottom: 24px;
  }
  .register-content h2 em { font-style: italic; color: var(--orion-red); }
  .register-content p {
    font-size: 18px;
    color: var(--azure);
    opacity: 0.85;
    margin-bottom: 40px;
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
  }
  .price-tag {
    display: inline-flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 36px;
    font-family: 'Fraunces', serif;
  }
  .price-tag .from {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.7;
  }
  .price-tag .amount {
    font-size: 56px;
    color: var(--cupcake);
    font-weight: 400;
  }
  .price-tag .currency {
    font-size: 18px;
    color: var(--azure);
    opacity: 0.7;
  }
  .register-note {
    margin-top: 28px;
    font-size: 13px;
    font-family: 'JetBrains Mono', monospace;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.55;
  }

  /* ---------- Footer ---------- */
  footer {
    border-top: 1px solid rgba(205, 230, 246, 0.1);
    padding: 60px 32px 40px;
    background: var(--ink-deep);
    position: relative;
    z-index: 1;
  }
  .footer-grid {
    margin-bottom: 48px;
  }
  .footer-brand img {
    height: 42px;
    margin-bottom: 20px;
  }
  .footer-brand p {
    font-size: 14px;
    color: var(--azure);
    opacity: 0.75;
    max-width: 320px;
    line-height: 1.6;
  }
  .footer-col h5 {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--orion-red-ui);
    margin-bottom: 20px;
    font-weight: 400;
  }
  .footer-col a, .footer-col p {
    display: block;
    color: var(--azure);
    text-decoration: none;
    font-size: 14px;
    line-height: 2;
    opacity: 0.8;
    transition: opacity 0.3s, color 0.3s;
  }
  .footer-col a:hover { opacity: 1; color: var(--cupcake); }
  .footer-bottom {
    max-width: 1240px;
    margin: 0 auto;
    padding-top: 24px;
    border-top: 1px solid rgba(205, 230, 246, 0.08);
    display: flex;
    justify-content: space-between;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--azure);
    opacity: 0.5;
  }
  .footer-bottom a {
    color: var(--azure);
    text-decoration: none;
    font-family: inherit;
    font-size: 14px;
    letter-spacing: normal;
    text-transform: none;
    opacity: 0.8;
    transition: opacity 0.3s, color 0.3s;
  }
  .footer-bottom a:hover { opacity: 1; color: var(--cupcake); }

  /* Reveal */
  .reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease, transform 0.8s ease;
  }
  .reveal.visible { opacity: 1; transform: translateY(0); }

/* ========================================================== */
/* Event details page                                          */
/* ========================================================== */

/* ---------- Cover image (simple banner) ---------- */
.event-details .cover-banner {
  max-width: 1100px;
  margin: 110px auto 0;
  padding: 0 32px;
}
.event-details .cover-frame {
  aspect-ratio: 21 / 9;
  background: linear-gradient(160deg, var(--nightblue) 0%, var(--ink-deep) 100%);
  border: 1px solid rgba(205, 230, 246, 0.12);
  border-radius: 4px;
  overflow: hidden;
  position: relative;
}
.event-details .cover-frame img,
.event-details .cover-frame video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 1.2s ease;
}
.event-details .cover-frame video.video-secondary {
  position: absolute;
  top: 0;
  left: 0;
}
.event-details .cover-frame video.is-fading {
  opacity: 0;
}
.event-details .cover-frame .cover-fahne {
  position: absolute;
  left: 24px;
  bottom: 24px;
  z-index: 10;
}
.event-details .cover-frame .orion-info-fahne {
  display: inline-block;
  transform: rotate(-3deg);
  background: var(--orion-red);
  color: #fff;
  font-family: 'Fraunces', serif;
  font-weight: 600;
  font-size: 18px;
  line-height: 1;
  padding: 12px 20px;
  border-radius: 4px;
  box-shadow: 0 8px 20px rgba(0,0,0,0.4);
  white-space: nowrap;
}
@media (max-width: 768px) {
  .event-details .cover-banner { padding: 0 20px; margin-top: 90px; }
  .event-details .cover-frame { aspect-ratio: 16 / 9; }
}

/* ---------- Event header ---------- */
.event-details .event-header {
  max-width: 1100px;
  margin: 0 auto;
  padding: 56px 32px 24px;
}
.event-details .ed-eyebrow {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--cupcake);
  margin-bottom: 28px;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.event-details .ed-eyebrow::before {
  content: '';
  width: 30px; height: 1px;
  background: var(--orion-red);
  flex-shrink: 0;
}
.event-details .ed-eyebrow .sep { opacity: 0.4; }

.event-details .status-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 12px;
  border: 1px solid rgba(214, 8, 70, 0.4);
  border-radius: 999px;
  background: rgba(214, 8, 70, 0.08);
  color: var(--cupcake);
  font-size: 10px;
  letter-spacing: 0.18em;
}
.event-details .status-chip::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--orion-red);
  box-shadow: 0 0 8px var(--orion-red);
  animation: ed-pulse 2s infinite;
}
@keyframes ed-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

.event-details h1.event-title {
  font-family: 'Fraunces', serif;
  font-weight: 300;
  font-style: italic;
  font-size: clamp(34px, 5vw, 64px);
  line-height: 1.04;
  letter-spacing: -0.025em;
  color: var(--cupcake);
  margin-bottom: 28px;
  max-width: 900px;
}
.event-details .event-lead {
  font-size: 19px;
  line-height: 1.65;
  color: var(--azure);
  opacity: 0.88;
  max-width: 720px;
}
@media (max-width: 768px) {
  .event-details .event-header { padding: 40px 20px 20px; }
}

/* ---------- Body grid: content + sticky sidebar ---------- */
.event-details .body-section { padding: 32px 32px 100px; }
.event-details .body-grid {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 70px;
  align-items: start;
}
.event-details .body-content {
  font-size: 17px;
  line-height: 1.75;
  color: var(--azure);
  opacity: 0.92;
}
.event-details .body-content > * + * { margin-top: 22px; }
.event-details .body-content p { max-width: 680px; }
.event-details .body-content h2 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-style: italic;
  font-size: 28px;
  color: var(--cupcake);
  margin-top: 48px;
  margin-bottom: 6px;
  letter-spacing: -0.015em;
  line-height: 1.15;
}
.event-details .body-content h3 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: 22px;
  color: var(--cupcake);
  margin-top: 36px;
  margin-bottom: 4px;
  letter-spacing: -0.01em;
}
.event-details .body-content em.callout {
  display: block;
  padding: 24px 28px;
  margin: 36px 0;
  background: rgba(0, 73, 111, 0.22);
  border-left: 2px solid var(--orion-red);
  border-radius: 0 4px 4px 0;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: 17px;
  color: var(--cupcake);
  line-height: 1.55;
}
.event-details .body-content ul {
  list-style: none;
  padding: 0;
  margin-top: 16px;
}
.event-details .body-content ul li {
  position: relative;
  padding-left: 26px;
  margin-bottom: 12px;
}
.event-details .body-content ul li::before {
  content: '◦';
  position: absolute;
  left: 0; top: 0;
  color: var(--orion-red);
  font-size: 18px;
}
.event-details .body-content a {
  color: var(--cupcake);
  border-bottom: 1px solid rgba(244, 208, 217, 0.3);
  text-decoration: none;
  transition: border-color 0.3s;
}
.event-details .body-content a:hover { border-bottom-color: var(--orion-red); }

/* Tag row */
.event-details .tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 36px;
}
.event-details .ed-tag {
  display: inline-flex;
  align-items: center;
  padding: 5px 12px;
  border: 1px solid rgba(205, 230, 246, 0.2);
  border-radius: 999px;
  background: rgba(205, 230, 246, 0.04);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.75;
  text-decoration: none;
  transition: all 0.3s;
}
.event-details .ed-tag:hover {
  border-color: rgba(244, 208, 217, 0.5);
  color: var(--cupcake);
  opacity: 1;
}

.event-details .ed-section-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--orion-red-ui);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.event-details .ed-section-label::before {
  content: '\2727';
  color: var(--orion-red-ui);
}

/* ---------- Sidebar: booking card ---------- */
.event-details .sidebar { position: sticky; top: 100px; }
.event-details .booking-card {
  background: linear-gradient(180deg, rgba(0, 73, 111, 0.32) 0%, rgba(3, 10, 16, 0.55) 100%);
  border: 1px solid rgba(205, 230, 246, 0.15);
  border-radius: 4px;
  padding: 30px 28px;
  position: relative;
  overflow: hidden;
}
.event-details .booking-card::before {
  content: '';
  position: absolute;
  top: -60px; right: -60px;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(214, 8, 70, 0.18) 0%, transparent 70%);
  pointer-events: none;
}
.event-details .booking-card .price-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 4px;
  position: relative;
}
.event-details .booking-card .price {
  font-family: 'Fraunces', serif;
  font-size: 52px;
  font-weight: 400;
  color: var(--cupcake);
  line-height: 1;
  letter-spacing: -0.02em;
}
.event-details .booking-card .currency {
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.15em;
  color: var(--azure);
  opacity: 0.7;
}
.event-details .booking-card .price-note {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.6;
  margin-bottom: 22px;
}

.event-details .ed-btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  padding: 16px 28px;
  background: var(--orion-red);
  color: var(--cupcake);
  text-decoration: none;
  border-radius: 999px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 500;
  transition: transform 0.3s, box-shadow 0.3s;
  cursor: pointer;
  border: none;
}
.event-details .ed-btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 40px -8px rgba(214, 8, 70, 0.55);
}
.event-details .ed-btn-primary .arrow { transition: transform 0.3s; }
.event-details .ed-btn-primary:hover .arrow { transform: translateX(4px); }

.event-details .booking-detail-list {
  list-style: none;
  margin-top: 26px;
  padding-left: 0;
  padding-top: 22px;
  border-top: 1px solid rgba(205, 230, 246, 0.12);
}
.event-details .booking-detail-list li {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 14px;
  padding: 13px 0;
  border-bottom: 1px solid rgba(205, 230, 246, 0.07);
  align-items: flex-start;
}
.event-details .booking-detail-list li:last-child { border-bottom: 0; padding-bottom: 4px; }
.event-details .booking-detail-list svg {
  width: 18px; height: 18px;
  color: var(--orion-red);
  margin-top: 3px;
  flex-shrink: 0;
}
.event-details .booking-detail-list .label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.7;
  margin-bottom: 4px;
}
.event-details .booking-detail-list .value {
  font-family: 'Fraunces', serif;
  font-size: 16px;
  color: var(--cupcake);
  line-height: 1.4;
}
.event-details .booking-detail-list .value--datetime {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.event-details .booking-detail-list .value--datetime .dt-row {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 8px;
}
.event-details .booking-detail-list .value--datetime .dt-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.85;
}
.event-details .booking-detail-list .value--datetime .dt-text {
  min-width: 0;
}
.event-details .booking-detail-list .value a {
  color: var(--cupcake);
  text-decoration: none;
  border-bottom: 1px solid rgba(244, 208, 217, 0.3);
  transition: border-color 0.3s;
}
.event-details .booking-detail-list .value a:hover { border-bottom-color: var(--orion-red); }

.event-details .add-to-calendar { margin-top: 18px; }
.event-details .add-to-calendar-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 11px;
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.15);
  border-radius: 999px;
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s;
}
.event-details .add-to-calendar-toggle:hover {
  border-color: rgba(244, 208, 217, 0.4);
  color: var(--cupcake);
}
.event-details .add-to-calendar-options {
  margin-top: 6px;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}
.event-details .add-to-calendar.open .add-to-calendar-options { max-height: 200px; }
.event-details .add-to-calendar-options a {
  display: block;
  padding: 9px 14px;
  margin-top: 4px;
  color: var(--azure);
  text-decoration: none;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.7;
  border-radius: 4px;
  transition: all 0.3s;
}
.event-details .add-to-calendar-options a:hover {
  background: rgba(205, 230, 246, 0.06);
  color: var(--cupcake);
  opacity: 1;
}

@media (max-width: 968px) {
  .event-details .body-grid { grid-template-columns: 1fr; gap: 50px; }
  .event-details .sidebar { position: static; }
}

/* ---------- Organizer + Venue cards ---------- */
.event-details .deep-section {
  padding: 80px 32px;
  background: linear-gradient(180deg, transparent 0%, rgba(0, 73, 111, 0.15) 50%, transparent 100%);
}
.event-details .deep-grid {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.event-details .deep-card {
  padding: 36px 32px;
  background: linear-gradient(160deg, rgba(0, 73, 111, 0.4) 0%, rgba(3, 10, 16, 0.7) 100%);
  border: 1px solid rgba(205, 230, 246, 0.15);
  border-radius: 4px;
  position: relative;
  overflow: hidden;
  transition: border-color 0.4s, transform 0.4s;
}
.event-details .deep-card:hover {
  border-color: rgba(244, 208, 217, 0.35);
  transform: translateY(-3px);
}
.event-details .deep-card::before {
  content: '';
  position: absolute;
  top: -50px; right: -50px;
  width: 180px; height: 180px;
  background: radial-gradient(circle, rgba(214, 8, 70, 0.16) 0%, transparent 70%);
  pointer-events: none;
}
.event-details .deep-card .kicker {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--orion-red);
  margin-bottom: 14px;
}
.event-details .deep-card h3 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-style: italic;
  font-size: 26px;
  color: var(--cupcake);
  margin-bottom: 16px;
  letter-spacing: -0.015em;
  line-height: 1.15;
}
.event-details .deep-card .description {
  font-size: 15px;
  color: var(--azure);
  opacity: 0.82;
  line-height: 1.65;
  margin-bottom: 22px;
}

.event-details .meta-list { list-style: none; }
.event-details .meta-list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 12px;
  color: var(--azure);
  font-size: 14px;
  line-height: 1.5;
}
.event-details .meta-list svg {
  width: 16px; height: 16px;
  color: var(--orion-red);
  flex-shrink: 0;
  margin-top: 3px;
}
.event-details .meta-list a {
  color: var(--cupcake);
  text-decoration: none;
  border-bottom: 1px solid rgba(244, 208, 217, 0.25);
  transition: border-color 0.3s;
}
.event-details .meta-list a:hover { border-bottom-color: var(--orion-red); }

@media (max-width: 768px) { .event-details .deep-grid { grid-template-columns: 1fr; } }

/* ---------- Related events ---------- */
.event-details .related-section { padding: 80px 32px 110px; }
.event-details .related-grid {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.event-details .related-card {
  padding: 28px 26px;
  background: linear-gradient(180deg, rgba(0, 73, 111, 0.22) 0%, rgba(3, 10, 16, 0.4) 100%);
  border: 1px solid rgba(205, 230, 246, 0.12);
  border-radius: 4px;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.4s, transform 0.4s;
  display: block;
}
.event-details .related-card:hover {
  border-color: rgba(244, 208, 217, 0.4);
  transform: translateY(-4px);
}
.event-details .related-card:hover h4 { color: var(--orion-red); }
.event-details .related-card .date-pill {
  display: inline-flex;
  gap: 10px;
  align-items: baseline;
  margin-bottom: 16px;
  font-family: 'Fraunces', serif;
}
.event-details .related-card .date-pill .d {
  font-size: 36px;
  color: var(--orion-red);
  font-style: italic;
  line-height: 0.9;
  letter-spacing: -0.03em;
}
.event-details .related-card .date-pill .m {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.75;
}
.event-details .related-card h4 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-style: italic;
  font-size: 19px;
  color: var(--cupcake);
  margin-bottom: 8px;
  letter-spacing: -0.01em;
  line-height: 1.25;
  transition: color 0.3s;
}
.event-details .related-card .venue {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.65;
}
.event-details .related-heading {
  font-family: 'Fraunces', serif;
  font-weight: 300;
  font-style: italic;
  font-size: clamp(28px, 3.5vw, 40px);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--cupcake);
  margin-bottom: 36px;
  max-width: 700px;
}
@media (max-width: 768px) { .event-details .related-grid { grid-template-columns: 1fr; } }

/* ---------- Sticky mobile booking bar ---------- */
.event-details .mobile-booking-bar {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 90;
  padding: 14px 20px;
  backdrop-filter: blur(14px);
  background: linear-gradient(180deg, rgba(3,10,16,0.85) 0%, rgba(3,10,16,0.95) 100%);
  border-top: 1px solid rgba(205, 230, 246, 0.12);
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.event-details .mobile-booking-bar .price-mini {
  font-family: 'Fraunces', serif;
  color: var(--cupcake);
  line-height: 1.1;
}
.event-details .mobile-booking-bar .price-mini .amt { font-size: 22px; }
.event-details .mobile-booking-bar .price-mini .lbl {
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.6;
  display: block;
}
.event-details .mobile-booking-bar .ed-btn-primary { width: auto; padding: 12px 22px; }
@media (max-width: 968px) {
  .event-details .mobile-booking-bar { display: flex; }
  body.has-event-details { padding-bottom: 80px; }
}

/* ---------- Play Bingo (STEP 1: layout only) ---------- */
.bingo-play {
  display: flex;
  flex-direction: row;
  width: 100vw;
  height: 100vh;
  gap: 0;
  overflow: hidden;
  position: relative;
}

/* Settings gear — fixed in top-right corner of the play view */
.bingo-play .bingo-settings-btn {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 10;
  width: clamp(34px, 2.6vw, 44px);
  height: clamp(34px, 2.6vw, 44px);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.3);
  border-radius: 999px;
  color: var(--azure);
  cursor: pointer;
  font-size: clamp(14px, 1.3vw, 20px);
  transition: background 0.25s, color 0.25s, border-color 0.25s, transform 0.25s;
}
.bingo-play .bingo-settings-btn:hover {
  color: var(--cupcake);
  border-color: var(--cupcake);
  background: rgba(244, 208, 217, 0.05);
  transform: rotate(45deg);
}

.bingo-play #bingo-board {
  flex: 0 0 60%;
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  grid-template-rows: repeat(9, 1fr);
  gap: 6px;
  height: 100%;
  padding: 25px;
}

.bingo-play #bingo-right {
  flex: 0 0 40%;
  display: flex;
  flex-direction: column;
  height: 100%;
  gap: 0;
  padding: 25px 25px 25px 0;
}

.bingo-play #bingo-controls { flex: 0 0 12%; }
.bingo-play #bingo-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
.bingo-play #bingo-logo .bingo-cards {
  position: relative;
  width: 100%;
  height: 100%;
}
.bingo-play #bingo-logo .bingo-card {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  opacity: 0;
  transition: opacity 0.6s ease;
  pointer-events: none;
  padding: 4%;
}
.bingo-play #bingo-logo .bingo-card.is-active {
  opacity: 1;
}
/* CARD 1 (logo) has no padding so the image fills the box */
.bingo-play #bingo-logo .bingo-card:has(img) {
  padding: 0;
}
.bingo-play #bingo-logo .bingo-card img {
  max-width: 100%;
  max-height: 100%;
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  margin: auto;
}
.bingo-play #bingo-logo .bingo-card__text {
  font-family: 'Open Sans', system-ui, sans-serif;
  font-weight: 400;
  color: var(--azure);
  font-size: clamp(18px, 2vw, 32px);
  line-height: 1.35;
  max-width: 100%;
}
.bingo-play #bingo-logo .bingo-card__lead {
  display: block;
  font-family: 'Montserrat', 'Open Sans', sans-serif;
  font-weight: 300;
  font-size: clamp(18px, 1.8vw, 28px);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.9;
  margin-bottom: 0.4em;
}
.bingo-play #bingo-logo .bingo-card__shop {
  display: block;
  font-family: 'Montserrat', 'Open Sans', sans-serif;
  font-weight: 300;
  font-size: clamp(28px, 3.6vw, 54px);
  color: var(--cupcake);
  letter-spacing: 0.01em;
}
.bingo-play #bingo-logo .bingo-badge {
  display: inline-block;
  white-space: nowrap;
  font-family: 'Open Sans', system-ui, sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: var(--orion-red);
  color: var(--white);
  padding: 0.35em 0.8em;
  border-radius: 999px;
  margin-left: 0.25em;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35), inset 0 0 0 1px rgba(255, 255, 255, 0.18);
  font-size: 0.95em;
}
.bingo-play #bingo-current  { flex: 0 0 73%; }
.bingo-play #bingo-logo     { flex: 0 0 15%; }

.bingo-play #bingo-controls,
  .bingo-play #bingo-current,
  .bingo-play #bingo-logo {
  background: transparent;
  min-height: 0;
}

/* Controls box: wrapper for the two views */
.bingo-play #bingo-controls {
  position: relative;
  padding: 0;
}

/* Both views fill the controls box; hidden view collapses via [hidden] */
.bingo-play #bingo-controls .ctrl-view {
  width: 100%;
  height: 100%;
}
.bingo-play #bingo-controls .ctrl-view[hidden] { display: none; }

/* Default view: 2x2 grid of the 4 buttons; settings gear absolutely placed next to Spil */
.bingo-play #bingo-controls-default {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 12px;
  position: relative;
}
.bingo-play #bingo-controls-default .ctrl-settings-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: clamp(14px, 1.2vw, 18px);
  color: var(--azure);
  cursor: pointer;
  transition: color 0.25s, transform 0.25s;
  line-height: 1;
  z-index: 2;
}
.bingo-play #bingo-controls-default .ctrl-settings-icon:hover {
  color: var(--cupcake);
  transform: translate(-50%, -50%) rotate(45deg);
}

/* Game view: [back strip] | [timer row / step row stacked] */
.bingo-play #bingo-controls-game {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
}
.bingo-play #bingo-controls-game .ctrl-back {
  grid-row: 1 / span 2;
}
.bingo-play #bingo-controls-game .ctrl-back {
  flex: 0 0 auto;
  width: clamp(36px, 4vw, 56px);
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.3);
  border-radius: 8px;
  color: var(--azure);
  cursor: pointer;
  font-size: clamp(14px, 1.4vw, 22px);
  transition: background 0.25s, color 0.25s, border-color 0.25s;
}
.bingo-play #bingo-controls-game .ctrl-back:hover {
  color: var(--cupcake);
  border-color: var(--cupcake);
  background: rgba(244, 208, 217, 0.05);
}
.bingo-play #bingo-controls-game .ctrl-section {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  min-width: 0;
  min-height: 0;
}

/* Settings view: [back strip] | [single row with Start / Stop] — same row height as the game view */
.bingo-play #bingo-controls-settings {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
}
.bingo-play #bingo-controls-settings .ctrl-back { grid-row: 1; }
.bingo-play #bingo-controls-settings .ctrl-section { grid-row: 1; }
.bingo-play #bingo-controls-settings .ctrl-back {
  flex: 0 0 auto;
  width: clamp(36px, 4vw, 56px);
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.3);
  border-radius: 8px;
  color: var(--azure);
  cursor: pointer;
  font-size: clamp(14px, 1.4vw, 22px);
  transition: background 0.25s, color 0.25s, border-color 0.25s;
}
.bingo-play #bingo-controls-settings .ctrl-back:hover {
  color: var(--cupcake);
  border-color: var(--cupcake);
  background: rgba(244, 208, 217, 0.05);
}
.bingo-play #bingo-controls-settings .ctrl-section {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  min-width: 0;
  min-height: 0;
}

.bingo-play #bingo-controls .bingo-ctrl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  height: 100%;
  padding: 0 14px;
  font-family: 'JetBrains Mono', monospace;
  font-weight: 500;
  font-size: clamp(12px, 1.2vw, 20px);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--azure);
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.3);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.25s, color 0.25s, border-color 0.25s, transform 0.15s;
}

.bingo-play #bingo-controls .bingo-ctrl-btn i {
  font-size: 1.1em;
  line-height: 1;
}

.bingo-play #bingo-controls .bingo-ctrl-btn:hover {
  border-color: var(--cupcake);
  color: var(--cupcake);
  background: rgba(244, 208, 217, 0.05);
}

.bingo-play #bingo-controls .bingo-ctrl-btn.is-primary {
  background: var(--azure);
  border-color: var(--azure);
  color: var(--nightblue);
}

.bingo-play #bingo-controls .bingo-ctrl-btn.is-primary:hover {
  background: var(--cupcake);
  border-color: var(--cupcake);
  color: var(--nightblue);
}

/* Undrawn cell — simple, no background */
.bingo-play .bingo-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'JetBrains Mono', monospace;
  font-size: clamp(14px, 2.2vw, 32px);
  font-weight: 500;
  color: var(--azure);
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.15);
  border-radius: 4px;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  touch-action: manipulation;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, transform 0.15s, filter 0.15s;
  min-height: 0;
  min-width: 0;
}

/* Subtle affordance while a long-press is in progress on a cell */
.bingo-play .bingo-cell.is-pressing {
  transform: scale(0.96);
  filter: brightness(1.15);
}

/* Drawn cell — light azure background, deep nightblue text */
.bingo-play .bingo-cell.is-drawn {
  background: var(--azure);
  color: var(--nightblue);
  border-color: var(--azure);
}

/* Drawn cell flash: hold red, then fade to settled azure within 2s */
@keyframes bingo-cell-flash {
  0%   { background-color: var(--orion-red-fill); color: #ffffff; border-color: var(--orion-red-fill); }
  85%  { background-color: var(--orion-red-fill); color: #ffffff; border-color: var(--orion-red-fill); }
  100% { background-color: var(--azure);          color: var(--nightblue); border-color: var(--azure); }
}
.bingo-play .bingo-cell.is-drawing {
  animation: bingo-cell-flash var(--draw-pause, 2s) ease forwards;
}

/* Draw button: dark-blue base, translucent azure sweep fills over 2s while .is-drawing */
.bingo-play #btn-draw,
.bingo-play #bingo-controls .bingo-ctrl-btn#btn-draw.is-primary {
  position: relative;
  overflow: hidden;
  background: var(--nightblue);
  border: 1px solid var(--nightblue);
  color: #ffffff;
}
.bingo-play #btn-draw > * {
  position: relative;
  z-index: 1;
}
.bingo-play #btn-draw::before {
  content: "";
  position: absolute;
  inset: 0;
  width: 0;
  background: var(--azure);
  opacity: 0.35;
  z-index: 0;
  pointer-events: none;
}
.bingo-play #btn-draw.is-drawing::before {
  animation: bingo-btn-progress var(--draw-pause, 2s) linear forwards;
}
@keyframes bingo-btn-progress {
  from { width: 0; }
  to   { width: 100%; }
}
.bingo-play #btn-draw.is-drawing,
.bingo-play #btn-draw:disabled,
.bingo-play #btn-draw[disabled] {
  cursor: not-allowed;
}
.bingo-play #btn-draw:disabled,
.bingo-play #btn-draw[disabled] {
  opacity: 0.85;
}

/* 5 i træk Start button: counter label + thin countdown bar at the bottom edge */
.bingo-play #btn-settings-start {
  position: relative;
  overflow: hidden;
}
.bingo-play #btn-settings-start > * {
  position: relative;
  z-index: 1;
}
.bingo-play #btn-settings-start::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: 100%;
  background: var(--azure);
  opacity: 0.55;
  transform: scaleX(0);
  transform-origin: left center;
  z-index: 0;
  pointer-events: none;
}
.bingo-play #btn-settings-start.is-counting::after {
  animation: bingo-auto-countdown var(--auto-pause, 3s) linear forwards;
}
@keyframes bingo-auto-countdown {
  from { transform: scaleX(1); }
  to   { transform: scaleX(0); }
}
.bingo-play #btn-settings-stop:disabled,
.bingo-play #btn-settings-stop[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Game-mode timer cursor: highlight the cell currently under the ascending pointer */
.bingo-play .bingo-cell.is-timer-cursor {
  background: var(--orion-red-fill);
  border-color: var(--orion-red-fill);
  color: #ffffff;
}

/* Game view, timer running: keep layout identical to IDLE so no button changes size.
   Frem/Tilbage are simply disabled via JS while the timer runs. */

/* Game view, step (Frem) running: keep layout identical to IDLE so no button
   changes size. Timer buttons are simply disabled via JS while stepping. */

/* Timer buttons: disabled affordance */
.bingo-play #btn-timer-start:disabled,
.bingo-play #btn-timer-start[disabled],
.bingo-play #btn-timer-end:disabled,
.bingo-play #btn-timer-end[disabled],
.bingo-play #btn-step-forward:disabled,
.bingo-play #btn-step-forward[disabled],
.bingo-play #btn-step-back:disabled,
.bingo-play #btn-step-back[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Second countdown bar inside #bingo-current (between number and lingo) */
.bingo-play #bingo-current-progress {
  width: 60%;
  max-width: 480px;
  height: 4px;
  margin: 10px auto;
  background: transparent;
  overflow: hidden;
  opacity: 0;
}
.bingo-play #bingo-current-progress.is-active { opacity: 1; }
.bingo-play #bingo-current-progress-fill {
  width: 100%;
  height: 100%;
  background: var(--orion-red);
  transform-origin: left center;
}
.bingo-play #bingo-current-progress.is-counting #bingo-current-progress-fill {
  animation: bingo-current-countdown var(--auto-pause, 3s) linear forwards;
}
@keyframes bingo-current-countdown {
  from { width: 100%; }
  to   { width: 0%; }
}

/* Settings gear icon affordance */
.bingo-play .ctrl-settings-icon {
  cursor: pointer;
  color: var(--azure);
  transition: color 0.2s;
}
.bingo-play .ctrl-settings-icon:hover {
  color: var(--cupcake);
}
.bingo-play .ctrl-settings-icon:focus-visible {
  outline: 2px solid var(--cupcake);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Settings modal */
.bingo-play ~ .bingo-modal,
.bingo-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bingo-modal[hidden] { display: none; }
.bingo-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(3, 10, 16, 0.7);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.bingo-modal__panel {
  position: relative;
  z-index: 1;
  width: 760px;
  max-width: 92vw;
  padding: 48px 44px 40px;
  border-radius: 6px;
  border: 1px solid rgba(0, 73, 111, 0.15);
  background: var(--azure);
  color: var(--nightblue);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
  overflow: hidden;
}
.bingo-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(0, 73, 111, 0.2);
  border-radius: 50%;
  color: var(--nightblue);
  font-size: 16px;
  cursor: pointer;
  transition: color 0.2s, background 0.2s, border-color 0.2s;
}
.bingo-modal__close:hover {
  color: var(--orion-red-fill);
  border-color: rgba(0, 73, 111, 0.45);
}
.bingo-modal__close:focus-visible {
  outline: 2px solid var(--orion-red-fill);
  outline-offset: 2px;
}
.bingo-modal__title {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  color: var(--nightblue);
  margin: 0 0 24px;
  font-size: 32px;
  line-height: 1.2;
}
.bingo-setting {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 16px;
}
.bingo-setting label {
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 11px;
  color: var(--nightblue);
}
.bingo-setting select {
  font-family: inherit;
  font-size: 14px;
  padding: 11px 14px;
  color: var(--nightblue);
  background: rgba(255, 255, 255, 0.7);
  border: 1px solid rgba(0, 73, 111, 0.25);
  border-radius: 4px;
  cursor: pointer;
  outline: none;
  transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
}
.bingo-setting select:hover,
.bingo-setting select:focus {
  border-color: var(--orion-red-fill);
  background: #ffffff;
  box-shadow: 0 0 0 3px rgba(214, 8, 70, 0.15);
}
.bingo-modal__footer {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 12px;
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid rgba(0, 73, 111, 0.15);
}

/* Instructions modal */
.bingo-modal__panel--instructions {
  width: 900px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.bingo-modal__panel--instructions .bingo-instructions__content {
  flex: 1 1 auto;
  overflow-y: auto;
  padding-right: 12px;
  margin-right: -12px;
  color: var(--nightblue);
  font-size: 18px;
  line-height: 1.6;
}
.bingo-instructions__content h3 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: 26px;
  margin: 24px 0 12px;
  color: var(--nightblue);
}
.bingo-instructions__content h4 {
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 14px;
  margin: 18px 0 8px;
  color: var(--nightblue);
}
.bingo-instructions__content p { margin: 0 0 10px; }
.bingo-instructions__content ul {
  margin: 0 0 12px;
  padding-left: 22px;
}
.bingo-instructions__content li { margin-bottom: 4px; }
.bingo-instructions__content blockquote {
  margin: 10px 0;
  padding: 10px 14px;
  border-left: 3px solid var(--orion-red-fill);
  background: rgba(255, 255, 255, 0.5);
  border-radius: 0 4px 4px 0;
  font-size: 17px;
}
.bingo-instructions__table {
  width: 100%;
  border-collapse: collapse;
  margin: 8px 0 14px;
  font-size: 16px;
}
.bingo-instructions__table th,
.bingo-instructions__table td {
  border: 1px solid rgba(0, 73, 111, 0.2);
  padding: 6px 10px;
  text-align: left;
  vertical-align: top;
}
.bingo-instructions__table th {
  background: rgba(255, 255, 255, 0.5);
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 11px;
}
.bingo-modal__footer [data-close] {
  margin-left: auto;
}
.bingo-modal__footer #btn-new-game,
#btn-instructions,
#btn-print-instructions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--nightblue);
  background: transparent;
  border: 1px solid rgba(0, 73, 111, 0.35);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.bingo-modal__footer #btn-new-game:hover,
.bingo-modal__footer #btn-instructions:hover,
.bingo-modal__footer #btn-print-instructions:hover {
  background: var(--nightblue);
  color: #ffffff;
  border-color: var(--nightblue);
}
.bingo-modal__footer #btn-new-game:focus-visible,
.bingo-modal__footer #btn-instructions:focus-visible,
.bingo-modal__footer #btn-print-instructions:focus-visible {
  outline: 2px solid var(--orion-red-fill);
  outline-offset: 3px;
}
.bingo-modal__btn {
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 12px;
  padding: 12px 28px;
  background: var(--orion-red-fill);
  color: #ffffff;
  border: 1px solid var(--orion-red-fill);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.15s;
}
.bingo-modal__btn:hover {
  background: var(--nightblue);
  border-color: var(--nightblue);
  color: #ffffff;
}
.bingo-modal__btn:focus-visible {
  outline: 2px solid var(--nightblue);
  outline-offset: 3px;
}
/* "Vis historik" button inside settings modal body */
.bingo-play ~ #bingo-settings-modal #btn-show-history {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  margin: 8px 0 20px;
  padding: 12px 18px;
  font-family: 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-size: 12px;
  background: rgba(255, 255, 255, 0.6);
  color: var(--nightblue);
  border: 1px solid rgba(0, 73, 111, 0.25);
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.bingo-play ~ #bingo-settings-modal #btn-show-history:hover {
  background: var(--nightblue);
  color: #ffffff;
  border-color: var(--nightblue);
}
.bingo-play ~ #bingo-settings-modal #btn-show-history:focus-visible {
  outline: 2px solid var(--orion-red-fill);
  outline-offset: 3px;
}

/* History modal list */
.bingo-play ~ #bingo-history-modal #bingo-history-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 60vh;
  overflow-y: auto;
  padding-right: 4px;
}
.bingo-play ~ #bingo-history-modal .bingo-history__empty {
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  color: var(--nightblue);
  padding: 12px 4px;
  text-align: center;
}
.bingo-play ~ #bingo-history-modal .bingo-history__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: rgba(3, 10, 16, 0.7);
  border: 1px solid rgba(0, 73, 111, 0.25);
  border-radius: 4px;
}
.bingo-play ~ #bingo-history-modal .bingo-history__info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.bingo-play ~ #bingo-history-modal .bingo-history__time {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 18px;
  line-height: 1.2;
  color: var(--cupcake);
}
.bingo-play ~ #bingo-history-modal .bingo-history__count {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--azure);
}
.bingo-play ~ #bingo-history-modal .bingo-history__load {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.35);
  border-radius: 50%;
  color: var(--azure);
  font-size: 16px;
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s, background 0.2s;
}
.bingo-play ~ #bingo-history-modal .bingo-history__load:hover {
  color: var(--cupcake);
  border-color: var(--cupcake);
}
.bingo-play ~ #bingo-history-modal .bingo-history__load:focus-visible {
  outline: 2px solid var(--cupcake);
  outline-offset: 2px;
}

/* Confirm modal (also: remove-number confirm modal) */
.bingo-play ~ #bingo-confirm-modal .bingo-modal__panel,
.bingo-play ~ #bingo-remove-modal .bingo-modal__panel {
  width: 460px;
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__text,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__text {
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  color: var(--nightblue);
  margin: 0 0 20px;
  line-height: 1.5;
}
.bingo-play ~ #bingo-remove-modal .bingo-remove-num {
  color: var(--orion-red-fill);
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 140px;
  padding: 10px 18px;
  font-family: 'JetBrains Mono', monospace;
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--nightblue);
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(0, 73, 111, 0.25);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.15s;
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn i,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn i {
  font-size: 1.05em;
  line-height: 1;
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn:hover,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn:hover {
  background: var(--nightblue);
  color: #ffffff;
  border-color: var(--nightblue);
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn:focus-visible,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn:focus-visible {
  outline: 2px solid var(--orion-red-fill);
  outline-offset: 3px;
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn.is-primary,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn.is-primary {
  background: var(--nightblue);
  color: #ffffff;
  border-color: var(--nightblue);
}
.bingo-play ~ #bingo-confirm-modal .bingo-confirm__actions .bingo-ctrl-btn.is-primary:hover,
.bingo-play ~ #bingo-remove-modal .bingo-confirm__actions .bingo-ctrl-btn.is-primary:hover {
  background: var(--azure);
  color: var(--nightblue);
  border-color: var(--azure);
}

@media (max-width: 768px) {
  .bingo-modal__panel { padding: 36px 22px 24px; }
  .bingo-modal__title { font-size: 24px; }
}

/* Current number + bingolingo (middle of right column) */
.bingo-play #bingo-current {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 0;
  padding: 8px 0;
  gap: clamp(4px, 1vh, 14px);
}
.bingo-play #bingo-current-number {
  font-family: 'Fraunces', Georgia, serif;
  color: var(--orion-red);
  font-size: clamp(120px, 38vh, 380px);
  line-height: 0.9;
  font-weight: 400;
  letter-spacing: -0.02em;
}
.bingo-play #bingo-current-lingo {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(2px, 0.6vh, 8px);
  color: var(--azure);
  font-family: 'Fraunces', Georgia, serif;
}
.bingo-play #bingo-current-lingo > div {
  min-height: 1em;
  line-height: 1.15;
  font-size: clamp(14px, 2.4vh, 28px);
}
.bingo-play #bingo-lingo-2 a#bingo-instr-hint-link {
  color: var(--azure);
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
  font-family: 'Fraunces', Georgia, serif;
}
.bingo-play #bingo-lingo-2 a#bingo-instr-hint-link:hover {
  color: var(--cupcake);
}

/* ---------- Ryst posen (shake) overlay � full-screen GIF ---------- */
.bingo-play #bingo-shake-overlay {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: #000;
  opacity: 0; transition: opacity .2s ease; pointer-events: none;
}
.bingo-play #bingo-shake-overlay[hidden] { display: none; }
.bingo-play #bingo-shake-overlay.is-visible { opacity: 1; pointer-events: auto; }
.bingo-play .bingo-shake__backdrop { position: absolute; inset: 0; cursor: pointer; }
.bingo-play .bingo-shake__img {
  position: relative;
  max-width: 80vw; max-height: 80vh;
  width: 80vw; height: 80vh;
  object-fit: contain;
  cursor: pointer;
}

/* Ryst posen overlay countdown progress bar */
.bingo-play #bingo-shake-overlay .bingo-shake__progress {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 4px;
  background: transparent;
  pointer-events: none;
  z-index: 2;
}
.bingo-play #bingo-shake-overlay .bingo-shake__progress-bar {
  width: 100%;
  height: 100%;
  background: #ff0000;
  transform-origin: left center;
  transform: scaleX(1);
}
.bingo-play #bingo-shake-overlay.is-visible .bingo-shake__progress-bar {
  animation: bingo-shake-countdown linear forwards;
  animation-duration: var(--shake-duration, 10s);
}
@keyframes bingo-shake-countdown {
  from { transform: scaleX(1); }
  to   { transform: scaleX(0); }
}

/* ---------- Order page ---------- */
.order-notfound {
  padding-top: 120px;
  padding-bottom: 120px;
  text-align: center;
}
.order-notfound h1 {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: 36px;
  color: var(--cupcake);
  letter-spacing: -0.01em;
  margin-bottom: 16px;
}
.order-notfound p {
  font-size: 15px;
  color: var(--azure);
  opacity: 0.8;
}

.order-page { padding-top: 96px; padding-bottom: 96px; }

.order-header {
  display: flex;
  align-items: center;
  gap: 28px;
  padding-bottom: 28px;
  border-bottom: 1px solid rgba(205, 230, 246, 0.1);
}
.order-client-logo {
  display: block;
  max-height: 64px;
  width: auto;
  object-fit: contain;
}
.order-title {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: 38px;
  letter-spacing: -0.01em;
  color: var(--orion-red);
  margin: 28px 0 32px 0;
}

.order-products { display: flex; flex-direction: column; }

.order-product {
  display: grid;
  grid-template-columns: 1fr auto auto;
  column-gap: 32px;
  row-gap: 12px;
  align-items: center;
  padding: 28px 0;
  border-bottom: 1px solid rgba(205, 230, 246, 0.1);
}
.order-product-info { min-width: 0; }
.order-product-name {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.01em;
  color: var(--azure);
  margin: 0 0 6px 0;
}
.order-product-meta {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cupcake);
  opacity: 0.85;
}
.order-product-price {
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  letter-spacing: 0.08em;
  color: var(--azure);
  white-space: nowrap;
}

.order-shipping-row {
  grid-template-columns: 1fr auto 134px;
}

.qty-stepper {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px;
  border: 1px solid rgba(205, 230, 246, 0.2);
  border-radius: 999px;
  background: rgba(205, 230, 246, 0.04);
}
.qty-minus,
.qty-plus {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(205, 230, 246, 0.2);
  background: transparent;
  color: var(--cupcake);
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.qty-minus:hover,
.qty-plus:hover {
  background: var(--azure);
  color: var(--nightblue);
  border-color: var(--azure);
}
.qty-input {
  width: 44px;
  height: 32px;
  text-align: center;
  background: transparent;
  border: 0;
  color: var(--cupcake);
  font-family: 'JetBrains Mono', monospace;
  font-size: 15px;
  letter-spacing: 0.04em;
  outline: none;
  -moz-appearance: textfield;
}
.qty-input::-webkit-outer-spin-button,
.qty-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.order-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 32px;
  padding: 24px 0;
}
.order-total {
  font-family: 'JetBrains Mono', monospace;
  font-size: 18px;
  letter-spacing: 0.08em;
  color: var(--azure);
  margin-left: auto;
  text-align: right;
}
.order-total-vat {
  margin-left: 8px;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.75;
}

@media (max-width: 768px) {
  .order-header { flex-direction: column; align-items: flex-start; gap: 16px; }
  .order-title { font-size: 30px; }
  .order-product {
    grid-template-columns: 1fr auto;
    column-gap: 16px;
  }
  .order-product-price { grid-column: 2; }
  .qty-stepper { grid-column: 1 / -1; justify-self: start; }
  .order-summary { flex-direction: column; align-items: stretch; }
}

/* ---------- Product modal additions ---------- */
.order-product-info.product-detail-trigger {
  cursor: pointer;
  transition: opacity 0.2s;
}
.order-product-info.product-detail-trigger:hover .order-product-name,
.order-product-info.product-detail-trigger:focus .order-product-name {
  color: var(--cupcake);
}
.order-product-info.product-detail-trigger:focus {
  outline: none;
}
.order-product-info.product-detail-trigger:focus-visible {
  outline: 2px solid var(--azure);
  outline-offset: 4px;
  border-radius: 4px;
}

/* Full-page product modal panel */
#product-modal .bingo-modal__panel--instructions {
  width: 100vw;
  height: 100vh;
  max-width: 100vw;
  max-height: 100vh;
  border-radius: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
#product-modal .bingo-modal__panel--instructions .bingo-instructions__content {
  overflow: visible;
  padding-right: 0;
  margin-right: 0;
}

#product-modal-price {
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  letter-spacing: 0.06em;
  color: var(--nightblue);
  margin-right: auto;
}

.modal-qty-stepper {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px;
  border: 1px solid rgba(0, 73, 111, 0.25);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.4);
}
.modal-qty-minus,
.modal-qty-plus {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(0, 73, 111, 0.25);
  background: transparent;
  color: var(--nightblue);
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.modal-qty-minus:hover,
.modal-qty-plus:hover,
.modal-qty-minus:focus,
.modal-qty-plus:focus {
  background: var(--orion-red-fill);
  color: var(--white);
  border-color: var(--orion-red-fill);
  outline: none;
}
.modal-qty-input {
  width: 44px;
  height: 32px;
  text-align: center;
  background: transparent;
  border: 0;
  color: var(--nightblue);
  font-family: 'JetBrains Mono', monospace;
  font-size: 15px;
  letter-spacing: 0.04em;
  outline: none;
  -moz-appearance: textfield;
}
.modal-qty-input:focus {
  outline: 2px solid var(--orion-red-fill);
  outline-offset: 2px;
  border-radius: 4px;
}
.modal-qty-input::-webkit-outer-spin-button,
.modal-qty-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

#product-modal .bingo-modal__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

@media (max-width: 768px) {
  .order-product { grid-template-columns: 1fr auto; }
}

/* ---------- Product modal: quantity row ---------- */
#product-modal .modal-qty {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 8px 0 20px 0;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(0, 73, 111, 0.15);
}
#product-modal .modal-qty-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nightblue);
  opacity: 0.8;
}

/* ---------- Order summary: reset button ---------- */
.order-reset-btn {
  background: transparent;
  border: 1px solid rgba(205, 230, 246, 0.25);
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 10px 18px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
  margin-right: auto;
}
.order-reset-btn:hover,
.order-reset-btn:focus {
  background: var(--azure);
  color: var(--nightblue);
  border-color: var(--azure);
  outline: none;
}

/* ---------- Order summary: Bestil button text centering + mobile stack order ---------- */
.order-summary #order-submit { justify-content: center; text-align: center; }

@media (max-width: 768px) {
  .order-summary #order-total {
    margin-left: 0;
    text-align: center;
    order: 1;
  }
  .order-summary #order-submit { order: 2; }
  .order-summary #order-reset {
    margin-right: 0;
    order: 3;
  }
}

/* ---------- Product modal: layout ---------- */
/* Mobile / default: aside acts as transparent wrapper so children flow as before. */
#product-modal .modal-aside { display: contents; }
#product-modal .modal-unit-price,
#product-modal .modal-subtotal,
#product-modal .modal-lead-time { display: none; }

@media (min-width: 769px) {
  #product-modal .bingo-modal__panel--instructions {
    display: grid;
    grid-template-columns: 8fr 4fr;
    grid-template-rows: auto auto auto;
    grid-template-areas:
      "title  title"
      "main   aside"
      "footer footer";
    column-gap: 40px;
    row-gap: 24px;
    height: auto;
    min-height: 100vh;
    align-content: start;
  }
  #product-modal .bingo-modal__title { grid-area: title; }
  #product-modal #product-modal-body {
    grid-area: main;
    overflow: visible;
    min-height: 0;
  }
  #product-modal .modal-aside {
    grid-area: aside;
    display: flex;
    flex-direction: column;
    gap: 20px;
    align-self: start;
    padding-left: 28px;
    border-left: 1px solid rgba(0, 73, 111, 0.15);
  }
  #product-modal .bingo-modal__footer {
    grid-area: footer;
    justify-content: flex-end;
  }
  #product-modal .bingo-modal__footer #product-modal-price { display: none; }
  #product-modal .modal-unit-price,
  #product-modal .modal-subtotal,
  #product-modal .modal-lead-time { display: flex; }

  #product-modal .modal-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  #product-modal .modal-field-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--nightblue);
    opacity: 0.8;
  }
  #product-modal .modal-field-value {
    font-family: 'JetBrains Mono', monospace;
    font-size: 18px;
    letter-spacing: 0.04em;
    color: var(--nightblue);
  }
  #product-modal .modal-qty {
    margin: 0;
    padding-bottom: 0;
    border-bottom: 0;
  }
}

/* ---------- Price change modal ---------- */
#price-change-modal #price-change-body { color: var(--nightblue); }
#price-change-modal #price-change-body p {
  margin: 0 0 16px 0;
  color: var(--nightblue);
}
#price-change-modal .price-change-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
#price-change-modal .price-change-list li {
  padding: 12px 14px;
  border: 1px solid rgba(0, 73, 111, 0.18);
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.4);
  color: var(--nightblue);
  font-size: 15px;
  line-height: 1.5;
}
#price-change-modal .price-change-list strong {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  color: var(--nightblue);
}
#price-change-modal .price-old,
#price-change-modal .price-new {
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  letter-spacing: 0.04em;
  color: var(--nightblue);
}
#price-change-modal .price-old { opacity: 0.65; text-decoration: line-through; }

/* ---------- Price change modal: close button override ---------- */
#price-change-modal .bingo-modal__close:hover {
  color: var(--nightblue);
  border-color: rgba(0, 73, 111, 0.45);
  background: rgba(255, 255, 255, 0.85);
}
#price-change-modal .bingo-modal__close:focus,
#price-change-modal .bingo-modal__close:focus-visible {
  outline: 2px solid rgba(0, 73, 111, 0.45);
  outline-offset: 2px;
  color: var(--nightblue);
}

/* ---------- Checkout ---------- */
.order-checkout-page {
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding-top: 96px;
  padding-bottom: 96px;
}
.order-checkout-page .order-title {
  color: var(--cupcake);
}

.checkout-grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas:
    "summary"
    "form";
  gap: 24px;
}
.checkout-grid > #order-summary { grid-area: summary; }
.checkout-grid > .checkout-form { grid-area: form; }

@media (min-width: 769px) {
  .checkout-grid {
    grid-template-columns: 13fr 11fr;
    grid-template-areas: "form summary";
    gap: 32px;
    align-items: start;
  }
  .checkout-grid > #order-summary {
    position: sticky;
    top: 24px;
  }
}

/* Summary panel */
.checkout-summary {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(205, 230, 246, 0.18);
  border-radius: 8px;
  padding: 20px 22px;
  color: var(--azure);
}
.checkout-section-title {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  color: var(--cupcake);
  font-size: 22px;
  margin: 0 0 16px 0;
}
.checkout-summary-rows {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 16px;
}
.checkout-summary-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: baseline;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(205, 230, 246, 0.12);
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  letter-spacing: 0.04em;
}
.checkout-summary-row:last-child { border-bottom: 0; }
.checkout-summary-name {
  font-family: 'Fraunces', serif;
  font-size: 16px;
  color: var(--cupcake);
}
.checkout-summary-qty { opacity: 0.85; }
.checkout-summary-line { text-align: right; }

.checkout-summary-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-top: 12px;
  border-top: 1px solid rgba(205, 230, 246, 0.25);
  font-family: 'JetBrains Mono', monospace;
  font-size: 18px;
  letter-spacing: 0.08em;
  color: var(--azure);
}
.checkout-summary-total-label {
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: 0.14em;
  opacity: 0.85;
}
.checkout-summary-vat {
  margin-top: 6px;
  text-align: right;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.7;
}

/* Form column */
.checkout-form {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.checkout-section {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(205, 230, 246, 0.18);
  border-radius: 8px;
  padding: 20px 22px;
  color: var(--azure);
}
.checkout-subform {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid rgba(205, 230, 246, 0.12);
}
.checkout-subform-title {
  font-family: 'Fraunces', serif;
  font-weight: 400;
  color: var(--cupcake);
  font-size: 18px;
  margin: 0 0 12px 0;
}

.checkout-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 14px;
}
.checkout-field-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.85;
}
.checkout-field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.checkout-input,
.checkout-select {
  width: 100%;
  background: rgba(0, 0, 0, 0.2);
  border: 1px solid rgba(205, 230, 246, 0.25);
  border-radius: 4px;
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  letter-spacing: 0.04em;
  padding: 10px 12px;
  outline: none;
  transition: border-color 0.2s;
}
.checkout-input:focus {
  border-color: var(--azure);
}

/* Read-only invoice list */
.checkout-readonly {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}
.checkout-readonly-row {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 12px;
  padding: 6px 0;
  border-bottom: 1px solid rgba(205, 230, 246, 0.1);
}
.checkout-readonly-row:last-child { border-bottom: 0; }
.checkout-readonly dt {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--azure);
  opacity: 0.8;
  margin: 0;
}
.checkout-readonly dd {
  margin: 0;
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
}

/* Checkbox */
.checkout-checkbox {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.04em;
  margin: 8px 0 16px 0;
  cursor: pointer;
}
.checkout-checkbox input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--azure);
}

/* Actions */
.checkout-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

/* Choices.js dark-theme scoping */
.checkout-form .choices,
.checkout-grid .choices {
  margin-bottom: 0;
}
.checkout-form .choices__inner,
.checkout-grid .choices__inner {
  background: rgba(0, 0, 0, 0.2);
  border: 1px solid rgba(205, 230, 246, 0.25);
  border-radius: 4px;
  color: var(--azure);
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  min-height: 42px;
  padding: 8px 10px;
}
.checkout-form .choices[data-type*="select-one"] .choices__inner,
.checkout-grid .choices[data-type*="select-one"] .choices__inner {
  padding-bottom: 8px;
}
.checkout-form .choices__list--single .choices__item,
.checkout-grid .choices__list--single .choices__item {
  color: var(--azure);
}
.checkout-form .choices__list--dropdown,
.checkout-form .choices__list[aria-expanded],
.checkout-grid .choices__list--dropdown,
.checkout-grid .choices__list[aria-expanded] {
  background: #ffffff;
  border: 1px solid rgba(0, 73, 111, 0.35);
  color: var(--nightblue);
  z-index: 50;
}
.checkout-form .choices__list--dropdown .choices__item,
.checkout-grid .choices__list--dropdown .choices__item,
.checkout-form .choices__list[aria-expanded] .choices__item,
.checkout-grid .choices__list[aria-expanded] .choices__item {
  background: #ffffff;
  color: var(--nightblue);
  padding: 10px 12px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
}
.checkout-form .choices__list--dropdown .choices__item--selectable.is-highlighted,
.checkout-grid .choices__list--dropdown .choices__item--selectable.is-highlighted,
.checkout-form .choices__list[aria-expanded] .choices__item--selectable.is-highlighted,
.checkout-grid .choices__list[aria-expanded] .choices__item--selectable.is-highlighted {
  background: var(--azure);
  color: var(--nightblue);
}
.checkout-form .choices__list--dropdown .choices__item--disabled,
.checkout-grid .choices__list--dropdown .choices__item--disabled,
.checkout-form .choices__list[aria-expanded] .choices__item--disabled,
.checkout-grid .choices__list[aria-expanded] .choices__item--disabled {
  background: #ffffff;
  color: var(--nightblue);
  opacity: 0.55;
}
.checkout-form .choices__input,
.checkout-grid .choices__input {
  background: #ffffff;
  color: var(--nightblue);
  border-bottom: 1px solid rgba(0, 73, 111, 0.25);
}
.checkout-form .choices__input::placeholder,
.checkout-grid .choices__input::placeholder {
  color: rgba(0, 73, 111, 0.55);
}
.checkout-form .choices[data-type*="select-one"]::after,
.checkout-grid .choices[data-type*="select-one"]::after {
  border-color: var(--azure) transparent transparent transparent;
}
.checkout-form .choices[data-type*="select-one"].is-open::after,
.checkout-grid .choices[data-type*="select-one"].is-open::after {
  border-color: transparent transparent var(--azure) transparent;
}

/* Address autocomplete */
.address-autocomplete-dropdown {
  list-style: none;
  margin: 4px 0 0 0;
  padding: 4px 0;
  background: lightblue;
  color: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 4px;
  max-height: 280px;
  overflow-y: auto;
  position: relative;
  z-index: 60;
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
}
.address-autocomplete-dropdown[hidden] {
  display: none;
}
.address-autocomplete-option {
  padding: 8px 12px;
  color: var(--ink);
  cursor: pointer;
  letter-spacing: 0.02em;
}
.address-autocomplete-option:hover,
.address-autocomplete-option.is-active,
.address-autocomplete-option[aria-selected="true"] {
  background: var(--azure);
  color: var(--ink);
  outline: 2px solid var(--orion-red);
  outline-offset: -2px;
}

/* ---------- Order confirmed modal ---------- */
#order-confirmed-modal .bingo-modal__panel {
    background: var(--azure);
    color: var(--nightblue);
    max-width: 520px;
}
#order-confirmed-modal .bingo-modal__title {
    color: var(--nightblue);
}
#order-confirmed-modal #order-confirmed-body {
    color: var(--nightblue);
}
#order-confirmed-modal #order-confirmed-body p {
    margin: 0 0 0.75rem 0;
    color: var(--nightblue);
}
#order-confirmed-modal #order-confirmed-body .order-confirmed-number {
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-weight: 600;
    color: var(--nightblue);
}

