/* Behaviour helpers. Supply each project's layout, colours and typography separately. */
[hidden] { display: none !important; }
[data-sticky-cta] { position: fixed; inset: auto 0 0; z-index: 30; padding: 12px max(16px, env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); }
[data-sticky-cta] > * { max-width: 560px; margin-inline: auto; }
body[data-sticky-space] { padding-bottom: var(--sticky-space, 96px); }
[data-motion-toggle] { min-height: 44px; }
[data-reveal] { scroll-margin-top: 24px; }
dialog[data-exit-dialog] { width: min(90vw, 480px); max-height: 85dvh; overflow: auto; border: 0; border-radius: 20px; padding: clamp(24px, 5vw, 40px); margin: auto; color: var(--lp-ink, #172923); background: var(--lp-paper, #fffdf7); }
dialog[data-exit-dialog]::backdrop { background: rgb(0 0 0 / .55); }
body:has(dialog[data-exit-dialog][open]) { overflow: hidden; }
[data-motion-still="true"] *, [data-motion-still="true"] *::before, [data-motion-still="true"] *::after { animation-play-state: paused !important; scroll-behavior: auto !important; }
[data-motion-paused="true"] *, [data-motion-paused="true"] *::before, [data-motion-paused="true"] *::after { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
  [data-character-motion] { animation: none !important; transform: none !important; }
}
@media (min-width: 900px) { [data-sticky-cta]:not([data-desktop="true"]) { display: none !important; } }
