      * {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
      }

      :root {
        --bg: #f3f4f6;
        --bg-surface: #ffffff;
        --accent: #0ea5e9;
        --accent-soft: rgba(14, 165, 233, 0.12);
        --text-main: #0f172a;
        --text-muted: #6b7280;
        --border-subtle: rgba(15, 23, 42, 0.18);
      }

      html,
      body {
        height: 100%;
      }

      body {
        font-family: system-ui, -apple-system, BlinkMacSystemFont, "SF Pro Text",
          "Segoe UI", sans-serif;
        background:
          radial-gradient(circle at top, rgba(255, 255, 255, 0.7) 0, transparent 40%),
          var(--bg);
        color: var(--text-main);
      }

      .layout {
        min-height: 100vh;
        display: flex;
        flex-direction: column;
      }

      header {
        border-bottom: 1px solid var(--border-subtle);
        background: linear-gradient(
          180deg,
          rgba(255, 255, 255, 0.98),
          rgba(249, 250, 251, 0.96)
        );
        backdrop-filter: blur(16px);
      }

      .header-inner {
        max-width: 1120px;
        margin: 0 auto;
        padding: 14px 18px;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
      }

      .brand {
        display: flex;
        flex-direction: column;
        justify-content: center;
      }

      .brand-text-main {
        font-weight: 600;
        letter-spacing: 0.02em;
        font-size: 15px;
      }

      .brand-text-sub {
        font-size: 12px;
        color: var(--text-muted);
      }

      .header-right {
        display: flex;
        align-items: center;
        gap: 18px;
      }

      .store-logo {
        height: 32px;
        max-width: 160px;
        object-fit: contain;
        display: none; /* will be shown when logo URL is set */
      }

      .header-cta {
        font-size: 12px;
        color: var(--text-muted);
        display: flex;
        align-items: center;
        gap: 8px;
        white-space: nowrap;
      }

      .header-dot {
        width: 4px;
        height: 4px;
        border-radius: 999px;
        background: rgba(148, 163, 184, 0.9);
      }

      main {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 18px;
      }

      .main-inner {
        width: 100%;
        max-width: 1120px;
        display: flex;
        flex-direction: column;
        gap: 16px;
      }

      .title-row {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        gap: 10px;
        align-items: baseline;
        padding: 0 4px;
      }

      .title-main {
        font-size: 18px;
        font-weight: 500;
        letter-spacing: 0.03em;
        text-transform: uppercase;
        color: var(--text-muted);
      }

      .title-sub {
        font-size: 13px;
        color: var(--text-muted);
      }

      .help-line {
        margin: 4px 4px 0;
        font-size: 12px;
        color: var(--text-muted);
      }

      .step-header {
        margin: 6px 4px 0;
        padding: 8px 12px;
        border-radius: 999px;
        border: 1px solid var(--border-subtle);
        background:
          radial-gradient(circle at top left, rgba(148, 163, 184, 0.18), transparent 60%),
          radial-gradient(circle at bottom right, rgba(148, 163, 184, 0.08), transparent 60%),
          rgba(255, 255, 255, 0.96);
        display: flex;
        align-items: center;
        gap: 10px;
        font-size: 12px;
        color: var(--text-main);
        box-shadow: 0 10px 25px rgba(15, 23, 42, 0.08);
      }

      /* Accent-variant når vi kender en aktiv step */
      .step-header--accent {
        border-color: rgba(148, 163, 184, 0.35);
        background:
          radial-gradient(circle at top left, var(--accent-soft), transparent 65%),
          radial-gradient(circle at bottom right, rgba(15, 23, 42, 0.04), transparent 65%),
          rgba(255, 255, 255, 0.96);
        box-shadow:
          0 10px 25px rgba(15, 23, 42, 0.08),
          0 0 0 1px rgba(148, 163, 184, 0.08);
      }

      .step-header-icon {
        width: 28px;
        height: 28px;
        border-radius: 999px;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 15px;
        font-weight: 600;
        color: #0f172a;
        background:
          radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.9), transparent 55%),
          var(--accent-soft);
        border: 1px solid rgba(15, 23, 42, 0.06);
        box-shadow: 0 0 0 4px rgba(148, 163, 184, 0.18);
        flex-shrink: 0;
      }

      .step-header--accent .step-header-icon {
        border-color: rgba(14, 165, 233, 0.7);
        box-shadow: 0 0 0 4px rgba(14, 165, 233, 0.18);
      }

      .step-header-text {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 0;
      }

      .step-header-label {
        font-size: 12px;
        font-weight: 600;
        letter-spacing: 0.06em;
        text-transform: uppercase;
      }

      .step-header-sub {
        font-size: 11px;
        color: var(--text-muted);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }

      .step-header-meta {
        margin-left: auto;
        font-size: 11px;
        color: var(--accent);
        white-space: nowrap;
        padding: 4px 8px;
        border-radius: 999px;
        background: rgba(148, 163, 184, 0.12);
        border: 1px solid rgba(148, 163, 184, 0.3);
      }

      .step-header--accent .step-header-meta {
        color: var(--accent);
        background: var(--accent-soft);
        border-color: rgba(15, 23, 42, 0.08);
      }

      @media (max-width: 768px) {
        .step-header {
          border-radius: 14px;
          flex-wrap: wrap;
          align-items: flex-start;
        }
        .step-header-meta {
          margin-left: 0;
        }
      }

      .booking-summary {
        margin: 10px 4px 0;
        font-size: 12px;
        color: var(--text-main);
        background: rgba(255, 255, 255, 0.9);
        border-radius: 999px;
        border: 1px solid var(--border-subtle);
        padding: 6px 12px;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        max-width: 100%;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }

      .booking-summary::before {
        content: "";
      }

      .widget-shell {
        flex: 1;
        min-height: min(640px, 70vh);
        border-radius: 20px;
        border: 1px solid var(--border-subtle);
        background:
          radial-gradient(circle at top left, rgba(255, 255, 255, 0.8), transparent 60%),
          radial-gradient(circle at bottom right, rgba(255, 255, 255, 0.6), transparent 60%),
          var(--bg-surface);
        box-shadow: 0 22px 50px rgba(15, 23, 42, 0.16);
        padding: 10px;
        display: flex;
        flex-direction: column;
        overflow: hidden;
      }

      #bw-widget {
        flex: 1;
        border-radius: 14px;
        overflow: hidden;
      }

      .loader {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        color: var(--text-muted);
        font-size: 13px;
        gap: 6px;
      }

      .loader-dot {
        width: 7px;
        height: 7px;
        border-radius: 999px;
        background: var(--accent);
        opacity: 0.3;
        animation: pulse 1.1s infinite ease-in-out;
      }
      .loader-dot:nth-child(2) {
        animation-delay: 0.16s;
      }
      .loader-dot:nth-child(3) {
        animation-delay: 0.32s;
      }

      @keyframes pulse {
        0%,
        100% {
          transform: scale(0.7);
          opacity: 0.25;
        }
        50% {
          transform: scale(1);
          opacity: 1;
        }
      }

      footer {
        border-top: 1px solid var(--border-subtle);
        background: rgba(255, 255, 255, 0.98);
      }

      .footer-inner {
        max-width: 1120px;
        margin: 0 auto;
        padding: 10px 18px 12px;
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 10px;
        font-size: 12px;
        color: var(--text-muted);
      }

      .footer-contact {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        align-items: center;
      }

      .footer-separator {
        width: 3px;
        height: 3px;
        border-radius: 999px;
        background: rgba(148, 163, 184, 0.7);
      }

      .footer-link {
        color: var(--text-muted);
        text-decoration: none;
        border-bottom: 1px dotted rgba(148, 163, 184, 0.7);
      }

      .footer-link:hover {
        color: var(--accent);
        border-bottom-color: rgba(14, 165, 233, 0.9);
      }

      /* Full-page preloader */
      .page-preloader {
        position: fixed;
        inset: 0;
        background:
          radial-gradient(circle at top, rgba(255, 255, 255, 0.7) 0, transparent 40%),
          var(--bg);
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 50;
        transition: opacity 0.4s ease, visibility 0.4s ease;
      }

      .page-preloader.hidden {
        opacity: 0;
        visibility: hidden;
      }

      .page-preloader-inner {
        text-align: center;
        padding: 18px 22px;
        border-radius: 16px;
        background: rgba(255, 255, 255, 0.9);
        box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12);
        border: 1px solid rgba(148, 163, 184, 0.25);
        max-width: 320px;
      }

      .page-preloader-title {
        font-size: 15px;
        font-weight: 500;
        margin-bottom: 4px;
      }

      .page-preloader-sub {
        font-size: 12px;
        color: var(--text-muted);
        margin-bottom: 12px;
      }

      .preloader-dots {
        display: flex;
        justify-content: center;
        gap: 6px;
        margin-bottom: 6px;
      }

      .preloader-dot {
        width: 7px;
        height: 7px;
        border-radius: 999px;
        background: var(--accent);
        opacity: 0.3;
        animation: pulse 1.1s infinite ease-in-out;
      }

      .preloader-dot:nth-child(2) {
        animation-delay: 0.12s;
      }
      .preloader-dot:nth-child(3) {
        animation-delay: 0.24s;
      }

      .preloader-small {
        font-size: 11px;
        color: var(--text-muted);
      }

      @media (max-width: 768px) {
        .header-inner,
        .footer-inner {
          padding-left: 14px;
          padding-right: 14px;
        }

        main {
          padding: 14px;
        }

        .widget-shell {
          display: none; /* mobile: no inline box, only floating modal trigger */
        }

        .title-row {
          flex-direction: column;
          align-items: flex-start;
        }

        .title-main {
          font-size: 16px;
        }
      }

      @media (max-width: 480px) {
        .widget-shell {
          min-height: 480px;
        }
      }
