@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap');

:root{
  --paper:#f2f3f5;
  --ink:#17181b;
  --muted:#555b65;
  --olive:#5f6672;
  --line:#d3d5d9;
  --sans:'Space Grotesk',Arial,sans-serif;
  --serif:'Space Grotesk',Arial,sans-serif;
}
body{background:var(--paper);font-family:var(--sans);color:var(--ink)}
.site-loader{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;background:#000;color:#f4f5f7;opacity:1;visibility:visible;transition:opacity .55s ease,visibility .55s ease}
.site-loader::before{content:"";position:absolute;inset:22px;border:1px solid rgba(244,245,247,.13);pointer-events:none}
.site-loader.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.site-loader__inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;padding:24px;position:relative}
.site-loader__eyebrow{margin:0 0 22px;color:#858a93;font:600 9px var(--sans);letter-spacing:.22em;text-transform:uppercase}
.site-loader__logo{display:block;width:min(560px,88vw);height:auto;max-height:120px;object-fit:contain}
.site-loader__tagline{margin:-7px 0 18px;color:#d3d5d9;font:500 12px var(--sans);letter-spacing:.28em;text-transform:uppercase}
.site-loader__status{margin:18px 0 0;color:#b5bac3;font:500 10px var(--sans);letter-spacing:.16em;text-transform:uppercase}
.site-loader__dots{display:inline-block;width:18px;text-align:left;animation:loader-dots 1.15s steps(4,end) infinite}
.site-loader__bar{width:min(180px,48vw);height:1px;margin-top:4px;background:#34363b;overflow:hidden}
.site-loader__bar span{display:block;width:42%;height:100%;background:#f4f5f7;animation:loader-progress 1.35s ease-in-out infinite}
@keyframes loader-progress{0%{transform:translateX(-110%)}55%,100%{transform:translateX(300%)}}
@keyframes loader-dots{0%{width:6px}50%{width:12px}100%{width:18px}}
@media(prefers-reduced-motion:reduce){.site-loader,.site-loader__dots,.site-loader__bar span{animation:none;transition:none}.site-loader__bar span{transform:translateX(140%)}}
.site-header{background:#151619;color:#f4f5f7;border-color:#34363b}
.site-header .wordmark{font-family:var(--sans);letter-spacing:.13em}
.site-header .wordmark img{object-fit:contain}
.site-header .main-nav{font-size:10px;letter-spacing:.11em;text-transform:uppercase}
.site-header .main-nav a{color:#eceef1}
.site-header .nav-contact{border-color:#c5c8ce}
.site-header .menu-toggle span{background:#f4f5f7}
.eyebrow{color:#555b65;font-weight:600;letter-spacing:.16em}
.hero h1,.section-heading h2,.about h2,.contact h2,
.gallery-welcome h1,.access-note h2,.manager-note h2,
.access-card h2,.manager-card h2,.photo-gallery-heading h2{
  font-family:var(--sans);
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:-.055em;
}
.hero h1{font-size:clamp(42px,4.8vw,68px);line-height:.99}
.hero h1 em,.section-heading h2 em,.about h2 em,.contact h2 em,
.gallery-welcome h1 em,.access-note h2 em,.manager-note h2 em{
  font-style:normal;
  font-weight:500;
  color:#858a93;
}
.hero-intro,.about-copy>p:not(.eyebrow),.contact-copy>p:first-child,
.gallery-welcome>p:last-child,.access-intro,.access-note>p:not(.eyebrow),
.manager-note li,.gallery-help p{
  font-family:var(--sans);
}
.hero-image figcaption,.instagram-caption,.instagram-footnote,
.card-label p,.small-note,footer>p,footer small,.back-top{
  font-family:var(--sans);
}
.intro-strip p{font-weight:600;text-transform:uppercase}
.intro-strip p em{font:600 12px var(--sans);letter-spacing:.12em;color:#777c85}
.strip-note{font:500 11px var(--sans);letter-spacing:.04em}
.section-heading h2{font-size:clamp(34px,4vw,48px)}
.card-label h3{font:600 21px var(--sans);text-transform:uppercase;letter-spacing:-.025em}
.card-label h3 i{font:500 12px var(--sans)}
.about{background:#e5e7ea}
.about h2{font-size:clamp(38px,4vw,50px)}
.about-image img{filter:saturate(.78)}
.button-link,.gallery-button{font-family:var(--sans);font-weight:600;text-transform:uppercase;letter-spacing:.1em}
.button-link{background:#17181b;color:#f2f3f5}
.quote-band{background:#292b30}
.reviews-band{background:#17181b}
.reviews-band .eyebrow{color:#b5bac3}
.reviews-band h2{font-family:var(--sans);font-weight:600;text-transform:uppercase;letter-spacing:-.05em}
.reviews-band h2 em{font-style:normal;color:#aeb3bc}
.reviews-mark{color:#b5bac3}
.contact-copy>p:first-child{font:500 15px/1.75 var(--sans)}
.contact-email,.contact-phone{font:500 16px var(--sans);letter-spacing:.015em}
.contact-email span,.contact-phone span{font:12px var(--sans);color:#858a93}
.instagram-archive{background:#e4e6e9}
.instagram-card blockquote.instagram-media{background:#f7f7f8!important;border-color:#d4d6da!important;border-radius:0!important}
.site-header .menu-toggle{border-radius:0}
.gallery-page{background:var(--paper)}
.access-card,.manager-card{background:#fafafb;border-color:#d2d4d8;box-shadow:0 18px 55px rgba(23,24,27,.07)}
.lock-mark{background:#e3e5e9;color:#555a63}
.file-drop{background:#f1f2f4;border-color:#aaafb8}
.file-drop:hover{background:#e7e9ed;border-color:#555a63}
.password-row input,.text-input{font-family:var(--sans);background:#fff;border-color:#c8cbd1}
.password-row input:focus,.text-input:focus{outline-color:#858a93}
.gallery-button{background:#17181b;color:#f4f5f7}
.gallery-button:hover:not(:disabled){background:#34363b}
.hosting-note{background:#e5e7ea}
.photo-gallery{border-color:#c8cbd1}
.client-photo{background:#e3e5e9}

/* WCAG keyboard access and focus visibility */
.skip-link{position:fixed;left:12px;top:12px;z-index:1000;transform:translateY(-180%);padding:12px 16px;background:#17181b;color:#f7f8fa;font:600 12px/1 var(--sans);letter-spacing:.04em;transition:transform .15s ease}
.skip-link:focus{transform:translateY(0);outline:3px solid #f7f8fa;outline-offset:3px}
:where(a,button,input,select,textarea):focus-visible{outline:3px solid #3f4753;outline-offset:3px}
.site-header :where(a,button):focus-visible,.reviews-band :where(a,button):focus-visible,footer :where(a,button):focus-visible{outline-color:#f2f3f5}
:target{scroll-margin-top:104px}
@media(max-width:620px){
  .site-header .main-nav{font-size:11px}
  .site-header .main-nav{background:#151619;border-bottom-color:#34363b}
  .site-header .main-nav a{color:#eceef1}
  .hero h1{font-size:clamp(39px,12vw,53px)}
  .section-heading h2{font-size:38px}
  .card-label h3{font-size:18px}
}

.image-stamp{background:#17181b;color:#f5f6f8;width:66px;height:66px}.image-stamp img{display:block;width:47px;height:30px;object-fit:contain}

.hero-copy .est-year{display:block;margin:9px 0 0 39px;font-size:8px;letter-spacing:.18em;color:#777c85}

.reviews-mark{font-size:0}.reviews-mark svg{display:block;width:112px;height:112px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

.comments{background:#e4e6e9;padding-top:96px;padding-bottom:100px}
.comments .section-heading{margin-bottom:42px}
.comments-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:1040px;margin:0 auto}
.comment-card{min-height:205px;background:#f6f7f8;padding:23px 25px 20px;border-top:2px solid #17181b;display:flex;flex-direction:column}
.comment-mark{font:500 38px/.8 var(--sans);color:#999ea7}
.comment-card blockquote{font:500 21px/1.4 var(--sans);letter-spacing:-.025em;margin:20px 0 28px}
.comment-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;font-size:9px;letter-spacing:.04em}
.comment-meta span{color:#686c74}
.comment-meta a{color:#34373c;border-bottom:1px solid #aeb2ba;padding-bottom:4px;white-space:nowrap}
.comment-meta a:hover{color:#777c85}
.comments-note{font-size:9px;color:#686c74;margin:22px 0 0;letter-spacing:.02em}
@media(max-width:800px){.comments{padding-top:78px;padding-bottom:82px}.comments-grid{gap:12px}.comment-card{padding:19px 18px;min-height:190px}.comment-meta{flex-wrap:wrap}}
@media(max-width:620px){.comments-grid{grid-template-columns:1fr}.comment-card{min-height:155px}.comment-card blockquote{margin:14px 0 21px}}

.comment-card--invite{background:#17181b;color:#f4f5f7;border-top-color:#aeb3bc}.comment-card--invite .eyebrow{color:#b5bac3;margin:0}.comment-card--invite h3{font:600 19px/1.25 var(--sans);letter-spacing:-.03em;text-transform:uppercase;margin:20px 0 7px}.comment-card--invite>p:not(.eyebrow){font-size:11px;color:#c2c5cb;margin:0 0 20px}.comment-card--invite .comment-meta span,.comment-card--invite .comment-meta a{color:#e7e9ed}.comment-card--invite .comment-meta a{border-color:#858a93}

.owner-access{max-width:1080px;margin:72px auto 0;padding-top:52px;border-top:1px solid var(--line)}
.owner-access-heading{max-width:640px;margin-bottom:34px}
.owner-access-heading .eyebrow{margin-bottom:14px}
.owner-access-heading h2{font:600 clamp(30px,4vw,42px)/1.1 var(--sans);text-transform:uppercase;letter-spacing:-.05em;margin:0}
.owner-access-heading>p:last-child{font:400 12px/1.7 var(--sans);color:var(--muted);max-width:520px}
.owner-access .gallery-access{max-width:none}
.owner-access .access-card h2{margin-top:0}
@media(max-width:800px){.owner-access{margin-top:55px;padding-top:40px}}
.military-card .card-label h3{font-size:clamp(20px,2.4vw,27px)}
.work .gallery-carousel-controls{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin:-27px 0 25px}
.gallery-count{margin-right:auto;color:var(--muted);font:500 9px var(--sans);letter-spacing:.16em}
.gallery-play{width:39px;height:39px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);font:12px var(--sans);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.gallery-play:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.work .gallery{display:block;overflow:hidden;padding:8px 0 20px}
.gallery-track{display:flex;width:max-content;transform:translate3d(0,0,0);will-change:transform}
.gallery-group{display:flex;flex:none;gap:clamp(24px,5.5vw,72px);padding-right:clamp(24px,5.5vw,72px)}
.work .gallery-card{flex:0 0 clamp(280px,42vw,510px);min-width:0;margin-top:0}
.work .portrait-card,.work .engagement-card,.work .promotion-card,.work .sports-card{flex-basis:clamp(260px,32vw,410px)}
.work .wedding-card{flex-basis:clamp(520px,80vw,920px)}
.work .moment-card{flex-basis:clamp(520px,80vw,920px)}
.work .gallery-card img{display:block;width:100%;height:auto;aspect-ratio:auto;object-fit:cover}
.work .moment-media{position:relative;overflow:hidden;background:transparent}
.work .moment-media img{width:100%;height:auto;aspect-ratio:auto;object-fit:cover}
.work .gallery-card.is-active img{animation:story-focus .55s ease both}
@keyframes story-focus{from{filter:saturate(.65);transform:scale(.985)}to{filter:saturate(.88);transform:scale(1)}}
@media(max-width:620px){.work .gallery-carousel-controls{margin:-10px 0 18px}.work .gallery-card{flex-basis:78vw}.work .portrait-card,.work .engagement-card,.work .promotion-card,.work .sports-card{flex-basis:42vw}.work .wedding-card,.work .moment-card{flex-basis:94vw}.gallery-group{gap:18px;padding-right:18px}.gallery-play{width:35px;height:35px}}
@media(prefers-reduced-motion:reduce){.work .gallery-card.is-active img{animation:none}}
