@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;500;600&family=Libre+Bodoni:ital@0;1&display=swap');

:root{
  --primary-background:#FDFCFA;
  --primary-headings:#4C4C4C;
  --primary-paragraphs:#4C4C4C;
  --primary-details:#B7B3A6;
  --accent-background:#F9F7F2;
  --accent-details:#E6E2D5;
  --button-background:#60656C;
  --button-background-hover:#B7B3A6;
  --button-text:#FFFFFF;
  --serif-display:'Libre Bodoni','Bodoni 72','Bodoni 72 Smallcaps','Didot','Bodoni MT',serif;
  --serif-body:'EB Garamond',Garamond,Georgia,serif;
  --page-edge:34px;
  --gallery-gap:13px;
  --header-height:126px;
}

*{box-sizing:border-box}
html{background:var(--primary-background);color:var(--primary-paragraphs);font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--primary-background);font-family:var(--serif-body);font-weight:400;color:var(--primary-paragraphs);min-height:100vh;}
a{color:inherit;text-decoration:none}
img{max-width:100%;height:auto;display:block}

.site-header{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 var(--page-edge);position:relative;z-index:20;background:var(--primary-background)}
.logo{font-family:var(--serif-display);font-size:1rem;letter-spacing:.24em;text-transform:uppercase;color:var(--primary-headings);line-height:1;white-space:nowrap}
.nav{display:flex;align-items:center;gap:3.125rem;font-family:var(--serif-display);font-size:1rem;color:var(--primary-headings);line-height:1.4}
.nav a{transition:color .18s ease}
.nav a:hover{color:#777}
.nav-toggle{display:none;width:34px;height:26px;border:0;background:transparent;padding:0;position:relative;cursor:pointer}
.nav-toggle span{display:block;height:1px;background:var(--primary-headings);margin:7px 0;transition:transform .2s ease,opacity .2s ease}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.mobile-menu{display:none;position:absolute;left:0;right:0;top:var(--header-height);background:var(--primary-background);border-top:1px solid rgba(183,179,166,.22);padding:26px var(--page-edge) 36px;box-shadow:0 18px 28px rgba(0,0,0,.03)}
.mobile-menu a{display:block;font-family:var(--serif-display);font-size:2rem;line-height:1.65;color:var(--primary-headings)}
.mobile-menu.is-open{display:block}

.main{min-height:calc(100vh - var(--header-height))}
.gallery-shell{margin:108px var(--page-edge) 132px;}
.masonry{display:flex;gap:var(--gallery-gap);align-items:flex-start;width:100%}
.masonry-column{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--gallery-gap)}
.gallery-link{display:block;background:transparent;overflow:hidden;cursor:zoom-in;}
.gallery-link img{width:100%;height:auto;filter:saturate(1.02);transition:opacity .25s ease,transform .45s ease;}
.gallery-link:hover img{opacity:.94;transform:scale(1.01)}
.gallery-spacer{height:24px}

.service-panel{margin:140px var(--page-edge) 178px;background:var(--accent-background);min-height:1074px;display:grid;grid-template-columns:minmax(320px,430px) 390px;align-items:center;justify-content:center;gap:170px;padding:86px 116px;}
.service-copy{max-width:430px;}
h1,.h1{font-family:var(--serif-display);font-size:min(2.625rem,1rem + 1.81vw);font-weight:400;line-height:1.3;color:var(--primary-headings);margin:0 0 34px;letter-spacing:0}
.service-copy p,.contact-copy p{font-family:var(--serif-body);font-size:1rem;line-height:2;color:var(--primary-paragraphs);margin:0 0 38px;}
.service-copy .lines{font-size:1rem;line-height:2;margin:0 0 44px;white-space:pre-line;}
.button{display:inline-flex;align-items:center;justify-content:center;min-width:176px;height:58px;padding:0 30px;background:var(--button-background);color:var(--button-text);font-family:var(--serif-display);font-size:.875rem;letter-spacing:.14em;text-transform:uppercase;line-height:1;border:1px solid var(--button-background);transition:background .2s ease,border-color .2s ease;cursor:pointer;}
.button:hover{background:var(--button-background-hover);border-color:var(--button-background-hover)}
.service-portrait{width:390px;height:900px;object-fit:cover;object-position:50% 44%;}

.contact-section{display:grid;grid-template-columns:1fr minmax(520px,680px);gap:88px;margin:154px var(--page-edge) 0;align-items:start;}
.contact-section.embedded{margin:0 var(--page-edge) 165px;}
.contact-copy{padding-top:21px;min-height:530px;}
.contact-copy h1{margin-bottom:70px;}
.form-card{background:var(--accent-background);padding:38px 30px 30px;min-height:557px;}
.form-field{margin:0 0 31px;}
.form-field label{display:block;font-family:var(--serif-display);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--primary-headings);line-height:1.64;margin-bottom:12px;}
.form-field input,.form-field textarea{width:100%;background:transparent;border:1px solid var(--accent-details);border-radius:0;color:var(--primary-paragraphs);font-family:var(--serif-body);font-size:1rem;padding:13px 14px;outline:none;transition:border-color .2s ease,background .2s ease;}
.form-field input{height:50px;}
.form-field textarea{height:130px;resize:vertical;min-height:130px;}
.form-field input:focus,.form-field textarea:focus{border-color:var(--primary-details);background:rgba(255,255,255,.22)}
.form-status{font-family:var(--serif-body);font-size:.95rem;line-height:1.5;min-height:24px;margin:18px 0 0;color:var(--primary-headings)}

.site-footer{min-height:150px;margin:0 var(--page-edge);position:relative;color:var(--primary-headings);font-family:var(--serif-body);font-size:1rem;line-height:2;}
.site-footer .copyright{position:absolute;left:0;top:0}
.site-footer .mark{position:absolute;left:50%;top:88px;transform:translateX(-50%);width:20px;height:20px;border:1px solid #aaa;display:flex;align-items:center;justify-content:center;font-family:var(--serif-display);font-size:.875rem;color:#60656C;background:rgba(255,255,255,.35)}

.lightbox{position:fixed;inset:0;background:rgba(253,252,250,.94);display:none;align-items:center;justify-content:center;z-index:100;padding:36px;}
.lightbox.is-open{display:flex}
.lightbox img{max-width:min(92vw,1500px);max-height:88vh;box-shadow:0 22px 80px rgba(0,0,0,.12)}
.lightbox button{position:absolute;top:26px;right:34px;border:0;background:transparent;font-family:var(--serif-display);font-size:2rem;color:var(--primary-headings);cursor:pointer;line-height:1}

.offer-ribbon{margin:52px var(--page-edge) 0;padding:24px 28px;border:1px solid var(--accent-details);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:32px;background:var(--accent-background)}
.offer-ribbon span{font-family:var(--serif-display);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--primary-details)}
.offer-ribbon strong{font-family:var(--serif-display);font-weight:400;font-size:1.2rem;color:var(--primary-headings)}
.offer-ribbon a{font-family:var(--serif-display);font-size:.75rem;letter-spacing:.13em;text-transform:uppercase;border-bottom:1px solid var(--primary-details);padding-bottom:3px}

.sprint-page{padding-bottom:150px}
.sprint-hero{margin:86px var(--page-edge) 0;padding:112px clamp(34px,8vw,132px);background:var(--accent-background);min-height:680px;display:flex;flex-direction:column;justify-content:center}
.sprint-kicker{font-family:var(--serif-display);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:#8b877c;margin-bottom:28px}
.sprint-hero h1{font-size:clamp(3rem,6.2vw,6.5rem);line-height:1.03;max-width:1050px;margin-bottom:42px;letter-spacing:-.025em}
.sprint-hero h1 em{font-weight:400;color:#858176}
.sprint-lede{max-width:720px;font-size:1.22rem;line-height:1.75;margin:0 0 40px}
.sprint-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.sprint-actions span{font-size:.95rem;color:#78756d}
.sprint-grid{margin:18px var(--page-edge) 0;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--accent-details);border-left:1px solid var(--accent-details)}
.sprint-grid article{min-height:300px;padding:38px 30px;border-right:1px solid var(--accent-details);border-bottom:1px solid var(--accent-details)}
.sprint-grid article>span{font-family:var(--serif-display);font-size:.72rem;letter-spacing:.14em;color:var(--primary-details)}
.sprint-grid h2,.sprint-proof h2,.sprint-terms h2,.sprint-faq h2,.sprint-final h2{font-family:var(--serif-display);font-weight:400;color:var(--primary-headings)}
.sprint-grid h2{font-size:1.65rem;line-height:1.3;margin:64px 0 20px}
.sprint-grid p{line-height:1.7;margin:0}
.sprint-proof{margin:150px var(--page-edge);display:grid;grid-template-columns:1fr 1.2fr;gap:100px;align-items:start}
.sprint-proof h2{font-size:clamp(2.3rem,4vw,4.4rem);line-height:1.08;margin:0;max-width:600px}
.sprint-steps{border-top:1px solid var(--accent-details)}
.sprint-steps p{margin:0;padding:26px 0;border-bottom:1px solid var(--accent-details);font-size:1.08rem;line-height:1.65}
.sprint-steps strong{font-family:var(--serif-display);font-weight:400}
.sprint-terms{margin:0 var(--page-edge);padding:90px clamp(34px,7vw,108px);background:#5f646a;color:#fff;display:grid;grid-template-columns:1.1fr .8fr 1.2fr;gap:44px 70px;align-items:start}
.sprint-terms h2{color:#fff;font-size:clamp(2.3rem,4vw,4rem);line-height:1.08;margin:0}
.sprint-price span{font-family:var(--serif-display);font-size:4.8rem;line-height:1;display:block}
.sprint-price small{display:block;margin-top:10px;letter-spacing:.12em;text-transform:uppercase}
.sprint-terms ul{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.25)}
.sprint-terms li{padding:13px 0;border-bottom:1px solid rgba(255,255,255,.25)}
.sprint-terms p{grid-column:1/3;max-width:720px;line-height:1.65;color:rgba(255,255,255,.8);margin:0}
.sprint-terms .button{justify-self:start;background:#fff;border-color:#fff;color:#5f646a}
.sprint-faq{margin:150px auto;max-width:920px;padding:0 var(--page-edge)}
.sprint-faq h2{font-size:3rem;margin-bottom:44px}
.sprint-faq details{border-top:1px solid var(--accent-details);padding:22px 0}
.sprint-faq details:last-child{border-bottom:1px solid var(--accent-details)}
.sprint-faq summary{font-family:var(--serif-display);font-size:1.2rem;cursor:pointer;color:var(--primary-headings)}
.sprint-faq p{line-height:1.7;max-width:760px;margin:18px 0 4px}
.sprint-final{margin:0 var(--page-edge);padding:110px 40px;text-align:center;background:var(--accent-background)}
.sprint-final h2{font-size:clamp(2.4rem,5vw,5rem);line-height:1.08;max-width:850px;margin:0 auto 44px}

@media (max-width: 991px){
  :root{--header-height:98px;--page-edge:24px;--gallery-gap:10px}
  .site-header{height:var(--header-height)}
  .nav{display:none}
  .nav-toggle{display:block}
  .gallery-shell{margin-top:64px}
  .service-panel{margin-top:70px;grid-template-columns:1fr;gap:54px;min-height:0;padding:68px 50px;}
  .service-copy{max-width:560px;}
  .service-portrait{width:min(100%,430px);height:auto;max-height:760px;justify-self:start;}
  .contact-section,.contact-section.embedded{grid-template-columns:1fr;gap:34px;margin-top:70px;margin-bottom:90px;}
  .contact-copy{min-height:0;padding-top:0}
  .contact-copy h1{margin-bottom:30px}
  .offer-ribbon{grid-template-columns:1fr auto}
  .offer-ribbon span{grid-column:1/-1}
  .sprint-hero{margin-top:54px;min-height:610px}
  .sprint-grid{grid-template-columns:repeat(2,1fr)}
  .sprint-proof{grid-template-columns:1fr;gap:56px;margin-top:110px;margin-bottom:110px}
  .sprint-terms{grid-template-columns:1fr 1fr}
  .sprint-terms ul,.sprint-terms p{grid-column:1/-1}
}
@media (max-width: 620px){
  :root{--page-edge:18px;--header-height:86px;--gallery-gap:8px}
  .logo{font-size:.93rem;letter-spacing:.20em}
  .mobile-menu a{font-size:1.72rem}
  .gallery-shell{margin-top:44px;margin-bottom:72px;}
  .service-panel{margin:44px var(--page-edge) 80px;padding:42px 24px;gap:38px;}
  h1,.h1{font-size:2rem}
  .service-copy p,.service-copy .lines,.contact-copy p{line-height:1.8}
  .contact-section,.contact-section.embedded{margin-left:var(--page-edge);margin-right:var(--page-edge)}
  .form-card{padding:30px 22px;min-height:0}
  .button{width:100%}
  .site-footer{min-height:110px}
  .site-footer .mark{top:54px}
  .offer-ribbon{margin-top:24px;padding:20px;grid-template-columns:1fr;gap:14px}
  .offer-ribbon span{grid-column:auto}
  .offer-ribbon strong{font-size:1.05rem;line-height:1.4}
  .offer-ribbon a{justify-self:start}
  .sprint-page{padding-bottom:80px}
  .sprint-hero{margin:28px var(--page-edge) 0;padding:64px 24px;min-height:0}
  .sprint-hero h1{font-size:2.85rem;line-height:1.04;margin-bottom:30px}
  .sprint-lede{font-size:1.08rem;line-height:1.65}
  .sprint-actions{gap:18px}
  .sprint-grid{grid-template-columns:1fr;margin-top:10px}
  .sprint-grid article{min-height:230px;padding:30px 24px}
  .sprint-grid h2{margin-top:42px}
  .sprint-proof{margin:90px var(--page-edge);gap:42px}
  .sprint-terms{margin:0 var(--page-edge);padding:58px 24px;grid-template-columns:1fr;gap:32px}
  .sprint-terms ul,.sprint-terms p{grid-column:auto}
  .sprint-price span{font-size:4rem}
  .sprint-faq{margin-top:90px;margin-bottom:90px}
  .sprint-faq h2{font-size:2.4rem}
  .sprint-final{padding:72px 24px}
}
