/* ==========================================================================
   MOVE LAB  |  movelabla.com
   Built by hand and with love by Cloud Nine Labs  (cloudninelabs.com)

   Table of contents
   1. Tokens (colors, type, spacing)
   2. Fonts (self-hosted)
   3. Reset and base
   4. Typography
   5. Buttons
   6. Sticky bar and slide-in menu
   7. Hero
   8. Sections, split layouts, glow
   9. Tiles (What We Do)
   10. Infrastructure card and team (Who We Are)
   11. Contact
   12. Testimonials slider
   13. Footer
   14. Legal pages, 404
   15. Motion and accessibility
   ========================================================================== */

/* 1. Tokens ------------------------------------------------------------- */
:root{
  --bg:#111111;            /* page ground */
  --bg-2:#161616;          /* alternate section ground */
  --surface:#1c1c1c;       /* cards */
  --surface-2:#222222;
  --black:#000000;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(255,255,255,.18);
  --text:#e7e7e7;          /* body copy (brand: E7E7E7) */
  --text-strong:#ffffff;
  --muted:#a8a8a8;         /* brand: A8A8A8 */
  --accent:#ff0000;        /* brand red */
  --accent-deep:#c40000;   /* hover / pressed */
  --accent-glow:rgba(255,0,0,.22);

  --font-head:"Poppins",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-body:"Open Sans",system-ui,-apple-system,"Segoe UI",sans-serif;

  --measure:66ch;
  --container:1200px;
  --gutter:clamp(20px,5vw,48px);
  --section:clamp(72px,9vw,128px);
  --section-tight:clamp(48px,6vw,80px);
  --bar-h:68px;       /* sticky (scrolled) bar height */
  --bar-top-h:84px;   /* top-of-page bar height, holds the 130px-wide logo; shrinks to --bar-h on scroll */
  --radius:4px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
@media (max-width:820px){ :root{ --bar-h:64px; --bar-top-h:64px; } }

/* 2. Fonts -------------------------------------------------------------- */
@font-face{font-family:"Poppins";font-style:normal;font-weight:300;font-display:swap;src:url(/assets/fonts/poppins-300.woff2) format("woff2");}
@font-face{font-family:"Poppins";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400.woff2) format("woff2");}
@font-face{font-family:"Poppins";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/poppins-500.woff2) format("woff2");}
@font-face{font-family:"Poppins";font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600.woff2) format("woff2");}
@font-face{font-family:"Poppins";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/poppins-700.woff2) format("woff2");}
@font-face{font-family:"Open Sans";font-style:normal;font-weight:300 800;font-display:swap;src:url(/assets/fonts/opensans-var.woff2) format("woff2");}
@font-face{font-family:"Open Sans";font-style:italic;font-weight:300 800;font-display:swap;src:url(/assets/fonts/opensans-var-italic.woff2) format("woff2");}

/* 3. Reset and base ----------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--bar-h) + 16px);}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.7;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;}
img,video,svg{display:block;max-width:100%;}
img{height:auto;}
a{color:var(--text-strong);text-decoration:none;transition:color .2s ease;}
a:hover{color:var(--accent);}
ul,ol{margin:0;padding:0;}
p{margin:0 0 1.15em;}
p:last-child{margin-bottom:0;}
strong,.strong{font-weight:700;color:var(--text-strong);}
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter);}
.skip{position:absolute;left:-999px;top:8px;z-index:200;background:var(--accent);color:#fff;padding:10px 16px;font-weight:600;}
.skip:focus{left:8px;}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
[hidden]{display:none!important;}

/* 4. Typography --------------------------------------------------------- */
h1,h2,h3,h4,.h1,.h2,.h3,.h4{font-family:var(--font-head);font-weight:600;color:var(--text-strong);line-height:1.15;margin:0 0 .5em;letter-spacing:-.005em;text-wrap:balance;}
.h1,h1{font-size:clamp(34px,4.6vw,56px);}
.h2,h2{font-size:clamp(28px,3.2vw,40px);}
.h3,h3{font-size:clamp(21px,2.2vw,26px);}
.h4,h4{font-size:17px;line-height:1.3;}
.eyebrow{display:flex;align-items:center;gap:14px;margin:0 0 14px;font-family:var(--font-body);font-weight:600;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);}
.eyebrow::after{content:"";display:block;width:44px;height:2px;background:var(--accent);flex:0 0 auto;}
.subhead{font-family:var(--font-head);font-weight:400;font-size:clamp(20px,2.2vw,26px);line-height:1.3;color:var(--muted);margin:-.2em 0 1.1em;}
.lead{font-size:clamp(17px,1.4vw,19px);line-height:1.65;max-width:var(--measure);}
.caps-label{margin:1.2em 0 .4em;}
.caps{list-style:none;}
.caps li{position:relative;padding-left:18px;margin:0 0 .35em;}
.caps li::before{content:"";position:absolute;left:0;top:.72em;width:7px;height:7px;background:var(--accent);transform:rotate(45deg);}

/* 5. Buttons ------------------------------------------------------------ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 26px;border:1.5px solid transparent;border-radius:var(--radius);font-family:var(--font-body);font-weight:600;font-size:14px;letter-spacing:.1em;text-transform:uppercase;line-height:1;white-space:nowrap;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .15s ease;}
.btn:active{transform:translateY(1px);}
.btn-ghost{border-color:var(--accent);color:var(--text-strong);background:rgba(0,0,0,.25);}
.btn-ghost:hover{background:var(--accent);color:#fff;}
.btn-solid{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn-solid:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;}
.btn-sm{min-height:38px;padding:0 16px;font-size:12px;}
.btn-lg{min-height:52px;padding:0 32px;font-size:15px;}
.btn-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px;}

/* 6. Sticky bar and slide-in menu --------------------------------------- */
/* Padding tracks the .container grid so the logo shares the hero text's left edge at every width. */
.stickybar{position:fixed;top:0;left:0;right:0;z-index:60;height:var(--bar-top-h);display:flex;align-items:center;gap:clamp(16px,3vw,40px);padding-inline:max(var(--gutter),calc((100% - var(--container)) / 2 + var(--gutter)));background:linear-gradient(to bottom,rgba(0,0,0,.55),rgba(0,0,0,0));border-bottom:0;transition:background .3s ease,height .3s var(--ease);}
/* Option 5B: solid black with the red hairline once the page scrolls. */
.scrolled .stickybar{height:var(--bar-h);background:#000;border-bottom:2px solid var(--accent);}
.sb-logo{flex:0 0 auto;display:block;}
/* Logo: 130px wide at the top of the page, 110px in the sticky bar, 105px on phones (client spec 2026-09-12). Width-based so the 2:1 mark keeps its proportions. */
.sb-logo img{width:130px;height:auto;transition:width .3s var(--ease);}
.scrolled .sb-logo img{width:110px;}
.sb-nav{display:flex;align-items:center;gap:clamp(18px,2.6vw,34px);flex:1 1 auto;min-width:0;overflow:hidden;transition:opacity .25s ease;}
.sb-link{position:relative;font-family:var(--font-head);font-weight:500;font-size:15px;color:var(--text);padding:6px 0;white-space:nowrap;}
.sb-link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease);}
.sb-link:hover::after,.sb-link[aria-current="page"]::after{transform:scaleX(1);}
.sb-link[aria-current="page"]{color:var(--text-strong);}
.sb-ctas{margin-left:auto;display:flex;align-items:center;gap:10px;flex:0 0 auto;}
.sb-menu{display:flex;align-items:center;gap:10px;background:none;border:none;color:#fff;font-family:var(--font-body);font-weight:600;font-size:12px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;padding:8px 0 8px 6px;max-width:0;opacity:0;overflow:hidden;pointer-events:none;transition:max-width .35s var(--ease),opacity .25s ease;}
.burger{display:inline-flex;flex-direction:column;gap:4px;}
.burger i{display:block;width:22px;height:2px;background:currentColor;border-radius:1px;transition:transform .25s ease;}
.sb-menu:hover{color:var(--accent);}
.sb-menu:hover .burger i:nth-child(1){transform:translateY(-1px);}
.sb-menu:hover .burger i:nth-child(3){transform:translateY(1px);}
/* Compact: below the hero the primary links fold away and the Menu button appears. CTAs stay. */
.compact .sb-nav{opacity:0;pointer-events:none;}
.compact .sb-menu{max-width:120px;opacity:1;pointer-events:auto;}
@media (max-width:820px){
  .sb-nav{display:none;}
  .sb-menu{max-width:120px;opacity:1;pointer-events:auto;}
  .sb-logo img,.scrolled .sb-logo img{width:105px;}
}
@media (max-width:520px){
  .sb-contact{display:none;}
  .sb-menu-label{display:none;}
}

.menu-overlay{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.6);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s;}
.menu-overlay.open{opacity:1;visibility:visible;}
.menu-panel{position:fixed;top:0;right:0;bottom:0;z-index:80;width:min(360px,88vw);background:#0b0b0b;border-left:1px solid var(--line);box-shadow:-12px 0 40px rgba(0,0,0,.5);transform:translateX(100%);visibility:hidden;display:flex;flex-direction:column;transition:transform .4s var(--ease),visibility 0s linear .4s;overflow-y:auto;}
.menu-panel.open{transform:translateX(0);visibility:visible;transition:transform .4s var(--ease),visibility 0s;}
.menu-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 14px 26px;border-bottom:1px solid var(--line);}
.menu-brand img{height:44px;width:auto;}
.menu-close{width:44px;height:44px;border:none;background:none;color:#fff;font-size:30px;line-height:1;cursor:pointer;border-radius:50%;transition:color .2s,background .2s,transform .3s;}
.menu-close:hover{color:var(--accent);background:rgba(255,255,255,.08);transform:rotate(90deg);}
.menu-nav{display:flex;flex-direction:column;padding:10px 0;}
.m-item{font-family:var(--font-head);font-weight:500;font-size:22px;color:#fff;padding:14px 26px;border-bottom:1px solid rgba(255,255,255,.06);transition:background .18s,color .18s,padding-left .2s;}
.m-item:hover,.m-item[aria-current="page"]{color:var(--accent);padding-left:32px;}
.m-item--accent{color:var(--accent);}
.m-item--accent:hover{background:var(--accent);color:#fff;}
.menu-foot{margin-top:auto;padding:22px 26px 30px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px;font-size:15px;}
.menu-foot a{color:var(--text);}
.menu-sis{width:min(100%,230px);height:auto;margin-top:20px;}
body.menu-open{overflow:hidden;}

/* 7. Hero --------------------------------------------------------------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;background:var(--black);padding-top:var(--bar-top-h);isolation:isolate;}
.hero--short{min-height:min(72svh,640px);}
.hero-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;filter:saturate(.9);}
.hero--image::before{content:"";position:absolute;inset:0;z-index:0;background:var(--hero-img) center/cover no-repeat;}
/* Directional shade: copy sits on the darkened left, the right half of the footage stays clear. */
.hero-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(0,0,0,.72) 0%,rgba(0,0,0,.45) 35%,rgba(0,0,0,0) 58%,rgba(0,0,0,0) 100%),linear-gradient(180deg,rgba(0,0,0,.25) 0%,rgba(0,0,0,0) 18%,rgba(0,0,0,0) 78%,rgba(17,17,17,.85) 100%);}
.hero--image .hero-shade{background:linear-gradient(to bottom,rgba(0,0,0,.55),rgba(0,0,0,.55)),linear-gradient(to bottom,rgba(17,17,17,0) 70%,rgba(17,17,17,1) 100%);}
.hero-inner{position:relative;z-index:2;padding-block:clamp(72px,10vh,120px);}
.hero-inner--center{text-align:center;display:flex;flex-direction:column;align-items:center;}
.hero-title{font-size:clamp(34px,5.2vw,64px);line-height:1.08;margin-bottom:.45em;max-width:22ch;text-wrap:balance;}
.hero-title + .btn{margin-top:14px;}
.hero-title--sentence{max-width:16ch;}
.hero-title--mid{font-size:clamp(28px,3.6vw,46px);max-width:22ch;margin:0;}
/* Phones only: fluid h1 (~30px on a 390px iPhone, ~33px on a Pro Max) so both three-line heroes stay three lines. Tablets keep the rule above. */
@media (max-width:600px){ .hero-title{font-size:clamp(28px,7.6vw,34px);} }
.hero .lead{margin-bottom:34px;max-width:780px;color:var(--text);}
.hero .eyebrow{margin-bottom:22px;}

/* 8. Sections, split layouts, glow -------------------------------------- */
.section{padding-block:var(--section);position:relative;}
.section--tight{padding-block:var(--section-tight);}
.section--glow{background:radial-gradient(ellipse 60% 50% at 0% 0%,rgba(120,0,0,.55) 0%,rgba(17,17,17,0) 65%),var(--bg);}
.section + .section{padding-top:0;}
/* Testimonials carries its own backdrop image, so it keeps equal padding top and bottom even when it follows another section. */
.section + .tst{padding-top:var(--section);}
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(36px,6vw,88px);align-items:center;}
.split--top{align-items:start;}
.split-text p{max-width:var(--measure);}
.split-text .btn{margin-top:14px;}
.split-media{margin:0;}
.split-media img{width:100%;border-radius:var(--radius);box-shadow:0 30px 60px -30px rgba(0,0,0,.9);}
@media (max-width:900px){
  .split{grid-template-columns:1fr;gap:40px;}
  .split-media{max-width:560px;}
}

/* 9. Tiles (What We Do) ------------------------------------------------- */
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,4vw,56px) clamp(28px,5vw,72px);margin-top:clamp(28px,4vw,48px);}
.tile p{max-width:var(--measure);}
.tile-hdr{display:block;background:var(--black);border-left:5px solid var(--accent);padding:18px 24px;margin:0 0 22px;font-size:clamp(20px,1.8vw,23px);line-height:1.2;text-wrap:balance;}
.tile-hdr small{display:block;font-family:var(--font-body);font-weight:600;font-size:11px;letter-spacing:.22em;color:var(--accent);margin-bottom:6px;}
@media (max-width:820px){ .tiles{grid-template-columns:1fr;} }

/* 10. Infrastructure card and team (Who We Are) ------------------------- */
.infra{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:var(--radius);padding:clamp(24px,3vw,40px);box-shadow:0 30px 60px -30px rgba(0,0,0,.9);}
.infra .h3{margin-bottom:18px;}
.infra-list{list-style:none;display:grid;gap:10px;}
.infra-list li{position:relative;padding-left:20px;font-family:var(--font-head);font-weight:500;font-size:15.5px;line-height:1.4;color:var(--text-strong);}
.infra-list li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--accent);transform:rotate(45deg);}
/* Team: one profile at a time. The portrait stays pinned while the bio scrolls (sticky column). */
.team{display:flex;flex-direction:column;gap:clamp(64px,9vw,128px);margin-top:clamp(28px,4vw,48px);}
.member{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start;}
.member-media{position:sticky;top:calc(var(--bar-h) + 24px);}
.member-photo{width:100%;aspect-ratio:1000/1313;object-fit:cover;object-position:top;border-radius:var(--radius);box-shadow:0 40px 80px -30px rgba(0,0,0,.9);max-height:calc(100vh - var(--bar-h) - 48px);}
.member-text{padding-top:6px;}
.member-name{font-size:clamp(26px,2.8vw,36px);margin-bottom:.35em;}
.member-role{margin:0;font-size:15.5px;color:var(--muted);line-height:1.5;}
.member-role:first-of-type{color:var(--text);font-weight:600;}
.member-bio{margin-top:24px;border-top:1px solid var(--line);padding-top:24px;}
.member-bio p{max-width:var(--measure);font-size:16.5px;}
@media (max-width:900px){
  .member{grid-template-columns:1fr;gap:26px;}
  .member-media{position:static;}
  .member-photo{aspect-ratio:4/5;max-height:none;}
}

/* 11. Contact ----------------------------------------------------------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(36px,6vw,88px);align-items:start;}
.contact-hours{font-size:17px;}
.contact-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:28px 32px;padding-top:6px;}
.contact-list li{display:flex;gap:16px;align-items:flex-start;}
.contact-list .h4{margin:0 0 4px;}
.contact-list a{font-size:16px;color:var(--text);}
.contact-list a:hover{color:var(--accent);}
.ci{flex:0 0 auto;width:34px;height:34px;fill:var(--accent);}
@media (max-width:820px){ .contact-grid{grid-template-columns:1fr;gap:36px;} }

/* 12. Testimonials slider ----------------------------------------------- */
/* Testimonials sit on the lab photo. background-attachment:fixed gives the parallax "window" on desktop;
   iOS ignores fixed attachment, so phones get a normal cover image. */
.tst{position:relative;isolation:isolate;background:var(--bg) url(/assets/img/lab-backdrop.webp) center 35%/cover no-repeat;background-attachment:fixed;}
/* Overlay heavier behind the centered quote, lighter at the edges so the athlete and the SCIENCE IS STRONGER tee read through (same logic as the hero shade). */
.tst::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(17,17,17,.42) 0%,rgba(17,17,17,.82) 28%,rgba(17,17,17,.86) 50%,rgba(17,17,17,.82) 72%,rgba(17,17,17,.42) 100%),linear-gradient(180deg,rgba(17,17,17,.55) 0%,rgba(17,17,17,0) 30%,rgba(17,17,17,0) 70%,rgba(17,17,17,.7) 100%);}
@media (max-width:900px),(hover:none){ .tst{background-attachment:scroll;} }
/* Option 2C: one large centered quote per view, manual advance only. No stars; the quote and the red name line carry it. */
.tst-slider{position:relative;margin-top:clamp(24px,3vw,40px);text-align:center;}
.tst-quote{width:clamp(36px,4vw,52px);fill:var(--accent);margin:0 auto 26px;}
.tst-track{list-style:none;display:flex;align-items:flex-start;gap:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;transition:height .35s var(--ease);}
.tst-track::-webkit-scrollbar{display:none;}
.tst-card{flex:0 0 100%;scroll-snap-align:start;max-width:100%;padding-inline:clamp(0px,4vw,48px);}
.tst-card blockquote{margin:0 auto 26px;max-width:880px;}
.tst-card blockquote p{font-family:var(--font-head);font-weight:400;font-style:normal;font-size:clamp(19px,2.2vw,27px);line-height:1.5;color:var(--text-strong);text-wrap:balance;}
.tst-card blockquote p::before{content:"\201C";}
.tst-card blockquote p::after{content:"\201D";}
.tst-who{display:flex;flex-direction:column;gap:4px;margin:0;align-items:center;}
.tst-name{font-family:var(--font-head);font-weight:600;font-size:17px;color:var(--accent);}
.tst-role{font-size:15px;color:var(--muted);line-height:1.5;}
.tst-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:34px;}
.tst-btn{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--accent);background:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s;}
.tst-btn:hover{background:var(--accent);}
.tst-btn svg{width:20px;height:20px;}
.tst-count{font-family:var(--font-head);font-size:14px;color:var(--muted);min-width:56px;text-align:center;letter-spacing:.05em;}

/* 13. Footer ------------------------------------------------------------ */
.footer{background:var(--black);border-top:1px solid var(--line);padding-block:clamp(48px,6vw,80px) clamp(32px,4vw,48px);}
.footer-inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:22px;}
.social{list-style:none;display:flex;gap:14px;}
.social a{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;border:1.5px solid var(--accent);color:#fff;transition:background .2s,color .2s;}
.social a:hover{background:var(--accent);color:#fff;}
.social svg{width:20px;height:20px;fill:currentColor;}
.footer-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 30px;}
.footer-nav a{font-family:var(--font-head);font-weight:400;font-size:14px;color:var(--text);}
.footer-nav a:hover,.footer-nav a[aria-current="page"]{color:var(--accent);}
.copyright{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--text);margin:6px 0 0;}
.footer-brand{display:flex;flex-direction:column;align-items:center;gap:22px;margin-top:10px;}
.footer-sis{width:min(100%,400px);height:auto;}
.footer-mark{width:min(48%,150px);height:auto;}
.footer-legal{font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;}
.footer-legal a{color:var(--muted);}
.footer-legal a:hover{color:var(--accent);}

/* 14. Legal pages, 404 -------------------------------------------------- */
.page-head{padding:calc(var(--bar-h) + clamp(56px,9vw,110px)) 0 clamp(28px,4vw,44px);border-bottom:1px solid var(--line);background:radial-gradient(ellipse 60% 60% at 0% 0%,rgba(120,0,0,.45) 0%,rgba(17,17,17,0) 65%),var(--bg);}
.page-head .h1{margin-bottom:.3em;}
.legal-date{margin:0;color:var(--muted);font-size:15px;}
.prose{max-width:76ch;}
.prose h2{font-size:clamp(20px,2vw,24px);margin:1.9em 0 .6em;}
.prose p,.prose li{font-size:16.5px;}
.prose ul{padding-left:22px;margin:0 0 1.15em;}
.prose li{margin-bottom:.5em;}
.prose a{color:var(--text-strong);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px;}
.prose a:hover{color:var(--accent);}
.page-404 .page-head{border-bottom:none;padding-bottom:clamp(72px,12vw,160px);min-height:70svh;}

/* 15. Motion and accessibility ----------------------------------------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important;}
  .reveal{opacity:1;transform:none;}
}
