      :root {
        color-scheme: light;
        --bg: #f4f4f7;
        --bg-soft: #e6e9ef;
        --surface: #ffffff;
        --surface-muted: #e6e9ef;
        --surface-strong: #dce0e8;
        --surface-hover: #f3f4f7;
        --border-soft: #ccd0da;
        --text: #4c4f69;
        --text-muted: #6c6f85;
        --accent: #1e66f5;
        --accent-strong: #8839ef;
        --accent-soft: rgba(30, 102, 245, 0.14);
        --nav-1: #1e66f5;
        --nav-2: #8839ef;
        --nav-3: #dc8a78;
        --nav-text: #0f0f1a;
        --nav-hover: #0f0f1a;
        --hero-1: #1e66f5;
        --hero-2: #8839ef;
        --hero-3: #4c4f69;
        --hero-badge-fg: #4c4f69;
        --danger-hero: #dc8a78;
        --shadow-strong: rgba(17, 17, 27, 0.16);
        --input-bg: #ffffff;
        --input-border: #cdd0da;
        --badge-soft-fg: #4c4f69;
        --badge-accent-fg: #ffffff;
      }

      [data-theme="latte"] {
        color-scheme: light;
        --bg: #eff1f5;
        --bg-soft: #e6e9ef;
        --surface: #ffffff;
        --surface-muted: #e6e9ef;
        --surface-strong: #dce0e8;
        --surface-hover: #f3f4f7;
        --border-soft: #ccd0da;
        --text: #4c4f69;
        --text-muted: #6c6f85;
        --accent: #1e66f5;
        --accent-strong: #8839ef;
        --accent-soft: rgba(30, 102, 245, 0.14);
        --nav-1: #1e66f5;
        --nav-2: #8839ef;
        --nav-3: #dc8a78;
        --nav-text: #f7f9ff;
        --nav-hover: #ffffff;
        --hero-1: #1e66f5;
        --hero-2: #8839ef;
        --hero-3: #4c4f69;
        --hero-badge-fg: #4c4f69;
        --danger-hero: #dc8a78;
        --shadow-strong: rgba(17, 17, 27, 0.16);
        --input-bg: #ffffff;
        --input-border: #cdd0da;
        --badge-soft-fg: #4c4f69;
        --badge-accent-fg: #ffffff;
      }

      [data-theme="mocha"] {
        color-scheme: dark;
        --bg: #11111b;
        --bg-soft: #181825;
        --surface: #1e1e2e;
        --surface-muted: #181825;
        --surface-strong: #313244;
        --surface-hover: #25263a;
        --border-soft: #45475a;
        --text: #cdd6f4;
        --text-muted: #a6adc8;
        --accent: #89b4fa;
        --accent-strong: #cba6f7;
        --accent-soft: rgba(137, 180, 250, 0.18);
        --nav-1: #11111b;
        --nav-2: #1e1e2e;
        --nav-3: #181825;
        --nav-text: #ffffff;
        --nav-hover: #89b4fa;
        --hero-1: #1e1e2e;
        --hero-2: #181825;
        --hero-3: #0f0f1a;
        --hero-badge-fg: #0f0f1a;
        --danger-hero: #f5e0dc;
        --shadow-strong: rgba(0, 0, 0, 0.35);
        --input-bg: #181825;
        --input-border: #45475a;
        --badge-soft-fg: #cdd6f4;
        --badge-accent-fg: #0f0f1a;
      }

      [data-theme="frappe"] {
        color-scheme: dark;
        --bg: #232634;
        --bg-soft: #292c3c;
        --surface: #303446;
        --surface-muted: #292c3c;
        --surface-strong: #414559;
        --surface-hover: #34384a;
        --border-soft: #51576d;
        --text: #c6d0f5;
        --text-muted: #a5adce;
        --accent: #8caaee;
        --accent-strong: #ca9ee6;
        --accent-soft: rgba(140, 170, 238, 0.2);
        --nav-1: #232634;
        --nav-2: #292c3c;
        --nav-3: #303446;
        --nav-text: #ffffff;
        --nav-hover: #8caaee;
        --hero-1: #303446;
        --hero-2: #292c3c;
        --hero-3: #1f2232;
        --hero-badge-fg: #1f2232;
        --danger-hero: #f2d5cf;
        --shadow-strong: rgba(0, 0, 0, 0.3);
        --input-bg: #292c3c;
        --input-border: #51576d;
        --badge-soft-fg: #c6d0f5;
        --badge-accent-fg: #1f2232;
      }

      [data-theme="macchiato"] {
        color-scheme: dark;
        --bg: #181926;
        --bg-soft: #1e2030;
        --surface: #24273a;
        --surface-muted: #1e2030;
        --surface-strong: #363a4f;
        --surface-hover: #2a2f45;
        --border-soft: #494d64;
        --text: #cad3f5;
        --text-muted: #a5adcb;
        --accent: #8aadf4;
        --accent-strong: #c6a0f6;
        --accent-soft: rgba(138, 173, 244, 0.18);
        --nav-1: #181926;
        --nav-2: #1e2030;
        --nav-3: #24273a;
        --nav-text: #ffffff;
        --nav-hover: #8aadf4;
        --hero-1: #24273a;
        --hero-2: #1e2030;
        --hero-3: #161724;
        --hero-badge-fg: #161724;
        --danger-hero: #f4dbd6;
        --shadow-strong: rgba(0, 0, 0, 0.32);
        --input-bg: #1e2030;
        --input-border: #494d64;
        --badge-soft-fg: #cad3f5;
        --badge-accent-fg: #161724;
      }

      html {
        height: 100%;
      }

      body {
        font-family: "Space Grotesk", "Segoe UI", system-ui, -apple-system, sans-serif;
        background: var(--bg);
        color: var(--text);
        transition: background 200ms ease, color 200ms ease;
        min-height: 100vh;
        display: flex;
        flex-direction: column;
      }

      main {
        flex: 1 0 auto;
        width: 100%;
      }

      footer {
        flex-shrink: 0;
      }

      .navbar {
        background: linear-gradient(135deg, var(--nav-1), var(--nav-2) 45%, var(--nav-3));
        box-shadow: 0 8px 24px var(--shadow-strong);
      }

      .navbar-brand,
      .navbar-dark .navbar-nav .nav-link {
        color: var(--nav-text);
      }

      .navbar-dark .navbar-nav .nav-link:hover,
      .navbar-dark .navbar-nav .nav-link:focus {
        color: var(--nav-hover);
      }

      .navbar .dropdown-menu {
        background: var(--surface);
        border-color: var(--border-soft);
        box-shadow: 0 8px 32px var(--shadow-strong);
        --bs-dropdown-link-color: var(--text);
        --bs-dropdown-link-hover-color: var(--text);
        --bs-dropdown-link-hover-bg: var(--surface-hover);
        --bs-dropdown-link-active-bg: var(--accent-soft);
      }

      .hero-panel {
        background:
          radial-gradient(circle at 12% 16%, var(--accent-soft), transparent 28%),
          radial-gradient(circle at 82% -6%, rgba(255, 255, 255, 0.12), transparent 30%),
          linear-gradient(135deg, var(--hero-1), var(--hero-2) 55%, var(--hero-3));
        color: #fff;
        box-shadow: 0 18px 38px var(--shadow-strong);
      }

      .hero-panel .text-secondary {
        color: rgba(255, 255, 255, 0.75) !important;
      }

      .hero-panel .badge {
        background: rgba(255, 255, 255, 0.9);
        color: var(--hero-badge-fg);
      }

      .hero-panel .text-danger {
        color: var(--danger-hero) !important;
      }

      .card {
        background: var(--surface);
        color: var(--text);
        border-color: var(--border-soft);
      }

      .card .card-body {
        background: inherit;
      }

      .card-flush {
        background: var(--surface-muted);
        border: 1px solid var(--border-soft);
        color: var(--text);
      }

      .qr-share-card {
        border: 1px solid var(--border-soft);
      }

      .qr-share-card .btn-outline-secondary {
        color: var(--text);
        border-color: var(--border-soft);
      }

      .qr-share-card .btn-outline-secondary:hover,
      .qr-share-card .btn-outline-secondary:focus {
        color: var(--accent);
        border-color: var(--accent);
        background: transparent;
      }

      .qr-code-frame {
        border: 1px dashed var(--border-soft);
        background: var(--surface-muted);
        border-radius: 1rem;
        padding: 1rem;
      }

      .qr-code-frame canvas,
      .qr-code-frame img {
        border-radius: 0.75rem;
        width: 160px;
        height: 160px;
      }

      .stat-value {
        color: var(--text);
      }

      [data-theme="latte"] .hero-panel .stat-value {
        color: rgba(255, 255, 255, 0.92);
      }

      .nav-link {
        letter-spacing: 0.02em;
      }

      .badge-soft {
        background: var(--accent-soft);
        color: var(--badge-soft-fg);
      }

      .navbar .badge-soft {
        background: rgba(255, 255, 255, 0.2);
        color: var(--nav-text);
      }

      .bg-white,
      .bg-light {
        background: var(--surface) !important;
        color: var(--text) !important;
      }

      .bg-dark {
        background: var(--hero-3) !important;
        color: #fff !important;
      }

      .text-muted,
      .text-secondary {
        color: var(--text-muted) !important;
      }

      .list-group-item {
        background: var(--surface);
        color: var(--text);
        border-color: var(--border-soft);
      }

      .list-group-item + .list-group-item {
        border-top-color: var(--border-soft);
      }

      .list-group-item-action:hover,
      .list-group-item-action:focus {
        background: var(--surface-hover);
        color: var(--text);
        border-color: var(--border-soft);
      }

      .list-group-item-action:active {
        background: var(--surface-strong);
        color: var(--text);
        border-color: var(--border-soft);
      }

      .form-text {
        color: var(--text-muted) !important;
      }

      .form-control,
      .form-select {
        background: var(--input-bg);
        color: var(--text);
        border-color: var(--input-border);
      }

      .form-control::placeholder,
      textarea::placeholder {
        color: var(--text-muted);
        opacity: 0.9;
      }

      .form-control:focus,
      .form-select:focus {
        border-color: var(--accent);
        box-shadow: 0 0 0 0.2rem rgba(30, 102, 245, 0.15);
      }

      [data-theme="mocha"] .form-control:focus,
      [data-theme="frappe"] .form-control:focus,
      [data-theme="macchiato"] .form-control:focus,
      [data-theme="mocha"] .form-select:focus,
      [data-theme="frappe"] .form-select:focus,
      [data-theme="macchiato"] .form-select:focus {
        box-shadow: 0 0 0 0.2rem rgba(137, 180, 250, 0.18);
      }

      .btn-primary {
        background: var(--accent);
        border-color: var(--accent);
        color: #fff;
      }

      .btn-primary:hover,
      .btn-primary:focus {
        background: var(--accent-strong);
        border-color: var(--accent-strong);
      }

      .btn-outline-secondary {
        border-color: var(--border-soft);
        color: var(--text);
      }

      .btn-outline-secondary:hover,
      .btn-outline-secondary:focus {
        border-color: var(--accent);
        color: var(--accent);
        background: transparent;
      }

      .hero-panel .btn-outline-secondary {
        color: rgba(255, 255, 255, 0.9);
        border-color: rgba(255, 255, 255, 0.65);
        background: transparent;
      }

      .hero-panel .btn-outline-secondary:hover,
      .hero-panel .btn-outline-secondary:focus {
        color: #0f0f1a;
        background: #fff;
        border-color: #fff;
      }

      .btn-outline-light {
        color: #fff;
        border-color: rgba(255, 255, 255, 0.6);
        background: transparent;
      }

      .btn-outline-light:hover,
      .btn-outline-light:focus {
        color: #11111b;
        background: #fff;
      }

      [data-theme="latte"] .btn-outline-light {
        color: var(--accent);
        border-color: var(--accent);
        background: transparent;
      }

      [data-theme="latte"] .btn-outline-light:hover,
      [data-theme="latte"] .btn-outline-light:focus {
        color: #fff;
        background: var(--accent);
        border-color: var(--accent);
      }

      [data-theme="latte"] .hero-panel .btn-outline-light {
        background: var(--accent);
        color: #fff;
        border-color: var(--accent);
      }

      [data-theme="latte"] .hero-panel .btn-outline-light:hover,
      [data-theme="latte"] .hero-panel .btn-outline-light:focus {
        background: var(--accent-strong);
        border-color: var(--accent-strong);
        color: #fff;
      }

      .badge.bg-light {
        background: var(--surface-muted) !important;
        color: var(--text) !important;
      }

      .badge.bg-secondary {
        background: var(--accent-strong) !important;
        color: var(--badge-accent-fg);
      }

      .badge.bg-primary {
        background: var(--accent) !important;
        color: var(--badge-accent-fg);
      }

      #admin-rsvp-list .list-group-item {
        border: 0;
        background: transparent;
        padding: 0;
      }

      #admin-rsvp-list .list-group-item + .list-group-item {
        margin-top: 1rem;
      }

      #admin-rsvp-list .rsvp-card {
        background: var(--surface);
        border-color: var(--border-soft);
      }

      [data-theme="latte"] .hero-panel .stat-value.text-success {
        color: #1d722f !important;
      }

      [data-theme="latte"] #admin-rsvp-list .rsvp-card.alt-row {
        background: rgba(0, 0, 0, 0.04) !important;
        color: #151515 !important;
      }

      [data-theme="latte"] #admin-rsvp-list .rsvp-card.alt-row .fw-semibold {
        color: #151515 !important;
      }

      .dropdown-menu .form-check-input:checked {
        background-color: var(--accent);
        border-color: var(--accent);
      }

      .badge-private {
        background: rgba(255, 255, 255, 0.9);
        color: #11111b;
        border: 1px solid rgba(0, 0, 0, 0.25);
        letter-spacing: 0.08em;
      }

      .pref-keys-label {
        color: var(--text);
      }

      [data-theme="mocha"] .badge-private,
      [data-theme="frappe"] .badge-private,
      [data-theme="macchiato"] .badge-private {
        background: rgba(255, 255, 255, 0.2);
        color: #fff;
        border-color: rgba(255, 255, 255, 0.4);
      }

      [data-theme="mocha"] .pref-keys-label {
        color: #cba6f7;
      }

      [data-theme="frappe"] .pref-keys-label {
        color: #ca9ee6;
      }

      [data-theme="macchiato"] .pref-keys-label {
        color: #c6a0f6;
      }

      .dropdown-item.theme-option {
        border-radius: 0.75rem;
      }

      .dropdown-item.theme-option.active,
      .dropdown-item.theme-option:active {
        background: var(--accent-soft);
        color: var(--text);
      }

      footer.bg-dark {
        background: linear-gradient(135deg, var(--hero-3), var(--nav-2));
        color: #fff;
      }

      .toast-stack {
        position: fixed;
        top: 1rem;
        right: 1rem;
        z-index: 1080;
        display: flex;
        flex-direction: column;
        gap: 0.5rem;
      }

      .toast-banner {
        min-width: 220px;
        max-width: 360px;
        padding: 0.75rem 1rem;
        border-radius: 0.75rem;
        color: #fff;
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
        transition: opacity 250ms ease;
      }

      .toast-success {
        background: linear-gradient(135deg, #22c55e, #16a34a);
      }

      .toast-danger {
        background: linear-gradient(135deg, #ef4444, #b91c1c);
      }

      .toast-info {
        background: linear-gradient(135deg, #1e66f5, #8839ef);
      }

      .message-user-note-name {
        color: var(--text);
      }
