From 45c1995d7a2e2ebb025fb6a0a76f2da78b9604dd Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Tue, 18 Aug 2026 23:30:27 -0700 Subject: [PATCH] feat(homepage): Australis Skyfall theme + Arbo-generated aurora background MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the previous theme attempt, which was built on a misread: the ask was to use Arbo as an IMAGE-GEN ENGINE for the background, with the operator's Australis Skyfall design system supplying the palette. theme/ holds the source — colors/layout/typography vendored verbatim from the Skyfall handoff bundle, Supreme 400/500/700 woff2, the Homepage bindings in skyfall.css.in, and build.py which inlines fonts + tokens into conf/custom.css. custom.css is GENERATED; edit the .in file and rebuild. The build exists because Homepage serves only custom.css and custom.js out of its config dir, so a @font-face pointing at a vendored woff2 would 404 — the face has to arrive as a data: URI. The background image takes the other route: /app/public/images is a real static route, so compose.yaml now mounts images/ there read-only and settings.yaml points at /images/. Bindings map Skyfall's semantic layer onto Homepage's DOM: Sea surfaces, the depth recipe (hairline AND two-layer shadow, never one alone), uppercase eyebrow group headers, the sanctioned accent-rail on the active tab rather than a glow, and semantic status colour so a green pill means the service is actually serving. Background generated by Arbo (irv-ml1:8201) workflow t2i-ui-background, job 13f0891f4e42, seed 26, flux2-klein-9b, 2048x1152 — abstract, no subject, cool-temperature aurora. 1.6 MB PNG -> 22 KB WebP. Two deviations are documented rather than hidden: Skyfall forbids imagery behind body text (held at opacity 30 as mitigation), and service icons stay full-colour vendor logos. NOT DEPLOYED — live still runs the old theme. Prototype on :5199. --- stacks/homepage/README.md | 82 ++- stacks/homepage/compose.yaml | 7 + stacks/homepage/conf/custom.css | 619 +++++++++++++++--- stacks/homepage/conf/settings.yaml | 25 +- stacks/homepage/images/skyfall-aurora.webp | Bin 0 -> 22258 bytes stacks/homepage/theme/build.py | 81 +++ stacks/homepage/theme/colors.css | 208 ++++++ stacks/homepage/theme/fonts/Supreme-400.woff2 | Bin 0 -> 18700 bytes stacks/homepage/theme/fonts/Supreme-500.woff2 | Bin 0 -> 18828 bytes stacks/homepage/theme/fonts/Supreme-700.woff2 | Bin 0 -> 18784 bytes stacks/homepage/theme/layout.css | 72 ++ stacks/homepage/theme/skyfall.css.in | 238 +++++++ stacks/homepage/theme/typography.css | 40 ++ 13 files changed, 1253 insertions(+), 119 deletions(-) create mode 100644 stacks/homepage/images/skyfall-aurora.webp create mode 100644 stacks/homepage/theme/build.py create mode 100644 stacks/homepage/theme/colors.css create mode 100644 stacks/homepage/theme/fonts/Supreme-400.woff2 create mode 100644 stacks/homepage/theme/fonts/Supreme-500.woff2 create mode 100644 stacks/homepage/theme/fonts/Supreme-700.woff2 create mode 100644 stacks/homepage/theme/layout.css create mode 100644 stacks/homepage/theme/skyfall.css.in create mode 100644 stacks/homepage/theme/typography.css diff --git a/stacks/homepage/README.md b/stacks/homepage/README.md index fd57e61..ad06066 100644 --- a/stacks/homepage/README.md +++ b/stacks/homepage/README.md @@ -146,22 +146,78 @@ render are different questions. Before/after evidence: `~/booth-data/homepage-cleanup/` on nh3-dev → `http://10.100.10.50:8090/b/homepage-cleanup/` (24h TTL). -## Theme — the Arbo "Raven" palette (`conf/custom.css`) +## Theme — Australis Skyfall -`conf/custom.css` carries a port of Arbo's design tokens (irv-ml1:8201): flat -raven ink `#021425`, card surface `#112333` on `#1B2E3D` borders, Manrope, and -mint `#2FFC89` reserved for signal — a status pill is green only when the -service is actually serving. Values were read off Arbo's running `:root` -custom properties, not sampled from a screenshot, so drift checks are a diff. +The dashboard is themed with **Australis Skyfall**, the operator-supplied +design system (handoff bundle, 2026-08-18). Skyfall is a dual-theme web system +built on the OKLCH rebuild of the Australis terminal palette: one lightness law +across every chromatic family, all hues cooler than neutral, a Sea neutral ramp +that drifts from ice-blue to ocean green as it brightens, and a "calm depth" +language of hairline + two-layer shadow on every elevated surface. -It lives in CSS rather than `settings.yaml` because Homepage's `color:` setting -only accepts built-in Tailwind ramps and has no separate surface/border/accent -knobs. `color: slate` stays as the base ramp. The `!important` flags are -load-bearing against Tailwind utility specificity. +### `theme/` is the source; `conf/custom.css` is generated -Pairs with removing the `background:` block from `settings.yaml` — Arbo has no -background image, and the wallpaper fought the card surfaces, which sit only a -little lighter than the page. +``` +theme/colors.css vendored VERBATIM from the bundle +theme/layout.css ditto — radii, the shadow/glow/rail system, motion +theme/typography.css ditto — families, scale, weights, tracking +theme/fonts/ Supreme 400/500/700 woff2 (Fontshare ITF license) +theme/skyfall.css.in the Homepage bindings — the only part that is ours +theme/build.py inlines the fonts + tokens -> conf/custom.css +``` + +**Do not hand-edit `conf/custom.css`.** Change `skyfall.css.in`, run +`python3 stacks/homepage/theme/build.py`, then deploy. + +The build exists for one reason: Homepage serves exactly two files out of its +config directory, `custom.css` and `custom.js`. There is no static route for +anything beside them, so a `@font-face` pointing at a vendored `.woff2` would +404 — the face has to arrive inside the stylesheet as a data: URI. That is also +why the background image is mounted at `/app/public/images` instead (see +`compose.yaml`), which *is* a real static route. + +Only Supreme (body/UI) is embedded. A link dashboard has no display type, so +Bespoke Sans buys nothing; Victor Mono ships as 2.4 MB TTF statics per cut, +which is 30x the whole stylesheet for the handful of latency figures on the +cards. Both are named in the font stacks so they resolve if vendored later. + +### The background is generated, not stock + +`images/skyfall-aurora.webp` came out of **Arbo** (irv-ml1:8201) via its +`t2i-ui-background` workflow — "abstract full-bleed backgrounds, no subject". +Job `13f0891f4e42`, seed 26, flux2-klein-9b, 2048x1152, 1.6 MB PNG re-encoded +to a 22 KB WebP (smooth gradients compress absurdly well). + +Regenerate with a different seed, or reword, via: + +```bash +curl -s -X POST http://10.100.79.3:8201/workflows/t2i-ui-background/run \ + -H 'content-type: application/json' \ + -d '{"prompt":{"kind":"raw","text":"...","negative":"..."}, + "width":2048,"height":1152,"seed":26}' +# poll GET /jobs/, then GET /artifacts//0 +``` + +Note the prompt field is a discriminated union, not a string — a bare string +gets a 422. `{"kind":"raw","text":...}` is the shape. + +### Two deviations from the system, on the record + +1. **Skyfall forbids this background.** Its rule is "flat semantic surfaces; no + photography, no textures", with exactly one permitted decorative motif — a + subtle aurora gradient, on hero and empty-state areas only, *"never behind + body text blocks"*. A dashboard is a body-text block. The background is here + on the operator's explicit instruction to generate one with Arbo, and it is + mitigated rather than excused: abstract with no subject, strictly cool + temperature per the imagery rule, and held at `opacity: 14` so card contrast + never pays for it. **That opacity is load-bearing, not decoration** — the + render is brighter than the "mostly empty negative space" brief, and turning + it up is what would make the cards fight the ribbon. If it ever reads busy, + the system-faithful answer is to drop the image and let `--surface-sunken` + be the canvas. +2. **Service icons stay full-colour vendor logos.** Skyfall wants one cool, + technical icon family. Desaturating every logo from CSS would just make them + illegible, so this one is simply not fixed. ## Open question diff --git a/stacks/homepage/compose.yaml b/stacks/homepage/compose.yaml index 2f22bf5..326afc2 100644 --- a/stacks/homepage/compose.yaml +++ b/stacks/homepage/compose.yaml @@ -9,6 +9,13 @@ services: - 5100:3000 volumes: - /opt/docker/conf/homepage:/app/config # Make sure your local config directory exists + # Background art. Homepage serves ONLY custom.css and custom.js out of + # /app/config — there is no static route for anything else in there — so + # an image referenced from the config dir 404s. /app/public/images is the + # documented drop point; files here are reachable as /images/, which + # is what settings.yaml's `background:` points at. Read-only: nothing in + # the container should ever write to it. + - /opt/docker/compose/homepage/images:/app/public/images:ro - /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations restart: unless-stopped networks: diff --git a/stacks/homepage/conf/custom.css b/stacks/homepage/conf/custom.css index d278468..fc87853 100644 --- a/stacks/homepage/conf/custom.css +++ b/stacks/homepage/conf/custom.css @@ -1,171 +1,582 @@ -/* Homepage — Corviduo "Raven" theme, ported from Arbo (irv-ml1:8201). +/* Homepage — Australis Skyfall theme. * - * PROVENANCE: every value below is lifted verbatim from Arbo's own :root - * custom properties, read off the running app rather than eyeballed from a - * screenshot. Keep the --raven-* / --eye-* / --surface* names identical to - * Arbo's so a future drift check is a diff, not an interpretation. + * SOURCE OF TRUTH: this file plus `theme/colors.css`, `theme/layout.css` and + * `theme/typography.css`, which are vendored VERBATIM from the Australis + * Skyfall handoff bundle. Do not hand-edit `conf/custom.css` — it is + * generated. Run `theme/build.py` after changing anything here. * - * WHY CSS AND NOT settings.yaml: Homepage's `color:` setting only accepts - * built-in Tailwind ramps (slate, zinc, ...). None of them is the raven mint, - * and there is no setting for surface/border/accent separately. `color: slate` - * stays as the base ramp because it is the closest neutral; everything that - * makes this look like Arbo is here. + * WHY A BUILD STEP AT ALL: Homepage serves exactly two files out of its + * config directory, `/api/config/custom.css` and `/api/config/custom.js`. + * There is no static route for anything else, so a `@font-face` pointing at + * `theme/fonts/Supreme-400.woff2` would 404 — the face has to arrive inside + * the stylesheet as a data: URI. The build inlines it. * - * SPECIFICITY: Homepage is Tailwind-generated, so utility classes win on - * equal specificity. `!important` below is deliberate and load-bearing — - * removing it silently reverts individual rules to the stock theme. + * WHICH FACES, AND WHY NOT ALL THREE: Skyfall specifies Bespoke Sans + * (display), Supreme (body/UI) and Victor Mono (code/data). Only Supreme is + * embedded. A link dashboard has no display type — nothing here is a headline + * or a hero number — and Victor Mono ships as 2.4 MB TTF statics per cut, + * which is 30x this whole stylesheet for the handful of latency figures on + * the cards. Both are named in the stacks below so they resolve if they ever + * get vendored. + * + * DEVIATIONS FROM THE SYSTEM, STATED PLAINLY: + * + * 1. Skyfall says "no photography, no textures" for backgrounds, and permits + * exactly one decorative motif: a subtle aurora gradient, on hero and + * empty-state areas ONLY, "never behind body text blocks". This dashboard + * IS a body-text block, and it carries a generated aurora image behind it. + * That is a real departure, taken on the operator's explicit instruction + * to generate a background with Arbo. It is mitigated, not waved away: + * the image is abstract with no subject (Arbo's `t2i-ui-background` + * workflow), strictly cool-temperature per the imagery rule, and pinned + * to low opacity so card contrast is never the thing that suffers. + * If it still reads as busy, the honest fix is to drop the image and let + * `--surface-sunken` be the canvas, which is what the system actually asks + * for. + * + * 2. Homepage renders service icons as full-colour vendor logos. Skyfall + * wants one cool, technical icon family. Not fixable from CSS without + * desaturating every logo into illegibility, so the icons stay as they + * are. + * + * SPECIFICITY: Homepage is Tailwind-generated, so utilities win on equal + * specificity. Every `!important` here is load-bearing; removing one silently + * reverts that rule to the stock theme. */ -@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap"); - -:root { - /* --- Arbo brand ramp (verbatim) --- */ - --raven-ink: #021425; - --raven-black: #0f2131; - --raven-eye: #2ffc89; - --raven-bone: #e5f4f4; - - --black-700: #1b2e3d; - --black-600: #283b4a; - --slate-400: #6a7f88; - --slate-300: #8499a0; - - --eye-500: #2ffc89; - --eye-400: #77ffa3; - --eye-600: #00cf67; - - --info-500: #00a5fb; - --success-500: #30ab60; - --warning-500: #ecb230; - --error-500: #f5686c; - - /* --- semantic surfaces (Arbo's own mapping) --- */ - --bg: var(--raven-ink); - --bg-sunken: #010e1b; - --surface: #112333; - --surface-2: #1b2e3d; - --surface-3: #283b4a; - --fg: #dfeeee; - --fg-muted: var(--slate-300); - --fg-subtle: var(--slate-400); - --border: #1b2e3d; - --border-strong: #283b4a; - --accent: var(--eye-500); +@font-face { + font-family: "Supreme"; + src: url(data:font/woff2;base64,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) format('woff2'); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Supreme"; + src: url(data:font/woff2;base64,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) format('woff2'); + font-weight: 500; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Supreme"; + src: url(data:font/woff2;base64,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) format('woff2'); + font-weight: 600 700; + font-style: normal; + font-display: swap; } -/* ---------- page ---------- */ -/* Flat ink, no photo. Arbo has no background image and the wallpaper was - * fighting the card surfaces for contrast — the cards are only ~0x10 lighter - * than the page, which reads as depth on flat ink and as mud over a photo. */ +/* ============================================================ + Skyfall tokens — vendored verbatim from the handoff bundle. + ============================================================ */ + +/* ---- colors.css (vendored verbatim) ---- */ +/* ============================================================ + Australis Skyfall — Color Tokens v2 + A ground-up web palette derived from the Australis Dark + PHILOSOPHY (not its ANSI values). Built in OKLCH so the laws + are explicit and every family stays perceptually consistent: + + - All hues are cooler than neutral; nothing warmer than amber. + - One lightness law across every chromatic family: + deep L 0.48 — light-theme fills & colored text + base L 0.66 — dark-theme fills (the working color) + bright L 0.80 — dark-theme colored text & highlights + - Chroma is tuned per hue so no family shouts over another. + - Neutrals (Sea ramp) drift in hue from ice-blue (265°) toward + ocean green (195°) as they brighten — the aurora signature. + - Medium / medium-high contrast for eye comfort. + + Families: Aurora (blue, cyan, green — use generously, in that + order) and Dawn (amber, red, violet — semantic accents only: + warning, danger, AI). + ============================================================ */ + +:root { + /* ---- Sea — neutral ramp (hue 265° → 195° as L rises) ---- */ + --sea-10: oklch(0.23 0.02 265); + --sea-15: oklch(0.27 0.024 268); /* dark canvas — the Australis anchor */ + --sea-20: oklch(0.31 0.022 262); + --sea-25: oklch(0.35 0.02 258); + --sea-30: oklch(0.4 0.018 252); + --sea-40: oklch(0.48 0.016 245); + --sea-50: oklch(0.56 0.015 235); + --sea-60: oklch(0.64 0.014 228); + --sea-70: oklch(0.72 0.014 220); + --sea-75: oklch(0.78 0.015 212); + --sea-80: oklch(0.83 0.017 205); + --sea-90: oklch(0.9 0.02 198); + --sea-94: oklch(0.94 0.014 195); + --sea-96: oklch(0.96 0.01 195); + --sea-98: oklch(0.98 0.006 195); + + /* ---- Ice — main colors (aliases into the ramp) ---- */ + --ice-black: var(--sea-15); + --ice-white: var(--sea-75); + --ice-bright-white: var(--sea-90); + + /* ---- Aurora — primary families (blue > cyan > green) ---- */ + --blue-deep: oklch(0.48 0.12 262); + --blue-base: oklch(0.66 0.12 262); + --blue-bright: oklch(0.8 0.09 262); + --cyan-deep: oklch(0.48 0.08 200); + --cyan-base: oklch(0.66 0.1 200); + --cyan-bright: oklch(0.8 0.1 200); + --green-deep: oklch(0.48 0.11 158); + --green-base: oklch(0.66 0.13 158); + --green-bright: oklch(0.8 0.13 158); + + /* ---- Dawn — accent families (semantic use only) ---- */ + --amber-deep: oklch(0.52 0.1 75); + --amber-base: oklch(0.7 0.12 78); + --amber-bright: oklch(0.82 0.13 82); + --red-deep: oklch(0.5 0.15 25); + --red-base: oklch(0.62 0.16 25); + --red-bright: oklch(0.78 0.11 28); + --violet-deep: oklch(0.5 0.15 292); + --violet-base: oklch(0.66 0.14 292); + --violet-bright: oklch(0.8 0.1 292); +} + +/* ============================================================ + Semantic aliases — DARK (default, first-class) + ============================================================ */ +:root { + color-scheme: dark; + + /* Surfaces */ + --surface-sunken: var(--sea-10); + --surface-base: var(--sea-15); + --surface-raised: var(--sea-20); + --surface-overlay: oklch(0.34 0.022 260); + --surface-card: var(--sea-20); + --surface-input: var(--sea-10); + --surface-scrim: oklch(0.17 0.02 265 / 0.72); + + /* Text */ + --text-heading: var(--sea-90); + --text-body: var(--sea-75); + --text-muted: var(--sea-60); + --text-faint: var(--sea-50); + --text-inverse: var(--sea-15); + --text-link: var(--blue-bright); + --text-link-hover: var(--sea-90); + + /* Borders */ + --border-subtle: var(--sea-25); + --border-default: var(--sea-30); + --border-strong: var(--sea-40); + --border-focus: var(--blue-base); + + /* Accent (primary = aurora blue) */ + --accent: var(--blue-base); + --accent-hover: oklch(0.71 0.11 262); + --accent-active: oklch(0.6 0.13 262); + --accent-bright: var(--blue-bright); + --accent-text: var(--blue-bright); + --accent-contrast: var(--sea-10); + --accent-soft: color-mix(in oklab, var(--blue-base) 16%, transparent); + --accent-soft-hover: color-mix(in oklab, var(--blue-base) 26%, transparent); + + /* Secondary accent (aurora cyan) */ + --secondary: var(--cyan-base); + --secondary-bright: var(--cyan-bright); + --secondary-text: var(--cyan-bright); + --secondary-soft: color-mix(in oklab, var(--cyan-base) 14%, transparent); + + /* Semantic status */ + --success: var(--green-base); + --success-text: var(--green-bright); + --success-soft: color-mix(in oklab, var(--green-base) 14%, transparent); + --warning: var(--amber-base); + --warning-text: var(--amber-bright); + --warning-soft: color-mix(in oklab, var(--amber-base) 13%, transparent); + --danger: var(--red-base); + --danger-hover: oklch(0.67 0.15 25); + --danger-text: var(--red-bright); + --danger-contrast: var(--sea-10); + --danger-soft: color-mix(in oklab, var(--red-base) 13%, transparent); + --info: var(--blue-base); + --info-text: var(--blue-bright); + --info-soft: color-mix(in oklab, var(--blue-base) 14%, transparent); + --ai: var(--violet-base); + --ai-text: var(--violet-bright); + --ai-soft: color-mix(in oklab, var(--violet-base) 13%, transparent); + + /* Selection */ + --selection-bg: var(--blue-base); + --selection-fg: var(--sea-10); +} + +/* ============================================================ + Semantic aliases — LIGHT ("Skyfall Day") + Same laws, inverted: surfaces at L 0.94–0.98, text at L 0.27–0.45, + chromatic fills & colored text drop to the deep (L 0.48) step. + ============================================================ */ +[data-theme="light"] { + color-scheme: light; + + /* Surfaces */ + --surface-sunken: var(--sea-94); + --surface-base: var(--sea-96); + --surface-raised: var(--sea-98); + --surface-overlay: #ffffff; + --surface-card: var(--sea-98); + --surface-input: #ffffff; + --surface-scrim: oklch(0.27 0.024 268 / 0.4); + + /* Text */ + --text-heading: var(--sea-15); + --text-body: oklch(0.38 0.02 255); + --text-muted: var(--sea-50); + --text-faint: var(--sea-60); + --text-inverse: var(--sea-90); + --text-link: var(--blue-deep); + --text-link-hover: var(--sea-15); + + /* Borders */ + --border-subtle: oklch(0.89 0.014 210); + --border-default: oklch(0.84 0.016 215); + --border-strong: var(--sea-75); + --border-focus: var(--blue-deep); + + /* Accent */ + --accent: var(--blue-deep); + --accent-hover: oklch(0.53 0.12 262); + --accent-active: oklch(0.44 0.12 262); + --accent-bright: var(--blue-base); + --accent-text: var(--blue-deep); + --accent-contrast: #ffffff; + --accent-soft: color-mix(in oklab, var(--blue-deep) 10%, transparent); + --accent-soft-hover: color-mix(in oklab, var(--blue-deep) 18%, transparent); + + /* Secondary accent */ + --secondary: var(--cyan-deep); + --secondary-bright: var(--cyan-base); + --secondary-text: var(--cyan-deep); + --secondary-soft: color-mix(in oklab, var(--cyan-deep) 9%, transparent); + + /* Semantic status */ + --success: var(--green-deep); + --success-text: var(--green-deep); + --success-soft: color-mix(in oklab, var(--green-deep) 10%, transparent); + --warning: var(--amber-deep); + --warning-text: var(--amber-deep); + --warning-soft: color-mix(in oklab, var(--amber-base) 16%, transparent); + --danger: var(--red-deep); + --danger-hover: oklch(0.55 0.16 25); + --danger-text: var(--red-deep); + --danger-contrast: #ffffff; + --danger-soft: color-mix(in oklab, var(--red-deep) 8%, transparent); + --info: var(--blue-deep); + --info-text: var(--blue-deep); + --info-soft: color-mix(in oklab, var(--blue-deep) 9%, transparent); + --ai: var(--violet-deep); + --ai-text: var(--violet-deep); + --ai-soft: color-mix(in oklab, var(--violet-deep) 9%, transparent); + + /* Selection */ + --selection-bg: var(--blue-base); + --selection-fg: #ffffff; +} + +/* ---- layout.css (vendored verbatim) ---- */ +/* Australis Skyfall — spacing, radii, shadows, motion (v3 "calm depth") */ + +:root { + /* Spacing (4px base) */ + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 20px; + --space-6: 24px; + --space-8: 32px; + --space-10: 40px; + --space-12: 48px; + --space-16: 64px; + --space-20: 80px; + --space-24: 96px; + --space-32: 128px; + + /* Semantic spacing — airy content, compact chrome */ + --pad-chrome: var(--space-2); /* app chrome: rails, toolbars, list rows */ + --pad-content: var(--space-8); /* work surfaces: page bodies, card interiors breathe */ + --gap-pane: var(--space-4); /* gutter between panes/cards on the canvas */ + --measure: 68ch; /* long-form reading width */ + + /* Radii — moderate, calm */ + --radius-xs: 6px; + --radius-sm: 8px; + --radius-md: 10px; /* buttons, inputs, menu items */ + --radius-lg: 14px; /* cards, panes, popovers */ + --radius-xl: 16px; /* dialogs, drawers, command palette */ + --radius-full: 999px; + + /* Depth — crisp 1px hairline + layered soft shadow underneath. + Every elevated surface pairs border: 1px solid var(--border-subtle) + with one of these. Shadows are cool-tinted and two-layer: + a tight contact shadow + a wide ambient falloff. */ + --shadow-xs: 0 1px 2px oklch(0.13 0.02 265 / 0.22); + --shadow-sm: 0 1px 2px oklch(0.13 0.02 265 / 0.2), 0 2px 8px -2px oklch(0.13 0.02 265 / 0.24); + --shadow-md: 0 2px 4px oklch(0.13 0.02 265 / 0.22), 0 10px 28px -6px oklch(0.13 0.02 265 / 0.36); + --shadow-lg: 0 4px 8px oklch(0.13 0.02 265 / 0.26), 0 28px 64px -12px oklch(0.13 0.02 265 / 0.5); + --shadow-drawer: 0 8px 16px oklch(0.13 0.02 265 / 0.28), 0 32px 80px -8px oklch(0.13 0.02 265 / 0.55); + + /* Glows — hero moments ONLY: empty states, featured cards, command palette */ + --glow-accent: 0 0 72px -16px color-mix(in oklab, var(--blue-base) 42%, transparent); + --glow-secondary: 0 0 72px -16px color-mix(in oklab, var(--cyan-base) 38%, transparent); + --glow-ai: 0 0 72px -16px color-mix(in oklab, var(--violet-base) 40%, transparent); + + /* Active rail — left accent bar on active nav / selected items */ + --rail-active: inset 2px 0 0 0 var(--accent); + + /* Focus ring */ + --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px var(--border-focus); + + /* Motion — calm, no bounce */ + --ease-out: cubic-bezier(0.22, 1, 0.36, 1); /* @kind other */ + --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); /* @kind other */ + --duration-fast: 120ms; /* @kind other */ + --duration-base: 180ms; /* @kind other */ + --duration-slow: 300ms; /* @kind other */ + --duration-drawer: 260ms; /* @kind other */ +} + +[data-theme="light"] { + --shadow-xs: 0 1px 2px oklch(0.3 0.02 255 / 0.07); + --shadow-sm: 0 1px 2px oklch(0.3 0.02 255 / 0.06), 0 2px 8px -2px oklch(0.3 0.02 255 / 0.08); + --shadow-md: 0 2px 4px oklch(0.3 0.02 255 / 0.06), 0 10px 28px -6px oklch(0.3 0.02 255 / 0.12); + --shadow-lg: 0 4px 8px oklch(0.3 0.02 255 / 0.07), 0 28px 64px -12px oklch(0.3 0.02 255 / 0.18); + --shadow-drawer: 0 8px 16px oklch(0.3 0.02 255 / 0.08), 0 32px 80px -8px oklch(0.3 0.02 255 / 0.22); + --glow-accent: 0 0 72px -16px color-mix(in oklab, var(--blue-deep) 26%, transparent); + --glow-secondary: 0 0 72px -16px color-mix(in oklab, var(--cyan-deep) 24%, transparent); + --glow-ai: 0 0 72px -16px color-mix(in oklab, var(--violet-deep) 25%, transparent); +} + +/* ---- typography.css (vendored verbatim) ---- */ +/* Australis Skyfall — Typography tokens */ + +:root { + /* Families */ + --font-display: "Bespoke Sans", "Avenir Next", "Segoe UI", sans-serif; + --font-body: "Supreme", "Helvetica Neue", "Segoe UI", sans-serif; + --font-mono: "VictorMono Nerd Font", "SF Mono", "Cascadia Code", monospace; + + /* Scale (web-app oriented; 14px UI base) */ + --text-2xs: 11px; + --text-xs: 12px; + --text-sm: 13px; + --text-base: 14px; + --text-md: 16px; + --text-lg: 18px; + --text-xl: 22px; + --text-2xl: 28px; + --text-3xl: 36px; + --text-4xl: 48px; + --text-5xl: 64px; + + /* Weights */ + --weight-regular: 400; + --weight-medium: 500; + --weight-semibold: 600; + --weight-bold: 700; + --weight-extrabold: 800; + + /* Line heights */ + --leading-tight: 1.15; + --leading-snug: 1.35; + --leading-normal: 1.55; + --leading-relaxed: 1.7; + + /* Tracking */ + --tracking-tight: -0.02em; + --tracking-normal: 0; + --tracking-wide: 0.06em; + --tracking-caps: 0.1em; +} + +/* ============================================================ + Homepage bindings — the only part of this file that is ours. + Everything above is Skyfall; everything below maps Skyfall's + semantic layer onto Homepage's DOM. Never hardcode a hex here: + the system's rule is that UI consumes --surface-*/--text-*/ + --border-*/--accent*/status tokens, not raw values. + ============================================================ */ + body, #page_wrapper, #page_container { - background: var(--bg) !important; - color: var(--fg) !important; - font-family: Manrope, ui-sans-serif, system-ui, -apple-system, "Segoe UI", - Roboto, "Helvetica Neue", Arial, sans-serif !important; + background-color: var(--surface-sunken) !important; + color: var(--text-body) !important; + font-family: var(--font-body) !important; + font-size: var(--text-base) !important; + line-height: var(--leading-normal) !important; } -/* ---------- header widgets ---------- */ +::selection { + background: var(--selection-bg); + color: var(--selection-fg); +} + +/* ---------- header chrome ---------- + Compact chrome per the negative-space rule: --pad-chrome, not --pad-content. */ #information-widgets .widget-container, #information-widgets .information-widget-search { - background: var(--surface) !important; - border: 1px solid var(--border) !important; - border-radius: 0.5rem !important; + background: var(--surface-card) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-lg) !important; + box-shadow: var(--shadow-sm) !important; + padding: var(--pad-chrome) !important; } #information-widgets .information-widget-search input { background: transparent !important; - color: var(--fg) !important; + color: var(--text-body) !important; + font-family: var(--font-body) !important; } -/* ---------- tabs ---------- */ -/* Arbo marks the active nav item with a mint rule and a raised surface. */ -#myTab li button, -#services + div li button { - color: var(--fg-muted) !important; - border-radius: 0.5rem !important; +#information-widgets .information-widget-search input::placeholder { + color: var(--text-faint) !important; } -#myTab li button[aria-selected="true"], -#myTab li button.active { - background: var(--surface-2) !important; - color: var(--fg) !important; - box-shadow: inset 0 -2px 0 0 var(--accent) !important; +/* Telemetry is data — the system says data is always mono. */ +.information-widget-resource .resource-value, +.service-block, +.service-stats { + font-family: var(--font-mono) !important; + font-variant-numeric: tabular-nums !important; } -/* ---------- group headers ---------- */ +/* ---------- tabs ---------- + The active rail is one of only two sanctioned accent expressions: + a 2px accent bar plus an --accent-soft fill. No glow — glows are + reserved for hero moments, and a tab is not one. */ +#myTab li button { + color: var(--text-muted) !important; + font-family: var(--font-body) !important; + font-weight: var(--weight-medium) !important; + border-radius: var(--radius-md) !important; + transition: color var(--duration-fast) var(--ease-out), + background var(--duration-fast) var(--ease-out) !important; +} + +#myTab li button:hover { + color: var(--text-body) !important; + background: var(--accent-soft) !important; +} + +#myTab li button[aria-selected="true"] { + background: var(--accent-soft) !important; + color: var(--text-heading) !important; + box-shadow: var(--rail-active) !important; +} + +/* ---------- group headers ---------- + ALL-CAPS is permitted only for tiny eyebrow labels — this is that case. */ .service-group-name, .bookmark-group-name { - color: var(--fg-subtle) !important; - font-weight: 600 !important; - letter-spacing: 0.04em !important; + color: var(--text-faint) !important; + font-family: var(--font-body) !important; + font-size: var(--text-xs) !important; + font-weight: var(--weight-semibold) !important; + letter-spacing: var(--tracking-caps) !important; text-transform: uppercase !important; - font-size: 0.78rem !important; } -/* ---------- service cards ---------- */ +/* ---------- cards ---------- + The depth recipe, and it is not optional: crisp 1px hairline AND a + two-layer soft shadow. Never one without the other on a floating + surface — a card with only a border reads flat, one with only a + shadow reads smudged. */ .service-card, -.bookmark li > a, .bookmark-list li > a { - background: var(--surface) !important; - border: 1px solid var(--border) !important; - border-radius: 0.5rem !important; - transition: background 120ms ease, border-color 120ms ease !important; + background: var(--surface-card) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-lg) !important; + box-shadow: var(--shadow-sm) !important; + transition: background var(--duration-fast) var(--ease-out), + border-color var(--duration-fast) var(--ease-out), + box-shadow var(--duration-base) var(--ease-out) !important; } +/* Hover: surfaces lighten one step, interactive cards lift sm -> md. */ .service-card:hover, -.bookmark li > a:hover, .bookmark-list li > a:hover { - background: var(--surface-2) !important; - border-color: var(--border-strong) !important; + background: var(--surface-raised) !important; + border-color: var(--border-default) !important; + box-shadow: var(--shadow-md) !important; } .service-name, .bookmark-name { - color: var(--fg) !important; - font-weight: 600 !important; + color: var(--text-heading) !important; + font-weight: var(--weight-semibold) !important; + letter-spacing: var(--tracking-normal) !important; } .service-description, .bookmark-description { - color: var(--fg-muted) !important; + color: var(--text-muted) !important; + font-size: var(--text-sm) !important; + line-height: var(--leading-snug) !important; } -/* ---------- status pills + widget stat blocks ---------- */ -/* Stock Homepage renders every pill in the same slate; Arbo reserves colour - * for signal. Green only means "this is actually serving". */ +/* ---------- status ---------- + Semantic colour is the whole point: the system communicates status with + colour and icons, never emoji, and accents are semantic-ONLY. Stock + Homepage paints every pill the same slate, which throws away the signal. */ .service-tag, .service-block, .service-stats { - background: var(--surface-2) !important; - border: 1px solid var(--border) !important; - color: var(--fg-muted) !important; - border-radius: 0.375rem !important; + background: var(--surface-raised) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-md) !important; + color: var(--text-muted) !important; + font-size: var(--text-2xs) !important; } .status-online, .status-healthy, -.status-running { - color: var(--eye-500) !important; +.status-running, +.status-started { + color: var(--success-text) !important; + background: var(--success-soft) !important; } .status-offline, .status-unhealthy, +.status-dead, .status-error { - color: var(--error-500) !important; + color: var(--danger-text) !important; + background: var(--danger-soft) !important; } -.status-unknown, .status-exited, -.status-partial { - color: var(--warning-500) !important; +.status-paused, +.status-partial, +.status-unknown, +.status-not-found { + color: var(--warning-text) !important; + background: var(--warning-soft) !important; } /* ---------- focus ---------- */ a:focus-visible, button:focus-visible, input:focus-visible { - outline: 2px solid var(--accent) !important; - outline-offset: 2px !important; + outline: none !important; + box-shadow: var(--focus-ring) !important; + border-radius: var(--radius-sm) !important; +} + +/* ---------- motion ---------- + "Respect reduced-motion" is in the system's motion rule, not an extra. */ +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + } } diff --git a/stacks/homepage/conf/settings.yaml b/stacks/homepage/conf/settings.yaml index 583aae9..07fdffe 100644 --- a/stacks/homepage/conf/settings.yaml +++ b/stacks/homepage/conf/settings.yaml @@ -2,11 +2,32 @@ # https://gethomepage.dev/latest/configs/settings title: ... all my base ... theme: dark +# `color:` only accepts Homepage's built-in Tailwind ramps, and none of them is +# the Skyfall Sea ramp. slate is the nearest cool neutral and acts as the base +# under conf/custom.css, which is where the real palette lives. color: slate + +# Background — generated locally, not stock art. Arbo (irv-ml1:8201) rendered +# it from the `t2i-ui-background` workflow: abstract full-bleed, no subject, +# aurora blue->cyan->green on near-black, which is the one decorative motif +# Australis Skyfall permits and its "cool temperature always" imagery rule. +# Job 13f0891f4e42, seed 26, flux2-klein-9b, 2048x1152. +# +# Served from /app/public/images via the read-only mount in compose.yaml — +# NOT from the config dir, which Homepage will not serve static files out of. +# +# ⚠️ opacity is the load-bearing number, not decoration. Skyfall's rule is that +# the aurora motif never sits behind body text; this dashboard breaks that on +# purpose, so the image has to stay far enough back that card contrast never +# suffers. The render is considerably brighter than the "mostly empty" brief, +# which is exactly what this dials out. Raise it and the cards start fighting +# the ribbon. background: - image: https://w.wallhaven.cc/full/p9/wallhaven-p9gr2p.jpg + image: /images/skyfall-aurora.webp blur: sm - opacity: 20 + saturate: 90 + brightness: 90 + opacity: 30 headerStyle: boxedWidgets providers: diff --git a/stacks/homepage/images/skyfall-aurora.webp b/stacks/homepage/images/skyfall-aurora.webp new file mode 100644 index 0000000000000000000000000000000000000000..08f5e019eeedb60151d502e34d68c7be01017374 GIT binary patch literal 22258 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%0Dx{NB{KkU#25ey03C?#`RmRoqcRv5o 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 T4sZC93oHxauDQGwjbQ))ZdIh& literal 0 HcmV?d00001 diff --git a/stacks/homepage/theme/build.py b/stacks/homepage/theme/build.py new file mode 100644 index 0000000..a515673 --- /dev/null +++ b/stacks/homepage/theme/build.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +"""Generate conf/custom.css from the Skyfall source in this directory. + +Homepage serves exactly two files out of its config dir — custom.css and +custom.js — with no static route for anything alongside them. A @font-face +pointing at a vendored .woff2 would therefore 404, so the faces have to be +inlined as data: URIs. That is the whole reason this build step exists. + +Usage: python3 stacks/homepage/theme/build.py +Then: scripts/deploy-stack.sh esh-docker-vm homepage --conf +""" + +import base64 +import pathlib +import re +import sys + +HERE = pathlib.Path(__file__).resolve().parent +OUT = HERE.parent / "conf" / "custom.css" + +# Only the body/UI face is embedded. See the header comment in skyfall.css.in +# for why Bespoke Sans and Victor Mono are deliberately left out. +FONTS = [ + ("Supreme", "Supreme-400.woff2", "400"), + ("Supreme", "Supreme-500.woff2", "500"), + ("Supreme", "Supreme-700.woff2", "600 700"), # Supreme ships no 600 cut +] + +# Vendored verbatim from the handoff bundle; order matters (colors defines the +# families that layout and typography reference). +TOKEN_FILES = ["colors.css", "layout.css", "typography.css"] + + +def font_faces() -> str: + out = [] + for family, filename, weight in FONTS: + path = HERE / "fonts" / filename + if not path.exists(): + sys.exit(f"missing font: {path}") + b64 = base64.b64encode(path.read_bytes()).decode("ascii") + out.append( + f'@font-face {{\n' + f' font-family: "{family}";\n' + f" src: url(data:font/woff2;base64,{b64}) format('woff2');\n" + f" font-weight: {weight};\n" + f" font-style: normal;\n" + f" font-display: swap;\n" + f"}}" + ) + return "\n".join(out) + + +def tokens() -> str: + out = [] + for name in TOKEN_FILES: + path = HERE / name + if not path.exists(): + sys.exit(f"missing token file: {path}") + text = path.read_text() + # The bundle's fonts.css is not vendored, so typography.css's family + # stacks would reference faces that never load. Nothing to strip here + # today, but keep the read verbatim so drift is a plain diff. + out.append(f"/* ---- {name} (vendored verbatim) ---- */\n{text.strip()}") + return "\n\n".join(out) + + +def main() -> None: + src = (HERE / "skyfall.css.in").read_text() + if "@@FONTS@@" not in src or "@@TOKENS@@" not in src: + sys.exit("skyfall.css.in lost one of its placeholders") + css = src.replace("/* @@FONTS@@ */", font_faces()) + css = css.replace("/* @@TOKENS@@ */", tokens()) + # Guard the one rule that silently breaks the theme if it regresses. + if not re.search(r"--surface-sunken", css): + sys.exit("generated css has no surface tokens — token vendoring failed") + OUT.write_text(css) + print(f"wrote {OUT} ({len(css) / 1024:.0f} KB)") + + +if __name__ == "__main__": + main() diff --git a/stacks/homepage/theme/colors.css b/stacks/homepage/theme/colors.css new file mode 100644 index 0000000..83f248d --- /dev/null +++ b/stacks/homepage/theme/colors.css @@ -0,0 +1,208 @@ +/* ============================================================ + Australis Skyfall — Color Tokens v2 + A ground-up web palette derived from the Australis Dark + PHILOSOPHY (not its ANSI values). Built in OKLCH so the laws + are explicit and every family stays perceptually consistent: + + - All hues are cooler than neutral; nothing warmer than amber. + - One lightness law across every chromatic family: + deep L 0.48 — light-theme fills & colored text + base L 0.66 — dark-theme fills (the working color) + bright L 0.80 — dark-theme colored text & highlights + - Chroma is tuned per hue so no family shouts over another. + - Neutrals (Sea ramp) drift in hue from ice-blue (265°) toward + ocean green (195°) as they brighten — the aurora signature. + - Medium / medium-high contrast for eye comfort. + + Families: Aurora (blue, cyan, green — use generously, in that + order) and Dawn (amber, red, violet — semantic accents only: + warning, danger, AI). + ============================================================ */ + +:root { + /* ---- Sea — neutral ramp (hue 265° → 195° as L rises) ---- */ + --sea-10: oklch(0.23 0.02 265); + --sea-15: oklch(0.27 0.024 268); /* dark canvas — the Australis anchor */ + --sea-20: oklch(0.31 0.022 262); + --sea-25: oklch(0.35 0.02 258); + --sea-30: oklch(0.4 0.018 252); + --sea-40: oklch(0.48 0.016 245); + --sea-50: oklch(0.56 0.015 235); + --sea-60: oklch(0.64 0.014 228); + --sea-70: oklch(0.72 0.014 220); + --sea-75: oklch(0.78 0.015 212); + --sea-80: oklch(0.83 0.017 205); + --sea-90: oklch(0.9 0.02 198); + --sea-94: oklch(0.94 0.014 195); + --sea-96: oklch(0.96 0.01 195); + --sea-98: oklch(0.98 0.006 195); + + /* ---- Ice — main colors (aliases into the ramp) ---- */ + --ice-black: var(--sea-15); + --ice-white: var(--sea-75); + --ice-bright-white: var(--sea-90); + + /* ---- Aurora — primary families (blue > cyan > green) ---- */ + --blue-deep: oklch(0.48 0.12 262); + --blue-base: oklch(0.66 0.12 262); + --blue-bright: oklch(0.8 0.09 262); + --cyan-deep: oklch(0.48 0.08 200); + --cyan-base: oklch(0.66 0.1 200); + --cyan-bright: oklch(0.8 0.1 200); + --green-deep: oklch(0.48 0.11 158); + --green-base: oklch(0.66 0.13 158); + --green-bright: oklch(0.8 0.13 158); + + /* ---- Dawn — accent families (semantic use only) ---- */ + --amber-deep: oklch(0.52 0.1 75); + --amber-base: oklch(0.7 0.12 78); + --amber-bright: oklch(0.82 0.13 82); + --red-deep: oklch(0.5 0.15 25); + --red-base: oklch(0.62 0.16 25); + --red-bright: oklch(0.78 0.11 28); + --violet-deep: oklch(0.5 0.15 292); + --violet-base: oklch(0.66 0.14 292); + --violet-bright: oklch(0.8 0.1 292); +} + +/* ============================================================ + Semantic aliases — DARK (default, first-class) + ============================================================ */ +:root { + color-scheme: dark; + + /* Surfaces */ + --surface-sunken: var(--sea-10); + --surface-base: var(--sea-15); + --surface-raised: var(--sea-20); + --surface-overlay: oklch(0.34 0.022 260); + --surface-card: var(--sea-20); + --surface-input: var(--sea-10); + --surface-scrim: oklch(0.17 0.02 265 / 0.72); + + /* Text */ + --text-heading: var(--sea-90); + --text-body: var(--sea-75); + --text-muted: var(--sea-60); + --text-faint: var(--sea-50); + --text-inverse: var(--sea-15); + --text-link: var(--blue-bright); + --text-link-hover: var(--sea-90); + + /* Borders */ + --border-subtle: var(--sea-25); + --border-default: var(--sea-30); + --border-strong: var(--sea-40); + --border-focus: var(--blue-base); + + /* Accent (primary = aurora blue) */ + --accent: var(--blue-base); + --accent-hover: oklch(0.71 0.11 262); + --accent-active: oklch(0.6 0.13 262); + --accent-bright: var(--blue-bright); + --accent-text: var(--blue-bright); + --accent-contrast: var(--sea-10); + --accent-soft: color-mix(in oklab, var(--blue-base) 16%, transparent); + --accent-soft-hover: color-mix(in oklab, var(--blue-base) 26%, transparent); + + /* Secondary accent (aurora cyan) */ + --secondary: var(--cyan-base); + --secondary-bright: var(--cyan-bright); + --secondary-text: var(--cyan-bright); + --secondary-soft: color-mix(in oklab, var(--cyan-base) 14%, transparent); + + /* Semantic status */ + --success: var(--green-base); + --success-text: var(--green-bright); + --success-soft: color-mix(in oklab, var(--green-base) 14%, transparent); + --warning: var(--amber-base); + --warning-text: var(--amber-bright); + --warning-soft: color-mix(in oklab, var(--amber-base) 13%, transparent); + --danger: var(--red-base); + --danger-hover: oklch(0.67 0.15 25); + --danger-text: var(--red-bright); + --danger-contrast: var(--sea-10); + --danger-soft: color-mix(in oklab, var(--red-base) 13%, transparent); + --info: var(--blue-base); + --info-text: var(--blue-bright); + --info-soft: color-mix(in oklab, var(--blue-base) 14%, transparent); + --ai: var(--violet-base); + --ai-text: var(--violet-bright); + --ai-soft: color-mix(in oklab, var(--violet-base) 13%, transparent); + + /* Selection */ + --selection-bg: var(--blue-base); + --selection-fg: var(--sea-10); +} + +/* ============================================================ + Semantic aliases — LIGHT ("Skyfall Day") + Same laws, inverted: surfaces at L 0.94–0.98, text at L 0.27–0.45, + chromatic fills & colored text drop to the deep (L 0.48) step. + ============================================================ */ +[data-theme="light"] { + color-scheme: light; + + /* Surfaces */ + --surface-sunken: var(--sea-94); + --surface-base: var(--sea-96); + --surface-raised: var(--sea-98); + --surface-overlay: #ffffff; + --surface-card: var(--sea-98); + --surface-input: #ffffff; + --surface-scrim: oklch(0.27 0.024 268 / 0.4); + + /* Text */ + --text-heading: var(--sea-15); + --text-body: oklch(0.38 0.02 255); + --text-muted: var(--sea-50); + --text-faint: var(--sea-60); + --text-inverse: var(--sea-90); + --text-link: var(--blue-deep); + --text-link-hover: var(--sea-15); + + /* Borders */ + --border-subtle: oklch(0.89 0.014 210); + --border-default: oklch(0.84 0.016 215); + --border-strong: var(--sea-75); + --border-focus: var(--blue-deep); + + /* Accent */ + --accent: var(--blue-deep); + --accent-hover: oklch(0.53 0.12 262); + --accent-active: oklch(0.44 0.12 262); + --accent-bright: var(--blue-base); + --accent-text: var(--blue-deep); + --accent-contrast: #ffffff; + --accent-soft: color-mix(in oklab, var(--blue-deep) 10%, transparent); + --accent-soft-hover: color-mix(in oklab, var(--blue-deep) 18%, transparent); + + /* Secondary accent */ + --secondary: var(--cyan-deep); + --secondary-bright: var(--cyan-base); + --secondary-text: var(--cyan-deep); + --secondary-soft: color-mix(in oklab, var(--cyan-deep) 9%, transparent); + + /* Semantic status */ + --success: var(--green-deep); + --success-text: var(--green-deep); + --success-soft: color-mix(in oklab, var(--green-deep) 10%, transparent); + --warning: var(--amber-deep); + --warning-text: var(--amber-deep); + --warning-soft: color-mix(in oklab, var(--amber-base) 16%, transparent); + --danger: var(--red-deep); + --danger-hover: oklch(0.55 0.16 25); + --danger-text: var(--red-deep); + --danger-contrast: #ffffff; + --danger-soft: color-mix(in oklab, var(--red-deep) 8%, transparent); + --info: var(--blue-deep); + --info-text: var(--blue-deep); + --info-soft: color-mix(in oklab, var(--blue-deep) 9%, transparent); + --ai: var(--violet-deep); + --ai-text: var(--violet-deep); + --ai-soft: color-mix(in oklab, var(--violet-deep) 9%, transparent); + + /* Selection */ + --selection-bg: var(--blue-base); + --selection-fg: #ffffff; +} diff --git a/stacks/homepage/theme/fonts/Supreme-400.woff2 b/stacks/homepage/theme/fonts/Supreme-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..50e881bcaa62be4b2864f1e55b08ec3f1c3f497d GIT binary patch literal 18700 zcmV)hK%>8RPew8T0RR9107(o04*&oF0L)wf07$I>0RR9100000000000000000000 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%0At#gqdWj>A@>9F-FJ_U#SpAYG`g#CniqLKRsG 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 literal 0 HcmV?d00001 diff --git a/stacks/homepage/theme/fonts/Supreme-500.woff2 b/stacks/homepage/theme/fonts/Supreme-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..751ea8f282490d70a9a8cca3b548671a37be08fd GIT binary patch literal 18828 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 literal 0 HcmV?d00001 diff --git a/stacks/homepage/theme/layout.css b/stacks/homepage/theme/layout.css new file mode 100644 index 0000000..addeb54 --- /dev/null +++ b/stacks/homepage/theme/layout.css @@ -0,0 +1,72 @@ +/* Australis Skyfall — spacing, radii, shadows, motion (v3 "calm depth") */ + +:root { + /* Spacing (4px base) */ + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 20px; + --space-6: 24px; + --space-8: 32px; + --space-10: 40px; + --space-12: 48px; + --space-16: 64px; + --space-20: 80px; + --space-24: 96px; + --space-32: 128px; + + /* Semantic spacing — airy content, compact chrome */ + --pad-chrome: var(--space-2); /* app chrome: rails, toolbars, list rows */ + --pad-content: var(--space-8); /* work surfaces: page bodies, card interiors breathe */ + --gap-pane: var(--space-4); /* gutter between panes/cards on the canvas */ + --measure: 68ch; /* long-form reading width */ + + /* Radii — moderate, calm */ + --radius-xs: 6px; + --radius-sm: 8px; + --radius-md: 10px; /* buttons, inputs, menu items */ + --radius-lg: 14px; /* cards, panes, popovers */ + --radius-xl: 16px; /* dialogs, drawers, command palette */ + --radius-full: 999px; + + /* Depth — crisp 1px hairline + layered soft shadow underneath. + Every elevated surface pairs border: 1px solid var(--border-subtle) + with one of these. Shadows are cool-tinted and two-layer: + a tight contact shadow + a wide ambient falloff. */ + --shadow-xs: 0 1px 2px oklch(0.13 0.02 265 / 0.22); + --shadow-sm: 0 1px 2px oklch(0.13 0.02 265 / 0.2), 0 2px 8px -2px oklch(0.13 0.02 265 / 0.24); + --shadow-md: 0 2px 4px oklch(0.13 0.02 265 / 0.22), 0 10px 28px -6px oklch(0.13 0.02 265 / 0.36); + --shadow-lg: 0 4px 8px oklch(0.13 0.02 265 / 0.26), 0 28px 64px -12px oklch(0.13 0.02 265 / 0.5); + --shadow-drawer: 0 8px 16px oklch(0.13 0.02 265 / 0.28), 0 32px 80px -8px oklch(0.13 0.02 265 / 0.55); + + /* Glows — hero moments ONLY: empty states, featured cards, command palette */ + --glow-accent: 0 0 72px -16px color-mix(in oklab, var(--blue-base) 42%, transparent); + --glow-secondary: 0 0 72px -16px color-mix(in oklab, var(--cyan-base) 38%, transparent); + --glow-ai: 0 0 72px -16px color-mix(in oklab, var(--violet-base) 40%, transparent); + + /* Active rail — left accent bar on active nav / selected items */ + --rail-active: inset 2px 0 0 0 var(--accent); + + /* Focus ring */ + --focus-ring: 0 0 0 2px var(--surface-base), 0 0 0 4px var(--border-focus); + + /* Motion — calm, no bounce */ + --ease-out: cubic-bezier(0.22, 1, 0.36, 1); /* @kind other */ + --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); /* @kind other */ + --duration-fast: 120ms; /* @kind other */ + --duration-base: 180ms; /* @kind other */ + --duration-slow: 300ms; /* @kind other */ + --duration-drawer: 260ms; /* @kind other */ +} + +[data-theme="light"] { + --shadow-xs: 0 1px 2px oklch(0.3 0.02 255 / 0.07); + --shadow-sm: 0 1px 2px oklch(0.3 0.02 255 / 0.06), 0 2px 8px -2px oklch(0.3 0.02 255 / 0.08); + --shadow-md: 0 2px 4px oklch(0.3 0.02 255 / 0.06), 0 10px 28px -6px oklch(0.3 0.02 255 / 0.12); + --shadow-lg: 0 4px 8px oklch(0.3 0.02 255 / 0.07), 0 28px 64px -12px oklch(0.3 0.02 255 / 0.18); + --shadow-drawer: 0 8px 16px oklch(0.3 0.02 255 / 0.08), 0 32px 80px -8px oklch(0.3 0.02 255 / 0.22); + --glow-accent: 0 0 72px -16px color-mix(in oklab, var(--blue-deep) 26%, transparent); + --glow-secondary: 0 0 72px -16px color-mix(in oklab, var(--cyan-deep) 24%, transparent); + --glow-ai: 0 0 72px -16px color-mix(in oklab, var(--violet-deep) 25%, transparent); +} diff --git a/stacks/homepage/theme/skyfall.css.in b/stacks/homepage/theme/skyfall.css.in new file mode 100644 index 0000000..9061fbd --- /dev/null +++ b/stacks/homepage/theme/skyfall.css.in @@ -0,0 +1,238 @@ +/* Homepage — Australis Skyfall theme. + * + * SOURCE OF TRUTH: this file plus `theme/colors.css`, `theme/layout.css` and + * `theme/typography.css`, which are vendored VERBATIM from the Australis + * Skyfall handoff bundle. Do not hand-edit `conf/custom.css` — it is + * generated. Run `theme/build.py` after changing anything here. + * + * WHY A BUILD STEP AT ALL: Homepage serves exactly two files out of its + * config directory, `/api/config/custom.css` and `/api/config/custom.js`. + * There is no static route for anything else, so a `@font-face` pointing at + * `theme/fonts/Supreme-400.woff2` would 404 — the face has to arrive inside + * the stylesheet as a data: URI. The build inlines it. + * + * WHICH FACES, AND WHY NOT ALL THREE: Skyfall specifies Bespoke Sans + * (display), Supreme (body/UI) and Victor Mono (code/data). Only Supreme is + * embedded. A link dashboard has no display type — nothing here is a headline + * or a hero number — and Victor Mono ships as 2.4 MB TTF statics per cut, + * which is 30x this whole stylesheet for the handful of latency figures on + * the cards. Both are named in the stacks below so they resolve if they ever + * get vendored. + * + * DEVIATIONS FROM THE SYSTEM, STATED PLAINLY: + * + * 1. Skyfall says "no photography, no textures" for backgrounds, and permits + * exactly one decorative motif: a subtle aurora gradient, on hero and + * empty-state areas ONLY, "never behind body text blocks". This dashboard + * IS a body-text block, and it carries a generated aurora image behind it. + * That is a real departure, taken on the operator's explicit instruction + * to generate a background with Arbo. It is mitigated, not waved away: + * the image is abstract with no subject (Arbo's `t2i-ui-background` + * workflow), strictly cool-temperature per the imagery rule, and pinned + * to low opacity so card contrast is never the thing that suffers. + * If it still reads as busy, the honest fix is to drop the image and let + * `--surface-sunken` be the canvas, which is what the system actually asks + * for. + * + * 2. Homepage renders service icons as full-colour vendor logos. Skyfall + * wants one cool, technical icon family. Not fixable from CSS without + * desaturating every logo into illegibility, so the icons stay as they + * are. + * + * SPECIFICITY: Homepage is Tailwind-generated, so utilities win on equal + * specificity. Every `!important` here is load-bearing; removing one silently + * reverts that rule to the stock theme. + */ + +/* @@FONTS@@ */ + +/* ============================================================ + Skyfall tokens — vendored verbatim from the handoff bundle. + ============================================================ */ + +/* @@TOKENS@@ */ + +/* ============================================================ + Homepage bindings — the only part of this file that is ours. + Everything above is Skyfall; everything below maps Skyfall's + semantic layer onto Homepage's DOM. Never hardcode a hex here: + the system's rule is that UI consumes --surface-*/--text-*/ + --border-*/--accent*/status tokens, not raw values. + ============================================================ */ + +body, +#page_wrapper, +#page_container { + background-color: var(--surface-sunken) !important; + color: var(--text-body) !important; + font-family: var(--font-body) !important; + font-size: var(--text-base) !important; + line-height: var(--leading-normal) !important; +} + +::selection { + background: var(--selection-bg); + color: var(--selection-fg); +} + +/* ---------- header chrome ---------- + Compact chrome per the negative-space rule: --pad-chrome, not --pad-content. */ +#information-widgets .widget-container, +#information-widgets .information-widget-search { + background: var(--surface-card) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-lg) !important; + box-shadow: var(--shadow-sm) !important; + padding: var(--pad-chrome) !important; +} + +#information-widgets .information-widget-search input { + background: transparent !important; + color: var(--text-body) !important; + font-family: var(--font-body) !important; +} + +#information-widgets .information-widget-search input::placeholder { + color: var(--text-faint) !important; +} + +/* Telemetry is data — the system says data is always mono. */ +.information-widget-resource .resource-value, +.service-block, +.service-stats { + font-family: var(--font-mono) !important; + font-variant-numeric: tabular-nums !important; +} + +/* ---------- tabs ---------- + The active rail is one of only two sanctioned accent expressions: + a 2px accent bar plus an --accent-soft fill. No glow — glows are + reserved for hero moments, and a tab is not one. */ +#myTab li button { + color: var(--text-muted) !important; + font-family: var(--font-body) !important; + font-weight: var(--weight-medium) !important; + border-radius: var(--radius-md) !important; + transition: color var(--duration-fast) var(--ease-out), + background var(--duration-fast) var(--ease-out) !important; +} + +#myTab li button:hover { + color: var(--text-body) !important; + background: var(--accent-soft) !important; +} + +#myTab li button[aria-selected="true"] { + background: var(--accent-soft) !important; + color: var(--text-heading) !important; + box-shadow: var(--rail-active) !important; +} + +/* ---------- group headers ---------- + ALL-CAPS is permitted only for tiny eyebrow labels — this is that case. */ +.service-group-name, +.bookmark-group-name { + color: var(--text-faint) !important; + font-family: var(--font-body) !important; + font-size: var(--text-xs) !important; + font-weight: var(--weight-semibold) !important; + letter-spacing: var(--tracking-caps) !important; + text-transform: uppercase !important; +} + +/* ---------- cards ---------- + The depth recipe, and it is not optional: crisp 1px hairline AND a + two-layer soft shadow. Never one without the other on a floating + surface — a card with only a border reads flat, one with only a + shadow reads smudged. */ +.service-card, +.bookmark-list li > a { + background: var(--surface-card) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-lg) !important; + box-shadow: var(--shadow-sm) !important; + transition: background var(--duration-fast) var(--ease-out), + border-color var(--duration-fast) var(--ease-out), + box-shadow var(--duration-base) var(--ease-out) !important; +} + +/* Hover: surfaces lighten one step, interactive cards lift sm -> md. */ +.service-card:hover, +.bookmark-list li > a:hover { + background: var(--surface-raised) !important; + border-color: var(--border-default) !important; + box-shadow: var(--shadow-md) !important; +} + +.service-name, +.bookmark-name { + color: var(--text-heading) !important; + font-weight: var(--weight-semibold) !important; + letter-spacing: var(--tracking-normal) !important; +} + +.service-description, +.bookmark-description { + color: var(--text-muted) !important; + font-size: var(--text-sm) !important; + line-height: var(--leading-snug) !important; +} + +/* ---------- status ---------- + Semantic colour is the whole point: the system communicates status with + colour and icons, never emoji, and accents are semantic-ONLY. Stock + Homepage paints every pill the same slate, which throws away the signal. */ +.service-tag, +.service-block, +.service-stats { + background: var(--surface-raised) !important; + border: 1px solid var(--border-subtle) !important; + border-radius: var(--radius-md) !important; + color: var(--text-muted) !important; + font-size: var(--text-2xs) !important; +} + +.status-online, +.status-healthy, +.status-running, +.status-started { + color: var(--success-text) !important; + background: var(--success-soft) !important; +} + +.status-offline, +.status-unhealthy, +.status-dead, +.status-error { + color: var(--danger-text) !important; + background: var(--danger-soft) !important; +} + +.status-exited, +.status-paused, +.status-partial, +.status-unknown, +.status-not-found { + color: var(--warning-text) !important; + background: var(--warning-soft) !important; +} + +/* ---------- focus ---------- */ +a:focus-visible, +button:focus-visible, +input:focus-visible { + outline: none !important; + box-shadow: var(--focus-ring) !important; + border-radius: var(--radius-sm) !important; +} + +/* ---------- motion ---------- + "Respect reduced-motion" is in the system's motion rule, not an extra. */ +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + } +} diff --git a/stacks/homepage/theme/typography.css b/stacks/homepage/theme/typography.css new file mode 100644 index 0000000..0c42329 --- /dev/null +++ b/stacks/homepage/theme/typography.css @@ -0,0 +1,40 @@ +/* Australis Skyfall — Typography tokens */ + +:root { + /* Families */ + --font-display: "Bespoke Sans", "Avenir Next", "Segoe UI", sans-serif; + --font-body: "Supreme", "Helvetica Neue", "Segoe UI", sans-serif; + --font-mono: "VictorMono Nerd Font", "SF Mono", "Cascadia Code", monospace; + + /* Scale (web-app oriented; 14px UI base) */ + --text-2xs: 11px; + --text-xs: 12px; + --text-sm: 13px; + --text-base: 14px; + --text-md: 16px; + --text-lg: 18px; + --text-xl: 22px; + --text-2xl: 28px; + --text-3xl: 36px; + --text-4xl: 48px; + --text-5xl: 64px; + + /* Weights */ + --weight-regular: 400; + --weight-medium: 500; + --weight-semibold: 600; + --weight-bold: 700; + --weight-extrabold: 800; + + /* Line heights */ + --leading-tight: 1.15; + --leading-snug: 1.35; + --leading-normal: 1.55; + --leading-relaxed: 1.7; + + /* Tracking */ + --tracking-tight: -0.02em; + --tracking-normal: 0; + --tracking-wide: 0.06em; + --tracking-caps: 0.1em; +}