/* estilo — the Oficina suite's theme: Calma. Calma replaced rastrillo's day on 2026-09-29, by Paul's decision after six rounds of design directions (AGENTS.md, decisions table, row 8). Until then estilo WAS day, byte for byte; it is now its own theme, and theme_test.go gates it on its own terms: the same token set day declares (so rastrillo's tokens.css finds every name it uses), every contrast pair rastrillo gates, in both schemes — for this file AND for every app's accent block (apps.go) — and a golden per app so no value moves without the diff saying so. The look: quiet, even and exact. A cool off-white page with white cards, one grey text scale, soft 12px shapes with a long low shadow. Colour belongs to the apps: every app's hue sits on one ring of equal OKLCH lightness, so no app shouts over another, and the interface tints to the app you are in (apps.go — --rst-accent and friends are re-declared per app). This file's own accent is Oficina's, the suite's, used where no app is in charge (sign-in, the team's home). Status tones are day's, unchanged: they are functional, not brand, and a pill must never be mistaken for a link. ── One block, both schemes ─────────────────────────────────────────── As day: every colour is light-dark(, ) under one :root with color-scheme: light dark, and the two [data-theme] rules at the bottom are the whole toggle. ── WCAG 2.2 AA ─────────────────────────────────────────────────────── Every pair rastrillo's own gate checks is checked by TestContrastMeetsWCAG, for this file and each app's accent, light and dark, through rastrillo's ui.ContrastRatio. The tightest, at the time of writing: faint text on an accent-tinted surface, 4.63:1 (Files, dark); a control border on the sunk surface, 3.2:1 (light). ──────────────────────────────────────────────────────────────────── */ :root { color-scheme: light dark; /* Type: the family only. Sizes and spacing stay in tokens.css. Onest where it is served (fonts.go), the system face where it is not. */ --rst-font: "Onest", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* Shape: soft and exact. */ --rst-radius: 12px; --rst-radius-sm: 8px; --rst-radius-pill: 999px; /* Surfaces and lines: a cool off-white page, white cards, a sunk grey. */ --rst-bg: light-dark(#f5f6f8, #15171c); --rst-surface: light-dark(#ffffff, #1c1f26); --rst-surface-2: light-dark(#eceef2, #23262e); --rst-line: light-dark(#e3e6eb, #2d313a); --rst-line-strong: light-dark(#7f8591, #7a818e); /* The page header's rule: the accent folded into the line, as day. */ --rst-header-rule: color-mix(in oklab, var(--rst-accent) 18%, var(--rst-line)); /* Text */ --rst-text: light-dark(#262a33, #eceef2); --rst-text-muted: light-dark(#565c69, #b4bac6); --rst-text-faint: light-dark(#626875, #8f96a3); /* Accent: Oficina's, hue 262 on the ring (apps.go). Each app re-declares these four. */ --rst-accent: light-dark(#2e5bb4, #87b1fd); --rst-accent-strong: light-dark(#214a9b, #afcbfe); --rst-accent-soft: light-dark(#e9f1ff, #1f2b42); --rst-on-accent: light-dark(#ffffff, #111418); /* Status tones: day's, unchanged. */ --rst-tone-neutral-fg: light-dark(#374151, #c3c9d1); --rst-tone-neutral-bg: light-dark(#eef0f2, #262c34); --rst-tone-positive-fg: light-dark(#166534, #6ee7a8); --rst-tone-positive-bg: light-dark(#dcfce7, #10281c); --rst-tone-warning-fg: light-dark(#854d0e, #f0c46a); --rst-tone-warning-bg: light-dark(#fef3c7, #2c2110); --rst-tone-negative-fg: light-dark(#b91c1c, #f79aa0); --rst-tone-negative-bg: light-dark(#fee2e2, #331819); /* Depth: a long, low, cool shadow; paper lifted, not stacked. */ --rst-shadow-pop: 0 18px 44px -14px light-dark(rgba(20, 24, 33, 0.28), rgba(0, 0, 0, 0.6)); --rst-shadow-knob: 0 1px 2px rgba(20, 24, 33, 0.3); --rst-shadow-lift: 0 1px 1px rgba(20, 24, 33, 0.04), 0 14px 36px -14px light-dark(rgba(20, 24, 33, 0.22), rgba(0, 0, 0, 0.55)); --rst-overlay: light-dark(rgba(20, 24, 33, 0.45), rgba(0, 0, 0, 0.6)); } /* The whole toggle. Setting color-scheme re-resolves every light-dark() above, so an explicit choice beats the OS in both directions without restating a colour. */ :root[data-theme="light"] { color-scheme: light; } :root[data-theme="dark"] { color-scheme: dark; }