themes-scifi-clean/manifest.yaml
Alex Dunmow dc4cc2d8b3 feat: convert to codeless .bnp — templates + manifest, Go/templ deleted (WO-WZ-021)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:24:40 +08:00

141 lines
4.2 KiB
YAML

# Sci-Fi Clean theme — codeless .bnp manifest (WO-WZ-021 Phase B1).
# Synthesized into manifest.pb by `ninja plugin build` (no plugin.wasm).
theme_presets: presets.json
bundled_fonts: fonts.json
master_pages: master_pages.json
system_templates:
- key: scifi-clean
title: Sci-Fi Clean
description: "Minimalist futurist theme for aerospace, robotics, and R&D — off-white surfaces, technical blue, signal-orange accents, mono numerals."
page_templates:
- system: scifi-clean
key: default
title: Default
description: "Standard cleanroom layout with header rail, main column, and footer instrument panel."
slots: [header, main, footer]
- system: scifi-clean
key: landing
title: Landing
description: "Hero diagram + spec strip + CTA banner."
slots: [hero, specs, main, cta, footer]
- system: scifi-clean
key: article
title: Article
description: "Narrow column with rail metadata and figure margin."
slots: [header, rail, main, footer]
- system: scifi-clean
key: full-width
title: Full Width
description: "Edge-to-edge schematic surface for diagrams and dashboards."
slots: [header, main, footer]
template_overrides:
- { template: scifi-clean, block: heading }
- { template: scifi-clean, block: text }
- { template: scifi-clean, block: button }
email_wrappers:
- scifi-clean
css:
input_css_append: |
/* === Sci-Fi Clean: font-family fallback variables ===
* The site admin assigns real fonts via the typography settings; until then,
* the variables fall through to the stacks below. 'Space Grotesk', 'Inter',
* and 'JetBrains Mono' are spec §5 recommendations, available in the Google
* Fonts picker.
*/
:root {
--font-heading: "Space Grotesk", "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-body: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
/* === Sci-Fi Clean: utilities ===
* Hairline rules and a translucent blueprint grid are the two utility classes
* the theme uses heavily. Tailwind's defaults cover everything else.
*/
.hairline {
border: 1px solid hsl(var(--border));
}
.hairline-t {
border-top: 1px solid hsl(var(--border));
}
.hairline-b {
border-bottom: 1px solid hsl(var(--border));
}
.bg-grid {
background-color: hsl(var(--background));
background-image:
linear-gradient(to right, hsl(var(--border) / 0.6) 1px, transparent 1px),
linear-gradient(to bottom, hsl(var(--border) / 0.6) 1px, transparent 1px);
background-size: 32px 32px;
}
.mono-numerals {
font-family: var(--font-mono);
font-variant-numeric: tabular-nums;
}
.tabular-nums {
font-variant-numeric: tabular-nums;
}
.scrim {
position: relative;
}
.scrim::before {
content: "";
position: absolute;
inset: 0;
background-color: hsl(var(--background) / 0.65);
pointer-events: none;
}
.scrim > * {
position: relative;
z-index: 1;
}
/* === Sci-Fi Clean: focus rings ===
* Use the --ring token (a precise technical blue) for all focus states so
* the keyboard cursor is visible against either preset.
*/
.scifi-focus:focus-visible {
outline: 2px solid hsl(var(--ring));
outline-offset: 2px;
}
/* === Sci-Fi Clean: chevron ===
* Right-arrow chevron used in ScifiButtonBlock; encoded as Unicode so it
* never breaks across renderers (UAT §13.14).
*/
.scifi-chevron::after {
content: " \2192";
font-family: var(--font-mono);
margin-left: 0.5rem;
}
/* === Sci-Fi Clean: heading family ===
* The host shadcn layer doesn't apply --font-heading by default; wire it
* up here for the four heading levels we render.
*/
.scifi-h1, .scifi-h2, .scifi-h3, .scifi-h4 {
font-family: var(--font-heading);
font-feature-settings: "ss01" on;
}
.scifi-body {
font-family: var(--font-body);
}
.scifi-mono {
font-family: var(--font-mono);
}