/* Release QA: optical/touch fixes, not a new design system. */
[hidden] { display: none !important; }
html { scroll-padding-top: 1.5rem; }
:is(h1, h2, h3) { text-wrap: balance; }
.selected-work-layout #selected-work-title { letter-spacing: -0.025em; }
:is(.case-reading, .case-wide, .game-heading, .about-story-copy) p { text-wrap: pretty; }
:is(.case-small, .case-project-meta, .experience-years, .story-uxr-count, .game-proof-number) {
  font-variant-numeric: lining-nums tabular-nums;
}
:is(.case-text-link, .case-back, .work-project-link, .cv-project-cta, .footer-top, .about-text-link) {
  min-height: 44px;
  align-content: center;
}
a:focus-visible, button:focus-visible { outline-offset: 5px; }
/* Preserve correct rounding when hardware video layers are composited. */
video { isolation: isolate; }

.film-load-button {
  display: grid; place-content: center; gap: .8rem; width: 100%; height: 100%;
  min-height: 12rem; padding: 1.5rem; border: 0; border-radius: inherit;
  color: var(--portfolio-ink); background: #f1eef7; font: 600 1rem/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
  cursor: pointer; transition: background 180ms ease;
}
.film-load-button:hover { background: #e8e2f2; }
.film-load-button svg { width: 2.5rem; height: 2.5rem; margin-inline: auto; }
.film-load-button small { font-size: .75rem; font-weight: 400; color: #5e5969; }
.resume-pending { min-height: calc(100svh - 8rem); max-width: 55rem; margin: auto; padding: calc(var(--header-height) + 5rem) var(--page-padding) 6rem; }
.resume-pending h1 { margin: 0 0 1.5rem; font-size: clamp(3rem, 6vw, 5rem); line-height: 1.05; letter-spacing: -.055em; }
.resume-pending p { max-width: 30rem; color: var(--portfolio-body); font-size: 1.15rem; line-height: 1.6; }
.resume-pending .case-text-link { display: inline-flex; gap: .8rem; margin-top: 1rem; border-bottom: 2px solid var(--portfolio-purple); font-weight: 600; }
@media (max-width: 700px) {
  :is(.case-back, .case-text-link, .game-motion-toggle) { font-size: max(14px, .875rem); }
  .resume-pending { padding-top: calc(var(--header-height) + 3rem); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .film-load-button { transition: none; }
}

/* Shared display tracking: loosen the existing bold editorial headings only.
   Keep sizes, weights, body copy, media labels, metrics and handwriting intact.
   Match component specificity so lighter small-heading treatments still win. */
:root { --display-letter-spacing: -0.025em; }
.hero-copy h1,
.selected-work-layout .selected-work-intro h2,
.selected-work-layout .work-project-copy h3,
.career-opening h2,
.cv-project-heading h3,
.cv-motion-opening h3,
.personal-heading,
.experience-header h2,
.experience-stop h3,
.contact-heading,
.recommendations-header h2,
.about-page h1,
.about-page h2,
.personal-item h3,
.favourite-game .favourite-game-title,
.resume-pending h1,
.fns-case-study :is(h1,h2,h3,h4):where(:not(.contact-heading)),
.fns-case-study h1,
.fns-outcome-story .story-act h2,
.fns-outcome-story .story-special-cuts h3,
.fns-outcome-story .story-size-cut h3,
.fns-outcome-story .story-trust-decision h3,
.fns-case-study .case-gap-map h3,
.search-case-study .search-ownership h2,
.search-case-study .search-intent h3,
.mutton-case-study #experiment-summary h2,
.mutton-case-study .mutton-ritual-chapter h3,
.mutton-case-study .mutton-builder-layer h3,
.mutton-case-study .mutton-experience-heading h2,
.mutton-case-study .mutton-decision h3,
.sensei-case-study .sensei-activity h3,
.sensei-case-study .sensei-survey-item h3,
.sensei-case-study .sensei-research-findings h3,
.sensei-case-study .sensei-principle-layout h3,
.sensei-case-study .sensei-assist-options h3,
.sensei-case-study .sensei-screen-gallery h3,
.sensei-next strong {
  letter-spacing: var(--display-letter-spacing);
}
