*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root { --bg:#F2F1ED; --ink:#0C0B09; --blue:#0058AA; --mid:#6B6A64; --border:rgba(12,11,9,0.13); --white:#FFFFFF; --ff:'DM Sans',Helvetica,sans-serif; --fm:'DM Mono','Courier New',monospace; }
html { scroll-behavior:smooth; }
body { background:var(--bg); color:var(--ink); font-family:var(--ff); font-size:16px; line-height:1.6; overflow-x:hidden; }
p { font-size:16px; line-height:1.75; }
h1,h2,h3,h4,h5,h6 { font-family:var(--ff); }
img { max-width:100%; display:block; }

/* NAV */
nav { position:fixed; top:0; left:0; right:0; z-index:200; display:flex; align-items:center; justify-content:space-between; padding:20px 80px; background:#fff; border-bottom:1px solid var(--border); transition:box-shadow .3s; }
nav.scrolled { box-shadow:0 2px 24px rgba(0,0,0,.06); }
.nav-logo { line-height:0; text-decoration:none; }
.nav-logo img { width:180px; height:68px; object-fit:contain; display:block; }
.nav-links { display:flex; align-items:center; gap:36px; list-style:none; }
.nav-links a { font-family:var(--ff); font-size:15px; color:var(--ink); text-decoration:none; opacity:.55; transition:opacity .2s; }
.nav-links a:hover,.nav-links a.active { opacity:1; }
.nav-links a.active { font-weight:600; color:var(--blue); }
.nav-cta { font-family:var(--ff); font-size:14px; font-weight:600; background:var(--blue); color:#fff; border:2px solid var(--blue); padding:10px 22px; text-decoration:none; border-radius:4px; position:relative; overflow:hidden; z-index:0; transition:color .3s; white-space:nowrap; }
.nav-cta::before { content:''; position:absolute; inset:0; background:#fff; transform:scaleX(0); transform-origin:left; transition:transform .5s cubic-bezier(.16,1,.3,1); z-index:-1; }
.nav-cta:hover::before { transform:scaleX(1); }
.nav-cta:hover { color:var(--blue); }
.nav-mobile-menu { display:none; flex-direction:column; gap:5px; cursor:pointer; padding:10px; background:#fff; border-radius:4px; border:1px solid var(--border); }
.nav-mobile-menu span { display:block; width:22px; height:2px; background:var(--ink); transition:transform .3s ease,opacity .3s ease; transform-origin:center; }
.nav-mobile-menu.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-mobile-menu.open span:nth-child(2) { opacity:0; transform:scaleX(0); }
.nav-mobile-menu.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
.nav-overlay { display:none; position:fixed; inset:0; background:#fff; z-index:300; flex-direction:column; justify-content:center; align-items:center; gap:32px; padding:80px 40px; opacity:0; transform:translateY(-12px); transition:opacity .35s ease,transform .35s cubic-bezier(.16,1,.3,1); }
.nav-overlay.open { display:flex; opacity:1; transform:translateY(0); }
.nav-overlay a { font-family:var(--ff); font-size:28px; font-weight:600; color:var(--ink); text-decoration:none; opacity:0; transform:translateY(16px); transition:opacity .3s ease,transform .3s ease,color .2s; }
.nav-overlay.open a { opacity:1; transform:none; }
.nav-overlay.open a:nth-child(2){transition-delay:.08s}.nav-overlay.open a:nth-child(3){transition-delay:.14s}.nav-overlay.open a:nth-child(4){transition-delay:.20s}.nav-overlay.open a:nth-child(5){transition-delay:.26s}.nav-overlay.open a:nth-child(6){transition-delay:.32s}.nav-overlay.open a:nth-child(7){transition-delay:.38s}
.nav-overlay a:hover { color:var(--blue); }
.nav-overlay .nav-overlay-cta { font-size:16px; background:var(--blue); color:#fff; padding:14px 32px; border-radius:4px; margin-top:16px; }
.nav-overlay-close { position:absolute; top:24px; right:16px; font-size:28px; cursor:pointer; color:var(--ink); background:none; border:none; font-family:var(--ff); width:56px; height:56px; display:flex; align-items:center; justify-content:center; z-index:10; }

/* PAGE HERO */
.page-hero { padding:148px 80px 80px; background:#fff; border-bottom:1px solid var(--border); }
.page-hero-label { font-size:11px; font-weight:500; letter-spacing:.15em; text-transform:uppercase; color:var(--mid); margin-bottom:20px; display:flex; align-items:center; gap:10px; }
.page-hero-label::before { content:''; display:block; width:24px; height:1px; background:var(--mid); }
.page-hero h1 { font-size:clamp(36px,4.5vw,68px); font-weight:700; letter-spacing:-.03em; line-height:1.05; margin-bottom:24px; }
.page-hero h1 em { font-style:normal; color:var(--blue); }
.page-hero .hero-sub { font-size:clamp(16px,1.2vw,20px); color:var(--mid); max-width:600px; line-height:1.65; }

/* LABEL */
.label { font-size:11px; font-weight:500; letter-spacing:.15em; text-transform:uppercase; color:var(--mid); margin-bottom:16px; display:block; }

/* SECTIONS */
.section { padding:80px; }
.section-white { background:#fff; }
.section-light { background:var(--bg); }
.section-dark { background:var(--ink); color:#fff; }
.section-blue { background:var(--blue); color:#fff; }
.section-title { font-size:clamp(22px,2.5vw,36px); font-weight:700; letter-spacing:-.025em; line-height:1.15; margin-bottom:20px; }
.section-sub { font-size:16px; color:var(--mid); line-height:1.75; max-width:600px; margin-bottom:48px; }

/* GRID */
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:3px; }
.grid-2-col { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:start; }
.grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:40px; }

/* PHOTO */
.photo-wrap { overflow:hidden; position:relative; }
.photo-wrap img { width:100%; height:100%; object-fit:cover; transition:transform 6s ease; }
.photo-wrap:hover img { transform:scale(1.03); }
.photo-caption { position:absolute; bottom:0; left:0; right:0; padding:12px 20px; background:linear-gradient(transparent,rgba(0,0,0,.5)); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.6); }

/* CARDS */
.cards-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:3px; }
.feature-card { background:#fff; padding:40px 36px; border-bottom:1px solid var(--border); }
.feature-card .card-num { font-family:var(--fm); font-size:10px; color:var(--mid); margin-bottom:20px; display:block; }
.feature-card .card-title { font-size:20px; font-weight:600; margin-bottom:12px; letter-spacing:-.01em; }
.feature-card .card-body { font-size:15px; color:var(--mid); line-height:1.7; }

/* PROCESS */
.process-list { display:flex; flex-direction:column; }
.process-item { display:grid; grid-template-columns:72px 1fr; gap:32px; padding:32px 0; border-top:1px solid var(--border); align-items:start; }
.process-item:last-child { border-bottom:1px solid var(--border); }
.process-num { font-family:var(--fm); font-size:10px; color:var(--mid); padding-top:4px; }
.process-body .pt { font-size:18px; font-weight:600; margin-bottom:8px; letter-spacing:-.01em; }
.process-body p { font-size:15px; color:var(--mid); }

/* STATS */
.stats-strip { display:grid; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.stats-strip.cols-4 { grid-template-columns:repeat(4,1fr); }
.stats-strip.cols-5 { grid-template-columns:repeat(5,1fr); }
.stat-cell { padding:40px 32px; border-right:1px solid var(--border); }
.stat-cell:last-child { border-right:none; }
.stat-val { font-size:clamp(28px,2.8vw,48px); font-weight:700; letter-spacing:-.04em; color:var(--blue); line-height:1; margin-bottom:8px; }
.stat-desc { font-size:14px; color:var(--mid); line-height:1.45; }

/* SERVICE CARDS */
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--border); }
.service-card-link { padding:48px 36px; border-right:1px solid var(--border); border-bottom:1px solid var(--border); display:flex; flex-direction:column; cursor:pointer; position:relative; overflow:hidden; text-decoration:none; color:var(--ink); background:#fff; transition:background .2s; }
.service-card-link:nth-child(3n) { border-right:none; }
.service-card-link::after { content:''; position:absolute; bottom:0; left:0; width:100%; height:3px; background:var(--blue); transform:scaleX(0); transform-origin:left; transition:transform .3s ease; }
.service-card-link:hover { background:rgba(0,88,170,.02); }
.service-card-link:hover::after { transform:scaleX(1); }
.sc-num { font-family:var(--fm); font-size:10px; color:var(--mid); margin-bottom:24px; }
.sc-title { font-size:20px; font-weight:600; margin-bottom:12px; }
.sc-body { font-size:14px; color:var(--mid); line-height:1.65; flex-grow:1; }
.sc-arrow { margin-top:32px; font-size:18px; opacity:0; transform:translateX(-6px); transition:opacity .2s,transform .2s; }
.service-card-link:hover .sc-arrow { opacity:1; transform:none; }

/* SUB NAV */
.sub-nav { background:#fff; border-bottom:1px solid var(--border); padding:0 80px; display:flex; overflow-x:auto; position:sticky; top:108px; z-index:100; }
.sub-nav a { font-size:14px; font-weight:500; color:var(--mid); text-decoration:none; padding:20px 20px; border-bottom:2px solid transparent; white-space:nowrap; transition:color .2s,border-color .2s; }
.sub-nav a:hover { color:var(--ink); }
.sub-nav a.active { color:var(--blue); border-bottom-color:var(--blue); font-weight:600; }

/* CTA BAND */
.cta-band { background:var(--bg); padding:96px 80px; display:flex; justify-content:space-between; align-items:flex-end; gap:48px; border-top:1px solid var(--border); }
.cta-hl { font-size:clamp(28px,3.5vw,56px); font-weight:600; line-height:1.05; letter-spacing:-.03em; }
.cta-hl em { font-style:normal; color:var(--blue); }

/* BUTTONS */
.btn-p { display:inline-block; background:var(--blue); color:#fff; font-family:var(--ff); font-size:15px; font-weight:600; padding:14px 32px; border-radius:4px; text-decoration:none; border:2px solid var(--blue); position:relative; overflow:hidden; z-index:0; transition:color .3s; }
.btn-p::before { content:''; position:absolute; inset:0; background:#fff; transform:scaleX(0); transform-origin:left; transition:transform .5s cubic-bezier(.16,1,.3,1); z-index:-1; }
.btn-p:hover::before { transform:scaleX(1); }
.btn-p:hover { color:var(--blue); }
.btn-o { display:inline-block; color:var(--blue); font-family:var(--ff); font-size:14px; font-weight:600; padding:12px 28px; border-radius:4px; text-decoration:none; border:2px solid var(--blue); position:relative; overflow:hidden; z-index:0; transition:color .3s; background:transparent; }
.btn-o::before { content:''; position:absolute; inset:0; background:var(--blue); transform:scaleX(0); transform-origin:left; transition:transform .5s cubic-bezier(.16,1,.3,1); z-index:-1; }
.btn-o:hover::before { transform:scaleX(1); }
.btn-o:hover { color:#fff; }

/* FOOTER */
footer { background:#0A0904; color:var(--bg); padding:56px 80px 40px; display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:48px; border-top:1px solid rgba(255,255,255,.06); }
.footer-logo { font-family:var(--ff); font-size:13px; letter-spacing:.22em; font-weight:700; margin-bottom:16px; }
footer p,footer address { font-style:normal; font-size:13px; color:rgba(242,241,237,.45); line-height:1.9; }
footer a { color:rgba(242,241,237,.45); text-decoration:none; transition:color .2s; }
footer a:hover { color:var(--blue); }
.footer-col-title { font-family:var(--ff); font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:rgba(242,241,237,.25); margin-bottom:16px; }
.footer-links { list-style:none; display:flex; flex-direction:column; gap:4px; }
.footer-links a { font-size:13px; }
.footer-bottom { background:#0A0904; padding:20px 80px; border-top:1px solid rgba(255,255,255,.06); display:flex; justify-content:space-between; }
.footer-bottom span { font-family:var(--fm); font-size:9px; color:rgba(242,241,237,.2); letter-spacing:.1em; }

/* REVEAL */
.reveal { opacity:0; transform:translateY(20px); transition:opacity .7s ease,transform .7s ease; }
.reveal.v { opacity:1; transform:none; }
.reveal-1 { transition-delay:.1s; }
.reveal-2 { transition-delay:.2s; }
.reveal-3 { transition-delay:.3s; }

/* CONTACT FORM */
.contact-form { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.form-group { display:flex; flex-direction:column; gap:8px; }
.form-group.full { grid-column:1/3; }
.form-group label { font-size:13px; font-weight:500; letter-spacing:.05em; }
.form-group input, .form-group textarea, .form-group select { font-family:var(--ff); font-size:15px; padding:14px 16px; border:1.5px solid var(--border); background:#fff; color:var(--ink); border-radius:4px; transition:border-color .2s; outline:none; }
.form-group input:focus, .form-group textarea:focus { border-color:var(--blue); }
.form-group textarea { min-height:140px; resize:vertical; }

/* RESPONSIVE */
@media (max-width:1100px) {
  nav { padding:20px 40px; }
  .page-hero,.section,.cta-band { padding-left:40px; padding-right:40px; }
  .sub-nav { padding:0 40px; }
  .footer-bottom { padding:16px 40px; }
  footer { padding:48px 40px 36px; }
  .grid-2-col { gap:48px; }
}
@media (max-width:768px) {
  nav { padding:16px 24px; }
  .nav-links,.nav-cta { display:none; }
  .nav-mobile-menu { display:flex !important; }
  .page-hero { padding:140px 24px 48px; }
  .section { padding:48px 24px; }
  .sub-nav { padding:0 24px; top:80px; }
  .cta-band { padding:64px 24px; flex-direction:column; align-items:flex-start; gap:32px; }
  .grid-2 { grid-template-columns:1fr; }
  .grid-2-col { grid-template-columns:1fr; gap:32px; }
  .grid-3 { grid-template-columns:1fr; gap:24px; }
  .cards-grid { grid-template-columns:1fr; }
  .service-grid { grid-template-columns:1fr 1fr; }
  .service-card-link:nth-child(3n) { border-right:1px solid var(--border); }
  .service-card-link:nth-child(even) { border-right:none; }
  .stats-strip.cols-4,.stats-strip.cols-5 { grid-template-columns:1fr 1fr; }
  .stat-cell { border-right:none; border-bottom:1px solid var(--border); }
  .stat-cell:nth-child(odd) { border-right:1px solid var(--border); }
  footer { grid-template-columns:1fr 1fr; padding:40px 24px 32px; gap:32px; }
  footer > div:first-child { grid-column:1/3; }
  .footer-bottom { padding:16px 24px; flex-direction:column; gap:6px; }
  .contact-form { grid-template-columns:1fr; }
  .form-group.full { grid-column:1; }
}
@media (max-width:480px) {
  .page-hero { padding:130px 20px 40px; }
  .section { padding:40px 20px; }
  .sub-nav { padding:0 16px; }
  .service-grid { grid-template-columns:1fr; }
  .service-card-link:nth-child(even) { border-right:1px solid var(--border); }
  footer { grid-template-columns:1fr; }
  footer > div:first-child { grid-column:1; }
  .footer-bottom { padding:14px 20px; }
  .cta-band { padding:48px 20px; }
}

/* === SCROLL REVEAL ANIMATIONS === */
.curtain {
  clip-path: inset(0 0 100% 0);
  transition: clip-path .85s cubic-bezier(.16,1,.3,1) 600ms;
}
.curtain.v { clip-path: inset(0 0 0% 0); }

.img-curtain {
  overflow: hidden;
  position: relative;
}
.img-curtain img {
  display: block;
  transform: scale(1.06);
  transition: transform .85s cubic-bezier(.16,1,.3,1) 500ms, clip-path .85s cubic-bezier(.16,1,.3,1) 500ms;
  clip-path: inset(0 0 100% 0);
}
.img-curtain.v img {
  clip-path: inset(0 0 0% 0);
  transform: scale(1);
}
