/*
 * Zenit public theme API
 *
 * Plugins must consume the semantic --zp-* properties below. Raw palette
 * values are private to this file; component styles must not depend on them.
 */
:root,
:root[data-theme="light"] {
    color-scheme: light;
    --zp-page: #f3f7fb;
    --zp-surface: #ffffff;
    --zp-surface-muted: #e8f0f8;
    --zp-surface-raised: #ffffff;
    --zp-text: #172033;
    --zp-text-muted: #5b6b82;
    --zp-heading: #071d35;
    --zp-border: rgba(10, 43, 80, .13);
    --zp-border-strong: rgba(10, 43, 80, .22);
    --zp-link: #0b3f75;
    --zp-link-hover: #0b5f8a;
    --zp-accent: #0b5f8a;
    --zp-accent-strong: #0a2b50;
    --zp-on-accent: #ffffff;
    --zp-success: #14734b;
    --zp-success-bg: #e9f8f1;
    --zp-warning: #86580a;
    --zp-warning-bg: #fff3d8;
    --zp-danger: #a32f3c;
    --zp-danger-bg: #fff0f1;
    --zp-focus: #0b5f8a;
    --zp-focus-inner: #ffffff;
    --zp-input-bg: #ffffff;
    --zp-code-bg: #e8f0f8;
    --zp-table-stripe: #eef8fc;
    --zp-overlay: rgba(7, 21, 45, .88);
    --zp-header: rgba(247, 250, 253, .94);
    --zp-footer: #071d35;
    --zp-footer-text: #d9e9f7;
    --zp-shadow-sm: 0 10px 30px rgba(7, 29, 53, .08);
    --zp-shadow-lg: 0 24px 70px rgba(7, 29, 53, .14);
    --zp-chart-grid: #c4d4e2;
    --zp-chart-one: #1769aa;
    --zp-chart-two: #14734b;
    --zp-chart-three: #b85c00;

    /* Backwards-compatible aliases while component styles migrate. */
    --navy-950: var(--zp-heading);
    --navy-900: var(--zp-accent-strong);
    --navy-800: var(--zp-link);
    --blue-600: var(--zp-accent);
    --blue-500: var(--zp-link-hover);
    --blue-100: var(--zp-table-stripe);
    --blue-050: var(--zp-page);
    --ink: var(--zp-text);
    --muted: var(--zp-text-muted);
    --surface: var(--zp-surface);
    --surface-alt: var(--zp-page);
    --surface-strong: var(--zp-surface-muted);
    --border: var(--zp-border);
    --border-strong: var(--zp-border-strong);
    --success: var(--zp-success);
    --success-bg: var(--zp-success-bg);
    --danger: var(--zp-danger);
    --danger-bg: var(--zp-danger-bg);
    --focus-ring: var(--zp-focus);
    --focus-ring-inner: var(--zp-focus-inner);
    --shadow-sm: var(--zp-shadow-sm);
    --shadow-lg: var(--zp-shadow-lg);
}

:root[data-theme="dark"] {
    color-scheme: dark;
    --zp-page: #081421;
    --zp-surface: #102235;
    --zp-surface-muted: #193149;
    --zp-surface-raised: #142a40;
    --zp-text: #e8eef6;
    --zp-text-muted: #b4c3d3;
    --zp-heading: #f5f9fd;
    --zp-border: rgba(194, 218, 239, .18);
    --zp-border-strong: rgba(194, 218, 239, .32);
    --zp-link: #8bd5ff;
    --zp-link-hover: #b7e6ff;
    --zp-accent: #53bce9;
    --zp-accent-strong: #0b3555;
    --zp-on-accent: #ffffff;
    --zp-success: #77dcae;
    --zp-success-bg: #123b30;
    --zp-warning: #ffd17a;
    --zp-warning-bg: #463514;
    --zp-danger: #ff9ba5;
    --zp-danger-bg: #481f29;
    --zp-focus: #70d2ff;
    --zp-focus-inner: #081421;
    --zp-input-bg: #0c1d2e;
    --zp-code-bg: #071321;
    --zp-table-stripe: #142c42;
    --zp-overlay: rgba(1, 7, 14, .92);
    --zp-header: rgba(8, 20, 33, .96);
    --zp-footer: #050d17;
    --zp-footer-text: #cfdeeb;
    --zp-shadow-sm: 0 10px 30px rgba(0, 0, 0, .3);
    --zp-shadow-lg: 0 24px 70px rgba(0, 0, 0, .48);
    --zp-chart-grid: #47627a;
    --zp-chart-one: #69c9ff;
    --zp-chart-two: #77dcae;
    --zp-chart-three: #ffc371;
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme]),
    :root[data-theme="system"] {
        color-scheme: dark;
        --zp-page: #081421;
        --zp-surface: #102235;
        --zp-surface-muted: #193149;
        --zp-surface-raised: #142a40;
        --zp-text: #e8eef6;
        --zp-text-muted: #b4c3d3;
        --zp-heading: #f5f9fd;
        --zp-border: rgba(194, 218, 239, .18);
        --zp-border-strong: rgba(194, 218, 239, .32);
        --zp-link: #8bd5ff;
        --zp-link-hover: #b7e6ff;
        --zp-accent: #53bce9;
        --zp-accent-strong: #0b3555;
        --zp-on-accent: #ffffff;
        --zp-success: #77dcae;
        --zp-success-bg: #123b30;
        --zp-warning: #ffd17a;
        --zp-warning-bg: #463514;
        --zp-danger: #ff9ba5;
        --zp-danger-bg: #481f29;
        --zp-focus: #70d2ff;
        --zp-focus-inner: #081421;
        --zp-input-bg: #0c1d2e;
        --zp-code-bg: #071321;
        --zp-table-stripe: #142c42;
        --zp-overlay: rgba(1, 7, 14, .92);
        --zp-header: rgba(8, 20, 33, .96);
        --zp-footer: #050d17;
        --zp-footer-text: #cfdeeb;
        --zp-shadow-sm: 0 10px 30px rgba(0, 0, 0, .3);
        --zp-shadow-lg: 0 24px 70px rgba(0, 0, 0, .48);
        --zp-chart-grid: #47627a;
        --zp-chart-one: #69c9ff;
        --zp-chart-two: #77dcae;
        --zp-chart-three: #ffc371;
    }
}

body { background: var(--zp-page); color: var(--zp-text); }
h1, h2, h3, h4, h5, h6 { color: var(--zp-heading); }
a { color: var(--zp-link); }
a:hover { color: var(--zp-link-hover); }
.site-header { background: var(--zp-header); border-color: var(--zp-border); }
.brand, .main-navigation a, .submenu-toggle { color: var(--zp-heading); }
.sub-menu, .menu-toggle, .content-card, .card, .sidebar-card { background: var(--zp-surface); border-color: var(--zp-border); }
input, select, textarea { background: var(--zp-input-bg); color: var(--zp-text); border-color: var(--zp-border-strong); }
code, pre { background: var(--zp-code-bg); color: var(--zp-text); }
table { background: var(--zp-surface); color: var(--zp-text); }
th, td { border-color: var(--zp-border); }
tbody tr:nth-child(even) { background: var(--zp-table-stripe); }
.site-footer { background: var(--zp-footer); color: var(--zp-footer-text); }
.preview-bar { background: var(--zp-footer); color: var(--zp-footer-text); }
.hero__media video, .migrated-page-content video { background: var(--zp-footer); }
.button, .surface-band { background: var(--zp-accent-strong); color: var(--zp-on-accent); }
.callout { background: var(--zp-surface-muted); color: var(--zp-text); border-color: var(--zp-border); }
.rutilo-messages { background: var(--zp-surface); color: var(--zp-text); border-color: var(--zp-border); }

:root[data-theme="dark"] .hero,
:root[data-theme="system"] .hero {
    background: linear-gradient(135deg, var(--zp-surface-muted), var(--zp-page));
    color: var(--zp-text);
}
:root[data-theme="dark"] .hero::before,
:root[data-theme="system"] .hero::before {
    background: radial-gradient(circle, var(--zp-accent-strong), transparent 68%);
}

/* Public plugin contracts: aliases are set here, never inside plugin code. */
:root,
.zenit-activity {
    --surface-color: var(--zp-surface);
    --border-color: var(--zp-border);
    --za-surface: var(--zp-surface);
    --za-surface-soft: var(--zp-surface-muted);
    --za-text: var(--zp-text);
    --za-muted: var(--zp-text-muted);
    --za-border: var(--zp-border);
    --za-accent: var(--zp-link);
    --za-success: var(--zp-success);
}

/* Components that historically used literal light palette values. */
.hero__media,
.callout,
.contact-form input,
.contact-form select,
.contact-form textarea,
.rutilo-messages,
.rutilo-knowledge__controls input,
.rutilo-source-card,
.weldexp-data-view,
.query-tables,
.weldexp-diagram--full,
.preheat-diagram,
.schaeffler-diagram,
.development-activity,
.development-activity-page,
.development-card,
.release-card,
.gallery-dialog__panel,
.image-modal__panel {
    background-color: var(--zp-surface);
    color: var(--zp-text);
    border-color: var(--zp-border);
}
.notice, .callout, .release-note__callout { background-color: var(--zp-surface-muted); color: var(--zp-text); }
.status-active, .is-success { background-color: var(--zp-success-bg); color: var(--zp-success); }
.status-progress, .is-warning { background-color: var(--zp-warning-bg); color: var(--zp-warning); }
.is-error, [aria-invalid="true"] { color: var(--zp-danger); }
.rutilo-panel__header,
.rutilo-message.is-user > div { background: var(--zp-accent-strong); color: var(--zp-on-accent); }
.rutilo-form input { background: var(--zp-input-bg); color: var(--zp-text); }
.gallery-dialog { background: var(--zp-overlay); }
.zenit-activity__hero, .zenit-activity__notice { background: var(--zp-surface-muted); }
.zenit-release-notes, .zenit-release-notes__item { background: var(--zp-surface); color: var(--zp-text); border-color: var(--zp-border); }
.zenit-release-notes__body { background: var(--zp-surface-raised); color: var(--zp-text); border-color: var(--zp-border); }
.zenit-activity a, .zenit-release-notes a { color: var(--zp-link); }
.zenit-activity h1, .zenit-activity h2, .zenit-activity h3,
.zenit-release-notes h1, .zenit-release-notes h2, .zenit-release-notes h3 { color: var(--zp-heading); }
.zenit-activity p, .zenit-release-notes p { color: var(--zp-text); }
.zenit-activity pre, .zenit-release-notes pre { background: var(--zp-code-bg); color: var(--zp-text); }
.zenit-activity__badge--open { background: var(--zp-surface-muted); color: var(--zp-link); }
.zenit-activity__badge--merged { background: var(--zp-success-bg); color: var(--zp-success); }
.zenit-activity__badge--draft { background: var(--zp-warning-bg); color: var(--zp-warning); }
.zenit-activity__badge--closed { background: var(--zp-surface-muted); color: var(--zp-text-muted); }

.weldexp-data-view,
.query-tables,
.weldexp-diagram--full { background: var(--zp-surface); color: var(--zp-text); border-color: var(--zp-border); }
.weldexp-data-view :is(input, select, textarea),
.query-tables :is(input, select, textarea),
.weldexp-diagram--full :is(input, select, textarea) { background: var(--zp-input-bg); color: var(--zp-text); border-color: var(--zp-border-strong); }
.weldexp-data-view :is(label, small),
.query-tables :is(label, small),
.weldexp-diagram--full :is(label, small) { color: var(--zp-text-muted); }
.weldexp-data-view table,
.query-tables table,
.weldexp-diagram--full table { background: var(--zp-surface); color: var(--zp-text); }
.weldexp-data-view th,
.query-tables th,
.weldexp-diagram--full th { background: var(--zp-surface-muted); color: var(--zp-heading); }
.weldexp-data-view tr:nth-child(even),
.query-tables tr:nth-child(even),
.weldexp-diagram--full tr:nth-child(even) { background: var(--zp-table-stripe); }

.theme-switcher {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    min-height: 42px;
    padding: 4px 8px;
    border: 1px solid var(--zp-border);
    border-radius: 999px;
    background: var(--zp-surface);
    color: var(--zp-text);
}
.theme-switcher__icon { width: 16px; height: 16px; border: 2px solid currentColor; border-radius: 50%; }
.theme-switcher__icon::after { content: ""; display: block; width: 50%; height: 100%; background: currentColor; border-radius: 999px 0 0 999px; }
.theme-switcher__select { min-height: 32px; padding: 2px 24px 2px 4px; border: 0; background-color: transparent; color: inherit; font-size: .78rem; font-weight: 760; cursor: pointer; }

@media (max-width: 1240px) {
    .theme-switcher { margin-left: auto; }
    .main-navigation { background: var(--zp-surface); border-color: var(--zp-border); }
}
@media (max-width: 390px) {
    .site-header__inner { gap: 8px; }
    .brand img { width: 110px; }
    .theme-switcher { padding-inline: 4px; }
    .theme-switcher__icon { display: none; }
    .theme-switcher__select { max-width: 72px; padding-right: 16px; font-size: .7rem; }
}

@media (forced-colors: active) {
    .theme-switcher { border: 1px solid ButtonText; forced-color-adjust: auto; }
    .theme-switcher__icon { border-color: ButtonText; }
}
