:root { --ink:#171313; --paper:#f5f0ea; --cream:#fbf8f4; --white:#fff; --muted:#625b56; --accent:#ef3d62; --soft-pink:#f5b8c5; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Arial,Helvetica,sans-serif; }
img { display:block; max-width:100%; }
a { color:inherit; }
.hidden { position:absolute; left:-9999px; }
.public-site { min-height:100vh; background:var(--paper); }
.public-site nav { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; height:76px; padding:0 6vw; background:var(--cream); }
.public-site nav a { color:inherit; letter-spacing:1px; font-size:10px; text-decoration:none; }
.public-site nav .wordmark { color:var(--accent); font:14px Georgia,"Times New Roman",serif; }
.public-site nav .wordmark b { color:var(--ink); letter-spacing:.4px; }
.public-site nav div { display:flex; align-items:center; gap:28px; }
.public-site nav .talk { padding:13px 16px; background:var(--ink); color:var(--white); }
.public-hero { display:flex; align-items:center; min-height:calc(100vh - 76px); padding:9vw; color:var(--white); background:linear-gradient(90deg,rgba(19,13,13,.80),rgba(20,12,12,.10)),url("https://images.unsplash.com/photo-1519741497674-611481863552?auto=format&fit=crop&w=2000&q=88") center/cover; }
.public-hero>div { max-width:710px; }
.public-hero small,.public-section header small,.difference small,.contact small { font-size:9px; letter-spacing:2.5px; }
.public-hero h1 { margin:24px 0; font:clamp(50px,8vw,112px)/.82 Georgia,"Times New Roman",serif; }
.public-hero h1 em,.public-section h2 em,.difference h2 em,.contact h2 em { color:var(--soft-pink); font-weight:400; }
.public-hero p { max-width:500px; color:#e2dcda; font-size:13px; line-height:1.7; }
.public-hero>div>a { display:inline-block; margin-top:25px; padding:14px 17px; background:var(--white); color:var(--ink); font-size:9px; font-weight:700; text-decoration:none; }
.marquee { overflow:hidden; padding:13px; background:var(--accent); color:var(--white); text-align:center; white-space:nowrap; letter-spacing:2px; font:12px Georgia,serif; }
.public-section { padding:100px 6vw; }
.public-section>header { max-width:740px; margin:0 auto 60px; text-align:center; }
.public-section h2,.difference h2,.contact h2 { margin:18px 0; font:clamp(38px,5vw,70px)/.95 Georgia,"Times New Roman",serif; }
.public-section header p { color:var(--muted); font:15px/1.7 Georgia,serif; }
.services { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.services img { display:block; width:100%; height:auto; aspect-ratio:9 / 16; object-fit:cover; }
.services .service-image { display:block; overflow:hidden; }
.services .service-image img { transition:transform .45s ease,filter .45s ease; }
.services .service-image:hover img { transform:scale(1.025); filter:saturate(1.05); }
.services .service-image:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.services article>small { display:block; margin-top:18px; color:var(--accent); }
.services h3 { margin:8px 0; font:25px Georgia,serif; }
.services p { min-height:55px; color:#68615c; font-size:14px; line-height:1.6; }
.services a { color:var(--ink); font-size:13px; }
.services .service-details { display:inline-block; margin-top:14px; padding:12px 14px; background:var(--ink); color:var(--white); font-weight:700; letter-spacing:.08em; text-decoration:none; }
.services .service-details:hover,.services .service-details:focus-visible { background:var(--accent); color:var(--white); }
.wedding-gallery { padding:110px 6vw 120px; background:var(--cream); text-align:center; }
.wedding-gallery>header { max-width:720px; margin:0 auto 58px; }
.wedding-gallery small { color:var(--accent); font-size:9px; letter-spacing:2.5px; }
.wedding-gallery h2 { margin:18px 0; font:clamp(42px,6vw,82px)/.9 Georgia,"Times New Roman",serif; }
.wedding-gallery h2 em { color:var(--accent); font-weight:400; }
.wedding-gallery header p { max-width:520px; margin:0 auto; color:var(--muted); font:15px/1.7 Georgia,serif; }
.wedding-grid { columns:4 240px; column-gap:14px; text-align:left; }
.wedding-grid figure { break-inside:avoid; margin:0 0 14px; overflow:hidden; background:#e9e2da; }
.wedding-grid img { width:100%; height:auto; transition:transform .55s ease,filter .55s ease; }
.wedding-grid figure:hover img { transform:scale(1.018); filter:saturate(1.04); }
.gallery-cta { display:inline-block; margin-top:44px; padding:15px 19px; background:var(--ink); color:var(--white); font-size:9px; font-weight:700; letter-spacing:.4px; text-decoration:none; }
.milestone-gallery { padding:110px 6vw 120px; background:#f4d8df; text-align:center; }
.milestone-gallery>header { max-width:740px; margin:0 auto 58px; }
.milestone-gallery small { color:var(--accent); font-size:9px; letter-spacing:2.5px; }
.milestone-gallery h2 { margin:18px 0; font:clamp(42px,6vw,82px)/.9 Georgia,"Times New Roman",serif; }
.milestone-gallery h2 em { color:var(--accent); font-weight:400; }
.milestone-gallery header p { max-width:580px; margin:0 auto; color:var(--muted); font:15px/1.7 Georgia,serif; }
.milestone-grid { columns:4 240px; column-gap:14px; text-align:left; }
.milestone-grid figure { break-inside:avoid; margin:0 0 14px; overflow:hidden; background:#ead0d6; }
.milestone-grid img { width:100%; height:auto; transition:transform .55s ease,filter .55s ease; }
.milestone-grid figure:hover img { transform:scale(1.018); filter:saturate(1.05); }
.corporate-gallery { padding:110px 6vw 120px; background:#221b1b; color:var(--white); text-align:center; }
.corporate-gallery>header { max-width:740px; margin:0 auto 58px; }
.corporate-gallery small { color:var(--soft-pink); font-size:9px; letter-spacing:2.5px; }
.corporate-gallery h2 { margin:18px 0; font:clamp(42px,6vw,82px)/.9 Georgia,"Times New Roman",serif; }
.corporate-gallery h2 em { color:var(--soft-pink); font-weight:400; }
.corporate-gallery header p { max-width:560px; margin:0 auto; color:#d7cfcc; font:15px/1.7 Georgia,serif; }
.corporate-grid { columns:4 240px; column-gap:14px; text-align:left; }
.corporate-grid figure { break-inside:avoid; margin:0 0 14px; overflow:hidden; background:#302727; }
.corporate-grid img { width:100%; height:auto; transition:transform .55s ease,filter .55s ease; }
.corporate-grid figure:hover img { transform:scale(1.018); filter:saturate(1.05); }
.corporate-gallery .gallery-cta { background:var(--accent); }
.headshot-gallery { padding:110px 6vw 120px; background:#f0e4e4; text-align:center; }
.headshot-gallery>header { max-width:760px; margin:0 auto 58px; }
.headshot-gallery small { color:var(--accent); font-size:9px; letter-spacing:2.5px; }
.headshot-gallery h2 { margin:18px 0; font:clamp(42px,6vw,82px)/.9 Georgia,"Times New Roman",serif; }
.headshot-gallery h2 em { color:var(--accent); font-weight:400; }
.headshot-gallery header p { max-width:550px; margin:0 auto; color:var(--muted); font:15px/1.7 Georgia,serif; }
.headshot-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; max-width:1400px; margin:0 auto; }
.headshot-grid figure { margin:0; overflow:hidden; background:var(--white); aspect-ratio:3/4; }
.headshot-grid img { width:100%; height:100%; object-fit:cover; object-position:center top; transition:transform .55s ease; }
.headshot-grid figure:hover img { transform:scale(1.018); }
.portrait-gallery { padding:110px 6vw 120px; background:var(--cream); text-align:center; }
.portrait-gallery>header { max-width:760px; margin:0 auto 58px; }
.portrait-gallery small { color:var(--accent); font-size:9px; letter-spacing:2.5px; }
.portrait-gallery h2 { margin:18px 0; font:clamp(42px,6vw,82px)/.9 Georgia,"Times New Roman",serif; }
.portrait-gallery h2 em { color:var(--accent); font-weight:400; }
.portrait-gallery header p { max-width:560px; margin:0 auto; color:var(--muted); font:15px/1.7 Georgia,serif; }
.portrait-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; max-width:1200px; margin:0 auto; }
.portrait-grid figure { margin:0; overflow:hidden; background:#e9e2da; aspect-ratio:3/4; }
.portrait-grid img { width:100%; height:100%; object-fit:cover; object-position:center top; transition:transform .55s ease,filter .55s ease; }
.portrait-grid figure:hover img { transform:scale(1.018); filter:saturate(1.04); }
.wedding-grid figure,.milestone-grid figure,.corporate-grid figure,.headshot-grid figure,.portrait-grid figure { cursor:zoom-in; }
.wedding-grid figure:focus-visible,.milestone-grid figure:focus-visible,.corporate-grid figure:focus-visible,.headshot-grid figure:focus-visible,.portrait-grid figure:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.lightbox-open { overflow:hidden; }
.gallery-lightbox { width:100vw; max-width:none; height:100dvh; max-height:none; margin:0; padding:0; border:0; background:rgba(12,9,9,.96); color:var(--white); }
.gallery-lightbox[open] { display:grid; grid-template-columns:72px minmax(0,1fr) 72px; align-items:center; }
.gallery-lightbox::backdrop { background:rgba(12,9,9,.96); }
.gallery-lightbox figure { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:0; height:100%; margin:0; padding:42px 12px; }
.gallery-lightbox img { width:auto; max-width:100%; height:auto; max-height:calc(100dvh - 70px); object-fit:contain; box-shadow:0 18px 70px rgba(0,0,0,.38); }
.gallery-lightbox figcaption { display:none; }
.gallery-lightbox button { border:0; background:transparent; color:var(--white); cursor:pointer; }
.gallery-lightbox button:focus-visible { outline:2px solid var(--soft-pink); outline-offset:4px; }
.lightbox-close { position:fixed; z-index:2; top:20px; right:24px; padding:10px; font-size:10px; font-weight:700; letter-spacing:1.5px; }
.lightbox-previous,.lightbox-next { height:100%; font:30px Georgia,"Times New Roman",serif; }
.lightbox-previous:hover,.lightbox-next:hover,.lightbox-close:hover { color:var(--soft-pink); }
.difference { display:flex; align-items:center; min-height:670px; padding:9vw; color:var(--white); background:linear-gradient(90deg,rgba(18,12,12,.85),rgba(18,12,12,.10)),url("https://images.unsplash.com/photo-1492684223066-81342ee5ff30?auto=format&fit=crop&w=1900&q=85") center/cover; }
.difference>div { max-width:630px; }
.difference p { max-width:470px; font-size:13px; line-height:1.8; }
.contact { display:grid; grid-template-columns:1fr 1fr; gap:8vw; padding:100px 8vw; background:#221b1b; color:var(--white); }
.contact form { display:grid; gap:12px; }
.contact input,.contact select,.contact textarea { padding:15px 3px; border:0; border-bottom:1px solid #665c59; border-radius:0; background:transparent; color:var(--white); font:11px Arial,sans-serif; }
.contact select option { color:var(--ink); }
.contact textarea { height:90px; resize:vertical; }
.contact button { border:0; padding:15px; background:var(--accent); color:var(--white); font-size:9px; font-weight:700; cursor:pointer; }
@media (max-width:800px) {
  .public-site nav div a:not(.talk) { display:none; }
  .services { grid-template-columns:1fr 1fr; }
  .contact { grid-template-columns:1fr; }
  .public-hero { padding:40px; }
  .public-section { padding:70px 25px; }
  .wedding-gallery { padding:80px 25px; }
  .milestone-gallery { padding:80px 25px; }
  .corporate-gallery { padding:80px 25px; }
  .headshot-gallery { padding:80px 25px; }
  .headshot-grid { grid-template-columns:1fr 1fr; }
  .portrait-gallery { padding:80px 25px; }
  .portrait-grid { grid-template-columns:1fr 1fr; }
  .gallery-lightbox[open] { grid-template-columns:50px minmax(0,1fr) 50px; }
  .gallery-lightbox figure { padding:55px 4px 48px; }
  .lightbox-close { top:10px; right:10px; }
}

.public-footer{padding:3rem 6vw;background:#171313;color:#fff;display:grid;gap:1rem}
.public-footer p{max-width:62ch;margin:0;line-height:1.55}
.public-footer nav{display:flex;flex-wrap:wrap;gap:.75rem 1.4rem}
.public-footer a{color:#fff;font-size:.78rem;letter-spacing:.09em;text-decoration:none}
.public-footer a:hover,.public-footer a:focus-visible{color:#f3a8b8;text-decoration:underline}
.public-footer small{color:#d8cccc}
.wedding-gallery,.milestone-gallery,.corporate-gallery,.headshot-gallery,.portrait-gallery{content-visibility:auto;contain-intrinsic-size:900px}
@media (max-width:500px) {
  .services { grid-template-columns:1fr; }
  .services img { height:auto; }
  .public-site nav { padding:0 18px; }
  .public-hero h1 { font-size:52px; }
  .difference { padding:55px 25px; }
  .wedding-grid { columns:2 145px; column-gap:8px; }
  .wedding-grid figure { margin-bottom:8px; }
  .milestone-grid { columns:2 145px; column-gap:8px; }
  .milestone-grid figure { margin-bottom:8px; }
  .corporate-grid { columns:2 145px; column-gap:8px; }
  .corporate-grid figure { margin-bottom:8px; }
  .headshot-grid { gap:8px; }
  .portrait-grid { gap:8px; }
}
