/* Copyright (c) 2026 Bc. Jan Krejčí. All rights reserved.                  */
/* Proprietary and confidential. See LICENSE in the project root.           */

/* ==========================================================================
 *  KurnikProfi — Design Token Overrides
 *
 *  This file is loaded LAST in the host's <head>, after Forge's own
 *  forge-dashboard.css and forge-ui-components.css. Anything you uncomment
 *  here overrides the upstream default.
 *
 *  Forge ships with two flat token surfaces:
 *
 *    1. CORE TOKENS (forge-dashboard.css)
 *       Color, spacing, typography, motion, layout primitives. Defined under
 *       :root and re-resolved per `[data-theme="dark"|"light"]`. Uncomment a
 *       line below to change the default for both themes; if you want to
 *       diverge per theme, copy the line into the matching block at the
 *       bottom of this file.
 *
 *    2. COMPONENT TOKENS (forge-ui-components.css)
 *       Bridge variables (--surface-sN, --text-tN, --border-bN) that the
 *       Forge component package consumes. They flow from the core tokens via
 *       `var(--core, fallback)` so changing a core token automatically
 *       reaches every Forge component (ForgeButton, ForgeCard, ForgeIcon…).
 *
 *  ----------------------------------------------------------------------
 *  HOW TO USE
 *
 *  1. Uncomment a line in :root below.
 *  2. Save → the live page picks up the change instantly under `dotnet watch`.
 *  3. Verify both light and dark themes still pass WCAG 2.2 AA contrast.
 *
 *  Want to see the effect without touching this file? Press the
 *  "sparkles" button in the topbar to open the Tweaks panel — every
 *  setting in there writes the same CSS variables at runtime via JS.
 *
 *  Full token reference: https://github.com/ProgWolfik/Krejci.Forge/
 *  blob/master/docs/diagrams/dependencies.md (UI.DesignTokens section).
 * ========================================================================== */

:root {
    /* -------- Accent --------------------------------------------------- */
    /* Hue for the OKLCH accent ramp. 0 = red, 60 = amber, 120 = green,
       160 = teal, 220 = blue, 260 = indigo, 300 = violet, 340 = pink. */
    /* --accent-h: 300; */

    /* Chroma (saturation) and lightness — fine-tune the accent intensity. */
    /* --accent-c: 0.18; */
    /* --accent-l: 0.7;  */

    /* -------- Glass / depth ------------------------------------------- */
    /* 0   = no ambient glow on modules */
    /* 0.6 = Forge default */
    /* 1   = lots of glow */
    /* --glass: 0.7; */

    /* -------- Radii — corner roundness -------------------------------- */
    /* Lower these for a sharper, more "industrial" look; raise for a soft,
       consumer feel. Match the input + button radius separately if you
       want only inputs square. */
    /* --r-xs: 4px;   */ /* default 6px  */
    /* --r-sm: 6px;   */ /* default 8px  */
    /* --r-md: 8px;   */ /* default 12px */
    /* --r-lg: 12px;  */ /* default 16px */
    /* --r-xl: 16px;  */ /* default 22px */
    /* --r-2xl: 20px; */ /* default 28px */

    /* Input-only radius — wins over --r-md inside .forge-input / form
       fields without changing card / module radii. */
    /* --input-radius: 4px; */

    /* -------- Motion timings ------------------------------------------ */
    /* --t-fast: 200ms; */ /* default 140ms — slower hover / button feedback */
    /* --t-med:  320ms; */ /* default 240ms — slower sidebar collapse / overlays */
    /* --t-slow: 600ms; */ /* default 420ms — slower theme cross-fade */

    /* -------- Easing — change "feel" of every animation --------------- */
    /* --ease-spring: cubic-bezier(0.5, 1.8, 0.5, 1); */ /* bouncier */
    /* --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);   */ /* sharper exit */

    /* -------- Spacing scale (8pt base) -------------------------------- */
    /* Bumping --s-base also propagates because the rest is multiplied. */
    /* --s-1:  6px;  */ /* default 4px  */
    /* --s-4: 20px;  */ /* default 16px */
    /* --s-6: 28px;  */ /* default 24px */

    /* -------- Typography ---------------------------------------------- */
    /* Display font is used for h1.page-title, .kpi-value, .page-title.
       Replace with any locally hosted or Google-loaded family. The
       fallback chain stays in case the requested font fails to load. */
    /* --font-display: "Inter", ui-sans-serif, system-ui, sans-serif; */
    /* --font-sans:    "Inter", ui-sans-serif, system-ui, sans-serif; */
    /* --font-mono:    "JetBrains Mono", ui-monospace, Menlo, monospace; */

    /* -------- Layout dimensions --------------------------------------- */
    /* --sidebar-w:           280px; */ /* default 248px */
    /* --sidebar-collapsed-w:  72px; */ /* default 64px  */
    /* --header-h:             64px; */ /* default 60px  */

    /* -------- Form / input behaviour ---------------------------------- */
    /* Switch the text-input label style. `static` is the default (label
       sits above the field). `floating` makes the label drop into the
       field when empty and float up + scale down on focus / fill. */
    /* --input-label-style: floating; */

    /* Height of focus ring around inputs / buttons. 0 disables it. */
    /* --focus-ring-width: 3px; */
}

/* --------------------------------------------------------------------------
 *  Per-theme overrides (rare). Use these when a token must differ between
 *  dark and light beyond what the core tokens already do. The pattern:
 * -------------------------------------------------------------------------- */
[data-theme="dark"] {
    /* --accent-c: 0.20; */ /* slightly more vivid in dark mode */
    /* color-scheme propagates to native browser UI — <select> dropdown
       options, scrollbars, autofill backgrounds, form-control accents.
       Without this, native dropdown lists render bright white on dark
       sites because the browser doesn't know our theme. */
    color-scheme: dark;
}

[data-theme="light"] {
    /* --accent-c: 0.16; */ /* tone down for light backgrounds */
    color-scheme: light;
}

/* --------------------------------------------------------------------------
 *  Accent palettes — consumed by the Tweaks popover on AuthLayout (and by
 *  the in-app tweaks panel on MainLayout). The accent cookie writes one of
 *  the catalogue values; App.razor renders `<html data-accent="…">`; CSS
 *  rules below override `--accent-h/c/l` so the entire OKLCH ramp shifts
 *  to the new hue family without per-component changes.
 * -------------------------------------------------------------------------- */
/* Katalog je PŘESUNUTÝ pod značkovou paletu — viz komentář tam. */


/* ==========================================================================
 *  KURNÍK PROFI — brand palette + type
 *  Warm farmyard: straw/cream ground, barn-red primary, egg-yolk + leaf
 *  green accents, soft sky for the "smart coop" tech story. Playful but
 *  credible for a custom-manufacturing business.
 *  The --kp-* vars drive the marketing sections; we also nudge Forge's
 *  OKLCH accent to a warm barn tone so ForgeButton/ForgeCard match.
 * ========================================================================== */
:root {
    /* Značkový akcent — ZELENÁ. Řídí Forge komponenty (tlačítka, přepínače)
       i celý web: `--kp-a*` a žloutková sekundární barva se z něj níž
       dopočítávají, takže posuvník „Odstín akcentu" v panelu Vzhled přebarví
       hero i sekce živě. Panel zapisuje `--accent-h` inline na <html>. */
    --accent-h: 141;
    --accent-c: 0.14;
    --accent-l: 0.55;

    /* Brand palette (light) */
    --kp-cream:      #FBF3E4;   /* page ground — warm straw */
    --kp-cream-2:    #FFFBF3;   /* raised surface / cards */
    --kp-cream-3:    #F4E8D2;   /* subtle band / alt section */
    --kp-barn:       #C1502E;   /* primary — barn red / terracotta */
    --kp-barn-dark:  #9E3B1E;
    --kp-barn-soft:  #F3DDD1;   /* barn tint fill */
    /* Sekundární „žloutková". Drží konstantní odstup −61° od akcentu, takže
       s ním putuje a dvojice zůstane vyladěná. Pro výchozí zelenou (141°)
       vychází přesně původní #F5B841. */
    --kp-yolk:       oklch(0.82 0.147 calc(var(--accent-h) - 61));
    --kp-yolk-soft:  oklch(0.94 0.058 calc(var(--accent-h) - 61));
    --kp-leaf:       #6BA368;   /* leaf green — nature / OK states */
    --kp-leaf-dark:  #4E8150;
    --kp-leaf-soft:  #DDEBD4;
    --kp-sky:        #5E93B8;   /* sky blue — smart / tech accents */
    --kp-sky-soft:   #DCEAF2;
    --kp-ink:        #3A2A22;   /* text — warm dark brown */
    --kp-ink-soft:   #705A4C;   /* secondary text */
    --kp-ink-faint:  #9C8877;   /* muted / captions */
    --kp-line:       #EAD9BC;   /* warm hairline */
    --kp-line-soft:  #F1E5CE;

    /* Typografie — Fredoka nese nadpisy a velká čísla, Outfit všechno ostatní. */
    --kp-font-display: 'Fredoka', 'Outfit', system-ui, sans-serif;
    --kp-font-body:    'Outfit', system-ui, sans-serif;

    /* Stejný pár dostanou i Forge komponenty (dashboard, tabulky, panel
       Vzhled) — jinak by aplikace běžela na jiném písmu než web. */
    --font-display: var(--kp-font-display);
    --font-sans:    var(--kp-font-body);

    /* Soft warm shadows + generous rounding for the friendly feel. */
    --kp-shadow-sm:  0 2px 8px rgba(58, 42, 34, 0.06);
    --kp-shadow:     0 10px 30px rgba(58, 42, 34, 0.10);
    --kp-shadow-lg:  0 24px 60px rgba(58, 42, 34, 0.14);
    --kp-radius:     18px;
    --kp-radius-lg:  28px;
    --kp-radius-xl:  40px;

    /* Osmibodový rytmus. Každý odstup na webu je násobek 8 px — bez toho
       se sekce „skoro stejné, ale ne úplně" a stránka působí slepovaně. */
    --kp-sp-1:  0.5rem;    /*  8 */
    --kp-sp-2:  1rem;      /* 16 */
    --kp-sp-3:  1.5rem;    /* 24 */
    --kp-sp-4:  2rem;      /* 32 */
    --kp-sp-5:  2.5rem;    /* 40 */
    --kp-sp-6:  3rem;      /* 48 */
    --kp-sp-8:  4rem;      /* 64 */
    --kp-sp-10: 5rem;      /* 80 */
    --kp-sp-12: 6rem;      /* 96 */

    /* Elevace jako žebřík, ne jako sbírka náhodných stínů. Klid → hover →
       plovoucí prvek. Barva stínu je teplá, aby nešedla krémové pozadí. */
    --kp-elev-1: 0 1px 2px rgba(58, 42, 34, 0.05), 0 2px 8px rgba(58, 42, 34, 0.05);
    --kp-elev-2: 0 2px 4px rgba(58, 42, 34, 0.05), 0 12px 28px rgba(58, 42, 34, 0.10);
    --kp-elev-3: 0 4px 8px rgba(58, 42, 34, 0.06), 0 28px 64px rgba(58, 42, 34, 0.16);

    /* Primární akcent webu — tři stupně světlosti na společném odstínu.
       Odstín i sytost berou z `--accent-*`, takže je řídí panel Vzhled;
       světlost je pevná, aby kontrast textu na tlačítkách nezáležel na tom,
       jak vysoko má zrovna uživatel posuvník.

       Pro výchozí zelenou vycházejí přesně původní #3C7A34 / #54A046 /
       #2B5C26 — změna je v mechanice, ne ve vzhledu. */
    --kp-a:      oklch(0.52  var(--accent-c) var(--accent-h));
    --kp-a-2:    oklch(0.635 var(--accent-c) var(--accent-h));
    --kp-a-deep: oklch(0.43  var(--accent-c) var(--accent-h));
    --kp-a-soft: oklch(0.52  var(--accent-c) var(--accent-h) / 0.14);
    --kp-a-line: oklch(0.52  var(--accent-c) var(--accent-h) / 0.30);

    /* ---- SKLO -----------------------------------------------------------
       Jeden zdroj pravdy pro VŠECHNY skleněné plochy — panel asistentky,
       statistiky, komunitní panel, karty i skleněné tlačítko. Posuvník
       „Sklo" v panelu Vzhled píše Forge proměnnou `--glass` (0–1) a odsud
       z ní vychází krytí i rozostření. Dokud každý panel řešil svoje
       čísla, posuvník na půlku z nich nesahal.

       Směr je záměrný: víc skla = průsvitnější deska a silnější rozostření. */
    --kp-glass-strength: var(--glass, 0.6);
    --kp-glass-fill:      calc(0.62 - 0.30 * var(--kp-glass-strength));
    --kp-glass-fill-soft: calc(0.50 - 0.28 * var(--kp-glass-strength));
    --kp-glass-blur:      calc(4px + 34px * var(--kp-glass-strength));
    --kp-glass-sheen:     calc(0.05 + 0.13 * var(--kp-glass-strength));
    --kp-glass-edge:      rgba(255, 255, 255, calc(0.10 + 0.18 * var(--kp-glass-strength)));

    /* Sklo pro světlé sekce (karty nad fotkou, odznaky). */
    --kp-glass-light: color-mix(in srgb, var(--kp-cream-2)
                       calc((0.62 + 0.26 * (1 - var(--kp-glass-strength))) * 100%), transparent);
}

/* --------------------------------------------------------------------------
 *  Katalog akcentů — sem sahá panel Vzhled (i cookie forge-accent).
 *
 *  POŘADÍ JE PODSTATNÉ. `:root` výš a `[data-accent="…"]` mají STEJNOU
 *  specificitu (0,1,0), takže rozhoduje pořadí v souboru. Kdyby katalog
 *  stál nad značkovým `:root`, přebil by ho výchozí zelený odstín a
 *  přepínání akcentu by navenek nedělalo vůbec nic.
 * -------------------------------------------------------------------------- */
[data-accent="blue"]   { --accent-h: 235; --accent-c: 0.18; --accent-l: 0.62; }
[data-accent="teal"]   { --accent-h: 195; --accent-c: 0.14; --accent-l: 0.65; }
[data-accent="violet"] { --accent-h: 295; --accent-c: 0.20; --accent-l: 0.55; }
[data-accent="amber"]  { --accent-h:  75; --accent-c: 0.15; --accent-l: 0.75; }
[data-accent="rose"]   { --accent-h:  10; --accent-c: 0.18; --accent-l: 0.65; }
/* Zelená je značková a výchozí. Musí být v katalogu jako ostatní — jinak by
   ji první uložená volba (nebo serverový default v App.razor) přebila. */
[data-accent="green"]  { --accent-h: 141; --accent-c: 0.14; --accent-l: 0.55; }

[data-theme="dark"] {
    --kp-cream:      #201812;   /* deep warm brown ground */
    --kp-cream-2:    #2A211A;   /* raised surface */
    --kp-cream-3:    #33281F;
    --kp-barn:       #E0714B;   /* brighten barn for dark */
    --kp-barn-dark:  #C1502E;
    --kp-barn-soft:  #3A2820;
    --kp-yolk:       oklch(0.853 0.127 calc(var(--accent-h) - 61));
    --kp-yolk-soft:  oklch(0.313 0.038 calc(var(--accent-h) - 61));
    --kp-leaf:       #86BE82;
    --kp-leaf-dark:  #6BA368;
    --kp-leaf-soft:  #24301F;
    --kp-sky:        #86B6D6;
    --kp-sky-soft:   #1E2A33;
    --kp-ink:        #F4E9D8;
    --kp-ink-soft:   #CDBBA6;
    --kp-ink-faint:  #9C8A76;
    --kp-line:       #3C2F25;
    --kp-line-soft:  #33281F;
    --kp-shadow-sm:  0 2px 8px rgba(0, 0, 0, 0.30);
    --kp-shadow:     0 10px 30px rgba(0, 0, 0, 0.40);
    --kp-shadow-lg:  0 24px 60px rgba(0, 0, 0, 0.50);
    --kp-elev-1: 0 1px 2px rgba(0, 0, 0, 0.30), 0 2px 8px rgba(0, 0, 0, 0.24);
    --kp-elev-2: 0 2px 4px rgba(0, 0, 0, 0.30), 0 12px 28px rgba(0, 0, 0, 0.38);
    --kp-elev-3: 0 4px 8px rgba(0, 0, 0, 0.32), 0 28px 64px rgba(0, 0, 0, 0.50);

    /* Na tmavém pozadí musí akcent o dva stupně nahoru, jinak splyne
       s hnědým podkladem a přestane číst jako akcent. */
    --kp-a:      oklch(0.66 var(--accent-c) var(--accent-h));
    --kp-a-2:    oklch(0.75 var(--accent-c) var(--accent-h));
    --kp-a-deep: oklch(0.52 var(--accent-c) var(--accent-h));
    --kp-a-soft: oklch(0.66 var(--accent-c) var(--accent-h) / 0.16);
    --kp-a-line: oklch(0.66 var(--accent-c) var(--accent-h) / 0.34);
}

/* ==========================================================================
 *  Typografická pravidla (globální — marketing i aplikace)
 *
 *  Fredoka je hravá a v hustém UI unavuje: drží proto nadpisy a velká
 *  čísla, kde ten charakter má sloužit. Text, tlačítka a formuláře jedou
 *  Outfit, který se čte i v tabulce o dvaceti řádcích.
 * ========================================================================== */

body {
    font-family: var(--kp-font-body);
}

h1, h2, h3,
.kp-stat-number,
.kpa-hero-number,
.kp-hero__title,
.kp-h2 {
    font-family: var(--kp-font-display);
}

/* Formulářové prvky písmo nedědí — bez tohohle by zůstaly na systémovém. */
button, input, textarea, select, optgroup {
    font-family: var(--kp-font-body);
}

/* Logo — Outfit, ne Fredoka: značka má působit pevně, ne rozpustile. */
.kp-logo-name,
.kp-brand__name {
    font-family: var(--kp-font-body);
    font-weight: 700;
    letter-spacing: -0.025em;
}

.kp-logo-universe,
.kp-brand__tag {
    font-family: var(--kp-font-body);
    font-weight: 600;
    font-size: 0.65rem;
    letter-spacing: 0.28em;
    text-transform: uppercase;
}
