/* Hallmark · shape: Photographic (posters as the photographs) · genre: atmospheric · theme: Midnight (deal 2/3, seed dutch-christmas-films-where-621c·0afb6fff·2026-10-30·r0) · job: try · draw: dd88de
 * hero: Stage · nav: site header (kept) · footer: site footer (kept) · imagery: the product (film posters from the library) · signature: ten classics as a poster rail, years and directors set like title cards
 * axes: dark/grotesk-sans/cool · posture: committed · contrast: pass · fold: pass · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H4 E4 S4 R5 V4 · weakest: S, a Christmas list could belong to any film site; made it ours by tying every title to the 24-hour trial and the 80.000+ library */
/* Hallmark · scope: one page inside an existing site; tokens live on [data-theme="midnight"] (the page's <main>), the site header and footer keep their own system by owner decision */
/* Hallmark · answered F6 · the 80.000+ figure stands alone, nothing compares, and the tabular cut of Mona Sans slashes its zeros */
/* Hallmark · dismissed F23 · the linted copy is the page body only; the live page carries the meta description from $blogDescription */

@font-face {
  font-family: "Mona Sans";
  src: url("/fonts/mona-sans-latin.woff2") format("woff2");
  font-weight: 300 500;
  font-stretch: 100% 125%;
  font-display: swap;
}

[data-theme="midnight"] {
  color-scheme: dark;
  --space-3xs: 2px; --space-2xs: 4px; --space-xs: 8px; --space-sm: 12px; --space-md: 16px; --space-lg: 24px; --space-xl: 40px; --space-2xl: 64px; --space-3xl: 96px; --space-4xl: 144px;
  --text-xs: 0.8125rem; --text-sm: 0.875rem; --text-md: 1rem; --text-lg: 1.25rem; --text-xl: 1.5625rem;
  --text-display-s: clamp(2.25rem, 4vw + 0.5rem, 3.75rem); --text-display: clamp(2.5rem, 4.4vw + 0.75rem, 4.75rem);
  --text-section: clamp(2rem, 2.5vw + 1rem, 3.5rem); --text-title: clamp(1.125rem, 0.5vw + 0.875rem, 1.375rem); --text-lead: clamp(1.125rem, 0.35vw + 1rem, 1.375rem);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-micro: 120ms; --dur-short: 220ms; --dur-long: 420ms;
  --container: 1440px; --gutter: 64px; --gap-columns: 32px; --section-gap-s: 120px; --section-gap: 144px; --section-gap-l: 176px;
  --color-paper: oklch(14% 0.048 264); --color-paper-2: oklch(18.5% 0.052 264); --color-paper-3: oklch(23% 0.055 264);
  --color-ink: oklch(95% 0.016 250); --color-ink-2: oklch(88% 0.05 245); --color-muted: oklch(73% 0.04 256);
  --color-rule: oklch(29% 0.058 264); --color-rule-2: oklch(40% 0.06 262);
  --color-accent: oklch(80% 0.11 230); --color-accent-ink: oklch(16% 0.05 264); --color-focus: oklch(84% 0.12 228);
  --font-display: "Mona Sans", ui-sans-serif, system-ui, sans-serif; --font-body: var(--font-display);
  --rule-hair: 1px;
  --shadow-card: 0 24px 48px -24px oklch(6% 0.04 264 / 0.7);
  --tracking-display: -0.015em; --display-weight: 300; --display-stretch: 125%;
  --poster-outline: oklch(95% 0.016 250 / 0.08);
}

.hm {
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: var(--text-md);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

html, body { overflow-x: clip; }
body:has(.hm) { background: var(--color-paper); }

.hm *, .hm *::before, .hm *::after { box-sizing: border-box; }
.hm ::selection { background: color-mix(in oklab, var(--color-accent) 22%, transparent); color: var(--color-ink); }
.hm :focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; transition: none; }
.hm a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.16em; transition: text-decoration-color var(--dur-short) var(--ease-out); }
.hm a:hover { text-decoration-color: var(--color-accent); }
.hm h1, .hm h2, .hm h3 { margin: 0; font-family: var(--font-display); font-synthesis: none; overflow-wrap: break-word; min-width: 0; text-wrap: balance; }
.hm h1, .hm h2 { font-weight: var(--display-weight); font-stretch: var(--display-stretch); letter-spacing: var(--tracking-display); line-height: 1.04; }
.hm h1 { max-width: 14ch; font-size: var(--text-display-s); }
.hm h2 { max-width: 22ch; font-size: var(--text-section); }
.hm h3 { font-size: var(--text-title); font-weight: 500; line-height: 1.25; }
.hm p { margin: 0; text-wrap: pretty; }
.hm img { max-width: 100%; height: auto; display: block; }
.hm .lead { font-size: var(--text-lead); line-height: 1.45; max-width: 44ch; color: var(--color-ink-2); }
.hm .meta { font-size: var(--text-sm); font-weight: 500; color: var(--color-muted); }
.hm .container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }

/* posters are the product: own colours, square, a hairline inset */
.hm .poster { position: relative; aspect-ratio: 2 / 3; background: var(--color-paper-3); }
.hm .poster img { width: 100%; height: 100%; object-fit: cover; }
.hm .poster::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px var(--poster-outline); pointer-events: none; }

/* controls: the square azure pair */
.hm .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: var(--space-sm) var(--space-lg); border: var(--rule-hair) solid transparent; font-weight: 500; text-decoration: none; color: var(--color-ink); transition: background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out); }
.hm .btn--primary { background: var(--color-accent); color: var(--color-accent-ink); }
.hm .btn--primary:hover { background: var(--color-ink-2); }
.hm .btn--secondary { border-color: var(--color-rule-2); }
.hm .btn--secondary:hover { background: var(--color-paper-2); }
.hm .btn:active { transform: translateY(1px); }
.hm .actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); }

/* 1 · hero, Stage */
.hm-hero { padding-block: var(--space-xl) var(--space-2xl); }
.hm-hero .container { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-3xl); align-items: center; min-height: min(calc(100svh - 140px), 720px); }
.hm-hero-text { display: grid; gap: var(--space-lg); }
.hm-hero-text .actions { margin-top: var(--space-xs); }
.hm-hero .settle { animation: hm-settle var(--dur-long) var(--ease-out) both; }
@keyframes hm-settle { from { opacity: 0.6; } }
.hm-stage { width: 100%; max-width: 36rem; justify-self: center; margin: 0; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--space-md); align-items: start; padding: var(--space-lg); background: var(--color-paper-2); }
.hm-stage .poster:nth-child(2) { grid-column: 1; grid-row: 1 / 3; }
.hm-stage .poster:nth-child(1) { grid-column: 2; grid-row: 1; }
.hm-stage .poster:nth-child(3) { grid-column: 2; grid-row: 2; }
.hm-stage-cap { grid-column: 1 / -1; }

/* 2 · the classics, a rail */
.hm-classics { padding-block: var(--section-gap-s) var(--section-gap); }
.hm-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-xl) var(--gap-columns); align-items: end; margin-bottom: var(--space-2xl); }
.hm-rail { list-style: none; margin: 0; padding: 0 0 var(--space-md); display: grid; grid-auto-flow: column; grid-auto-columns: 15rem; gap: var(--gap-columns); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-color: var(--color-rule-2) transparent; }
.hm-rail li { scroll-snap-align: start; display: grid; gap: var(--space-xs); align-content: start; }
.hm-rail .poster { margin-bottom: var(--space-xs); }
.hm-rail .yr { font-weight: var(--display-weight); font-stretch: var(--display-stretch); font-size: var(--text-xl); line-height: 1; font-variant-numeric: tabular-nums; color: var(--color-ink-2); }
.hm-rail p:last-child { color: var(--color-muted); font-size: var(--text-sm); }

/* 3 · by evening, rows */
.hm-evening { padding-block: var(--section-gap-s); }
.hm-evening .container { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--gap-columns); align-items: start; }
.hm-rows { list-style: none; margin: 0; padding: 0; }
.hm-rows li { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--gap-columns); align-items: baseline; padding-block: var(--space-xl); border-top: var(--rule-hair) solid var(--color-rule); }
.hm-rows li:last-child { border-bottom: var(--rule-hair) solid var(--color-rule); }
.hm-rows h3 { font-weight: var(--display-weight); font-stretch: var(--display-stretch); font-size: var(--text-xl); }
.hm-rows p { color: var(--color-ink-2); font-size: var(--text-lead); line-height: 1.45; }

/* 4 · the figure, a band */
.hm-figure { background: var(--color-paper-2); padding-block: var(--section-gap-s); }
.hm-figure .container { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--gap-columns); align-items: center; }
.hm-figure .hm-fig { font-weight: var(--display-weight); font-stretch: var(--display-stretch); font-size: clamp(4.5rem, 11vw, 10.5rem); line-height: 0.9; letter-spacing: -0.03em; color: var(--color-ink); }
.hm-figure .hm-fig span { font-size: 0.32em; font-stretch: 100%; font-weight: 400; letter-spacing: 0; color: var(--color-ink-2); }
.hm-figure p { font-size: var(--text-lead); line-height: 1.45; color: var(--color-ink-2); max-width: 34ch; }

/* 5 · the trial, steps */
.hm-steps { padding-block: var(--section-gap); }
.hm-steps ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gap-columns); counter-reset: hm-step; }
.hm-steps li { counter-increment: hm-step; display: grid; gap: var(--space-sm); padding-top: var(--space-lg); border-top: 2px solid var(--color-rule-2); }
.hm-steps li:first-child { border-top-color: var(--color-accent); }
.hm-steps li::before { content: counter(hm-step); font-weight: var(--display-weight); font-stretch: var(--display-stretch); font-size: var(--text-display-s); line-height: 1; font-variant-numeric: tabular-nums; color: var(--color-muted); }
.hm-steps li:first-child::before { color: var(--color-ink); }
.hm-steps h3 { font-weight: var(--display-weight); font-stretch: var(--display-stretch); font-size: var(--text-xl); }
.hm-steps p { color: var(--color-muted); font-size: var(--text-md); max-width: 34ch; }

/* 6 · questions, rows */
.hm-faq { padding-block: var(--section-gap-s) var(--section-gap); }
.hm-faq .container { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--gap-columns); align-items: start; }
.hm-faq details { border-top: var(--rule-hair) solid var(--color-rule); }
.hm-faq details:last-child { border-bottom: var(--rule-hair) solid var(--color-rule); }
.hm-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: var(--space-lg); padding-block: var(--space-lg); font-size: var(--text-title); font-weight: 500; line-height: 1.3; }
.hm-faq summary::-webkit-details-marker { display: none; }
.hm-faq summary::after { content: "+"; font-weight: 300; color: var(--color-muted); }
.hm-faq details[open] summary::after { content: "\2212"; }
.hm-faq details p { padding-bottom: var(--space-lg); color: var(--color-ink-2); max-width: 60ch; }

/* 7 · the close: the action beside one last screen */
.hm-close { background: var(--color-paper-3); padding-block: var(--section-gap-s); }
.hm-close .container { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: var(--space-3xl); align-items: center; }
.hm-close-text { display: grid; gap: var(--space-lg); }
.hm-close-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-md); }
.hm-close-pair .poster { box-shadow: var(--shadow-card); }
.hm-close-pair .poster:last-child { margin-top: var(--space-2xl); }

@media (max-width: 60rem) {
  .hm { --gutter: 24px; --section-gap-s: 80px; --section-gap: 96px; }
  .hm-hero .container, .hm-head, .hm-evening .container, .hm-figure .container, .hm-faq .container, .hm-close .container { grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); min-height: 0; }
  .hm-hero { padding-block: var(--space-xl) var(--space-2xl); }
  .hm-stage { padding: var(--space-lg); }
  .hm-steps ol { grid-template-columns: minmax(0, 1fr); }
  .hm-rows li { grid-template-columns: minmax(0, 1fr); gap: var(--space-xs); padding-block: var(--space-lg); }
}
@media (max-width: 40rem) {
  .hm { --gutter: 16px; --section-gap-s: 56px; --section-gap: 72px; --gap-columns: 16px; }
  .hm-stage { padding: var(--space-md); gap: var(--space-xs); }
  .hm-rail { grid-auto-columns: 10rem; }
  .hm .actions .btn { flex: 1 1 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .hm-hero .settle { animation: none; }
  .hm .btn, .hm a { transition: none; }
  .hm .btn:active { transform: none; }
}
