/* Flow Pointe — global header/footer and Home / About / Contact components.
   Depends on tokens and core components in brand.css */

body{background:var(--navy-deep);}
main.sv{background:#fff;}

/* ---------- Header ---------- */
.fp-header{position:fixed;top:0;left:0;right:0;z-index:200;transition:background .4s var(--ease),box-shadow .4s var(--ease),padding .4s var(--ease);background:transparent;}
.fp-header.is-solid{background:var(--navy);box-shadow:0 1px 0 var(--line-light);}
.fp-header__bar{max-width:1320px;margin:0 auto;padding:14px clamp(20px,4vw,56px);display:flex;align-items:center;justify-content:space-between;gap:24px;transition:padding .4s var(--ease);}
.fp-header.is-solid .fp-header__bar{padding-top:10px;padding-bottom:10px;}
.fp-logo{display:block;line-height:0;}
.fp-logo img{display:block;height:clamp(68px,6.4vw,92px);width:auto;transition:height .4s var(--ease);}
.fp-header.is-solid .fp-logo img{height:clamp(56px,4.8vw,66px);}
.fp-nav{display:flex;align-items:center;gap:clamp(20px,3vw,44px);}
.fp-nav ul{display:flex;gap:clamp(18px,2.4vw,36px);list-style:none;margin:0;padding:0;}
.fp-nav a.link{color:#E8EBEE;font-family:var(--font-head);font-weight:500;font-size:.9rem;position:relative;padding:8px 0;transition:color .3s;}
.fp-nav a.link::after{content:"";position:absolute;left:0;bottom:2px;height:1px;width:100%;background:#fff;transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease);}
.fp-nav a.link:hover,.fp-nav a.link.active{color:#fff;}
.fp-nav a.link:hover::after,.fp-nav a.link.active::after{transform:scaleX(1);}
.fp-phone{color:#fff;font-family:var(--font-head);font-weight:600;font-size:.9rem;white-space:nowrap;}
.fp-nav .btn{padding:13px 22px;}
.fp-toggle{display:none;background:none;border:0;cursor:pointer;width:48px;height:48px;position:relative;z-index:3;}
.fp-toggle span{position:absolute;left:10px;right:10px;height:2px;background:#fff;transition:transform .35s var(--ease),top .35s var(--ease);}
.fp-toggle span:first-child{top:19px;}.fp-toggle span:last-child{top:27px;}
.fp-toggle[aria-expanded="true"] span:first-child{top:23px;transform:rotate(45deg);}
.fp-toggle[aria-expanded="true"] span:last-child{top:23px;transform:rotate(-45deg);}
body.no-scroll{overflow:hidden;}

/* ---------- Footer ---------- */
.fp-footer{background:var(--navy-deep);color:#B8BCC4;padding:clamp(64px,8vw,110px) 0 0;position:relative;overflow:hidden;}
.fp-footer .wrap{padding-bottom:0;}
.fp-footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1.2fr;gap:clamp(32px,5vw,80px);padding-bottom:56px;border-bottom:1px solid var(--line-light);}
.fp-footer .fp-logo img{height:clamp(140px,13vw,180px);}
.fp-footer__phrase{font-family:var(--font-head);font-size:clamp(1.3rem,2vw,1.7rem);color:#fff;line-height:1.25;margin:26px 0 12px;max-width:16em;}
.fp-footer__area{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--steel-blue);}
.fp-footer h4{font-family:var(--font-head);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--steel-blue);margin:0 0 20px;font-weight:600;}
.fp-footer ul{list-style:none;margin:0;padding:0;}
.fp-footer li{margin-bottom:12px;font-size:.95rem;}
.fp-footer a{color:#E8EBEE;transition:color .3s;}
.fp-footer a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px;}
.fp-footer__bottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:24px 0 30px;font-size:.8rem;color:#8A8F9B;}

/* ---------- Shared additions ---------- */
.sv-hero--page{min-height:min(74vh,700px);}
.sv-hero--short{min-height:min(60vh,560px);}
.sv-hero .kicker b{display:block;font-weight:600;color:var(--steel-blue);opacity:.75;margin-top:6px;}
.hero-facts{display:flex;flex-wrap:wrap;gap:12px 34px;margin-top:52px;padding-top:24px;border-top:1px solid var(--line-light);font-family:var(--font-head);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:#C4C9D0;}
.hero-facts span::before{content:"";display:inline-block;width:8px;height:8px;border:1px solid var(--steel-blue);transform:rotate(45deg);margin-right:12px;}
.sv .btn-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px;}

/* Home/About intro: reuse .sv-approach; extra pull */
.sv-approach .statement{font-family:var(--font-head);font-weight:600;color:var(--navy);font-size:clamp(1.15rem,1.8vw,1.45rem);margin-top:30px;padding-left:22px;border-left:3px solid var(--navy);line-height:1.35;}
.sv-approach--big h2{font-size:clamp(1.9rem,3.6vw,3rem);max-width:15em;}

/* Six-card grid (Home) */
@media (min-width:1025px){
  .svc-grid--six .svc:nth-child(1){grid-column:span 7;min-height:460px;}
  .svc-grid--six .svc:nth-child(2){grid-column:span 5;min-height:460px;}
  .svc-grid--six .svc:nth-child(3){grid-column:span 5;min-height:400px;}
  .svc-grid--six .svc:nth-child(4){grid-column:span 7;min-height:400px;}
  .svc-grid--six .svc:nth-child(5){grid-column:span 6;min-height:400px;}
  .svc-grid--six .svc:nth-child(6){grid-column:span 6;min-height:400px;}
  .svc-grid--three .svc:nth-child(n){grid-column:span 4;min-height:480px;}
}
@media (max-width:1024px){.svc-grid--three .svc:nth-child(n){grid-column:span 12;min-height:360px;}}
.section-cta{margin-top:44px;display:flex;justify-content:flex-start;}

/* Differentiator */
.sv-diff{background:var(--graphite);color:#fff;padding:clamp(72px,10vw,140px) 0;}
.sv-diff .cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,96px);align-items:center;}
.sv-diff .figure{min-height:clamp(380px,46vw,640px);}
.sv-diff h2{font-size:clamp(2rem,4.2vw,3.7rem);line-height:1.04;color:#fff;margin-bottom:28px;}
.sv-diff h2 span{display:block;color:var(--steel-blue);}
.sv-diff p{color:#C3CBD1;max-width:540px;}
.chain{display:flex;flex-wrap:wrap;list-style:none;margin:34px 0;padding:0;}
.chain li{font-family:var(--font-head);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;padding:14px 18px;border:1px solid var(--line-light);margin:0 -1px -1px 0;position:relative;}
.chain li:not(:last-child)::after{content:"\2192";position:absolute;right:-9px;top:50%;transform:translateY(-50%);background:var(--graphite);padding:0 2px;color:var(--steel-blue);z-index:2;}
.sv-diff--light{background:var(--concrete);color:var(--graphite);}
.sv-diff--light h2{color:var(--navy);}.sv-diff--light h2 span{color:var(--navy-2);opacity:.6;}
.sv-diff--light p{color:#3B434A;}
.sv-diff--light .chain li{border-color:var(--line);}
.sv-diff--light .chain li:not(:last-child)::after{background:var(--concrete);color:var(--navy);}
.sv-diff .sv-note{margin-top:22px;}

/* Why (numbered blocks) */
.sv-why{background:var(--navy);color:#fff;padding:clamp(72px,10vw,140px) 0;}
.sv-why h2{font-size:clamp(2rem,4vw,3.4rem);line-height:1.06;color:#fff;max-width:14em;margin-bottom:56px;}
.why{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--line-light);}
.why article{grid-column:span 2;padding:38px 30px 44px 30px;border-left:1px solid var(--line-light);border-bottom:1px solid var(--line-light);transition:background .4s var(--ease);}
.why article:nth-child(n+4){grid-column:span 3;}
.why article:nth-child(1),.why article:nth-child(4){border-left:0;padding-left:0;}
.why article:hover{background:rgba(255,255,255,.04);}
.why .n{display:block;font-family:var(--font-head);font-weight:600;font-size:clamp(2.8rem,4.6vw,4.2rem);letter-spacing:-.04em;line-height:1;color:#fff;margin-bottom:26px;}
.why h3{font-size:1.3rem;color:#fff;margin-bottom:12px;}
.why p{margin:0;color:#B9BFC8;max-width:38ch;font-size:.97rem;}

/* Process (light variant) */
.sv-process--light{background:var(--paper);color:var(--graphite);}
.sv-process--light h2{color:var(--navy);}
.sv-process--light .label{color:var(--navy-2);}
.sv-process--light .tl::before{background:var(--line);}
.sv-process--light .tl .n{color:var(--navy);}
.sv-process--light .tl li::before{background:var(--paper);border-color:var(--navy);}
.sv-process--light .tl li:hover::before{background:var(--navy);}
.sv-process--light .tl li:hover .n{color:var(--navy-2);}
.sv-process--light .tl h3{color:var(--navy);}
.sv-process--light .tl p{color:#4A535A;}
.sv-process--light .grid-lines{display:none;}

/* Story (About) */
.sv-story{background:var(--navy);color:#fff;padding:clamp(72px,10vw,140px) 0;}
.sv-story h2{font-size:clamp(2rem,4vw,3.5rem);line-height:1.06;color:#fff;margin-bottom:60px;max-width:14em;}
.sv-story h2 span{display:block;color:var(--steel-blue);}
.story{border-top:1px solid var(--line-light);}
.story .row{display:grid;grid-template-columns:minmax(180px,.36fr) 1fr;gap:clamp(20px,5vw,80px);padding:40px 0;border-bottom:1px solid var(--line-light);position:relative;}
.story .when{font-family:var(--font-head);font-weight:600;font-size:clamp(1.7rem,3.2vw,2.8rem);letter-spacing:-.03em;line-height:1.05;color:#fff;}
.story .when small{display:block;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--steel-blue);margin-bottom:12px;font-weight:600;}
.story h3{font-size:1.2rem;color:#fff;margin-bottom:10px;}
.story p{margin:0;color:#C4C9D0;max-width:62ch;}
.story .row:hover .when{color:var(--steel-blue);}
.story .row .when{transition:color .3s;}

/* Commitment (About) */
.sv-commit{background:#fff;color:var(--graphite);padding:clamp(72px,10vw,140px) 0;}
.sv-commit .head{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,96px);align-items:end;margin-bottom:56px;}
.sv-commit h2{font-size:clamp(2rem,4vw,3.4rem);line-height:1.06;color:var(--navy);}
.sv-commit .head p{margin:0;color:#3B434A;max-width:480px;font-size:1.05rem;}
.commit{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);}
.commit article{padding:34px 30px 38px 0;border-bottom:1px solid var(--line);transition:background .3s;}
.commit article:not(:nth-child(3n+1)){padding-left:30px;border-left:1px solid var(--line);}
.commit article:hover{background:var(--paper);}
.commit small{font-family:var(--font-head);font-size:.72rem;letter-spacing:.2em;color:var(--slate);display:block;margin-bottom:16px;}
.commit h3{font-size:1.3rem;color:var(--navy);margin-bottom:10px;}
.commit p{margin:0;color:#4A535A;font-size:.96rem;}
.statements{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,96px);margin-top:64px;}
.statements p{font-family:var(--font-head);font-weight:600;font-size:clamp(1.3rem,2.3vw,2rem);line-height:1.25;color:var(--navy);margin:0;padding-top:20px;border-top:3px solid var(--navy);letter-spacing:-.02em;}

/* Who we work with */
.sv-who{background:var(--concrete);color:var(--graphite);padding:clamp(72px,10vw,130px) 0;}
.sv-who .head{margin-bottom:52px;max-width:760px;}
.sv-who h2{font-size:clamp(2rem,4vw,3.4rem);line-height:1.06;color:var(--navy);margin-bottom:22px;}
.sv-who h2 span{display:block;color:var(--navy-2);opacity:.6;}
.sv-who .head p{margin:0;color:#2F3A43;font-size:1.05rem;}
.who{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;}
.who article{background:var(--paper);border:1px solid var(--line);padding:30px 24px;min-height:230px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .4s var(--ease),background .3s;}
.who article:hover{transform:translateY(-6px);background:#fff;}
.who svg{width:46px;height:46px;stroke:var(--navy);fill:none;stroke-width:1.5;}
.who h3{font-size:1.1rem;color:var(--navy);}

/* Contact */
.sv-contact{background:var(--paper);padding:clamp(64px,8vw,120px) 0;color:var(--graphite);}
.ct{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(32px,5vw,80px);align-items:start;}
.ct h2{font-size:clamp(1.7rem,3vw,2.4rem);color:var(--navy);margin-bottom:10px;}
.ct .sub{color:#4A535A;margin:0 0 30px;}
.fp-form .row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.fp-form .field{margin-bottom:20px;}
.fp-form label{display:block;font-family:var(--font-head);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--navy);margin-bottom:8px;}
.fp-form input,.fp-form select,.fp-form textarea{width:100%;padding:15px 16px;border:1px solid #B5BCC9;border-radius:2px;background:#fff;font-family:var(--font-body);font-size:1rem;color:var(--graphite);transition:border-color .3s,box-shadow .3s;}
.fp-form input:focus,.fp-form select:focus,.fp-form textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(42,68,99,.30);}
.fp-form textarea{min-height:150px;resize:vertical;}
.fp-form .note{margin:16px 0 0;font-size:.9rem;color:#4A535A;}
.fp-form .hp-field{position:absolute;left:-9999px;height:0;opacity:0;}
.form-msg{padding:18px 22px;margin-bottom:28px;border-left:3px solid var(--navy);background:#fff;font-family:var(--font-head);font-weight:600;color:var(--navy);}
.form-msg--error{border-color:#8A2B2B;color:#8A2B2B;}
.info-card{background:var(--navy);color:#fff;padding:clamp(28px,3vw,44px);position:sticky;top:110px;}
.info-card h3{font-size:1.5rem;color:#fff;margin-bottom:24px;}
.info-card .item{padding:20px 0;border-top:1px solid var(--line-light);}
.info-card .item strong{display:block;font-family:var(--font-head);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--steel-blue);margin-bottom:8px;font-weight:600;}
.info-card a,.info-card .item span{color:#fff;font-size:1.05rem;}
.info-card a:hover{text-decoration:underline;text-underline-offset:4px;}

.sv-area{background:var(--navy);color:#fff;padding:clamp(72px,10vw,130px) 0;}
.sv-area .cols{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,6vw,96px);align-items:center;}
.sv-area h2{font-size:clamp(2rem,4vw,3.4rem);color:#fff;margin-bottom:26px;}
.sv-area p{color:#C4C9D0;max-width:480px;font-size:1.02rem;}
.map-abs{width:100%;height:auto;display:block;border:1px solid var(--line-light);background:var(--navy-deep);}
.map-abs line{stroke:var(--steel-blue);stroke-opacity:.55;stroke-width:1;}
.map-abs circle{fill:var(--navy-deep);stroke:var(--steel-blue);stroke-width:1.5;}
.map-abs circle.hub{fill:#fff;stroke:#fff;}
.map-abs text{font-family:var(--font-head);font-size:11px;letter-spacing:.12em;text-transform:uppercase;fill:#CDD1D8;}

.sv-expect{background:#fff;padding:clamp(64px,8vw,110px) 0;color:var(--graphite);}
.sv-expect .head{max-width:640px;margin-bottom:48px;}
.sv-expect h2{font-size:clamp(1.9rem,3.4vw,2.9rem);color:var(--navy);margin-bottom:18px;}
.sv-expect .head p{margin:0;color:#3B434A;}
.expect{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,44px);}
.expect article{border-top:3px solid var(--navy);padding-top:22px;}
.expect .n{font-family:var(--font-head);font-weight:600;font-size:2.6rem;color:var(--navy);letter-spacing:-.04em;line-height:1;display:block;margin-bottom:18px;}
.expect h3{font-size:1.2rem;color:var(--navy);margin-bottom:8px;}
.expect p{margin:0;color:#4A535A;}

/* Paths: text spacing on cards */
.svc .go--btn{margin-top:4px;}

@media (max-width:1100px){.fp-phone{display:none;}}
@media (max-width:1024px){
  .why{grid-template-columns:1fr 1fr;}
  .why article:nth-child(n){grid-column:span 1;padding-left:26px;border-left:1px solid var(--line-light);}
  .why article:nth-child(odd){border-left:0;padding-left:0;}
  .commit{grid-template-columns:1fr 1fr;}
  .commit article:nth-child(n){padding-left:26px;border-left:1px solid var(--line);}
  .commit article:nth-child(odd){padding-left:0;border-left:0;}
  .who{grid-template-columns:repeat(3,1fr);}
  .ct{grid-template-columns:1fr;}
  .info-card{position:static;}
  .fp-footer__grid{grid-template-columns:1fr 1fr;}
  .fp-footer__grid>div:first-child{grid-column:1/-1;}
}
@media (max-width:900px){
  .fp-toggle{display:block;}
  .fp-nav{position:fixed;inset:0;background:var(--navy-deep);flex-direction:column;align-items:flex-start;justify-content:center;gap:34px;padding:110px clamp(24px,8vw,64px) 48px;opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity .4s var(--ease),transform .4s var(--ease),visibility .4s;overflow-y:auto;}
  .fp-nav.is-open{opacity:1;visibility:visible;transform:none;}
  .fp-nav ul{flex-direction:column;gap:6px;width:100%;}
  .fp-nav a.link{font-size:clamp(1.8rem,7vw,2.6rem);font-family:var(--font-head);font-weight:600;display:block;padding:10px 0;border-bottom:1px solid var(--line-light);}
  .fp-nav a.link::after{display:none;}
  .fp-phone{display:block;font-size:1.1rem;}
  .fp-nav .btn{width:100%;justify-content:space-between;}
  .fp-header.menu-open{background:transparent;box-shadow:none;}
}
@media (max-width:760px){
  .sv-diff .cols,.sv-area .cols,.sv-commit .head,.statements{grid-template-columns:1fr;}
  .why{grid-template-columns:1fr;}
  .why article:nth-child(n){border-left:0;padding-left:0;grid-column:span 1;}
  .commit{grid-template-columns:1fr;}
  .commit article:nth-child(n){border-left:0;padding-left:0;}
  .story .row{grid-template-columns:1fr;gap:14px;}
  .who{grid-template-columns:1fr 1fr;}
  .who article{min-height:190px;}
  .expect{grid-template-columns:1fr;}
  .fp-form .row{grid-template-columns:1fr;}
  .fp-footer__grid{grid-template-columns:1fr;}
  .chain li{padding:12px 14px;font-size:.68rem;}
  .sv-hero .btn-row .btn{width:100%;}
}
@media (max-width:420px){.who{grid-template-columns:1fr;}}

/* Parallax layers need headroom so they never expose the background */
.figure{overflow:hidden;}
.figure .ph[data-parallax],.sv-hero .ph[data-parallax]{top:-10%;bottom:-10%;}
.fp-header .fp-logo{position:relative;z-index:3;}

/* =====================================================================
   REFINEMENT LAYER — proportional type scale, hero sizing, widths, spacing
   ===================================================================== */
:root{
  --fs-hero:clamp(2.8rem,5vw,5.2rem);
  --fs-page-title:clamp(2.4rem,4vw,4.5rem);
  --fs-section-title:clamp(2rem,3vw,3.4rem);
  --fs-statement:clamp(2.2rem,3.5vw,4rem);
  --fs-card-title:clamp(1.25rem,1.6vw,1.8rem);
  --fs-card-sm:clamp(1.1rem,1.3vw,1.4rem);
  --fs-number:clamp(2.5rem,5vw,5rem);
  --fs-body:clamp(1rem,1.2vw,1.15rem);
  --fs-body-sm:clamp(.95rem,1vw,1.05rem);
  --fs-label:clamp(.7rem,.8vw,.85rem);
  --fs-nav:clamp(.8rem,.9vw,.95rem);
  --fs-btn:clamp(.85rem,.9vw,.95rem);
  --space-section:clamp(4rem,8vw,9rem);
  --space-content:clamp(2rem,4vw,5rem);
  --gutter:clamp(1.25rem,5vw,5rem);
}

/* Container: identical margins for header, sections, footer */
.sv .wrap{max-width:1360px;margin-inline:auto;padding-inline:var(--gutter);}
.fp-header__bar{max-width:1360px;padding-inline:var(--gutter);}

/* Type */
.sv .label{font-size:var(--fs-label);margin-bottom:1.25rem;}
.sv .btn{font-size:var(--fs-btn);}
.fp-nav a.link{font-size:var(--fs-nav);}
.fp-phone{font-size:var(--fs-nav);}
.sv-hero h1{font-size:var(--fs-page-title);line-height:1.04;margin-bottom:1.75rem;}
.sv-hero--home h1{font-size:var(--fs-hero);line-height:1.02;}
.sv-hero .kicker{font-size:var(--fs-label);margin-bottom:1.5rem;}
.sv-hero p{font-size:var(--fs-body);max-width:34rem;margin-bottom:2rem;line-height:1.6;}
.sv-approach h2,.sv-services h2,.sv-details h2,.sv-spec h2,.sv-process h2,.sv-diff h2,.sv-why h2,
.sv-story h2,.sv-commit h2,.sv-who h2,.sv-area h2,.sv-expect h2,.sv-approach--big h2{font-size:var(--fs-section-title);line-height:1.08;}
.sv-floor h2,.sv-scope h2,.sv-cta h2{font-size:var(--fs-statement);line-height:1.06;}
.sv-full h2{font-size:clamp(1.6rem,2.4vw,2.4rem);}
.ct h2{font-size:clamp(1.6rem,2.4vw,2.2rem);}
.svc h3,.why h3,.commit h3,.spec h3,.info-card h3{font-size:var(--fs-card-title);}
.tl h3,.story h3,.expect h3,.hl h4,.who h3{font-size:var(--fs-card-sm);}
.svc .num,.why .n{font-size:var(--fs-number);}
.story .when{font-size:clamp(1.5rem,2.4vw,2.4rem);}
.expect .n{font-size:clamp(2rem,3vw,2.8rem);}
.statements p{font-size:clamp(1.2rem,1.8vw,1.7rem);}
.sv-footer h4,.fp-footer h4{font-size:var(--fs-label);}
.fp-footer__phrase{font-size:clamp(1.2rem,1.8vw,1.55rem);}

/* Body copy and text column widths */
.sv-approach p,.sv-diff p,.sv-floor p,.sv-cta p,.sv-scope p,.sv-area p,.sv-expect p,
.sv-services .head p,.sv-spec .head p,.sv-commit .head p,.sv-who .head p,.ct .sub{font-size:var(--fs-body);line-height:1.65;max-width:min(38rem,100%);}
.sv-cta p{max-width:31rem;margin-bottom:2rem;}
.svc p,.why p,.commit p,.spec p,.tl p,.story p,.expect p,.hl p,.acc li{font-size:var(--fs-body-sm);}
.story p{max-width:42rem;}
.sv-approach .statement,.sv-approach .pull{font-size:clamp(1.1rem,1.5vw,1.35rem);}
.sv-cta h2{max-width:14em;}
.sv-hero .actions{margin-bottom:0;}

/* Hero sizing */
.sv-hero{min-height:clamp(540px,78vh,860px);padding-top:clamp(7rem,15vh,9.5rem);padding-bottom:clamp(3rem,8vh,5.5rem);}
.sv-hero--page,.sv-hero--short{min-height:clamp(540px,62vh,700px);}
.sv-hero .copy{max-width:min(44rem,100%);}
.sv-hero--home .copy{max-width:min(46rem,100%);}
.sv-hero .mark{opacity:.045;width:min(460px,46vw);}
.hero-facts{margin-top:2.5rem;padding-top:1.25rem;font-size:var(--fs-label);}

/* Contact hero */
.sv-hero--contact .copy{max-width:min(37rem,100%);padding-left:clamp(0rem,2vw,2rem);}
.sv-hero--contact h1{font-size:clamp(2rem,4vw + .6rem,3.75rem);line-height:1.04;max-width:36rem;margin-bottom:2rem;}
.sv-hero--contact p{max-width:31rem;margin-bottom:1.5rem;}
.sv-hero--contact .hero-note{font-family:var(--font-head);font-size:var(--fs-body-sm);color:#fff;margin:0;}

/* Section spacing */
.sv-approach,.sv-services,.sv-details,.sv-floor,.sv-spec,.sv-process,.sv-scope,.sv-full,.sv-cta,
.sv-diff,.sv-why,.sv-story,.sv-commit,.sv-who,.sv-contact,.sv-area,.sv-expect{padding-block:var(--space-section);}
.sv-services .head,.sv-spec .head,.sv-commit .head{margin-bottom:var(--space-content);}
.sv-why h2,.sv-story h2,.sv-process h2{margin-bottom:var(--space-content);}
.section-cta{margin-top:clamp(1.75rem,3vw,3rem);}
.sv-approach p{margin-bottom:1.25rem;}
.sv-approach h2,.sv-diff h2,.sv-area h2{margin-bottom:1.5rem;}

/* Service area: location grid */
.loc-list{list-style:none;margin:1.75rem 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);max-width:34rem;border-top:1px solid var(--line-light);}
.loc-list li{padding:.85rem 0;border-bottom:1px solid var(--line-light);font-family:var(--font-head);font-size:var(--fs-body-sm);color:#fff;line-height:1.5;}
.loc-note{margin:.85rem 0 0;color:var(--steel-blue);font-size:var(--fs-body-sm);}

/* Google Maps link panel */
.service-map-link{display:block;color:#fff;text-decoration:none;}
.service-map-link:focus-visible{outline:3px solid #fff;outline-offset:4px;}
.service-map-panel{border:1px solid var(--line-light);background:var(--navy-deep);transition:border-color .35s var(--ease);overflow:hidden;max-width:100%;}
.service-map-link:hover .service-map-panel,.service-map-link:focus-visible .service-map-panel{border-color:var(--steel-blue);}
.map-label{padding:1rem 1.25rem;font-family:var(--font-head);font-size:var(--fs-label);letter-spacing:.18em;text-transform:uppercase;color:var(--steel-blue);border-bottom:1px solid var(--line-light);}
.map-visual{aspect-ratio:2/1;overflow:hidden;background:var(--navy-deep);}
.map-visual svg{width:100%;height:100%;display:block;transition:transform .8s var(--ease);}
.service-map-link:hover .map-visual svg{transform:scale(1.04);}
.map-visual .streets path{fill:none;stroke:var(--steel-blue);stroke-opacity:.35;stroke-width:1.5;}
.map-visual .streets--minor path{stroke-opacity:.16;stroke-width:1;}
.map-visual .pin{fill:#fff;}
.map-visual .pin-dot{fill:var(--navy-deep);}
.map-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;padding:1.1rem 1.25rem;border-top:1px solid var(--line-light);}
.map-addr{font-size:var(--fs-body-sm);line-height:1.5;color:#E3E6EA;}
.map-action{display:inline-flex;align-items:center;gap:.75rem;font-family:var(--font-head);font-weight:600;font-size:var(--fs-btn);letter-spacing:.06em;text-transform:uppercase;color:#fff;}
.map-action i{font-style:normal;transition:transform .3s var(--ease);}
.service-map-link:hover .map-action i,.service-map-link:focus-visible .map-action i{transform:translateX(6px);}
.map-note{margin:.85rem 0 0;font-size:.9rem;color:var(--steel-blue);}

/* Focus states */
.fp-form input:focus-visible,.fp-form select:focus-visible,.fp-form textarea:focus-visible{outline:2px solid var(--navy);outline-offset:2px;}

@media (max-width:1024px){
  .sv-hero{min-height:clamp(540px,70vh,760px);}
  .sv-hero .copy,.sv-hero--home .copy{max-width:min(38rem,100%);}
}
@media (max-width:760px){
  .sv-hero{min-height:clamp(620px,88vh,760px);padding-top:6.5rem;padding-bottom:3rem;}
  .sv-hero--page,.sv-hero--short{min-height:clamp(560px,80vh,720px);}
  .sv-hero--contact h1{font-size:clamp(2rem,9vw,2.8rem);}
  .sv-hero--contact .copy{padding-left:0;}
  .sv-hero h1{margin-bottom:1.25rem;}
  .sv-hero p{margin-bottom:1.5rem;}
  .loc-list{grid-template-columns:repeat(2,1fr);}
  .map-foot{flex-direction:column;align-items:flex-start;}
}
@media (max-width:420px){.loc-list li{font-size:.95rem;}}
.sv-hero .wrap{width:100%;}

/* Home hero photo: stronger navy veil keeps white text readable on a bright image */
.sv-hero--home::before{background:linear-gradient(100deg,rgba(26,45,68,.95) 18%,rgba(26,45,68,.80) 52%,rgba(26,45,68,.58));}
.sv-hero--home .ph{background-position:center 60%;}
@media (max-width:760px){.sv-hero--home::before{background:linear-gradient(180deg,rgba(26,45,68,.82),rgba(26,45,68,.94));}}

/* Embedded Google map (no API key) */
.map-embed{height:clamp(280px,32vw,380px);background:var(--navy-deep);}
.map-embed iframe{display:block;width:100%;height:100%;border:0;}
a.map-action{text-decoration:none;}
a.map-action:hover i,a.map-action:focus-visible i{transform:translateX(6px);}
a.map-action:focus-visible{outline:3px solid #fff;outline-offset:4px;}

/* =====================================================================
   PROJECTS: featured project, photo galleries, lightbox
   ===================================================================== */
.spec-list--3{grid-template-columns:repeat(3,1fr);}
.spec-list--3 .spec:nth-child(3){padding-left:30px;border-left:1px solid var(--line);}
@media (max-width:900px){
  .spec-list--3{grid-template-columns:1fr;}
  .spec-list--3 .spec:nth-child(n){padding-left:0;border-left:0;}
}

.sv-project{background:var(--navy);color:#fff;padding-block:var(--space-section);}
.sv-project .head{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:end;margin-bottom:var(--space-content);}
.sv-project h2{font-size:var(--fs-section-title);line-height:1.08;color:#fff;}
.sv-project .head p{color:#B9BFC8;max-width:30rem;margin:0;font-size:var(--fs-body);}

.p-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,44px);align-items:start;}
.p-steps>li{border-top:1px solid var(--line-light);padding-top:22px;}
.p-steps .n{display:block;font-family:var(--font-head);font-weight:600;font-size:clamp(2rem,3vw,2.8rem);letter-spacing:-.03em;line-height:1;color:#fff;margin-bottom:14px;}
.p-steps h3{font-size:var(--fs-card-sm);color:#fff;margin-bottom:8px;}
.p-steps p{margin:0 0 20px;color:#B9BFC8;font-size:var(--fs-body-sm);max-width:34ch;}
.p-shots{display:grid;gap:12px;}

.shot{display:block;position:relative;overflow:hidden;background:var(--concrete-2);}
.shot img{display:block;width:100%;height:auto;transition:transform .7s var(--ease);}
.shot:hover img,.shot:focus-visible img{transform:scale(1.04);}
.shot:focus-visible{outline:3px solid var(--steel-blue);outline-offset:3px;}
.shot .cap{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 12px;font-family:var(--font-head);font-size:.8rem;letter-spacing:.03em;color:#fff;background:linear-gradient(180deg,transparent,rgba(17,29,44,.88));opacity:0;transform:translateY(6px);transition:opacity .3s var(--ease),transform .3s var(--ease);}
.shot:hover .cap,.shot:focus-visible .cap{opacity:1;transform:none;}
@media (hover:none){.shot .cap{opacity:1;transform:none;}}

.sv-gallery{padding-block:var(--space-section);}
.sv-gallery--paper{background:var(--paper);}
.sv-gallery--concrete{background:var(--concrete);}
.g-head{max-width:40rem;margin-bottom:clamp(1.5rem,3vw,3rem);}
.g-head .label{color:var(--navy-2);}
.g-head h2{font-size:var(--fs-section-title);line-height:1.08;color:var(--navy);margin-bottom:.75rem;}
.g-head p{margin:0;color:#3B434A;font-size:var(--fs-body);}
.shots{columns:3 280px;column-gap:12px;}
.shots .shot{margin:0 0 12px;break-inside:avoid;}

.p-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,24px);align-items:start;}
.p-trio a{display:block;color:#fff;overflow:hidden;}
.p-trio figure{margin:0;}
.p-trio .p-frame{overflow:hidden;}
.p-trio img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;transition:transform .7s var(--ease);}
.p-trio a:hover img,.p-trio a:focus-visible img{transform:scale(1.04);}
.p-trio a:focus-visible{outline:3px solid var(--steel-blue);outline-offset:3px;}
.p-trio figcaption{margin-top:12px;font-family:var(--font-head);font-size:var(--fs-body-sm);color:#fff;}
.p-trio figcaption span{color:var(--steel-blue);margin-right:10px;letter-spacing:.1em;}

.lb{position:fixed;inset:0;z-index:300;background:rgba(10,18,28,.94);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s var(--ease),visibility 0s linear .3s;pointer-events:none;}
.lb.is-open{opacity:1;visibility:visible;transition:opacity .3s var(--ease),visibility 0s;pointer-events:auto;}
.lb figure{margin:0;max-width:min(92vw,1200px);max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:12px;}
.lb img{max-width:100%;max-height:80vh;width:auto;height:auto;display:block;}
.lb figcaption{color:#E8EBEE;font-family:var(--font-head);font-size:.9rem;text-align:center;}
.lb button{position:absolute;display:grid;place-items:center;width:48px;height:48px;background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;transition:background .3s,border-color .3s;}
.lb button:hover,.lb button:focus-visible{background:rgba(255,255,255,.12);border-color:#fff;outline:none;}
.lb .lb-close{top:16px;right:16px;}
.lb .lb-prev{left:16px;top:50%;transform:translateY(-50%);}
.lb .lb-next{right:16px;top:50%;transform:translateY(-50%);}
@media (prefers-reduced-motion:reduce){.lb,.shot img,.shot .cap,.p-trio img{transition:none;}}

@media (max-width:1024px){
  .p-steps{grid-template-columns:1fr;}
  .p-shots{grid-template-columns:1fr 1fr;}
  .sv-project .head{grid-template-columns:1fr;}
}
@media (max-width:760px){
  .p-shots{grid-template-columns:1fr;}
  .p-trio{grid-template-columns:1fr;}
  .p-trio img{aspect-ratio:4/3;}
  .shots{columns:2 150px;column-gap:8px;}
  .shots .shot{margin-bottom:8px;}
  .lb .lb-prev{left:6px;}.lb .lb-next{right:6px;}
}

/* Larger logo needs more room above hero content */
.sv-hero{padding-top:clamp(9rem,19vh,12rem);}
@media (max-width:760px){.sv-hero{padding-top:8rem;}}

/* =====================================================================
   PROJECTS v2 + DETAILS layout
   ===================================================================== */
.sv-project--light{background:var(--paper);color:var(--graphite);}
.sv-project--light h2,.sv-project--light .p-steps .n,.sv-project--light .p-steps h3{color:var(--navy);}
.sv-project--light .label{color:var(--navy-2);}
.sv-project--light .head p,.sv-project--light .p-steps p{color:#4A535A;}
.sv-project--light .p-steps>li{border-top-color:var(--line);}
.p-steps--2{grid-template-columns:repeat(2,1fr);}
.p-shots{grid-template-columns:1fr 1fr;align-items:start;}
.p-shots .shot:only-child{grid-column:1/-1;}

.proj-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
.proj-nav a{border:1px solid rgba(255,255,255,.4);padding:9px 14px;font-family:var(--font-head);font-size:var(--fs-label);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#fff;transition:background .3s,border-color .3s;}
.proj-nav a:hover,.proj-nav a:focus-visible{background:rgba(255,255,255,.12);border-color:#fff;outline:none;}

.g-sub{font-size:var(--fs-card-title);color:var(--navy);margin:clamp(2rem,4vw,3.5rem) 0 1rem;}
.g-head + .g-sub{margin-top:0;}

.details-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,6vw,96px);align-items:center;}
.details-photo{margin:0;}
.details-photo img{display:block;width:100%;height:auto;}
.sv-details .details-copy h2{margin:0 0 1.5rem;}
.details-copy > p{max-width:36rem;}

@media (max-width:1024px){
  .p-steps--2{grid-template-columns:1fr;}
}
@media (max-width:760px){
  .p-shots{grid-template-columns:1fr 1fr;}
  .details-grid{grid-template-columns:1fr;}
  .details-photo{max-width:440px;}
}

/* Specialized trades: tinted background instead of white */
.sv-spec{background:var(--concrete);}
.sv-spec .spec:hover{background:rgba(255,255,255,.55);}
.sv-spec .legal{background:#fff;}

/* "Quality that goes beyond the surface": light-blue translucent cards */
.sv-commit .commit{gap:14px;border-top:0;}
.sv-commit .commit article,
.sv-commit .commit article:nth-child(n){padding:30px 28px 34px;border:1px solid rgba(42,68,99,.18);background:rgba(154,180,214,.34);transition:background .3s var(--ease);}
.sv-commit .commit article:hover{background:rgba(154,180,214,.48);}

/* Language switcher */
.lang-switch{display:flex;align-items:center;gap:6px;font-family:var(--font-head);font-size:var(--fs-nav);font-weight:600;color:rgba(255,255,255,.45);}
.lang-switch a{color:#C9CED6;padding:6px 2px;letter-spacing:.06em;transition:color .3s;}
.lang-switch a:hover,.lang-switch a:focus-visible{color:#fff;}
.lang-switch a.is-current{color:#fff;border-bottom:1px solid #fff;}
@media (max-width:900px){.lang-switch{font-size:1.1rem;gap:10px;}}
