/* GENERATED — do not edit. Run `python scripts/sync-theme.py` to refresh.

   Source of truth: hq/technology/design-system/registry/eudock-theme/
   (eudock-theme.css + eudock-framework.css). promo-calendar is a build-less
   consumer, so it carries a copy instead of pulling through the shadcn CLI.

   REGION 1 = theme tokens, verbatim, with `.dark` re-homed onto
              prefers-color-scheme (this is a browser SPA, not a Tauri WebView).
   REGION 2 = framework constants (radius ladder, shadows, scrim, fades) — verbatim.
   REGION 3 = the Outfit faces, served from ./fonts/ so a client needs no CDN.

   Every colour, radius and font in style.css / app.js must come from here (the
   only literal-colour exceptions are the national-flag SVGs and the two native
   <input type=color> default values — both irreducible, see DECISIONS). */

/* ===== REGION 1 — theme tokens (SSOT copy) ===== */
:root {    --background: #faf9f5;
    --foreground: #3d3929;
    --card: #f5f4ef;
    --card-foreground: #141413;
    --popover: #ffffff;
    --popover-foreground: #28261b;
    --primary: #c96442;
    --primary-foreground: #ffffff;
    --secondary: #e9e6dc;
    --secondary-foreground: #535146;
    --muted: #ede9de;
    --muted-foreground: #6e6d68;
    --accent: #e9e6dc;
    --accent-foreground: #28261b;
    --destructive: #dc2626;
    --destructive-foreground: #ffffff;
    --success: #3d7a4b;
    --success-foreground: #ffffff;
    --success-bright: #46b45b;
    --warning: #96691a;
    --warning-foreground: #ffffff;
    --border: #dad9d4;
    --input: #b4b2a7;
    --ring: #c96442;
    --chart-1: #c96442;
    --chart-2: #7d6bd0;
    --chart-3: #3f9a86;
    --chart-4: #c98a2b;
    --chart-5: #4f7cc4;
    --radius: 1rem;
    --font-sans: "Outfit Variable", Outfit, "PingFang SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
    --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
    --font-mono: "Geist Mono", ui-monospace, monospace;
    --sidebar: #f5f4ee;
    --sidebar-foreground: #3d3d3a;
    --sidebar-primary: #c96442;
    --sidebar-primary-foreground: #fbfbfb;
    --sidebar-accent: #e9e6dc;
    --sidebar-accent-foreground: #343434;
    --sidebar-border: #ebebeb;
    --sidebar-ring: #b5b5b5;}

@media (prefers-color-scheme: dark) {
  :root {    --background: #262624;
    --foreground: #f1f1ef;
    --card: #2c2c2b;
    --card-foreground: #faf9f5;
    --popover: #30302e;
    --popover-foreground: #e5e5e2;
    --primary: #d97757;
    --primary-foreground: #141413;
    --secondary: #faf9f5;
    --secondary-foreground: #30302e;
    --muted: #1b1b19;
    --muted-foreground: #b7b5a9;
    --accent: #1a1915;
    --accent-foreground: #f5f4ee;
    --destructive: #ef4444;
    --destructive-foreground: #ffffff;
    --success: #4d7c52;
    --success-foreground: #ffffff;
    --success-bright: #6ed07c;
    --warning: #96691a;
    --warning-foreground: #ffffff;
    --border: #3e3e38;
    --input: #52514a;
    --ring: #d97757;
    --chart-1: #d97757;
    --chart-2: #a78bf6;
    --chart-3: #5cbfa6;
    --chart-4: #e0a94a;
    --chart-5: #6f9fe0;
    --sidebar: #1f1e1d;
    --sidebar-foreground: #c3c0b6;
    --sidebar-primary: #343434;
    --sidebar-primary-foreground: #fbfbfb;
    --sidebar-accent: #0f0f0e;
    --sidebar-accent-foreground: #c3c0b6;
    --sidebar-border: #ebebeb;
    --sidebar-ring: #b5b5b5;}
}

/* Manual override — the topbar theme toggle sets data-theme on <html>; these
   win over the media query in both directions. No attr = follow the OS. */
:root[data-theme="light"] {    --background: #faf9f5;
    --foreground: #3d3929;
    --card: #f5f4ef;
    --card-foreground: #141413;
    --popover: #ffffff;
    --popover-foreground: #28261b;
    --primary: #c96442;
    --primary-foreground: #ffffff;
    --secondary: #e9e6dc;
    --secondary-foreground: #535146;
    --muted: #ede9de;
    --muted-foreground: #6e6d68;
    --accent: #e9e6dc;
    --accent-foreground: #28261b;
    --destructive: #dc2626;
    --destructive-foreground: #ffffff;
    --success: #3d7a4b;
    --success-foreground: #ffffff;
    --success-bright: #46b45b;
    --warning: #96691a;
    --warning-foreground: #ffffff;
    --border: #dad9d4;
    --input: #b4b2a7;
    --ring: #c96442;
    --chart-1: #c96442;
    --chart-2: #7d6bd0;
    --chart-3: #3f9a86;
    --chart-4: #c98a2b;
    --chart-5: #4f7cc4;
    --radius: 1rem;
    --font-sans: "Outfit Variable", Outfit, "PingFang SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
    --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
    --font-mono: "Geist Mono", ui-monospace, monospace;
    --sidebar: #f5f4ee;
    --sidebar-foreground: #3d3d3a;
    --sidebar-primary: #c96442;
    --sidebar-primary-foreground: #fbfbfb;
    --sidebar-accent: #e9e6dc;
    --sidebar-accent-foreground: #343434;
    --sidebar-border: #ebebeb;
    --sidebar-ring: #b5b5b5;}
:root[data-theme="dark"] {    --background: #262624;
    --foreground: #f1f1ef;
    --card: #2c2c2b;
    --card-foreground: #faf9f5;
    --popover: #30302e;
    --popover-foreground: #e5e5e2;
    --primary: #d97757;
    --primary-foreground: #141413;
    --secondary: #faf9f5;
    --secondary-foreground: #30302e;
    --muted: #1b1b19;
    --muted-foreground: #b7b5a9;
    --accent: #1a1915;
    --accent-foreground: #f5f4ee;
    --destructive: #ef4444;
    --destructive-foreground: #ffffff;
    --success: #4d7c52;
    --success-foreground: #ffffff;
    --success-bright: #6ed07c;
    --warning: #96691a;
    --warning-foreground: #ffffff;
    --border: #3e3e38;
    --input: #52514a;
    --ring: #d97757;
    --chart-1: #d97757;
    --chart-2: #a78bf6;
    --chart-3: #5cbfa6;
    --chart-4: #e0a94a;
    --chart-5: #6f9fe0;
    --sidebar: #1f1e1d;
    --sidebar-foreground: #c3c0b6;
    --sidebar-primary: #343434;
    --sidebar-primary-foreground: #fbfbfb;
    --sidebar-accent: #0f0f0e;
    --sidebar-accent-foreground: #c3c0b6;
    --sidebar-border: #ebebeb;
    --sidebar-ring: #b5b5b5;}

/* ===== REGION 2 — framework constants (SSOT copy) ===== */
:root {    /* rounded-sm/md/lg/xl exactly as the `nova` preset writes them into a built
       app's @theme block: scaling from --radius, NOT stock shadcn's pixel
       subtraction. Getting this wrong makes two EUDOCK apps round differently. */
    --radius-sm: calc(var(--radius) * 0.6);
    --radius-md: calc(var(--radius) * 0.8);
    --radius-lg: var(--radius);
    --radius-xl: calc(var(--radius) * 1.4);

    /* Tailwind's shadow steps. Black in BOTH modes, exactly as Tailwind ships
       them — a foreground-tinted shadow would go white in dark mode. */
    --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);

    /* shadcn DialogOverlay = bg-black/50, same in both modes. */
    --overlay: rgb(0 0 0 / 0.5);

    /* Tints shadcn expresses inline as `bg-primary/16`, `ring-ring/50`, … */
    --primary-soft: color-mix(in srgb, var(--primary) 16%, transparent);
    --primary-edge: color-mix(in srgb, var(--primary) 45%, transparent);
    --ring-soft: color-mix(in srgb, var(--ring) 50%, transparent);
    --destructive-soft: color-mix(in srgb, var(--destructive) 12%, transparent);

    /* Fully-transparent twins of the surfaces, for fade-out gradients. A gradient
       to plain `transparent` interpolates through transparent BLACK and smears
       grey over a warm surface; color-mix at 0% collapses the same way (both
       measured in WebView2's Chromium, 2026-07-24). Relative colour syntax is the
       one construct that keeps the hue at alpha 0. */
    --card-fade: rgb(from var(--card) r g b / 0);
    --accent-fade: rgb(from var(--accent) r g b / 0);
    --background-fade: rgb(from var(--background) r g b / 0);}

/* ===== REGION 3 — typeface ===== */
@font-face {
    font-family: "Outfit Variable";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("./fonts/outfit-latin-wght-normal.woff2") format("woff2");
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
    font-family: "Outfit Variable";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("./fonts/outfit-latin-ext-wght-normal.woff2") format("woff2");
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
