/* Primitive scales: immutable defaults; customer input only addresses semantic tokens. */
:root {
    --kernel-color-gray-950:#111113;
    --kernel-color-gray-900:#18191b;
    --kernel-color-gray-850:#212225;
    --kernel-color-gray-800:#2e3135;
    --kernel-color-gray-1000:#0d0e10;
    --kernel-color-gray-50:#edeef0;
    --kernel-color-gray-300:#b0b4ba;
    --kernel-color-gray-400:#9ba1aa;
    --kernel-color-gray-750:#363a3f;
    --kernel-color-blue-300:#70b8ff;
    --kernel-color-blue-500:#0090ff;
    --kernel-color-blue-950:#0d2847;
    --kernel-color-green-300:#65d6a0;
    --kernel-color-amber-300:#ffca70;
    --kernel-color-red-300:#ff9592;
    --kernel-size-1:.25rem;
    --kernel-size-2:.5rem;
    --kernel-size-3:.75rem;
    --kernel-size-4:1rem;
    --kernel-size-5:1.25rem;
    --kernel-size-6:1.5rem;
    --kernel-size-8:2rem;
    --kernel-radius-1:6px;
    --kernel-radius-2:10px;
    --kernel-font-sans:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
    --kernel-font-mono:ui-monospace,'Cascadia Code',monospace;
    --kernel-text-1:.6875rem;
    --kernel-text-2:.9375rem;
    --kernel-motion-1:140ms;
    --kernel-motion-2:360ms;
    --kernel-size-px-28:28px;
    --kernel-size-px-16:16px;
    --kernel-stroke-1:1.5;
    --kernel-size-px-56:56px;
    --kernel-size-px-40:40px;
    --kernel-size-px-96:96px;
    --kernel-size-px-120:120px;
    --kernel-size-px-72:72px;
    --kernel-size-px-160:160px;
    --kernel-shadow-1:0 8px 30px #0004;
    --kernel-size-rem-065:.65rem;
    --kernel-size-rem-08:.8rem;
    --kernel-radius-3:.4rem;
    --kernel-shadow-2:0 24px 80px #0008;
    --kernel-color-black-alpha-60:#0009;
    --kernel-size-px-24:24px;
    --kernel-size-px-18:18px;
    --kernel-size-px-20:20px;
    --kernel-color-teal-300:#5fd4c4;
    --kernel-color-sage-300:#a8c3a0;
    --kernel-color-rose-300:#ff8fb1;
    --kernel-color-violet-300:#c1a7ff;
    --kernel-color-emerald-300:#4cc38a;
    --kernel-color-cyan-300:#4ccce6;
    --kernel-color-gray-600:#5f646c;
    --kernel-size-px-240:240px;
    --kernel-font-serif:ui-serif,Georgia,Cambria,'Times New Roman',serif;
    --kernel-font-inter:'Inter',var(--kernel-font-sans);
    --kernel-font-roboto:'Roboto',var(--kernel-font-sans);
    --kernel-font-manrope:'Manrope',var(--kernel-font-sans);
    --kernel-font-space-grotesk:'Space Grotesk',var(--kernel-font-sans);
    --kernel-font-ibm-plex-sans:'IBM Plex Sans',var(--kernel-font-sans);
    --kernel-font-dm-serif-display:'DM Serif Display',var(--kernel-font-serif);
    --kernel-font-playfair-display:'Playfair Display',var(--kernel-font-serif);
    --kernel-font-source-serif-4:'Source Serif 4',var(--kernel-font-serif);
    --kernel-font-lora:'Lora',var(--kernel-font-serif);
    --kernel-font-jetbrains-mono:'JetBrains Mono',var(--kernel-font-mono);
    --kernel-font-ibm-plex-mono:'IBM Plex Mono',var(--kernel-font-mono);
    --kernel-font-fira-code:'Fira Code',var(--kernel-font-mono);
}

/* Factory and customer palettes are independent. --client-* is the control API. */
:root, [data-design-scope="factory"] {
    color-scheme:dark;
    --factory-surface:var(--kernel-color-gray-950);
    --factory-surface-raised:var(--kernel-color-gray-900);
    --factory-surface-hover:var(--kernel-color-gray-850);
    --factory-surface-overlay:var(--kernel-color-gray-800);
    --factory-nav:var(--kernel-color-gray-1000);
    --factory-text:var(--kernel-color-gray-50);
    --factory-text-secondary:var(--kernel-color-gray-300);
    --factory-text-muted:var(--kernel-color-gray-400);
    --factory-border:var(--kernel-color-gray-750);
    --factory-border-strong:var(--factory-border);
    --factory-accent:var(--kernel-color-blue-300);
    --factory-accent-solid:var(--kernel-color-blue-500);
    --factory-accent-weak:var(--kernel-color-blue-950);
    --factory-success:var(--kernel-color-green-300);
    --factory-warning:var(--kernel-color-amber-300);
    --factory-danger:var(--kernel-color-red-300);
    --factory-space-1:var(--kernel-size-1);
    --factory-space-2:var(--kernel-size-2);
    --factory-space-3:var(--kernel-size-3);
    --factory-space-4:var(--kernel-size-4);
    --factory-space-5:var(--kernel-size-5);
    --factory-space-6:var(--kernel-size-6);
    --factory-space-8:var(--kernel-size-8);
    --factory-radius:var(--kernel-radius-1);
    --factory-radius-lg:var(--kernel-radius-2);
    --factory-font:var(--kernel-font-sans);
    --factory-mono:var(--kernel-font-mono);
    --factory-text-label:var(--kernel-text-1);
    --factory-text-meta:var(--kernel-size-3);
    --factory-text-body:var(--kernel-size-3);
    --factory-text-section:var(--kernel-text-2);
    --factory-text-title:var(--kernel-size-5);
    --factory-motion:var(--kernel-motion-1);
    --factory-icon-button-size:var(--kernel-size-px-28);
    --factory-icon-size:var(--kernel-size-px-16);
    --factory-icon-stroke:var(--kernel-stroke-1);
    --factory-workbench-toolbar-height:var(--kernel-size-px-56);
    --factory-workbench-tab-height:var(--kernel-size-px-40);
    --factory-workbench-status-height:var(--kernel-size-px-28);
    --factory-workbench-output-height:var(--kernel-size-px-96);
    --factory-workflow-output-height:var(--kernel-size-px-120);
    --factory-workbench-output-min-height:var(--kernel-size-px-72);
    --factory-workbench-editor-min-height:var(--kernel-size-px-160);
    --factory-elevation:var(--kernel-shadow-1);
    --factory-nav-text:var(--kernel-color-gray-50);
    --factory-nav-text-muted:var(--kernel-color-gray-400);
    --factory-accent-highlight:var(--kernel-color-cyan-300);
    --factory-surface-inverse:var(--kernel-color-gray-50);
    --factory-text-inverse:var(--kernel-color-gray-950);
    --factory-text-inverse-muted:var(--kernel-color-gray-600);
    --factory-border-inverse:var(--kernel-color-gray-300);
    --factory-tone-teal:var(--kernel-color-teal-300);
    --factory-tone-sage:var(--kernel-color-sage-300);
    --factory-tone-amber:var(--kernel-color-amber-300);
    --factory-tone-rose:var(--kernel-color-rose-300);
    --factory-tone-violet:var(--kernel-color-violet-300);
    --factory-tone-emerald:var(--kernel-color-emerald-300);
    --factory-tone-slate:var(--kernel-color-gray-300);
    --factory-text-display:var(--kernel-size-8);
    --factory-sidebar-width:var(--kernel-size-px-240);
    --factory-font-heading:var(--kernel-font-sans);
    --factory-font-body:var(--kernel-font-sans);
    --factory-font-mono:var(--kernel-font-mono);
    --app-surface:initial;
    --app-surface-raised:initial;
    --app-surface-hover:initial;
    --app-surface-overlay:initial;
    --app-nav:initial;
    --app-text:initial;
    --app-text-secondary:initial;
    --app-text-muted:initial;
    --app-border:initial;
    --app-border-strong:initial;
    --app-accent:initial;
    --app-accent-solid:initial;
    --app-accent-weak:initial;
    --app-success:initial;
    --app-warning:initial;
    --app-danger:initial;
    --app-space-1:initial;
    --app-space-2:initial;
    --app-space-3:initial;
    --app-space-4:initial;
    --app-space-5:initial;
    --app-space-6:initial;
    --app-space-8:initial;
    --app-radius:initial;
    --app-radius-lg:initial;
    --app-font:initial;
    --app-mono:initial;
    --app-text-label:initial;
    --app-text-meta:initial;
    --app-text-body:initial;
    --app-text-section:initial;
    --app-text-title:initial;
    --app-motion:initial;
    --app-icon-button-size:initial;
    --app-icon-size:initial;
    --app-icon-stroke:initial;
    --app-workbench-toolbar-height:initial;
    --app-workbench-tab-height:initial;
    --app-workbench-status-height:initial;
    --app-workbench-output-height:initial;
    --app-workflow-output-height:initial;
    --app-workbench-output-min-height:initial;
    --app-workbench-editor-min-height:initial;
    --app-elevation:initial;
    --app-nav-text:initial;
    --app-nav-text-muted:initial;
    --app-accent-highlight:initial;
    --app-surface-inverse:initial;
    --app-text-inverse:initial;
    --app-text-inverse-muted:initial;
    --app-border-inverse:initial;
    --app-tone-teal:initial;
    --app-tone-sage:initial;
    --app-tone-amber:initial;
    --app-tone-rose:initial;
    --app-tone-violet:initial;
    --app-tone-emerald:initial;
    --app-tone-slate:initial;
    --app-text-display:initial;
    --app-sidebar-width:initial;
    --app-font-heading:initial;
    --app-font-body:initial;
    --app-font-mono:initial;
    --app-button-primary:initial;
    --app-button-primary-text:initial;
    --app-button-primary-border:initial;
}

/* Every app boundary starts with its own defaults, including nested previews. */
[data-design-scope="app"] {
    color-scheme:dark;
    --app-surface:var(--kernel-color-gray-950);
    --app-surface-raised:var(--kernel-color-gray-900);
    --app-surface-hover:var(--kernel-color-gray-850);
    --app-surface-overlay:var(--kernel-color-gray-800);
    --app-nav:var(--kernel-color-gray-1000);
    --app-text:var(--kernel-color-gray-50);
    --app-text-secondary:var(--kernel-color-gray-300);
    --app-text-muted:var(--kernel-color-gray-400);
    --app-border:var(--kernel-color-gray-750);
    --app-border-strong:var(--app-border);
    --app-accent:var(--kernel-color-blue-300);
    --app-accent-solid:var(--kernel-color-blue-500);
    --app-accent-weak:var(--kernel-color-blue-950);
    --app-success:var(--kernel-color-green-300);
    --app-warning:var(--kernel-color-amber-300);
    --app-danger:var(--kernel-color-red-300);
    --app-space-1:var(--kernel-size-1);
    --app-space-2:var(--kernel-size-2);
    --app-space-3:var(--kernel-size-3);
    --app-space-4:var(--kernel-size-4);
    --app-space-5:var(--kernel-size-5);
    --app-space-6:var(--kernel-size-6);
    --app-space-8:var(--kernel-size-8);
    --app-radius:var(--kernel-radius-1);
    --app-radius-lg:var(--kernel-radius-2);
    --app-font:var(--app-font-body);
    --app-mono:var(--app-font-mono);
    --app-text-label:var(--kernel-text-1);
    --app-text-meta:var(--kernel-size-3);
    --app-text-body:var(--kernel-size-3);
    --app-text-section:var(--kernel-text-2);
    --app-text-title:var(--kernel-size-5);
    --app-motion:var(--kernel-motion-1);
    --app-icon-button-size:var(--kernel-size-px-28);
    --app-icon-size:var(--kernel-size-px-16);
    --app-icon-stroke:var(--kernel-stroke-1);
    --app-workbench-toolbar-height:var(--kernel-size-px-56);
    --app-workbench-tab-height:var(--kernel-size-px-40);
    --app-workbench-status-height:var(--kernel-size-px-28);
    --app-workbench-output-height:var(--kernel-size-px-96);
    --app-workflow-output-height:var(--kernel-size-px-120);
    --app-workbench-output-min-height:var(--kernel-size-px-72);
    --app-workbench-editor-min-height:var(--kernel-size-px-160);
    --app-elevation:var(--kernel-shadow-1);
    --app-nav-text:var(--kernel-color-gray-50);
    --app-nav-text-muted:var(--kernel-color-gray-400);
    --app-accent-highlight:var(--kernel-color-cyan-300);
    --app-surface-inverse:var(--kernel-color-gray-50);
    --app-text-inverse:var(--kernel-color-gray-950);
    --app-text-inverse-muted:var(--kernel-color-gray-600);
    --app-border-inverse:var(--kernel-color-gray-300);
    --app-tone-teal:var(--kernel-color-teal-300);
    --app-tone-sage:var(--kernel-color-sage-300);
    --app-tone-amber:var(--kernel-color-amber-300);
    --app-tone-rose:var(--kernel-color-rose-300);
    --app-tone-violet:var(--kernel-color-violet-300);
    --app-tone-emerald:var(--kernel-color-emerald-300);
    --app-tone-slate:var(--kernel-color-gray-300);
    --app-text-display:var(--kernel-size-8);
    --app-sidebar-width:var(--kernel-size-px-240);
    --app-font-heading:var(--kernel-font-sans);
    --app-font-body:var(--kernel-font-sans);
    --app-font-mono:var(--kernel-font-mono);
}

/* Rebind on each boundary: CSS variable aliases resolve where declared. */
:root, [data-design-scope] {
    --client-surface:var(--app-surface,var(--factory-surface));
    --client-surface-raised:var(--app-surface-raised,var(--factory-surface-raised));
    --client-surface-hover:var(--app-surface-hover,var(--factory-surface-hover));
    --client-surface-overlay:var(--app-surface-overlay,var(--factory-surface-overlay));
    --client-nav:var(--app-nav,var(--factory-nav));
    --client-text:var(--app-text,var(--factory-text));
    --client-text-secondary:var(--app-text-secondary,var(--factory-text-secondary));
    --client-text-muted:var(--app-text-muted,var(--factory-text-muted));
    --client-border:var(--app-border,var(--factory-border));
    --client-border-strong:var(--app-border-strong,var(--factory-border-strong));
    --client-accent:var(--app-accent,var(--factory-accent));
    --client-accent-solid:var(--app-accent-solid,var(--factory-accent-solid));
    --client-accent-weak:var(--app-accent-weak,var(--factory-accent-weak));
    --client-success:var(--app-success,var(--factory-success));
    --client-warning:var(--app-warning,var(--factory-warning));
    --client-danger:var(--app-danger,var(--factory-danger));
    --client-space-1:var(--app-space-1,var(--factory-space-1));
    --client-space-2:var(--app-space-2,var(--factory-space-2));
    --client-space-3:var(--app-space-3,var(--factory-space-3));
    --client-space-4:var(--app-space-4,var(--factory-space-4));
    --client-space-5:var(--app-space-5,var(--factory-space-5));
    --client-space-6:var(--app-space-6,var(--factory-space-6));
    --client-space-8:var(--app-space-8,var(--factory-space-8));
    --client-radius:var(--app-radius,var(--factory-radius));
    --client-radius-lg:var(--app-radius-lg,var(--factory-radius-lg));
    --client-font:var(--app-font,var(--factory-font));
    --client-mono:var(--app-mono,var(--factory-mono));
    --client-text-label:var(--app-text-label,var(--factory-text-label));
    --client-text-meta:var(--app-text-meta,var(--factory-text-meta));
    --client-text-body:var(--app-text-body,var(--factory-text-body));
    --client-text-section:var(--app-text-section,var(--factory-text-section));
    --client-text-title:var(--app-text-title,var(--factory-text-title));
    --client-motion:var(--app-motion,var(--factory-motion));
    --client-icon-button-size:var(--app-icon-button-size,var(--factory-icon-button-size));
    --client-icon-size:var(--app-icon-size,var(--factory-icon-size));
    --client-icon-stroke:var(--app-icon-stroke,var(--factory-icon-stroke));
    --client-workbench-toolbar-height:var(--app-workbench-toolbar-height,var(--factory-workbench-toolbar-height));
    --client-workbench-tab-height:var(--app-workbench-tab-height,var(--factory-workbench-tab-height));
    --client-workbench-status-height:var(--app-workbench-status-height,var(--factory-workbench-status-height));
    --client-workbench-output-height:var(--app-workbench-output-height,var(--factory-workbench-output-height));
    --client-workflow-output-height:var(--app-workflow-output-height,var(--factory-workflow-output-height));
    --client-workbench-output-min-height:var(--app-workbench-output-min-height,var(--factory-workbench-output-min-height));
    --client-workbench-editor-min-height:var(--app-workbench-editor-min-height,var(--factory-workbench-editor-min-height));
    --client-elevation:var(--app-elevation,var(--factory-elevation));
    --client-nav-text:var(--app-nav-text,var(--factory-nav-text));
    --client-nav-text-muted:var(--app-nav-text-muted,var(--factory-nav-text-muted));
    --client-accent-highlight:var(--app-accent-highlight,var(--factory-accent-highlight));
    --client-surface-inverse:var(--app-surface-inverse,var(--factory-surface-inverse));
    --client-text-inverse:var(--app-text-inverse,var(--factory-text-inverse));
    --client-text-inverse-muted:var(--app-text-inverse-muted,var(--factory-text-inverse-muted));
    --client-border-inverse:var(--app-border-inverse,var(--factory-border-inverse));
    --client-tone-teal:var(--app-tone-teal,var(--factory-tone-teal));
    --client-tone-sage:var(--app-tone-sage,var(--factory-tone-sage));
    --client-tone-amber:var(--app-tone-amber,var(--factory-tone-amber));
    --client-tone-rose:var(--app-tone-rose,var(--factory-tone-rose));
    --client-tone-violet:var(--app-tone-violet,var(--factory-tone-violet));
    --client-tone-emerald:var(--app-tone-emerald,var(--factory-tone-emerald));
    --client-tone-slate:var(--app-tone-slate,var(--factory-tone-slate));
    --client-text-display:var(--app-text-display,var(--factory-text-display));
    --client-sidebar-width:var(--app-sidebar-width,var(--factory-sidebar-width));
    --client-font-heading:var(--app-font-heading,var(--factory-font-heading));
    --client-font-body:var(--app-font-body,var(--factory-font-body));
    --client-font-mono:var(--app-font-mono,var(--factory-font-mono));
    --client-button-background:var(--client-surface-hover);
    /* Primary keeps the accent-weak look until a theme sets the button-primary colours (a solid fill sets all three). */
    --client-button-primary:var(--app-button-primary,var(--client-accent-weak));
    --client-button-primary-text:var(--app-button-primary-text,var(--client-accent));
    --client-button-primary-border:var(--app-button-primary-border,var(--client-accent));
    --client-button-background-hover:var(--client-surface-overlay);
    --client-button-foreground:var(--client-text);
    --client-button-border:var(--client-border);
    --client-button-radius:var(--client-radius);
    --client-button-padding-block:var(--client-space-2);
    --client-button-padding-inline:var(--client-space-3);
    --client-input-background:var(--client-surface);
    --client-input-foreground:var(--client-text);
    --client-input-border:var(--client-border);
    --client-input-radius:var(--kernel-radius-3);
    --client-input-padding-block:var(--kernel-size-rem-065);
    --client-input-padding-inline:var(--kernel-size-rem-08);
    --client-dialog-background:var(--client-surface-raised);
    --client-dialog-foreground:var(--client-text);
    --client-dialog-border:var(--client-border);
    --client-dialog-radius:var(--client-radius);
    --client-dialog-shadow:var(--kernel-shadow-2);
    --client-dialog-backdrop:var(--kernel-color-black-alpha-60);
    --client-dialog-padding:var(--kernel-size-px-24);
    --client-dialog-title-size:var(--kernel-size-px-18);
    --client-dialog-heading-gap:var(--kernel-size-px-16);
    --client-dialog-heading-space:var(--kernel-size-px-20);
    --client-chart-height:var(--kernel-size-px-120);
    --client-motion-enter:var(--kernel-motion-2);
}

*{box-sizing:border-box}body{margin:0;background:var(--client-surface);color:var(--client-text);font:var(--client-text-body)/1.4 var(--client-font)}a{color:var(--client-accent)}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}a,button,input,select,summary:focus-visible{outline-offset:4px}:focus-visible{outline:2px solid var(--client-accent)}h1,h2,h3,p{margin:0}h1{font-size:var(--client-text-title);font-weight:600}h2{font-size:var(--client-text-section)}h3{font-size:var(--client-text-body)}button:disabled{cursor:not-allowed;opacity:.5}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--client-text-meta)/1.6 var(--client-mono)}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
