/* =========================================================================
   Forward Within — styles.css
   Design tokens, typography and base components are taken from the
   prototype (prototype/website-prototyp.html, Runde 11). On top of that
   sits a "flow" motion layer (ambient background, text reveals, parallax,
   page transitions). Every motion effect has a prefers-reduced-motion
   fallback.
   ========================================================================= */

/* ---------- Fonts (self-hosted, no request to Google) ---------- */
@font-face{
  font-family:'Libre Caslon Display';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(../assets/fonts/libre-caslon-display-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Libre Caslon Display';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(../assets/fonts/libre-caslon-display-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Work Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url(../assets/fonts/work-sans-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Work Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url(../assets/fonts/work-sans-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- Design tokens ---------- */
:root{
  /* from the prototype */
  --bg:#EDE8DE;
  --bg-deep:#12140E;
  --panel:#F6F3EA;
  --ink:#15160F;
  --ink-soft:#5C5A4C;
  --border:#D8D2C1;
  --accent:#22392A;
  --accent-soft:#DCE3D6;
  --gold:#4C5F47;
  --display:'Libre Caslon Display', Georgia, 'Times New Roman', serif;
  --sans:'Work Sans', 'Helvetica Neue', Arial, sans-serif;

  /* colours the prototype used inline on dark surfaces */
  --sage:#8CAD8F;
  --on-dark:#EDE8DE;
  --on-dark-soft:#AFA998;
  --on-dark-mute:#8A8977;

  /* motion */
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-std:cubic-bezier(.4,0,.2,1);
}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{
  background:var(--bg);
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  margin:0;
  overflow-x:clip;
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%;}
a{color:inherit;}
p{margin:0 0 1em;}
h1,h2,h3,h4{font-family:var(--display);text-wrap:balance;margin:0;font-weight:400;}
::selection{background:var(--accent);color:var(--bg);}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
.on-dark :focus-visible{outline-color:var(--sage);}

.skip-link{
  position:absolute;
  left:16px;
  top:-80px;
  z-index:100;
  background:var(--ink);
  color:var(--bg);
  padding:12px 18px;
  font-size:14px;
  text-decoration:none;
  transition:top .2s ease;
}
.skip-link:focus{top:16px;}
.visually-hidden{
  position:absolute!important;
  width:1px;height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
}

.gutter{padding-inline:24px;}
@media (min-width:760px){ .gutter{padding-inline:64px;} }
.maxw{max-width:1160px;margin-inline:auto;}

.label{
  font-family:var(--sans);
  font-size:11.5px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--gold);
  margin:0 0 16px;
  font-weight:600;
}
.label-line{display:inline-flex;align-items:center;gap:14px;}
.label-line::before{
  content:"";
  width:28px;
  height:1px;
  background:currentColor;
}

/* ---------- Buttons & links ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  font-family:var(--sans);
  font-weight:600;
  font-size:13.5px;
  letter-spacing:0.03em;
  padding:16px 30px;
  text-decoration:none;
  border:1px solid var(--ink);
  border-radius:0;
  cursor:pointer;
  transition:transform .35s var(--ease-std), box-shadow .35s ease, background-color .35s ease, color .35s ease, border-color .35s ease;
}
.btn .arr{display:inline-block;transition:transform .45s var(--ease);}
.btn:hover .arr{transform:translateX(5px);}
.btn-primary{background:var(--ink);color:var(--bg);}
.btn-primary:hover{
  background:var(--accent);
  border-color:var(--accent);
  transform:translateY(-2px);
  box-shadow:0 14px 30px -12px rgba(18,20,14,0.45);
}
.btn-line{background:transparent;color:var(--ink);border-color:var(--ink);}
.btn-line:hover{background:var(--ink);color:var(--bg);transform:translateY(-2px);}
.on-dark .btn-primary{background:var(--on-dark);color:var(--bg-deep);border-color:var(--on-dark);}
.on-dark .btn-primary:hover{background:#fff;border-color:#fff;box-shadow:0 14px 30px -12px rgba(0,0,0,0.6);}

.textlink{
  font-size:13.5px;
  color:var(--ink-soft);
  text-decoration:none;
  background-image:linear-gradient(currentColor,currentColor);
  background-repeat:no-repeat;
  background-position:0 100%;
  background-size:0% 1px;
  padding-bottom:2px;
  transition:background-size .35s var(--ease-std), color .2s ease;
  border-bottom:1px solid var(--border);
}
.textlink:hover{color:var(--ink);background-size:100% 1px;border-bottom-color:transparent;}
.textlink .arr{display:inline-block;margin-left:6px;transition:transform .4s var(--ease);}
.textlink:hover .arr{transform:translateX(4px);}

/* =========================================================================
   Ambient background — slow, flowing colour fields behind every page
   ========================================================================= */
.ambient{
  position:fixed;
  inset:0;
  z-index:-1;
  overflow:hidden;
  pointer-events:none;
}
.ambient-layer{
  position:absolute;
  inset:-10% 0;
  transform:translate3d(0, calc(var(--sy, 0) * -0.06px), 0);
}
.blob{
  position:absolute;
  border-radius:50%;
  will-change:transform;
}
.blob--1{
  width:70vmax;height:70vmax;
  top:-28vmax;right:-22vmax;
  background:radial-gradient(circle at center, rgba(140,173,143,0.42) 0%, rgba(220,227,214,0.5) 35%, rgba(220,227,214,0) 64%);
  animation:drift1 22s ease-in-out infinite alternate;
}
.blob--2{
  width:62vmax;height:62vmax;
  bottom:-30vmax;left:-24vmax;
  background:radial-gradient(circle at center, rgba(76,95,71,0.32) 0%, rgba(76,95,71,0) 62%);
  animation:drift2 26s ease-in-out infinite alternate;
}
.blob--3{
  width:46vmax;height:46vmax;
  top:34%;left:26%;
  background:radial-gradient(circle at center, rgba(246,243,234,0.95) 0%, rgba(246,243,234,0) 62%);
  animation:drift3 19s ease-in-out infinite alternate;
}
.blob--4{
  width:40vmax;height:40vmax;
  top:8%;left:-12vmax;
  background:radial-gradient(circle at center, rgba(205,190,160,0.5) 0%, rgba(205,190,160,0) 64%);
  animation:drift4 30s ease-in-out infinite alternate;
}
/* fine paper grain for an editorial, tactile feel */
.ambient::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
  opacity:0.14;
  mix-blend-mode:multiply;
}
@keyframes drift1{
  0%{transform:translate3d(0,0,0) scale(1);}
  50%{transform:translate3d(-9vw,7vh,0) scale(1.12);}
  100%{transform:translate3d(-3vw,16vh,0) scale(0.94);}
}
@keyframes drift2{
  0%{transform:translate3d(0,0,0) scale(1);}
  50%{transform:translate3d(12vw,-10vh,0) scale(1.08);}
  100%{transform:translate3d(4vw,-18vh,0) scale(1.18);}
}
@keyframes drift3{
  0%{transform:translate3d(0,0,0) scale(1);}
  50%{transform:translate3d(-14vw,-8vh,0) scale(1.15);}
  100%{transform:translate3d(10vw,6vh,0) scale(0.9);}
}
@keyframes drift4{
  0%{transform:translate3d(0,0,0) scale(1);}
  100%{transform:translate3d(18vw,30vh,0) scale(1.2);}
}

/* =========================================================================
   Header & navigation
   ========================================================================= */
.site-header{
  position:sticky;
  top:0;
  z-index:40;
  transition:transform .55s var(--ease), background-color .4s ease, box-shadow .4s ease;
}
.site-header::before{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(237,232,222,0.72);
  -webkit-backdrop-filter:blur(16px) saturate(1.2);
  backdrop-filter:blur(16px) saturate(1.2);
  border-bottom:1px solid rgba(216,210,193,0.8);
  opacity:0;
  transition:opacity .4s ease;
  z-index:-1;
}
.site-header.is-scrolled::before{opacity:1;}
.site-header.is-hidden{transform:translateY(-100%);}
.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding-block:24px;
  border-bottom:1px solid var(--border);
  transition:padding .4s var(--ease), border-color .4s ease;
}
.is-scrolled .nav{padding-block:14px;border-bottom-color:transparent;}

.lockup{text-decoration:none;color:var(--ink);display:block;}
.lockup .name-l1{
  display:block;
  font-family:var(--display);
  font-weight:400;
  font-size:22px;
  line-height:1.2;
  letter-spacing:0.01em;
}
.lockup .name-l2{
  display:block;
  font-family:var(--sans);
  font-weight:600;
  font-size:10.5px;
  letter-spacing:0.24em;
  text-transform:uppercase;
  color:var(--ink-soft);
  margin-top:1px;
}
.navlinks{
  display:flex;
  gap:38px;
  font-size:13.5px;
  list-style:none;
  margin:0;
  padding:0;
}
.navlinks a{
  text-decoration:none;
  color:var(--ink-soft);
  letter-spacing:0.02em;
  padding-block:4px;
  background-image:linear-gradient(var(--accent),var(--accent));
  background-repeat:no-repeat;
  background-position:0 100%;
  background-size:0% 1px;
  transition:background-size .4s var(--ease), color .2s ease;
}
.navlinks a:hover{color:var(--ink);background-size:100% 1px;}
.navlinks a[aria-current="page"]{color:var(--ink);background-size:100% 1px;}

.menu-toggle{
  display:none;
  align-items:center;
  gap:12px;
  background:none;
  border:0;
  padding:8px 0;
  font:600 12px/1 var(--sans);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink);
  cursor:pointer;
}
.menu-toggle-icon{position:relative;width:26px;height:12px;display:block;}
.menu-toggle-icon span{
  position:absolute;
  left:0;
  width:100%;
  height:1.5px;
  background:currentColor;
  transition:transform .5s var(--ease), top .5s var(--ease);
}
.menu-toggle-icon span:first-child{top:2px;}
.menu-toggle-icon span:last-child{top:9px;}
.menu-open .menu-toggle-icon span:first-child{top:5.5px;transform:rotate(45deg);}
.menu-open .menu-toggle-icon span:last-child{top:5.5px;transform:rotate(-45deg);}

@media (max-width:900px){
  .js .nav-main, .js .nav-cta{display:none;}
  .js .menu-toggle{display:inline-flex;}
  html:not(.js) .nav{flex-wrap:wrap;}
  html:not(.js) .navlinks{gap:20px;flex-wrap:wrap;}
}

/* Mobile menu (full-screen overlay) */
.menu{
  position:fixed;
  inset:0;
  z-index:35;
  background:var(--bg-deep);
  color:var(--on-dark);
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:110px 24px 40px;
  clip-path:circle(0% at calc(100% - 48px) 44px);
  visibility:hidden;
  transition:clip-path .8s var(--ease), visibility 0s linear .8s;
}
.menu::after{
  content:"";
  position:absolute;
  width:80vmax;height:80vmax;
  right:-30vmax;bottom:-30vmax;
  background:radial-gradient(circle, rgba(140,173,143,0.22), transparent 62%);
  pointer-events:none;
}
.menu-open .menu{
  clip-path:circle(150% at calc(100% - 48px) 44px);
  visibility:visible;
  transition:clip-path .8s var(--ease), visibility 0s linear 0s;
}
.menu-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;position:relative;z-index:1;}
.menu-links a{
  display:flex;
  align-items:baseline;
  gap:18px;
  font-family:var(--display);
  font-size:clamp(34px,9vw,52px);
  line-height:1.2;
  color:var(--on-dark);
  text-decoration:none;
  opacity:0;
  transform:translateY(30px);
  transition:opacity .6s var(--ease), transform .8s var(--ease), color .2s ease;
}
.menu-links a:hover, .menu-links a[aria-current="page"]{color:var(--sage);}
.menu-links .menu-n{font-family:var(--sans);font-size:11px;letter-spacing:.16em;color:var(--sage);}
.menu-open .menu-links a{opacity:1;transform:none;transition-delay:calc(.18s + var(--i, 0) * 60ms);}
.menu-foot{
  position:relative;
  z-index:1;
  margin:48px 0 0;
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--on-dark-mute);
}
.menu-open .site-header{background:transparent;}
.menu-open .site-header::before{opacity:0;}
.menu-open .nav{border-bottom-color:transparent;}
.menu-open .lockup, .menu-open .menu-toggle{color:var(--on-dark);}
.menu-open .lockup .name-l2{color:var(--on-dark-mute);}
.menu-open{overflow:hidden;}

/* =========================================================================
   Hero (home)
   ========================================================================= */
.hero{
  display:grid;
  grid-template-columns:1fr 0.86fr;
  gap:64px;
  align-items:center;
  padding-block:56px 112px;
}
@media (max-width:920px){
  .hero{grid-template-columns:1fr;gap:56px;padding-block:36px 88px;}
}
.hero-title{
  font-size:clamp(46px,6.6vw,92px);
  line-height:1.02;
  margin-bottom:30px;
  letter-spacing:-0.012em;
}
.hero-title .line{display:block;}
.hero-title .line--accent{color:var(--accent);}
.hero .sub{
  font-size:17px;
  color:var(--ink-soft);
  max-width:44ch;
  margin:0 0 38px;
}
.hero-ctas{display:flex;gap:28px;flex-wrap:wrap;align-items:center;}

.hero-visual{position:relative;}
.hero-portrait{
  aspect-ratio:3/4;
  background:var(--bg-deep);
  position:relative;
  display:flex;
  align-items:flex-end;
  padding:26px;
  overflow:hidden;
}
@media (max-width:920px){ .hero-portrait{aspect-ratio:4/5;max-height:70svh;width:100%;} }
.hero-portrait::after{
  content:"";
  position:absolute;
  inset:-14%;
  background:linear-gradient(165deg,var(--bg-deep) 0%, var(--accent) 145%);
  animation:heroDrift 26s ease-in-out infinite alternate;
  z-index:0;
}
@keyframes heroDrift{
  0%{transform:scale(1) translate(0,0) rotate(0deg);}
  100%{transform:scale(1.14) translate(-2.5%,-2%) rotate(1.5deg);}
}
.hero-portrait::before{
  content:"";
  position:absolute;
  inset:14px;
  border:1px solid rgba(237,232,222,0.3);
  z-index:2;
}
/* living colour aura inside the portrait surface (stays as a soft frame once the photo is in) */
.hero-portrait .aura{position:absolute;inset:0;z-index:1;filter:blur(28px);}
.hero-portrait .aura span{position:absolute;border-radius:50%;mix-blend-mode:screen;will-change:transform;}
.hero-portrait .aura .a1{width:75%;height:60%;left:-15%;top:2%;background:radial-gradient(circle, rgba(140,173,143,0.85), rgba(140,173,143,0) 66%);animation:auraA 13s ease-in-out infinite alternate;}
.hero-portrait .aura .a2{width:85%;height:70%;right:-25%;bottom:-12%;background:radial-gradient(circle, rgba(70,120,86,0.9), rgba(70,120,86,0) 66%);animation:auraB 17s ease-in-out infinite alternate;}
.hero-portrait .aura .a3{width:60%;height:45%;left:25%;top:38%;background:radial-gradient(circle, rgba(214,196,160,0.55), rgba(214,196,160,0) 66%);animation:auraC 21s ease-in-out infinite alternate;}
@keyframes auraA{0%{transform:translate(0,0) scale(1);}100%{transform:translate(40%,45%) scale(1.35);}}
@keyframes auraB{0%{transform:translate(0,0) scale(1.1);}100%{transform:translate(-45%,-50%) scale(0.85);}}
@keyframes auraC{0%{transform:translate(0,0) scale(0.8);}50%{transform:translate(-30%,25%) scale(1.25);}100%{transform:translate(20%,-35%) scale(1);}}
.hero-portrait .cap{
  position:relative;
  color:var(--on-dark);
  font-size:11px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  opacity:0.85;
  z-index:3;
}
/* rotating claim badge */
.hero-badge{
  position:absolute;
  left:-52px;
  bottom:48px;
  width:132px;
  height:132px;
  border-radius:50%;
  background:var(--bg);
  display:grid;
  place-items:center;
  z-index:3;
  box-shadow:0 20px 40px -24px rgba(18,20,14,0.5);
  text-decoration:none;
  color:var(--ink);
}
.hero-badge svg{position:absolute;inset:8px;width:calc(100% - 16px);height:calc(100% - 16px);animation:spin 26s linear infinite;}
.hero-badge text{font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;fill:var(--gold);}
.hero-badge .arr{font-size:20px;color:var(--accent);transition:transform .4s var(--ease);}
.hero-badge:hover .arr{transform:translateY(4px);}
@keyframes spin{to{transform:rotate(360deg);}}
@media (max-width:920px){ .hero-badge{left:auto;right:16px;bottom:-40px;width:108px;height:108px;} .hero-badge text{font-size:13.5px;} }

/* load-in choreography (only when JS is running) */
.js .hero-title .line{overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em;}
.js .hero-title .line > span{display:block;transform:translateY(108%);transition:transform 1.3s var(--ease);}
.js .hero-title .line:nth-child(2) > span{transition-delay:.12s;}
.js.is-loaded .hero-title .line > span{transform:none;}
.js .hero-fade{opacity:0;transform:translateY(18px);transition:opacity 1.1s var(--ease), transform 1.1s var(--ease);transition-delay:calc(.45s + var(--d, 0) * 1ms);}
.js.is-loaded .hero-fade{opacity:1;transform:none;}
.js .hero-portrait{clip-path:inset(100% 0 0 0);transition:clip-path 1.6s var(--ease) .15s;}
.js.is-loaded .hero-portrait{clip-path:inset(0 0 0 0);}
.js .hero-badge{opacity:0;transform:scale(.6) rotate(-30deg);transition:opacity .9s var(--ease) 1s, transform 1.2s var(--ease) 1s;}
.js.is-loaded .hero-badge{opacity:1;transform:none;}

/* ---------- Sub-page hero ---------- */
.page-hero{padding-block:80px 72px;}
@media (max-width:760px){ .page-hero{padding-block:48px 48px;} }
.page-hero h1{
  font-size:clamp(42px,6.2vw,84px);
  line-height:1.04;
  letter-spacing:-0.01em;
  max-width:16ch;
  margin-bottom:28px;
}
.page-hero .sub{font-size:17px;color:var(--ink-soft);max-width:56ch;margin:0;}
.page-hero .hero-ctas{margin-top:36px;}

/* =========================================================================
   Marquees
   ========================================================================= */
.marquee-track{
  display:flex;
  width:max-content;
  animation:marquee 30s linear infinite;
  will-change:transform;
}
.marquee-track span{
  display:inline-flex;
  align-items:center;
  font-family:var(--sans);
  font-size:12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--on-dark);
  font-weight:600;
  white-space:nowrap;
  padding-inline:28px;
}
.marquee-track span::after{content:"\2014";color:var(--sage);margin-left:28px;}
@keyframes marquee{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}
/* large display variant */
.marquee-display{
  overflow:hidden;
  padding-block:24px 8px;
  width:100vw;
  position:relative;
  left:50%;
  margin-left:-50vw;
}
.marquee-display .marquee-track{animation-duration:48s;animation-direction:reverse;}
.marquee-display .marquee-track span{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(56px,10vw,150px);
  letter-spacing:-0.01em;
  text-transform:none;
  color:transparent;
  -webkit-text-stroke:1px rgba(34,57,42,0.42);
  padding-inline:.35em;
  line-height:1.1;
}
.marquee-display .marquee-track span::after{content:"\00B7";-webkit-text-stroke:0;color:var(--gold);margin-left:.7em;}
.marquee-display .marquee-track span:nth-child(even){color:var(--accent);-webkit-text-stroke:0;}

/* =========================================================================
   Section shell
   ========================================================================= */
section.block{padding-block:120px;}
@media (max-width:760px){ section.block{padding-block:80px;} }
.block h2{font-size:clamp(30px,3.8vw,48px);line-height:1.12;margin-bottom:24px;max-width:20ch;}
.block .lede{color:var(--ink-soft);max-width:58ch;font-size:16.5px;margin:0 0 56px;}
.section-head{margin-bottom:56px;}
.section-head .lede{margin-bottom:0;}
.section-head--split{
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  gap:64px;
  align-items:end;
}
@media (max-width:860px){ .section-head--split{grid-template-columns:1fr;gap:8px;} }

/* ---------- Intro (home) ---------- */
.intro-grid{
  display:grid;
  grid-template-columns:1.15fr 0.85fr;
  gap:72px;
  align-items:end;
}
@media (max-width:860px){ .intro-grid{grid-template-columns:1fr;gap:20px;} }
.intro-grid h2{margin-bottom:0;max-width:18ch;}
.intro-copy p{font-size:16.5px;color:var(--ink-soft);max-width:48ch;}
.intro-copy p strong{color:var(--ink);font-weight:600;}

.facts{
  list-style:none;
  margin:80px 0 0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--border);
}
@media (max-width:760px){ .facts{grid-template-columns:1fr;margin-top:56px;} }
.facts li{
  padding:32px 28px 8px 0;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.facts li + li{padding-left:28px;border-left:1px solid var(--border);}
@media (max-width:760px){
  .facts li{padding:24px 0;}
  .facts li + li{padding-left:0;border-left:0;border-top:1px solid var(--border);}
}
.fact-k{font-family:var(--display);font-size:clamp(34px,3.6vw,48px);line-height:1.05;color:var(--accent);}
.fact-v{font-size:14px;color:var(--ink-soft);max-width:28ch;}

/* ---------- About (Über mich) ---------- */
.about-grid{display:grid;grid-template-columns:0.82fr 1.18fr;gap:72px;align-items:start;}
@media (max-width:860px){ .about-grid{grid-template-columns:1fr;gap:44px;} }
.photo-slot{
  aspect-ratio:4/5;
  background:var(--panel);
  border:1px solid var(--border);
  position:relative;
  overflow:hidden;
  transition:transform .5s var(--ease-std), background-color .5s ease;
}
@media (hover:hover){
  .photo-slot:hover{transform:scale(1.015);background:var(--accent-soft);}
}
.photo-slot::before{content:"";position:absolute;inset:12px;border:1px solid var(--border);}
.photo-slot .cap{
  position:absolute;bottom:26px;left:0;right:0;text-align:center;
  font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-soft);
}
.about-sticky{position:sticky;top:110px;}
@media (max-width:860px){ .about-sticky{position:static;} }
.about-copy p{font-size:17px;color:var(--ink-soft);max-width:58ch;}
.about-copy p strong{color:var(--ink);font-weight:600;}
.credentials{
  margin-top:36px;
  display:flex;
  flex-direction:column;
  gap:10px;
  border-top:1px solid var(--border);
  padding-top:26px;
  list-style:none;
  padding-left:0;
}
.credentials li{
  font-size:14px;
  color:var(--ink-soft);
  display:flex;
  gap:12px;
}
.credentials li::before{content:"\2014";color:var(--gold);}

.pullquote{
  font-family:var(--display);
  font-size:clamp(30px,4.4vw,58px);
  line-height:1.15;
  max-width:22ch;
  margin:0 auto;
  text-align:center;
  color:var(--ink);
}
.pullquote em{font-style:normal;color:var(--accent);}

/* ---------- Offers (editorial list) ---------- */
.offer-list{display:flex;flex-direction:column;}
.offer-row{
  position:relative;
  display:grid;
  grid-template-columns:64px 1.6fr 1fr;
  gap:28px;
  padding:38px 0;
  border-top:1px solid var(--border);
  align-items:baseline;
  color:inherit;
  text-decoration:none;
}
.offer-row:last-child{border-bottom:1px solid var(--border);}
@media (max-width:700px){ .offer-row{grid-template-columns:1fr;gap:8px;} }
.offer-row .n{font-family:var(--display);font-weight:400;font-size:30px;color:var(--gold);transition:transform .5s var(--ease);}
.offer-row h3{font-size:clamp(22px,2.2vw,28px);margin-bottom:10px;}
.offer-row p{color:var(--ink-soft);font-size:15px;margin:0 0 8px;max-width:54ch;}
.offer-row .price{
  text-align:right;
  font-size:14px;
  color:var(--ink);
}
.offer-row .price strong{display:block;font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2;}
.offer-row .price small{display:block;color:var(--ink-soft);font-size:12.5px;margin-top:4px;}
.offer-row .price .btn{margin-top:20px;padding:12px 20px;font-size:12.5px;}
@media (max-width:700px){ .offer-row .price{text-align:left;margin-top:10px;} }
.offer-row .tag{
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
  font-weight:600;
  margin:0 0 10px;
}
.offer-row .more{margin-top:14px;display:inline-block;}

/* rows that are a single link (home): sweeping fill on hover */
.offer-row.is-link{
  grid-template-columns:64px 1.6fr 1fr 32px;
  padding-inline:20px;
  margin-inline:-20px;
  overflow:hidden;
  isolation:isolate;
}
.offer-row.is-link::before{
  content:"";
  position:absolute;
  inset:0;
  background:var(--panel);
  transform:scaleY(0);
  transform-origin:bottom;
  transition:transform .6s var(--ease);
  z-index:-1;
}
.offer-row.is-link .go{
  align-self:center;
  font-size:20px;
  color:var(--accent);
  transform:translateX(-10px);
  opacity:0;
  transition:transform .5s var(--ease), opacity .4s ease;
}
@media (hover:hover){
  .offer-row.is-link:hover::before{transform:scaleY(1);}
  .offer-row.is-link:hover .go{transform:none;opacity:1;}
  .offer-row.is-link:hover .n{transform:translateX(6px);}
}
@media (hover:none){ .offer-row.is-link .go{opacity:1;transform:none;} }
@media (max-width:700px){
  .offer-row.is-link{grid-template-columns:1fr;}
  .offer-row.is-link .go{position:absolute;right:20px;top:42px;}
}

/* ---------- Note boxes ---------- */
.note{
  font-size:15px;
  color:var(--ink-soft);
  max-width:66ch;
  border-top:1px solid var(--border);
  padding-top:24px;
}
.note strong{color:var(--ink);}
.callout{
  margin-top:64px;
  padding:36px 40px;
  background:rgba(246,243,234,0.7);
  border:1px solid var(--border);
  border-left:3px solid var(--accent);
  max-width:820px;
}
.callout h3{font-size:22px;margin-bottom:12px;}
.callout p{color:var(--ink-soft);font-size:15px;margin:0 0 .8em;}
.callout p:last-child{margin-bottom:0;}
@media (max-width:600px){ .callout{padding:28px 24px;} }

/* ---------- Coming soon ---------- */
.soon-lede{color:var(--ink-soft);max-width:60ch;font-size:15.5px;margin:0 0 44px;}
.soon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
@media (max-width:860px){ .soon-grid{grid-template-columns:1fr;} }
.soon-card{
  border:1px dashed var(--border);
  padding:30px 26px;
  background:rgba(246,243,234,0.35);
  transition:transform .5s var(--ease), background-color .4s ease, border-color .4s ease;
}
@media (hover:hover){
  .soon-card:hover{transform:translateY(-6px);background:rgba(246,243,234,0.85);border-color:var(--gold);}
}
.soon-card h3{font-size:20px;margin:0 0 12px;}
.soon-card p{font-size:14px;color:var(--ink-soft);margin:0 0 18px;}
.soon-card .badge{
  display:inline-block;
  font-size:10.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
  border:1px solid var(--border);
  padding:5px 10px;
}

/* ---------- Trust ("So arbeite ich") ---------- */
.trust-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:44px;
  margin-bottom:64px;
}
@media (max-width:860px){ .trust-grid{grid-template-columns:1fr;gap:36px;} }
.trust-item{position:relative;padding-top:28px;}
.trust-item::before{
  content:"";
  position:absolute;
  top:0;left:0;
  width:100%;
  height:1px;
  background:var(--ink);
  transform-origin:left;
  transition:transform 1.2s var(--ease);
  transition-delay:calc(var(--i, 0) * 120ms + 200ms);
}
.js .stagger:not(.in) .trust-item::before{transform:scaleX(0);}
.trust-item .num{display:block;font-family:var(--display);font-size:15px;color:var(--gold);margin-bottom:18px;}
.trust-item h3{font-size:22px;margin:0 0 12px;}
.trust-item p{font-size:15px;color:var(--ink-soft);margin:0;}

/* ---------- Reset: facts strip ---------- */
.fact-strip{
  list-style:none;
  margin:56px 0 0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  border-block:1px solid var(--border);
}
@media (max-width:860px){ .fact-strip{grid-template-columns:repeat(2,1fr);} }
.fact-strip li{padding:22px 20px 20px 0;display:flex;flex-direction:column;gap:2px;}
.fact-strip li + li{padding-left:20px;border-left:1px solid var(--border);}
@media (max-width:860px){
  .fact-strip li:nth-child(3){padding-left:0;border-left:0;}
  .fact-strip li:nth-child(n+3){border-top:1px solid var(--border);}
}
.fact-strip strong{font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2;}
.fact-strip span{font-size:13px;color:var(--ink-soft);}

/* ---------- Reset: goal split ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;}
@media (max-width:860px){ .split{grid-template-columns:1fr;gap:48px;} }
.split p{color:var(--ink-soft);font-size:16.5px;max-width:52ch;}

/* Workbook illustration (pure CSS, no image) */
.book-stage{position:relative;display:grid;place-items:center;min-height:440px;}
.book-stage::before{
  content:"";
  position:absolute;
  width:420px;height:420px;
  max-width:100%;
  border-radius:50%;
  background:radial-gradient(circle, rgba(220,227,214,1), rgba(220,227,214,0) 66%);
}
.book{
  position:relative;
  width:min(300px,72%);
  aspect-ratio:3/4;
  background:linear-gradient(150deg,#2E4A37 0%, var(--accent) 55%, #1A2C20 100%);
  color:var(--on-dark);
  padding:30px 28px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  box-shadow:inset 8px 0 0 rgba(0,0,0,0.18), 12px 12px 0 -1px var(--panel), 12px 12px 0 0 var(--border), -18px 30px 60px -24px rgba(18,20,14,0.6);
  transform:rotate(-5deg);
  animation:bookFloat 7s ease-in-out infinite alternate;
}
.book::before{content:"";position:absolute;inset:12px 12px 12px 20px;border:1px solid rgba(237,232,222,0.25);pointer-events:none;}

.book .b-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--sage);font-weight:600;padding-left:8px;}
.book .b-title{font-family:var(--display);font-size:clamp(26px,3vw,34px);line-height:1.08;padding-left:8px;}
.book .b-foot{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--on-dark-soft);padding-left:8px;}
@keyframes bookFloat{
  0%{transform:rotate(-5deg) translateY(0);}
  100%{transform:rotate(-3deg) translateY(-14px);}
}

/* ---------- Reset: timeline ---------- */
.timeline{
  --progress:1;
  position:relative;
  list-style:none;
  margin:0;
  padding:0;
  max-width:860px;
}
.js .timeline{--progress:0;}
.timeline::before, .timeline::after{
  content:"";
  position:absolute;
  left:31.5px;
  top:40px;
  bottom:40px;
  width:1px;
  background:var(--border);
}
.timeline::after{
  background:var(--accent);
  transform-origin:top;
  transform:scaleY(var(--progress));
}
.phase{
  position:relative;
  display:grid;
  grid-template-columns:64px 1fr;
  gap:32px;
  padding-block:28px;
}
.phase-n{
  position:relative;
  z-index:1;
  width:64px;height:64px;
  border-radius:50%;
  border:1px solid var(--border);
  background:var(--bg);
  display:grid;
  place-items:center;
  font-family:var(--display);
  font-size:22px;
  color:var(--gold);
  transition:background-color .6s var(--ease), color .6s var(--ease), border-color .6s var(--ease), transform .6s var(--ease);
}
.phase.is-active .phase-n, .timeline:not([data-timeline]) .phase-n{background:var(--accent);border-color:var(--accent);color:var(--on-dark);}
.phase h3{font-size:clamp(22px,2.4vw,30px);margin:10px 0 8px;}
.phase p{color:var(--ink-soft);font-size:15.5px;margin:0 0 12px;max-width:56ch;}
.phase .tool{
  display:inline-flex;
  gap:8px;
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
  font-weight:600;
}
.phase .tool b{font-weight:600;color:var(--ink);letter-spacing:.08em;}
@media (max-width:600px){
  .phase{grid-template-columns:48px 1fr;gap:20px;}
  .phase-n{width:48px;height:48px;font-size:18px;}
  .timeline::before, .timeline::after{left:23.5px;}
}

/* ---------- Fit (für wen) ---------- */
.fit-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;}
@media (max-width:860px){ .fit-grid{grid-template-columns:1fr;} }
.fit-card{padding:36px 36px 30px;border:1px solid var(--border);background:rgba(246,243,234,0.6);}
.fit-card--muted{background:transparent;border-style:dashed;}
.fit-card h3{font-size:22px;margin-bottom:18px;}
.fit-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}
.fit-card li{display:grid;grid-template-columns:auto 1fr;gap:14px;font-size:15px;color:var(--ink-soft);}
.fit-card li::before{content:"\2014";color:var(--gold);flex:none;}
@media (max-width:600px){ .fit-card{padding:28px 24px;} }

/* ---------- Steps ---------- */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;counter-reset:step;}
@media (max-width:860px){ .steps{grid-template-columns:1fr;} }
.steps li{border-top:1px solid var(--ink);padding-top:24px;}
.steps .num{display:block;font-family:var(--display);font-size:44px;line-height:1;color:var(--accent);margin-bottom:16px;}
.steps h3{font-size:21px;margin-bottom:10px;}
.steps p{font-size:15px;color:var(--ink-soft);margin:0;}

/* ---------- Booking ---------- */
.booking-wrap{display:grid;grid-template-columns:0.95fr 1.05fr;gap:72px;align-items:start;}
@media (max-width:860px){ .booking-wrap{grid-template-columns:1fr;gap:48px;} }
.booking-copy p{color:var(--ink-soft);font-size:16px;max-width:42ch;}
.booking-card{
  position:relative;
  background:var(--panel);
  border:1px solid var(--border);
  padding:44px 44px 40px;
  box-shadow:0 30px 60px -40px rgba(18,20,14,0.35);
}
.booking-card::before{content:"";position:absolute;inset:10px;border:1px solid var(--border);pointer-events:none;}
@media (max-width:600px){ .booking-card{padding:34px 26px 30px;} }
.booking-card .big{font-family:var(--display);font-size:clamp(48px,6vw,72px);line-height:1;margin:6px 0 10px;color:var(--accent);}
.booking-card .meta{font-size:14px;color:var(--ink-soft);margin-bottom:30px;}
.booking-card .btn{width:100%;position:relative;}
.booking-card .fine{font-size:13px;color:var(--ink-soft);margin:18px 0 0;}
.booking-alt{
  margin-top:24px;
  padding:26px 28px;
  border:1px solid var(--border);
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  flex-wrap:wrap;
}
.booking-alt p{margin:0;font-size:14.5px;color:var(--ink-soft);}
.booking-alt strong{color:var(--ink);font-weight:600;display:block;font-size:15px;}
.check-list{list-style:none;margin:28px 0 0;padding:0;display:flex;flex-direction:column;gap:16px;}
.check-list li{display:grid;grid-template-columns:36px 1fr;gap:14px;align-items:baseline;font-size:15.5px;color:var(--ink-soft);}
.check-list .num{font-family:var(--display);font-size:20px;color:var(--gold);}

/* ---------- Closing ---------- */
.closing{
  position:relative;
  background:var(--bg-deep);
  color:var(--on-dark);
  padding-block:140px;
  overflow:hidden;
}
@media (max-width:760px){ .closing{padding-block:96px;} }
.closing::before{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(560px circle at var(--mx,50%) var(--my,25%), rgba(140,173,143,0.22), transparent 62%);
  pointer-events:none;
  z-index:0;
}
.closing .orb{
  position:absolute;
  border-radius:50%;
  pointer-events:none;
  z-index:0;
}
.closing .orb--1{
  width:60vmax;height:60vmax;
  left:-24vmax;top:-30vmax;
  background:radial-gradient(circle, rgba(34,57,42,0.85), transparent 62%);
  animation:drift2 30s ease-in-out infinite alternate;
}
.closing .orb--2{
  width:50vmax;height:50vmax;
  right:-20vmax;bottom:-28vmax;
  background:radial-gradient(circle, rgba(76,95,71,0.5), transparent 62%);
  animation:drift1 36s ease-in-out infinite alternate;
}
.closing .inner{position:relative;z-index:1;max-width:760px;margin-inline:auto;text-align:center;}
.closing .label{color:var(--sage);}
.closing h2{color:var(--on-dark);font-size:clamp(34px,4.8vw,62px);line-height:1.08;margin:0 auto 22px;font-weight:400;max-width:18ch;}
.closing p{color:var(--on-dark-soft);margin:0 auto 36px;font-size:16px;max-width:52ch;}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--bg-deep);
  color:var(--on-dark-mute);
  font-size:13px;
  border-top:1px solid rgba(237,232,222,0.08);
}
.site-footer a{color:var(--on-dark-mute);text-decoration:none;transition:color .2s ease;}
.site-footer a:hover{color:var(--on-dark);}
.footer-top{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:48px;
  padding-block:72px 56px;
}
@media (max-width:760px){ .footer-top{grid-template-columns:1fr;padding-block:56px 40px;} }
.footer-claim{
  font-family:var(--display);
  font-size:clamp(30px,3.6vw,44px);
  line-height:1.1;
  color:var(--on-dark);
  margin:0 0 14px;
}
.footer-sub{margin:0;max-width:36ch;}
.footer-nav{display:grid;grid-template-columns:1fr 1fr;gap:32px;}
.footer-h{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--sage);font-weight:600;margin:0 0 16px;}
.footer-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.footer-bottom{
  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  padding-block:26px 32px;
  border-top:1px solid rgba(237,232,222,0.1);
  font-size:12.5px;
}
.footlinks{display:flex;gap:22px;flex-wrap:wrap;}

/* ---------- Legal pages ---------- */
.legal{max-width:760px;padding-bottom:120px;}
.legal h2{font-size:clamp(24px,2.6vw,30px);margin:56px 0 16px;}
.legal h3{font-family:var(--sans);font-size:16px;font-weight:600;margin:32px 0 10px;}
.legal p, .legal li{color:var(--ink-soft);font-size:15.5px;}
.legal ul{padding-left:20px;}
.legal li{margin-bottom:6px;}
.legal a{color:var(--accent);}
.legal address{font-style:normal;color:var(--ink);font-size:15.5px;line-height:1.7;margin-bottom:1em;}
.legal .stand{margin-top:56px;font-size:13px;}

/* ---------- 404 ---------- */
.notfound{min-height:62svh;display:flex;flex-direction:column;justify-content:center;padding-block:80px;}

/* =========================================================================
   Scroll reveals (classes are only "armed" when JS is running)
   ========================================================================= */
.js .reveal{
  opacity:0;
  transform:translateY(30px);
  transition:opacity 1.1s var(--ease), transform 1.1s var(--ease);
  transition-delay:calc(var(--d, 0) * 1ms);
}
.js .reveal.in{opacity:1;transform:none;}
.js .stagger > *{
  opacity:0;
  transform:translateY(26px);
  transition:opacity 1s var(--ease), transform 1s var(--ease);
  transition-delay:calc(var(--i, 0) * 100ms);
}
.js .stagger.in > *{opacity:1;transform:none;}
.js [data-split] .w{
  display:inline-block;
  overflow:hidden;
  vertical-align:top;
  padding-bottom:.1em;
  margin-bottom:-.1em;
}
.js [data-split] .w > span{
  display:inline-block;
  transform:translateY(112%);
  transition:transform 1.15s var(--ease);
  transition-delay:calc(var(--i, 0) * 42ms);
}
.js [data-split].in .w > span{transform:none;}

/* Parallax wrappers get their transform from JS */
[data-parallax]{will-change:transform;}

/* =========================================================================
   Page transitions (browsers that support cross-document view transitions)
   ========================================================================= */
@view-transition{navigation:auto;}
::view-transition-old(root){animation:vtOut .35s var(--ease-std) both;}
::view-transition-new(root){animation:vtIn .6s var(--ease) both;}
@keyframes vtOut{to{opacity:0;transform:translateY(-12px);}}
@keyframes vtIn{from{opacity:0;transform:translateY(18px);}}

/* =========================================================================
   Reduced motion: keep the design, drop the movement
   ========================================================================= */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:0.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:0.01ms!important;
    transition-delay:0ms!important;
  }
  .js .reveal, .js .stagger > *, .js [data-split] .w > span,
  .js .hero-title .line > span, .js .hero-fade, .js .hero-badge{opacity:1;transform:none;}
  .js .hero-portrait{clip-path:none;}
  .ambient-layer, [data-parallax]{transform:none!important;}
  @view-transition{navigation:none;}
}

/* ---------- Spacing helpers ---------- */
section.block.block--tight{padding-top:24px;}
.h-sm{font-size:clamp(24px,2.6vw,32px)!important;}
.mt-xl{margin-top:72px;}
.block .h3-like, .h3-like{font-size:clamp(22px,2.2vw,28px);line-height:1.2;margin-bottom:10px;max-width:none;}
.callout .h3-like{font-size:22px;margin-bottom:12px;}

/* ---------- Small-screen refinements ---------- */
@media (max-width:860px){
  .booking-wrap > :last-child{order:-1;}
}
@media (max-width:420px){
  .lockup .name-l1{font-size:20px;}
  .lockup .name-l2{font-size:9px;letter-spacing:.16em;}
}

/* =========================================================================
   Flow layer v2 — organic shapes, cursor light, shimmer, magnetic buttons
   ========================================================================= */
.has-shape, .hero{position:relative;isolation:isolate;}
.shape{
  position:absolute;
  z-index:-1;
  pointer-events:none;
  border-radius:42% 58% 63% 37% / 41% 44% 56% 59%;
  animation:morph 14s ease-in-out infinite alternate, turn 46s linear infinite;
  will-change:border-radius, transform;
}
.shape--sage{background:linear-gradient(140deg, rgba(140,173,143,0.55) 0%, rgba(220,227,214,0.35) 55%, rgba(205,190,160,0.25) 100%);}
.shape--line{border:1px solid rgba(34,57,42,0.28);animation-duration:18s, 60s;animation-direction:alternate, reverse;}
@keyframes morph{
  0%{border-radius:42% 58% 63% 37% / 41% 44% 56% 59%;}
  33%{border-radius:63% 37% 35% 65% / 55% 62% 38% 45%;}
  66%{border-radius:35% 65% 52% 48% / 68% 35% 65% 32%;}
  100%{border-radius:56% 44% 40% 60% / 38% 58% 42% 62%;}
}
@keyframes turn{to{transform:rotate(360deg);}}

.hero-shape-1{width:115%;aspect-ratio:1;right:-30%;top:-14%;}
.hero-shape-2{width:100%;aspect-ratio:1;left:-22%;bottom:-18%;}
.intro-shape{width:clamp(240px,30vw,420px);aspect-ratio:1;right:-8%;top:40px;opacity:.8;}
.page-shape-1{width:clamp(220px,34vw,460px);aspect-ratio:1;right:-6%;top:6%;}
.page-shape-2{width:clamp(200px,28vw,380px);aspect-ratio:1;right:8%;top:22%;}
@media (max-width:920px){
  .hero-shape-1{width:90%;right:-20%;top:-8%;}
  .hero-shape-2{width:80%;left:-14%;bottom:-10%;}
  .page-shape-1{right:-30%;top:-4%;}
  .page-shape-2{right:-18%;top:10%;}
  .intro-shape{right:-35%;}
}

/* soft light that follows the mouse (desktop only, created by JS) */
.cursor-glow{
  position:fixed;
  left:0;top:0;
  width:560px;height:560px;
  margin:-280px 0 0 -280px;
  border-radius:50%;
  background:radial-gradient(circle, rgba(140,173,143,0.30) 0%, rgba(140,173,143,0.12) 35%, rgba(140,173,143,0) 65%);
  pointer-events:none;
  z-index:-1;
  opacity:0;
  transition:opacity .6s ease;
  will-change:transform;
}
.cursor-glow.is-on{opacity:1;}

/* shimmering accent text */
.shimmer{
  background:linear-gradient(100deg, var(--accent) 0%, var(--accent) 38%, #6E9A78 50%, var(--accent) 62%, var(--accent) 100%);
  background-size:260% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:var(--accent);
  animation:shimmer 6.5s ease-in-out infinite;
}
@keyframes shimmer{0%{background-position:100% 0;}100%{background-position:-60% 0;}}

/* magnetic buttons get their offset from JS */
.btn.is-magnetic{transition:transform .25s var(--ease), box-shadow .35s ease, background-color .35s ease, color .35s ease, border-color .35s ease;}

@media (prefers-reduced-motion: reduce){
  .cursor-glow{display:none;}
  .shimmer{background:none;-webkit-text-fill-color:currentColor;}
}
/* decorative shapes may bleed past the edge; clip them without creating a scroll container */
main{overflow-x:clip;}
