/* ───────────────────────────────────────────────────────────
   EIL·Webschmid — Startseite + Element-Schaufenster
   Marke: Navy #1E3A5F · Kupfer #C97B3A · DM Sans / DM Mono
   ─────────────────────────────────────────────────────────── */

:root{
  /* Brand tokens (tweakable) */
  --navy:#1E3A5F;
  --navy-deep:#152C48;
  --ink:#15202C;
  --accent:#C97B3A;
  --accent-bright:#E8924B;
  --paper:#FAFAF7;
  --paper-dim:#F1EEE7;

  /* Derived neutrals */
  --line: color-mix(in oklab, var(--navy) 14%, transparent);
  --line-soft: color-mix(in oklab, var(--navy) 8%, transparent);
  --muted: color-mix(in oklab, var(--navy) 62%, var(--paper));
  --muted-2: color-mix(in oklab, var(--navy) 45%, var(--paper));

  /* Motion */
  --speed: 1;          /* multiplier set by Tweaks */
  --ease: cubic-bezier(.22,.61,.36,1);
  --ease-out: cubic-bezier(.16,1,.3,1);

  /* Shape */
  --radius: 18px;
  --radius-sm: 12px;
  --radius-lg: 28px;

  /* Type scale */
  --display: clamp(2.5rem, 6vw, 4.8rem);
  --h2: clamp(2rem, 3.6vw, 3.1rem);
  --h3: clamp(1.3rem, 1.8vw, 1.65rem);

  --maxw: 1200px;
  --gutter: clamp(20px, 5vw, 64px);

  --bg: var(--paper);
  --fg: var(--ink);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} }

body{
  margin:0;
  font-family:'DM Sans', system-ui, sans-serif;
  background:var(--bg);
  color:var(--fg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-size:18px;
  line-height:1.6;
  overflow-x:hidden;
}

h1,h2,h3,h4{font-weight:700; letter-spacing:-.02em; line-height:1.05; margin:0}
p{margin:0}
a{color:inherit}
img{max-width:100%; display:block}

.mono{font-family:'DM Mono', ui-monospace, monospace}
.eyebrow{
  font-family:'DM Mono', ui-monospace, monospace;
  font-size:.72rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--accent); font-weight:500;
  display:inline-flex; align-items:center; gap:.6em;
}
.eyebrow::before{
  content:""; width:26px; height:1.5px; background:var(--accent);
  display:inline-block;
}
.accent{color:var(--accent)}

/* ── Layout ─────────────────────────────────────────────── */
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter)}
section{position:relative}
.section{padding:clamp(72px,10vw,140px) 0}
.section-head{max-width:760px; margin-bottom:clamp(40px,5vw,68px)}
.section-head h2{font-size:var(--h2); margin:18px 0 0}
.section-head .lead{font-size:1.18rem; color:var(--muted); margin-top:20px; text-wrap:pretty}

/* ── Buttons ────────────────────────────────────────────── */
.btn{
  --bw: var(--accent);
  appearance:none; border:0; cursor:pointer;
  font-family:inherit; font-size:1rem; font-weight:600; letter-spacing:-.01em;
  padding:16px 28px; border-radius:999px;
  display:inline-flex; align-items:center; gap:.6em;
  position:relative; overflow:hidden; isolation:isolate;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease);
  text-decoration:none; white-space:nowrap;
}
.btn svg{width:18px;height:18px;flex-shrink:0;transition:transform .3s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}

.btn-primary{
  background:var(--accent); color:#fff;
  box-shadow:0 8px 24px -8px color-mix(in oklab, var(--accent) 80%, transparent);
}
.btn-primary::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:var(--accent-bright);
  transform:translateX(-101%); transition:transform .4s var(--ease-out);
}
.btn-primary:hover::before{transform:translateX(0)}
.btn-primary:hover{box-shadow:0 14px 34px -10px color-mix(in oklab, var(--accent) 85%, transparent)}
.btn-primary:hover svg{transform:translateX(4px)}

.btn-ghost{
  background:transparent; color:var(--navy);
  box-shadow:inset 0 0 0 1.5px var(--line);
}
.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--navy); background:color-mix(in oklab,var(--navy) 4%, transparent)}

.btn-dark{background:var(--navy); color:var(--paper)}
.btn-dark:hover{background:var(--navy-deep)}

.btn-lg{padding:19px 34px; font-size:1.06rem}
.btn-sm{padding:11px 18px; font-size:.9rem}

/* ── Badges ─────────────────────────────────────────────── */
.badge{
  display:inline-flex; align-items:center; gap:.5em;
  font-family:'DM Mono', monospace; font-size:.72rem; font-weight:500;
  letter-spacing:.08em; text-transform:uppercase;
  padding:6px 12px; border-radius:999px;
  background:color-mix(in oklab, var(--accent) 12%, transparent);
  color:var(--accent);
}
.badge.solid{background:var(--accent); color:#fff}
.badge.navy{background:color-mix(in oklab,var(--navy) 10%, transparent); color:var(--navy)}
.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor; animation:pulse calc(2s/var(--speed)) ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}

/* ── Reveal-on-scroll ──────────────────────────────────── */
[data-reveal]{
  opacity:0; transform:translateY(28px);
  transition:opacity .8s var(--ease-out), transform .8s var(--ease-out);
  transition-delay:var(--reveal-delay,0ms);
}
[data-reveal="in"]{opacity:1; transform:none}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{opacity:1 !important; transform:none !important}
}

/* ── Nav ────────────────────────────────────────────────── */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:18px var(--gutter);
  transition:background .4s var(--ease), padding .4s var(--ease), box-shadow .4s var(--ease);
}
.nav.scrolled{
  background:color-mix(in oklab, var(--paper) 82%, transparent);
  backdrop-filter:blur(16px) saturate(160%);
  -webkit-backdrop-filter:blur(16px) saturate(160%);
  padding:12px var(--gutter);
  box-shadow:0 1px 0 var(--line-soft);
}
.nav-progress{
  position:absolute; left:0; bottom:0; height:2px; width:0%;
  background:var(--accent); transition:width .1s linear;
}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; font-weight:700; letter-spacing:-.02em; font-size:1.18rem; color:var(--navy)}
.brand-mark{width:34px;height:34px;flex-shrink:0}
.brand .dot{color:var(--accent)}
.nav-links{display:flex; gap:6px; align-items:center}
.nav-links a{
  text-decoration:none; font-size:.95rem; font-weight:500; color:var(--navy);
  padding:9px 14px; border-radius:999px; position:relative;
  transition:background .2s var(--ease), color .2s var(--ease);
}
.nav-links a:hover{background:color-mix(in oklab,var(--navy) 7%, transparent)}
.nav-cta{margin-left:8px}
.nav-burger{display:none}
@media (max-width:920px){
  .nav-links{display:none}
}

/* ── Hero ───────────────────────────────────────────────── */
.hero{
  padding:clamp(130px,17vh,200px) 0 clamp(70px,9vw,120px);
  position:relative; overflow:hidden;
}
.hero-grid{
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(36px,5vw,72px);
  align-items:center;
}
@media (max-width:960px){ .hero-grid{grid-template-columns:1fr; gap:48px} }

.hero h1{
  font-size:var(--display);
  letter-spacing:-.035em;
  margin:22px 0 0;
  text-wrap:balance;
}
.hero h1 .line{display:block; overflow:hidden; white-space:nowrap}
.hero h1 .line > span{display:inline-block; transform:translateY(110%); transition:transform 1s var(--ease-out)}
.hero.lit h1 .line > span{transform:none}
.hero h1 .underline{
  position:relative; white-space:nowrap;
}
.hero h1 .underline svg{
  position:absolute; left:0; right:0; bottom:-.12em; width:100%; height:.5em;
  overflow:visible;
}
.hero h1 .underline path{
  fill:none; stroke:var(--accent); stroke-width:7; stroke-linecap:round;
  stroke-dasharray:1; stroke-dashoffset:1;
  transition:stroke-dashoffset 1.1s var(--ease-out) .5s;
  pathLength:1;
}
.hero.lit h1 .underline path{stroke-dashoffset:0}

.hero-lead{font-size:1.24rem; color:var(--muted); margin-top:28px; max-width:30ch; text-wrap:pretty}
.hero-cta{display:flex; gap:14px; margin-top:38px; flex-wrap:wrap}
.hero-trust{
  display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:42px;
  font-family:'DM Mono', monospace; font-size:.78rem; color:var(--muted-2);
  letter-spacing:.02em;
}
.hero-trust span{display:inline-flex; align-items:center; gap:8px}
.hero-trust .tick{width:16px;height:16px;color:var(--accent); flex-shrink:0}

/* hero mesh background */
.hero-mesh{position:absolute; inset:-20% -10% auto; height:120%; z-index:-1; pointer-events:none}
.hero-glow{
  position:absolute; width:46vw; height:46vw; max-width:640px; max-height:640px;
  border-radius:50%; filter:blur(70px); opacity:.4;
}
.hero-glow.a{top:-14%; right:-8%; background:radial-gradient(circle, var(--accent) 0%, transparent 65%); opacity:.22}
.hero-glow.b{bottom:-30%; left:-12%; background:radial-gradient(circle, var(--navy) 0%, transparent 60%); opacity:.12}

/* ── Browser mockup (hero visual) ───────────────────────── */
.mock{
  position:relative;
  border-radius:var(--radius);
  background:#fff;
  box-shadow:0 40px 80px -30px rgba(21,32,44,.4), 0 2px 0 rgba(21,32,44,.04);
  overflow:hidden;
  transform:perspective(1400px) rotateY(-9deg) rotateX(3deg);
  transition:transform .6s var(--ease);
  border:1px solid var(--line-soft);
}
.hero-mock-wrap{position:relative}
.hero-mock-wrap:hover .mock{transform:perspective(1400px) rotateY(-4deg) rotateX(1deg)}
.mock-bar{
  height:42px; display:flex; align-items:center; gap:7px; padding:0 16px;
  background:var(--paper-dim); border-bottom:1px solid var(--line-soft);
}
.mock-bar i{width:11px;height:11px;border-radius:50%;background:var(--line);display:block}
.mock-bar i:nth-child(1){background:#E8924B}
.mock-bar i:nth-child(2){background:#C97B3A}
.mock-bar i:nth-child(3){background:#1E3A5F33}
.mock-url{
  flex:1; height:22px; margin-left:12px; border-radius:999px;
  background:#fff; box-shadow:inset 0 0 0 1px var(--line-soft);
  display:flex; align-items:center; padding:0 12px;
  font-family:'DM Mono',monospace; font-size:.66rem; color:var(--muted-2);
}
.mock-canvas{padding:22px; display:flex; flex-direction:column; gap:14px; min-height:300px}
.mock-row{height:12px; border-radius:6px; background:var(--paper-dim)}
.mock-hero{height:92px; border-radius:10px; background:linear-gradient(110deg, var(--navy), var(--navy-deep)); position:relative; overflow:hidden}
.mock-hero::after{content:""; position:absolute; left:18px; bottom:18px; width:42%; height:10px; border-radius:5px; background:var(--accent)}
.mock-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:12px}
.mock-card{height:64px; border-radius:10px; background:var(--paper-dim); box-shadow:inset 0 0 0 1px var(--line-soft)}
.mock-card .pip{width:20px;height:20px;border-radius:6px;background:var(--accent);margin:10px 0 0 10px;opacity:.85}

/* floating chips on hero mock */
.float-chip{
  position:absolute; z-index:3;
  background:#fff; border-radius:14px; padding:12px 16px;
  box-shadow:0 18px 40px -16px rgba(21,32,44,.35);
  border:1px solid var(--line-soft);
  display:flex; align-items:center; gap:11px;
  font-size:.86rem; font-weight:600; color:var(--navy);
  animation:floaty calc(5s / var(--speed)) ease-in-out infinite;
}
.float-chip small{display:block; font-weight:500; color:var(--muted-2); font-size:.72rem}
.float-chip .ico{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in oklab,var(--accent) 14%, transparent);color:var(--accent);flex-shrink:0}
.float-chip.one{top:8%; left:-7%; animation-delay:0s}
.float-chip.two{bottom:11%; right:-9%; animation-delay:-2.4s}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@media (max-width:960px){ .float-chip.one{left:2%} .float-chip.two{right:2%} }

/* ── Marquee ────────────────────────────────────────────── */
.marquee{
  border-block:1px solid var(--line-soft);
  padding:30px 0; overflow:hidden; position:relative;
  --fade:90px;
  -webkit-mask:linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);
          mask:linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);
}
.marquee-track{display:flex; gap:64px; width:max-content; animation:scrollx calc(38s / var(--speed)) linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-item{
  display:flex; align-items:center; gap:12px; flex-shrink:0;
  font-weight:700; font-size:1.25rem; letter-spacing:-.02em;
  color:color-mix(in oklab, var(--navy) 55%, var(--paper));
}
.marquee-item .m-dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
@keyframes scrollx{to{transform:translateX(calc(-50% - 32px))}}

/* ── Feature cards (Konzept/Bau/Pflege) ─────────────────── */
.cards-3{display:grid; grid-template-columns:repeat(3,1fr); gap:22px}
@media (max-width:860px){ .cards-3{grid-template-columns:1fr} }
.fcard{
  position:relative; padding:34px; border-radius:var(--radius);
  background:#fff; border:1px solid var(--line-soft); overflow:hidden;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.fcard::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), color-mix(in oklab,var(--accent) 10%, transparent), transparent 60%);
  opacity:0; transition:opacity .4s var(--ease);
}
.fcard:hover{transform:translateY(-6px); box-shadow:0 30px 60px -34px rgba(21,32,44,.4); border-color:var(--line)}
.fcard:hover::after{opacity:1}
.fcard .num{font-family:'DM Mono',monospace; font-size:.8rem; color:var(--accent); letter-spacing:.1em}
.fcard .fc-ico{
  width:54px;height:54px;border-radius:14px; margin:18px 0 22px;
  display:grid;place-items:center;
  background:color-mix(in oklab,var(--navy) 8%, transparent); color:var(--navy);
  transition:transform .4s var(--ease), background .4s var(--ease), color .4s var(--ease);
}
.fcard:hover .fc-ico{background:var(--accent); color:#fff; transform:rotate(-6deg) scale(1.06)}
.fcard .fc-ico svg{width:26px;height:26px}
.fcard h3{font-size:var(--h3); margin-bottom:12px}
.fcard p{color:var(--muted); font-size:1rem}

/* ── Stats / counters ───────────────────────────────────── */
.stats{
  background:var(--navy); color:var(--paper);
  border-radius:var(--radius-lg);
  padding:clamp(40px,5vw,64px) clamp(28px,4vw,56px);
  display:grid; grid-template-columns:repeat(4,1fr); gap:24px;
  position:relative; overflow:hidden;
}
@media (max-width:860px){ .stats{grid-template-columns:repeat(2,1fr); gap:34px 20px} }
@media (max-width:460px){ .stats{grid-template-columns:1fr} }
.stat{position:relative; z-index:1}
.stat .n{font-size:clamp(2.6rem,4.6vw,3.6rem); font-weight:700; letter-spacing:-.04em; line-height:1; font-variant-numeric:tabular-nums}
.stat .n .suf{color:var(--accent-bright)}
.stat .lbl{margin-top:12px; color:color-mix(in oklab,var(--paper) 72%, var(--navy)); font-size:.96rem}
.stats .grain{position:absolute; inset:0; opacity:.5; background:
  radial-gradient(600px circle at 80% -10%, color-mix(in oklab,var(--accent) 30%, transparent), transparent 55%);
}

/* ── About / local ──────────────────────────────────────── */
.about-grid{display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(36px,5vw,64px); align-items:center}
@media (max-width:860px){ .about-grid{grid-template-columns:1fr} }
.about-photo{
  border-radius:var(--radius); overflow:hidden; position:relative;
  aspect-ratio:4/5; background:var(--paper-dim);
}
.about-card{
  position:absolute; left:18px; bottom:18px; right:18px;
  background:color-mix(in oklab, var(--paper) 86%, transparent);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-radius:14px; padding:16px 18px; border:1px solid var(--line-soft);
  display:flex; align-items:center; gap:14px;
}
.about-card .pin{width:38px;height:38px;border-radius:10px;background:var(--navy);color:var(--paper);display:grid;place-items:center;flex-shrink:0}
.about-card b{display:block; font-size:.98rem}
.about-card small{color:var(--muted-2); font-family:'DM Mono',monospace; font-size:.74rem}
.about h2{font-size:var(--h2)}
.about p{color:var(--muted); margin-top:20px; font-size:1.1rem}
.about .sig{margin-top:26px; font-weight:700; color:var(--navy)}

/* striped placeholder */
.ph{
  background:
    repeating-linear-gradient(135deg, var(--paper-dim) 0 11px, color-mix(in oklab,var(--navy) 6%, var(--paper)) 11px 22px);
  display:grid; place-items:center;
}
.ph .ph-lbl{
  font-family:'DM Mono',monospace; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--muted-2); background:var(--paper); padding:6px 12px; border-radius:999px;
  box-shadow:0 2px 8px rgba(21,32,44,.08);
}

/* ── Pricing ────────────────────────────────────────────── */
.price-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px; align-items:stretch}
@media (max-width:1040px){ .price-grid{grid-template-columns:repeat(2,1fr)} }
@media (max-width:560px){ .price-grid{grid-template-columns:1fr} }
.pcard{
  display:flex; flex-direction:column;
  padding:30px 26px; border-radius:var(--radius);
  background:#fff; border:1px solid var(--line-soft); position:relative;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
}
.pcard:hover{transform:translateY(-6px); box-shadow:0 30px 60px -34px rgba(21,32,44,.34)}
.pcard.featured{background:var(--navy); color:var(--paper); border-color:var(--navy)}
.pcard.featured .p-sub,.pcard.featured .p-feat li{color:color-mix(in oklab,var(--paper) 74%, var(--navy))}
.pcard.featured .p-old{color:color-mix(in oklab,var(--paper) 50%, var(--navy))}
.p-rec{position:absolute; top:-12px; left:26px}
.p-name{font-family:'DM Mono',monospace; font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent)}
.p-sub{color:var(--muted-2); font-size:.92rem; margin-top:6px; min-height:2.6em}
.p-price{display:flex; align-items:baseline; gap:10px; margin:22px 0 4px}
.p-cur{font-family:'DM Mono',monospace; font-size:.9rem; color:var(--muted-2)}
.p-amt{font-size:2.5rem; font-weight:700; letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums}
.p-old{text-decoration:line-through; color:var(--muted-2); font-size:1rem}
.p-pre{font-size:.85rem; color:var(--muted-2)}
.p-feat{list-style:none; padding:0; margin:24px 0; display:flex; flex-direction:column; gap:11px; flex:1}
.p-feat li{display:flex; align-items:flex-start; gap:10px; font-size:.96rem; color:var(--muted)}
.p-feat li svg{width:17px;height:17px;color:var(--accent);flex-shrink:0;margin-top:3px}
.pcard.featured .p-feat li svg{color:var(--accent-bright)}
.pcard .btn{width:100%; justify-content:center}

/* ── Process timeline ───────────────────────────────────── */
.steps{position:relative; display:grid; grid-template-columns:repeat(3,1fr); gap:26px 30px}
@media (max-width:860px){ .steps{grid-template-columns:1fr} }
.step{position:relative; padding-left:0}
.step .s-num{
  font-family:'DM Mono',monospace; font-weight:500; font-size:.95rem;
  width:46px;height:46px;border-radius:50%; display:grid; place-items:center;
  background:#fff; color:var(--navy); border:1.5px solid var(--line);
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease);
}
.step:hover .s-num{background:var(--accent); color:#fff; border-color:var(--accent); transform:scale(1.08)}
.step h3{font-size:1.18rem; margin:18px 0 8px}
.step p{color:var(--muted); font-size:.98rem}
.step .s-line{position:absolute; top:23px; left:46px; right:-30px; height:1.5px; background:var(--line-soft)}
.step .s-line::after{content:""; position:absolute; inset:0; width:0; background:var(--accent); transition:width 1s var(--ease)}
.steps[data-reveal="in"] .step .s-line::after{width:100%}
@media (max-width:860px){ .step .s-line{display:none} }

/* ── Testimonials ───────────────────────────────────────── */
.tslider{position:relative; overflow:hidden}
.ttrack{display:flex; transition:transform .7s var(--ease-out)}
.tslide{min-width:100%; padding:6px}
.tcard{
  background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius-lg);
  padding:clamp(34px,5vw,60px); position:relative;
}
.tcard .quote-mark{font-family:Georgia,serif; font-size:6rem; line-height:.6; color:color-mix(in oklab,var(--accent) 30%, transparent); position:absolute; top:30px; left:34px}
.tcard blockquote{margin:0; font-size:clamp(1.3rem,2.4vw,1.9rem); font-weight:500; letter-spacing:-.02em; line-height:1.35; position:relative; text-wrap:pretty}
.tcard .who{display:flex; align-items:center; gap:14px; margin-top:32px}
.tcard .avatar{width:50px;height:50px;border-radius:50%; flex-shrink:0; background:var(--paper-dim); display:grid; place-items:center; font-weight:700; color:var(--navy); font-size:1.1rem; box-shadow:inset 0 0 0 1px var(--line-soft)}
.tcard .who b{display:block}
.tcard .who small{color:var(--muted-2); font-family:'DM Mono',monospace; font-size:.76rem}
.tnav{display:flex; gap:10px; margin-top:26px; align-items:center}
.tnav button{
  width:46px;height:46px;border-radius:50%; border:1.5px solid var(--line); background:#fff;
  cursor:pointer; display:grid; place-items:center; color:var(--navy);
  transition:background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease);
}
.tnav button:hover{background:var(--navy); color:var(--paper); border-color:var(--navy)}
.tdots{display:flex; gap:8px; margin-left:8px}
.tdots i{width:8px;height:8px;border-radius:50%;background:var(--line);cursor:pointer;transition:width .3s var(--ease), background .3s var(--ease)}
.tdots i.on{width:24px;border-radius:999px;background:var(--accent)}

/* ── Before / After ─────────────────────────────────────── */
.ba{
  position:relative; border-radius:var(--radius); overflow:hidden;
  aspect-ratio:16/10; user-select:none; box-shadow:0 30px 60px -34px rgba(21,32,44,.34);
  border:1px solid var(--line-soft); cursor:ew-resize;
}
.ba-layer{position:absolute; inset:0}
.ba-after{clip-path:inset(0 0 0 var(--split,50%))}
.ba-handle{position:absolute; top:0; bottom:0; left:var(--split,50%); width:3px; background:#fff; box-shadow:0 0 0 1px rgba(21,32,44,.1); z-index:4}
.ba-knob{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:46px;height:46px;border-radius:50%; background:#fff; box-shadow:0 6px 18px rgba(21,32,44,.28); display:grid;place-items:center; color:var(--navy)}
.ba-tag{position:absolute; top:16px; z-index:3; font-family:'DM Mono',monospace; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; padding:6px 12px; border-radius:999px; background:color-mix(in oklab,var(--ink) 60%, transparent); color:#fff; backdrop-filter:blur(6px)}
.ba-tag.l{left:16px} .ba-tag.r{right:16px; background:var(--accent)}

/* mini site renders for before/after */
.site{position:absolute; inset:0; padding:26px 30px; overflow:hidden}
.site-old{background:#eceae3; font-family:'Times New Roman',serif}
.site-old .o-top{display:flex; justify-content:space-between; border-bottom:2px solid #b9b4a6; padding-bottom:10px}
.site-old .o-logo{font-weight:700; color:#5a5448; font-size:1.2rem}
.site-old .o-nav{display:flex; gap:14px; color:#7a7464; font-size:.8rem; align-items:center}
.site-old .o-h{color:#6b6456; font-size:1.5rem; margin:24px 0 10px; font-weight:700}
.site-old .o-txt{height:9px; background:#cfcabc; border-radius:2px; margin:7px 0; width:90%}
.site-old .o-txt.s{width:70%}
.site-old .o-img{height:90px; background:#d8d3c4; border:1px solid #c2bcab; margin-top:16px; display:grid; place-items:center; color:#9a9484; font-size:.74rem}
.site-new{background:#fff}
.site-new .n-top{display:flex; justify-content:space-between; align-items:center}
.site-new .n-logo{font-weight:700; color:var(--navy); letter-spacing:-.02em}
.site-new .n-nav{display:flex; gap:10px}
.site-new .n-nav i{width:30px;height:7px;border-radius:4px;background:var(--paper-dim);display:block}
.site-new .n-pill{width:64px;height:24px;border-radius:999px;background:var(--accent)}
.site-new .n-hero{margin-top:22px; border-radius:12px; background:linear-gradient(120deg,var(--navy),var(--navy-deep)); height:96px; position:relative; overflow:hidden}
.site-new .n-hero b{position:absolute; left:18px; top:20px; color:#fff; font-size:1.1rem; letter-spacing:-.02em}
.site-new .n-hero .nb{position:absolute; left:18px; bottom:16px; width:78px;height:11px;border-radius:6px;background:var(--accent)}
.site-new .n-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:14px}
.site-new .n-cards div{height:46px;border-radius:9px;background:var(--paper-dim);box-shadow:inset 0 0 0 1px var(--line-soft)}

/* ── FAQ ────────────────────────────────────────────────── */
.faq{max-width:840px; margin:0 auto}
.faq-item{border-bottom:1px solid var(--line-soft)}
.faq-q{
  width:100%; text-align:left; background:none; border:0; cursor:pointer;
  font-family:inherit; font-size:1.16rem; font-weight:600; color:var(--navy);
  padding:26px 50px 26px 0; position:relative; letter-spacing:-.01em;
}
.faq-q .pm{position:absolute; right:6px; top:50%; transform:translateY(-50%); width:22px; height:22px}
.faq-q .pm::before,.faq-q .pm::after{content:""; position:absolute; background:var(--accent); border-radius:2px; transition:transform .35s var(--ease)}
.faq-q .pm::before{top:10px; left:0; width:22px; height:2.5px}
.faq-q .pm::after{top:0; left:10px; width:2.5px; height:22px}
.faq-item.open .pm::after{transform:scaleY(0)}
.faq-a{overflow:hidden; height:0; transition:height .4s var(--ease)}
.faq-a-inner{padding:0 50px 28px 0; color:var(--muted); font-size:1.04rem}

/* ── Contact form ───────────────────────────────────────── */
.contact{
  background:var(--navy); color:var(--paper); border-radius:var(--radius-lg);
  padding:clamp(40px,5vw,72px); position:relative; overflow:hidden;
}
.contact .grain{position:absolute; inset:0; background:radial-gradient(700px circle at 90% 110%, color-mix(in oklab,var(--accent) 26%, transparent), transparent 55%); opacity:.6}
.contact-grid{display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(34px,5vw,64px); position:relative; z-index:1}
@media (max-width:860px){ .contact-grid{grid-template-columns:1fr} }
.contact h2{font-size:var(--h2)}
.contact .c-lead{color:color-mix(in oklab,var(--paper) 76%, var(--navy)); margin-top:18px; font-size:1.08rem}
.contact .c-meta{margin-top:34px; display:flex; flex-direction:column; gap:14px; font-family:'DM Mono',monospace; font-size:.84rem}
.contact .c-meta a{display:flex; align-items:center; gap:12px; text-decoration:none; color:color-mix(in oklab,var(--paper) 86%, var(--navy))}
.contact .c-meta a:hover{color:var(--accent-bright)}
.contact .c-meta svg{width:18px;height:18px;color:var(--accent-bright)}
.form{display:grid; grid-template-columns:1fr 1fr; gap:18px}
.field{position:relative; grid-column:span 1}
.field.full{grid-column:1/-1}
.field input,.field select,.field textarea{
  width:100%; appearance:none; font-family:inherit; font-size:1rem;
  background:color-mix(in oklab,var(--paper) 8%, transparent); color:var(--paper);
  border:1.5px solid color-mix(in oklab,var(--paper) 20%, transparent);
  border-radius:12px; padding:20px 16px 8px; outline:none;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.field textarea{min-height:120px; resize:vertical; padding-top:24px}
.field select{padding-top:14px; color:color-mix(in oklab,var(--paper) 86%, var(--navy))}
.field label{
  position:absolute; left:16px; top:16px; pointer-events:none;
  color:color-mix(in oklab,var(--paper) 60%, var(--navy)); font-size:1rem;
  transition:transform .25s var(--ease), font-size .25s var(--ease), color .25s var(--ease);
  transform-origin:left;
}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent-bright); background:color-mix(in oklab,var(--paper) 12%, transparent)}
.field input:focus + label,
.field input.has + label,
.field textarea:focus + label,
.field textarea.has + label,
.field select.has + label{transform:translateY(-11px) scale(.74); color:var(--accent-bright)}
.field.sel label{top:13px}
.form .btn{grid-column:1/-1; justify-content:center; margin-top:6px}
.form-note{grid-column:1/-1; font-size:.82rem; color:color-mix(in oklab,var(--paper) 60%, var(--navy)); text-align:center}
.form-success{
  grid-column:1/-1; display:none; align-items:center; gap:14px;
  background:color-mix(in oklab,var(--accent) 22%, transparent);
  border:1.5px solid var(--accent-bright); border-radius:14px; padding:18px 20px;
  color:var(--paper); font-weight:600;
}
.form-success.show{display:flex; animation:popin .5s var(--ease-out)}
@keyframes popin{from{opacity:0; transform:scale(.94)}to{opacity:1; transform:none}}

/* ── Element gallery ────────────────────────────────────── */
.gallery-intro{text-align:center; max-width:720px; margin:0 auto clamp(44px,5vw,72px)}
.gallery-intro h2{font-size:var(--h2); margin-top:18px}
.gallery-intro .lead{color:var(--muted); font-size:1.18rem; margin-top:20px}
.gal-grid{display:grid; grid-template-columns:repeat(12,1fr); gap:18px}
.gal{
  background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius);
  padding:26px; position:relative; overflow:hidden; min-height:200px;
  display:flex; flex-direction:column;
}
.gal .gal-h{font-family:'DM Mono',monospace; font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted-2); margin-bottom:20px; display:flex; align-items:center; gap:8px}
.gal .gal-h .gd{width:6px;height:6px;border-radius:50%;background:var(--accent)}
.gal-body{flex:1; display:flex; flex-direction:column; gap:14px; justify-content:center}
.col-6{grid-column:span 6} .col-4{grid-column:span 4} .col-3{grid-column:span 3} .col-8{grid-column:span 8} .col-12{grid-column:span 12}
@media (max-width:900px){ .col-6,.col-4,.col-3,.col-8{grid-column:span 6} }
@media (max-width:560px){ .gal-grid{grid-template-columns:1fr} .col-6,.col-4,.col-3,.col-8,.col-12{grid-column:1/-1} }

/* gallery: toggle */
.g-toggle{position:relative; width:54px;height:30px;border:0;border-radius:999px;background:var(--line);cursor:pointer;transition:background .3s var(--ease)}
.g-toggle[data-on="1"]{background:var(--accent)}
.g-toggle i{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(21,32,44,.3);transition:transform .3s var(--ease)}
.g-toggle[data-on="1"] i{transform:translateX(24px)}

/* gallery: tabs */
.g-tabs{display:flex; gap:4px; background:var(--paper-dim); padding:4px; border-radius:12px; position:relative}
.g-tabs button{flex:1; border:0; background:none; font-family:inherit; font-size:.86rem; font-weight:600; color:var(--muted); padding:9px; border-radius:9px; cursor:pointer; position:relative; z-index:1; transition:color .25s var(--ease)}
.g-tabs button.on{color:var(--navy)}
.g-tab-thumb{position:absolute; top:4px; bottom:4px; background:#fff; border-radius:9px; box-shadow:0 2px 6px rgba(21,32,44,.12); transition:left .3s var(--ease), width .3s var(--ease)}
.g-tabpane{font-size:.96rem; color:var(--muted); margin-top:14px; min-height:40px}

/* gallery: progress ring */
.g-ring{display:flex; align-items:center; gap:20px}
.g-ring svg{width:84px;height:84px;transform:rotate(-90deg)}
.g-ring .track{stroke:var(--line); stroke-width:9; fill:none}
.g-ring .bar{stroke:var(--accent); stroke-width:9; fill:none; stroke-linecap:round; transition:stroke-dashoffset 1.1s var(--ease)}
.g-ring .pct{font-size:1.6rem; font-weight:700; letter-spacing:-.03em; font-variant-numeric:tabular-nums}

/* gallery: tilt card */
.g-tilt{
  border-radius:14px; padding:24px; color:#fff; position:relative; overflow:hidden;
  background:linear-gradient(135deg,var(--navy),var(--navy-deep));
  transform-style:preserve-3d; transition:transform .15s var(--ease);
}
.g-tilt .sheen{position:absolute; inset:0; background:radial-gradient(300px circle at var(--gx,50%) var(--gy,50%), rgba(255,255,255,.18), transparent 50%); opacity:0; transition:opacity .3s}
.g-tilt:hover .sheen{opacity:1}
.g-tilt .t-k{font-family:'DM Mono',monospace; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-bright)}
.g-tilt b{display:block; font-size:1.4rem; margin-top:8px; letter-spacing:-.02em}

/* gallery: chips/tags */
.g-chips{display:flex; flex-wrap:wrap; gap:9px}
.g-chip{font-size:.85rem; font-weight:600; padding:8px 15px; border-radius:999px; border:1.5px solid var(--line); background:#fff; color:var(--navy); cursor:pointer; transition:all .25s var(--ease)}
.g-chip:hover{border-color:var(--navy); transform:translateY(-2px)}
.g-chip.on{background:var(--accent); border-color:var(--accent); color:#fff}

/* gallery: input */
.g-input{position:relative}
.g-input input{width:100%; font-family:inherit; font-size:1rem; padding:16px 16px 16px 44px; border-radius:12px; border:1.5px solid var(--line); background:#fff; outline:none; transition:border-color .3s var(--ease), box-shadow .3s var(--ease)}
.g-input input:focus{border-color:var(--accent); box-shadow:0 0 0 4px color-mix(in oklab,var(--accent) 14%, transparent)}
.g-input svg{position:absolute; left:15px; top:50%; transform:translateY(-50%); width:18px;height:18px;color:var(--muted-2)}

/* gallery: stepper / quantity */
.g-step{display:flex; align-items:center; gap:0; width:fit-content; border:1.5px solid var(--line); border-radius:12px; overflow:hidden}
.g-step button{width:46px;height:46px;border:0;background:#fff;font-size:1.4rem;color:var(--navy);cursor:pointer;transition:background .2s var(--ease)}
.g-step button:hover{background:var(--paper-dim)}
.g-step .v{width:60px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums;font-size:1.2rem}

/* gallery: tooltip */
.g-tip{position:relative; display:inline-flex}
.g-tip .t-target{padding:11px 18px;border-radius:999px;background:var(--navy);color:var(--paper);font-weight:600;font-size:.9rem;cursor:help}
.g-tip .t-bub{
  position:absolute; bottom:calc(100% + 12px); left:50%; transform:translateX(-50%) translateY(6px);
  background:var(--ink); color:#fff; font-size:.82rem; padding:9px 13px; border-radius:9px; white-space:nowrap;
  opacity:0; pointer-events:none; transition:opacity .25s var(--ease), transform .25s var(--ease);
}
.g-tip .t-bub::after{content:""; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:6px solid transparent; border-top-color:var(--ink)}
.g-tip:hover .t-bub{opacity:1; transform:translateX(-50%) translateY(0)}

/* gallery: skeleton loader */
.g-skel{display:flex; flex-direction:column; gap:12px}
.g-skel .sk{height:14px; border-radius:7px; background:linear-gradient(90deg,var(--paper-dim) 25%, color-mix(in oklab,var(--navy) 5%, var(--paper)) 37%, var(--paper-dim) 63%); background-size:400% 100%; animation:shimmer calc(1.4s/var(--speed)) ease infinite}
.g-skel .sk.w70{width:70%} .g-skel .sk.w40{width:40%}
.g-skel .sk.big{height:60px;border-radius:12px}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* gallery: magnetic / shine button row */
.g-btnrow{display:flex; flex-wrap:wrap; gap:12px; align-items:center}
.g-shine{position:relative; overflow:hidden}
.g-shine::after{content:""; position:absolute; top:0; left:-80%; width:50%; height:100%; background:linear-gradient(110deg, transparent, rgba(255,255,255,.4), transparent); transform:skewX(-18deg); animation:sweep calc(3.4s/var(--speed)) ease-in-out infinite}
@keyframes sweep{0%,60%{left:-80%}100%{left:140%}}

/* gallery: rating stars */
.g-stars{display:flex; gap:4px}
.g-stars button{background:none;border:0;cursor:pointer;padding:0;color:var(--line);transition:color .15s, transform .15s}
.g-stars button svg{width:30px;height:30px;display:block}
.g-stars button.on{color:var(--accent)}
.g-stars button:hover{transform:scale(1.15)}

/* gallery: notification toast trigger */
.g-toast{position:absolute; right:18px; bottom:18px; background:var(--ink); color:#fff; padding:14px 18px; border-radius:12px; display:flex; align-items:center; gap:12px; font-size:.9rem; font-weight:600; box-shadow:0 16px 40px -12px rgba(21,32,44,.5); transform:translateY(150%); opacity:0; transition:transform .5s var(--ease-out), opacity .4s; max-width:calc(100% - 36px)}
.g-toast.show{transform:translateY(0); opacity:1}
.g-toast .tk{width:26px;height:26px;border-radius:50%;background:var(--accent);display:grid;place-items:center;flex-shrink:0}

/* gallery: accordion mini */
.g-acc-item{border-top:1px solid var(--line-soft)}
.g-acc-item:first-child{border-top:0}
.g-acc-q{width:100%;text-align:left;background:none;border:0;cursor:pointer;font-family:inherit;font-weight:600;color:var(--navy);padding:14px 30px 14px 0;position:relative;font-size:.98rem}
.g-acc-q::after{content:"+";position:absolute;right:4px;top:13px;color:var(--accent);font-size:1.3rem;transition:transform .3s var(--ease)}
.g-acc-item.open .g-acc-q::after{transform:rotate(45deg)}
.g-acc-a{height:0;overflow:hidden;transition:height .35s var(--ease)}
.g-acc-a div{padding:0 0 14px;color:var(--muted);font-size:.92rem}

/* ── Footer ─────────────────────────────────────────────── */
.footer{padding:clamp(56px,7vw,90px) 0 40px; border-top:1px solid var(--line-soft)}
.footer-top{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:30px}
@media (max-width:780px){ .footer-top{grid-template-columns:1fr 1fr} }
@media (max-width:460px){ .footer-top{grid-template-columns:1fr} }
.footer h4{font-family:'DM Mono',monospace; font-size:.74rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted-2); margin-bottom:16px; font-weight:500}
.footer ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:10px}
.footer a{text-decoration:none; color:var(--muted); font-size:.96rem; transition:color .2s var(--ease)}
.footer a:hover{color:var(--accent)}
.footer .f-brand{max-width:30ch}
.footer .f-brand p{color:var(--muted); margin-top:14px; font-size:.96rem}
.footer-bottom{margin-top:54px; padding-top:26px; border-top:1px solid var(--line-soft); display:flex; justify-content:space-between; gap:18px; flex-wrap:wrap; color:var(--muted-2); font-size:.84rem; font-family:'DM Mono',monospace}

/* ── Section intro micro-label ──────────────────────────── */
.center-head{text-align:center}
.center-head .eyebrow{justify-content:center}
.center-head .eyebrow::before{display:none}

/* scroll cue */
.scrollcue{position:absolute; bottom:30px; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; font-family:'DM Mono',monospace; font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted-2)}
.scrollcue .ln{width:1.5px;height:34px;background:var(--line);position:relative;overflow:hidden}
.scrollcue .ln::after{content:"";position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--accent);animation:scrolldown calc(1.8s/var(--speed)) ease-in-out infinite}
@keyframes scrolldown{0%{top:-100%}60%,100%{top:100%}}
@media (max-width:960px){ .scrollcue{display:none} }
