/* Shared foundation for all three concepts. Each concept sets its own look on top. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 6rem; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body { margin: 0; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, dl, dd { margin: 0; }
ul, ol { padding: 0; list-style: none; }

.skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 100; padding: .75rem 1rem; background: #fff; color: #000; }
.skip-link:focus { top: 1rem; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Masked line reveal: <span class="line"><span>Text</span></span>, delay via --i */
.line { display: block; overflow: hidden; padding-bottom: .08em; }
.line > span { display: block; }

/* Hidden only when JS runs and motion is allowed, so content never depends on scripts */
@media (prefers-reduced-motion: no-preference) {
  .js [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--i, 0) * 90ms); }
  .js [data-reveal].is-in { opacity: 1; transform: none; }
  .js [data-reveal="line"] { opacity: 1; transform: none; }
  .js [data-reveal="line"] .line > span { transform: translateY(105%); transition: transform 1.1s cubic-bezier(.2,.75,.15,1); transition-delay: calc(var(--i, 0) * 110ms + 100ms); }
  .js [data-reveal="line"].is-in .line > span { transform: none; }
  .js [data-reveal="mask"] { opacity: 1; transform: none; clip-path: inset(100% 0 0 0); transition: clip-path 1.3s cubic-bezier(.7,0,.2,1); }
  .js [data-reveal="mask"].is-in { clip-path: inset(0 0 0 0); }

  /* Cross-document page transitions (native View Transitions, no library) */
  @view-transition { navigation: auto; }
}

/* Review label added by site.js; remove for the live build */
.concept-flag { position: fixed; z-index: 70; right: calc(12px + env(safe-area-inset-right, 0px)); bottom: calc(12px + env(safe-area-inset-bottom, 0px)); max-width: calc(100% - 24px); margin: 0; padding: .45rem .8rem; background: rgba(23, 20, 17, .9); color: #efe8da; font: 500 12px/1.4 system-ui, sans-serif; border: 1px solid rgba(212, 163, 82, .45); }
.concept-flag a { color: #e8cb94; }

/* Prototype form status */
.form-status:empty { display: none; }
