/* Vision IT Solution — shared stylesheet */
/* ============================================
   VISION IT SOLUTION — DESIGN TOKENS
   Palette drawn from the brand mark:
   deep navy → electric blue gradient (the "V"),
   graphite → jet black gradient (the "I/D"),
   scattering cyan pixels (the dissolve motif)
   ============================================ */
:root{
  --navy-950:#050914;
  --navy-900:#081131;
  --navy-800:#0c1c4d;
  --blue-700:#123a9e;
  --blue-600:#1656d1;
  --blue-500:#2f7cf0;
  --blue-400:#4f9bff;
  --cyan-300:#7fd8ff;
  --cyan-200:#b3ecff;
  --ink-900:#0b0d12;
  --ink-800:#15171f;
  --ink-600:#2c2f3a;
  --paper-0:#ffffff;
  --paper-50:#f6f8fc;
  --paper-100:#eef2f9;
  --line:#e1e7f2;
  --line-dark:rgba(255,255,255,0.10);
  --muted:#5c6478;
  --radius:14px;
  --ease:cubic-bezier(.16,.84,.44,1);
  --font-display:'Space Grotesk', sans-serif;
  --font-body:'Inter', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-body);
  background:var(--paper-0);
  color:var(--ink-900);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;}
button{font-family:inherit;border:none;background:none;cursor:pointer;}
::selection{background:var(--blue-500);color:#fff;}

h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.08;letter-spacing:-0.02em;}
.eyebrow{
  font-family:var(--font-mono);
  font-size:12.5px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--blue-600);
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
}
.eyebrow::before{
  content:"";
  width:7px;height:7px;
  background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));
  display:inline-block;
  transform:rotate(45deg);
}
.section{
  padding:130px 0;
  position:relative;
}
.container{
  max-width:1240px;
  margin:0 auto;
  padding:0 40px;
}
.grad-text{
  background:linear-gradient(100deg,var(--blue-700) 0%,var(--blue-500) 45%,var(--cyan-300) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.tag{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.06em;
  padding:5px 12px;
  border:1px solid var(--line);
  border-radius:30px;
  color:var(--muted);
}

/* ---------- Scroll reveal ---------- */
.reveal{opacity:0;transform:translateY(36px);transition:opacity .9s var(--ease), transform .9s var(--ease);}
.reveal.in{opacity:1;transform:translateY(0);}
.reveal-stagger > *{opacity:0;transform:translateY(28px);transition:opacity .7s var(--ease), transform .7s var(--ease);}
.reveal-stagger.in > *{opacity:1;transform:translateY(0);}

/* ---------- Preloader ---------- */
#preloader{
  position:fixed;inset:0;z-index:9999;
  background:var(--navy-950);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .7s ease, visibility .7s ease;
}
#preloader.done{opacity:0;visibility:hidden;pointer-events:none;}
.pre-grid{display:grid;grid-template-columns:repeat(6,10px);grid-template-rows:repeat(6,10px);gap:4px;}
.pre-grid span{
  width:10px;height:10px;
  background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));
  opacity:0;
  animation:pixelIn 1.4s var(--ease) infinite;
}

@keyframes pixelIn{
  0%{opacity:0;transform:scale(.3);}
  40%{opacity:1;transform:scale(1);}
  80%{opacity:1;}
  100%{opacity:0;transform:scale(.3);}
}

/* ---------- Custom cursor (desktop only) ---------- */
.cursor-dot,.cursor-ring{
  position:fixed;top:0;left:0;pointer-events:none;z-index:9998;
  border-radius:50%;transform:translate(-50%,-50%);
  transition:opacity .3s ease;
}
.cursor-dot{width:6px;height:6px;background:var(--blue-500);}
.cursor-ring{width:34px;height:34px;border:1.4px solid rgba(47,124,240,.5);transition:transform .15s var(--ease), opacity .3s ease, width .2s, height .2s;}
.cursor-ring.big{width:56px;height:56px;background:rgba(47,124,240,.08);}
@media (hover:none), (pointer:coarse){.cursor-dot,.cursor-ring{display:none;}}

/* ---------- Progress bar ---------- */
#progress{
  position:fixed;top:0;left:0;height:3px;
  background:linear-gradient(90deg,var(--blue-600),var(--cyan-300));
  z-index:9997;width:0%;
}

/* ---------- Header ---------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:900;
  padding:22px 0;
  transition:background .4s var(--ease), padding .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
header.scrolled{
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(14px) saturate(160%);
  -webkit-backdrop-filter:blur(14px) saturate(160%);
  padding:14px 0;
  border-bottom:1px solid var(--line);
  box-shadow:0 8px 30px -14px rgba(10,25,70,.15);
}
nav.container{display:flex;align-items:center;justify-content:space-between;}
.brand{display:flex;align-items:center;gap:12px;}
.brand img{width:42px;height:42px;border-radius:10px;}
.brand-name{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.01em;}
.brand-name span{display:block;font-family:var(--font-mono);font-size:10px;font-weight:400;letter-spacing:.18em;color:var(--muted);text-transform:uppercase;margin-top:1px;}
.nav-links{display:flex;align-items:center;gap:36px;}
.nav-links a{
  font-size:14.5px;font-weight:500;color:var(--ink-800);
  position:relative;padding:4px 0;
}
.nav-links a::after{
  content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;
  background:linear-gradient(90deg,var(--blue-600),var(--cyan-300));
  transition:width .35s var(--ease);
}
.nav-links a:hover::after,.nav-links a.active::after{width:100%;}
.nav-links a.active{color:var(--blue-700);}
.nav-cta{display:flex;align-items:center;gap:22px;}
.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;z-index:950;}
.hamburger span{width:24px;height:2px;background:var(--ink-900);transition:.3s var(--ease);}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:10px;
  padding:14px 28px;border-radius:999px;
  font-size:14.5px;font-weight:600;
  overflow:hidden;isolation:isolate;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.btn-primary{
  background:linear-gradient(120deg,var(--blue-700),var(--blue-500));
  color:#fff;
  box-shadow:0 14px 30px -12px rgba(22,86,209,.55);
}
.btn-primary::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(120deg,var(--blue-500),var(--cyan-300));
  opacity:0;transition:opacity .35s var(--ease);
}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 20px 38px -12px rgba(22,86,209,.65);}
.btn-primary:hover::before{opacity:1;}
.btn-primary span{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;}
.btn-ghost{
  border:1.4px solid var(--line);
  color:var(--ink-900);
  background:rgba(255,255,255,.5);
}
.btn-ghost:hover{border-color:var(--blue-500);color:var(--blue-700);transform:translateY(-3px);}
.btn-light{border:1.4px solid var(--line-dark);color:#fff;}
.btn-light:hover{background:#fff;color:var(--navy-900);transform:translateY(-3px);}
.btn .arrow{transition:transform .35s var(--ease);}
.btn:hover .arrow{transform:translateX(5px);}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);transform:scale(0);animation:rip .65s ease-out;pointer-events:none;}
@keyframes rip{to{transform:scale(3.2);opacity:0;}}

/* ---------- Hero (final office-tour reveal overlay) ---------- */
.tour-hero-overlay{
  position:absolute;inset:0;z-index:4;
  display:flex;align-items:center;
  padding-top:120px;
  opacity:0;pointer-events:none;
  transition:opacity .3s linear;
}
.tour-hero-overlay.show{opacity:1;pointer-events:auto;}
#particles{position:absolute;inset:0;z-index:2;opacity:.6;pointer-events:none;}
.hero-glow{
  position:absolute;width:900px;height:900px;border-radius:50%;
  background:radial-gradient(circle, rgba(47,124,240,.28), transparent 65%);
  top:-320px;right:-260px;z-index:0;pointer-events:none;
  animation:float 10s ease-in-out infinite;
}
@keyframes float{0%,100%{transform:translateY(0) scale(1);}50%{transform:translateY(30px) scale(1.05);}}
.hero-inner{position:relative;z-index:2;color:#fff;max-width:820px;}
.tour-hero-overlay .eyebrow{color:var(--cyan-300);}
.tour-hero-overlay .eyebrow::before{background:linear-gradient(135deg,var(--cyan-300),#fff);}
.tour-hero-overlay h1{
  font-size:clamp(36px,5.4vw,68px);
  color:#fff;margin-bottom:24px;
}
.tour-hero-overlay h1 .grad-text{background:linear-gradient(100deg,var(--blue-400) 0%,var(--cyan-300) 50%,#fff 100%);-webkit-background-clip:text;background-clip:text;}
.tour-hero-overlay p.lead{
  font-size:17px;line-height:1.7;color:rgba(255,255,255,.72);
  max-width:600px;margin-bottom:36px;
}
.pillar-strip{display:flex;align-items:center;gap:14px;margin-bottom:30px;font-family:var(--font-mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-200);}
.pillar-strip i{width:14px;height:1px;background:rgba(255,255,255,.3);display:inline-block;}
.world-badge{display:inline-flex;align-items:center;gap:10px;padding:10px 20px 10px 14px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid var(--line-dark);color:rgba(255,255,255,.75);font-size:13px;margin-bottom:40px;}
.world-badge svg{width:16px;stroke:var(--cyan-300);flex-shrink:0;}
.hero-actions{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:36px;}
.hero-stats{display:flex;gap:0;flex-wrap:wrap;border-top:1px solid var(--line-dark);padding-top:28px;}
.hstat{padding-right:48px;margin-right:48px;border-right:1px solid var(--line-dark);}
.hstat:last-child{border-right:none;}
.hstat b{font-family:var(--font-display);font-size:32px;font-weight:700;color:#fff;display:block;}
.hstat span{font-size:13px;color:rgba(255,255,255,.55);}
.scroll-cue{
  position:absolute;bottom:36px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:10px;
  color:rgba(255,255,255,.5);font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;
  z-index:2;
}
.scroll-cue .line{width:1px;height:34px;background:rgba(255,255,255,.35);position:relative;overflow:hidden;}
.scroll-cue .line::after{content:"";position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--cyan-300);animation:scrollLine 1.8s ease-in-out infinite;}
@keyframes scrollLine{0%{top:-100%;}50%{top:0;}100%{top:100%;}}

/* ---------- Office Tour (isometric scroll-driven camera) ---------- */
.office-tour{position:relative;}
.tour-pin{position:relative;height:100vh;width:100%;overflow:hidden;background:var(--navy-950);}
#isoScene{position:absolute;inset:0;width:100%;height:100%;z-index:1;}
.tour-hint{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;color:rgba(255,255,255,.6);font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;transition:opacity .5s ease;z-index:6;text-align:center;}
.tour-hint-arrow{animation:bounceDown 1.6s ease-in-out infinite;font-size:15px;}
@keyframes bounceDown{0%,100%{transform:translateY(0);}50%{transform:translateY(8px);}}
.tour-hint.hide{opacity:0;pointer-events:none;}
.tour-label{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);font-family:var(--font-display);font-size:14.5px;font-weight:600;color:#fff;background:rgba(8,17,49,.65);backdrop-filter:blur(8px);border:1px solid var(--line-dark);padding:10px 22px;border-radius:999px;opacity:0;transition:opacity .4s ease;z-index:6;}
.tour-label.show{opacity:1;}
.tour-dots{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);display:flex;gap:10px;z-index:6;}
.tour-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.25);transition:.35s var(--ease);}
.tour-dot.active{background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));width:26px;border-radius:5px;}

/* ---------- Marquee ---------- */
.marquee-wrap{background:var(--ink-900);padding:22px 0;overflow:hidden;border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);}
.marquee{display:flex;gap:60px;white-space:nowrap;animation:marquee 28s linear infinite;width:max-content;}
.marquee span{font-family:var(--font-mono);font-size:13px;letter-spacing:.1em;color:rgba(255,255,255,.55);text-transform:uppercase;display:flex;align-items:center;gap:14px;}
.marquee span::after{content:"◆";color:var(--blue-500);font-size:9px;}
@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* ---------- Section headers ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:64px;flex-wrap:wrap;}
.sec-head h2{font-size:clamp(30px,4vw,48px);max-width:620px;}
.sec-head p{color:var(--muted);max-width:380px;font-size:15.5px;line-height:1.7;}

/* ---------- About ---------- */
.about-grid{display:grid;grid-template-columns:0.9fr 1.1fr;gap:80px;align-items:center;}
.about-visual{position:relative;border-radius:24px;overflow:hidden;background:linear-gradient(160deg,var(--navy-900),var(--navy-950));aspect-ratio:1/1.05;display:flex;align-items:center;justify-content:center;}
.about-visual .core-logo{width:52%;filter:drop-shadow(0 20px 40px rgba(22,86,209,.4));animation:spinSlow 22s linear infinite;}
@keyframes spinSlow{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
.about-visual::before{content:"";position:absolute;inset:0;background:
  radial-gradient(circle at 20% 20%, rgba(127,216,255,.18), transparent 40%),
  radial-gradient(circle at 80% 80%, rgba(47,124,240,.25), transparent 45%);}
.value-list{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:38px;}
.value-item{padding:22px 18px;border:1px solid var(--line);border-radius:var(--radius);transition:.4s var(--ease);}
.value-item:hover{border-color:var(--blue-400);transform:translateY(-4px);box-shadow:0 20px 40px -24px rgba(22,86,209,.3);}
.value-icon{width:38px;height:38px;border-radius:50%;border:1.6px solid var(--blue-500);display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
.value-icon svg{width:18px;stroke:var(--blue-600);}
.value-item b{font-family:var(--font-display);display:block;margin-bottom:4px;font-size:15.5px;}
.value-item p{font-size:12.5px;color:var(--muted);line-height:1.6;}

/* Timeline */
.timeline{margin-top:110px;position:relative;}
.timeline::before{content:"";position:absolute;left:0;right:0;top:11px;height:1px;background:var(--line);}
.timeline-row{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.t-item{position:relative;padding-top:34px;}
.t-item::before{content:"";position:absolute;top:0;left:0;width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));box-shadow:0 0 0 5px #fff;}
.t-item .yr{font-family:var(--font-mono);color:var(--blue-600);font-size:13px;margin-bottom:8px;display:block;}
.t-item h4{font-size:16px;margin-bottom:6px;}
.t-item p{font-size:13.5px;color:var(--muted);line-height:1.6;}

/* ---------- Services ---------- */
.services-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:20px;overflow:hidden;}
.s-card{background:#fff;padding:38px 30px;position:relative;transition:background .4s var(--ease);cursor:pointer;}
.s-card::before{content:"";position:absolute;inset:0;opacity:0;background:linear-gradient(160deg,var(--navy-900),var(--navy-950));transition:opacity .45s var(--ease);z-index:0;}
.s-card:hover::before{opacity:1;}
.s-card > *{position:relative;z-index:1;}
.s-num{font-family:var(--font-mono);font-size:12px;color:var(--muted);transition:color .4s;}
.s-icon{width:44px;height:44px;margin:22px 0 20px;border-radius:12px;background:linear-gradient(135deg,var(--blue-600),var(--blue-400));display:flex;align-items:center;justify-content:center;transition:transform .4s var(--ease);}
.s-card:hover .s-icon{transform:rotate(-8deg) scale(1.08);}
.s-icon svg{width:22px;height:22px;stroke:#fff;}
.s-card h3{font-size:18px;margin-bottom:10px;transition:color .4s;}
.s-card p{font-size:13.5px;line-height:1.65;color:var(--muted);transition:color .4s;}
.s-card:hover h3, .s-card:hover .s-num{color:#fff;}
.s-card:hover p{color:rgba(255,255,255,.65);}
.s-card .s-more{margin-top:18px;font-size:12.5px;font-family:var(--font-mono);color:var(--blue-600);display:flex;align-items:center;gap:6px;opacity:0;transform:translateY(6px);transition:.4s var(--ease);}
.s-card:hover .s-more{opacity:1;transform:translateY(0);color:var(--cyan-300);}

/* ---------- Process ---------- */
.process-wrap{background:var(--paper-50);}
.process-row{display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;}
.p-step{padding:0 24px 0 0;position:relative;}
.p-step:not(:last-child)::after{content:"";position:absolute;top:26px;right:-2px;width:100%;height:1px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 12px);}
.p-step .p-num{font-family:var(--font-display);font-size:40px;font-weight:700;color:transparent;-webkit-text-stroke:1.4px var(--blue-500);display:block;margin-bottom:18px;}
.p-step h4{font-size:15.5px;margin-bottom:8px;}
.p-step p{font-size:13px;color:var(--muted);line-height:1.6;}

/* ---------- Portfolio ---------- */
.filter-row{display:flex;gap:10px;margin-bottom:44px;flex-wrap:wrap;}
.filter-btn{padding:9px 20px;border:1px solid var(--line);border-radius:999px;font-size:13px;font-weight:500;transition:.35s var(--ease);}
.filter-btn.active,.filter-btn:hover{background:var(--ink-900);color:#fff;border-color:var(--ink-900);}
.folio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.folio-card{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#fff;transition:transform .5s var(--ease), box-shadow .5s var(--ease);perspective:1000px;}
.folio-card:hover{box-shadow:0 30px 60px -30px rgba(10,25,70,.35);}
.folio-media{aspect-ratio:4/3;position:relative;overflow:hidden;background:linear-gradient(135deg,var(--navy-800),var(--navy-950));display:flex;align-items:center;justify-content:center;}
.folio-media .fg{font-family:var(--font-display);font-size:15px;color:rgba(255,255,255,.35);letter-spacing:.04em;}
.folio-media::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg, rgba(47,124,240,.25), rgba(127,216,255,.12));opacity:0;transition:opacity .45s var(--ease);}
.folio-card:hover .folio-media::after{opacity:1;}
.folio-body{padding:24px 26px 28px;}
.folio-tag{font-family:var(--font-mono);font-size:11px;color:var(--blue-600);letter-spacing:.08em;text-transform:uppercase;}
.folio-body h3{font-size:19px;margin:8px 0 8px;}
.folio-body p{font-size:13.5px;color:var(--muted);line-height:1.6;}
.folio-link{margin-top:16px;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink-900);}
.folio-link svg{width:14px;transition:transform .35s var(--ease);}
.folio-card:hover .folio-link svg{transform:translate(3px,-3px);}

/* ---------- Team ---------- */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;}
.t-card{position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(160deg,var(--navy-900),var(--navy-950));aspect-ratio:3/3.6;display:flex;flex-direction:column;justify-content:flex-end;padding:24px;transition:transform .5s var(--ease);}
.t-card:hover{transform:translateY(-8px);}
.t-avatar{position:absolute;top:26px;left:26px;width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:#08122e;font-size:18px;}
.t-card h4{color:#fff;font-size:17px;margin-bottom:4px;}
.t-card span{color:rgba(255,255,255,.55);font-size:12.5px;font-family:var(--font-mono);}
.t-social{display:flex;gap:10px;margin-top:14px;opacity:0;transform:translateY(8px);transition:.4s var(--ease);}
.t-card:hover .t-social{opacity:1;transform:translateY(0);}
.t-social a{width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;transition:.3s;}
.t-social a:hover{background:#fff;}
.t-social a svg{width:13px;stroke:#fff;transition:.3s;}
.t-social a:hover svg{stroke:var(--navy-900);}

/* ---------- Testimonials ---------- */
.testi-wrap{background:var(--navy-950);color:#fff;position:relative;overflow:hidden;}
.testi-track-outer{overflow:hidden;}
.testi-track{display:flex;gap:26px;transition:transform .6s var(--ease);}
.testi-card{min-width:calc(33.333% - 18px);background:rgba(255,255,255,.04);border:1px solid var(--line-dark);border-radius:18px;padding:34px;backdrop-filter:blur(6px);}
.testi-quote{font-size:15px;line-height:1.75;color:rgba(255,255,255,.85);margin-bottom:26px;min-height:130px;}
.testi-person{display:flex;align-items:center;gap:12px;}
.testi-avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--blue-500),var(--cyan-300));display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:#08122e;font-size:14px;}
.testi-person b{display:block;font-size:14px;}
.testi-person span{font-size:12px;color:rgba(255,255,255,.5);}
.testi-nav{display:flex;gap:14px;margin-top:44px;}
.testi-nav button{width:44px;height:44px;border-radius:50%;border:1px solid var(--line-dark);display:flex;align-items:center;justify-content:center;transition:.3s;}
.testi-nav button:hover{background:#fff;}
.testi-nav button svg{stroke:#fff;transition:.3s;width:16px;}
.testi-nav button:hover svg{stroke:var(--navy-900);}

/* ---------- Blog ---------- */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.blog-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:transform .45s var(--ease), box-shadow .45s var(--ease);}
.blog-card:hover{transform:translateY(-6px);box-shadow:0 26px 50px -28px rgba(10,25,70,.3);}
.blog-cover{aspect-ratio:16/10;background:linear-gradient(135deg,var(--paper-100),var(--paper-50));position:relative;display:flex;align-items:center;justify-content:center;}
.blog-cover .pxl{position:absolute;width:8px;height:8px;background:var(--blue-400);opacity:.5;}
.blog-body{padding:24px;}
.blog-meta{font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.06em;margin-bottom:12px;text-transform:uppercase;}
.blog-body h3{font-size:17px;line-height:1.4;margin-bottom:10px;}
.blog-body p{font-size:13.5px;color:var(--muted);line-height:1.6;}

/* ---------- CTA band ---------- */
.cta-band{
  position:relative;border-radius:28px;overflow:hidden;
  background:radial-gradient(120% 140% at 15% 0%, var(--blue-700) 0%, var(--navy-950) 60%);
  padding:90px 70px;color:#fff;text-align:center;
  margin:0 40px;
}
.cta-band h2{font-size:clamp(28px,4vw,46px);margin-bottom:20px;}
.cta-band p{color:rgba(255,255,255,.7);max-width:520px;margin:0 auto 40px;font-size:16px;}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:70px;}
.info-card{padding:26px 0;border-top:1px solid var(--line);display:flex;gap:18px;align-items:flex-start;}
.info-card:last-child{border-bottom:1px solid var(--line);}
.info-icon{width:40px;height:40px;border-radius:10px;background:var(--paper-100);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.info-icon svg{width:18px;stroke:var(--blue-600);}
.info-card b{display:block;font-size:14.5px;margin-bottom:4px;}
.info-card span{font-size:13.5px;color:var(--muted);}
.form-wrap{background:var(--paper-50);border:1px solid var(--line);border-radius:22px;padding:44px;}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
.f-group{display:flex;flex-direction:column;gap:8px;}
.f-group label{font-size:12.5px;font-weight:600;color:var(--ink-800);}
.f-group input,.f-group select,.f-group textarea{
  padding:13px 16px;border-radius:10px;border:1.4px solid var(--line);
  font-family:inherit;font-size:14px;background:#fff;transition:.3s;
}
.f-group input:focus,.f-group select:focus,.f-group textarea:focus{outline:none;border-color:var(--blue-500);box-shadow:0 0 0 4px rgba(47,124,240,.12);}
.f-group textarea{resize:vertical;min-height:120px;}
#formStatus{font-size:13.5px;margin-top:14px;min-height:18px;}
#formStatus.ok{color:#12805c;}
#formStatus.err{color:#c23434;}

/* ---------- Footer ---------- */
footer{background:var(--ink-900);color:#fff;padding:90px 0 30px;}
.foot-grid{display:grid;grid-template-columns:1.4fr 0.8fr 0.8fr 1fr;gap:50px;padding-bottom:70px;border-bottom:1px solid var(--line-dark);}
.foot-brand .brand-name{color:#fff;}
.foot-brand p{color:rgba(255,255,255,.55);font-size:13.5px;line-height:1.7;margin-top:18px;max-width:280px;}
.foot-col h5{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.45);margin-bottom:20px;}
.foot-col a{display:block;font-size:14px;color:rgba(255,255,255,.72);margin-bottom:13px;transition:.3s;}
.foot-col a:hover{color:var(--cyan-300);padding-left:4px;}
.foot-social{display:flex;gap:10px;margin-top:22px;}
.foot-social a{width:36px;height:36px;border-radius:50%;border:1px solid var(--line-dark);display:flex;align-items:center;justify-content:center;}
.foot-social a:hover{background:var(--blue-500);border-color:var(--blue-500);}
.foot-social svg{width:15px;stroke:#fff;}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:28px;font-size:12.5px;color:rgba(255,255,255,.4);flex-wrap:wrap;gap:12px;}
.back-top{width:42px;height:42px;border-radius:50%;border:1px solid var(--line-dark);display:flex;align-items:center;justify-content:center;transition:.3s;}
.back-top:hover{background:var(--blue-500);border-color:var(--blue-500);}
.back-top svg{width:15px;stroke:#fff;}

/* ---------- Utilities ---------- */
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:26px;}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .tour-pin{height:100vh;}
  .tour-hint,.tour-dots,.tour-label{display:none;}
  .tour-hero-overlay{padding-top:100px;}
}
@media (max-width:1024px){
  .services-grid{grid-template-columns:repeat(3,1fr);}
  .value-list{grid-template-columns:repeat(3,1fr);}
  .team-grid{grid-template-columns:repeat(2,1fr);}
  .folio-grid{grid-template-columns:repeat(2,1fr);}
  .blog-grid{grid-template-columns:repeat(2,1fr);}
  .about-grid{grid-template-columns:1fr;}
  .timeline-row{grid-template-columns:repeat(2,1fr);row-gap:40px;}
  .process-row{grid-template-columns:repeat(3,1fr);row-gap:40px;}
  .contact-grid{grid-template-columns:1fr;}
  .foot-grid{grid-template-columns:1fr 1fr;row-gap:40px;}
  .testi-card{min-width:calc(50% - 13px);}
}
@media (max-width:768px){
  .container{padding:0 22px;}
  .section{padding:90px 0;}
  .nav-links,.nav-cta .btn-ghost{display:none;}
  .hamburger{display:flex;}
  .services-grid,.team-grid,.folio-grid,.blog-grid,.grid-4,.grid-2{grid-template-columns:1fr;}
  .value-list{grid-template-columns:1fr;}
  .timeline-row,.process-row{grid-template-columns:1fr;}
  .timeline::before{display:none;}
  .cta-band{padding:60px 30px;margin:0 20px;}
  .foot-grid{grid-template-columns:1fr;}
  .f-row{grid-template-columns:1fr;}
  .testi-card{min-width:100%;}
  .hero-stats{gap:20px;}
  .hstat{padding-right:0;margin-right:0;border-right:none;flex-basis:45%;}
}

/* Mobile nav drawer */
.mobile-nav{
  position:fixed;inset:0;background:var(--navy-950);z-index:940;
  display:flex;flex-direction:column;justify-content:center;padding:40px;
  transform:translateX(100%);transition:transform .5s var(--ease);
}
.mobile-nav.open{transform:translateX(0);}
.mobile-nav a{font-family:var(--font-display);font-size:30px;color:#fff;padding:14px 0;border-bottom:1px solid var(--line-dark);}

/* ---------- Page Banner (sub-page hero strip) ---------- */
.page-banner{
  position:relative;color:#fff;padding:172px 0 76px;overflow:hidden;
  background:radial-gradient(120% 140% at 15% 0%, var(--navy-800) 0%, var(--navy-950) 60%);
}
.page-banner::before{
  content:"";position:absolute;width:600px;height:600px;border-radius:50%;
  background:radial-gradient(circle, rgba(47,124,240,.22), transparent 65%);
  top:-260px;right:-180px;pointer-events:none;
}
.page-banner .crumbs{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:16px;position:relative;z-index:1;}
.page-banner .crumbs a{color:rgba(255,255,255,.75);}
.page-banner .crumbs a:hover{color:var(--cyan-300);}
.page-banner h1{position:relative;z-index:1;font-size:clamp(32px,4.6vw,52px);color:#fff;margin-bottom:16px;}
.page-banner p{position:relative;z-index:1;color:rgba(255,255,255,.68);max-width:580px;font-size:15.5px;line-height:1.75;}
