Files
pbakaus_impeccable/site/styles/kinpaku-tokens.css
T

207 lines
9.3 KiB
CSS

/*
* impeccable.style — Neo kinpaku tokens (page-global, single source of truth)
*
* Every brand-bearing color, surface, text color, hairline rule, type-scale
* value, and motion easing used on the site lives here. New pages should read
* these tokens via var(--ks-*) rather than hand-typing oklch values.
*
* Pages may override individual tokens locally when there's a documented
* reason (e.g. .home-kinpaku bumps --ks-rule alpha for sharper UI borders
* against bento tiles). When in doubt, do not override — match.
*
* Imported by design-system.css, home-kinpaku.css, and designing-kinpaku.css.
* If a new page-level stylesheet needs these tokens, @import this file at the
* top so the values are available at :root.
*/
:root {
/* color-scheme follows html.light / html.dark class on <html> */
/* ============================================================
Brand anchors. Two anchors carry the brand — kinpaku gold for
commitment and brand voice, verdigris patina for state and
contrast. Everything else is supporting role.
============================================================ */
/* Kinpaku gold. The rich, warm, vibrant primary. */
--ks-kinpaku: oklch(84% 0.19 80.46); /* primary accent, wordmark, icon */
--ks-kinpaku-pale: oklch(86% 0.07 84); /* hover lift, pale fills */
--ks-kinpaku-rich: oklch(77% 0.13 82); /* active CTA, severity-medium */
--ks-kinpaku-deep: oklch(61% 0.085 78); /* borders against the brand */
/* Verdigris patina. The secondary accent — state, signal, selection. */
--ks-patina: oklch(70% 0.12 188); /* secondary accent */
--ks-patina-pale: oklch(82% 0.07 188); /* hover lift on patina */
--ks-patina-deep: oklch(49% 0.08 188); /* deep oxide, dark variants */
/* Warning — vermilion. Used sparingly, only for failures and warnings. */
--ks-vermilion: oklch(58% 0.15 35);
/* ============================================================
Surfaces. Warm-black lacquer carries everything.
============================================================ */
--ks-lacquer: oklch(7% 0.006 95); /* page ground */
--ks-lacquer-deep: oklch(4% 0.004 95); /* deepest inset */
--ks-lacquer-raised: oklch(11% 0.006 95); /* raised panels, inputs */
--ks-graphite: oklch(15% 0.008 95); /* inactive surfaces */
--ks-graphite-2: oklch(19% 0.008 95); /* one step up from graphite */
/* ============================================================
Text. The whole text ramp runs near-neutral and bright so copy,
headings, and labels read crisp on lacquer instead of mushing
into the warm floor. Warmth now lives only in the gold accents
and the surfaces, not in the type. (--ks-champagne keeps its name
for compatibility but is no longer warm.)
============================================================ */
--ks-champagne: oklch(91% 0 0); /* headlines, <strong> — neutral white */
--ks-text: oklch(88% 0 0); /* body — neutral near-white */
--ks-text-muted: oklch(72% 0 0); /* captions, meta */
--ks-text-faint: oklch(62% 0 0); /* subdued */
--ks-text-mute-deep: oklch(52% 0 0); /* disabled */
/* ============================================================
Rules. The hairline is neutral so borders/dividers/labels don't
carry warmth (warmth lives in the gold accents and surfaces). For a
gold accent border, use --ks-kinpaku directly, not a readability variant.
============================================================ */
--ks-rule: oklch(78% 0 0 / 0.16);
/* ============================================================
Code. One treatment site-wide. Inline code is a neutral graphite
chip; blocks / CLI commands are a deep lacquer terminal with a
neutral hairline. Gold is only for code that is itself a command
link (--ks-code-cmd). All code rules read these — don't hand-type.
============================================================ */
--ks-code-fg: oklch(91% 0 0); /* inline code text */
--ks-code-bg: var(--ks-graphite-2); /* inline code chip */
--ks-code-radius: 3px;
--ks-code-pad: 0.3em 0.5em; /* inline code chip padding */
--ks-code-block-fg: oklch(86% 0 0); /* block / CLI text */
--ks-code-block-bg: var(--ks-lacquer-deep);
--ks-code-block-border: var(--ks-rule);
--ks-code-block-radius: 2px;
--ks-code-cmd: var(--ks-kinpaku); /* code that's a command link */
/* ============================================================
Typography — three faces.
- --ks-font-display: Alumni Sans Pinstripe. Pinstripe horizontal
strikes feel futuristic and editorial at display size; used for
the hero h1 and section h2s. Single-weight — font-weight is inert.
- --ks-font-wordmark: solid Alumni Sans, the weightable sibling of
the pinstripe. Same letterforms, but carries real weight in the
brand lockup where the hairline pinstripe reads too thin.
- --ks-font: Albert Sans. Quiet geometric humanist, used for body
and UI text. Pairs cleanly with the pinstripe display without
competing.
All loaded via Base.astro's Google Fonts link.
============================================================ */
--ks-font-display: "Alumni Sans Pinstripe", "Albert Sans", Arial, sans-serif;
--ks-font-wordmark: "Alumni Sans", "Alumni Sans Pinstripe", "Albert Sans", Arial, sans-serif;
--ks-font: "Albert Sans", "Avenir Next", "Helvetica Neue", Arial, system-ui, sans-serif;
--ks-mono: "SFMono-Regular", "Roboto Mono", "JetBrains Mono", Consolas, monospace;
/* ============================================================
Type scale. These are the actual sizes the homepage ships with —
new pages should read them via var(...) rather than hand-typing.
The display vs headline weight split is deliberate: the hero h1
reads thin (300) for elegance; section h2s read heavier (600) to
anchor each block. Section h2s look heavier than the h1 on purpose.
============================================================ */
/* Display — hero h1. */
--ks-type-display-size: clamp(3.4rem, 6.5vw, 5.6rem);
--ks-type-display-weight: 300;
--ks-type-display-line: 1.02;
--ks-type-display-track: -0.01em;
/* Headline — section h2. Heavier than display. */
--ks-type-headline-size: clamp(2.6rem, 4vw, 3.4rem);
--ks-type-headline-weight: 600;
--ks-type-headline-line: 1.04;
/* Title — card and panel headings (h3). */
--ks-type-title-size: 1.18rem;
--ks-type-title-weight: 500;
--ks-type-title-line: 1.35;
/* Body. */
--ks-type-body-size: 1.02rem;
--ks-type-body-line: 1.8;
/* Eyebrow — small mono labels above titles. */
--ks-type-eyebrow-size: 0.7rem;
--ks-type-eyebrow-track: 0.18em;
/* Wordmark — IMPECCABLE in the header. */
--ks-type-wordmark-size: 1.15rem;
--ks-type-wordmark-track: 0.42em;
/* Mono — code, terminal, audit lines. */
--ks-type-mono-size: 0.72rem;
--ks-type-mono-track: 0.22em;
/* ============================================================
Motion.
============================================================ */
--ks-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}
html.dark {
color-scheme: dark;
}
/* ============================================================
Light mode — pale surfaces, dark ink type, and kinpaku kept as the
real brand gold. Activated via html.light on
<html> (set by theme.js + inline FOUC guard in Base.astro).
============================================================ */
html.light {
color-scheme: light;
/* Brand gold — same fills as dark mode (logo, buttons, marks).
For decorative small text on paper, use patina. Use --ks-link-on-paper
for body-sized links that need stronger contrast. */
--ks-kinpaku: oklch(84% 0.19 80.46);
--ks-kinpaku-pale: oklch(86% 0.07 84);
--ks-kinpaku-rich: oklch(77% 0.13 82);
--ks-kinpaku-deep: oklch(61% 0.085 78);
--ks-kinpaku-ink: var(--ks-patina);
/* Text links + active nav on paper — patina, not fill gold. */
--ks-link-on-paper: var(--ks-patina-deep);
--ks-link-on-paper-hover: var(--ks-patina);
--ks-link-on-paper-line: oklch(49% 0.08 188 / 0.42);
--ks-nav-active: var(--ks-patina-deep);
/* Patina — brand values for fills; deep for text on paper. */
--ks-patina: oklch(70% 0.12 188);
--ks-patina-pale: oklch(82% 0.07 188);
--ks-patina-deep: oklch(49% 0.08 188);
--ks-vermilion: oklch(52% 0.16 35);
/* Surfaces — warm paper and cream panels. */
--ks-lacquer: oklch(97% 0.012 95);
--ks-lacquer-deep: oklch(94% 0.014 95);
--ks-lacquer-raised: oklch(99% 0.008 95);
--ks-graphite: oklch(91% 0.012 95);
--ks-graphite-2: oklch(88% 0.014 95);
/* Text — dark ink on paper. */
--ks-champagne: oklch(18% 0.02 95);
--ks-text: oklch(25% 0.018 95);
--ks-text-muted: oklch(45% 0.015 95);
--ks-text-faint: oklch(55% 0.012 95);
--ks-text-mute-deep: oklch(65% 0.01 95);
/* Rules — dark hairlines. */
--ks-rule: oklch(25% 0.02 95 / 0.12);
/* Code — light chips, dark text. */
--ks-code-fg: oklch(28% 0.02 95);
--ks-code-bg: var(--ks-graphite);
--ks-code-block-fg: oklch(30% 0.02 95);
--ks-code-block-bg: var(--ks-lacquer-raised);
--ks-code-block-border: var(--ks-rule);
--ks-code-cmd: var(--ks-link-on-paper);
}