:root{--blue:#155f97;--blue-dark:#0c385b;--blue-deep:#082b47;--ink:#172d3f;--muted:#516575;--light:#f4f8fb;--line:#d5e1e9;--white:#fff}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:112px}
body{margin:0;background:var(--white);color:var(--ink);font:400 1rem/1.6 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit}
a:focus-visible,button:focus-visible{outline:3px solid #4099d2;outline-offset:3px}
.container{width:min(100% - 72px,1300px);margin-inline:auto}
.skip-link{position:absolute;top:-100px;left:20px;z-index:50;background:#fff;padding:10px 16px}.skip-link:focus{top:10px}
.site-header{position:relative;z-index:20;background:#fff;border-bottom:1px solid var(--line)}
.header-inner{min-height:108px;display:flex;align-items:center;gap:36px}
.brand{display:flex;align-items:center;gap:14px;flex:0 0 auto;color:var(--blue-dark);font-size:1.36rem;line-height:1.08;font-weight:800;letter-spacing:-.045em}
.brand img{width:86px;height:86px;object-fit:contain}
.brand small{display:block;font-size:.88rem;font-weight:700;letter-spacing:0;margin-top:3px}
.primary-nav{display:flex;gap:clamp(18px,2.7vw,40px);margin-left:auto;align-items:center;color:var(--blue-dark);font-weight:650;font-size:.93rem;white-space:nowrap}
.primary-nav a{padding:12px 0}.primary-nav a:hover{text-decoration:underline;text-underline-offset:6px}
.header-call{display:flex;flex-direction:column;line-height:1.18;padding:11px 17px;background:var(--blue);color:#fff;white-space:nowrap}
.header-call span{font-size:.72rem;font-weight:600}.header-call strong{font-size:1.05rem;letter-spacing:.01em}
.header-call:hover{background:var(--blue-dark)}
.menu-toggle{display:none}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{letter-spacing:-.045em;line-height:1.12;color:var(--blue-deep)}
.hero{background:#fff}
.hero-grid{display:grid;grid-template-columns:1fr 1.04fr;gap:clamp(40px,5vw,78px);align-items:center;min-height:620px;padding-block:50px}
.hero-copy{padding:22px 0}
.location,.section-label{color:var(--blue);font-size:.81rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.location{margin-bottom:24px}
.hero h1{font-size:clamp(3.4rem,5.4vw,5.7rem);font-weight:760;max-width:670px;margin-bottom:27px}
.hero-intro{max-width:550px;color:#3c5364;font-size:1.13rem;line-height:1.7;margin-bottom:33px}
.hero-phone{display:inline-flex;flex-direction:column;background:var(--blue);color:#fff;padding:16px 26px;min-width:294px;line-height:1.18}
.hero-phone:hover{background:var(--blue-dark)}
.hero-phone span{font-size:.84rem;font-weight:600;margin-bottom:5px}
.hero-phone strong{font-size:1.65rem;letter-spacing:-.025em}
.hero-email{display:block;width:max-content;color:var(--blue-dark);font-size:.95rem;font-weight:600;text-decoration:underline;text-underline-offset:4px;margin-top:19px}
.hero-photo{height:530px;background:#d7e3e8;overflow:hidden}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center}
.section{padding:104px 0}
.services-section{background:var(--light)}
.section-heading{max-width:780px;margin-bottom:41px}
.section-label{margin-bottom:15px}
.section-heading h2{font-size:clamp(2.6rem,4.3vw,4.25rem);font-weight:730;margin-bottom:0}
.service-work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;border-top:1px solid var(--line);padding-top:31px}
.service-card{min-width:0}
.service-copy{min-height:147px}
.service-copy h3{font-size:1.75rem;font-weight:700;margin-bottom:11px}
.service-copy p{font-size:1.05rem;max-width:510px;color:#405768;margin-bottom:0}
.other-work{color:#405768;line-height:1.7;margin:34px 0 0;padding-top:24px;border-top:1px solid var(--line);font-size:1.01rem}
.other-work strong{color:var(--blue-dark);margin-right:7px}
.gallery{min-width:0;background:#fff;border:1px solid var(--line)}
.gallery-image{height:390px;background:#d4e0e7;overflow:hidden}
.gallery-image img{width:100%;height:100%;object-fit:cover}
.gallery-image img.gallery-enter{animation:gallery-enter .3s ease-out}
@keyframes gallery-enter{from{opacity:.55}to{opacity:1}}
.gallery-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 21px}
.gallery-caption{font-size:.9rem;color:var(--muted);font-weight:600}
.gallery-controls{display:flex;align-items:center;gap:8px}
.gallery-count{font-size:.88rem;color:#4c6272;font-variant-numeric:tabular-nums;min-width:42px;margin-right:8px}
.gallery-controls button{display:grid;place-items:center;width:42px;height:42px;border:1px solid #a9bfd0;border-radius:50%;color:var(--blue-dark);background:transparent;cursor:pointer;font-size:1.18rem;line-height:1}
.gallery-controls button:hover{background:var(--blue);color:#fff;border-color:var(--blue)}
.about-section{background:#edf4f8}
.about-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(46px,7vw,100px);align-items:start}
.john-photo,.van-photo{margin:0}
.john-photo img{width:100%;height:560px;object-fit:cover;object-position:center 30%;background:#d8e1e6}
.john-photo figcaption,.van-photo figcaption{font-size:.83rem;color:#5a7080;margin-top:10px}
.about-story{padding-top:4px}
.about-story p{font-size:1.06rem;line-height:1.75;color:#354d5d;max-width:620px}
.about-story .about-lead{font-size:clamp(1.35rem,2.2vw,1.85rem);font-weight:650;line-height:1.43;color:var(--blue-deep);margin-bottom:26px}
.van-photo{margin-top:31px}
.van-photo img{width:100%;height:265px;object-fit:cover;object-position:center 53%;background:#dce9ee}
.contact-section{background:var(--blue-dark);color:#fff;padding:104px 0}
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(45px,8vw,120px)}
.contact-section .section-label{color:#a8d8f5}
.contact-section h2{color:#fff;font-size:clamp(2.8rem,4.4vw,4.6rem);font-weight:730;margin-bottom:21px}
.contact-section p:not(.section-label){font-size:1.06rem;color:#d4e6f2}
.contact-links>div{border-bottom:1px solid #ffffff4d;padding:0 0 19px;margin-bottom:20px}
.contact-links>div:last-child{border:0;margin-bottom:0}
.contact-links span{display:block;color:#b3d9ef;font-size:.81rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;margin-bottom:5px}
.contact-links a{font-size:clamp(1.45rem,2.9vw,2.65rem);line-height:1.25;letter-spacing:-.03em;font-weight:700;overflow-wrap:anywhere}
.contact-links a:hover{text-decoration:underline;text-underline-offset:5px}
.contact-links address{font-style:normal;font-size:1.25rem;line-height:1.5}
.site-footer{background:#082b47;color:#c9dce9;padding:24px 0}
.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:.78rem}
.footer-brand{font-weight:700;color:#fff}
@media(max-width:1080px){.header-inner{gap:22px}.primary-nav{gap:18px}.header-call strong{font-size:.91rem}.hero-grid{gap:34px}.hero h1{font-size:clamp(3.1rem,5vw,4.6rem)}.gallery-image{height:310px}.john-photo img{height:500px}}
@media(max-width:800px){html{scroll-padding-top:83px}.container{width:min(100% - 36px,620px)}.header-inner{min-height:82px;gap:14px}.brand{font-size:1.13rem}.brand img{width:64px;height:64px}.brand small{font-size:.71rem}.primary-nav{display:none;position:absolute;top:82px;left:0;right:0;background:#fff;padding:14px 18px 19px;box-shadow:0 18px 25px #0a35521d;flex-direction:column;align-items:stretch;gap:0;border-top:1px solid var(--line)}.primary-nav.is-open{display:flex}.primary-nav a{padding:11px 5px}.header-call{margin-left:auto;padding:10px 12px}.header-call span{font-size:.72rem}.header-call strong{display:none}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;border:0;background:transparent;padding:8px;cursor:pointer}.menu-toggle span{display:block;width:25px;height:2px;background:var(--blue-dark)}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(7px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-7px) rotate(-45deg)}.hero-grid{grid-template-columns:1fr;gap:25px;padding-block:52px}.hero-copy{padding:0}.hero h1{font-size:clamp(3.1rem,10vw,4.8rem)}.hero-intro{font-size:1.06rem}.hero-photo{height:380px}.section{padding:75px 0}.section-heading h2{font-size:clamp(2.4rem,7vw,3.6rem)}.service-work-grid{grid-template-columns:1fr;gap:42px}.service-copy{min-height:0;margin-bottom:22px}.gallery-image{height:390px}.about-grid{grid-template-columns:1fr;gap:30px}.john-photo img{height:480px}.about-story{padding:0}.van-photo img{height:290px}.contact-grid{grid-template-columns:1fr;gap:33px}.footer-inner{flex-wrap:wrap}}
@media(max-width:540px){.container{width:calc(100% - 32px)}.brand{font-size:1.02rem;gap:8px}.brand img{width:56px;height:56px}.brand small{font-size:.66rem}.header-call{padding:9px}.hero-grid{padding-block:42px}.location{font-size:.72rem;margin-bottom:18px}.hero h1{font-size:clamp(2.85rem,12vw,4rem);margin-bottom:22px}.hero-intro{font-size:1rem;line-height:1.65}.hero-phone{min-width:0;width:100%}.hero-phone strong{font-size:1.7rem}.hero-photo{height:285px}.section{padding:65px 0}.section-heading{margin-bottom:30px}.section-heading h2{font-size:2.65rem}.service-copy h3{font-size:1.55rem}.gallery-image{height:260px}.gallery-bottom{padding:14px 15px}.gallery-caption{font-size:.82rem}.gallery-controls button{height:38px;width:38px}.john-photo img{height:410px}.about-story .about-lead{font-size:1.32rem}.van-photo img{height:200px}.contact-section{padding:70px 0}.contact-section h2{font-size:2.8rem}.contact-links a{font-size:clamp(1.4rem,6vw,2.1rem)}.footer-inner{flex-direction:column;align-items:flex-start;gap:7px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
