/* ISTARIUM — smart solutions
   Sovereign dark landing. Self-contained: fonts + logo are local (relative paths).
   Palette: brand navy #2B2E83, warm ember #E94E1B. Type: Roboto (Light-led). */

/* ---- Fonts (local woff2, resolved relative to this stylesheet) ---- */
@font-face{font-family:"Roboto";font-style:normal;font-weight:300;font-display:swap;src:url("Roboto-Light.woff2") format("woff2");}
@font-face{font-family:"Roboto";font-style:normal;font-weight:500;font-display:swap;src:url("Roboto-Medium.woff2") format("woff2");}

/* ---- Tokens ---- */
:root{
  --sky-top:#080915;
  --sky-mid:#101229;
  --sky-low:#1a1d45;
  --navy:#2B2E83;
  --ember:#E94E1B;
  --ember-soft:#f0693b;
  --text:#edeef6;
  --muted:#9698ba;
  /* 4.55:1 on the footer #080915 — clears WCAG AA for the legal text and the brand
     line. Lifted from #6d6f93 (4.10:1) on 2026-07-17. Consumers on LIGHTER panels
     (.scrollcue on the hero's #1a1d45 bottom, .contact__hint[checking] on #0d0f24)
     still sit under 4.5:1 — improved by this lift, but not yet fixed. */
  --faint:#74769e;
  --line:rgba(237,238,246,.12);
  --line-strong:rgba(237,238,246,.24);
  --ease:cubic-bezier(.22,.61,.36,1);
  /* Height of the conditional legacy-brand notice bar (see index.html). 0 unless the
     bar is shown; then set once, in px, on <html> by the notice script. Everything
     that must yield to the bar reads THIS — never a hardcoded number — so a 2-line
     wrap on narrow phones reserves its real space automatically. */
  --icg-notice-h:0px;
  /* The page gutter: the single horizontal inset every full-width element starts at.
     The topbar logo, the hero logo and the .wrap content column all sit on this line,
     so anything that must align with the logo reads THIS, never a copy of the clamp. */
  --gutter:clamp(22px,6vw,72px);
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;
  font-family:"Roboto",system-ui,-apple-system,Segoe UI,Arial,sans-serif;
  font-weight:300;
  color:var(--text);
  background:var(--sky-top);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
::selection{background:rgba(233,78,27,.32);color:#fff;}

/* Focus visibility (a11y floor) */
:focus-visible{outline:2px solid var(--ember-soft);outline-offset:3px;border-radius:2px;}

/* ---- Shell / rhythm ---- */
.wrap{width:100%;max-width:1120px;margin-inline:auto;padding-inline:var(--gutter);}
.eyebrow{
  font-size:12px;font-weight:500;letter-spacing:.34em;text-transform:uppercase;
  color:var(--ember);margin:0 0 clamp(20px,3vw,34px);
  display:inline-flex;align-items:center;gap:14px;
}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--ember);opacity:.75;}

/* ---- Top bar ---- */
/* Absolute against the initial containing block (document top), so it overlays the
   hero artwork. The notice bar is in normal flow ABOVE it, so the bar's height is
   exactly the topbar's start offset — logo and bar can never collide. */
.topbar{
  position:absolute;top:var(--icg-notice-h);left:0;right:0;z-index:6;
  display:flex;align-items:center;justify-content:space-between;
  padding:clamp(20px,3.4vw,34px) var(--gutter);
}
.topbar__mark img{height:22px;width:auto;opacity:.92;}
.lang{display:flex;align-items:center;gap:12px;font-size:13px;letter-spacing:.16em;color:var(--faint);}
.lang a{padding:2px 2px;transition:color .3s var(--ease);}
.lang a:hover{color:var(--text);}
.lang a[aria-current="true"]{color:var(--text);}
.lang span{opacity:.4;}

/* ================= HERO ================= */
.hero{
  position:relative;
  /* The notice bar consumes real space at the top of the document, so the hero
     shrinks by exactly that much: bar + hero still equal one fold, never more. */
  min-height:calc(100svh - var(--icg-notice-h));
  display:flex;flex-direction:column;justify-content:center;
  overflow:hidden;
  isolation:isolate;
  /* Sky depth gradient — always present, reads as pre-dawn navy sky */
  background:
    radial-gradient(120% 88% at 50% 118%, rgba(43,46,131,.55) 0%, rgba(43,46,131,0) 46%),
    linear-gradient(180deg, var(--sky-top) 0%, var(--sky-mid) 52%, var(--sky-low) 100%);
}

/* (1) OPTIONAL licensed photograph goes here — drop an INDUSTRIAL/plant key-visual
   (a production complex / works on the horizon) and it slots straight in beneath the
   atmosphere overlays; no layout changes needed. Uncomment and set the file:
   .hero__photo{ background-image:url("hero.jpg"); }  */
.hero__photo{
  position:absolute;inset:0;z-index:-3;
  background-size:cover;background-position:center 62%;background-repeat:no-repeat;
  /* background-image: none;  <-- set a licensed INDUSTRIAL/plant photo here later */
}

/* (2) Ember dawn glow rising off the horizon */
.hero__glow{
  position:absolute;left:50%;bottom:-6%;z-index:-2;
  width:min(1400px,150%);height:62%;transform:translateX(-50%);
  background:
    radial-gradient(60% 100% at 50% 102%, rgba(233,78,27,.55) 0%, rgba(233,78,27,.22) 30%, rgba(233,78,27,0) 64%),
    radial-gradient(38% 78% at 50% 102%, rgba(246,140,80,.6) 0%, rgba(246,140,80,0) 58%),
    radial-gradient(24% 52% at 50% 104%, rgba(255,196,150,.5) 0%, rgba(255,196,150,0) 60%);
  filter:blur(5px);
  pointer-events:none;
  animation:dawn 14s ease-in-out infinite;
}

/* (3) Soft fog bands drifting above the skyline */
.hero__fog{position:absolute;inset:0;z-index:-2;pointer-events:none;overflow:hidden;}
.hero__fog span{
  position:absolute;left:-10%;right:-10%;height:120px;border-radius:50%;
  background:radial-gradient(closest-side, rgba(180,186,225,.10), rgba(180,186,225,0));
  filter:blur(10px);
}
.hero__fog span:nth-child(1){bottom:22%;height:180px;opacity:.8;}
.hero__fog span:nth-child(2){bottom:30%;left:8%;right:24%;height:120px;opacity:.55;}
.hero__fog span:nth-child(3){bottom:14%;left:-6%;right:40%;height:150px;opacity:.5;}

/* (4) Layered industrial silhouette: pale far plant in fog + darker near plant */
.hero__ridge{
  position:absolute;left:0;right:0;bottom:0;z-index:-1;
  width:100%;height:min(46vh,420px);
  pointer-events:none;
}
.hero__ridge svg{width:100%;height:100%;display:block;}

/* (5) Legibility scrim */
.hero::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg, rgba(8,9,21,.55) 0%, rgba(8,9,21,0) 26%, rgba(8,9,21,0) 60%, rgba(8,9,21,.28) 100%);
}

/* Hero content */
.hero__inner{position:relative;z-index:2;}
.hero__logo{
  height:clamp(46px,8.4vw,116px);width:auto;
  filter:drop-shadow(0 6px 30px rgba(0,0,0,.45));
}
.lockup{
  margin:clamp(18px,2.4vw,30px) 0 0;
  font-weight:300;color:var(--ember-soft);
  font-size:clamp(15px,2.3vw,26px);
  letter-spacing:.26em;text-transform:lowercase;
}
.promise{
  margin:clamp(26px,4vw,44px) 0 0;
  font-weight:300;color:var(--text);
  font-size:clamp(19px,2.7vw,31px);
  line-height:1.4;letter-spacing:.005em;
  max-width:22ch;
}

/* Discreet scroll cue */
.scrollcue{
  position:absolute;left:var(--gutter);bottom:clamp(26px,4vw,44px);z-index:3;
  display:inline-flex;flex-direction:column;align-items:center;gap:10px;
  font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--faint);
  transition:color .35s var(--ease);
}
.scrollcue:hover{color:var(--muted);}
.scrollcue i{width:1px;height:56px;background:linear-gradient(var(--faint),transparent);display:block;}
.scrollcue i::after{
  content:"";position:absolute;left:50%;top:0;width:1px;height:18px;background:var(--ember);
  transform:translateX(-50%);animation:trickle 3.4s var(--ease) infinite;
}
.scrollcue span{writing-mode:vertical-rl;}

/* ================= SECTIONS ================= */
.band{position:relative;padding-block:clamp(96px,17vh,190px);}
.band--essence{
  background:linear-gradient(180deg,var(--sky-low) 0%, #14163a 55%, #101228 100%);
  border-top:1px solid var(--line);
}
.band--work{background:linear-gradient(180deg,#101228 0%, #0e1024 100%);border-top:1px solid var(--line);}
.band--contact{background:#0d0f24;border-top:1px solid var(--line);}

/* Use cases — cryptic, sparse. A bold name + one quiet line each. */
.uses{list-style:none;margin:0;padding:0;max-width:min(94%,720px);display:grid;gap:0;}
.uses li{
  display:grid;gap:8px;
  padding-block:clamp(22px,3vw,32px);
  border-bottom:1px solid var(--line);
}
.uses li:first-child{padding-top:0;}
.uses li:last-child{border-bottom:0;}
/* Die Überschrift IST der Auslöser des Zugangsdialogs — als <button>. Im RUHEZUSTAND
   optisch exakt wie die frühere <span>: kein Unterstrich, keine Farbe, kein Icon — der
   Zugang bleibt unangekündigt. Erst beim Hover (bzw. Tastaturfokus) erscheint eine
   dezente ember-Unterstreichung, sonst nichts (Pfeil und „mehr“ waren zu viel). */
.uses__name{
  font-weight:500;color:var(--text);
  font-size:clamp(19px,2.4vw,26px);letter-spacing:.005em;
  justify-self:start;text-align:left;
  appearance:none;background:none;padding:0 0 3px;margin:0;
  border:0;border-bottom:1px solid transparent;
  font-family:inherit;line-height:inherit;cursor:pointer;
  transition:border-color .35s var(--ease);
}
/* 1px ist die Untergrenze für einen sauber gerenderten Border — „dünner“ heisst hier
   also leiser: halbtransparentes Ember statt Vollton, wirkt zarter als die 1px-Linie. */
.uses__name:hover,.uses__name:focus-visible{border-bottom-color:rgba(233,78,27,.5);}
.uses__name:focus-visible{outline:0;}
.uses__line{
  font-weight:300;color:var(--muted);
  font-size:clamp(15px,1.8vw,19px);line-height:1.5;max-width:46ch;
}
/* ---- Zugangsdialog (assets/unlock.php prüft, nicht der Browser) ---- */
.lock{
  position:fixed;inset:0;z-index:120;
  display:flex;align-items:center;justify-content:center;padding:var(--gutter);
  background:rgba(8,9,21,.86);backdrop-filter:blur(3px);
}
.lock[hidden]{display:none;}
.lock__box{
  position:relative;width:min(100%,430px);
  background:#0d0f24;border:1px solid var(--line-strong);
  padding:clamp(26px,4vw,38px);
}
.lock__eyebrow{
  margin:0 0 6px;font-size:12px;font-weight:500;letter-spacing:.28em;
  text-transform:uppercase;color:var(--ember);
}
.lock__name{margin:0 0 22px;font-weight:300;color:var(--text);font-size:clamp(19px,2.4vw,24px);}
.lock__label{
  display:block;margin-bottom:8px;font-size:12px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--faint);
}
.lock__input{
  width:100%;box-sizing:border-box;margin-bottom:18px;
  background:transparent;border:0;border-bottom:1px solid var(--line-strong);
  padding:10px 0;font:inherit;font-weight:300;font-size:17px;color:var(--text);
  letter-spacing:.06em;
}
.lock__input:focus{outline:0;border-bottom-color:var(--ember);}
.lock__go{
  appearance:none;cursor:pointer;font:inherit;font-size:15px;font-weight:400;
  letter-spacing:.14em;text-transform:uppercase;color:var(--text);
  background:none;border:1px solid var(--line-strong);padding:11px 26px;
  transition:border-color .4s var(--ease),color .4s var(--ease);
}
.lock__go:hover{border-color:var(--ember);color:#fff;}
.lock__go[disabled]{opacity:.5;cursor:default;}
.lock__msg{margin:16px 0 0;font-size:14px;font-weight:300;line-height:1.5;color:var(--ember-soft);}
.lock__msg[hidden]{display:none;}
.lock__hint{
  margin:22px 0 0;padding-top:18px;border-top:1px solid var(--line);
  font-size:13.5px;font-weight:300;line-height:1.6;color:var(--muted);
}
.lock__close{
  position:absolute;top:10px;right:14px;
  appearance:none;background:none;border:0;cursor:pointer;
  font:inherit;font-size:26px;line-height:1;color:var(--faint);padding:4px 8px;
  transition:color .3s var(--ease);
}
.lock__close:hover{color:var(--text);}

/* Contact layout — portrait left, identity + gate stacked right on wide; stacked on narrow.
   Photo + intro are STATIC (always visible); only the gate's details are verified.
   Left-aligned tracks, matching the page's rhythm (.uses ~720, .lines ~660 are left-set,
   never pinned to opposite edges). The two tracks total ~784 at most, so the composition
   sits in the same left-hand column as every other block. */
.contact__cols{
  display:grid;grid-template-columns:1fr;
  gap:clamp(36px,5vw,48px);align-items:start;justify-content:start;
}
@media (min-width:900px){
  .contact__cols{
    grid-template-columns:280px minmax(0,440px);gap:clamp(40px,4vw,64px);
    /* stretch (not start) so the right column inherits the portrait's height and
       has room to push its last child down — see .contact__gate below. */
    align-items:stretch;
  }
}

/* Right-hand stack: name + profile and the gated contact read as one column. */
.contact__stack{
  display:grid;gap:clamp(28px,3.5vw,40px);align-content:start;
}

/* Two-column only: the contact block sits flush with the portrait's BOTTOM edge.
   The stack fills the row (as tall as the photo) and the gate is pushed down with
   an auto margin — no fixed offsets, so it holds at any type/photo size.
   Bottom-anchoring also keeps the gate's bottom edge FIXED across both gate states:
   the idle hint and the revealed e-mail+phone differ in height, but both grow
   upward from the same baseline, so nothing lurches when Turnstile resolves.
   Below 900px the stack is a plain single column in source order — untouched. */
@media (min-width:900px){
  .contact__stack{display:flex;flex-direction:column;}
  .contact__gate{margin-top:auto;}
}

/* Portrait: an aperture into daylight, dissolving into the band.
   The source is a bright Munich daylight shot, not a dark studio headshot — so a
   full vignette would smear the sky into a grey blob. Instead the crisp top reads as
   a window cut into the pre-dawn canvas, while the bottom (already brand navy — the
   suit) is masked away so the figure dissolves into the band rather than sitting in
   a box. No radius, no border: consistent with the page's hard-edged geometry.
   Ember appears once here, on the role line — the photo carries no second accent. */
.who{margin:0;max-width:280px;width:100%;}
.who__frame{position:relative;}
.who__frame img{
  width:100%;height:auto;
  filter:saturate(.88) contrast(1.04) brightness(.94);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 54%,rgba(0,0,0,.55) 80%,rgba(0,0,0,0) 100%);
          mask-image:linear-gradient(180deg,#000 0%,#000 54%,rgba(0,0,0,.55) 80%,rgba(0,0,0,0) 100%);
}
.who__cap{margin:0;max-width:44ch;}
.who__name{
  margin:0;font-weight:500;color:var(--text);
  font-size:clamp(18px,2.1vw,21px);letter-spacing:.005em;line-height:1.3;
}
.who__role{
  margin:6px 0 0;font-weight:300;color:var(--ember-soft);
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;line-height:1.4;
}
.who__line{
  margin:14px 0 0;font-weight:300;color:var(--muted);
  font-size:clamp(14px,1.6vw,16px);line-height:1.55;max-width:34ch;
}

/* Contact gate — details revealed to verified humans only (anti-scraping) */
.contact__gate{max-width:min(100%,560px);}
.contact__hint{
  margin:0;font-weight:300;color:var(--muted);
  font-size:clamp(15px,1.8vw,19px);line-height:1.6;max-width:46ch;
}
.contact__hint[data-state="checking"]{color:var(--faint);}
.contact__reveal{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(14px,2vw,20px);}
.contact__reveal[hidden]{display:none;}
.contact__addr{margin:0;font-weight:300;color:var(--muted);font-size:clamp(15px,1.7vw,18px);line-height:1.6;}
.contact__addr a{border-bottom:1px solid var(--line-strong);padding-bottom:2px;transition:border-color .4s var(--ease),color .4s var(--ease);}
.contact__addr a:hover{border-color:var(--ember);color:var(--text);}
.cf-turnstile{margin:0;}

/* Enigmatic lines: sparse, large, light. Each line stands alone. */
.lines{max-width:min(94%,660px);}
.lines p{
  margin:0;font-weight:300;
  font-size:clamp(22px,3vw,36px);
  line-height:1.32;letter-spacing:.004em;color:var(--text);text-wrap:balance;
}
.lines p + p{margin-top:clamp(16px,2.2vw,26px);color:var(--muted);}
.lines .accent{color:var(--ember-soft);}

/* Contact */
.contact__lead{
  font-weight:300;color:var(--text);
  font-size:clamp(21px,3vw,34px);line-height:1.35;max-width:22ch;margin:0 0 clamp(30px,4vw,46px);
}
.cta{
  display:inline-flex;align-items:baseline;gap:16px;
  font-size:clamp(17px,2vw,22px);font-weight:300;letter-spacing:.02em;color:var(--text);
  padding-bottom:8px;border-bottom:1px solid var(--line-strong);
  transition:border-color .4s var(--ease),color .4s var(--ease);
}
.cta:hover{border-color:var(--ember);color:#fff;}
.cta em{font-style:normal;color:var(--ember);font-weight:500;transition:transform .4s var(--ease);}
.cta:hover em{transform:translateX(4px);}

/* ================= FOOTER + LEGAL ================= */
.foot{
  background:#080915;border-top:1px solid var(--line);padding-block:clamp(56px,9vh,96px);color:var(--muted);
  /* The logo's rendered box, as two tokens. They are the single source of truth for the
     logo AND for how far .foot__meta is pushed down to meet the brand line (see there):
     resize the logo here and the alignment follows by itself. */
  --foot-logo-h:31px;
  --foot-logo-gap:16px;
}
.foot__top{display:flex;flex-wrap:wrap;gap:28px 48px;align-items:flex-start;justify-content:space-between;}
/* display:block, not the default inline: an inline img sits on a text baseline and drags
   the line box's descender space along under it, so the logo's block would be a few px
   taller than --foot-logo-h and the calc() in .foot__meta would not land. As a block the
   img occupies exactly --foot-logo-h + --foot-logo-gap and the arithmetic is honest. */
.foot__brand img{display:block;height:var(--foot-logo-h);width:auto;opacity:.9;margin-bottom:var(--foot-logo-gap);}
.foot__brand p{margin:0;font-size:14px;color:var(--faint);max-width:34ch;line-height:1.6;}
/* The company name is a legal entity and must never break across lines — the <br> after
   "der" places the break, this keeps the name itself whole at any column width. */
.foot__brand .nb{white-space:nowrap;}
/* Footnote line under the brand: quieter than the brand line by size (13px vs 14px),
   not by contrast — same --faint as the brand line, one source of truth. */
.foot__brand p.foot__more{margin:36px 0 0;max-width:none;font-size:13px;color:var(--faint);}
.foot__brand p.foot__more a{color:var(--muted);border-bottom:1px solid var(--line);transition:border-color .4s var(--ease),color .4s var(--ease);}
.foot__brand p.foot__more a:hover{border-color:var(--ember);color:var(--text);}
/* One product = one .foot__more-item span: the linked name, then plain-text platform
   labels in brackets. A further product is a copy of that span and nothing else — the
   comma between items is generated here, never typed, so the list never needs re-spacing
   by hand as it grows. Only the name is a link; the labels stay in the line's own --faint
   and the brackets sit outside the <a>, so nothing but the name is underlined. */
.foot__brand .foot__more-item:not(:last-child)::after{content:",";}
/* The row aligns at flex-start, i.e. at the top of the logo. This block belongs to the
   brand LINE, not the logo, so it is offset by exactly the logo's own box — height + its
   margin-bottom, read from the same tokens the logo uses. Never hardcode this number:
   it is the logo's size, and the logo has been resized twice already. */
.foot__meta{
  font-size:13px;color:var(--faint);line-height:1.9;text-align:right;
  margin-top:calc(var(--foot-logo-h) + var(--foot-logo-gap));
}
.foot__meta a:hover{color:var(--text);}

/* No padding-top here on purpose. Every doc row already carries its own 22px above its
   text (details.doc > summary padding), and that is what sets the gap under a rule for
   Datenschutz and every row after it. A padding-top here would apply only to the FIRST
   row, Impressum, stacking on top of its summary padding and making that one gap
   ~50-66px against everyone else's 22px. The rule-to-text gap is the summary's job. */
.legal{margin-top:clamp(18px,2.5vh,26px);border-top:1px solid var(--line);}
details.doc{border-bottom:1px solid var(--line);}
details.doc > summary{
  list-style:none;cursor:pointer;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 2px;font-size:14px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  transition:color .3s var(--ease);
}
details.doc > summary:hover{color:var(--text);}
details.doc > summary::-webkit-details-marker{display:none;}
details.doc > summary .plus{color:var(--ember);font-weight:500;font-size:20px;line-height:1;transition:transform .3s var(--ease);}
details.doc[open] > summary .plus{transform:rotate(45deg);}
.doc__body{
  max-height:52vh;overflow-y:auto;
  padding:6px 20px 30px 2px;margin-bottom:8px;
  font-size:13px;line-height:1.7;color:var(--faint);
}
.doc__body p{margin:0 0 1em;}
.doc__body p:first-child{color:var(--muted);}
.doc__body strong{color:var(--muted);font-weight:500;}
/* The global a{color:inherit} would sink a link into the --faint body text with no
   affordance at all. Same treatment as the only other in-prose link on the page
   (.foot__more a): --muted (7.07:1 on #080915) lifted off the --faint copy, hairline
   rule under it, ember on hover. No new colour, no new gesture. */
.doc__body a{color:var(--muted);border-bottom:1px solid var(--line);transition:border-color .4s var(--ease),color .4s var(--ease);}
.doc__body a:hover{border-color:var(--ember);color:var(--text);}
.doc__body::-webkit-scrollbar{width:8px;}
.doc__body::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:4px;}
.copyline{margin-top:clamp(34px,5vh,56px);font-size:12px;letter-spacing:.14em;color:var(--faint);text-transform:uppercase;}

/* ================= Motion ================= */
@keyframes dawn{0%,100%{opacity:.82;}50%{opacity:1;}}
@keyframes trickle{0%{transform:translate(-50%,-100%);opacity:0;}25%{opacity:1;}70%{opacity:.6;}100%{transform:translate(-50%,220%);opacity:0;}}

/* Restrained entrance */
.reveal{opacity:0;transform:translateY(18px);}
.is-in .reveal,.reveal.is-in{opacity:1;transform:none;transition:opacity 1.1s var(--ease),transform 1.1s var(--ease);}
.hero .reveal{transition-delay:var(--d,0s);}

@media (max-width:640px){
  /* Single column: there is no logo beside this block to align to any more, so the
     logo-sized offset must go — flex gap does not collapse into it, the two would add up
     to a ~75px hole between the brand block and this one. The 28px row gap is the spacing. */
  .foot__meta{text-align:left;margin-top:0;}
  .foot__top{flex-direction:column;}
  .promise,.lines{max-width:100%;}
  .scrollcue{display:none;}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .hero__glow{animation:none;}
  .scrollcue i::after{animation:none;opacity:.5;}
  .reveal{opacity:1;transform:none;transition:none;}
}
