/* ===========================================================================
   VIZIS — Architectural Visualization Studio
   Cinematic gallery system · Bone paper + warm charcoal + blueprint-blue accent
   Display: Bricolage Grotesque · Body: Inter
   =========================================================================== */

:root{
  --paper:    #ECE8E0;   /* warm bone canvas            */
  --paper-2:  #E3DED4;   /* deeper alt sections         */
  --ink:      #14130F;   /* warm near-black             */
  --ink-2:    #1A1916;   /* dark stage panels           */
  --soft:     #34322B;
  --muted:    #6E6A5F;
  --faint:    #9A9588;
  --line:     rgba(20,19,15,.14);
  --line-d:   rgba(236,232,224,.16);
  --accent:   #1F2BD8;   /* blueprint blue — used with restraint */
  --accent-2: #4A56F0;
  --paper-rgb: 236,232,224;

  --ff-d: "Poppins", system-ui, sans-serif;
  --ff-b: "Inter", system-ui, -apple-system, sans-serif;

  --pad: clamp(20px, 5vw, 110px);
  --maxw: 1440px;
  --e: cubic-bezier(.22,.61,.36,1);
  --e2: cubic-bezier(.7,0,.2,1);
}

*{ box-sizing:border-box; margin:0; padding:0 }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth }
body{
  background:var(--paper); color:var(--ink);
  font-family:var(--ff-b); font-size:16px; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; height:auto }
a{ color:inherit; text-decoration:none }
button{ font-family:inherit }
::selection{ background:var(--accent); color:#fff }

/* film grain + vignette over whole page */
body::after{
  content:""; position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.05; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.wrap{ max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad) }

/* ---------- type ---------- */
h1,h2,h3,h4{ font-family:var(--ff-d); font-weight:700; line-height:1.04; letter-spacing:-.02em; writing-mode:horizontal-tb }
.kicker{ font-size:12px; letter-spacing:.26em; text-transform:uppercase; color:var(--accent); font-weight:600 }
.kicker.d{ color:var(--faint) }
.display{ font-size:clamp(2.8rem, 8.5vw, 8.6rem); font-weight:700 }
.h-xl{ font-size:clamp(2.2rem, 5.4vw, 4.6rem); font-weight:700 }
.h-l{ font-size:clamp(2rem, 4.4vw, 3.6rem) }
.lead{ font-size:clamp(1.1rem, 1.7vw, 1.4rem); color:var(--soft); line-height:1.5; font-weight:400 }
.muted{ color:var(--muted) }

/* word-reveal: headline keeps its natural horizontal flow.
   Each WORD is masked individually (overflow:hidden on the word's own
   inline-block wrapper) so the line wraps normally and reads left-to-right,
   while each word still slides up independently on reveal. */
.reveal-words{ display:block }
.r-word{ display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.08em; margin-bottom:-.08em }
.r-word > span{ display:inline-block; transform:translateY(115%); transition:transform .85s var(--e) }
.reveal.in .r-word > span{ transform:none }
.r-word:nth-child(1) > span{ transition-delay:.02s } .r-word:nth-child(2) > span{ transition-delay:.06s }
.r-word:nth-child(3) > span{ transition-delay:.10s } .r-word:nth-child(4) > span{ transition-delay:.14s }
.r-word:nth-child(5) > span{ transition-delay:.18s } .r-word:nth-child(6) > span{ transition-delay:.22s }
.r-word:nth-child(7) > span{ transition-delay:.26s } .r-word:nth-child(8) > span{ transition-delay:.30s }
.r-word:nth-child(n+9) > span{ transition-delay:.34s }

/* fade-up */
.fu{ opacity:0; transform:translateY(30px); transition:opacity 1s var(--e), transform 1s var(--e) }
.fu.in{ opacity:1; transform:none }
.fu.d1{ transition-delay:.1s } .fu.d2{ transition-delay:.2s } .fu.d3{ transition-delay:.3s } .fu.d4{ transition-delay:.4s }

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto }
  *,*::after,*::before{ animation:none!important; transition:none!important }
  .r-word{ transform:none!important } .fu{ opacity:1!important; transform:none!important }
}

/* ===========================================================================
   PRELOADER
   =========================================================================== */
.pre{ position:fixed; inset:0; z-index:200; background:var(--ink); display:grid; place-items:center;
  transition:transform 1s var(--e2); }
.pre.done{ transform:translateY(-100%) }
.pre .mark{ font-family:var(--ff-d); font-weight:800; color:var(--paper); font-size:clamp(2.5rem,8vw,6rem); letter-spacing:-.04em; overflow:hidden }
.pre .mark span{ display:inline-block; transform:translateY(110%); animation:preup .8s var(--e) forwards }
.pre .mark .dot{ color:var(--accent-2) }
.pre .bar{ position:absolute; bottom:0; left:0; height:3px; background:var(--accent-2); width:0; }
.pre.run .bar{ animation:prebar 1.3s var(--e) forwards }
@keyframes preup{ to{ transform:none } }
@keyframes prebar{ to{ width:100% } }

/* ===========================================================================
   NAV
   =========================================================================== */
.nav{ position:fixed; inset:0 0 auto 0; z-index:90; display:flex; align-items:center; justify-content:space-between;
  padding:20px var(--pad); transition:padding .4s var(--e), background .4s, backdrop-filter .4s, border-color .4s, color .4s;
  border-bottom:1px solid transparent; mix-blend-mode:difference; color:#fff }
.nav.solid{ mix-blend-mode:normal; color:var(--ink); background:rgba(var(--paper-rgb),.8); backdrop-filter:blur(16px) saturate(140%);
  border-bottom:1px solid var(--line); padding-block:14px }
.brand{ font-family:var(--ff-d); font-weight:800; font-size:1.45rem; letter-spacing:-.02em; display:flex; align-items:center }
.brand .dot{ color:var(--accent-2) }
.nav.solid .brand .dot{ color:var(--accent) }
.nav-links{ display:flex; gap:36px; align-items:center }
.nav-links a{ font-size:.84rem; letter-spacing:.02em; position:relative; opacity:.85; transition:opacity .25s }
.nav-links a:hover{ opacity:1 }
.nav-links a::after{ content:""; position:absolute; left:0; bottom:-5px; height:1px; width:0; background:currentColor; transition:width .3s var(--e) }
.nav-links a:hover::after{ width:100% }
.nav-cta{ border:1px solid currentColor; border-radius:100px; padding:.6em 1.25em!important; opacity:1!important }
.nav-cta::after{ display:none }
.burger{ display:none; flex-direction:column; gap:6px; background:none; border:0; cursor:pointer; padding:8px; color:inherit }
.burger span{ width:26px; height:2px; background:currentColor; transition:.3s var(--e) }
.burger.x span:nth-child(1){ transform:translateY(8px) rotate(45deg) }
.burger.x span:nth-child(2){ opacity:0 }
.burger.x span:nth-child(3){ transform:translateY(-8px) rotate(-45deg) }

/* mobile menu overlay */
.mob{ position:fixed; inset:0; z-index:80; background:var(--ink); color:var(--paper); display:flex; flex-direction:column;
  justify-content:center; padding:0 var(--pad); transform:translateY(-100%); transition:transform .6s var(--e2); visibility:hidden }
.mob.open{ transform:none; visibility:visible }
.mob a{ font-family:var(--ff-d); font-weight:700; font-size:clamp(2rem,9vw,3.4rem); padding:12px 0; border-bottom:1px solid var(--line-d);
  display:flex; align-items:baseline; gap:14px }
.mob a i{ font-family:var(--ff-b); font-style:normal; font-size:.8rem; color:var(--faint) }
.mob .soc{ display:flex; gap:24px; margin-top:34px; font-family:var(--ff-b); font-size:.9rem }
.mob .soc a{ font-size:.9rem; color:var(--faint); border:0; padding:0 }

/* ===========================================================================
   HERO
   =========================================================================== */
.hero{ position:relative; min-height:100svh; display:flex; align-items:flex-end; overflow:hidden; background:var(--ink) }
.hero-media{ position:absolute; inset:0; z-index:0; will-change:transform }

/* Signature hero transition: each slide wipes in on a diagonal clip-path
   while settling from an over-scaled state, rather than a plain crossfade.
   Outgoing slide holds at full opacity and gently scales down beneath the
   incoming one, so the change reads as one frame being drawn over another. */
.hero-media .slide{
  position:absolute; inset:-6%; background-size:cover; background-position:center;
  opacity:0; z-index:1; transform:scale(1.18);
  clip-path:polygon(0 0, 0 0, 0 100%, 0 100%);
  transition:opacity .1s linear .9s, transform 2.6s var(--e2), clip-path 1.4s var(--e2);
}
.hero-media .slide.on{
  opacity:1; z-index:2; transform:scale(1.04);
  clip-path:polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition:opacity 0s, transform 7s linear, clip-path 1.4s var(--e2);
}
.hero-media .slide.out{ opacity:1; z-index:1; transform:scale(.98); transition:transform 1.4s var(--e2) }
@media (prefers-reduced-motion: reduce){
  .hero-media .slide{ transition:opacity .6s ease; clip-path:none; transform:none }
  .hero-media .slide.on{ transform:none; clip-path:none }
}
.hero::before{ content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(10,9,7,.5), rgba(10,9,7,.15) 40%, rgba(10,9,7,.55) 78%, var(--ink)); }
.hero-in{ position:relative; z-index:2; width:100%; color:var(--paper); padding-bottom:clamp(54px,9vh,120px) }
.hero h1{ margin:.4em 0 .3em }
.hero h1 .r-word{ will-change:transform }
.hero .em{ color:var(--accent-2); font-style:normal }
.hero-row{ display:flex; flex-wrap:wrap; gap:30px 60px; align-items:end; justify-content:space-between }
.hero .lead{ color:#d9d6cd; max-width:42ch }
.hero-cta{ display:flex; gap:16px; flex-wrap:wrap; margin-top:6px }
.btn{ display:inline-flex; align-items:center; gap:.6em; font-size:.9rem; font-weight:500; cursor:pointer; border:0;
  padding:.95em 1.7em; border-radius:100px; transition:transform .3s var(--e), background .3s, color .3s, box-shadow .3s }
.btn-fill{ background:var(--paper); color:var(--ink) }
.btn-fill:hover{ transform:translateY(-3px); box-shadow:0 14px 36px rgba(0,0,0,.3) }
.btn-line{ border:1px solid rgba(255,255,255,.4); color:#fff }
.btn-line:hover{ border-color:#fff; transform:translateY(-3px) }
.btn-accent{ background:var(--accent); color:#fff }
.btn-accent:hover{ transform:translateY(-3px); background:var(--accent-2); box-shadow:0 14px 36px rgba(31,43,216,.32) }
.btn .ar{ transition:transform .3s var(--e) }
.btn:hover .ar{ transform:translateX(4px) }
.hero-scroll{ position:absolute; left:var(--pad); bottom:24px; z-index:2; font-size:11px; letter-spacing:.24em;
  text-transform:uppercase; color:rgba(255,255,255,.7); display:flex; align-items:center; gap:12px }
.hero-scroll .l{ width:54px; height:1px; background:rgba(255,255,255,.3); overflow:hidden; position:relative }
.hero-scroll .l::after{ content:""; position:absolute; inset:0; width:40%; background:var(--accent-2); animation:sweep 2.4s var(--e) infinite }
@keyframes sweep{ 0%{ transform:translateX(-120%) } 100%{ transform:translateX(300%) } }

/* ===========================================================================
   MARQUEE
   =========================================================================== */
.marq{ background:var(--ink); color:var(--paper); padding:24px 0; overflow:hidden; white-space:nowrap; border-block:1px solid var(--line-d) }
.marq .t{ display:inline-flex; gap:46px; animation:marq 34s linear infinite; will-change:transform }
.marq:hover .t{ animation-play-state:paused }
.marq span{ font-family:var(--ff-d); font-weight:600; font-size:clamp(1.3rem,2.6vw,2rem); display:inline-flex; align-items:center; gap:46px; color:var(--paper) }
.marq span::after{ content:"◆"; color:var(--accent-2); font-size:.6em }
@keyframes marq{ to{ transform:translateX(-50%) } }

/* ===========================================================================
   SECTION scaffold
   =========================================================================== */
.sec{ padding-block:clamp(80px,13vh,170px); position:relative; z-index:2 }
.sec.paper2{ background:var(--paper-2) }
.head{ display:flex; flex-wrap:wrap; gap:30px 70px; align-items:end; justify-content:space-between; margin-bottom:clamp(44px,7vh,84px) }
.head .idx{ display:flex; align-items:center; gap:14px; margin-bottom:20px; font-size:12px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted) }
.head .idx::before{ content:""; width:34px; height:1px; background:var(--accent) }
.head .t{ max-width:18ch } .head .d{ max-width:40ch }

/* ===========================================================================
   INTRO statement (kinetic)
   =========================================================================== */
.intro{ text-align:left }
.intro .big{ font-family:var(--ff-d); font-weight:600; font-size:clamp(1.8rem,4.4vw,3.6rem); line-height:1.12; letter-spacing:-.025em; max-width:20ch }
.intro .big em{ color:var(--accent); font-style:normal }
.intro-foot{ display:flex; flex-wrap:wrap; gap:40px 80px; margin-top:60px; align-items:start }
.intro-foot p{ max-width:46ch; color:var(--muted) }

/* ===========================================================================
   SHOWCASE — pinned horizontal scroll (signature)
   =========================================================================== */
.showcase{ background:var(--ink-2); color:var(--paper); position:relative }
.showcase .pin{ position:sticky; top:0; height:100svh; overflow:hidden; display:flex; align-items:center }
.showcase .track{ display:flex; gap:0; height:100%; align-items:center; will-change:transform }
.panel{ flex:0 0 auto; width:min(78vw,1040px); height:78svh; margin-inline:clamp(14px,2.4vw,40px); position:relative;
  border-radius:14px; overflow:hidden; background:#000 }
.panel img{ width:100%; height:100%; object-fit:cover; transform:scale(1.08); transition:transform 1.2s var(--e) }
.panel::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.7)) }
.panel .cap{ position:absolute; left:26px; right:26px; bottom:24px; z-index:2; display:flex; justify-content:space-between; align-items:end; gap:20px }
.panel .cap h3{ font-size:clamp(1.4rem,2.4vw,2.2rem); font-weight:700 }
.panel .cap .n{ font-size:12px; letter-spacing:.16em; color:rgba(255,255,255,.65) }
.panel .cap .tag{ font-size:11px; letter-spacing:.16em; text-transform:uppercase; border:1px solid rgba(255,255,255,.35);
  border-radius:100px; padding:6px 14px; white-space:nowrap }
.showcase .lead-card{ flex:0 0 auto; width:min(60vw,560px); margin-inline:clamp(14px,2.4vw,40px); padding-right:30px }
.showcase .lead-card .h-l{ margin:18px 0 20px }
.sc-progress{ position:absolute; left:var(--pad); right:var(--pad); bottom:30px; height:2px; background:rgba(255,255,255,.16); z-index:4 }
.sc-progress i{ display:block; height:100%; width:0; background:var(--accent-2) }
.sc-hint{ position:absolute; top:84px; right:var(--pad); z-index:4; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.55) }

/* fallback (mobile / reduced motion): horizontal snap scroller */
.showcase.flat .pin{ position:static; height:auto; display:block }
.showcase.flat .track{ transform:none!important; overflow-x:auto; scroll-snap-type:x mandatory; padding:40px var(--pad) 70px; -webkit-overflow-scrolling:touch }
.showcase.flat .panel{ scroll-snap-align:center; height:62svh; width:86vw }
.showcase.flat .lead-card{ width:80vw }
.showcase.flat .sc-progress,.showcase.flat .sc-hint{ display:none }

/* ===========================================================================
   SERVICES — interactive rows + floating image
   =========================================================================== */
.svc{ border-top:1px solid var(--line) }
.svc-row{ display:grid; grid-template-columns:80px 1fr auto; gap:30px; align-items:center; padding:38px 0;
  border-bottom:1px solid var(--line); position:relative; cursor:pointer; transition:padding .45s var(--e) }
.svc-row .no{ font-family:var(--ff-d); font-weight:600; color:var(--muted); font-size:1rem }
.svc-row .name{ font-family:var(--ff-d); font-weight:700; font-size:clamp(1.6rem,3.6vw,3rem); letter-spacing:-.02em; transition:color .35s, transform .45s var(--e) }
.svc-row .go{ font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); transition:.3s }
.svc-row:hover{ padding-inline:18px }
.svc-row:hover .name{ color:var(--accent); transform:translateX(6px) }
.svc-row:hover .go{ color:var(--accent) }
.svc-row .desc{ grid-column:2; color:var(--muted); max-width:60ch; font-size:.95rem; max-height:0; overflow:hidden;
  opacity:0; transition:max-height .5s var(--e), opacity .4s, margin .4s }
.svc-row:hover .desc{ max-height:120px; opacity:1; margin-top:14px }
.svc-float{ position:fixed; width:300px; height:210px; border-radius:12px; overflow:hidden; pointer-events:none; z-index:70;
  opacity:0; transform:translate(-50%,-50%) scale(.85); transition:opacity .35s var(--e), transform .45s var(--e); box-shadow:0 30px 60px rgba(0,0,0,.35) }
.svc-float.show{ opacity:1; transform:translate(-50%,-50%) scale(1) }
.svc-float img{ width:100%; height:100%; object-fit:cover }
@media (hover:none){ .svc-float{ display:none } .svc-row .desc{ max-height:120px; opacity:1; margin-top:12px } }

/* ===========================================================================
   STATS / counters
   =========================================================================== */
.stats{ background:var(--ink); color:var(--paper) }
.stat-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:30px }
.stat .k{ font-family:var(--ff-d); font-weight:700; font-size:clamp(2.6rem,6vw,5rem); line-height:1; letter-spacing:-.03em }
.stat .k .u{ color:var(--accent-2) }
.stat .l{ margin-top:12px; font-size:.85rem; letter-spacing:.08em; text-transform:uppercase; color:var(--faint) }

/* ===========================================================================
   GALLERY grid
   =========================================================================== */
.filters{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:36px }
.filters button{ font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; background:transparent; color:var(--muted);
  border:1px solid var(--line); border-radius:100px; padding:.65em 1.25em; cursor:pointer; transition:.25s }
.filters button:hover{ color:var(--ink); border-color:var(--soft) }
.filters button.on{ background:var(--ink); color:var(--paper); border-color:var(--ink) }
.grid{ columns:3 300px; column-gap:18px }
.tile{ break-inside:avoid; margin-bottom:18px; border-radius:12px; overflow:hidden; cursor:pointer; position:relative; background:var(--paper-2);
  border:1px solid var(--line) }
.tile img{ width:100%; transition:transform .8s var(--e) }
.tile:hover img{ transform:scale(1.06) }
.tile .ov{ position:absolute; inset:0; background:linear-gradient(180deg,transparent 55%,rgba(20,19,15,.78));
  display:flex; align-items:end; padding:18px; opacity:0; transition:opacity .4s }
.tile:hover .ov{ opacity:1 }
.tile .ov span{ color:var(--paper); font-size:11px; letter-spacing:.14em; text-transform:uppercase }
.tile .ov b{ color:var(--accent-2); font-weight:600 }
.tile.hide{ display:none }

/* ===========================================================================
   TESTIMONIALS
   =========================================================================== */
.exp{ background:var(--ink); color:var(--paper) }
.exp .head .idx{ color:var(--faint) }
.exp-track{ display:flex; gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:20px; -webkit-overflow-scrolling:touch }
.exp-track::-webkit-scrollbar{ height:3px } .exp-track::-webkit-scrollbar-thumb{ background:var(--line-d) }
.quote{ flex:0 0 min(86vw,520px); scroll-snap-align:start; background:var(--ink-2); border:1px solid var(--line-d);
  border-radius:14px; padding:38px 34px; display:flex; flex-direction:column; gap:22px }
.quote .mk{ font-family:var(--ff-d); font-size:3rem; line-height:.5; color:var(--accent-2) }
.quote p{ font-size:1.08rem; line-height:1.55; color:#e7e3da }
.quote .by{ margin-top:auto; font-size:.85rem } .quote .by b{ font-family:var(--ff-d); font-weight:700; display:block; font-size:1rem }
.quote .by span{ color:var(--faint) }
.exp-note{ margin-top:22px; font-size:.8rem; color:var(--faint) }

/* ===========================================================================
   CLIENTS strip
   =========================================================================== */
.clients-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1px solid var(--line); border-radius:14px; overflow:hidden }
.client{ padding:34px 20px; text-align:center; border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  font-family:var(--ff-d); font-weight:600; font-size:clamp(1rem,1.8vw,1.4rem); color:var(--muted); transition:.3s }
.client:hover{ color:var(--ink); background:var(--paper) }

/* ===========================================================================
   CTA band
   =========================================================================== */
.cta{ background:var(--ink); color:var(--paper); text-align:center; overflow:hidden; position:relative }
.cta .big{ font-family:var(--ff-d); font-weight:700; font-size:clamp(2.4rem,8vw,7rem); letter-spacing:-.03em; line-height:1.02 }
.cta .big a{ display:inline-block; transition:color .3s } .cta .big a:hover{ color:var(--accent-2) }
.cta p{ color:var(--faint); max-width:50ch; margin:24px auto 36px }

/* ===========================================================================
   FOOTER
   =========================================================================== */
.foot{ background:var(--ink); color:var(--paper); padding:70px var(--pad) 40px; position:relative; z-index:2 }
.foot-in{ max-width:var(--maxw); margin-inline:auto }
.foot-top{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:40px }
.foot .brand{ font-size:2.4rem }
.foot-cols{ display:flex; gap:60px; flex-wrap:wrap }
.foot-col h5{ font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--faint); margin-bottom:16px; font-weight:600 }
.foot-col a{ display:block; color:#cdc8bd; font-size:.92rem; padding:6px 0; transition:.25s }
.foot-col a:hover{ color:var(--paper) }
.foot-bot{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px; margin-top:54px; padding-top:24px;
  border-top:1px solid var(--line-d); font-size:.8rem; color:var(--faint); letter-spacing:.02em }

/* ===========================================================================
   PAGE HERO (about / contact)
   =========================================================================== */
.phero{ position:relative; min-height:64svh; display:flex; align-items:flex-end; overflow:hidden; background:var(--ink); color:var(--paper) }
.phero img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.55;
  transform:scale(1.14); clip-path:inset(0 0 0 0); animation:pheroIn 2.2s var(--e2) forwards }
@keyframes pheroIn{ from{ transform:scale(1.22); filter:saturate(.7) } to{ transform:scale(1.06); filter:saturate(1) } }
@media (prefers-reduced-motion: reduce){ .phero img{ animation:none; transform:scale(1.06) } }
.phero::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(10,9,7,.4),rgba(10,9,7,.2) 50%,var(--ink)) }
.phero .pin-in{ position:relative; z-index:2; padding-bottom:clamp(40px,7vh,90px) }

/* ===========================================================================
   ABOUT page
   =========================================================================== */
.about-lead{ display:grid; grid-template-columns:1.4fr 1fr; gap:clamp(30px,6vw,90px); align-items:start }
.about-lead .big{ font-family:var(--ff-d); font-weight:600; font-size:clamp(1.6rem,3.2vw,2.6rem); line-height:1.16; letter-spacing:-.02em }
.about-lead .big em{ color:var(--accent); font-style:normal }
.about-lead p{ color:var(--muted); margin-top:1.2rem }
.values{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px }
.value{ background:var(--paper); border:1px solid var(--line); border-radius:14px; padding:34px 30px }
.value .n{ font-family:var(--ff-d); font-weight:700; color:var(--accent); font-size:1.1rem; margin-bottom:14px }
.value h3{ font-size:1.3rem; margin-bottom:10px } .value p{ color:var(--muted); font-size:.94rem }
.steps{ counter-reset:s }
.step{ display:grid; grid-template-columns:90px 1fr; gap:26px; padding:32px 0; border-top:1px solid var(--line); align-items:start }
.step .sn{ font-family:var(--ff-d); font-weight:700; font-size:2rem; color:var(--accent) }
.step h4{ font-family:var(--ff-d); font-weight:700; font-size:1.3rem; margin-bottom:8px }
.step p{ color:var(--muted); max-width:60ch }

/* ===========================================================================
   CONTACT page
   =========================================================================== */
.contact-grid{ display:grid; grid-template-columns:1fr 1.2fr; gap:clamp(34px,6vw,90px); align-items:start }
.contact-info .blk{ margin-bottom:34px }
.contact-info .lbl{ font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:8px }
.contact-info .big-link{ font-family:var(--ff-d); font-weight:700; font-size:clamp(1.3rem,2.6vw,2rem); letter-spacing:-.02em; transition:color .25s }
.contact-info a.big-link:hover{ color:var(--accent) }
.contact-info p{ color:var(--soft); line-height:1.7 }
.form .field{ margin-bottom:22px } .form .two{ display:grid; grid-template-columns:1fr 1fr; gap:22px }
.form label{ font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:8px }
.form input,.form select,.form textarea{ width:100%; background:var(--paper); border:1px solid var(--line); border-radius:10px;
  padding:15px 16px; font-family:var(--ff-b); font-size:1rem; color:var(--ink); transition:border-color .25s, box-shadow .25s }
.form input:focus,.form select:focus,.form textarea:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(31,43,216,.12) }
.form input.err,.form textarea.err{ border-color:#c0392b; box-shadow:0 0 0 3px rgba(192,57,43,.12) }
.form textarea{ min-height:150px; resize:vertical }
.form select{ appearance:none; cursor:pointer; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236E6A5F' stroke-width='1.6' fill='none'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 18px center }
.form .errmsg{ color:#c0392b; font-size:.8rem; margin-top:6px; display:none } .form .errmsg.on{ display:block }
.form-status{ display:none; margin-top:18px; padding:16px 18px; border-radius:10px; font-size:.95rem }
.form-status.ok{ display:block; background:rgba(31,43,216,.08); border:1px solid rgba(31,43,216,.3); color:var(--accent) }
.map{ margin-top:0; border-radius:14px; overflow:hidden; border:1px solid var(--line); aspect-ratio:16/7 }
.map iframe{ width:100%; height:100%; border:0; filter:grayscale(.3) contrast(1.05) }

/* ===========================================================================
   LIGHTBOX
   =========================================================================== */
.lb{ position:fixed; inset:0; z-index:120; background:rgba(15,14,11,.96); backdrop-filter:blur(8px); display:flex;
  align-items:center; justify-content:center; opacity:0; visibility:hidden; transition:.35s }
.lb.open{ opacity:1; visibility:visible }
.lb img{ max-width:92vw; max-height:84vh; border-radius:8px; box-shadow:0 30px 90px rgba(0,0,0,.6) }
.lb button{ position:absolute; width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.25); color:#fff; cursor:pointer; font-size:20px; transition:.25s }
.lb button:hover{ background:var(--accent); border-color:var(--accent) }
.lb .x{ top:24px; right:24px } .lb .p{ left:24px; top:50% } .lb .n{ right:24px; top:50% }
.lb .cap{ position:absolute; bottom:24px; left:0; right:0; text-align:center; color:var(--faint); font-size:12px; letter-spacing:.12em }

/* ===========================================================================
   RESPONSIVE
   =========================================================================== */
@media (max-width:1000px){
  .stat-grid{ grid-template-columns:1fr 1fr; gap:40px 24px }
  .about-lead,.contact-grid{ grid-template-columns:1fr }
  .values,.clients-grid{ grid-template-columns:1fr 1fr }
  .form .two{ grid-template-columns:1fr }
}
@media (max-width:760px){
  .nav-links{ display:none } .burger{ display:flex }
  .svc-row{ grid-template-columns:50px 1fr; gap:14px }
  .svc-row .go{ display:none } .svc-row .desc{ grid-column:1 / -1 }
  .grid{ columns:2 150px; column-gap:12px } .tile{ margin-bottom:12px }
  .values,.clients-grid{ grid-template-columns:1fr }
  .step{ grid-template-columns:60px 1fr; gap:16px }
  .foot-top{ flex-direction:column }
}
@media (max-width:430px){ .grid{ columns:1 } .stat-grid{ grid-template-columns:1fr } }
