﻿/* Custom Styles */
body { font-family: 'Inter', sans-serif; background-color: var(--bg); }

/* Theming tokens */
:root {
  --bg: #FAF6EE; /* warm off-white from image background */
  --surface: #ffffff;
  --text: #111827; /* near-black */
  --muted: #6b7280;
  --border: #e5e7eb;
  --primary: #14b8a6; /* teal */
  --accent: #f4b860; /* light orange */
  --overlay: rgba(15,23,42,0.4);
  --shadow: 0 18px 40px rgba(15,23,42,0.18), 0 4px 12px rgba(15,23,42,0.08);
  --ai-loader-duration: 4200ms;
  --ai-loader-crayon: #0f766e; /* darker teal for contrast */
  --ai-loader-color-01: #e6fffb;
  --ai-loader-color-02: #c8fff5;
  --ai-loader-color-03: #aafcf0;
  --ai-loader-color-04: #8df3e7;
  --ai-loader-color-05: #6de8dd;
  --ai-loader-color-06: #4fd8cf;
  --ai-loader-color-07: #2dd4bf; /* teal-400 */
  --ai-loader-color-08: #14b8a6; /* teal-500 */
  --ai-loader-color-09: #0fa5a0;
  --ai-loader-color-10: #0f8f8b;
  --ai-loader-color-11: #0b766f;
  --ai-loader-bg-01-a: no-repeat left 0% top / 11% 0% linear-gradient(to right, var(--ai-loader-color-01), var(--ai-loader-color-02));
  --ai-loader-bg-01-b: no-repeat left 0% top / 11% 100% linear-gradient(to right, var(--ai-loader-color-01), var(--ai-loader-color-02));
  --ai-loader-bg-02-a: no-repeat left 11.11% bottom / 11% 0% linear-gradient(to right, var(--ai-loader-color-02), var(--ai-loader-color-03));
  --ai-loader-bg-02-b: no-repeat left 11.11% bottom / 11% 100% linear-gradient(to right, var(--ai-loader-color-02), var(--ai-loader-color-03));
  --ai-loader-bg-03-a: no-repeat left 22.22% top / 11% 0% linear-gradient(to right, var(--ai-loader-color-03), var(--ai-loader-color-04));
  --ai-loader-bg-03-b: no-repeat left 22.22% top / 11% 100% linear-gradient(to right, var(--ai-loader-color-03), var(--ai-loader-color-04));
  --ai-loader-bg-04-a: no-repeat left 33.33% bottom / 11% 0% linear-gradient(to right, var(--ai-loader-color-04), var(--ai-loader-color-05));
  --ai-loader-bg-04-b: no-repeat left 33.33% bottom / 11% 100% linear-gradient(to right, var(--ai-loader-color-04), var(--ai-loader-color-05));
  --ai-loader-bg-05-a: no-repeat left 44.44% top / 11% 0% linear-gradient(to right, var(--ai-loader-color-05), var(--ai-loader-color-06));
  --ai-loader-bg-05-b: no-repeat left 44.44% top / 11% 100% linear-gradient(to right, var(--ai-loader-color-05), var(--ai-loader-color-06));
  --ai-loader-bg-06-a: no-repeat left 55.55% bottom / 11% 0% linear-gradient(to right, var(--ai-loader-color-06), var(--ai-loader-color-07));
  --ai-loader-bg-06-b: no-repeat left 55.55% bottom / 11% 100% linear-gradient(to right, var(--ai-loader-color-06), var(--ai-loader-color-07));
  --ai-loader-bg-07-a: no-repeat left 66.66% top / 11% 0% linear-gradient(to right, var(--ai-loader-color-07), var(--ai-loader-color-08));
  --ai-loader-bg-07-b: no-repeat left 66.66% top / 11% 100% linear-gradient(to right, var(--ai-loader-color-07), var(--ai-loader-color-08));
  --ai-loader-bg-08-a: no-repeat left 77.77% bottom / 11% 0% linear-gradient(to right, var(--ai-loader-color-08), var(--ai-loader-color-09));
  --ai-loader-bg-08-b: no-repeat left 77.77% bottom / 11% 100% linear-gradient(to right, var(--ai-loader-color-08), var(--ai-loader-color-09));
  --ai-loader-bg-09-a: no-repeat left 88.88% top / 11% 0% linear-gradient(to right, var(--ai-loader-color-09), var(--ai-loader-color-10));
  --ai-loader-bg-09-b: no-repeat left 88.88% top / 11% 100% linear-gradient(to right, var(--ai-loader-color-09), var(--ai-loader-color-10));
  --ai-loader-bg-10-a: no-repeat left 99.99% bottom / 11% 0% linear-gradient(to right, var(--ai-loader-color-10), var(--ai-loader-color-11));
  --ai-loader-bg-10-b: no-repeat left 99.99% bottom / 12% 100% linear-gradient(to right, var(--ai-loader-color-10), var(--ai-loader-color-11));
}

html[data-theme="dark"] {
  --bg: #0b0f14; /* dark grey/black */
  --surface: #111827; /* dark grey */
  --text: #e5e7eb;
  --muted: #94a3b8;
  --border: #2a3441;
  --primary: #2dd4bf; /* teal */
  --accent: #f4b860; /* light orange */
  --overlay: rgba(0,0,0,0.6);
  --shadow: 0 18px 40px rgba(0,0,0,0.5), 0 4px 12px rgba(0,0,0,0.25);
}

/* Base application of theme tokens */
body { background: var(--bg) !important; color: var(--text) !important; }
.site-header { background: var(--surface) !important; border-color: var(--border) !important; }
.mobile-nav-panel { background: var(--surface) !important; border-color: var(--border) !important; color: var(--text) !important; box-shadow: var(--shadow) !important; }
[data-auth-dropdown], [data-auth-dropdown-account] { background: var(--surface) !important; border-color: var(--border) !important; box-shadow: var(--shadow) !important; color: var(--text) !important; }
.toast { background-color: color-mix(in srgb, var(--surface) 92%, var(--primary) 8%) !important; color: var(--text) !important; border-color: var(--border) !important; }

/* Pastel teal background utility for inputs/areas */
.bg-pastel-teal { background-color: color-mix(in srgb, var(--surface) 92%, var(--primary) 8%) !important; }

/* Dark theme overrides for common Tailwind utility colors used as cards */
html[data-theme="dark"] .bg-white { background-color: var(--surface) !important; color: var(--text) !important; }
html[data-theme="dark"] .bg-slate-50 { background-color: #111a2e !important; color: var(--text) !important; }
html[data-theme="dark"] .border-slate-200 { border-color: var(--border) !important; }
html[data-theme="dark"] .text-slate-800, 
html[data-theme="dark"] .text-slate-700, 
html[data-theme="dark"] .text-slate-600 { color: var(--text) !important; }
html[data-theme="dark"] .text-slate-500 { color: var(--muted) !important; }

/* Dark: Template Manager 'Default' badge stays readable (dark text on light pill) */
html[data-theme="dark"] .bg-slate-100.text-slate-600 { color: #0b1220 !important; }

/* Dark: Main menu hover = white outline (no fill) */
html[data-theme="dark"] .mobile-nav-panel a:hover {
  background: transparent !important;
  color: #ffffff !important;
  /* use box-shadow ring so corners stay rounded */
  box-shadow: 0 0 0 2px #ffffff inset !important;
}

/* Dark: Account dropdown items hover = white outline (no fill) */
html[data-theme="dark"] [data-auth-dropdown-account] a,
html[data-theme="dark"] [data-auth-dropdown-account] button,
html[data-theme="dark"] [data-auth-dropdown] a,
html[data-theme="dark"] [data-auth-dropdown] button {
  background-color: transparent !important; /* remove any inner box fill */
  border-radius: 10px !important; /* ensure curved corners for hover ring */
}
html[data-theme="dark"] [data-auth-dropdown-account] a:hover,
html[data-theme="dark"] [data-auth-dropdown-account] button:hover,
html[data-theme="dark"] [data-auth-dropdown] a:hover,
html[data-theme="dark"] [data-auth-dropdown] button:hover {
  background: transparent !important;
  color: #ffffff !important;
  box-shadow: 0 0 0 2px #ffffff inset !important; /* rounded outline */
}

/* Light mode: subtle orange hover for menu items */
html:not([data-theme="dark"]) .mobile-nav-panel a:hover {
  background: rgba(245, 158, 11, 0.08) !important; /* very light orange */
  color: #0f172a !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Light mode: same orange hover for account dropdown items */
html:not([data-theme="dark"]) [data-auth-dropdown-account] a:hover,
html:not([data-theme="dark"]) [data-auth-dropdown-account] button:hover,
html:not([data-theme="dark"]) [data-auth-dropdown] a:hover,
html:not([data-theme="dark"]) [data-auth-dropdown] button:hover {
  background: rgba(245, 158, 11, 0.08) !important;
  color: #0f172a !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Dark: dropdown/menu buttons use dark blue with light text */
html[data-theme="dark"] .btn-primary {
  background-color: var(--primary) !important;
  color: #0b0f14 !important;
  border-color: transparent !important;
}
html[data-theme="dark"] .btn-primary:hover {
  background-color: #0d9488 !important;
}
html[data-theme="dark"] .btn-secondary,
html[data-theme="dark"] .btn-compact {
  background-color: #1f2937 !important;
  color: #e5e7eb !important;
  border-color: #374151 !important;
}
html[data-theme="dark"] .btn-tertiary {
  background-color: transparent !important;
  color: var(--primary) !important;
  border-color: rgba(45, 212, 191, 0.55) !important;
}

/* Dark: person icon (account) matches light text */
html[data-theme="dark"] .nav-toggle { background: #1f2937 !important; color: #e5e7eb !important; border-color: #374151 !important; }
html[data-theme="dark"] .nav-toggle:hover { background: #111827 !important; }
html[data-theme="dark"] .nav-toggle[aria-expanded="true"] { background: var(--primary) !important; color: #0b0f14 !important; }

/* Dark: template builder multiselect buttons (Character / Areas) */
html[data-theme="dark"] .selectBox { background: #1f2937 !important; color: #e5e7eb !important; border-color: #374151 !important; }
html[data-theme="dark"] .checkboxes { background: #111827 !important; color: #e5e7eb !important; border-color: #374151 !important; }

/* Dark: custom checkbox text white, keep green hover/checked */
html[data-theme="dark"] .custom-checkbox-text { color: #ffffff !important; }
/* retain existing green styles; no change needed for :before gradient */

/* Dark: inputs and selects site-wide */
html[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),
html[data-theme="dark"] textarea,
html[data-theme="dark"] select {
  background-color: #1f2937 !important; /* dark grey */
  color: #e5e7eb !important;
  border-color: #374151 !important;
}
html[data-theme="dark"] input::placeholder,
html[data-theme="dark"] textarea::placeholder { color: #cbd5e1 !important; }
html[data-theme="dark"] input:focus,
html[data-theme="dark"] textarea:focus,
html[data-theme="dark"] select:focus { outline: none !important; box-shadow: 0 0 0 2px rgba(45,212,191,0.35) !important; border-color: var(--primary) !important; }

/* Dark: how-to page readability (ensure all muted text becomes light) */
html[data-theme="dark"] .howto, 
html[data-theme="dark"] .howto *:not(svg):not(path) {
  color: #ffffff !important;
}

/* Dark: account dropdown items keep light text */
html[data-theme="dark"] [data-auth-dropdown-account] a,
html[data-theme="dark"] [data-auth-dropdown-account] button,
html[data-theme="dark"] [data-auth-dropdown] a,
html[data-theme="dark"] [data-auth-dropdown] button { color: #e5e7eb !important; }

.checkboxes::-webkit-scrollbar { width: 8px; }
.checkboxes::-webkit-scrollbar-track { background: #f1f4f9; border-radius: 10px; }
.checkboxes::-webkit-scrollbar-thumb { background: #9aa8bc; border-radius: 10px; }
.checkboxes::-webkit-scrollbar-thumb:hover { background: #7c8aa1; }

.toast {
    position: fixed; bottom: 20px; left: 50%;
    transform: translateX(-50%) translateY(100%);
    min-width: 240px;
    padding: 14px 28px; border-radius: 12px;
    background-color: #e8eef6; color: #1f2a37;
    border: 1px solid #d0d9e6;
    box-shadow: 0 18px 34px rgba(15, 23, 42, 0.12);
    z-index: 1000; opacity: 0;
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
    visibility: hidden;
    display: flex; align-items: center; gap: 12px;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); visibility: visible; }
.toast.toast--success { background-color: #e6f0fb; border-color: #9dbad5; color: #0f2f57; }
.toast.toast--error { background-color: #f7e8eb; border-color: #e2b8c0; color: #71263a; }

.loader {
    border: 4px solid #f3f3f3; border-top: 4px solid var(--primary);
    border-radius: 50%; width: 24px; height: 24px;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.ai-loader {
    position: fixed;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    background: color-mix(in srgb, var(--overlay) 90%, transparent);
    backdrop-filter: blur(4px);
    z-index: 9999;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
    padding: 1.5rem;
    text-align: center;
}

.ai-loader--visible {
    opacity: 1;
    pointer-events: auto;
}

.ai-loader__title {
    color: var(--text);
    font-size: 1.1rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.ai-marker-loader {
    height: 2rem;
    width: min(10rem, 70vw);
    border: 0.25rem solid var(--ai-loader-crayon);
    border-radius: 0.35rem;
    animation: infinite alternate ai-loader-fill var(--ai-loader-duration) ease-in-out;
    box-sizing: border-box;
    position: relative;
    margin: 0;
    background:
        var(--ai-loader-bg-01-a),
        var(--ai-loader-bg-02-a),
        var(--ai-loader-bg-03-a),
        var(--ai-loader-bg-04-a),
        var(--ai-loader-bg-05-a),
        var(--ai-loader-bg-06-a),
        var(--ai-loader-bg-07-a),
        var(--ai-loader-bg-08-a),
        var(--ai-loader-bg-09-a),
        var(--ai-loader-bg-10-a);
}

.ai-marker-loader::after {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform-origin: left center;
    border-radius: 0.35rem;
    box-sizing: border-box;
    margin-top: -5%;
    margin-left: -1.5%;
    animation: infinite alternate ai-loader-move var(--ai-loader-duration) ease-in-out;
    background:
        no-repeat left 0% top / 1.5rem 50% linear-gradient(to bottom right, transparent, transparent 40%, var(--ai-loader-crayon) 40%),
        no-repeat left 0% bottom / 1.5rem 50% linear-gradient(to top right, transparent, transparent 40%, var(--ai-loader-crayon) 40%),
        no-repeat left 1.5rem bottom / 100% 100% linear-gradient(var(--ai-loader-crayon), var(--ai-loader-crayon));
}

@keyframes ai-loader-move {
    10% { transform: translate(5%, 100%) rotate(2.5deg); }
    20% { transform: translate(20%, 0) rotate(-5deg); }
    30% { transform: translate(30%, 100%) rotate(2.5deg); }
    40% { transform: translate(40%, 0) rotate(-5deg); }
    50% { transform: translate(50%, 100%) rotate(2.5deg); }
    60% { transform: translate(60%, 0) rotate(-5deg); }
    70% { transform: translate(70%, 100%) rotate(2.5deg); }
    80% { transform: translate(80%, 0) rotate(-5deg); }
    90% { transform: translate(90%, 100%) rotate(2.5deg); }
    100% { transform: translate(100%, 0) rotate(-5deg); }
}

@keyframes ai-loader-fill {
    0% {
        background:
            var(--ai-loader-bg-01-a),
            var(--ai-loader-bg-02-a),
            var(--ai-loader-bg-03-a),
            var(--ai-loader-bg-04-a),
            var(--ai-loader-bg-05-a),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    10% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-a),
            var(--ai-loader-bg-03-a),
            var(--ai-loader-bg-04-a),
            var(--ai-loader-bg-05-a),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    20% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-a),
            var(--ai-loader-bg-04-a),
            var(--ai-loader-bg-05-a),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    30% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-a),
            var(--ai-loader-bg-05-a),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    40% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-a),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    50% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-a),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    60% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-b),
            var(--ai-loader-bg-07-a),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    70% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-b),
            var(--ai-loader-bg-07-b),
            var(--ai-loader-bg-08-a),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    80% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-b),
            var(--ai-loader-bg-07-b),
            var(--ai-loader-bg-08-b),
            var(--ai-loader-bg-09-a),
            var(--ai-loader-bg-10-a);
    }
    90% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-b),
            var(--ai-loader-bg-07-b),
            var(--ai-loader-bg-08-b),
            var(--ai-loader-bg-09-b),
            var(--ai-loader-bg-10-a);
    }
    100% {
        background:
            var(--ai-loader-bg-01-b),
            var(--ai-loader-bg-02-b),
            var(--ai-loader-bg-03-b),
            var(--ai-loader-bg-04-b),
            var(--ai-loader-bg-05-b),
            var(--ai-loader-bg-06-b),
            var(--ai-loader-bg-07-b),
            var(--ai-loader-bg-08-b),
            var(--ai-loader-bg-09-b),
            var(--ai-loader-bg-10-b);
    }
}

.output-textarea {
    appearance: none;
    -webkit-appearance: none;
    background-color: #f1f5fb;
    padding: 1rem;
    border-radius: 0.75rem;
    border: 1px solid #d0d9e6;
    width: 100%;
    white-space: pre-wrap;
    font-size: 0.9rem;
    color: #2a3646;
    box-shadow: inset 0 2px 4px rgba(15, 23, 42, 0.05);
    transition: border-color 0.2s, height 0.2s;
    resize: none;
    overflow: hidden;
    min-height: 150px;
}
.output-textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: inset 0 2px 4px rgba(15, 23, 42, 0.05), 0 0 0 3px rgba(20, 184, 166, 0.25);
}

.hero-overlay { background: rgba(15, 23, 42, 0.45); }

.btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: #0f766e; /* darker green */
    color: #ffffff;
    padding: 0.65rem 1.5rem;
    border-radius: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    box-shadow: 0 12px 32px rgba(15, 118, 110, 0.22);
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.btn-primary:hover { background-color: #115e59; box-shadow: 0 10px 24px rgba(17, 94, 89, 0.28); }
.btn-primary:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(17, 94, 89, 0.35); }
.btn-primary:disabled { opacity: 0.6; cursor: not-allowed; box-shadow: none; }

.btn-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: #0f766e; /* match primary darker green */
    color: #ffffff;
    padding: 0.65rem 1.5rem;
    border-radius: 0.75rem;
    font-weight: 600;
    border: 1px solid #0f766e;
    box-shadow: 0 12px 32px rgba(15, 118, 110, 0.22);
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.btn-secondary:hover { background-color: #115e59; box-shadow: 0 10px 24px rgba(17, 94, 89, 0.28); }
.btn-secondary:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(17, 94, 89, 0.35); }

/* Dark blue CTA variant (for stepper controls) */
.btn-blue {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: #305a99;
    color: #ffffff;
    padding: 0.65rem 1.5rem;
    border-radius: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    box-shadow: 0 12px 32px rgba(48, 90, 153, 0.18);
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.btn-blue:hover { background-color: #264a7e; box-shadow: 0 10px 24px rgba(38, 74, 126, 0.24); }
.btn-blue:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(48, 90, 153, 0.35); }

.btn-tertiary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: transparent;
    color: var(--primary);
    padding: 0.6rem 1.15rem;
    border-radius: 0.75rem;
    border: 1px solid rgba(20, 184, 166, 0.55);
    font-weight: 600;
    transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}
.btn-tertiary:hover {
    background-color: rgba(20, 184, 166, 0.08);
    border-color: rgba(20, 184, 166, 0.55);
}
.btn-tertiary:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(20, 184, 166, 0.18);
}



.step-list { list-style: none; margin: 0; padding: 0; counter-reset: step; }
.step-list li {
    counter-increment: step;
    position: relative; padding-left: 3rem;
    color: #374151; line-height: 1.6;
}
.step-list li::before {
    content: counter(step);
    position: absolute; left: 0; top: 0.15rem;
    width: 2rem; height: 2rem; border-radius: 9999px;
    background: #0f766e; /* match dark button green */
    color: #ffffff; font-weight: 600;
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 0 8px 18px rgba(15, 118, 110, 0.25);
}

/* Light/Dark logo swap helpers */
.logo-dark { display: none; }
html[data-theme="dark"] .logo-light { display: none !important; }
html[data-theme="dark"] .logo-dark { display: inline !important; }
.step-list li + li { margin-top: 0.75rem; }

.detail-list { list-style: none; margin: 0; padding: 0; }
.detail-list li {
    position: relative; padding-left: 1.75rem;
    color: #374151; line-height: 1.6;
}
.detail-list li::before {
    content: '';
    position: absolute; left: 0; top: 0.7rem;
    width: 0.5rem; height: 0.5rem; border-radius: 9999px;
    background: var(--primary);
}
.detail-list li + li { margin-top: 0.6rem; }

/* Full-height left drawer, starts below the header (no rounded edges) */
.mobile-nav-panel {
    position: fixed;
    top: 64px; /* fallback; JS will compute exact header height */
    left: 0;
    height: calc(100vh - 64px);
    width: min(80vw, 320px);
    max-width: 90vw;
    padding: 0.25rem 0.75rem 1rem 0.75rem;
    background: #ffffff;
    border-right: 1px solid #e5eaf2;
    border-radius: 0;
    box-shadow: 0 22px 46px rgba(15, 23, 42, 0.16);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    transform: translateX(-100%);
    transition: transform 0.28s cubic-bezier(.2,.8,.2,1);
    z-index: 40; /* above overlay, under header toggle */
    pointer-events: none;
}
.mobile-nav-panel a {
    position: relative;
    padding: 0.625rem 0.75rem 0.625rem 1rem;
    border-radius: 6px;
    color: #334155;
    text-decoration: none;
    transition: background .2s ease, color .2s ease, transform .15s ease;
}
.mobile-nav-panel a::before {
    content: '';
    position: absolute;
    left: 0;
    top: 10%;
    width: 4px;
    height: 80%;
    background: #f59e0b; /* brand orange */
    border-radius: 2px;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .18s ease;
}
.mobile-nav-panel a:hover,
.mobile-nav-panel a:focus-visible { background: #f8fafc; color: #0f172a; }
.mobile-nav-panel a:hover::before,
.mobile-nav-panel a:focus-visible::before { transform: scaleX(1); }
.mobile-nav-panel[data-open="true"] { transform: translateX(0); pointer-events: auto; }

/* In-panel close button (X), aligned at panel top */
.mobile-nav-close {
  position: sticky;
  top: 0;
  align-self: flex-start;
  width: 40px; height: 40px;
  border-radius: 9999px;
  background: #f4f6fb; color: #1f2a37;
  border: 1px solid #c7d2e3;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.14);
  transition: background-color .2s ease, color .2s ease, box-shadow .2s ease;
}
.mobile-nav-close:hover { background: #e7edf8; box-shadow: 0 6px 16px rgba(15, 23, 42, 0.16); }
.mobile-nav-close::before,
.mobile-nav-close::after {
  content: "";
  position: absolute;
  width: 18px; height: 2px; background: currentColor; border-radius: 2px;
  left: 50%; top: 50%; transform-origin: 50% 50%;
}
.mobile-nav-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.mobile-nav-close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

.nav-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px;
    border-radius: 9999px;
    background: #f4f6fb; color: #1f2a37;
    border: 1px solid #c7d2e3;
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.14);
    transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}
.nav-toggle:hover { background: #e7edf8; box-shadow: 0 6px 16px rgba(15, 23, 42, 0.16); }
.nav-toggle[aria-expanded="true"] { background: var(--primary); color: #0b0f14; }

/* Animated hamburger to X (without covering the button) */
.nav-toggle { position: relative; overflow: visible; }
.nav-toggle svg { transition: opacity .18s ease, transform .2s ease; }
.nav-toggle[aria-expanded="true"] svg { opacity: 0; transform: scale(.9); }
.nav-toggle::before,
.nav-toggle::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 18px;
  height: 2px;
  background: currentColor;
  border-radius: 2px;
  transform-origin: 50% 50%;
  opacity: 0;
  transition: transform .24s cubic-bezier(.2,.8,.2,1), opacity .18s ease;
}
.nav-toggle[aria-expanded="true"]::before { opacity: 1; transform: translate(-50%, -50%) rotate(45deg); }
.nav-toggle[aria-expanded="true"]::after  { opacity: 1; transform: translate(-50%, -50%) rotate(-45deg); }
/* X hover feedback */
.nav-toggle:hover { box-shadow: 0 6px 16px rgba(15, 23, 42, 0.2); }

/* Header logo icon hover/active interactions */
.site-header a[href="index.html"] > img,
.site-header img[src*="/public/logo-icon"],
.site-header img[src*="/public/mascot/mascot-left"] {
  transition: transform 160ms cubic-bezier(.2,.8,.2,1), filter 160ms ease;
  transform-origin: center center;
  will-change: transform;
}
.site-header a:hover > img[src*="/public/logo-icon"],
.site-header a:focus-visible > img[src*="/public/logo-icon"],
.site-header a:hover > img[src*="/public/mascot/mascot-left"],
.site-header a:focus-visible > img[src*="/public/mascot/mascot-left"] {
  transform: scale(1.06);
}
.site-header a:active > img[src*="/public/logo-icon"],
.site-header a:active > img[src*="/public/mascot/mascot-left"] {
  transform: scale(0.96) translateY(1px);
}
.nav-toggle[aria-expanded="true"]:hover { box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.25), 0 6px 16px rgba(15, 23, 42, 0.2); }

/* Template Manager: rotate chevron when menu open */
[data-menu-toggle] svg { transition: transform 0.2s ease; }
[data-menu-toggle][aria-expanded="true"] svg { transform: rotate(180deg); }

/* Template Manager dropdown (exact style from provided snippet, scoped) */
.tm-dropdown { position: absolute; top: 1.5rem; right: 1.5rem; z-index: 10; }
.tm-button {
  position: relative;
  z-index: 1;
  cursor: pointer;
  background: #f6f6fa;
  border: 1px solid #a8a6bd;
  height: 1.5rem;
  width: 6rem;
  border-radius: 0.2rem;
  display: flex;
  justify-content: space-around;
  align-items: center;
  color: #a8a6bd;
  transition: 0.3s all ease;
  font-family: 'Roboto', sans-serif;
}
.tm-button:hover { border-color: #577bf9; }
.tm-button.selected { color: #577bf9; }
.tm-button .tm-label-text { font-size: 0.6rem; }
.tm-button .tm-icon {
  display: flex;
  flex-direction: column;
  font-size: 0.4rem;
  transition: 0.2s all ease;
}
.tm-button.active .tm-icon { transform: rotate(180deg); }

.tm-options {
  position: absolute;
  top: 1.6rem;
  list-style-type: none;
  width: 100%;
  border: 1px solid #a8a6bd;
  border-radius: 0.2rem;
  font-size: 0.6rem;
  color: #151542;
  overflow: hidden;
  transition: all 0.2s ease-in;
  clip-path: polygon(0 0, 100% 0%, 100% 0, 0 0);
  background: #ffffff;
  z-index: 20;
}
.tm-button.active + .tm-options {
  clip-path: polygon(0 0, 100% 0%, 100% 100%, 0 100%);
}
/* Also open when container is toggled (more reliable than sibling state only) */
[data-menu-container].open .tm-options {
  clip-path: polygon(0 0, 100% 0%, 100% 100%, 0 100%);
}
.tm-options .tm-option {
  padding: 0.3rem 0.8rem;
  cursor: pointer;
  transition: background 0.3s ease, color 0.3s ease;
}
.tm-options .tm-option:hover {
  color: #577bf9;
  background: #e8edff;
}

/* Prevent overlap with title on small screens */
@media (max-width: 639px) {
  .tm-card .tm-body { padding-right: 7rem; }
}

/* Overlay for nav drawer */
#nav-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.4);
  z-index: 20; /* keep below toggle button and panel */
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}
#nav-overlay[data-visible="true"] { opacity: 1; pointer-events: auto; }

/* Ensure header has consistent height so content never overlaps hero */
.site-header { min-height: 64px; }

/* Auth dropdown safety */
[data-auth-dropdown] { max-width: min(92vw, 320px); }

/* Account dropdown – style like the app menu */
[data-auth-dropdown],
[data-auth-dropdown-account] {
  background: #ffffff !important;
  border: 1px solid #e5eaf2 !important;
  box-shadow: 0 18px 40px rgba(15, 23, 42, 0.18), 0 4px 12px rgba(15,23,42,.08) !important;
  border-radius: 0 !important; /* no curved edges */
  padding: 8px !important;
  margin-top: 0 !important; /* remove mt-2 gap from source markup */
  /* animate open from top-right to bottom-left */
  transform-origin: 100% 0%;
  transform: scale(0.97) translate(8px, -8px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform .22s cubic-bezier(.2,.8,.2,1), opacity .18s ease, visibility 0s linear .18s;
}

[data-auth-dropdown][data-open="true"],
[data-auth-dropdown-account][data-open="true"] {
  transform: scale(1) translate(0, 0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform .24s cubic-bezier(.2,.8,.2,1), opacity .2s ease;
}

/* Make items look like menu list with orange bar */
[data-auth-dropdown-account] a,
[data-auth-dropdown-account] button,
[data-auth-dropdown] a,
[data-auth-dropdown] button {
  display: flex !important;
  align-items: center !important;
  gap: 0.75rem !important;
  width: 100% !important;
  text-align: left !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  color: #334155 !important;
  padding: 0.625rem 1rem 0.625rem 0.75rem !important;
  border-radius: 0 !important;
  position: relative !important;
  transition: background .2s ease, color .2s ease, transform .15s ease !important;
}

[data-auth-dropdown-account] a::before,
[data-auth-dropdown-account] button::before,
[data-auth-dropdown] a::before,
[data-auth-dropdown] button::before {
  content: '';
  position: absolute;
  right: 0; top: 10%;
  width: 4px; height: 80%;
  background: #f59e0b; /* brand orange */
  border-radius: 2px;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform .18s ease;
}

[data-auth-dropdown-account] a:hover,
[data-auth-dropdown-account] button:hover,
[data-auth-dropdown] a:hover,
[data-auth-dropdown] button:hover {
  background: #f8fafc !important;
  color: #0f172a !important;
}

[data-auth-dropdown-account] a:hover::before,
[data-auth-dropdown-account] button:hover::before,
[data-auth-dropdown] a:hover::before,
[data-auth-dropdown] button:hover::before {
  transform: scaleX(1);
}

.account-menu {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.account-menu-item {
  display: flex !important;
  align-items: center !important;
  gap: 0.75rem !important;
  padding: 0.5rem 0.75rem !important;
  text-decoration: none !important;
}

.account-menu-icon {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: #eef2ff;
  color: #1f2a37;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .2s ease, color .2s ease;
}

.account-menu-item--logout .account-menu-icon {
  background: #fee2e2;
  color: #b91c1c;
}

.account-menu-item:hover .account-menu-icon,
.account-menu-item:focus-visible .account-menu-icon {
  background: #dbeafe;
  color: #1d4ed8;
}

.account-menu-item--logout:hover .account-menu-icon,
.account-menu-item--logout:focus-visible .account-menu-icon {
  background: #fecaca;
  color: #991b1b;
}

.account-menu-svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
}

.account-menu-label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  align-items: flex-start;
}

.account-menu-title {
  font-weight: 600;
  color: #1f2937;
}

.account-menu-desc {
  font-size: 0.72rem;
  color: #64748b;
  line-height: 1.3;
}

html[data-theme="dark"] .account-menu-icon {
  background: #1e293b;
  color: #e2e8f0;
}

html[data-theme="dark"] .account-menu-item--logout .account-menu-icon {
  background: rgba(248, 113, 113, 0.22);
  color: #fecaca;
}

html[data-theme="dark"] .account-menu-item:hover .account-menu-icon,
html[data-theme="dark"] .account-menu-item:focus-visible .account-menu-icon {
  background: #1f3a5f;
  color: #60a5fa;
}

html[data-theme="dark"] .account-menu-item--logout:hover .account-menu-icon,
html[data-theme="dark"] .account-menu-item--logout:focus-visible .account-menu-icon {
  background: rgba(248, 113, 113, 0.35);
  color: #fca5a5;
}

html[data-theme="dark"] .account-menu-title { color: #e2e8f0; }
html[data-theme="dark"] .account-menu-desc { color: #94a3b8; }

/* Home page main menu prototype */
.mobile-nav-panel .main-nav-link {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding-inline: 0.75rem;
}

.account-menu .main-nav-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding-inline: 0.75rem;
}

.main-nav-icon {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: #e8edff;
  color: #1f2a37;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.main-nav-icon svg { width: 16px; height: 16px; fill: currentColor; }

.main-nav-label {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.main-nav-title {
  font-weight: 600;
  color: #1f2937;
}

.main-nav-desc {
  font-size: 0.7rem;
  color: #6b7280;
}

.mobile-nav-panel .main-nav-link:hover .main-nav-icon,
.mobile-nav-panel .main-nav-link:focus-visible .main-nav-icon,
.account-menu .main-nav-link:hover .main-nav-icon,
.account-menu .main-nav-link:focus-visible .main-nav-icon {
  background: #dbe4ff;
  color: #1d4ed8;
}

html[data-theme="dark"] .main-nav-icon {
  background: #1f2a37;
  color: #e2e8f0;
}

html[data-theme="dark"] .main-nav-title { color: #e2e8f0; }
html[data-theme="dark"] .main-nav-desc { color: #94a3b8; }
html[data-theme="dark"] .mobile-nav-panel .main-nav-link:hover .main-nav-icon,
html[data-theme="dark"] .mobile-nav-panel .main-nav-link:focus-visible .main-nav-icon,
html[data-theme="dark"] .account-menu .main-nav-link:hover .main-nav-icon,
html[data-theme="dark"] .account-menu .main-nav-link:focus-visible .main-nav-icon {
  background: #1f3a5f;
  color: #60a5fa;
}

/* Hide built-in close buttons; use icon toggle instead */
[data-auth-close],
[data-auth-close-account] { display: none !important; }

/* Force white background even when autofilled */
\n.btn-compact { padding: 0.5rem 1rem; }\n@media (min-width: 640px) {\n  .btn-compact { padding: 0.65rem 1.5rem; }\n}\ninput:-webkit-autofill {
  -webkit-box-shadow: 0 0 0px 1000px white inset !important;
  box-shadow: 0 0 0px 1000px white inset !important;
  -webkit-text-fill-color: #1f2937 !important;
}





.btn-compact {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0.5rem 1rem;
}
@media (min-width: 640px) {
  .btn-compact { padding: 0.65rem 1.5rem; }
}

/* Custom checkbox buttons (Uiverse.io by AegisX-dev) */
.custom-checkbox-container {
  position: relative;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  user-select: none;
  padding: 8px;
}

.custom-checkbox-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.custom-checkbox-label {
  position: relative;
  display: flex;
  align-items: center;
  padding-left: 36px; /* extra room for multi-line wrap */
  min-height: 24px;   /* ensure box area is visible */
  transition: all 0.2s ease;
}

/* Checkbox box */
.custom-checkbox-label:before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 20px;
  height: 20px;
  border-radius: 6px;
  background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
  border: 2px solid #ccc;
  transition: all 0.3s ease;
  z-index: 1;
  outline: 0 solid transparent; /* Initial state for smooth transition */
  transform: translateY(-50%);
}

/* Checkmark */
.custom-checkbox-label:after {
  content: "";
  position: absolute;
  left: 6px;
  top: 50%;
  width: 8px;
  height: 12px;
  border: solid white;
  border-width: 0 2px 2px 0;
  transform: translateY(-50%) rotate(45deg) scale(0);
  opacity: 0;
  transition: all 0.2s ease;
  z-index: 3;
}

/* Checked state */
.custom-checkbox-input:checked + .custom-checkbox-label:before {
  background: linear-gradient(135deg, #34c759 0%, #2db54d 100%);
  border-color: #2db54d;
  overflow: hidden;
}

/* Shine effect */
.custom-checkbox-label span.custom-checkbox-shine {
  position: absolute;
  left: 0;
  top: 0;
  width: 20px;
  height: 20px;
  z-index: 2;
  pointer-events: none;
}

/* Disable continuous shine animation for a static UI */
.custom-checkbox-input:checked + .custom-checkbox-label span.custom-checkbox-shine:after { content: none; }

/* Checkmark animation */
.custom-checkbox-input:checked + .custom-checkbox-label:after {
  transform: translateY(-50%) rotate(45deg) scale(1);
  opacity: 1;
}

/* Hover effect */
.custom-checkbox-container:hover .custom-checkbox-label:before {
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  /* keep vertical centering stable; no scale to avoid shift */
  transform: translateY(-50%);
}

/* Text styling */
.custom-checkbox-text {
  color: #333;
  font-family: Arial, sans-serif;
  font-size: 16px;
  transition: color 0.2s ease;
  position: relative;
  z-index: 4;
}

.custom-checkbox-container:hover .custom-checkbox-text {
  color: #2db54d;
}

/* Focus state with transition */
.custom-checkbox-input:focus + .custom-checkbox-label:before {
  outline: 2px solid #34c759;
  outline-offset: 2px;
  transition: outline 0.1s ease-in-out; /* fast outline transition */
}

/* Shine animation keyframes */
@keyframes shine {
  0% { left: -100%; }
  40% { left: 100%; }
  100% { left: 100%; }
}

/* Drag handle grab cursor enhancement */
.drag-handle { cursor: -webkit-grab; cursor: grab; }
.drag-handle:active { cursor: -webkit-grabbing; cursor: grabbing; }


/* -------- Custom Toasts (bottom-right) -------- */
.custom-toast-container{position:fixed;right:0;bottom:0;z-index:1050;margin-bottom:1rem;}
.custom-toast{opacity:0;transform:translateY(100%);transition:opacity .3s,transform .3s;width:330px;height:auto;padding:10px 15px;background-color:#ffffff;border-radius:14px;box-shadow:0 9px 10px rgba(0,0,0,.29);margin-right:1rem;align-items:center;display:flex;margin-bottom:.5rem;}
.custom-toast.show{opacity:1;transform:translateY(0);}
.custom-toast .icon-container{display:flex;align-items:center;margin-right:10px;}
.custom-toast .icon-container>svg{height:34px;width:34px;}
.custom-toast .content-container{display:flex;flex-direction:column;flex:1;}
.custom-toast .content-container .title{font-weight:600;font-size:15px;}
.custom-toast .content-container .message{font-size:14px;font-weight:400;color:#111215;}
.custom-toast>button{background:transparent;font-size:22px;color:#9b9dab;cursor:pointer;border:0;padding:0;margin:0 0 0 10px;height:34px;width:34px;}
.custom-toast.success .icon-container>svg{fill:#47D764;}
.custom-toast.success .content-container .title{color:#47D764;}
.custom-toast.error .icon-container>svg{fill:#ff355b;}
.custom-toast.error .content-container .title{color:#ff355b;}
.custom-toast.info .icon-container>svg{fill:#2F86EB;}
.custom-toast.info .content-container .title{color:#2F86EB;}
.custom-toast.warning .icon-container>svg{fill:#FFC021;}
.custom-toast.warning .content-container .title{color:#FFC021;}
.custom-toast-container .custom-toast:last-child{margin-bottom:1rem;}
@media (max-width:568px){.custom-toast{margin:auto .5rem;left:0;right:0;width:calc(100% - 1rem);margin-bottom:.5rem;}.custom-toast-container{margin:0;}}

.custom-toast>button svg{width:16px;height:16px;}

