Files
Youssef bd9e9ab859 v1.1 — four new themes, the Custom route, and a full copy pass
Adds Carnival, Lumen, Hum, and Cobalt to the catalogue (now 20 themes),
each with its own tokens block, hero archetype, landing copy, and spec doc.

Introduces Custom as a first-class route: when a brief carries real
creative intent, Hallmark designs the whole page from first principles —
palette, type, and structure — rather than recolouring a catalogue theme.
Ships five worked custom examples and a README section.

Rewrites the per-theme landing copy and reconciles every catalogue count
across the site and the skill (20 themes · 21 macrostructures · 50
component archetypes · 70 slop-test gates). Drops the last competitor
references from the CSS comments, fixes the genre rosters, and ignores
the local example explorations so only the featured builds ship.
2026-06-02 17:50:31 +01:00

990 lines
29 KiB
CSS

/* Hallmark · genre: modern-minimal · macrostructure: saas-product · theme: cobalt · enrichment: B · nav: bordered bar + ⌘K · footer: Ft1 */
/* ───────────────────────────────────────────────────────────
Modern reset
─────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
img, picture, svg { display: block; max-width: 100%; }
ul, ol { list-style: none; padding: 0; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
:where(h1, h2, h3, h4) { font-weight: inherit; }
/* ───────────────────────────────────────────────────────────
Base
─────────────────────────────────────────────────────────── */
html {
font-family: var(--font-body);
background: var(--color-paper);
color: var(--color-ink-2);
scroll-behavior: smooth;
font-synthesis-weight: none;
/* clean cool paper + hairlines — no background pattern */
}
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
}
body {
font-size: var(--step-body);
line-height: var(--leading-body);
font-weight: var(--weight-body);
text-rendering: optimizeLegibility;
font-feature-settings: "kern" 1, "liga" 1, "cv05" 1;
overflow-x: hidden;
}
code, kbd, pre { font-family: var(--font-mono); }
/* shared frame — content sits in a centred max-width, full-bleed bands */
.nav__inner,
.hero,
.strip,
.features,
.pricing,
.foot {
width: 100%;
max-width: var(--maxw);
margin-inline: auto;
padding-inline: var(--gutter);
}
/* ─── Skip link ─── */
.skip-link {
position: absolute;
left: var(--gutter);
top: -3.5em;
z-index: 100;
padding: 0.55rem 0.9rem;
background: var(--color-ink);
color: var(--color-accent-ink);
font-family: var(--font-mono);
font-size: var(--step-small);
letter-spacing: var(--tracking-label);
border-radius: var(--radius-btn);
transition: top 160ms var(--ease-out);
}
.skip-link:focus { top: 0.6rem; }
/* ─── Focus ─── */
:focus-visible {
outline: 2px solid var(--color-accent);
outline-offset: 2px;
border-radius: 3px;
}
/* ─── Shared atoms ─────────────────────────────────────────── */
.eyebrow {
display: inline-flex;
align-items: center;
gap: 0.55em;
font-family: var(--font-mono);
font-size: var(--step-small);
letter-spacing: var(--tracking-label);
text-transform: uppercase;
color: var(--color-muted);
}
.eyebrow__dot {
width: 6px; height: 6px;
border-radius: 50%;
background: var(--color-accent);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5em;
font-family: var(--font-body);
font-weight: var(--weight-medium);
font-size: 0.9375rem;
line-height: 1;
padding: 0.7em 1.1em;
border-radius: var(--radius-btn);
border: var(--rule) solid transparent;
transition: background var(--t-quiet), border-color var(--t-quiet), color var(--t-quiet);
white-space: nowrap;
}
.btn--accent {
background: var(--color-accent);
color: var(--color-accent-ink);
}
.btn--accent:hover { background: oklch(53% 0.21 256); }
.btn--ghost {
border-color: var(--color-rule-2);
color: var(--color-ink);
background: var(--color-paper);
}
.btn--ghost:hover { border-color: var(--color-accent); color: var(--color-accent); }
.btn--lg { padding: 0.85em 1.35em; font-size: 1rem; }
.btn--block { width: 100%; }
/* understated typographic link with cobalt underline-grow */
.link-arrow {
font-weight: var(--weight-medium);
color: var(--color-ink);
position: relative;
padding-bottom: 2px;
}
.link-arrow span { transition: transform var(--t-quiet); display: inline-block; }
.link-arrow::after {
content: "";
position: absolute;
left: 0; bottom: 0;
width: 100%; height: 1.5px;
background: var(--color-accent);
transform: scaleX(0);
transform-origin: left;
transition: transform var(--t-quiet);
}
.link-arrow:hover::after { transform: scaleX(1); }
.link-arrow:hover span { transform: translateX(3px); }
code:not(.code code):not(.strip__cmd):not(.foot__ver) {
font-size: 0.875em;
background: var(--color-paper-3);
border: var(--rule) solid var(--color-rule);
border-radius: 4px;
padding: 0.08em 0.36em;
color: var(--color-ink);
}
/* ───────────────────────────────────────────────────────────
Nav · cool dev-tool bar, single hairline under, blur backdrop
─────────────────────────────────────────────────────────── */
.nav {
position: sticky;
top: 0;
z-index: 50;
border-bottom: var(--rule) solid var(--color-rule);
background: oklch(98.5% 0.004 250 / 0.78);
-webkit-backdrop-filter: saturate(180%) blur(12px);
backdrop-filter: saturate(180%) blur(12px);
transition: border-color var(--t-quiet), background var(--t-quiet);
}
.nav.is-scrolled { border-bottom-color: var(--color-rule-2); }
.nav__inner {
display: flex;
align-items: center;
gap: 1.5rem;
height: 60px;
}
.nav__brand {
display: inline-flex;
align-items: center;
gap: 0.55em;
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: 1.15rem;
letter-spacing: var(--tracking-display);
color: var(--color-ink);
}
.nav__mark {
width: 18px; height: 18px;
border-radius: 5px;
background: var(--color-accent);
position: relative;
flex: none;
}
.nav__mark::after {
content: "";
position: absolute;
inset: 5px 5px auto auto;
width: 6px; height: 6px;
border-radius: 1px;
background: var(--color-accent-ink);
}
.nav__links {
display: flex;
gap: 1.5rem;
margin-right: auto;
font-size: 0.9375rem;
}
.nav__links a {
color: var(--color-ink-2);
position: relative;
padding: 0.3em 0;
transition: color var(--t-quiet);
}
.nav__links a::after {
content: "";
position: absolute;
left: 0; bottom: -2px;
width: 100%; height: 1.5px;
background: var(--color-accent);
transform: scaleX(0);
transform-origin: left;
transition: transform var(--t-quiet);
}
.nav__links a:hover { color: var(--color-ink); }
.nav__links a:hover::after { transform: scaleX(1); }
.nav__right {
display: flex;
align-items: center;
gap: 0.75rem;
}
/* ⌘K affordance — bordered, mono label, NOT a pill */
.cmdk {
display: inline-flex;
align-items: center;
gap: 0.6rem;
border: var(--rule) solid var(--color-rule-2);
border-radius: var(--radius-btn);
padding: 0.45rem 0.55rem 0.45rem 0.75rem;
color: var(--color-muted);
transition: border-color var(--t-quiet), color var(--t-quiet);
}
.cmdk:hover { border-color: var(--color-accent); color: var(--color-ink); }
.cmdk__label { font-size: 0.875rem; }
.cmdk__keys {
display: inline-flex;
align-items: center;
gap: 1px;
font-family: var(--font-mono);
font-size: 0.75rem;
color: var(--color-ink-2);
background: var(--color-paper-3);
border: var(--rule) solid var(--color-rule);
border-radius: 4px;
padding: 0.1rem 0.35rem;
line-height: 1;
}
/* ───────────────────────────────────────────────────────────
Hero · asymmetric — copy left, live demo right
─────────────────────────────────────────────────────────── */
.hero {
display: grid;
grid-template-columns: minmax(0, 1.02fr) minmax(0, 1.08fr);
gap: clamp(2rem, 5vw, 4.5rem);
align-items: center;
padding-top: clamp(3.5rem, 7vw, 6rem);
padding-bottom: var(--section-y);
}
.hero__title {
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: var(--step-hero);
line-height: var(--leading-tight);
letter-spacing: var(--tracking-display);
color: var(--color-ink);
margin-top: 1.1rem;
text-wrap: balance;
}
.hero__lede {
font-size: var(--step-lede);
line-height: 1.55;
color: var(--color-ink-2);
max-width: 46ch;
margin-top: 1.35rem;
}
.hero__cta {
display: flex;
align-items: center;
gap: 1.5rem;
margin-top: 2rem;
flex-wrap: wrap;
}
.hero__meta {
margin-top: 1.5rem;
font-size: 0.875rem;
color: var(--color-muted);
}
.hero__meta code, .hero__lede code { font-weight: var(--weight-medium); }
/* ─── The demo stack ─── */
.demo {
display: grid;
gap: 0.9rem;
}
/* ─── Code cards on graphite ─── */
.code-card {
background: var(--color-graphite);
border: var(--rule) solid var(--color-graphite-3);
border-radius: var(--radius-card);
box-shadow: var(--shadow-card);
overflow: hidden;
}
.code-card__bar {
display: flex;
align-items: center;
gap: 0.7rem;
padding: 0.6rem 0.9rem;
background: var(--color-graphite-2);
border-bottom: var(--rule) solid var(--color-graphite-3);
}
.code-card__dots { display: inline-flex; gap: 0.4rem; }
.code-card__dots i {
width: 9px; height: 9px;
border-radius: 50%;
background: var(--color-graphite-3);
}
.code-card__file {
font-family: var(--font-mono);
font-size: 0.75rem;
letter-spacing: var(--tracking-label);
color: var(--code-dim);
}
.code-card__file--res { margin-right: auto; }
.status-chip {
display: inline-flex;
align-items: center;
gap: 0.45em;
font-family: var(--font-mono);
font-size: 0.7rem;
letter-spacing: var(--tracking-label);
color: var(--code-accent);
background: oklch(58% 0.20 256 / 0.16);
border: var(--rule) solid oklch(58% 0.20 256 / 0.3);
border-radius: 4px;
padding: 0.18rem 0.5rem;
line-height: 1;
}
.status-chip__dot {
width: 6px; height: 6px;
border-radius: 50%;
background: var(--code-accent);
}
.code {
margin: 0;
padding: 1.1rem 1.15rem;
font-size: var(--step-code);
line-height: 1.7;
color: var(--code-text);
overflow-x: auto;
tab-size: 2;
}
.code code { font-family: var(--font-mono); white-space: pre; }
/* syntax tokens */
.c-method, .c-key, .c-kw, .c-accent { color: var(--code-accent); }
.c-fn { color: oklch(82% 0.09 200); }
.c-str { color: var(--code-string); }
.c-num, .c-bool { color: oklch(80% 0.08 70); }
.c-punc, .c-flag { color: var(--code-dim); }
.c-dim { color: var(--code-dim); }
.c-comment { color: var(--code-dim); font-style: italic; }
/* typed-in line + cursor */
.type { color: var(--code-string); }
.c-cursor {
display: inline-block;
width: 0.55em; height: 1.05em;
vertical-align: -0.18em;
background: var(--code-accent);
margin-left: 1px;
opacity: 0;
}
.c-cursor.is-blinking { animation: blink 1s steps(2, start) 3; opacity: 1; }
@keyframes blink { 50% { opacity: 0; } }
/* ───────────────────────────────────────────────────────────
Quick-start strip · thin hairline band
─────────────────────────────────────────────────────────── */
.strip {
display: flex;
align-items: center;
justify-content: space-between;
gap: 2rem clamp(1.5rem, 5vw, 4rem);
flex-wrap: wrap;
padding-block: 1.6rem;
border-top: var(--rule) solid var(--color-rule);
border-bottom: var(--rule) solid var(--color-rule);
}
.strip__install {
display: inline-flex;
align-items: center;
gap: 0.85rem;
}
.strip__label {
font-family: var(--font-mono);
font-size: var(--step-small);
letter-spacing: var(--tracking-label);
text-transform: uppercase;
color: var(--color-muted);
}
.strip__cmd {
font-size: 0.9375rem;
color: var(--color-ink);
border: var(--rule) solid var(--color-rule-2);
border-radius: var(--radius-btn);
padding: 0.5rem 0.75rem;
background: var(--color-paper-2);
}
.strip__cmd .c-dim { color: var(--color-muted); }
.strip__cmd .c-accent { color: var(--color-accent); font-weight: var(--weight-medium); }
.strip__copy {
font-size: 0.8125rem;
color: var(--color-muted);
border: var(--rule) solid transparent;
border-radius: var(--radius-btn);
padding: 0.35rem 0.55rem;
transition: color var(--t-quiet), border-color var(--t-quiet);
}
.strip__copy:hover { color: var(--color-accent); border-color: var(--color-rule-2); }
.strip__copy.is-copied { color: var(--color-accent); }
.strip__trust {
display: inline-flex;
align-items: center;
gap: 1.25rem;
flex-wrap: wrap;
}
.trust {
display: flex;
gap: 1.5rem;
flex-wrap: wrap;
align-items: center;
}
.trust li {
font-family: var(--font-display);
font-weight: var(--weight-medium);
font-size: 0.9375rem;
letter-spacing: var(--tracking-snug);
color: var(--color-muted);
}
/* ───────────────────────────────────────────────────────────
Features · asymmetric — one wide code block + two narrow points
─────────────────────────────────────────────────────────── */
.features { padding-block: var(--section-y); }
.features__head { max-width: 60ch; }
.features__title {
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: var(--step-section);
line-height: var(--leading-snug);
letter-spacing: var(--tracking-display);
color: var(--color-ink);
margin-top: 0.9rem;
text-wrap: balance;
}
.features__lede {
font-size: var(--step-lede);
color: var(--color-ink-2);
margin-top: 1.1rem;
max-width: 54ch;
}
.features__grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--rule);
margin-top: clamp(2.5rem, 5vw, 4rem);
background: var(--color-rule); /* hairline gridlines between cells */
border: var(--rule) solid var(--color-rule);
border-radius: var(--radius-card);
overflow: hidden;
}
.feature {
background: var(--color-paper);
padding: clamp(1.5rem, 3vw, 2.25rem);
}
/* wide cell spans both columns */
.feature--wide {
grid-column: 1 / -1;
display: grid;
grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
gap: clamp(1.5rem, 4vw, 3rem);
align-items: center;
}
.feature__kicker {
font-family: var(--font-mono);
font-size: var(--step-small);
letter-spacing: var(--tracking-label);
text-transform: uppercase;
color: var(--color-accent);
margin-bottom: 0.8rem;
}
.feature__num {
display: block;
font-family: var(--font-mono);
font-size: 0.8125rem;
letter-spacing: var(--tracking-label);
color: var(--color-rule-2);
margin-bottom: 0.9rem;
}
.feature__title {
font-family: var(--font-display);
font-weight: var(--weight-medium);
font-size: 1.375rem;
line-height: 1.2;
letter-spacing: var(--tracking-snug);
color: var(--color-ink);
}
.feature__body {
margin-top: 0.7rem;
color: var(--color-ink-2);
font-size: 1rem;
max-width: 42ch;
}
.feature__list {
margin-top: 1.1rem;
display: grid;
gap: 0.55rem;
}
.feature__list li {
position: relative;
padding-left: 1.3rem;
font-size: 0.9375rem;
color: var(--color-ink-2);
}
.feature__list li::before {
content: "";
position: absolute;
left: 0; top: 0.62em;
width: 7px; height: 7px;
border: 1.5px solid var(--color-accent);
border-bottom: 0; border-left: 0;
transform: rotate(45deg);
}
.feature__list code { font-size: 0.85em; }
.code-card--inline { box-shadow: var(--shadow-card); }
.code-card--inline .code { font-size: 0.8125rem; }
/* ───────────────────────────────────────────────────────────
Quickstart · FULL-BLEED DARK graphite band — Cobalt's signature
Light text, lighter cool hairlines, cobalt pops. Light → dark → light.
─────────────────────────────────────────────────────────── */
.quickstart {
/* a hair darker than the code-card ground for depth */
background: oklch(20% 0.016 260);
color: var(--color-quick-ink);
border-top: var(--rule) solid var(--color-graphite-3);
border-bottom: var(--rule) solid var(--color-graphite-3);
padding-block: var(--section-y);
}
.quickstart__inner {
width: 100%;
max-width: var(--maxw);
margin-inline: auto;
padding-inline: var(--gutter);
display: grid;
grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.12fr);
gap: clamp(2rem, 5vw, 4.5rem);
align-items: center;
}
.eyebrow--dark { color: var(--color-quick-muted); }
.quickstart__title {
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: var(--step-section);
line-height: var(--leading-snug);
letter-spacing: var(--tracking-display);
color: var(--color-quick-ink);
margin-top: 0.9rem;
text-wrap: balance;
}
.quickstart__lede {
font-size: var(--step-lede);
line-height: 1.55;
color: var(--color-quick-ink-2);
margin-top: 1.1rem;
max-width: 42ch;
}
.quickstart__lede code {
font-size: 0.875em;
background: oklch(27% 0.018 260);
border: var(--rule) solid var(--color-graphite-3);
border-radius: 4px;
padding: 0.08em 0.36em;
color: var(--code-accent);
}
.quickstart__meta { margin-top: 1.6rem; }
.quickstart__link {
font-family: var(--font-mono);
font-size: 0.8125rem;
letter-spacing: var(--tracking-label);
color: var(--code-accent);
position: relative;
padding-bottom: 2px;
}
.quickstart__link span { transition: transform var(--t-quiet); display: inline-block; }
.quickstart__link::after {
content: "";
position: absolute;
left: 0; bottom: 0;
width: 100%; height: 1.5px;
background: var(--code-accent);
transform: scaleX(0);
transform-origin: left;
transition: transform var(--t-quiet);
}
.quickstart__link:hover::after { transform: scaleX(1); }
.quickstart__link:hover span { transform: translateX(3px); }
/* the code card on the dark band reads as a slightly raised inset */
.code-card--quick {
background: var(--color-graphite);
border-color: var(--color-graphite-3);
box-shadow: none;
}
/* ───────────────────────────────────────────────────────────
Pricing · hairline-framed plans, one cobalt CTA
─────────────────────────────────────────────────────────── */
.pricing {
padding-block: var(--section-y);
border-top: var(--rule) solid var(--color-rule);
}
.pricing__head { max-width: 50ch; }
.pricing__title {
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: var(--step-section);
line-height: var(--leading-snug);
letter-spacing: var(--tracking-display);
color: var(--color-ink);
margin-top: 0.9rem;
}
.pricing__lede {
font-size: var(--step-lede);
color: var(--color-ink-2);
margin-top: 1rem;
}
.plans {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1rem;
margin-top: clamp(2.5rem, 5vw, 3.5rem);
}
.plan {
display: flex;
flex-direction: column;
padding: 1.6rem;
border: var(--rule) solid var(--color-rule);
border-radius: var(--radius-card);
background: var(--color-paper);
position: relative;
transition: border-color var(--t-quiet);
}
.plan:hover { border-color: var(--color-rule-2); }
.plan--feature {
border-color: var(--color-accent);
background: var(--color-paper-2);
}
.plan--feature:hover { border-color: var(--color-accent); }
.plan__badge {
position: absolute;
top: -0.7rem; left: 1.6rem;
font-family: var(--font-mono);
font-size: 0.6875rem;
letter-spacing: var(--tracking-label);
text-transform: uppercase;
color: var(--color-accent-ink);
background: var(--color-accent);
border-radius: 4px;
padding: 0.25rem 0.5rem;
line-height: 1;
}
.plan__name {
font-family: var(--font-display);
font-weight: var(--weight-medium);
font-size: 1.0625rem;
letter-spacing: var(--tracking-snug);
color: var(--color-ink);
}
.plan__price { margin-top: 1rem; }
.plan__num {
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: clamp(1.9rem, 3vw, 2.4rem);
letter-spacing: var(--tracking-display);
color: var(--color-ink);
}
.plan__unit {
font-family: var(--font-mono);
font-size: 0.8125rem;
color: var(--color-muted);
margin-top: 0.3rem;
}
.plan__list {
display: grid;
gap: 0.6rem;
margin: 1.4rem 0;
padding-top: 1.4rem;
border-top: var(--rule) solid var(--color-rule);
}
.plan__list li {
position: relative;
padding-left: 1.3rem;
font-size: 0.9375rem;
color: var(--color-ink-2);
}
.plan__list li::before {
content: "";
position: absolute;
left: 0; top: 0.62em;
width: 7px; height: 7px;
border: 1.5px solid var(--color-accent);
border-bottom: 0; border-left: 0;
transform: rotate(45deg);
}
.plan .btn { margin-top: auto; }
/* ───────────────────────────────────────────────────────────
Footer · Ft1 mast-headed
─────────────────────────────────────────────────────────── */
.foot {
padding-top: clamp(3rem, 6vw, 5rem);
padding-bottom: 2rem;
border-top: var(--rule) solid var(--color-rule-2);
}
.foot__top {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
gap: clamp(2rem, 5vw, 4rem);
padding-bottom: clamp(2.5rem, 5vw, 4rem);
}
.foot__brand {
display: inline-flex;
align-items: center;
gap: 0.55em;
font-family: var(--font-display);
font-weight: var(--weight-semi);
font-size: 1.2rem;
letter-spacing: var(--tracking-display);
color: var(--color-ink);
}
.foot__tagline {
margin-top: 0.9rem;
font-size: 0.9375rem;
color: var(--color-muted);
max-width: 28ch;
}
.foot__cols {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1.5rem;
}
.foot__heading {
font-family: var(--font-mono);
font-size: var(--step-small);
letter-spacing: var(--tracking-label);
text-transform: uppercase;
color: var(--color-ink);
margin-bottom: 1rem;
}
.foot__col a {
display: block;
font-size: 0.9375rem;
color: var(--color-ink-2);
padding: 0.28rem 0;
width: fit-content;
transition: color var(--t-quiet);
}
.foot__col a:hover { color: var(--color-accent); }
.foot__bottom {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
padding-top: 1.5rem;
border-top: var(--rule) solid var(--color-rule);
font-size: 0.8125rem;
color: var(--color-muted);
}
.foot__set { margin-right: auto; margin-left: 1.5rem; }
.foot__ver {
font-size: 0.8125rem;
color: var(--color-muted);
border: var(--rule) solid var(--color-rule);
border-radius: 4px;
padding: 0.15rem 0.45rem;
background: var(--color-paper-2);
}
/* ───────────────────────────────────────────────────────────
Command palette · ⌘K — cool near-white panel, hairline, one soft shadow
─────────────────────────────────────────────────────────── */
.palette[hidden] { display: none; }
.palette {
position: fixed;
inset: 0;
z-index: 200;
display: grid;
/* sit a little above centre — classic command-palette placement */
grid-template-rows: 12vh auto 1fr;
justify-items: center;
padding-inline: 1rem;
}
.palette__backdrop {
position: absolute;
inset: 0;
background: oklch(22% 0.016 260 / 0.42);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
animation: palette-fade var(--t-quiet);
}
.palette__panel {
grid-row: 2;
position: relative;
width: 100%;
max-width: 520px;
background: var(--color-paper);
border: var(--rule) solid var(--color-rule-2);
border-radius: var(--radius-card);
box-shadow: 0 18px 48px oklch(22% 0.016 260 / 0.18);
overflow: hidden;
animation: palette-rise 220ms var(--ease-out);
}
.palette__label {
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
border: 0;
}
.palette__field {
display: flex;
align-items: center;
gap: 0.6rem;
padding: 0.95rem 1.1rem;
border-bottom: var(--rule) solid var(--color-rule);
}
.palette__prompt {
font-family: var(--font-mono);
font-size: 1rem;
color: var(--color-accent);
line-height: 1;
}
.palette__input {
flex: 1;
font-family: var(--font-mono);
font-size: 0.9375rem;
color: var(--color-ink);
background: none;
border: none;
outline: none;
padding: 0;
/* blinking cobalt caret */
caret-color: var(--color-accent);
}
.palette__input::placeholder { color: var(--color-muted); }
.palette__list {
max-height: 46vh;
overflow-y: auto;
padding: 0.4rem;
}
.palette__row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 0.6rem 0.7rem 0.6rem 0.85rem;
border-radius: var(--radius-btn);
border-left: 2px solid transparent;
cursor: pointer;
transition: background var(--t-quiet), border-color var(--t-quiet), color var(--t-quiet);
}
.palette__row[hidden] { display: none; }
/* selected/hovered row gets a cobalt left-edge + cobalt label */
.palette__row[aria-selected="true"] {
background: var(--color-accent-dim);
border-left-color: var(--color-accent);
}
.palette__row[aria-selected="true"] .palette__row-label { color: var(--color-accent); }
.palette__row-label {
font-size: 0.9375rem;
color: var(--color-ink);
transition: color var(--t-quiet);
}
.palette__row-hint {
font-family: var(--font-mono);
font-size: 0.75rem;
letter-spacing: var(--tracking-label);
color: var(--color-muted);
}
.palette__empty {
padding: 1rem 0.85rem;
font-size: 0.9375rem;
color: var(--color-muted);
}
.palette__foot {
display: flex;
align-items: center;
gap: 0.7rem;
padding: 0.7rem 1.1rem;
border-top: var(--rule) solid var(--color-rule);
font-size: 0.75rem;
color: var(--color-muted);
background: var(--color-paper-2);
}
.palette__foot kbd {
font-family: var(--font-mono);
font-size: 0.7rem;
color: var(--color-ink-2);
background: var(--color-paper-3);
border: var(--rule) solid var(--color-rule);
border-radius: 4px;
padding: 0.08rem 0.32rem;
line-height: 1;
margin-right: 1px;
}
@keyframes palette-fade { from { opacity: 0; } }
@keyframes palette-rise { from { opacity: 0; transform: translateY(8px); } }
/* ───────────────────────────────────────────────────────────
Motion · IntersectionObserver reveals (fade + ~10px rise)
─────────────────────────────────────────────────────────── */
.reveal {
opacity: 0;
transform: translateY(var(--reveal-dist));
transition:
opacity var(--reveal-dur) var(--ease-out),
transform var(--reveal-dur) var(--ease-out);
transition-delay: calc(var(--i, 0) * 70ms);
}
.reveal.is-inview {
opacity: 1;
transform: none;
}
@media (prefers-reduced-motion: reduce) {
.reveal { opacity: 1; transform: none; transition: none; }
.c-cursor, .c-cursor.is-blinking { animation: none; opacity: 1; }
.palette__panel, .palette__backdrop { animation: none; }
.palette__row, .palette__row-label { transition: none; }
}
/* ───────────────────────────────────────────────────────────
Responsive
─────────────────────────────────────────────────────────── */
@media (max-width: 920px) {
.hero {
grid-template-columns: 1fr;
gap: 2.5rem;
padding-top: 3rem;
}
.hero__lede { max-width: 56ch; }
.feature--wide { grid-template-columns: 1fr; }
.quickstart__inner { grid-template-columns: 1fr; gap: 2.25rem; }
.foot__top { grid-template-columns: 1fr; gap: 2.5rem; }
}
@media (max-width: 760px) {
.nav__links { display: none; }
.cmdk__label { display: none; }
.features__grid { grid-template-columns: 1fr; }
.plans { grid-template-columns: 1fr; }
.plan--feature { order: -1; }
.strip { gap: 1.5rem; }
}
@media (max-width: 460px) {
.hero__cta { gap: 1rem; }
.strip__install { width: 100%; }
.strip__cmd { flex: 1; }
}