/* ================================================================
   KLEUREN & CSS-VARIABELEN
================================================================ */
:root {
    /* Kleuren */
    --brand: #ffb44d;
    --brand-dark: #e6a040;
    --bg-light: #fceedc;
    --bg-dark: #f7fae8;
    --bg-other: #ffffec;
    --bg-section-alt: #fdf6ee;
    --text-dark: #0d2545;
    --text-darker: #041020;
    --text-muted: #5a6f8a;
    --bg-clear: #fff;
    --card-bg: #ffffffee;
    
    /* Layout */
    --radius: 18px;
    --radius-sm: 10px;
    --radius-lg: 24px;
    --shadow: 0 6px 22px rgba(0,0,0,.08);
    --shadow-sm: 0 2px 8px rgba(0,0,0,.06);
    --shadow-lg: 0 12px 40px rgba(0,0,0,.12);
    --header-height: 72px;
    
    /* Spacing (mobile-first) */
    --space-xs: 0.5rem;
    --space-sm: 1rem;
    --space-md: 1.5rem;
    --space-lg: 2rem;
    --space-xl: 3rem;
    
    /* Container widths */
    --container-sm: 640px;
    --container-md: 768px;
    --container-lg: 1024px;
    --container-xl: 1280px;
    
    /* Touch targets (WCAG 2.5.5) */
    --touch-target: 44px;
    
    /* Fluid typography scale */
    --font-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
    --font-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
    --font-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
    --font-lg: clamp(1.125rem, 1rem + 0.6vw, 1.35rem);
    --font-xl: clamp(1.5rem, 1.2rem + 1.5vw, 2.2rem);
    --font-2xl: clamp(1.75rem, 1.4rem + 1.75vw, 2.8rem);
    --font-3xl: clamp(2rem, 1.5rem + 2.5vw, 3.5rem);
    
    /* Transitions */
    --transition-fast: 150ms ease;
    --transition-base: 250ms ease;
    --transition-slow: 400ms ease;
}

/* ================================================================
   DARK MODE — kleur-overrides
   Toegepast via class "dark-mode" op <html>
================================================================ */
html.dark-mode {
--brand: #c48a2a;
--brand-dark: #a87624;
    --bg-light: #1a1e2a;
    --bg-dark: #141824;
    --bg-other: #1e2230;
    --bg-section-alt: #181c28;
    --text-dark: #e8e4dd;
    --text-darker: #f5f2ed;
    --text-muted: #9aa5b8;
    --bg-clear: #151922;
    --card-bg: #1e2230ee;
    --shadow: 0 6px 22px rgba(0,0,0,.28);
    --shadow-sm: 0 2px 8px rgba(0,0,0,.22);
    --shadow-lg: 0 12px 40px rgba(0,0,0,.35);
    color-scheme: dark;
}

html.dark-mode body {
    background: #111520;
    color: var(--text-dark);
}

/* Theme toggle — icon visibility (global to avoid scoped-CSS timing issues) */
.theme-icon--sun  { display: none; }
.theme-icon--moon { display: inline; }
html.dark-mode .theme-icon--sun  { display: inline; }
html.dark-mode .theme-icon--moon { display: none; }

/* Header */
html.dark-mode .site-header {
    background: #1a1e2acc;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 4px 10px rgba(0,0,0,.25);
}

/* CTA overrides */
html.dark-mode .cta.secondary {
    background: #2a3045;
    color: #e8e4dd;
}
html.dark-mode .cta.secondary:hover {
    background: #343b52;
}
html.dark-mode .cta.secondary:active {
    background: #1e2438;
}

html.dark-mode .cta.third {
    background: #1e2230;
    color: var(--text-dark);
    border-color: var(--text-muted);
}
html.dark-mode .cta.third:active {
    background: #252a3a;
}

/* Inputs */
html.dark-mode input,
html.dark-mode select,
html.dark-mode textarea {
    background: #1e2230;
    border-color: #333a4d;
    color: var(--text-dark);
}

html.dark-mode input::placeholder,
html.dark-mode select::placeholder,
html.dark-mode textarea::placeholder {
    color: #667088;
}

html.dark-mode input:focus,
html.dark-mode select:focus,
html.dark-mode textarea:focus {
    background: #232838;
    border-color: var(--brand);
}

/* Headings */
html.dark-mode h1,
html.dark-mode h2,
html.dark-mode h3 {
    color: var(--text-dark);
}

/* Hero — nachtelijk boswandeling thema */
html.dark-mode .hero {
    background:
        radial-gradient(ellipse at 15% 25%, rgba(255,180,77,.12) 0%, transparent 50%),
        radial-gradient(ellipse at 85% 50%, rgba(180,150,100,.08) 0%, transparent 50%),
        radial-gradient(ellipse at 50% 115%, rgba(255,200,130,.10) 0%, transparent 45%),
        linear-gradient(175deg, #1a1510 0%, #23201a 25%, #2a261e 50%, #1f1c16 100%);
}
html.dark-mode .hero::before {
    background: radial-gradient(circle, rgba(255,180,100,.10) 0%, transparent 70%);
}
html.dark-mode .hero::after {
    background: radial-gradient(circle, rgba(255,220,160,.06) 0%, transparent 60%);
}

/* Hero wave */
html.dark-mode .hero-wave {
    background: var(--bg-section-alt);
}

/* Hero text */
html.dark-mode .hero-text h1 {
    color: #f5f0e6;
    text-shadow: 0 1px 12px rgba(0,0,0,.50);
}
html.dark-mode .hero-subtitle {
    color: rgba(245,240,230,.75);
}
html.dark-mode .hero-trust span {
    color: rgba(245,240,230,.75);
}

/* Cards generiek */
html.dark-mode .character-block {
    background: var(--card-bg);
    box-shadow: var(--shadow);
}

/* Carousel */
html.dark-mode .carousel .arrow {
    color: var(--text-dark);
}

/* Customiser */
html.dark-mode .customiser-sub {
    color: var(--text-muted);
}

/* Checkout */
html.dark-mode .checkoutSection {
    background: var(--bg-light);
}

/* Validation messages */
html.dark-mode .validation-message {
    background: #3a1c1c;
    color: #f5b5b5;
}
html.dark-mode .validation-message::after {
    background: #3a1c1c;
}

/* Links */
html.dark-mode .exampleLink {
    color: var(--text-dark);
}
html.dark-mode .exampleLink:hover {
    color: var(--text-darker);
}

/* Delete / danger buttons */
html.dark-mode .del-btn,
html.dark-mode .icon-btn.danger {
    color: #ff6b6b;
}

/* ── Global card overrides ─────────────────────────────────
   Scoped CSS in Blazor components uses hardcoded #fff/#white
   on cards. We override them globally with !important to
   guarantee dark backgrounds regardless of specificity. ── */
html.dark-mode .msg-card,
html.dark-mode .story-card,
html.dark-mode .purchase-card,
html.dark-mode .examples-card,
html.dark-mode .contact-card,
html.dark-mode .testimonial-card,
html.dark-mode .bb-panel {
    background: #1e2230 !important;
    box-shadow: 0 8px 32px rgba(0,0,0,.22) !important;
}

/* Textarea – persoonlijke boodschap */
html.dark-mode .personal-msg-area {
    background: #181c28 !important;
    background-image: repeating-linear-gradient(
        transparent,
        transparent 1.68rem,
        #2a3040 1.68rem,
        #2a3040 1.69rem
    ) !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}

html.dark-mode .personal-msg-area::placeholder {
    color: #667088 !important;
}

/* Char counter badge */
html.dark-mode .char-count {
    background: rgba(30,34,48,.90) !important;
    color: var(--text-muted) !important;
}

/* Photo polaroid (examples) */
html.dark-mode .photo-polaroid {
    background: #252a3a !important;
    border-color: #252a3a !important;
}

/* Carousel buttons (testimonials) */
html.dark-mode .carousel-btn {
    background: #1e2230 !important;
    border-color: #333a4d !important;
}

/* Pagination dots (testimonials) */
html.dark-mode .pagination-dot {
    background: #333a4d !important;
}
html.dark-mode .pagination-dot.active {
    background: var(--brand) !important;
}

/* Testimonial divider */
html.dark-mode .testimonial-author {
    border-top-color: #2a3040 !important;
}

/* Testimonial stats */
html.dark-mode .stats-text {
    background: linear-gradient(135deg, #2a261e, #332a1c) !important;
    color: #e6a040 !important;
}

/* Mobile menu */
html.dark-mode .mobile-menu {
    background: #1a1e2a !important;
}

/* Hero secondary CTA */
html.dark-mode .hero-cta-secondary {
    background: rgba(30,34,48,.75) !important;
    border-color: rgba(255,255,255,.25) !important;
}

/* Contact input fields */
html.dark-mode .contact-card input,
html.dark-mode .contact-card textarea {
    background: #181c28 !important;
    border-color: #333a4d !important;
}
html.dark-mode .contact-card input:focus,
html.dark-mode .contact-card textarea:focus {
    background: #1e2230 !important;
    border-color: var(--brand) !important;
}

/* Error & success states */
html.dark-mode .contact .error {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f5b5b5 !important;
}

/* Modals */
html.dark-mode .modal-content {
    background: #1e2230 !important;
    box-shadow: 0 10px 35px rgba(0,0,0,.45) !important;
}

/* Checkout page overwrites --card-bg in :root */
html.dark-mode .checkoutSection {
    --card-bg: #1e2230;
    --soft-accent-bg: #1a1e2a;
    --soft-accent-border: #2a3040;
    --surface-color: #1e2230;
    --border-color: #333a4d;
    --text-primary: #e8e4dd;
    --text-secondary: #9aa5b8;
    --hover-bg: rgba(255,255,255,.04);
}

/* Step progress (checkout) */
html.dark-mode .step-icon {
    background: #333a4d !important;
    color: #9aa5b8 !important;
}
html.dark-mode .step-label {
    color: #9aa5b8 !important;
}
html.dark-mode .progress-step.completed .step-label,
html.dark-mode .progress-step.active .step-label {
    color: var(--text-dark) !important;
}
html.dark-mode .progress-line {
    background: #333a4d !important;
}

/* Checkout cards */
html.dark-mode .checkoutSection .card,
html.dark-mode .checkoutSection .address-card {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
}

/* Checkout total row */
html.dark-mode .total-row {
    border-top-color: #2a3040 !important;
}

/* Checkout inputs */
html.dark-mode .addr-editor .input,
html.dark-mode .qty-input,
html.dark-mode .remark-area {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}

/* Checkout notes */
html.dark-mode .qty-note,
html.dark-mode .checkoutSection .char-count,
html.dark-mode .optin-note {
    color: var(--text-muted) !important;
}

/* Test-betaling notice */
html.dark-mode .test-notice {
    background-color: #1e1c18 !important;
    border-color: #3a3220 !important;
    border-left-color: var(--brand) !important;
    color: #d4a574 !important;
}

/* ── Discount section ───────────────────────────── */
html.dark-mode .discount-section {
    background: #1e2230 !important;
    border-color: #333a4d !important;
}
html.dark-mode .discount-input {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .discount-error {
    background: #2d1b1b !important;
    color: #f5b5b5 !important;
    border-color: #5c2828 !important;
}
html.dark-mode .discount-success {
    background: #1a3328 !important;
    color: #4ade80 !important;
    border-color: #2d5a3f !important;
}

/* ── Gift card section ──────────────────────────── */
html.dark-mode .giftcard-section {
    background: #1e2230 !important;
    border-color: #333a4d !important;
}
html.dark-mode .giftcard-input {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .giftcard-input.input-success {
    background: #1a3328 !important;
}
html.dark-mode .giftcard-error {
    background: #2d1b1b !important;
    color: #f5b5b5 !important;
    border-color: #5c2828 !important;
}
html.dark-mode .giftcard-success {
    background: #1a3328 !important;
    color: #4ade80 !important;
    border-color: #2d5a3f !important;
}

/* ── Gift (cadeau) section ──────────────────────── */
html.dark-mode .gift-section {
    background: linear-gradient(135deg, #1e1c18 0%, #221f18 100%) !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .gift-section.gift-active {
    background: linear-gradient(135deg, #22201a 0%, #28241c 100%) !important;
    border-color: #6b5438 !important;
}
html.dark-mode .gift-header:hover {
    background: rgba(212,165,116,.06) !important;
}
html.dark-mode .gift-header-text h3 {
    color: #e6c9a0 !important;
}
html.dark-mode .gift-subtitle,
html.dark-mode .field-help,
html.dark-mode .char-counter {
    color: #9a8a72 !important;
}
html.dark-mode .gift-label {
    color: #e6c9a0 !important;
}
html.dark-mode .gift-input,
html.dark-mode .gift-textarea {
    background: #1a1810 !important;
    border-color: #4a3c28 !important;
    color: var(--text-dark) !important;
}
html.dark-mode .gift-input:focus,
html.dark-mode .gift-textarea:focus {
    border-color: #d4a574 !important;
}
html.dark-mode .gift-input::placeholder,
html.dark-mode .gift-textarea::placeholder {
    color: #6b5c4a !important;
}
html.dark-mode .gift-option {
    background: #1a1810 !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .gift-option:hover {
    border-color: #6b5438 !important;
    background: #221f18 !important;
}
html.dark-mode .gift-option.option-selected {
    background: linear-gradient(135deg, #28241c 0%, #2c2820 100%) !important;
    border-color: #6b5438 !important;
}
html.dark-mode .option-checkbox {
    background: #1a1810 !important;
    border-color: #5a4d3a !important;
}
html.dark-mode .option-text strong {
    color: #e6c9a0 !important;
}
html.dark-mode .option-text small {
    color: #9a8a72 !important;
}
html.dark-mode .ribbon-text {
    color: #d4a574 !important;
}
html.dark-mode .preview-card {
    background: #1a1810 !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .preview-header {
    background: linear-gradient(90deg, #221f18 0%, #28241c 100%) !important;
    border-bottom-color: #4a3c28 !important;
    color: #9a8a72 !important;
}

/* ── Checkout Ready page ────────────────────────── */
html.dark-mode .checkout-ready {
    background: linear-gradient(135deg, #111520 0%, #151922 50%, #111520 100%) !important;
}
html.dark-mode .checkout-ready .card.summary {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
    box-shadow: 0 10px 40px rgba(0,0,0,.30) !important;
}
html.dark-mode .checkout-ready .card.success-card {
    border-color: #2d5a3f !important;
    box-shadow: 0 10px 40px rgba(34,197,94,.08) !important;
}
html.dark-mode .checkout-ready h2 {
    color: var(--text-dark) !important;
}
html.dark-mode .checkout-ready .success-card h2 {
    color: #4ade80 !important;
}
html.dark-mode .order-details {
    background: #181c28 !important;
}
html.dark-mode .detail-row {
    border-bottom-color: #2a3040 !important;
}
html.dark-mode .detail-row span:first-child {
    color: #9aa5b8 !important;
}
html.dark-mode .detail-row strong {
    color: var(--text-dark) !important;
}
html.dark-mode .success-message {
    background: #1a3328 !important;
    border-color: #2d5a3f !important;
}
html.dark-mode .success-message p {
    color: #4ade80 !important;
}
html.dark-mode .status-hint,
html.dark-mode .pending-note,
html.dark-mode .share-prompt,
html.dark-mode .poll-indicator {
    color: #9aa5b8 !important;
}
html.dark-mode .share-tip {
    background: #2a261e !important;
    border-left-color: #e6a040 !important;
    color: #d4a574 !important;
}
html.dark-mode .copy-btn {
    color: #667088 !important;
}
html.dark-mode .detail-row.highlight {
    border-top-color: #333a4d !important;
}
html.dark-mode .error-message {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f5b5b5 !important;
}

/* ── Checkout Fail page ─────────────────────────── */
html.dark-mode .checkout-fail {
    background: linear-gradient(135deg, #1a1215 0%, #151922 50%, #1a1215 100%) !important;
}
html.dark-mode .checkout-fail .card.summary {
    background: #1e2230 !important;
    border-color: #5c2828 !important;
    box-shadow: 0 10px 40px rgba(239,68,68,.08) !important;
}
html.dark-mode .checkout-fail h2 {
    color: #f87171 !important;
}
html.dark-mode .fail-message {
    color: #9aa5b8 !important;
}
html.dark-mode .fail-icon {
    background: #2d1b1b !important;
}
html.dark-mode .fail-tips {
    background: #2a261e !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .fail-tips h4 {
    color: #d4a574 !important;
}
html.dark-mode .fail-tips li {
    color: #c4a56a !important;
}
html.dark-mode .fail-actions .cta.secondary {
    background: #2a3045 !important;
    color: var(--text-dark) !important;
    border-color: #333a4d !important;
}
html.dark-mode .fail-actions .cta.secondary:hover:not(:disabled) {
    background: #343b52 !important;
}

/* Blazor error UI */
html.dark-mode #blazor-error-ui {
    background: #2a261e;
    color: var(--text-dark);
}

/* Blazor reconnect modal */
#components-reconnect-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9000;
    background: rgba(0, 0, 0, .45);
    align-items: center;
    justify-content: center;
}
#components-reconnect-modal.components-reconnect-show {
    display: flex;
}
.reconnect-content {
    background: #fff;
    color: #0d2545;
    border-radius: var(--radius);
    padding: 2rem 2.5rem;
    max-width: 420px;
    width: 90%;
    box-shadow: var(--shadow-lg);
    text-align: center;
}
.reconnect-title {
    font-weight: 700;
    font-size: 1.15rem;
    margin: 0 0 .5rem;
}
.reconnect-body {
    margin: 0 0 .75rem;
    font-size: .95rem;
}
.reconnect-refresh {
    margin: 0;
    font-size: .9rem;
    color: var(--text-muted);
}
.reconnect-refresh a {
    color: var(--brand-dark);
    font-weight: 600;
    text-decoration: underline;
}
html.dark-mode .reconnect-content {
    background: #1e2230;
    color: #e8eaf0;
}
html.dark-mode .reconnect-refresh {
    color: #9aa3b8;
}
html.dark-mode .reconnect-refresh a {
    color: var(--brand);
}

/* Book Builder panel inputs & placeholders */
html.dark-mode .bb-panel .input,
html.dark-mode .bb-panel select {
    background: #181c28 !important;
    background-color: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}

html.dark-mode .bb-panel .input:focus,
html.dark-mode .bb-panel select:focus {
    border-color: var(--brand) !important;
    background: #1e2230 !important;
}

html.dark-mode .img-col {
    background: linear-gradient(145deg, #1a1e2a 0%, #181c28 100%) !important;
}

html.dark-mode .char-img-wrapper {
    --spinner-ring: rgba(255,255,255,.15);
    --spinner-arc: rgba(255,255,255,.5);
}

html.dark-mode .bb-processing-overlay {
    background: rgba(17,21,32,.92) !important;
}

html.dark-mode .bb-edit-row {
    background: linear-gradient(135deg, #2e3548 0%, #283042 100%) !important;
    border-color: #3d4a60 !important;
}

html.dark-mode .bb-edit-row:hover {
    border-color: #475569 !important;
}

html.dark-mode .bb-edit-thumb {
    border-color: #334155 !important;
}

html.dark-mode .bb-edit-name,
html.dark-mode .bb-edit-gender {
    background: #111520 !important;
    border-color: #334155 !important;
    color: #e8e4dd !important;
}

html.dark-mode .bb-edit-name:focus,
html.dark-mode .bb-edit-gender:focus {
    background: #111520 !important;
    border-color: #a89880 !important;
    color: #e8e4dd !important;
    box-shadow: 0 0 0 3px rgba(168,152,128,.15) !important;
}

html.dark-mode .bb-edit-name::placeholder {
    color: #64748b !important;
}

/* WaitForCharactersModal button */
html.dark-mode .modal .btn.secondary {
    background: #2a3045 !important;
    color: #e8e4dd !important;
}

html.dark-mode .modal .btn.secondary:hover {
    background: #343b52 !important;
}

html.dark-mode .bb-sub,
html.dark-mode .small {
    color: var(--text-muted) !important;
}

/* ══════════════════════════════════════════════════════════
   ORDERS PAGE
   ══════════════════════════════════════════════════════════ */
html.dark-mode .orders-page {
    background-color: var(--bg-light) !important;
}
html.dark-mode .orders-page .card {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
}
html.dark-mode .orders-page .intro-card {
    background: linear-gradient(135deg, #1a1e2a 0%, #1e2230 100%) !important;
    border-color: #2a3040 !important;
}
html.dark-mode .orders-page .intro-card p {
    color: var(--text-muted) !important;
}
html.dark-mode .sec-title {
    color: var(--text-dark) !important;
}
html.dark-mode .search-input {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .search-input::placeholder {
    color: #667088 !important;
}
html.dark-mode .search-icon,
html.dark-mode .search-clear {
    color: #667088 !important;
}
html.dark-mode .search-results,
html.dark-mode .no-results {
    color: var(--text-muted) !important;
}
html.dark-mode .order-table th {
    color: var(--text-muted) !important;
    border-bottom-color: #2a3040 !important;
}
html.dark-mode .order-table td {
    border-bottom-color: #1e2230 !important;
}
html.dark-mode .order-table tbody tr:hover:not(.order-details) {
    background: #1a1e2a !important;
}
html.dark-mode .order-table tbody tr.expanded {
    background: #181c28 !important;
}
html.dark-mode .order-nr {
    color: var(--text-dark) !important;
}
/* Status badges */
html.dark-mode .pay-status.paid {
    background: #1a3328 !important;
    color: #4ade80 !important;
    border-color: #2d5a3f !important;
}
html.dark-mode .pay-status.pending {
    background: #2a261e !important;
    color: #fbbf24 !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .pay-status.failed,
html.dark-mode .pay-status.cancelled {
    background: #2d1b1b !important;
    color: #f87171 !important;
    border-color: #5c2828 !important;
}
html.dark-mode .delivery-status {
    background: #1e2230 !important;
    color: var(--text-muted) !important;
    border-color: #333a4d !important;
}
/* Detail sections */
html.dark-mode .order-details {
    background: #151922 !important;
}
html.dark-mode .order-details > td {
    border-bottom-color: #2a3040 !important;
}
html.dark-mode .detail-section {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
}
html.dark-mode .detail-section h4 {
    color: var(--text-muted) !important;
}
html.dark-mode .detail-section address {
    color: var(--text-dark) !important;
}
html.dark-mode .detail-section.order-remark p {
    color: var(--text-muted) !important;
}
html.dark-mode .empty-value {
    color: #667088 !important;
}
html.dark-mode .peecho-label {
    color: var(--text-muted) !important;
}
html.dark-mode .peecho-value {
    color: var(--text-dark) !important;
}
html.dark-mode .peecho-status {
    background: rgba(255,255,255,.04) !important;
    border-color: #333a4d !important;
}
html.dark-mode .peecho-status.good {
    background: #1a3328 !important;
    border-color: #2d5a3f !important;
    color: #4ade80 !important;
}
html.dark-mode .peecho-status.bad {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f87171 !important;
}
/* Action buttons */
html.dark-mode .order-action-btn.details-btn {
    background: #333a4d !important;
    border-color: #333a4d !important;
}
html.dark-mode .order-action-btn.details-btn:hover {
    background: #404860 !important;
}
html.dark-mode .order-action-btn.invoice-btn {
    background: #1a3328 !important;
    border-color: #2d5a3f !important;
    color: #4ade80 !important;
}
html.dark-mode .order-action-btn.delete-btn {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f87171 !important;
}
/* Orders optin */
html.dark-mode .orders-page .optin-pane {
    background: #1a1e2a !important;
    border-color: #2a3040 !important;
}
html.dark-mode .optin-intro,
html.dark-mode .optin-check span {
    color: var(--text-dark) !important;
}
html.dark-mode .optin-note,
html.dark-mode .save-indicator {
    color: var(--text-muted) !important;
}
html.dark-mode .loading-state p,
html.dark-mode .empty-state p {
    color: var(--text-muted) !important;
}
html.dark-mode .empty-icon {
    color: #333a4d !important;
}

/* ══════════════════════════════════════════════════════════
   ORDER TRACKING PAGE
   ══════════════════════════════════════════════════════════ */
html.dark-mode .tracking-page {
    background: linear-gradient(135deg, #111520 0%, #151922 50%, #111520 100%) !important;
}
html.dark-mode .tracking-card {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
    box-shadow: 0 10px 40px rgba(0,0,0,.30) !important;
}
html.dark-mode .tracking-header {
    background: linear-gradient(180deg, #1a1e2a, #1e2230) !important;
    border-bottom-color: #2a3040 !important;
}
html.dark-mode .tracking-header h1 {
    color: var(--text-dark) !important;
}
html.dark-mode .tracking-header h1 em {
    color: #a78bfa !important;
}
html.dark-mode .tracking-subtitle {
    color: var(--text-muted) !important;
}
html.dark-mode .current-phase-badge {
    background: #2d2556 !important;
    color: #c4b5fd !important;
}
html.dark-mode .timeline-content h3 {
    color: var(--text-dark) !important;
}
html.dark-mode .timeline-step.upcoming .timeline-content h3 {
    color: #4a5268 !important;
}
html.dark-mode .timeline-content p {
    color: var(--text-muted) !important;
}
html.dark-mode .timeline-step.upcoming .timeline-content p {
    color: #4a5268 !important;
}
html.dark-mode .timeline-step.upcoming .marker-circle {
    background: #1a1e2a !important;
    border-color: #333a4d !important;
}
html.dark-mode .empty-dot {
    background: #333a4d !important;
}
html.dark-mode .timeline-step.upcoming .timeline-line,
html.dark-mode .timeline-step.failed .timeline-line {
    background: #2a3040 !important;
}
html.dark-mode .step-detail {
    color: #c4b5fd !important;
    background: #2d2556 !important;
}
html.dark-mode .tracking-info {
    background: #1a3328 !important;
    border-color: #2d5a3f !important;
}
html.dark-mode .tracking-code code {
    color: #4ade80 !important;
    background: #1a3328 !important;
}
html.dark-mode .tracking-footer {
    background: #1a1e2a !important;
    border-top-color: #2a3040 !important;
}
html.dark-mode .footer-note {
    color: var(--text-muted) !important;
}
html.dark-mode .status-icon.error {
    background: #2d1b1b !important;
}
html.dark-mode .error-text {
    color: var(--text-muted) !important;
}

/* ══════════════════════════════════════════════════════════
   GIFT CARD PURCHASE PAGE
   ══════════════════════════════════════════════════════════ */
html.dark-mode .giftcard-page {
    background: linear-gradient(135deg, #111520 0%, #151922 100%) !important;
}
html.dark-mode .step-card {
    background: #1e2230 !important;
    box-shadow: 0 4px 20px rgba(0,0,0,.20) !important;
}
html.dark-mode .step-header h2 {
    color: var(--text-dark) !important;
}
html.dark-mode .amount-btn {
    border-color: #333a4d !important;
    background: #1e2230 !important;
    color: var(--text-dark) !important;
}
html.dark-mode .amount-btn:hover {
    border-color: #6366f1 !important;
    background: #252a3a !important;
}
html.dark-mode .amount-btn.selected {
    background: linear-gradient(135deg, #6366f1, #8b5cf6) !important;
    color: white !important;
}
html.dark-mode .custom-amount {
    border-color: #333a4d !important;
}
html.dark-mode .custom-amount.active {
    border-color: #6366f1 !important;
    background: #252a3a !important;
}
html.dark-mode .custom-amount label {
    color: var(--text-muted) !important;
}
html.dark-mode .input-wrapper .currency {
    color: var(--text-dark) !important;
}
html.dark-mode .amount-preview {
    background: #1a3328 !important;
    color: #4ade80 !important;
}
html.dark-mode .form-group label {
    color: var(--text-dark) !important;
}
html.dark-mode .form-group input,
html.dark-mode .form-group textarea {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .form-group small {
    color: var(--text-muted) !important;
}
html.dark-mode .summary-card {
    background: linear-gradient(135deg, #2a261e 0%, #28241c 100%) !important;
    border-color: #4a3c28 !important;
}
html.dark-mode .summary-row {
    color: var(--text-dark) !important;
}
html.dark-mode .summary-row.total {
    border-top-color: #4a3c28 !important;
}
html.dark-mode .summary-row.total strong {
    color: #4ade80 !important;
}
html.dark-mode .payment-info {
    color: var(--text-muted) !important;
}
html.dark-mode .payment-methods {
    color: var(--text-muted) !important;
}
html.dark-mode .success-card,
html.dark-mode .processing-card,
html.dark-mode .disabled-card {
    background: #1e2230 !important;
    box-shadow: 0 4px 30px rgba(0,0,0,.25) !important;
}
html.dark-mode .success-card h2 {
    color: #4ade80 !important;
}
html.dark-mode .success-card p,
html.dark-mode .processing-card p {
    color: var(--text-muted) !important;
}
html.dark-mode .btn-secondary {
    background: #2a3045 !important;
    color: var(--text-dark) !important;
    border-color: #333a4d !important;
}
html.dark-mode .btn-secondary:hover {
    background: #343b52 !important;
}

/* ══════════════════════════════════════════════════════════
   TESTIMONIALS & REVIEW FORM
   ══════════════════════════════════════════════════════════ */
html.dark-mode .testimonial-card {
    border-color: #2a3040 !important;
    background: #1e2230 !important;
}
html.dark-mode .stats-carousel-btn {
    background: #1e2230 !important;
    border-color: #333a4d !important;
}
html.dark-mode .review-form-card {
    background: #1e2230 !important;
}
html.dark-mode .review-input,
html.dark-mode .review-textarea {
    border-color: #333a4d !important;
    background: #181c28 !important;
    color: var(--text-dark) !important;
}
html.dark-mode .review-input:focus,
html.dark-mode .review-textarea:focus {
    border-color: var(--brand) !important;
    background: #1e2230 !important;
}
html.dark-mode .review-error {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f5b5b5 !important;
}
html.dark-mode .star-label {
    color: #333a4d !important;
}
html.dark-mode .star-label.filled,
html.dark-mode .star-label.hovered {
    color: #f59e0b !important;
}

/* ══════════════════════════════════════════════════════════
   MODALS (Login, Register, Forgot, Credits, Confirm, Wait)
   ══════════════════════════════════════════════════════════ */
html.dark-mode .credits-modal {
    background: #1e2230 !important;
    box-shadow: 0 6px 22px rgba(0,0,0,.35) !important;
}
html.dark-mode .social-btn {
    background: #1e2230 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .social-btn:hover {
    background: #252a3a !important;
    border-color: #404860 !important;
}
html.dark-mode .modal-error,
html.dark-mode .auth-error {
    background-color: #2d1b1b !important;
    color: #f5b5b5 !important;
}
html.dark-mode .or-divider {
    background: #2a3040 !important;
    color: var(--text-muted) !important;
}

/* ══════════════════════════════════════════════════════════
   STORY READ PAGE — dark mode global overrides
   (scoped CSS handles most via CSS variables; these catch
    Blazor specificity edge cases with !important)
   ══════════════════════════════════════════════════════════ */
html.dark-mode .story-reader {
    background-color: #0d1017 !important;
}

html.dark-mode .sr-nav {
    background: rgba(18, 21, 30, .88) !important;
    border-color: rgba(255,255,255,.06) !important;
}

/* Nav/footer buttons sit in the dark area — need light text */
html.dark-mode .sr-nav .sr-btn,
html.dark-mode .sr-footer .sr-btn {
    color: #e0dbd2 !important;
}

html.dark-mode .sr-nav-arrow {
    background: rgba(255,255,255,.08) !important;
}

html.dark-mode .sr-icon-btn {
    background: rgba(255,255,255,.08) !important;
}

html.dark-mode .sr-progress {
    color: #9aa5b8 !important;
}

html.dark-mode .sr-btn.secondary {
    background: #2a3040 !important;
    color: #d4cfc6 !important;
}

/* ══════════════════════════════════════════════════════════
   ERROR PAGE
   ══════════════════════════════════════════════════════════ */
html.dark-mode .error-page {
    background: linear-gradient(135deg, #111520 0%, #151922 100%) !important;
}
html.dark-mode .error-container {
    background: #1e2230 !important;
}

/* ══════════════════════════════════════════════════════════
   SITE HEADER — mobile menu
   ══════════════════════════════════════════════════════════ */
html.dark-mode .mobile-menu {
    background: #1e2230 !important;
    box-shadow: -4px 0 14px rgba(0,0,0,.40) !important;
}
html.dark-mode .mobile-menu a:hover,
html.dark-mode .mobile-menu a:active {
    background-color: rgba(255,255,255,.05) !important;
}
html.dark-mode .burger:active {
    background-color: rgba(255,255,255,.05) !important;
}

/* ══════════════════════════════════════════════════════════
   ACCOUNT SETTINGS PAGE
   ══════════════════════════════════════════════════════════ */
html.dark-mode .account-page {
    background: var(--bg-light) !important;
}
html.dark-mode .account-page .card {
    background: #1e2230 !important;
    border-color: #2a3040 !important;
    box-shadow: 0 6px 22px rgba(0,0,0,.28) !important;
}
html.dark-mode .account-page .card-description {
    color: var(--text-muted) !important;
}
html.dark-mode .account-page .status-badge.active {
    background: #1a3328 !important;
    color: #4ade80 !important;
}
html.dark-mode .account-page .quick-link {
    background: rgba(255,255,255,.04) !important;
}
html.dark-mode .account-page .quick-link:hover {
    background: rgba(255,255,255,.08) !important;
}
html.dark-mode .account-page .link-text {
    color: var(--text-dark) !important;
}
/* Privacy — data export */
html.dark-mode .privacy-action-item {
    background: #181c28 !important;
    border-color: #333a4d !important;
}
html.dark-mode .privacy-action-item h3 {
    color: var(--text-dark) !important;
}
html.dark-mode .privacy-action-item p {
    color: var(--text-muted) !important;
}
html.dark-mode .export-error {
    background: #2d1b1b !important;
    border-color: #5c2828 !important;
    color: #f5b5b5 !important;
}
html.dark-mode .export-success {
    background: #1a3328 !important;
    border-color: #2d5a3f !important;
    color: #4ade80 !important;
}
/* Danger zone */
html.dark-mode .danger-card {
    background: #1e1518 !important;
    border-color: #5c2828 !important;
}
html.dark-mode .danger-title {
    color: #f87171 !important;
    border-bottom-color: #5c2828 !important;
}
html.dark-mode .danger-content {
    color: var(--text-dark) !important;
}
html.dark-mode .danger-warning {
    background: #2d1b1b !important;
    border-left-color: #ef4444 !important;
    color: #fecaca !important;
}
html.dark-mode .danger-warning strong {
    color: #fca5a5 !important;
}
html.dark-mode .danger-details {
    color: var(--text-dark) !important;
}
html.dark-mode .danger-details li::before {
    color: #f87171 !important;
}
html.dark-mode .delete-confirm-box {
    background: #1e2230 !important;
    border-color: #5c2828 !important;
}
html.dark-mode .confirm-prompt {
    color: var(--text-dark) !important;
}
html.dark-mode .confirm-input {
    background: #181c28 !important;
    border-color: #333a4d !important;
    color: var(--text-dark) !important;
}
html.dark-mode .confirm-input:focus {
    border-color: #ef4444 !important;
}
html.dark-mode .confirm-input::placeholder {
    color: #667088 !important;
}
html.dark-mode .confirm-actions .btn.secondary {
    background: #2a3045 !important;
    color: var(--text-dark) !important;
}
html.dark-mode .confirm-actions .btn.secondary:hover {
    background: #343b52 !important;
}
html.dark-mode .account-page .error-message {
    background: #2d1b1b !important;
    color: #f5b5b5 !important;
}

/* ================================================================
   RESET & BASIS
================================================================ */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    -webkit-scroll-snap-type: y proximity;
    -ms-scroll-snap-type: y proximity;
    scroll-snap-type: y proximity;
    /* Safe area insets for notched devices */
    padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
    html.no-snap {
        -webkit-scroll-snap-type: none !important;
        -ms-scroll-snap-type: none !important;
        scroll-snap-type: none !important; 
    }
body {
    font-family: 'Poppins', sans-serif;
    font-size: var(--font-base);
    line-height: 1.6;
    color: var(--text-dark);
    background: #fff;
    /* Safari iOS momentum scrolling */
    -webkit-overflow-scrolling: touch;
    /* Prevent text size adjustment on orientation change */
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body.story-reading {
    height: 100vh;
    overflow: hidden;
}
.muis { cursor: pointer; }

/* ================================================================
   PREFERS-REDUCED-MOTION
   Respecteert gebruikers die minder beweging willen
================================================================ */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    
    html {
        scroll-behavior: auto;
    }
}



.fullscreen {
    min-height: calc(100vh - var(--header-height));
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.fullscreen {
    scroll-snap-align: start; 
}
footer {
    scroll-snap-align: end; 
    scroll-snap-stop: always;
}
@media (min-width: 768px) { 
    .fullscreen {
        min-height: calc(100vh - var(--header-height));
    }
}
.linkBtn {text-decoration: none;}
/* ================================================================
   TYPO
================================================================ */
h1, h2, h3 {
    font-weight: 700;
    color: var(--text-dark);
    line-height: 1.2;
}

h1 {
    font-size: var(--font-2xl);
}

h2 {
    font-size: var(--font-xl);
    margin-bottom: .8rem;
}

h3 {
    font-size: var(--font-lg);
    margin-bottom: .6rem;
}
.exampleLink 
{ 
    text-decoration:none; 
    color: var(--text-dark); 
}
.exampleLink:hover
{ 
   color: var(--text-darker); 
}
/* ================================================================
   SECTIES
   – padding
   – scroll-offset voor sticky header
================================================================ */
section {
    padding: 3rem 1rem;
    /* ⇩ zorgt dat anchors (#customiser) niet onder de header verdwijnen */
    scroll-margin-top: calc(var(--header-height) + 12px);
}

/* ================================================================
   FORMS / INPUTS
================================================================ */
input,
select,
textarea {
    width: 100%;
    padding: .65rem .9rem;
    margin-top: .4rem;
    border: 1px solid #ccc;
    border-radius: var(--radius);
    font: 1rem 'Poppins', sans-serif;
}

/* ================================================================
   CTA-BUTTONS
   Minimum touch target: 44x44px voor accessibility
================================================================ */
.cta {
    background: var(--brand);
    color: #fff;
    border: none;
    cursor: pointer;
    padding: .9rem 2rem;
    border-radius: var(--radius);
    font-size: var(--font-base);
    font-weight: 500;
    min-height: var(--touch-target);
    transition: box-shadow var(--transition-fast), 
                transform var(--transition-fast),
                background-color var(--transition-fast);
    margin-top: var(--space-sm);
    /* Prevent text selection on rapid taps */
    -webkit-user-select: none;
    user-select: none;
    /* Better tap highlighting on mobile */
    -webkit-tap-highlight-color: transparent;
}

    .cta:hover {
        box-shadow: var(--shadow);
        transform: translateY(-2px);
    }
    
    .cta:active {
        transform: translateY(0);
        background: var(--brand-dark);
    }

    .cta.secondary {
        background: var(--text-dark);
    }
    
    .cta.secondary:active {
        background: var(--text-darker);
    }

    .cta.third {
        background: var(--bg-clear);
        color: var(--text-dark);
        border: 1.5px solid var(--text-dark);
    }
    
    .cta.third:active {
        background: #f5f5f5;
    }

/* ================================================================
HERO — Warm "enchanted forest glow" design
================================================================ */
.hero {
    position: relative;
    background:
        radial-gradient(ellipse at 15% 25%, rgba(255,215,150,.25) 0%, transparent 50%),
        radial-gradient(ellipse at 85% 50%, rgba(230,190,140,.18) 0%, transparent 50%),
        radial-gradient(ellipse at 40% 80%, rgba(120,140,80,.08) 0%, transparent 40%),
        radial-gradient(ellipse at 50% 115%, rgba(255,240,215,.35) 0%, transparent 45%),
        linear-gradient(175deg, #937250 0%, #a38362 25%, #b49474 50%, #cbac88 75%, #dbc09a 100%);
    padding: 0;
    overflow: hidden;
}

/* Warm golden glow orb top-left */
.hero::before {
    content: "";
    position: absolute;
    top: -10%;
    left: -8%;
    width: 550px;
    height: 550px;
    background: radial-gradient(circle, rgba(255,220,160,.24) 0%, rgba(255,195,120,.10) 45%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
    animation: hero-orb-drift 8s ease-in-out infinite alternate;
}

/* Soft cream glow bottom-right */
.hero::after {
    content: "";
    position: absolute;
    bottom: -5%;
    right: -8%;
    width: 420px;
    height: 420px;
    background: radial-gradient(circle, rgba(255,245,220,.16) 0%, transparent 60%);
    border-radius: 50%;
    pointer-events: none;
    animation: hero-orb-drift 10s ease-in-out infinite alternate-reverse;
}

@keyframes hero-orb-drift {
    from { transform: translate(0, 0); }
    to   { transform: translate(12px, 8px); }
}

.hero-inner {
    max-width: 1000px;
    margin: 0 auto;
    padding: clamp(3rem, 8vh, 5rem) var(--space-sm) clamp(5rem, 12vh, 7rem);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--space-xl);
    position: relative;
    z-index: 1;
}

/* ── Side vine/branch decorations ────────────────────── */
.hero-foliage {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

/* Left vine — organic branch shape */
.hero-foliage::before {
    content: "";
    position: absolute;
    top: 10%;
    left: -30px;
    width: 120px;
    height: 300px;
    background:
        radial-gradient(ellipse at 30% 20%, rgba(90,120,55,.14) 0%, transparent 60%),
        radial-gradient(ellipse at 50% 60%, rgba(80,110,50,.10) 0%, transparent 55%),
        radial-gradient(ellipse at 20% 85%, rgba(100,130,60,.12) 0%, transparent 50%);
    border-radius: 0 60% 40% 0;
    filter: blur(6px);
    animation: hero-vine-sway 10s ease-in-out infinite alternate;
}

/* Right vine — mirrored organic shape */
.hero-foliage::after {
    content: "";
    position: absolute;
    top: 5%;
    right: -25px;
    width: 110px;
    height: 260px;
    background:
        radial-gradient(ellipse at 70% 25%, rgba(100,130,60,.12) 0%, transparent 55%),
        radial-gradient(ellipse at 50% 70%, rgba(85,115,50,.10) 0%, transparent 55%),
        radial-gradient(ellipse at 80% 90%, rgba(90,120,55,.08) 0%, transparent 50%);
    border-radius: 60% 0 0 40%;
    filter: blur(6px);
    animation: hero-vine-sway 12s ease-in-out infinite alternate-reverse;
}

@keyframes hero-vine-sway {
    from { transform: translateY(0) scaleY(1); }
    to   { transform: translateY(8px) scaleY(1.03); }
}

/* ── Fireflies — ambient glowing particles ───────────── */
.hero-fireflies {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}

.firefly {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: rgba(255,220,100,.85);
    box-shadow:
        0 0 6px 2px rgba(255,210,80,.50),
        0 0 14px 4px rgba(255,200,60,.25);
    will-change: transform, opacity;
}

.ff-1 {
    top: 20%;  left: 12%;
    animation: ff-drift-1 8s ease-in-out infinite, ff-glow 3s ease-in-out infinite;
}
.ff-2 {
    top: 55%;  left: 8%;
    animation: ff-drift-2 10s ease-in-out infinite, ff-glow 4s ease-in-out infinite .8s;
}
.ff-3 {
    top: 35%;  right: 15%;
    animation: ff-drift-3 9s ease-in-out infinite, ff-glow 3.5s ease-in-out infinite 1.5s;
}
.ff-4 {
    top: 70%;  right: 10%;
    width: 3px; height: 3px;
    animation: ff-drift-4 11s ease-in-out infinite, ff-glow 4.5s ease-in-out infinite 2s;
}
.ff-5 {
    top: 15%;  right: 30%;
    width: 3px; height: 3px;
    animation: ff-drift-5 7s ease-in-out infinite, ff-glow 3s ease-in-out infinite 1s;
}
.ff-6 {
    top: 75%;  left: 25%;
    width: 3px; height: 3px;
    animation: ff-drift-6 12s ease-in-out infinite, ff-glow 5s ease-in-out infinite .5s;
}

/* Glow pulse — fading in and out like real fireflies */
@keyframes ff-glow {
    0%, 100% { opacity: .15; }
    30%      { opacity: .9; }
    50%      { opacity: .6; }
    70%      { opacity: 1; }
}

/* Each firefly has a unique drift path */
@keyframes ff-drift-1 {
    0%   { transform: translate(0, 0); }
    25%  { transform: translate(18px, -12px); }
    50%  { transform: translate(-8px, -20px); }
    75%  { transform: translate(12px, 5px); }
    100% { transform: translate(0, 0); }
}
@keyframes ff-drift-2 {
    0%   { transform: translate(0, 0); }
    25%  { transform: translate(-15px, 10px); }
    50%  { transform: translate(10px, 18px); }
    75%  { transform: translate(-20px, -5px); }
    100% { transform: translate(0, 0); }
}
@keyframes ff-drift-3 {
    0%   { transform: translate(0, 0); }
    33%  { transform: translate(14px, 15px); }
    66%  { transform: translate(-12px, -8px); }
    100% { transform: translate(0, 0); }
}
@keyframes ff-drift-4 {
    0%   { transform: translate(0, 0); }
    25%  { transform: translate(-10px, -18px); }
    50%  { transform: translate(20px, -10px); }
    75%  { transform: translate(-5px, 12px); }
    100% { transform: translate(0, 0); }
}
@keyframes ff-drift-5 {
    0%   { transform: translate(0, 0); }
    50%  { transform: translate(-16px, 10px); }
    100% { transform: translate(0, 0); }
}
@keyframes ff-drift-6 {
    0%   { transform: translate(0, 0); }
    33%  { transform: translate(10px, -14px); }
    66%  { transform: translate(-8px, 8px); }
    100% { transform: translate(0, 0); }
}

/* Reduce to 3 fireflies on mobile for battery/simplicity */
@media (max-width: 767px) {
    .ff-4, .ff-5, .ff-6 {
        display: none;
    }
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
    .firefly {
        animation: none !important;
        opacity: .4;
    }
}

/* ── Wave transition to next section ─────────────────── */
.hero-wave {
    position: absolute;
    bottom: -1px;
    left: 0;
    right: 0;
    height: 60px;
    background: var(--bg-section-alt);
    clip-path: ellipse(55% 100% at 50% 100%);
    z-index: 2;
}

/* ── Text ────────────────────────────────────────────── */
.hero-text {
    max-width: 520px;
}

.hero-text h1 {
    color: #fff;
    margin-bottom: .6rem;
    text-shadow: 0 1px 8px rgba(80,50,20,.30);
}

.hero-subtitle {
    color: rgba(255,252,245,.88);
    line-height: 1.6;
    font-size: var(--font-base);
}

/* ── Book cover ──────────────────────────────────────── */
.hero-book {
    position: relative;
    flex: 0 0 auto;
}

.hero-book__img {
    width: 240px;
    height: auto;
    border-radius: var(--radius-sm, 10px);
    filter: drop-shadow(0 8px 32px rgba(100,60,20,.25))
            drop-shadow(0 3px 12px rgba(60,30,0,.20));
    transition: transform var(--transition-base, 300ms ease);

    /* ── Hidden state before image load ── */
    opacity: 0;
    transform: translateY(30px) scale(.92);
}

/* ── Revealed state: float up + fade in ── */
.hero-book.revealed .hero-book__img {
    animation: book-reveal .9s cubic-bezier(.16,1,.3,1) forwards,
               book-shimmer 1.6s .7s ease-out forwards;
}

@keyframes book-reveal {
    0%   { opacity: 0; transform: translateY(30px) scale(.92); }
    100% { opacity: 1; transform: translateY(0)    scale(1);   }
}

@keyframes book-shimmer {
    0%   { filter: drop-shadow(0 8px 32px rgba(100,60,20,.25))
                   drop-shadow(0 3px 12px rgba(60,30,0,.20))
                   drop-shadow(0 0 0 rgba(255,215,100,0)); }
    40%  { filter: drop-shadow(0 8px 32px rgba(100,60,20,.25))
                   drop-shadow(0 3px 12px rgba(60,30,0,.20))
                   drop-shadow(0 0 40px rgba(255,215,100,.45)); }
    100% { filter: drop-shadow(0 8px 32px rgba(100,60,20,.25))
                   drop-shadow(0 3px 12px rgba(60,30,0,.20))
                   drop-shadow(0 0 0 rgba(255,215,100,0)); }
}

/* Hover: only when revealed to prevent flicker on empty state */
.hero-book.revealed:hover .hero-book__img {
    transform: scale(1.04) rotate(-1.5deg) translateY(-4px);
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
    .hero-book__img { opacity: 1; transform: none; }
    .hero-book.revealed .hero-book__img { animation: none; opacity: 1; transform: none; }
}

/* Golden halo behind the book */
.hero-book::before {
    content: "";
    position: absolute;
    inset: -18% -22%;
    background: radial-gradient(ellipse, rgba(255,215,150,.28) 0%, rgba(255,195,110,.10) 45%, transparent 70%);
    border-radius: 50%;
    z-index: -1;
    animation: hero-glow 4s ease-in-out infinite alternate;
}

@keyframes hero-glow {
    from { opacity: .6; transform: scale(.95); }
    to   { opacity: 1;  transform: scale(1.05); }
}

/* ── CTA holder ──────────────────────────────────────── */
.hero .cta-holder {
    display: flex;
    flex-direction: column;
    gap: .65rem;
    width: 100%;
    align-items: stretch;
    margin-top: var(--space-md);
}

.hero .cta-holder .cta {
    width: 100%;
    margin-top: 0;
    text-align: center;
    font-weight: 600;
    border: 2px solid rgba(255,255,255,.45);
}

.hero .cta-holder .cta:hover {
    border-color: rgba(255,255,255,.70);
}

.hero .cta-holder .cta i {
    margin-right: .4rem;
}

/* Secondary CTA in hero: solid warm dark button */
.hero-cta-secondary {
    background: rgba(60,38,20,.55) !important;
    color: #fff !important;
    border: 2px solid rgba(255,255,255,.35) !important;
    backdrop-filter: blur(6px);
}

.hero-cta-secondary:hover {
    background: rgba(60,38,20,.70) !important;
    border-color: rgba(255,255,255,.55) !important;
}

/* ── Hero trust signals ──────────────────────────────── */
.hero-trust {
    display: flex;
    gap: 1.4rem;
    margin-top: var(--space-md);
    justify-content: center;
}

.hero-trust span {
    display: flex;
    align-items: center;
    gap: .35rem;
    font-size: var(--font-xs, .82rem);
    color: rgba(255,252,245,.88);
}

.hero-trust i {
    color: rgba(255,230,170,.95);
    font-size: .9rem;
}

/* ── Legacy cover classes (kept for other pages) ─────── */
.hero-cover__coverImage,
.hero-cover__coverTitle,
.hero-cover__title,
.hero-cover__subtitle {
    display: none;
}

.purchase {
    background: var(--bg-clear);
    text-align: center;
}

.checkoutSection {
    display: flex;
    align-items: flex-start;
    text-align: left;
    flex-direction: column;
    background: var(--bg-light);
}

    .purchase .cta.big {
        font-size: 1.25rem;
        padding: 1.2rem 3rem;
    }

/* ---- TABLET+ ---- */
@media (min-width: 768px) {
    .hero-inner {
        flex-direction: row;
        text-align: left;
        gap: var(--space-xl);
        padding: clamp(4rem, 10vh, 6rem) clamp(2rem, 5vw, 4rem) clamp(5rem, 12vh, 7rem);
        align-items: center;
    }

    .hero-text {
        max-width: 480px;
        flex: 1 1 0;
    }

    .hero-book__img {
        width: 280px;
    }

    .hero .cta-holder {
        flex-direction: row;
        align-items: center;
        width: auto;
    }

    .hero .cta-holder .cta {
        width: auto;
        flex: 0 1 auto;
    }

    .hero-trust {
        justify-content: flex-start;
    }

    .hero-wave {
        height: 80px;
    }
}

/* ---- DESKTOP+ ---- */
@media (min-width: 1024px) {
    .hero-book__img {
        width: 320px;
    }

    .hero-wave {
        height: 100px;
    }
}

/* ---- MOBIEL: CTA’s onder elkaar ---- */
@media (max-width: 767px) {
    .characters-row {
        flex-direction: column;
    }
        .characters-row .character-block {
            flex: 1 1 100%; /* overschrijft basis:320px  */
            width: 100%; /* extra zekerheid           */
            margin-left: 0; /* optioneel: uitlijnen      */
            margin-right: 0; /* optioneel: uitlijnen      */
        }

        .characters-row .portal-block {
            flex: 1 1 100%; /* overschrijft basis:320px  */
            width: 100%; /* extra zekerheid           */
            margin-left: 0; /* optioneel: uitlijnen      */
            margin-right: 0; /* optioneel: uitlijnen      */
        }

    .hero .cta-holder {
        width: 100%;
        flex-direction: row;
        gap: .6rem;
    }

        .hero .cta-holder .cta {
            flex: 1 1 0;
        }
        
        .hero .cta-holder .cta i {
            display: none;
        }


    .hero-foliage::before,
    .hero-foliage::after {
        display: none;
    }
}

/* ================================================================
   CUSTOMISER
================================================================ */
.customiser {
    background: var(--bg-clear);
}

.customiser-sub {
    color: #555;
    margin-top: -.3rem;
    margin-bottom: 1.4rem;
}

.customiser .container {
    max-width: 1100px;
    margin: 0 auto;
}

/* blok */
.character-block {
    background: var(--card-bg);
    padding: 2rem;
    border-radius: var(--radius);
    margin-bottom: 2.2rem;
    box-shadow: var(--shadow);
}
.portal-block {
    padding: 2rem;
    padding-top: 0px;
    margin-bottom: 2.2rem;
}
.uploadProtagonist{

}
/* ================================================================
   CAROUSEL
================================================================ */
.carousel {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    margin-bottom: .9rem;
    margin-top: 0.9rem;
    position: relative;
}

    .carousel .arrow {
        border: none;
        background: none;
        font-size: 1.8rem;
        color: var(--text-dark);
        cursor: pointer;
        line-height: 1;
    }

    .carousel .char-img {
        width: 128px;
        height: 128px;
        border-radius: 50%;
        object-fit: cover;
        object-position: 50% 0%;
        box-shadow: 0 2px 6px rgba(0,0,0,.12);
    }

    .carousel .upload-btn {
        background: none;
        border: none;
        cursor: pointer;
        transition: transform .15s ease;
    }

        .carousel .upload-btn img {
            width: 80px;
            height: 120px;
            border-radius: 50%;
            opacity: .8;
        }

        .carousel .upload-btn:hover img {
            opacity: 1;
            transform: scale(1.05);
        }

        .carousel .upload-btn.selected img {
            outline: 3px solid var(--brand);
            opacity: 1;
        }

/* ================================================================
   2-koloms layout + CTA
================================================================ */
.characters-row {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    align-items: flex-start;
}

    .characters-row .character-block {
        flex: 1 1 320px;
    }
    .characters-row .portal-block {
        flex: 1 1 320px;
    }
.character-block,
.portal-block {
    display: flex; 
    flex-direction: column;
}
/* min-breedte */

/* ================================================================
   Algemene CTA-wrap (customiser)
================================================================ */
.cta-holder {
    flex: 0 0 260px;
    margin-top: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cta.big {
    font-size: 1.15rem;
    padding: 1.1rem 2.4rem;
}

/* ================================================================
   SITE HEADER
   Safari -webkit-sticky fix included
================================================================ */
.site-header {
    position: -webkit-sticky; /* Safari */
    position: sticky;
    top: 0;
    z-index: 3000;
    background: #fff;
    box-shadow: 0 4px 10px rgba(0,0,0,.08);
    transition: transform .2s ease-out, box-shadow .2s;
    height: var(--header-height);
}

    .site-header.hidden {
        transform: translateY(-100%);
    }

    .site-header .header-inner {
        width: 100%;
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: .9rem 1.6rem;
    }
    .site-header .btn-group {
        display: flex;
        gap: .8rem;
        margin-left: auto;
    }
    /* buttons in header compacter + geen extra top-marge */
    .site-header .cta {
        margin-top: 0;
        padding: .55rem 1.6rem;
        min-height: var(--touch-target);
    }

/* ---- Tablet+: betere padding ---- */
@media (min-width: 768px) {
    .site-header .header-inner {
        padding: .9rem clamp(1.5rem, 4vw, 3rem);
    }
}

/* ---- Mobiel: header altijd zichtbaar ---- */
@media (max-width: 767px) {
    .site-header.hidden {
        transform: none;
    }
}

#blazor-error-ui {
    display: none;
}

/* ════════════════════════════════════════════════════════════════════════════
   STORY PREVIEW
   ════════════════════════════════════════════════════════════════════════════ */
.story-preview {
    background: var(--bg-clear);
    text-align: center;
    padding: 3rem var(--space-sm);
    scroll-margin-top: calc(var(--header-height) + 12px);
}

@media (min-width: 768px) {
    .story-preview {
        padding: 3rem var(--space-lg);
    }
}

.story-preview .intro,
.story-preview .outro {
    max-width: 680px;
    margin: 0.8rem auto;
    line-height: 1.55;
    font-size: var(--font-base);
}

.characters-card {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: 1rem;
    margin: 1.8rem auto;
    flex-wrap: wrap;
}

@media (min-width: 640px) {
    .characters-card {
        gap: 1.5rem;
    }
}

.characters-card .char {
    border-radius: var(--radius);
}

.characters-card img {
    width: clamp(100px, 25vw, 160px);
    height: clamp(150px, 38vw, 240px);
    object-fit: contain;
    object-position: 50% 0;
    margin-top: 1.6rem;
}

.characters-card figcaption {
    font-weight: 600;
    color: var(--text-dark);
    font-size: var(--font-sm);
}

.characters-card .plus {
    font-size: 2rem;
        color: var(--brand);
    }

.char.env {
    position: relative;
}

    .char.env::before {
        content: "";
        position: absolute;
        inset: 0;
        border-radius: var(--radius);
        z-index: 0;
    }

    .char.env img {
        position: relative;
        z-index: 1;
    }
.bookRun-card .section-header {
    display: flex; 
    align-items: center; 
    gap: .75rem; 
}

    .bookRun-card .section-header h2 {
        margin: 0;
    }

    .bookRun-card .section-header .cta {
        margin-top: 0; 
        margin-left: auto; 
    }
.cta .spinner {
    display: inline-block;
    width: 1em;
    height: 1em;
    border: 2px solid rgba(255,255,255,.35);
    border-top-color: #fff;
    border-radius: 50%;
    margin-right: .6rem;
    animation: btnspin .8s linear infinite;
    vertical-align: -0.125em;
}

@keyframes btnspin {
    to {
        transform: rotate(360deg);
    }
}
.del-btn,
.icon-btn.danger {
    background: none;
    border: none;
    padding: .25rem;
    font-size: 2rem;
    line-height: 1;
    cursor: pointer;
    color: #e00000; 
}
@media (max-width: 540px) {
    .characters-card {
        flex-direction: column;
    }

        .characters-card .plus {
            display: none;
        }
}

.field {
    position: relative
}

.validation-message {
    position: absolute;
    left: auto;
    right: 0;
    text-align: right;
    top: -0.25rem;
    transform: translateY(-100%);
    background: #fde7e7;
    color: #0d2545;
    padding: .45rem .8rem;
    border-radius: 10px;
    font-size: .9rem;
    line-height: 1.25;
    max-width: 100%;
    box-shadow: 0 2px 6px rgba(0,0,0,.05);
    z-index: 2; 
}

    .validation-message::after {
        content: "";
        position: absolute;
        bottom: -6px;
        left: auto;
        right: 24px;
        width: 12px;
        height: 12px;
        background: #fde7e7;
        transform: rotate(45deg);
        box-shadow: 0 2px 4px rgba(0,0,0,.04);
    }

    .validation-message::before {
        display: none;
    }

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: scale(.92)
    }

    to {
        opacity: 1;
        transform: scale(1)
    }
}


.sweep-btn {
    background: linear-gradient(135deg, #6b4c30 0%, #7d5a3a 100%);
    color: #fff;
    border: none;
    padding: 0.9rem 2.2rem;
    font-size: 1.05rem;
    font-family: "Poppins", sans-serif;
    font-weight: 600;
    border-radius: 18px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: transform 0.15s, box-shadow 0.15s;
}

    .sweep-btn::before {
        content: "";
        position: absolute;
        top: 0;
        left: -75%;
        width: 50%;
        height: 100%;
        background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.45) 50%, transparent 100%);
        transform: skewX(-20deg);
        animation: sweep 3.2s ease-in-out infinite;
        pointer-events: none;
    }

@keyframes sweep {
    0% {
        left: -75%;
    }

    100% {
        left: 125%;
    }
}


.sweep-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(90,55,25,.25);
}

/* ================================================================
   ACCESSIBILITY: FOCUS STATES
   Cross-browser focus-visible support met fallback
================================================================ */
/* Fallback voor browsers zonder focus-visible support */
.cta:focus,
.btn:focus,
button:focus,
a:focus,
input:focus,
select:focus,
textarea:focus {
    outline: 2px solid var(--brand);
    outline-offset: 2px;
}

/* Moderne browsers: focus alleen tonen bij keyboard navigatie */
@supports selector(:focus-visible) {
    .cta:focus,
    .btn:focus,
    button:focus,
    a:focus {
        outline: none;
    }
    
    .cta:focus-visible,
    .btn:focus-visible,
    button:focus-visible,
    a:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible {
        outline: none;
        box-shadow: 0 0 0 3px rgba(255, 180, 77, 0.45),
                    0 0 12px rgba(255, 180, 77, 0.15);
        border-radius: var(--radius-sm, 4px);
    }
}

html.dark-mode :focus-visible {
    box-shadow: 0 0 0 3px rgba(200, 150, 50, 0.5),
                0 0 14px rgba(200, 150, 50, 0.12) !important;
}

/* Skip-to-content link voor screenreaders */
.skip-link {
    position: absolute;
    top: -100%;
    left: 50%;
    transform: translateX(-50%);
    background: var(--text-dark);
    color: #fff;
    padding: 0.75rem 1.5rem;
    border-radius: var(--radius);
    z-index: 9999;
    text-decoration: none;
    font-weight: 600;
}

.skip-link:focus {
    top: 1rem;
}

/* Verberg outline niet bij gevaarlijke knoppen */
.del-btn:focus,
.icon-btn.danger:focus {
    outline: 2px solid #e00000;
    outline-offset: 2px;
}

/* ================================================================
   CUSTOM SCROLLBAR — warm forest tones
   ================================================================ */
html {
    scrollbar-width: thin;
    scrollbar-color: #c4943a #f5efe6;
}

html.dark-mode {
    scrollbar-color: #6b5525 #111520;
}

::-webkit-scrollbar {
    width: 8px;
}

::-webkit-scrollbar-track {
    background: #f5efe6;
}

::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #d4a050, #b88530);
    border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(180deg, #c08a35, #a07020);
}

html.dark-mode ::-webkit-scrollbar-track {
    background: #111520;
}

html.dark-mode ::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #7a5a25, #5a4018);
    border-radius: 4px;
}

html.dark-mode ::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(180deg, #8a6a30, #6b5020);
}

/* ================================================================
   SMOOTH DARK MODE TRANSITION
   Cinematic colour fade when toggling dark/light.
   Only active after .theme-ready is set (prevents FOUC on page load
   and Blazor enhanced navigation DOM patches).
   ================================================================ */
html.theme-ready body,
html.theme-ready .site-header,
html.theme-ready section,
html.theme-ready .character-block,
html.theme-ready .portal-block,
html.theme-ready footer,
html.theme-ready .cta,
html.theme-ready input,
html.theme-ready select,
html.theme-ready textarea {
    transition: background-color 0.45s ease,
                color 0.35s ease,
                border-color 0.35s ease,
                box-shadow 0.35s ease;
}

/* Cards that get !important overrides in dark mode need transition too */
html.theme-ready .msg-card,
html.theme-ready .story-card,
html.theme-ready .purchase-card,
html.theme-ready .examples-card,
html.theme-ready .contact-card,
html.theme-ready .testimonial-card,
html.theme-ready .bb-panel {
    transition: background-color 0.45s ease,
                color 0.35s ease,
                box-shadow 0.35s ease !important;
}

/* ================================================================
   SCROLL REVEAL — fade & slide up on viewport entry
   Applied via JS IntersectionObserver (site-effects.js)
   ================================================================ */
.sr {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
                transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}

.sr-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger children slightly for natural cascade */
.sr:nth-child(2) { transition-delay: 80ms; }
.sr:nth-child(3) { transition-delay: 160ms; }
.sr:nth-child(4) { transition-delay: 240ms; }

/* ================================================================
   CARD SPOTLIGHT — mouse-following golden lantern glow
   Applied via JS mousemove (site-effects.js)
   ================================================================ */
.has-spotlight {
    position: relative;
}

.has-spotlight::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(
        circle 200px at var(--mx, -200px) var(--my, -200px),
        rgba(255, 200, 100, 0.07) 0%,
        transparent 100%
    );
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.35s ease;
    z-index: 1;
}

.has-spotlight:hover::after {
    opacity: 1;
}

html.dark-mode .has-spotlight::after {
    background: radial-gradient(
        circle 200px at var(--mx, -200px) var(--my, -200px),
        rgba(255, 200, 100, 0.05) 0%,
        transparent 100%
    );
}

/* ================================================================
   CTA SPARKLE — golden sparks on click
   Particles spawned via JS (site-effects.js)
   ================================================================ */
.cta-spark {
    position: absolute;
    width: var(--sz, 4px);
    height: var(--sz, 4px);
    border-radius: 50%;
    background: rgba(255, 220, 120, 0.95);
    box-shadow: 0 0 6px 1px rgba(255, 200, 80, 0.5);
    pointer-events: none;
    z-index: 10;
    animation: sparkFly 0.45s ease-out forwards;
}

@keyframes sparkFly {
    0% {
        transform: translate(0, 0) scale(1);
        opacity: 1;
    }
    100% {
        transform: translate(var(--tx, 0), var(--ty, 0)) scale(0);
        opacity: 0;
    }
}

html.dark-mode .cta-spark {
    background: rgba(255, 200, 90, 0.9);
    box-shadow: 0 0 8px 2px rgba(255, 180, 60, 0.5);
}

/* ================================================================
   AGENT LANDING PAGE — dark mode
   ================================================================ */
html.dark-mode .agent-landing {
    --gold-soft: rgba(199,160,78,.18);
    --gold-glow: rgba(199,160,78,.35);
}

html.dark-mode .al-hero {
    background: linear-gradient(160deg, #0c0f16 0%, #131722 50%, #16111c 100%) !important;
}
html.dark-mode .al-hero-glow { opacity: .4 !important; }
html.dark-mode .al-hero-title { color: #f2eee7 !important; }
html.dark-mode .al-hero-sub { color: #c0c8d6 !important; }
html.dark-mode .al-stat-value { color: #dbb85c !important; }
html.dark-mode .al-stat-label { color: #c0c8d6 !important; }

html.dark-mode .al-steps { background: #0a0d12 !important; }
html.dark-mode .al-section-title { color: #f2eee7 !important; }
html.dark-mode .al-step {
    background: #181d2c !important;
    box-shadow: 0 2px 18px rgba(0,0,0,.35) !important;
    border: 1px solid rgba(199,160,78,.12) !important;
}
html.dark-mode .al-step:hover {
    box-shadow: 0 8px 30px rgba(0,0,0,.4) !important;
    border-color: rgba(199,160,78,.22) !important;
}
html.dark-mode .al-step-icon {
    background: rgba(199,160,78,.15) !important;
}
html.dark-mode .al-step h3 { color: #f2eee7 !important; }
html.dark-mode .al-step p { color: #b0b8c8 !important; }
html.dark-mode .al-step-arrow { color: #c7a04e !important; opacity: .45 !important; }

html.dark-mode .al-benefits {
    background: linear-gradient(160deg, #10131a 0%, #0a0d12 100%) !important;
}
html.dark-mode .al-benefit {
    background: #181d2c !important;
    box-shadow: 0 2px 18px rgba(0,0,0,.35) !important;
    border-left-color: #c7a04e !important;
}
html.dark-mode .al-benefit:hover {
    box-shadow: 0 6px 26px rgba(0,0,0,.4) !important;
}
html.dark-mode .al-benefit h3 { color: #f2eee7 !important; }
html.dark-mode .al-benefit p { color: #b0b8c8 !important; }

html.dark-mode .al-audience { background: #0a0d12 !important; }
html.dark-mode .al-audience-item {
    background: #181d2c !important;
    color: #f2eee7 !important;
    box-shadow: 0 1px 10px rgba(0,0,0,.3) !important;
    border: 1px solid rgba(199,160,78,.1) !important;
}

html.dark-mode .al-cta-section {
    background: linear-gradient(160deg, #1a1410 0%, #110e0a 50%, #0c0a07 100%) !important;
}
html.dark-mode .al-cta-section h2 { color: #f5f0e6 !important; }
html.dark-mode .al-cta-section p { color: #d0c7b2 !important; opacity: 1 !important; }
html.dark-mode .al-cta-note { color: #a09580 !important; }

html.dark-mode .al-cta {
    box-shadow: 0 4px 24px rgba(199,160,78,.3), 0 0 48px rgba(199,160,78,.1) !important;
}
html.dark-mode .al-cta:hover {
    box-shadow: 0 8px 36px rgba(199,160,78,.4), 0 0 64px rgba(199,160,78,.14) !important;
}

/* ================================================================
   IMAGE PROGRESSIVE REVEAL — blur-to-sharp on load
   ================================================================ */
.img-loading {
    filter: blur(8px);
    opacity: 0.6;
    transform: scale(1.02);
    transition: filter 0.6s ease, opacity 0.6s ease, transform 0.6s ease;
}

.img-revealed {
    filter: none;
    opacity: 1;
    transform: scale(1);
    transition: filter 0.6s ease, opacity 0.6s ease, transform 0.6s ease;
}

/* ================================================================
   SECTION ORNAMENTS — subtle golden accent between sections
   Thin radial gradient lines that echo the vine/branch motif
   ================================================================ */
.examples-section,
.story-preview,
.personal-msg-section,
.testimonials-section,
.contact {
    position: relative;
}

.examples-section::before,
.personal-msg-section::before,
.testimonials-section::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 100px;
    height: 2px;
    margin: 0 auto 0.75rem;
    background: radial-gradient(ellipse, var(--brand) 0%, transparent 80%);
    opacity: 0.3;
    border-radius: 1px;
}

/* Wider ornament variant for story and contact */
.story-preview::before,
.contact::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 60px;
    height: 2px;
    margin: 0 auto 0.75rem;
    background: radial-gradient(ellipse, var(--brand) 0%, transparent 80%);
    opacity: 0.2;
    border-radius: 1px;
}

/* ================================================================
   REDUCED MOTION — disable all polish effects
   ================================================================ */
@media (prefers-reduced-motion: reduce) {
    .sr {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }

    .img-loading {
        filter: none !important;
        opacity: 1 !important;
        transform: none !important;
    }

    .cta-spark {
        display: none !important;
    }

    body,
    .site-header,
    section,
    .character-block,
    .portal-block,
    footer,
    .cta,
    input, select, textarea,
    .msg-card,
    .story-card,
    .purchase-card,
    .examples-card,
    .contact-card,
    .testimonial-card,
    .bb-panel {
        transition: none !important;
    }
}


