/* Shared Fynnovation palette. Semantic warning/error colours remain Radzen's. */
:root {
    --fyn-bg: #14231f;
    --fyn-surface: #20362e;
    --fyn-raised: #29453a;
    --fyn-border: #456758;
    --fyn-text: #edf5f0;
    --fyn-muted: #b0c6b9;
    --fyn-input: #182b23;
    --fyn-accent: #78cbb1;
    --fyn-brand: #207c70;
    --fyn-on-brand: #fff;
    --rz-root-font-size: 16px;
    --rz-body-font-size: .875rem;
    --rz-body-line-height: 1.5;
    --rz-primary: var(--fyn-brand);
    --rz-primary-light: #37998a;
    --rz-primary-lighter: #cdece0;
    --rz-primary-dark: #176155;
    --rz-primary-darker: #10483f;
    --rz-on-primary: var(--fyn-on-brand);
    --rz-text-color: var(--fyn-text);
    --rz-text-title-color: var(--fyn-text);
    --rz-text-secondary-color: var(--fyn-muted);
    --rz-text-tertiary-color: var(--fyn-muted);
    --rz-base-background-color: var(--fyn-surface);
    --rz-body-background-color: var(--fyn-bg);
    --rz-border-normal: 1px solid var(--fyn-border);
    --rz-border-radius: .5rem;
    --rz-link-color: var(--fyn-accent);
    --rz-link-hover-color: var(--fyn-text);
    --rz-header-background-color: var(--fyn-surface);
    --rz-header-color: var(--fyn-text);
    --rz-sidebar-background-color: var(--fyn-surface);
    --rz-sidebar-color: var(--fyn-text);
    --rz-panel-menu-background-color: var(--fyn-surface);
    --rz-panel-menu-color: var(--fyn-text);
    --rz-panel-menu-item-active-background-color: var(--fyn-raised);
    --rz-panel-menu-item-active-color: var(--fyn-accent);
    --rz-card-background-color: var(--fyn-surface);
    --rz-card-padding: 1rem;
    --rz-card-border: 1px solid var(--fyn-border);
    --rz-card-border-radius: .65rem;
    --rz-dialog-background-color: var(--fyn-surface);
    --rz-dialog-title-background-color: var(--fyn-raised);
    --rz-input-height: 2.5rem;
    --rz-input-padding-block: .5rem;
    --rz-input-padding-inline: .75rem;
    --rz-input-background-color: var(--fyn-input);
    --rz-input-color: var(--fyn-text);
    --rz-input-placeholder-color: var(--fyn-muted);
    --rz-input-border: 1px solid var(--fyn-border);
    --rz-input-hover-border: 1px solid var(--fyn-accent);
    --rz-input-focus-border: 1px solid var(--fyn-accent);
    --rz-input-hover-background-color: var(--fyn-input);
    --rz-input-focus-background-color: var(--fyn-input);
    --rz-grid-background-color: var(--fyn-surface);
    --rz-grid-header-background-color: var(--fyn-raised);
    --rz-grid-cell-color: var(--fyn-text);
    --rz-grid-header-color: var(--fyn-text);
    --rz-grid-cell-padding: .55rem .75rem;
    --rz-tabs-background-color: var(--fyn-surface);
    --rz-tabs-tab-background-color: var(--fyn-raised);
    --rz-tabs-tab-color: var(--fyn-text);
    --rz-tabs-tab-selected-background-color: var(--fyn-brand);
    --rz-tabs-tab-selected-color: var(--fyn-on-brand);
    --rz-accordion-item-background-color: var(--fyn-surface);
    --rz-accordion-header-background-color: var(--fyn-raised);
    --rz-accordion-header-color: var(--fyn-text);
}
/* Radzen's appearance switch replaces the software theme link. */
:root:has(link[href*="software"]:not([href*="dark"])) {
    --fyn-bg: #edf3ef;
    --fyn-surface: #ffffff;
    --fyn-raised: #e0eee5;
    --fyn-border: #a2bdb0;
    --fyn-text: #1d372b;
    --fyn-muted: #526e60;
    --fyn-input: #f8fbf9;
    --fyn-accent: #196c59;
}
.rz-header { border-bottom: 1px solid var(--fyn-border); box-shadow: none; }
.rz-sidebar { border-right: 1px solid var(--fyn-border); }
.fyn-page-content { width: 100%; max-width: 1440px; margin-inline: auto; padding: 1.5rem; }
.rz-card, .rz-dialog, .rz-fieldset, .rz-data-grid { border-color: var(--fyn-border); }
.rz-fieldset { min-width: 0; border-radius: .6rem; }
.rz-button { border-radius: .45rem; }
.rz-button-md { min-height: 2.5rem; }
.rz-tabview-nav { flex-wrap: wrap; gap: .4rem; }
.rz-tabview-nav li { border-radius: .5rem .5rem 0 0; }
.rz-panel-menu .rz-navigation-item-link:hover { background: var(--fyn-raised); }
.rz-panel-menu .rz-navigation-item-link.rz-navigation-item-link-active { box-shadow: inset 3px 0 var(--fyn-accent); }
@media (max-width: 767.98px) { .fyn-page-content { padding: .85rem; } }
/* Popup surfaces live outside the page container and share the same palette. */
.rz-dropdown-panel, .rz-multiselect-panel, .rz-autocomplete-panel, .rz-listbox {
    background: var(--fyn-surface);
    color: var(--fyn-text);
    border-color: var(--fyn-border);
}
.rz-dropdown-item:hover, .rz-multiselect-item:hover { background: var(--fyn-raised); }
.rz-dialog-titlebar, .rz-grid-table thead { color: var(--fyn-text); }

/* Compact home overview and global configuration. */
.fyn-home h1, .admin-main-config h1 {
    margin: 0 0 .75rem;
    font-size: clamp(1.4rem, 2vw, 1.8rem);
    line-height: 1.3;
    font-weight: 700;
    color: var(--fyn-text);
}
.fyn-home-intro h2 { font-size: 1.1rem; margin: 0 0 .75rem; line-height: 1.5; }
.fyn-home-intro p { max-width: 80ch; margin: 0; color: var(--fyn-muted); line-height: 1.65; }
.fyn-home-notice { display: flex; align-items: flex-start; gap: .65rem; padding: .85rem 1rem; margin: 1.25rem 0; border: 1px solid var(--fyn-border); border-radius: .6rem; background: var(--fyn-surface); color: var(--fyn-muted); line-height: 1.5; }
.fyn-home-notice .rz-icon { flex: 0 0 auto; color: var(--fyn-accent); }
.fyn-home-section-title { font-size: 1.2rem; margin: 1.5rem 0 1rem; }
.fyn-feature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.fyn-feature-card { min-width: 0; padding: 1.1rem; border: 1px solid var(--fyn-border); border-radius: .65rem; background: var(--fyn-surface); }
.fyn-feature-card h3 { display: flex; align-items: center; gap: .6rem; font-size: 1rem; margin: 0 0 .85rem; padding-bottom: .75rem; border-bottom: 1px solid var(--fyn-border); }
.fyn-feature-card h3 .rz-icon { color: var(--fyn-accent); }
.fyn-feature-card ul { list-style: none; padding: 0; margin: 0; }
.fyn-feature-card li { line-height: 1.6; color: var(--fyn-muted); overflow-wrap: anywhere; }
.fyn-feature-card li + li { margin-top: .65rem; }
.fyn-feature-card li b { color: var(--fyn-text); }
.admin-main-config.server-settings-layout { margin-top: 0; margin-bottom: 1rem; }
.admin-main-config .rz-fieldset { margin-bottom: 1.25rem; }
.admin-main-config .server-settings-heading { margin-bottom: 1rem; }
.admin-main-config .rz-alert { margin: 0 0 1rem; }
.admin-main-config .rz-fieldset-content p { color: var(--fyn-muted); line-height: 1.6; }
.admin-main-config .rz-fieldset-content p:last-child { margin-bottom: 0; }
.rz-sidebar .rz-panel-menu, .rz-sidebar .rz-navigation-item, .rz-sidebar .rz-navigation-item-wrapper { background: var(--fyn-surface); color: var(--fyn-text); }
.rz-sidebar .rz-navigation-item-link { color: var(--fyn-text); border-color: var(--fyn-border); }
.rz-sidebar .rz-navigation-item-wrapper:hover, .rz-sidebar .rz-navigation-item-wrapper-active { background: var(--fyn-raised); }
.rz-sidebar .rz-navigation-item-wrapper-active { box-shadow: inset 3px 0 var(--fyn-accent); }
@media (max-width: 800px) { .fyn-feature-grid { grid-template-columns: minmax(0, 1fr); } }

/* DataGrid uses separate colours for stripes, frozen columns and selection. */
:root {
    --rz-grid-stripe-background-color: color-mix(in srgb, var(--fyn-surface) 65%, var(--fyn-raised));
    --rz-grid-stripe-odd-background-color: var(--fyn-surface);
    --rz-grid-hover-background-color: var(--fyn-raised);
    --rz-grid-hover-color: var(--fyn-text);
    --rz-grid-selected-background-color: var(--fyn-brand);
    --rz-grid-selected-color: var(--fyn-on-brand);
    --rz-grid-cell-focus-background-color: var(--fyn-raised);
    --rz-grid-cell-focus-color: var(--fyn-text);
    --rz-grid-frozen-cell-background-color: var(--fyn-surface);
    --rz-grid-frozen-stripe-background-color: var(--rz-grid-stripe-background-color);
    --rz-grid-frozen-stripe-odd-background-color: var(--rz-grid-stripe-odd-background-color);
    --rz-grid-header-sorted-background-color: var(--fyn-raised);
    --rz-grid-detail-template-background-color: var(--fyn-bg);
    --rz-grid-filter-background-color: var(--fyn-surface);
    --rz-grid-filter-buttons-background-color: var(--fyn-surface);
    --rz-grid-foot-background-color: var(--fyn-raised);
    --rz-grid-foot-cell-color: var(--fyn-text);
    --rz-grid-toolbar-background-color: var(--fyn-surface);
    --rz-grid-group-header-item-background-color: var(--fyn-raised);
    --rz-grid-group-header-item-color: var(--fyn-text);
}
