/* cache-bust 2026-05-09T13:10:27.494803 */ /* ============================================================ Zookoutek u Nováčků — Design Tokens Import this file (or copy :root) into any artifact. System font stack — no webfonts. Body minimum 15px is strict. ============================================================ */ :root { /* ---------- Brand palette ---------- */ --zk-brown: #5a3a1e; /* primary text, primary surfaces */ --zk-brown-soft: #8a6a4a; /* muted text, pill text */ --zk-brown-deep: #3d2713; /* pressed brown, headings on cream */ --zk-cream: #f8f5f0; /* default background */ --zk-cream-deep: #efe9de; /* alt background, inputs */ --zk-cream-2: var(--zk-cream-deep); /* alias used by views */ --zk-border: #d4c4a8; /* default border, separators */ --zk-border-strong: #b8a282; /* hover / focused border */ --zk-line: var(--zk-border); /* alias used by views */ --zk-line-2: #f0e8d8; /* lighter line, used in progress bars */ --zk-theme-pig: #f4e0de; /* 🐷 pig theme */ --zk-theme-babilom: #e8e1f0; /* 🐐 Babí lom skin tint */ --zk-orange: #ff8c42; /* accent — CTAs, focus rings */ --zk-orange-press: #f07d30; /* orange hover/press */ --zk-orange-soft: #ffe0cc; /* orange tint backgrounds */ --zk-white: #ffffff; --zk-success: #5a8a3e; --zk-warning: #c77a1e; --zk-error: #b84a2e; /* ---------- Trail theme backgrounds (pastel) ---------- */ --zk-theme-llama: #f5ead8; /* 🦙 u Nováčků home (llama in logo, unnamed) */ --zk-theme-fox: #fde8d1; /* 🦊 woodland */ --zk-theme-cow: #e8f0e0; /* 🐄 farm */ --zk-theme-goat: #ece5d8; /* 🐐 meadow */ --zk-theme-bear: #e6dcc8; /* 🐻 forest */ /* ---------- Semantic color assignments ---------- */ --fg-1: var(--zk-brown); --fg-2: var(--zk-brown-soft); --fg-on-accent: #ffffff; --bg-1: var(--zk-cream); --bg-2: var(--zk-white); --bg-3: var(--zk-cream-deep); --border-1: var(--zk-border); --border-2: var(--zk-border-strong); --accent: var(--zk-orange); --accent-press: var(--zk-orange-press); --focus-ring: var(--zk-orange); /* ---------- Typography ---------- */ /* CANONICAL Zookoutek typeface — native system stack, no webfonts. Zero load time · perfect Czech diacritics on every OS · no licensing. */ --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; /* Type scale — body minimum 15px enforced (Google mobile usability) */ --text-xs: 13px; /* captions, metadata only — never body */ --text-sm: 15px; /* body MIN */ --text-base: 16px; /* body default */ --text-md: 17px; /* body comfortable */ --text-lg: 19px; /* CTAs, station prompts */ --text-h3: 18px; /* h3 */ --text-h2: 22px; /* h2 */ --text-h1: 28px; /* h1 */ --leading-tight: 1.2; --leading-body: 1.5; /* System stack reliably offers 400 / 700 / 800 on every OS */ --weight-regular: 400; --weight-bold: 700; /* pills, labels, body emphasis */ --weight-heavy: 800; /* all headings + CTAs */ /* ---------- Radii ---------- */ --radius-sm: 10px; /* small inputs */ --radius-md: 14px; /* cards, images */ --radius-lg: 16px; /* buttons, large inputs */ --radius-xl: 20px; /* CTAs, prominent surfaces */ --radius-full: 999px; /* pills */ /* ---------- Shadows ---------- */ --shadow-rest: 0 1px 2px rgba(90, 58, 30, 0.06); --shadow-hover: 0 6px 16px rgba(90, 58, 30, 0.10); --shadow-focus: 0 0 0 2px #fff, 0 0 0 4px var(--zk-orange); /* ---------- Spacing (4px grid) ---------- */ --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 20px; --s-6: 24px; --s-8: 32px; --s-12: 48px; /* ---------- Tap targets ---------- */ --tap-indoor: 44px; --tap-outdoor: 56px; /* player PWA default */ --tap-outdoor-lg: 60px; /* ---------- Motion ---------- */ --ease-standard: cubic-bezier(.2,.8,.2,1); --dur-press: 80ms; --dur-std: 150ms; } /* ============================================================ Base element styles — opt-in by applying .zk to a root. ============================================================ */ .zk { font-family: var(--font-sans); font-size: var(--text-base); line-height: var(--leading-body); color: var(--fg-1); background: var(--bg-1); -webkit-font-smoothing: antialiased; } .zk h1, .zk .h1 { font-size: var(--text-h1); font-weight: var(--weight-heavy); line-height: var(--leading-tight); color: var(--zk-brown); margin: 0 0 var(--s-4); letter-spacing: -0.01em; } .zk h2, .zk .h2 { font-size: var(--text-h2); font-weight: var(--weight-heavy); line-height: var(--leading-tight); color: var(--zk-brown); margin: 0 0 var(--s-3); } .zk h3, .zk .h3 { font-size: var(--text-h3); font-weight: var(--weight-heavy); line-height: var(--leading-tight); color: var(--zk-brown); margin: 0 0 var(--s-3); } .zk p, .zk .p { font-size: var(--text-base); line-height: var(--leading-body); margin: 0 0 var(--s-4); text-wrap: pretty; } .zk small, .zk .caption { font-size: var(--text-xs); color: var(--fg-2); } .zk code, .zk .mono { font-family: var(--font-mono); font-size: 0.92em; background: var(--bg-3); padding: 2px 6px; border-radius: 6px; } /* Focus ring — always orange, never browser blue */ .zk :focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; border-radius: 4px; } /* ============================================================ Component primitives ============================================================ */ .zk-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); min-height: var(--tap-outdoor); padding: 0 var(--s-6); background: var(--zk-orange); color: #fff; border: none; border-radius: var(--radius-xl); font-family: var(--font-sans); font-size: var(--text-lg); font-weight: var(--weight-heavy); cursor: pointer; transition: background var(--dur-std) var(--ease-standard), transform var(--dur-press) var(--ease-standard); } .zk-btn:hover { background: var(--zk-orange-press); } .zk-btn:active { transform: scale(0.98); } .zk-btn--secondary { background: var(--zk-white); color: var(--zk-brown); border: 1px solid var(--zk-border); } .zk-btn--secondary:hover { background: var(--zk-cream); border-color: var(--zk-border-strong); } .zk-pill { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px; background: var(--zk-cream); border: 1px solid var(--zk-border); border-radius: var(--radius-full); font-size: 12px; font-weight: var(--weight-bold); color: var(--zk-brown-soft); } .zk-pill--active { background: var(--zk-orange); border-color: var(--zk-orange); color: #fff; } .zk-card { background: var(--zk-white); border: 1px solid var(--zk-border); border-radius: var(--radius-md); box-shadow: var(--shadow-rest); transition: transform var(--dur-std) var(--ease-standard), box-shadow var(--dur-std) var(--ease-standard), border-color var(--dur-std) var(--ease-standard); } .zk-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); border-color: var(--zk-orange); } .zk-input { width: 100%; min-height: 48px; padding: 0 var(--s-4); background: var(--zk-white); border: 1px solid var(--zk-border); border-radius: var(--radius-md); font-family: var(--font-sans); font-size: var(--text-base); color: var(--fg-1); transition: border-color var(--dur-std) var(--ease-standard); } .zk-input:focus { outline: none; border-color: var(--zk-orange); box-shadow: 0 0 0 3px var(--zk-orange-soft); } /* ═════════════════════════════════════════════════════════ PER-TRAIL SKIN TOKENS (Designer Phase 3 admin-flow.html) Activate via [data-skin="cecil"] / [data-skin="babilom"] on body or root container. ═════════════════════════════════════════════════════════ */ [data-skin="cecil"] { --skin-tint: var(--zk-theme-cow, #efe6d8); --skin-accent: var(--zk-orange, #ff8c42); --skin-accent-press: #e8762a; --skin-accent-soft: #ffe4cc; } [data-skin="babilom"] { --skin-tint: oklch(0.93 0.045 265); --skin-accent: oklch(0.52 0.16 268); --skin-accent-press: oklch(0.44 0.17 268); --skin-accent-soft: oklch(0.95 0.05 268); } [data-skin="kuzlatka"] { --skin-tint: #f8dde2; --skin-accent: #c2185b; --skin-accent-press: #a01047; --skin-accent-soft: #fce4ec; } [data-skin="default"] { --skin-tint: var(--zk-cream-2, #fdf7ee); --skin-accent: var(--zk-orange, #ff8c42); --skin-accent-press: #e8762a; --skin-accent-soft: #ffe4cc; } /* ═════════════════════════════════════════════════════════ GLOBAL TOAST + MODAL HELPERS (used across new admin views) ═════════════════════════════════════════════════════════ */ .zk-toast { position: fixed; bottom: 90px; left: 50%; transform: translateX(-50%); padding: 11px 20px; border-radius: 999px; z-index: 9999; font-weight: 700; font-size: 14px; box-shadow: 0 6px 18px rgba(0,0,0,.18); font-family: system-ui, -apple-system, sans-serif; color: #fff; animation: zkToastIn .25s ease-out; } .zk-toast--ok { background: #2e7d32; } .zk-toast--err { background: #d32f2f; } .zk-toast--info { background: var(--zk-brown, #5a3a1e); } @keyframes zkToastIn { from { opacity: 0; transform: translate(-50%, 10px); } to { opacity: 1; transform: translate(-50%, 0); } } .zk-spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.3); border-top-color: #fff; border-radius: 50%; animation: zkSpin .8s linear infinite; } @keyframes zkSpin { to { transform: rotate(360deg); } }