/* <auto-generated>
   Generated by tools/ShinyThemeGen from /themes/*.json. DO NOT EDIT.
   Edit the source JSON theme and re-run: dotnet run --project tools/ShinyThemeGen
   </auto-generated> */

:root {
    color-scheme: light;

    /* =========================================================================
       THE THEME. These are the values to edit - by hand, in your own stylesheet,
       or from the theme composer. Everything below them is derived.
       ========================================================================= */
    --shiny-background: #F6FAFE;
    --shiny-foreground: #161C23;
    --shiny-card: #FFFFFF;
    --shiny-popover: #EFF4FB;
    --shiny-muted: #E8EEF6;
    --shiny-muted-foreground: #3B475B;
    --shiny-primary: #0055D9;
    --shiny-primary-foreground: #FFFFFF;
    --shiny-secondary: #565F6D;
    --shiny-secondary-foreground: #FFFFFF;
    --shiny-accent: #6A4CAD;
    --shiny-accent-foreground: #FFFFFF;
    --shiny-destructive: #C20014;
    --shiny-destructive-foreground: #FFFFFF;
    --shiny-success: #00711C;
    --shiny-success-foreground: #FFFFFF;
    --shiny-info: #0055D9;
    --shiny-info-foreground: #FFFFFF;
    --shiny-warning: #9C4500;
    --shiny-warning-foreground: #FFFFFF;
    --shiny-caution: #B42800;
    --shiny-caution-foreground: #FFFFFF;
    --shiny-critical: #C20014;
    --shiny-critical-foreground: #FFFFFF;
    --shiny-border: #BBC7DF;
    --shiny-input: #6C788D;
    --shiny-ring: #0055D9;
    --shiny-shadow-color: #000000;

    --shiny-font-sans: inherit;
    --shiny-font-display: var(--shiny-font-sans);
    --shiny-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    --shiny-text-scale: 1;
    --shiny-line-height-scale: 1;
    --shiny-font-weight-offset: 0;
    --shiny-letter-spacing-offset: 0px;
    --shiny-radius: 12px;
    --shiny-border-width: 1px;
    --shiny-density: 1;
}

/* The contract the controls consume, derived from whichever palette is in scope.
   Editing one of these pins it; editing the theme value above moves everything
   that leans on it. */
:root,
.shiny-theme-dark,
.shiny-theme-light {

    /* ===== Color roles ===== */
    --shiny-color-primary: var(--shiny-primary);
    --shiny-color-on-primary: var(--shiny-primary-foreground);
    --shiny-color-primary-container: color-mix(in oklab, var(--shiny-primary) 22%, var(--shiny-background));
    --shiny-color-on-primary-container: color-mix(in oklab, var(--shiny-primary) 65%, var(--shiny-foreground));
    --shiny-color-secondary: var(--shiny-secondary);
    --shiny-color-on-secondary: var(--shiny-secondary-foreground);
    --shiny-color-secondary-container: color-mix(in oklab, var(--shiny-secondary) 22%, var(--shiny-background));
    --shiny-color-on-secondary-container: color-mix(in oklab, var(--shiny-secondary) 65%, var(--shiny-foreground));
    --shiny-color-tertiary: var(--shiny-accent);
    --shiny-color-on-tertiary: var(--shiny-accent-foreground);
    --shiny-color-tertiary-container: color-mix(in oklab, var(--shiny-accent) 22%, var(--shiny-background));
    --shiny-color-on-tertiary-container: color-mix(in oklab, var(--shiny-accent) 65%, var(--shiny-foreground));
    --shiny-color-error: var(--shiny-destructive);
    --shiny-color-on-error: var(--shiny-destructive-foreground);
    --shiny-color-error-container: color-mix(in oklab, var(--shiny-destructive) 22%, var(--shiny-background));
    --shiny-color-on-error-container: color-mix(in oklab, var(--shiny-destructive) 65%, var(--shiny-foreground));
    --shiny-color-background: var(--shiny-background);
    --shiny-color-on-background: var(--shiny-foreground);
    --shiny-color-surface: var(--shiny-background);
    --shiny-color-on-surface: var(--shiny-foreground);
    --shiny-color-surface-variant: var(--shiny-muted);
    --shiny-color-on-surface-variant: var(--shiny-muted-foreground);
    --shiny-color-surface-container-lowest: var(--shiny-card);
    --shiny-color-surface-container-low: var(--shiny-popover);
    --shiny-color-surface-container: var(--shiny-muted);
    --shiny-color-surface-container-high: color-mix(in oklab, var(--shiny-foreground) 8%, var(--shiny-background));
    --shiny-color-surface-container-highest: color-mix(in oklab, var(--shiny-foreground) 12%, var(--shiny-background));
    --shiny-color-surface-tint: var(--shiny-primary);
    --shiny-color-outline: var(--shiny-input);
    --shiny-color-outline-variant: var(--shiny-border);
    --shiny-color-shadow: var(--shiny-shadow-color);
    --shiny-color-scrim: var(--shiny-shadow-color);
    --shiny-color-inverse-surface: var(--shiny-foreground);
    --shiny-color-inverse-on-surface: var(--shiny-background);
    --shiny-color-inverse-primary: color-mix(in oklab, var(--shiny-primary) 60%, var(--shiny-background));
    --shiny-color-success: var(--shiny-success);
    --shiny-color-on-success: var(--shiny-success-foreground);
    --shiny-color-success-container: color-mix(in oklab, var(--shiny-success) 22%, var(--shiny-background));
    --shiny-color-on-success-container: color-mix(in oklab, var(--shiny-success) 65%, var(--shiny-foreground));
    --shiny-color-info: var(--shiny-info);
    --shiny-color-on-info: var(--shiny-info-foreground);
    --shiny-color-info-container: color-mix(in oklab, var(--shiny-info) 22%, var(--shiny-background));
    --shiny-color-on-info-container: color-mix(in oklab, var(--shiny-info) 65%, var(--shiny-foreground));
    --shiny-color-warning: var(--shiny-warning);
    --shiny-color-on-warning: var(--shiny-warning-foreground);
    --shiny-color-warning-container: color-mix(in oklab, var(--shiny-warning) 22%, var(--shiny-background));
    --shiny-color-on-warning-container: color-mix(in oklab, var(--shiny-warning) 65%, var(--shiny-foreground));
    --shiny-color-caution: var(--shiny-caution);
    --shiny-color-on-caution: var(--shiny-caution-foreground);
    --shiny-color-caution-container: color-mix(in oklab, var(--shiny-caution) 22%, var(--shiny-background));
    --shiny-color-on-caution-container: color-mix(in oklab, var(--shiny-caution) 65%, var(--shiny-foreground));
    --shiny-color-critical: var(--shiny-critical);
    --shiny-color-on-critical: var(--shiny-critical-foreground);
    --shiny-color-critical-container: color-mix(in oklab, var(--shiny-critical) 22%, var(--shiny-background));
    --shiny-color-on-critical-container: color-mix(in oklab, var(--shiny-critical) 65%, var(--shiny-foreground));

    /* ===== Shape ===== */
    --shiny-shape-corner-none: 0px;
    --shiny-shape-corner-extra-small: calc(var(--shiny-radius) * 0.3333);
    --shiny-shape-corner-small: calc(var(--shiny-radius) * 0.6667);
    --shiny-shape-corner-medium: calc(var(--shiny-radius) * 1);
    --shiny-shape-corner-large: calc(var(--shiny-radius) * 1.3333);
    --shiny-shape-corner-extra-large: calc(var(--shiny-radius) * 2.3333);
    --shiny-shape-corner-full: 9999px;

    /* ===== Border widths ===== */
    --shiny-border-thin: var(--shiny-border-width);
    --shiny-border-medium: calc(var(--shiny-border-width) * 2);
    --shiny-border-thick: calc(var(--shiny-border-width) * 4);

    /* ===== State ===== */
    --shiny-state-hover-opacity: 0.08;
    --shiny-state-focus-opacity: 0.1;
    --shiny-state-pressed-opacity: 0.1;
    --shiny-state-dragged-opacity: 0.16;

    /* ===== Density ===== */
    --shiny-density-scale: var(--shiny-density);
    --shiny-density-control-height: calc(44px * var(--shiny-density));
    --shiny-density-control-height-small: calc(32px * var(--shiny-density));
    --shiny-density-row-height: calc(48px * var(--shiny-density));
    --shiny-density-touch-target: 44px;

    /* ===== Spacing ===== */
    --shiny-spacing-0: 0px;
    --shiny-spacing-1: calc(4px * var(--shiny-density));
    --shiny-spacing-2: calc(8px * var(--shiny-density));
    --shiny-spacing-3: calc(12px * var(--shiny-density));
    --shiny-spacing-4: calc(16px * var(--shiny-density));
    --shiny-spacing-5: calc(24px * var(--shiny-density));
    --shiny-spacing-6: calc(32px * var(--shiny-density));
    --shiny-spacing-7: calc(48px * var(--shiny-density));
    --shiny-spacing-8: calc(64px * var(--shiny-density));

    /* ===== Type scale ===== */
    --shiny-type-font-family: var(--shiny-font-sans);
    --shiny-type-font-family-display: var(--shiny-font-display);
    --shiny-type-font-family-mono: var(--shiny-font-mono);
    --shiny-type-scale: var(--shiny-text-scale);
    --shiny-type-display-large-size: calc(57px * var(--shiny-text-scale));
    --shiny-type-display-large-line-height: calc(64px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-display-large-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-display-large-tracking: calc(-0.25px + var(--shiny-letter-spacing-offset));
    --shiny-type-display-medium-size: calc(45px * var(--shiny-text-scale));
    --shiny-type-display-medium-line-height: calc(52px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-display-medium-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-display-medium-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-display-small-size: calc(36px * var(--shiny-text-scale));
    --shiny-type-display-small-line-height: calc(44px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-display-small-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-display-small-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-headline-large-size: calc(32px * var(--shiny-text-scale));
    --shiny-type-headline-large-line-height: calc(40px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-headline-large-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-headline-large-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-headline-medium-size: calc(28px * var(--shiny-text-scale));
    --shiny-type-headline-medium-line-height: calc(36px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-headline-medium-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-headline-medium-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-headline-small-size: calc(24px * var(--shiny-text-scale));
    --shiny-type-headline-small-line-height: calc(32px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-headline-small-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-headline-small-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-title-large-size: calc(22px * var(--shiny-text-scale));
    --shiny-type-title-large-line-height: calc(28px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-title-large-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-title-large-tracking: calc(0px + var(--shiny-letter-spacing-offset));
    --shiny-type-title-medium-size: calc(16px * var(--shiny-text-scale));
    --shiny-type-title-medium-line-height: calc(24px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-title-medium-weight: calc(500 + var(--shiny-font-weight-offset));
    --shiny-type-title-medium-tracking: calc(0.15px + var(--shiny-letter-spacing-offset));
    --shiny-type-title-small-size: calc(14px * var(--shiny-text-scale));
    --shiny-type-title-small-line-height: calc(20px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-title-small-weight: calc(500 + var(--shiny-font-weight-offset));
    --shiny-type-title-small-tracking: calc(0.1px + var(--shiny-letter-spacing-offset));
    --shiny-type-body-large-size: calc(16px * var(--shiny-text-scale));
    --shiny-type-body-large-line-height: calc(24px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-body-large-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-body-large-tracking: calc(0.5px + var(--shiny-letter-spacing-offset));
    --shiny-type-body-medium-size: calc(14px * var(--shiny-text-scale));
    --shiny-type-body-medium-line-height: calc(20px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-body-medium-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-body-medium-tracking: calc(0.25px + var(--shiny-letter-spacing-offset));
    --shiny-type-body-small-size: calc(12px * var(--shiny-text-scale));
    --shiny-type-body-small-line-height: calc(16px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-body-small-weight: calc(400 + var(--shiny-font-weight-offset));
    --shiny-type-body-small-tracking: calc(0.4px + var(--shiny-letter-spacing-offset));
    --shiny-type-label-large-size: calc(14px * var(--shiny-text-scale));
    --shiny-type-label-large-line-height: calc(20px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-label-large-weight: calc(500 + var(--shiny-font-weight-offset));
    --shiny-type-label-large-tracking: calc(0.1px + var(--shiny-letter-spacing-offset));
    --shiny-type-label-medium-size: calc(12px * var(--shiny-text-scale));
    --shiny-type-label-medium-line-height: calc(16px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-label-medium-weight: calc(500 + var(--shiny-font-weight-offset));
    --shiny-type-label-medium-tracking: calc(0.5px + var(--shiny-letter-spacing-offset));
    --shiny-type-label-small-size: calc(11px * var(--shiny-text-scale));
    --shiny-type-label-small-line-height: calc(16px * var(--shiny-text-scale) * var(--shiny-line-height-scale));
    --shiny-type-label-small-weight: calc(500 + var(--shiny-font-weight-offset));
    --shiny-type-label-small-tracking: calc(0.5px + var(--shiny-letter-spacing-offset));

    /* ===== Elevation ===== */
    --shiny-elevation-0: none;
    --shiny-elevation-1: 0 1px 2px rgba(0,0,0,0.3), 0 1px 3px 1px rgba(0,0,0,0.15);
    --shiny-elevation-2: 0 1px 2px rgba(0,0,0,0.3), 0 2px 6px 2px rgba(0,0,0,0.15);
    --shiny-elevation-3: 0 4px 8px 3px rgba(0,0,0,0.15), 0 1px 3px rgba(0,0,0,0.3);
    --shiny-elevation-4: 0 6px 10px 4px rgba(0,0,0,0.15), 0 2px 3px rgba(0,0,0,0.3);
    --shiny-elevation-5: 0 8px 12px 6px rgba(0,0,0,0.15), 0 4px 4px rgba(0,0,0,0.3);
}

/* Explicit dark mode (toggle .shiny-theme-dark on <html> or a container) */
:root.shiny-theme-dark,
.shiny-theme-dark {
    color-scheme: dark;

    --shiny-background: #0F141A;
    --shiny-foreground: #DBE3EE;
    --shiny-card: #090F14;
    --shiny-popover: #161C23;
    --shiny-muted: #1A2028;
    --shiny-muted-foreground: #BBC7DF;
    --shiny-primary: #A3BAFF;
    --shiny-primary-foreground: #002AA1;
    --shiny-secondary: #BDC7D7;
    --shiny-secondary-foreground: #28313D;
    --shiny-accent: #DAB3FF;
    --shiny-accent-foreground: #341E78;
    --shiny-destructive: #FF8A73;
    --shiny-destructive-foreground: #830000;
    --shiny-success: #63DE80;
    --shiny-success-foreground: #003E00;
    --shiny-info: #A3BAFF;
    --shiny-info-foreground: #002AA1;
    --shiny-warning: #FFAC48;
    --shiny-warning-foreground: #641300;
    --shiny-caution: #FF984F;
    --shiny-caution-foreground: #780000;
    --shiny-critical: #FF8A73;
    --shiny-critical-foreground: #830000;
    --shiny-border: #3B475B;
    --shiny-input: #8591A7;
    --shiny-ring: #A3BAFF;
    --shiny-shadow-color: #000000;
}

/* Explicit light mode has to restate the scheme: it may sit inside a dark scope */
:root.shiny-theme-light,
.shiny-theme-light {
    color-scheme: light;

    --shiny-background: #F6FAFE;
    --shiny-foreground: #161C23;
    --shiny-card: #FFFFFF;
    --shiny-popover: #EFF4FB;
    --shiny-muted: #E8EEF6;
    --shiny-muted-foreground: #3B475B;
    --shiny-primary: #0055D9;
    --shiny-primary-foreground: #FFFFFF;
    --shiny-secondary: #565F6D;
    --shiny-secondary-foreground: #FFFFFF;
    --shiny-accent: #6A4CAD;
    --shiny-accent-foreground: #FFFFFF;
    --shiny-destructive: #C20014;
    --shiny-destructive-foreground: #FFFFFF;
    --shiny-success: #00711C;
    --shiny-success-foreground: #FFFFFF;
    --shiny-info: #0055D9;
    --shiny-info-foreground: #FFFFFF;
    --shiny-warning: #9C4500;
    --shiny-warning-foreground: #FFFFFF;
    --shiny-caution: #B42800;
    --shiny-caution-foreground: #FFFFFF;
    --shiny-critical: #C20014;
    --shiny-critical-foreground: #FFFFFF;
    --shiny-border: #BBC7DF;
    --shiny-input: #6C788D;
    --shiny-ring: #0055D9;
    --shiny-shadow-color: #000000;
}

/* Follow OS dark preference unless explicitly set to light */
@media (prefers-color-scheme: dark) {
    :root:not(.shiny-theme-light) {
        color-scheme: dark;

        --shiny-background: #0F141A;
        --shiny-foreground: #DBE3EE;
        --shiny-card: #090F14;
        --shiny-popover: #161C23;
        --shiny-muted: #1A2028;
        --shiny-muted-foreground: #BBC7DF;
        --shiny-primary: #A3BAFF;
        --shiny-primary-foreground: #002AA1;
        --shiny-secondary: #BDC7D7;
        --shiny-secondary-foreground: #28313D;
        --shiny-accent: #DAB3FF;
        --shiny-accent-foreground: #341E78;
        --shiny-destructive: #FF8A73;
        --shiny-destructive-foreground: #830000;
        --shiny-success: #63DE80;
        --shiny-success-foreground: #003E00;
        --shiny-info: #A3BAFF;
        --shiny-info-foreground: #002AA1;
        --shiny-warning: #FFAC48;
        --shiny-warning-foreground: #641300;
        --shiny-caution: #FF984F;
        --shiny-caution-foreground: #780000;
        --shiny-critical: #FF8A73;
        --shiny-critical-foreground: #830000;
        --shiny-border: #3B475B;
        --shiny-input: #8591A7;
        --shiny-ring: #A3BAFF;
        --shiny-shadow-color: #000000;
    }
}
