@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500&family=Manrope:wght@300;400;500&display=swap');

:root { --paper:#f3f0e9; --ink:#161616; --muted:#77736c; --line:#cbc6bc; --pad:clamp(1.25rem,3.5vw,4.5rem); }
* { box-sizing:border-box; }
.visually-hidden { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:"DM Sans",sans-serif; height:100vh; height:100svh; overflow:hidden; display:flex; flex-direction:column; }
button,a { color:inherit; font:inherit; }
button { cursor:pointer; }
.site-header { height:84px; flex:0 0 84px; padding:2px var(--pad); display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); position:relative; z-index:20; }
.brand { width:205px; height:76px; border:0; background:none; padding:0; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.brand img { display:block; width:200px; height:auto; object-fit:contain; }
.main-nav { display:flex; gap:clamp(1.25rem,2.6vw,3.4rem); align-items:center; }
.nav-link { border:0; padding:.65rem 0; background:transparent; text-transform:uppercase; letter-spacing:.13em; font-size:.69rem; position:relative; }
.nav-link::after { content:""; position:absolute; height:1px; left:0; bottom:4px; width:100%; background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .35s ease; }
.nav-link:hover::after,.nav-link.is-active::after { transform:scaleX(1); transform-origin:left; }
.menu-toggle { display:none; }
main { overflow:hidden; flex:1 1 auto; min-height:0; }
.gallery-page { height:100%; padding:12px 0 10px; display:flex; flex-direction:column; }
.page-heading { flex:0 0 52px; padding:0 var(--pad); display:grid; grid-template-columns:minmax(180px,.65fr) 1.35fr; column-gap:3rem; align-items:center; margin-bottom:10px; }
.eyebrow { display:none; }
h1 { font-family:"Manrope",sans-serif; font-size:clamp(2.1rem,3vw,3rem); line-height:.9; font-weight:300; letter-spacing:-.06em; margin:0; grid-column:1; }
.intro { grid-column:2; grid-row:1; max-width:34rem; margin:0; font-size:clamp(.82rem,1vw,1rem); line-height:1.4; font-weight:300; }
.carousel { flex:1 1 auto; min-height:0; max-height:none; display:flex; flex-direction:column; position:relative; }
.track { flex:1 1 auto; min-height:0; display:flex; gap:clamp(.7rem,1.2vw,1.2rem); padding:0 var(--pad); overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; outline:none; cursor:grab; }
.track::-webkit-scrollbar { display:none; }
.track:active { cursor:grabbing; }
.slide { position:relative; flex:0 0 auto; width:auto; height:100%; min-height:0; margin:0; scroll-snap-align:center; }
.slide img { width:auto; max-width:none; height:100%; min-height:0; object-fit:contain; display:block; filter:saturate(.88); background:#ddd8ce; }
.carousel-controls { position:absolute; inset:0 var(--pad); z-index:4; padding:0; display:flex; justify-content:space-between; align-items:center; pointer-events:none; }
.carousel-controls p { position:absolute; right:50px; bottom:12px; margin:0; padding:.5rem .65rem; background:rgba(243,240,233,.88); font-size:.66rem; letter-spacing:.12em; backdrop-filter:blur(5px); }
.arrow { width:40px; height:40px; border:1px solid rgba(22,22,22,.2); border-radius:50%; background:rgba(243,240,233,.88); font-size:1rem; transition:.25s ease; pointer-events:auto; backdrop-filter:blur(5px); }
.arrow:hover { color:var(--paper); background:var(--ink); border-color:var(--ink); transform:scale(1.04); }
body.is-grid-page { height:auto; min-height:100svh; overflow-y:auto; }
body.is-grid-page main { flex:none; min-height:calc(100svh - 128px); overflow:visible; }
body.is-grid-page footer { flex:0 0 44px; }
.grid-page { height:auto; min-height:calc(100svh - 128px); padding:12px 0; display:block; }
.grid-page .page-heading { margin-bottom:10px; }
.masonry-grid { columns:3; column-gap:12px; padding:0 var(--pad); }
.masonry-grid figure { position:relative; display:inline-block; width:100%; vertical-align:top; break-inside:avoid; margin:0 0 12px; overflow:hidden; background:#ddd8ce; }
.masonry-grid img { display:block; width:100%; height:auto; cursor:zoom-in; transition:transform .45s ease, filter .45s ease; }
.gallery-page img,.lightbox img { -webkit-user-drag:none; -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }
.masonry-grid figure:hover img { transform:scale(1.015); filter:saturate(.88); }
.lightbox { width:100vw; max-width:none; height:100vh; max-height:none; margin:0; padding:clamp(1rem,3vw,3rem); border:0; background:#111; color:#fff; overflow:hidden; }
.lightbox[open] { display:grid; grid-template-columns:58px minmax(0,1fr) 58px; align-items:center; }
.lightbox::backdrop { background:rgba(0,0,0,.92); }
.lightbox figure { min-width:0; height:100%; margin:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.lightbox img { display:block; max-width:100%; max-height:calc(100vh - 7rem); width:auto; height:auto; object-fit:contain; }
.lightbox-close { position:absolute; top:1rem; right:1.25rem; width:44px; height:44px; border:0; background:transparent; color:#fff; font-size:2rem; line-height:1; }
.lightbox-arrow { width:46px; height:46px; border:1px solid #555; border-radius:50%; background:transparent; color:#fff; }
.contact-page { height:100%; padding:clamp(2rem,4vw,3.8rem) var(--pad); display:grid; grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr); gap:clamp(3rem,8vw,9rem); align-items:start; overflow:auto; }
.contact-page[hidden] { display:none; }
.contact-copy h1 { font-size:clamp(3.1rem,6vw,6.4rem); max-width:800px; }
.contact-copy > p:last-child { max-width:520px; font-size:clamp(1rem,1.4vw,1.2rem); line-height:1.5; margin:1.5rem 0 0; }
.contact-form { border-top:1px solid var(--ink); padding-top:1.5rem; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; }
.field { display:block; margin-bottom:1.05rem; }
.field > span { display:block; margin-bottom:.65rem; font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.field input,.field select,.field textarea { width:100%; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; padding:.5rem 0 .65rem; color:var(--ink); font:inherit; font-size:.9rem; outline:none; }
.field textarea { resize:vertical; min-height:90px; line-height:1.45; }
.field input:focus,.field select:focus,.field textarea:focus { border-color:var(--ink); }
.field input::placeholder,.field textarea::placeholder { color:#9b968d; }
.field input:user-invalid,.field textarea:user-invalid { border-color:#a33d31; }
.form-footer { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; margin-top:.7rem; }
.form-status { margin:0; max-width:20rem; color:var(--muted); font-size:.78rem; line-height:1.45; }
.submit-button { min-width:175px; border:1px solid var(--ink); background:var(--ink); color:var(--paper); padding:1rem 1.1rem; display:flex; justify-content:space-between; gap:1rem; transition:.25s ease; }
.submit-button:hover { background:transparent; color:var(--ink); }
.submit-button:disabled { cursor:wait; opacity:.6; }
footer { flex:0 0 44px; min-height:44px; margin:0 var(--pad); border-top:1px solid var(--line); padding:7px 0; display:flex; align-items:center; justify-content:space-between; font-size:.6rem; text-transform:uppercase; letter-spacing:.1em; color:var(--muted); }
footer p { margin:0; }
.footer-actions { display:flex; align-items:center; gap:1rem; }
.back-to-top { border:0; background:none; padding:.5rem 0; text-transform:uppercase; letter-spacing:.1em; font-size:inherit; }
.social-links { display:flex; align-items:center; gap:.45rem; }
.social-links a { width:28px; height:28px; display:grid; place-items:center; border:1px solid var(--line); border-radius:50%; transition:.25s ease; }
.social-links a:hover { color:var(--paper); background:var(--ink); border-color:var(--ink); transform:translateY(-1px); }
.social-links svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.7; }
.social-links svg path,.social-links .icon-dot { fill:currentColor; stroke:none; }
.gallery-page[hidden] { display:none; }
@media (max-width:760px) {
  body { display:block; height:auto; min-height:100svh; overflow:auto; }
  main { min-height:auto; overflow:hidden; }
  .site-header { height:94px; min-height:94px; padding-top:5px; }
  .brand { width:180px; height:88px; }
  .brand img { width:180px; }
  .menu-toggle { display:flex; width:48px; height:48px; border:0; background:transparent; padding:8px 0; flex-direction:column; align-items:flex-end; justify-content:center; gap:6px; z-index:2; }
  .menu-toggle span { font-size:.6rem; text-transform:uppercase; letter-spacing:.12em; }
  .menu-toggle i { width:24px; height:1px; background:currentColor; transition:.3s; }
  .main-nav { display:none; position:fixed; inset:0; background:var(--paper); padding:9rem var(--pad) 3rem; flex-direction:column; align-items:flex-start; gap:1.5rem; }
  .main-nav.is-open { display:flex; }
  .main-nav .nav-link { font-family:"Manrope"; font-size:clamp(2.4rem,12vw,4rem); text-transform:none; letter-spacing:-.04em; }
  .gallery-page { height:auto; min-height:calc(100svh - 94px); padding:1.5rem 0 2rem; display:block; }
  .page-heading { grid-template-columns:1fr; margin-bottom:1.7rem; }
  .eyebrow { display:block; }
  h1 { font-size:clamp(3rem,15vw,5rem); }
  .intro { grid-column:1; grid-row:auto; margin-top:1.7rem; }
  .carousel { display:block; }
  .track { height:auto; }
  .slide { flex:0 0 auto; width:auto; height:56vh; min-height:350px; display:block; }
  .slide img { width:auto; max-width:none; height:100%; min-height:0; }
  .carousel-controls { inset:0 var(--pad); min-height:0; padding:0; justify-content:space-between; }
  .carousel-controls p { right:48px; bottom:10px; }
  .arrow { width:42px; height:42px; }
  .contact-page { height:auto; grid-template-columns:1fr; align-items:start; min-height:auto; padding:3rem var(--pad); overflow:visible; }
  .contact-copy h1 { line-height:.92; }
  .field-row { grid-template-columns:1fr; gap:0; }
  .form-footer { align-items:flex-start; flex-direction:column; }
  .submit-button { width:100%; }
  footer { min-height:auto; padding:1.2rem 0 1.7rem; flex-wrap:wrap; gap:1rem; }.footer-tagline { width:100%; order:3; }
  .footer-actions { margin-left:auto; }
  .masonry-grid { columns:1; }
  .lightbox { padding:3.5rem .75rem 1rem; }
  .lightbox[open] { grid-template-columns:42px minmax(0,1fr) 42px; }
  .lightbox-arrow { width:38px; height:38px; }
}
@media (min-width:561px) and (max-width:760px) {
  body { display:flex; height:100svh; min-height:0; overflow:hidden; }
  main { flex:1 1 auto; min-height:0; overflow:hidden; }
  .gallery-page { height:100%; min-height:0; padding:10px 0; display:flex; flex-direction:column; }
  .page-heading { flex:0 0 52px; grid-template-columns:190px 1fr; column-gap:1.5rem; align-items:center; margin-bottom:8px; }
  .eyebrow { display:none; }
  h1 { font-size:2.75rem; }
  .intro { grid-column:2; grid-row:1; margin:0; font-size:.82rem; line-height:1.35; }
  .carousel { display:flex; max-height:none; }
  .track { height:auto; }
  .slide { height:100%; min-height:0; flex:0 0 auto; width:auto; }
  .contact-page { height:100%; min-height:0; padding:2rem var(--pad); overflow:auto; }
  footer { flex:0 0 42px; min-height:42px; padding:6px 0; flex-wrap:nowrap; gap:1rem; }
  footer .footer-tagline { width:auto; order:initial; }
  body.is-grid-page { height:auto; min-height:100svh; overflow-y:auto; }
  body.is-grid-page main { overflow:visible; }
  .grid-page { display:block; height:auto; min-height:calc(100svh - 136px); padding:10px 0; }
  .masonry-grid { columns:2; }
}
@media (max-width:560px) {
  #recent .carousel { height:clamp(340px, calc(100svh - 330px), 720px); max-height:none; }
  #recent .track { height:100%; }
  #recent .slide { height:100%; min-height:0; }
}
@media (min-width:761px) and (max-width:1000px) { .masonry-grid { columns:2; } }
@media (prefers-reduced-motion:reduce) { html{scroll-behavior:auto}.track{scroll-behavior:auto}*{transition:none!important} }
