:root {
    --app-bg: #f4f7f8;
    --app-bg-soft: #eef4f5;
    --app-text: #102027;
    --app-muted: #60717a;
    --app-subtle: #85939a;
    --app-panel: rgba(255, 255, 255, 0.92);
    --app-panel-solid: #ffffff;
    --app-panel-strong: #f8fbfb;
    --app-border: rgba(16, 32, 39, 0.12);
    --app-border-strong: rgba(16, 32, 39, 0.2);
    --app-primary: #007f8a;
    --app-primary-strong: #005f66;
    --app-primary-soft: rgba(0, 127, 138, 0.1);
    --app-primary-softer: rgba(0, 127, 138, 0.06);
    --app-accent: #f2a541;
    --app-success: #159a68;
    --app-warning: #d97706;
    --app-danger: #c2414a;
    --app-shadow: 0 18px 45px rgba(18, 38, 48, 0.1);
    --app-shadow-strong: 0 28px 70px rgba(18, 38, 48, 0.16);
    --nav-bg: rgba(255, 255, 255, 0.96);
    --nav-text: #62727a;
    --nav-active: #0c5962;
    --nav-hover-bg: rgba(0, 127, 138, 0.08);
    --nav-active-bg: rgba(0, 127, 138, 0.13);
    --nav-border: rgba(16, 32, 39, 0.1);
    --field-bg: #ffffff;
    --field-text: #102027;
    --field-border: rgba(16, 32, 39, 0.18);
    --theme-name: "Riviera";
}

body[data-theme="harbor"] {
    --app-bg: #07151d;
    --app-bg-soft: #0f1f2a;
    --app-text: #f8fafc;
    --app-muted: #94a3b8;
    --app-subtle: #64748b;
    --app-panel: rgba(15, 23, 42, 0.76);
    --app-panel-solid: #0f172a;
    --app-panel-strong: rgba(2, 6, 23, 0.36);
    --app-border: rgba(148, 163, 184, 0.16);
    --app-border-strong: rgba(125, 211, 252, 0.34);
    --app-primary: #38bdf8;
    --app-primary-strong: #7dd3fc;
    --app-primary-soft: rgba(56, 189, 248, 0.14);
    --app-primary-softer: rgba(56, 189, 248, 0.08);
    --app-accent: #fb923c;
    --app-success: #22c55e;
    --app-warning: #f59e0b;
    --app-danger: #fb7185;
    --app-shadow: 0 16px 36px rgba(0, 0, 0, 0.2);
    --app-shadow-strong: 0 22px 60px rgba(0, 0, 0, 0.32);
    --nav-bg: rgba(7, 21, 29, 0.98);
    --nav-text: #94a3b8;
    --nav-active: #e0f2fe;
    --nav-hover-bg: rgba(56, 189, 248, 0.1);
    --nav-active-bg: rgba(56, 189, 248, 0.16);
    --nav-border: rgba(148, 163, 184, 0.18);
    --field-bg: rgba(15, 23, 42, 0.92);
    --field-text: #f8fafc;
    --field-border: rgba(148, 163, 184, 0.28);
}

body[data-theme="atelier"] {
    --app-bg: #fbfaf7;
    --app-bg-soft: #f2efe8;
    --app-text: #24201b;
    --app-muted: #6f675d;
    --app-subtle: #93887b;
    --app-panel: rgba(255, 255, 255, 0.9);
    --app-panel-solid: #ffffff;
    --app-panel-strong: #fffaf1;
    --app-border: rgba(59, 46, 34, 0.14);
    --app-border-strong: rgba(153, 106, 54, 0.28);
    --app-primary: #996a36;
    --app-primary-strong: #725025;
    --app-primary-soft: rgba(153, 106, 54, 0.12);
    --app-primary-softer: rgba(153, 106, 54, 0.06);
    --app-accent: #2f7b6f;
    --app-success: #2f7b6f;
    --app-warning: #b7791f;
    --app-danger: #b94a48;
    --nav-bg: rgba(255, 252, 246, 0.96);
    --nav-text: #756c61;
    --nav-active: #6b4821;
    --nav-hover-bg: rgba(153, 106, 54, 0.08);
    --nav-active-bg: rgba(153, 106, 54, 0.14);
    --nav-border: rgba(59, 46, 34, 0.12);
}

body[data-theme="regate"] {
    --app-bg: #f5f7fb;
    --app-bg-soft: #eaf0fb;
    --app-text: #172033;
    --app-muted: #5f6f87;
    --app-subtle: #8a98ad;
    --app-panel: rgba(255, 255, 255, 0.93);
    --app-panel-solid: #ffffff;
    --app-panel-strong: #f8fbff;
    --app-border: rgba(23, 32, 51, 0.12);
    --app-border-strong: rgba(42, 91, 215, 0.25);
    --app-primary: #2a5bd7;
    --app-primary-strong: #1f469f;
    --app-primary-soft: rgba(42, 91, 215, 0.1);
    --app-primary-softer: rgba(42, 91, 215, 0.06);
    --app-accent: #e14f34;
    --app-success: #16865f;
    --app-warning: #c77700;
    --app-danger: #c2414a;
    --nav-bg: rgba(255, 255, 255, 0.97);
    --nav-text: #63708a;
    --nav-active: #1f469f;
    --nav-hover-bg: rgba(42, 91, 215, 0.08);
    --nav-active-bg: rgba(42, 91, 215, 0.14);
    --nav-border: rgba(23, 32, 51, 0.1);
}

body {
    background:
        radial-gradient(circle at top left, var(--app-primary-softer), transparent 30vw),
        linear-gradient(180deg, var(--app-bg), var(--app-bg-soft));
    color: var(--app-text);
}

.side-nav {
    display: flex;
    flex-direction: column;
    gap: 14px;
    overflow-y: auto;
    background: var(--nav-bg);
    border-right-color: var(--nav-border);
    box-shadow: var(--app-shadow-strong);
    backdrop-filter: blur(18px);
}

.side-nav-links {
    flex: 1;
    align-content: start;
}

.side-nav-link {
    color: var(--nav-text);
}

.side-nav-link:hover {
    background: var(--nav-hover-bg);
    border-color: var(--app-border-strong);
    color: var(--nav-active);
}

.side-nav-link.is-active {
    background: var(--nav-active-bg);
    border-color: var(--app-border-strong);
    color: var(--nav-active);
}

.nav-trigger {
    background: var(--nav-bg);
    border-color: var(--app-border-strong);
    box-shadow: var(--app-shadow);
}

.nav-trigger span {
    background: var(--nav-active);
}

.side-nav-theme {
    margin-top: auto;
    padding-top: 14px;
    border-top: 1px solid var(--nav-border);
}

.side-nav-theme label {
    display: grid;
    gap: 7px;
    color: var(--app-muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
}

.side-nav-theme select {
    width: 100%;
    min-height: 38px;
    padding: 8px 34px 8px 10px;
    border: 1px solid var(--field-border);
    border-radius: 8px;
    color: var(--field-text);
    background: var(--field-bg);
    font: inherit;
    font-size: 13px;
    font-weight: 750;
}

.side-nav-theme select:focus {
    outline: none;
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px var(--app-primary-soft);
}

.calculator-heading h1,
.stats-heading h1,
.billing-heading h1,
.admin-heading h1,
.calculator-step h2,
.stats-panel-header h2 {
    color: var(--app-text);
}

.calculator-panel,
.stats-card,
.stats-panel,
.billing-panel,
.billing-editor,
.billing-preview,
.invoice-preview-wrap,
.admin-panel {
    background: var(--app-panel);
    border-color: var(--app-border);
    box-shadow: var(--app-shadow);
    backdrop-filter: blur(14px);
}

.calculator-step span,
.season-select-btn,
.stat-total-card {
    border-color: var(--app-border-strong);
    background: var(--app-primary-soft);
    color: var(--app-primary-strong);
}

.calculator-season,
.calendar-legend,
.berth-rates,
.stats-panel-header p,
.stats-card span,
.billing-save-status,
.saved-invoice-item small,
.side-nav-session,
.auth-status,
.admin-status {
    color: var(--app-muted);
}

.berth-card,
.date-badge,
.calendar-grid,
.summary-empty,
.summary-content,
.stats-chart-wrap,
.saved-invoice-item,
.saved-invoices-empty,
.auth-secondary-btn,
.btn-secondary {
    background: var(--app-panel-strong);
    border-color: var(--app-border);
    color: var(--app-text);
}

.berth-card:hover,
.saved-invoice-item:hover,
.saved-invoice-row.is-selected .saved-invoice-item {
    background: var(--app-primary-softer);
    border-color: var(--app-border-strong);
}

.berth-card.selected {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px var(--app-primary-soft);
}

.berth-dims,
.date-badge strong,
.stats-card strong,
.saved-invoice-item {
    color: var(--app-text);
}

input,
select,
textarea,
.stats-period-field select,
.billing-fields input,
.billing-fields select,
.billing-fields textarea,
.billing-field input,
.billing-field select,
.auth-form input,
.admin-user-form input,
.admin-user-form select,
.admin-user-card input,
.admin-user-card select {
    border-color: var(--field-border);
    color: var(--field-text);
    background: var(--field-bg);
}

input:focus,
select:focus,
textarea:focus {
    outline: none;
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px var(--app-primary-soft);
}

.billing-save-btn,
.billing-export-btn,
.billing-print-btn,
.summary-copy-btn,
.auth-primary-btn {
    color: #ffffff;
    background: var(--app-primary);
    border-color: var(--app-primary);
    box-shadow: 0 12px 28px color-mix(in srgb, var(--app-primary) 26%, transparent);
}

.billing-save-btn:hover,
.billing-export-btn:hover,
.billing-print-btn:hover,
.summary-copy-btn:hover,
.auth-primary-btn:hover {
    background: var(--app-primary-strong);
}

.season-dot.low,
.legend-box.low {
    background: var(--app-success);
}

.season-dot.high,
.legend-box.high {
    background: var(--app-accent);
}

.stats-period-field span,
.auth-form label,
.admin-user-form label,
.admin-user-card label {
    color: var(--app-primary-strong);
}

.stats-floating-period,
.chart-tooltip,
.custom-tooltip {
    background: var(--nav-bg);
    border-color: var(--app-border-strong);
    color: var(--app-text);
    box-shadow: var(--app-shadow);
}

.side-nav-session strong {
    color: var(--nav-active);
}

.side-nav-session button {
    border-color: var(--app-border);
    color: var(--app-text);
    background: var(--app-panel-strong);
}

body[data-theme="harbor"] input[type="date"]::-webkit-calendar-picker-indicator {
    filter: invert(1);
}

body:not([data-theme="harbor"]) input[type="date"]::-webkit-calendar-picker-indicator {
    filter: none;
}

@media print {
    .invoice-preview-wrap,
    .invoice-sheet {
        box-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
    }

    .invoice-preview-wrap {
        background: #ffffff !important;
        border: 0 !important;
    }
}
