:root{--navy:#081f38;--ink:#10243d;--blue:#0879d1;--cyan:#22b8df;--purple:#5d3bbd;--violet:#7557df;--mist:#f5f8fc;--line:#dbe5f0;--white:#fff;--muted:#617189;--max:1220px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:#fff;line-height:1.65}a{color:inherit;text-decoration:none}.container{width:min(var(--max),calc(100% - 48px));margin:auto}.site-header{position:fixed;z-index:20;top:0;left:0;width:100%;background:rgba(255,255,255,.95);border-bottom:1px solid rgba(219,229,240,.75);transition:.25s}.site-header.scrolled{box-shadow:0 8px 28px rgba(10,35,65,.08)}.nav-wrap{height:86px;display:flex;align-items:center;justify-content:space-between}.logo-link{display:flex;align-items:center}.site-logo{width:182px;height:74px;object-fit:contain;display:block}.nav{display:flex;align-items:center;gap:34px;font-size:13px;font-weight:600;letter-spacing:.03em}.nav a{color:#2a3c52}.nav a:hover{color:var(--blue)}.nav-cta{background:var(--navy);color:#fff!important;padding:12px 19px;border-radius:3px}.menu-toggle{display:none;border:0;background:none;font-size:26px;color:var(--navy)}.hero{position:relative;min-height:790px;display:flex;align-items:center;overflow:hidden;background:var(--navy)}.hero-photo{position:absolute;inset:0;background-image:url('https://upload.wikimedia.org/wikipedia/commons/5/56/Parking_lot_stormwater_detention_system.jpg');background-size:cover;background-position:center 58%;filter:saturate(.65)}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,26,48,.97) 0%,rgba(11,35,67,.88) 39%,rgba(48,35,108,.54) 70%,rgba(9,31,54,.42) 100%)}.hero-contours{position:absolute;inset:0;opacity:.27;background-image:repeating-radial-gradient(ellipse at 74% 45%,transparent 0 45px,rgba(99,207,235,.75) 46px 47px,transparent 48px 78px);transform:rotate(-7deg) scale(1.25)}.hero-content{position:relative;z-index:2;color:white;padding-top:100px}.eyebrow,.section-kicker{font-size:11px;font-weight:700;letter-spacing:.18em;color:var(--blue);text-transform:uppercase}.hero .eyebrow{color:#8bdff3}.hero h1,.inner-hero h1{font-family:'League Spartan',sans-serif;font-size:clamp(54px,7vw,94px);line-height:.96;letter-spacing:-.035em;margin:24px 0 28px;font-weight:600}.hero h1 span,.inner-hero em{font-style:normal;color:#7fd9f1}.hero-copy{font-size:19px;max-width:610px;color:#d9e7f4;margin-bottom:34px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;gap:16px;padding:15px 22px;font-weight:700;font-size:13px;border-radius:3px;transition:.2s}.button-primary{background:linear-gradient(110deg,var(--blue),var(--purple));color:#fff;box-shadow:0 12px 28px rgba(20,83,165,.22)}.button-primary:hover{transform:translateY(-2px)}.button-glass{border:1px solid rgba(255,255,255,.45);color:#fff;background:rgba(255,255,255,.08);backdrop-filter:blur(5px)}.hero-bottom{position:absolute;bottom:0;left:0;right:0;border-top:1px solid rgba(255,255,255,.18);background:rgba(6,25,46,.5);backdrop-filter:blur(8px);color:#d9e6f0}.hero-bottom-inner{height:62px;display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:.08em;text-transform:uppercase}.section-pad{padding:105px 0}.intro{background:#fff}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:110px}.intro h2,.section-heading h2,.about-copy h2,.principal-grid h2,.contact-box h2,.bio-content h2,.career h2,.cta-panel h2{font-family:'League Spartan',sans-serif;font-size:clamp(39px,4.5vw,62px);line-height:1.02;letter-spacing:-.03em;margin:18px 0 25px;font-weight:600}.intro-copy{font-size:17px;color:#566a82;padding-top:18px}.text-link{display:inline-flex;gap:10px;color:var(--blue);font-weight:700;font-size:14px;margin-top:12px}.services{background:var(--mist);position:relative}.section-heading{display:grid;grid-template-columns:1.15fr .85fr;gap:90px;align-items:end;margin-bottom:55px}.section-heading h2{margin-bottom:0}.section-heading h2 em{color:var(--purple);font-style:normal}.section-heading>p{color:var(--muted);max-width:500px;margin:0}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.service-card{background:#fff;min-height:360px;padding:30px;border:1px solid #e3ebf4;position:relative;overflow:hidden;transition:.25s}.service-card:hover{transform:translateY(-5px);box-shadow:0 20px 45px rgba(18,45,75,.10)}.service-card-large{background:linear-gradient(145deg,#fff 0%,#f0f8ff 100%);border-color:#cfe8f4}.service-card-dark{background:linear-gradient(145deg,#132d4a,#2b1e62);color:#fff;border:0}.service-card-dark p{color:#c8d7e6}.service-top{display:flex;justify-content:space-between;color:#71849a;font-size:11px;font-weight:700;letter-spacing:.12em}.service-card-dark .service-top{color:#aabbd0}.service-arrow{font-size:18px;color:var(--blue)}.service-icon{font-family:'League Spartan';font-size:48px;line-height:1;color:var(--purple);margin:35px 0 25px}.service-card-dark .service-icon{color:#72d9f2}.service-card h3{font-family:'League Spartan';font-size:27px;line-height:1.05;margin:0 0 15px}.service-card p{color:#63758b;font-size:14px}.service-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:22px}.service-tags span,.tool-cloud span{border:1px solid #d8e5f0;background:#f7fafc;color:#476078;padding:6px 9px;font-size:10px;font-weight:700;letter-spacing:.04em}.service-card-dark .service-tags span{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.15);color:#dce9f4}.tools-card{background:linear-gradient(145deg,#f7f4ff,#fff);border-color:#ddd5fa}.tools-card h3{margin-top:54px}.tool-cloud{display:flex;gap:8px;flex-wrap:wrap;margin-top:25px}.tool-cloud span{color:#3d347d;background:#fff;border-color:#ddd7f4}.image-band{background:linear-gradient(125deg,#0b2440 0%,#152c53 48%,#412c83 100%);color:#fff;padding:80px 0}.image-band-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.image-band h2{font-family:'League Spartan';font-size:clamp(40px,4.5vw,61px);line-height:1.02;margin:18px 0}.image-band p{color:#cbd9e7;max-width:540px}.light-kicker{color:#76d9f2}.photo-card{height:390px;border:1px solid rgba(255,255,255,.2);overflow:hidden;position:relative;background:#0a213a}.photo-card img{width:100%;height:100%;object-fit:cover;display:block;opacity:.86}.photo-card:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(5,23,43,.75))}.photo-card span{position:absolute;z-index:2;left:22px;bottom:20px;font-size:11px;text-transform:uppercase;letter-spacing:.12em}.experience{background:#fff}.case-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.case-preview{min-height:430px;padding:32px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;background:#132b49;position:relative;overflow:hidden}.case-preview:before{content:'';position:absolute;inset:0;background:linear-gradient(145deg,rgba(13,45,77,.98),rgba(55,35,117,.72)),url('https://upload.wikimedia.org/wikipedia/commons/3/38/Stormwater_Drain.jpg') center/cover;mix-blend-mode:normal}.case-two:before{background:linear-gradient(145deg,rgba(9,48,74,.92),rgba(73,46,136,.78)),url('https://upload.wikimedia.org/wikipedia/commons/5/56/Parking_lot_stormwater_detention_system.jpg') center/cover}.case-three:before{background:linear-gradient(145deg,rgba(12,38,66,.96),rgba(25,92,134,.78)),url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Drainage_Channel_With_Cover_Plate_I.jpg') center/cover}.case-preview>div,.case-link{position:relative;z-index:1}.case-preview span{font-size:10px;letter-spacing:.14em;font-weight:700;color:#8fe3f3}.case-preview h3{font-family:'League Spartan';font-size:31px;line-height:1.04;margin:17px 0}.case-preview p{color:#d4e2ef;font-size:14px;max-width:330px}.case-link{font-size:12px;font-weight:700}.representative-note{margin-top:22px;padding:17px 20px;border-left:3px solid var(--purple);background:#f6f4fc;color:#64758b;font-size:12px}.principal-callout{padding:95px 0;background:#f2f7fb}.principal-grid{display:grid;grid-template-columns:360px 1fr;gap:95px;align-items:center}.principal-photo-wrap{height:410px;background:linear-gradient(145deg,#0a2d4b,#5c3ab7);position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.principal-photo-wrap:before{content:'';position:absolute;width:520px;height:520px;border:1px solid rgba(255,255,255,.18);border-radius:50%;box-shadow:0 0 0 35px rgba(255,255,255,.03),0 0 0 75px rgba(255,255,255,.025)}.principal-monogram{width:160px;height:160px;border:1px solid rgba(255,255,255,.35);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'League Spartan';font-size:60px;position:relative}.principal-monogram.large{width:170px;height:170px;background:linear-gradient(145deg,#0a3150,#6a4ad1);border:0}.principal-badge{position:absolute;bottom:20px;left:20px;color:#fff;font-size:10px;letter-spacing:.14em;font-weight:700}.principal-grid p{max-width:710px;color:#5f7288}.resources{background:#fff}.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}.resource-grid article{padding:34px 28px 10px;border-right:1px solid var(--line)}.resource-grid article:last-child{border-right:0}.resource-grid span{font-size:10px;font-weight:700;letter-spacing:.13em;color:var(--purple)}.resource-grid h3{font-family:'League Spartan';font-size:29px;line-height:1.08;margin:17px 0 12px}.resource-grid p{font-size:14px;color:#687a90}.resource-grid a{font-size:12px;color:var(--blue);font-weight:700}.contact{background:#edf5fb}.contact-box{background:#fff;padding:68px;display:grid;grid-template-columns:1fr 1fr;gap:80px;box-shadow:0 20px 50px rgba(17,54,88,.08)}.contact-box h2{margin-bottom:20px}.contact-box p{color:#66798e;max-width:600px}.contact-details{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:24px}.email{font-family:'League Spartan';font-size:34px;color:var(--blue)}.contact-line{display:flex;gap:18px;color:#61748a;font-size:12px;flex-direction:column}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:45px;padding:65px 0}.footer-logo{width:175px;height:110px;object-fit:contain;object-position:left center}.footer-grid>div:not(:first-child){display:flex;flex-direction:column;gap:9px;font-size:12px;color:#66788c}.footer-grid strong{color:var(--ink);font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px}.footer-grid a:hover{color:var(--blue)}footer{background:#fff;border-top:1px solid var(--line)}.footer-bottom{border-top:1px solid var(--line);min-height:60px;display:flex;justify-content:space-between;align-items:center;color:#78889a;font-size:10px;letter-spacing:.05em}.inner-hero{padding:185px 0 95px;background:linear-gradient(125deg,#081f38,#1e2f5d 55%,#5734a4);color:#fff}.inner-hero .section-kicker{color:#7fe0f4}.inner-hero p{color:#d1dfeb;font-size:18px}.bio-grid{display:grid;grid-template-columns:320px 1fr;gap:90px}.vm-card{padding:30px;background:#f3f7fb;border:1px solid var(--line);text-align:center}.vm-card h3{font-family:'League Spartan';font-size:26px;margin:22px 0 3px}.vm-card p{margin:0;color:#61748a}.credential-line{padding:14px 0;border-top:1px solid #d9e4ef;margin-top:14px;font-size:11px;color:#53677d}.button.full{width:100%;justify-content:center;margin-top:14px}.bio-content p{font-size:16px;color:#5f7287;max-width:800px}.bio-highlight{margin-top:35px;border-left:4px solid var(--purple);padding:25px 30px;background:#f5f2ff}.bio-highlight strong{font-family:'League Spartan';font-size:22px}.bio-highlight p{margin:7px 0 0;font-size:15px}.career{background:var(--mist)}.timeline{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--line)}.timeline>div{background:#fff;padding:36px}.timeline span{font-size:10px;font-weight:700;letter-spacing:.13em;color:var(--purple)}.timeline h3{font-family:'League Spartan';font-size:27px;margin:12px 0}.timeline p{font-size:14px;color:#64768b}.credentials-section{background:linear-gradient(110deg,#0a2946,#4d2f91);color:#fff;padding:70px 0}.credential-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}.credential-grid>div{padding:10px 30px;border-right:1px solid rgba(255,255,255,.16)}.credential-grid>div:last-child{border-right:0}.credential-grid span{color:#79d9f1;font-size:11px;font-weight:700}.credential-grid h3{font-family:'League Spartan';font-size:42px;margin:10px 0 0}.credential-grid p{font-size:12px;color:#cad8e6}.project-hero{background:linear-gradient(120deg,#071f37,#263d72 58%,#593bb0)}.project-disclaimer{padding:20px 25px;background:#f6f8fb;border-left:3px solid var(--blue);color:#62748a;font-size:12px;margin-bottom:50px}.case-study{display:grid;grid-template-columns:90px 1fr;gap:30px;padding:70px 0;border-top:1px solid var(--line);position:relative}.case-number{font-family:'League Spartan';font-size:55px;color:#c6d2df}.case-meta{font-size:10px;font-weight:700;letter-spacing:.15em;color:var(--purple)}.case-body h2{font-family:'League Spartan';font-size:47px;line-height:1.02;margin:14px 0}.case-lead{font-size:17px;color:#5d7187;max-width:830px}.case-columns{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:30px}.case-columns h4{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#65788c}.case-columns ul{padding-left:18px;color:#596d83;font-size:14px}.compact{margin-top:15px}.featured-case{background:linear-gradient(120deg,#f5f8fc,#fff)}.flood-image{height:260px;margin:25px 0 0;background:linear-gradient(110deg,rgba(11,40,66,.78),rgba(75,49,146,.5)),url('https://upload.wikimedia.org/wikipedia/commons/5/56/Parking_lot_stormwater_detention_system.jpg') center/cover}.compact-band{padding:65px 0}.cta-panel{padding:45px 50px;background:#f3f0ff;border:1px solid #ded6f6;display:flex;align-items:center;justify-content:space-between;gap:30px}.cta-panel h2{font-size:42px;margin:12px 0 0}
@media(max-width:900px){.nav{display:none;position:absolute;top:86px;left:0;right:0;background:#fff;padding:20px 24px;flex-direction:column;align-items:stretch;gap:16px;border-bottom:1px solid var(--line)}.nav.open{display:flex}.menu-toggle{display:block}.intro-grid,.section-heading,.image-band-grid,.contact-box,.bio-grid,.principal-grid{grid-template-columns:1fr;gap:35px}.service-grid,.case-preview-grid,.resource-grid{grid-template-columns:1fr 1fr}.principal-photo-wrap{height:320px}.credential-grid{grid-template-columns:1fr 1fr}.case-study{grid-template-columns:55px 1fr}.hero{min-height:720px}.hero-bottom-inner{font-size:9px}.email{font-size:28px}.footer-grid{grid-template-columns:1fr 1fr}.timeline{grid-template-columns:1fr}}
@media(max-width:620px){.container{width:min(var(--max),calc(100% - 30px))}.site-logo{width:160px}.hero h1{font-size:52px}.hero-copy{font-size:16px}.section-pad{padding:75px 0}.service-grid,.case-preview-grid,.resource-grid,.footer-grid,.credential-grid{grid-template-columns:1fr}.case-columns{grid-template-columns:1fr;gap:10px}.case-body h2{font-size:37px}.contact-box{padding:35px 25px}.hero-bottom-inner{height:auto;padding:13px 0;gap:8px;align-items:flex-start;flex-direction:column}.footer-bottom{padding:15px 0;flex-direction:column;gap:8px;align-items:flex-start}.case-study{grid-template-columns:1fr;gap:5px}.case-number{font-size:35px}.principal-photo-wrap{height:280px}}

/* V3 refinements */
.site-logo { width: 210px !important; height: 82px !important; object-fit: contain; mix-blend-mode: multiply; }
.footer-logo { width: 195px !important; height: 120px !important; object-fit: contain; mix-blend-mode: multiply; }
.plain-services .service-card { border-radius: 0; box-shadow: none; background: #fff; border: 1px solid #dfe5ef; }
.plain-services .service-card::before, .plain-services .service-card::after { display:none !important; }
.service-number { font-family: 'League Spartan', sans-serif; font-size: .85rem; letter-spacing: .08em; color:#5570a0; margin-bottom: 1.8rem; }
.plain-services .service-icon, .plain-services .service-arrow { display:none !important; }
.standards-section { background: linear-gradient(135deg,#f7f8fc 0%,#eef5fb 100%); }
.standards-grid, .training-grid { display:grid; grid-template-columns: 1fr 1fr; gap:5rem; align-items:start; }
.standards-grid h2, .training-grid h2 { max-width: 620px; }
.standards-tags { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1.5rem; }
.standards-tags span { border:1px solid #cfd8e8; background:#fff; padding:.55rem .8rem; font-size:.75rem; letter-spacing:.04em; }
.training-section { background:#101b3c; color:#fff; }
.training-section .section-kicker { color:#7dd8f3; }
.training-section p { color:#d8dfed; }
.training-section .text-link { color:#fff; }
.portrait-placeholder { width:100%; aspect-ratio:4/5; background: radial-gradient(circle at 50% 30%,#438fc1 0,#1b4770 42%,#0d1934 100%); display:flex; align-items:center; justify-content:center; overflow:hidden; position:relative; }
.portrait-placeholder::after { content:'Professional portrait'; position:absolute; bottom:1rem; left:1rem; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.65); }
.portrait-placeholder span { font-family:'League Spartan',sans-serif; font-size:5rem; color:rgba(255,255,255,.92); }
.experience-list { margin:2rem 0; }
.experience-list h3 { font-family:'League Spartan',sans-serif; font-size:1.15rem; margin-bottom:1rem; }
.experience-list ul { padding-left:1.2rem; margin:0; }
.experience-list li { margin:.7rem 0; color:#44506a; }
@media(max-width:800px){ .standards-grid,.training-grid { grid-template-columns:1fr; gap:2rem; } .site-logo { width:180px !important; height:72px !important; } }

.homepage-portrait { width:100%; height:100%; aspect-ratio:auto; background:transparent; }
.homepage-portrait::after { display:none; }
.principal-photo-wrap { background:#0b2948; }

/* V4: headshot + blended, larger header logo */
.portrait-placeholder.has-photo::after{display:none}
.portrait-placeholder.has-photo img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block}
.site-header{background:#fff;border-bottom:0}
.site-header.scrolled{box-shadow:0 6px 24px rgba(10,35,65,.08)}
.nav-wrap{height:104px}
.site-logo{width:auto !important;height:84px !important;max-width:none;mix-blend-mode:normal !important}
.footer-logo{width:auto !important;height:100px !important;mix-blend-mode:normal !important}
.inner-hero{padding-top:205px}
@media(max-width:900px){.nav{top:104px}}
@media(max-width:800px){.site-logo{height:68px !important;width:auto !important}.nav-wrap{height:88px}.nav{top:88px}}

/* V5: assurance band + professional projects page */
.assurance{background:#fff;padding:0 0 95px}
.assurance-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);background:linear-gradient(135deg,#f7f9fd,#fff)}
.assurance-item{padding:38px 42px}.assurance-item+.assurance-item{border-left:1px solid var(--line)}
.assurance-kicker{font-size:11px;font-weight:700;letter-spacing:.18em;color:var(--purple)}
.assurance-item h3{font-family:'League Spartan',sans-serif;font-size:26px;line-height:1.1;margin:12px 0 12px;letter-spacing:-.01em}
.assurance-item p{margin:0;color:#5b6e85;font-size:15px}.assurance-item strong{color:var(--ink);font-weight:700}
.projects-page .inner-hero{position:relative;overflow:hidden;padding-bottom:110px}
.projects-page .inner-hero .container{position:relative;z-index:2}
.projects-page .hero-contours{position:absolute;inset:0;opacity:.3;background-image:repeating-radial-gradient(ellipse at 78% 60%,transparent 0 38px,rgba(99,207,235,.7) 39px 40px,transparent 41px 66px);transform:rotate(-6deg) scale(1.3)}
.stat-strip{background:#fff;position:relative;z-index:3;margin-top:-52px}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);box-shadow:0 22px 50px rgba(17,54,88,.10)}
.stat-grid>div{padding:26px 28px;border-right:1px solid var(--line)}.stat-grid>div:last-child{border-right:0}
.stat-grid strong{display:block;font-family:'League Spartan',sans-serif;font-size:34px;line-height:1;color:var(--navy);letter-spacing:-.02em}
.stat-grid span{display:block;margin-top:8px;font-size:12px;color:var(--muted);line-height:1.45}
.projects-page .project-list{padding-top:90px}
.proj-intro{margin-bottom:34px}
.chip-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:34px}
.chip{border:1px solid #cfdbea;background:#fff;color:#3b5068;padding:10px 18px;font:600 12px Inter,Arial,sans-serif;letter-spacing:.06em;cursor:pointer;transition:.2s;border-radius:2px}
.chip:hover{border-color:var(--blue);color:var(--blue)}.chip.active{background:var(--navy);border-color:var(--navy);color:#fff}
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-bottom:46px}
.pcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);transition:.28s;overflow:hidden}
.pcard:hover{transform:translateY(-6px);box-shadow:0 26px 50px rgba(17,45,80,.14);border-color:#c5d6ea}
.pcard.is-hidden{display:none}
.pcard-img{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--navy)}
.pcard-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}
.pcard:hover .pcard-img img{transform:scale(1.05)}
.pcard-tag{position:absolute;right:14px;top:14px;background:#fff;color:var(--navy);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:6px 10px}
.pcard-body{padding:24px 26px 26px;display:flex;flex-direction:column;flex:1}
.pcard h3{font-family:'League Spartan',sans-serif;font-size:24px;line-height:1.08;margin:0 0 8px;letter-spacing:-.01em}
.pcard-loc{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--purple);margin-bottom:12px}
.pcard p{font-size:14px;color:#62748a;margin:0 0 18px}
.pcard-link{margin-top:auto;font-size:12px;font-weight:700;color:var(--blue)}.pcard-link b{display:inline-block;transition:.2s}.pcard:hover .pcard-link b{transform:translateY(3px)}
.projects-page .project-disclaimer{margin:0 0 20px}
.cs-list{border-top:1px solid var(--line)}
.cs{display:grid;grid-template-columns:1fr 1.05fr;gap:64px;padding:78px 0;border-bottom:1px solid var(--line);align-items:center;scroll-margin-top:110px}
.cs-alt .cs-text{order:2}.cs-alt .cs-visual{order:1}
.cs-num{font-family:'League Spartan',sans-serif;font-size:58px;line-height:1;color:#c6d2df;margin-bottom:8px}
.cs h2{font-family:'League Spartan',sans-serif;font-size:clamp(34px,3.6vw,46px);line-height:1.03;letter-spacing:-.02em;margin:14px 0 16px}
.cs .case-lead{margin:0 0 6px}
.cs h4{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#65788c;margin:26px 0 8px}
.cs ul{padding-left:18px;margin:0;color:#556a81;font-size:14px}.cs li{margin:5px 0}
.cs-visual{display:grid;gap:16px}
.cs-fig{margin:0;position:relative;overflow:hidden;border:1px solid #cfdbea;box-shadow:0 18px 40px rgba(17,45,80,.12)}
.cs-fig img{display:block;width:100%;height:auto}
.cs-fig figcaption{position:absolute;left:0;bottom:0;background:rgba(8,31,56,.88);color:#e4f1f9;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:8px 14px}
@media(max-width:1000px){.pgrid{grid-template-columns:1fr 1fr}.cs{grid-template-columns:1fr;gap:34px}.cs-alt .cs-text,.cs-alt .cs-visual{order:initial}.stat-grid{grid-template-columns:1fr 1fr}.stat-grid>div:nth-child(2){border-right:0}.stat-grid>div:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:700px){.pgrid{grid-template-columns:1fr}.assurance-grid{grid-template-columns:1fr}.assurance-item+.assurance-item{border-left:0;border-top:1px solid var(--line)}.assurance-item{padding:28px 24px}.stat-grid{grid-template-columns:1fr}.stat-grid>div{border-right:0;border-bottom:1px solid var(--line)}.stat-grid>div:last-child{border-bottom:0}}

/* V6: contact form + social links */
.contact-with-form{display:grid;grid-template-columns:1fr 1.05fr;gap:60px;align-items:start}
.contact-links{display:flex;flex-direction:column;gap:12px;margin:28px 0 22px;align-items:flex-start}
.contact-links .email{display:inline-block}
.social-link{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:15px;color:#fff;opacity:.92;transition:.2s;border-bottom:1px solid rgba(255,255,255,.25);padding-bottom:3px}
.social-link:hover{opacity:1;border-color:#7fd9f1;color:#7fd9f1}
.contact-form{background:#fff;color:var(--ink);padding:34px;box-shadow:0 30px 70px rgba(0,0,0,.25);display:grid;gap:16px}
.contact-form h3{font-family:'League Spartan',sans-serif;font-size:28px;margin:0 0 2px;letter-spacing:-.01em;color:var(--ink)}
.contact-form label{display:grid;gap:7px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#4a5f78}
.contact-form small{font-weight:500;text-transform:none;letter-spacing:0;color:#8a9bb0}
.contact-form input,.contact-form textarea{font:400 15px Inter,Arial,sans-serif;color:var(--ink);border:1px solid #cfdbea;background:#f8fafd;padding:13px 14px;width:100%;border-radius:2px;transition:.2s;text-transform:none;letter-spacing:0}
.contact-form input:focus,.contact-form textarea:focus{outline:0;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(21,119,209,.14)}
.contact-form textarea{resize:vertical;min-height:120px}
.contact-form .invalid{border-color:#d64550;background:#fff7f7}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.contact-form button{justify-self:start;border:0;cursor:pointer;font-family:inherit}
.form-note{margin:0;font-size:12.5px;color:#6b7e94;line-height:1.5}
.form-note.warn{color:#b3303b}.form-note.ok{color:#17724c}
.footer-social{display:flex;gap:22px;flex-wrap:wrap}
.footer-grid a[target]{display:block}
@media(max-width:900px){.contact-with-form{grid-template-columns:1fr;gap:36px}}
@media(max-width:560px){.form-row{grid-template-columns:1fr}.contact-form{padding:24px}}
.plain-services .tools-card{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:10px 40px;align-items:center}
.plain-services .tools-card .service-number{grid-column:1/-1;margin-bottom:0}
.plain-services .tools-card h3{margin:0}
@media(max-width:900px){.plain-services .tools-card{grid-template-columns:1fr}}
.social-link{color:var(--ink);opacity:1;border-bottom:1px solid #c5d3e4}
.social-link:hover{color:var(--blue);border-color:var(--blue)}
.social-link svg{color:var(--blue)}
