
:root{
  --bg:#f1eee8;
  --ink:#121110;
  --soft:#d7d0c6;
  --red:#a52318;
  --night:#000;
  --max:1380px;
  --mobile-hero-fit:contain;
  --mobile-hero-position:center;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit}
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;height:68px;
  padding:0 max(22px,calc((100vw - var(--max))/2));
  display:flex;align-items:center;justify-content:space-between;gap:28px;
  color:#fff;background:linear-gradient(to bottom,rgba(0,0,0,.68),transparent)
}
.logo{text-decoration:none;font-size:12px;font-weight:800;letter-spacing:.17em}
.logo span{font-weight:400}
.nav nav{display:flex;gap:23px;align-items:center}
.nav nav a{text-decoration:none;font-size:10px;letter-spacing:.09em;text-transform:uppercase}
.menu{display:none;color:#fff;border:0;background:none;font-size:11px;letter-spacing:.12em}

.hero{height:100svh;min-height:680px;position:relative;background:#000;color:#fff;overflow:hidden}
.hero-media{position:absolute;inset:0}
.hero-image{width:100%;height:100%;object-fit:cover;object-position:center 45%}
.hero-overlay{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(0,0,0,.78) 0%,rgba(0,0,0,.34) 46%,rgba(0,0,0,.05) 75%),
             linear-gradient(0deg,rgba(0,0,0,.48),transparent 48%)
}
.hero-copy{position:absolute;left:max(24px,calc((100vw - var(--max))/2));bottom:9vh;max-width:760px;z-index:2}
.eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:10px;margin:0 0 18px}
.hero h1,.section h2,.contact h2{
  font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.055em
}
.hero h1{font-size:clamp(72px,10.5vw,158px);line-height:.77;margin:0 0 28px}
.hero h1 em{font-weight:400;color:#e5dbce}
.hero-sub{max-width:480px;font-size:15px;line-height:1.6;color:rgba(255,255,255,.86)}
.pill{
  display:inline-block;margin-top:18px;border:1px solid rgba(255,255,255,.72);border-radius:999px;
  padding:12px 17px;text-decoration:none;font-size:11px;letter-spacing:.08em;text-transform:uppercase
}
.hero-index{position:absolute;right:max(22px,calc((100vw - var(--max))/2));bottom:32px;font-size:10px;letter-spacing:.15em;text-transform:uppercase;z-index:2}

.section{max-width:var(--max);margin:0 auto;padding:110px 24px}
.intro-grid{display:grid;grid-template-columns:1fr 390px;gap:70px;align-items:end;margin-bottom:54px}
.section h2{font-size:clamp(54px,7vw,100px);line-height:.9;margin:0}
.section-copy{font-size:14px;line-height:1.65;margin:0;color:#615b54}
.dark-section{max-width:none;background:#080808;color:#eee;padding-left:max(24px,calc((100vw - var(--max))/2));padding-right:max(24px,calc((100vw - var(--max))/2))}
.dark-section .section-copy{color:#aaa}
.dark-section>.intro-grid,.dark-section>.gallery,.dark-section>.design-project{max-width:var(--max);margin-left:auto;margin-right:auto}

.photo-card{border:0;background:none;padding:0;cursor:zoom-in;overflow:hidden;position:relative}
.photo-card img{width:100%;height:100%;object-fit:cover;transition:transform .45s ease}
.photo-card:hover img{transform:scale(1.012)}
.photo-caption{
  position:absolute;left:10px;right:10px;bottom:10px;padding:7px 9px;
  background:rgba(0,0,0,.58);color:#fff;font-size:10px;text-align:left;opacity:0;transition:opacity .2s
}
.photo-card:hover .photo-caption{opacity:1}

.gallery-masonry{columns:3 300px;column-gap:12px}
.gallery-masonry .photo-card{display:block;width:100%;margin:0 0 12px;break-inside:avoid}
.gallery-masonry .photo-card img{width:100%;height:auto}
.gallery-editorial{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.gallery-editorial .photo-card{grid-column:span 4;aspect-ratio:3/4}
.gallery-editorial .photo-card:nth-child(1){grid-column:span 7;grid-row:span 2;aspect-ratio:4/5}
.gallery-editorial .photo-card:nth-child(2),.gallery-editorial .photo-card:nth-child(3){grid-column:span 5;aspect-ratio:4/5}
.gallery-editorial .photo-card:nth-child(7),.gallery-editorial .photo-card:nth-child(8){grid-column:span 6;aspect-ratio:4/5}
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.gallery-grid .photo-card{aspect-ratio:4/5}

.design-section{overflow:hidden}
.design-project{padding:74px 0;border-top:1px solid rgba(255,255,255,.18)}
.design-project:last-child{padding-bottom:8px}
.design-project-head{display:grid;grid-template-columns:75px minmax(0,1fr);gap:22px;margin-bottom:34px;align-items:start}
.design-number{font-family:Georgia,serif;font-size:21px;color:#777}
.design-project h3{font-family:Georgia,serif;font-size:clamp(38px,5vw,70px);font-weight:400;line-height:.95;letter-spacing:-.045em;margin:0 0 12px}
.design-project-head p{max-width:620px;margin:0;color:#aaa;line-height:1.6;font-size:13px}
.design-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:stretch}
.design-card{
  min-height:280px;aspect-ratio:4/5;background:#f3f0e9;
  display:flex;align-items:center;justify-content:center
}
.design-card img{object-fit:contain;background:#f3f0e9;padding:8px}

.about{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.85fr);gap:8vw;align-items:center}
.about-photo{min-height:650px;background:#d3cbc0;overflow:hidden}
.about-photo img{width:100%;height:100%;min-height:650px;object-fit:cover}
.about-copy h2{margin:0 0 28px}
.big-copy{font-family:Georgia,serif;font-size:clamp(27px,3vw,43px);line-height:1.17;letter-spacing:-.025em}
.about-copy>p:not(.eyebrow):not(.big-copy){font-size:15px;line-height:1.7;max-width:560px;color:#5e5750}
.text-link{display:inline-block;margin-top:18px;text-underline-offset:5px}

.contact{background:var(--red);color:#fff;padding:120px max(24px,calc((100vw - var(--max))/2))}
.contact h2{font-size:clamp(68px,9vw,136px);line-height:.82;margin:0 0 48px}
.contact-row{display:flex;gap:14px;flex-wrap:wrap}
.contact-row a{border:1px solid rgba(255,255,255,.65);border-radius:999px;padding:12px 18px;text-decoration:none;font-size:12px}

footer{max-width:var(--max);margin:auto;padding:30px 24px 42px;display:flex;justify-content:space-between;gap:20px;font-size:10px;letter-spacing:.12em;text-transform:uppercase}

.lightbox{
  width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:32px;border:0;background:rgba(0,0,0,.97);
  flex-direction:column
}
.lightbox::backdrop{background:rgba(0,0,0,.97)}
.lightbox[open]{display:flex;align-items:center;justify-content:center}
.lightbox img{max-width:92vw;max-height:86vh;object-fit:contain}
.lightbox-caption{color:#fff;font-size:12px;margin:12px 0 0;max-width:760px;text-align:center}
.close{position:fixed;right:24px;top:18px;border:0;background:none;color:#fff;font-size:42px;cursor:pointer}
.load-error{position:fixed;left:16px;right:16px;bottom:16px;z-index:999;background:#fff2c9;color:#291f00;padding:14px;border:1px solid #caa74a;font-size:13px}

@media(max-width:900px){
  /* Header floats ON TOP of the hero photo, like the earlier version. */
  .nav{
    position:absolute;top:0;left:0;right:0;height:64px;padding:0 18px;
    background:linear-gradient(to bottom,rgba(0,0,0,.62),rgba(0,0,0,0));
    color:#fff
  }
  .nav nav{
    display:none;position:absolute;top:64px;left:0;right:0;padding:22px 18px 28px;
    background:#000;flex-direction:column;align-items:flex-start;border-top:1px solid #242424
  }
  .nav nav.open{display:flex}
  .menu{display:block}

  /* Mobile hero: photo is its own clean frame; every word sits on pure black. */
  .hero{
    height:auto;min-height:0;display:flex;flex-direction:column;background:#000;overflow:visible
  }
  .hero-media{
    position:relative;inset:auto;width:100%;height:auto;
    background:#000;display:block
  }
  .hero-image{
    width:100%;height:auto;max-height:none;
    object-fit:contain;
    object-position:var(--mobile-hero-position);
    background:#000
  }
  .hero-overlay{display:none}
  .hero-copy{
    position:relative;left:auto;right:auto;bottom:auto;max-width:none;
    padding:44px 20px 62px;background:#000;color:#fff
  }
  .hero h1{font-size:clamp(64px,18vw,108px);line-height:.78;margin-bottom:26px}
  .hero-sub{font-size:14px;max-width:520px}
  .hero-index{display:none}

  .intro-grid{grid-template-columns:1fr;gap:20px}
  .gallery-editorial{grid-template-columns:repeat(2,1fr)}
  .gallery-editorial .photo-card,.gallery-editorial .photo-card:nth-child(n){grid-column:span 1;aspect-ratio:3/4}
  .gallery-editorial .photo-card:nth-child(1){grid-column:span 2;aspect-ratio:4/5}
  .gallery-grid{grid-template-columns:repeat(2,1fr)}
  .design-grid{grid-template-columns:repeat(2,1fr)}
  .design-project-head{grid-template-columns:48px 1fr}
  .about{grid-template-columns:1fr;gap:44px}
  .about-photo,.about-photo img{min-height:520px}
}
@media(max-width:560px){
  .section{padding:82px 14px}
  .dark-section{padding-left:14px;padding-right:14px}
  .logo{font-size:10px}
  .hero-media{height:auto;padding:0}
  .hero-copy{padding:38px 18px 56px}
  .hero h1{font-size:clamp(62px,19vw,96px)}
  .hero-sub{font-size:13px}
  .gallery-masonry{columns:2 150px;column-gap:7px}
  .gallery-masonry .photo-card{margin-bottom:7px}
  .gallery-editorial,.gallery-grid,.design-grid{gap:7px}
  .design-project{padding:56px 0}
  .design-project-head{grid-template-columns:1fr;gap:8px}
  .design-number{font-size:15px}
  .design-grid{grid-template-columns:repeat(2,1fr)}
  .design-card{min-height:180px}
  .about{padding-left:14px;padding-right:14px}
  .contact{padding:90px 16px}
  .contact-row{flex-direction:column;align-items:flex-start}
  footer{flex-direction:column;padding:28px 16px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .photo-card img{transition:none}
}


/* =========================
   V8 MOBILE REFINEMENTS
   ========================= */

/* Desktop/tablet unaffected. */
@media (max-width: 900px) {

  /* Top nav stays over hero image. */
  .nav{
    position:absolute;
    top:0;
    left:0;
    right:0;
    height:64px;
    padding:0 18px;
    background:linear-gradient(
      to bottom,
      rgba(0,0,0,.62) 0%,
      rgba(0,0,0,.30) 58%,
      rgba(0,0,0,0) 100%
    );
    color:#fff;
    z-index:200;
  }

  /* Right-side menu drawer instead of full-width dropdown. */
  .nav nav{
    display:flex;
    position:fixed;
    top:0;
    right:0;
    left:auto;
    width:min(78vw, 320px);
    height:100dvh;
    padding:92px 28px 34px;
    flex-direction:column;
    align-items:flex-start;
    gap:30px;
    background:rgba(0,0,0,.78);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    border-left:1px solid rgba(255,255,255,.08);
    border-top:0;
    transform:translateX(102%);
    opacity:0;
    pointer-events:none;
    transition:transform .26s ease, opacity .22s ease;
    z-index:210;
  }

  .nav nav.open{
    display:flex;
    transform:translateX(0);
    opacity:1;
    pointer-events:auto;
  }

  .nav nav a{
    width:100%;
    font-size:13px;
    letter-spacing:.15em;
    line-height:1.3;
  }

  .menu{
    display:block;
    position:relative;
    z-index:220;
  }

  /* Dim the rest of the page while the drawer is open. */
  body.menu-open::before{
    content:"";
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.34);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    z-index:205;
    pointer-events:auto;
  }

  body.menu-open{
    overflow:hidden;
  }

  /*
    Hero is exactly one mobile screen.
    Image occupies the top part; text fills the remaining black area.
    This prevents the white next section from peeking into the first screen.
  */
  .hero{
    height:100dvh;
    min-height:100dvh;
    display:grid;
    grid-template-rows:auto 1fr;
    background:#000;
    overflow:hidden;
  }

  .hero-media{
    position:relative;
    width:100%;
    height:auto;
    max-height:52dvh;
    background:#000;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
  }

  .hero-image{
    width:100%;
    height:auto;
    max-height:52dvh;
    object-fit:contain;
    object-position:var(--mobile-hero-position);
    background:#000;
  }

  .hero-overlay{display:none}

  .hero-copy{
    position:relative;
    left:auto;
    right:auto;
    bottom:auto;
    min-height:0;
    height:100%;
    padding:
      clamp(28px, 5.5dvh, 48px)
      20px
      clamp(28px, 4.5dvh, 44px);
    display:flex;
    flex-direction:column;
    justify-content:center;
    background:#000;
    color:#fff;
  }

  .hero-copy .eyebrow{
    margin-bottom:clamp(10px, 1.8dvh, 18px);
  }

  .hero h1{
    font-size:clamp(54px, 15.7vw, 94px);
    line-height:.79;
    margin:0 0 clamp(16px, 2.3dvh, 26px);
  }

  .hero-sub{
    margin:0;
    max-width:520px;
    font-size:clamp(12px, 3.25vw, 14px);
    line-height:1.55;
  }

  .hero .pill{
    margin-top:clamp(16px, 2.8dvh, 24px);
    align-self:flex-start;
  }

  .hero-index{display:none}
}

/* Extra small/short phones: tighten vertically, still keep the first screen fully black. */
@media (max-width: 560px) {
  .hero-media{
    max-height:46dvh;
  }

  .hero-image{
    max-height:46dvh;
  }

  .hero-copy{
    padding:clamp(22px, 4dvh, 34px) 18px clamp(22px, 4dvh, 34px);
  }

  .hero h1{
    font-size:clamp(50px, 16vw, 82px);
  }

  .hero-sub{
    font-size:12px;
  }

  .nav nav{
    width:min(82vw, 300px);
    padding:88px 24px 32px;
  }
}

/* Very short landscape-ish phones: reduce hero image so copy still fits in one viewport. */
@media (max-width: 900px) and (max-height: 700px) {
  .hero-media{
    max-height:42dvh;
  }
  .hero-image{
    max-height:42dvh;
  }
  .hero h1{
    font-size:clamp(46px, 13.5vw, 74px);
  }
  .hero-copy{
    padding-top:18px;
    padding-bottom:20px;
  }
}


/* =========================
   V8.1 MOBILE POLISH
   ========================= */

@media (max-width: 900px) {
  /* No blur anywhere when the menu is open. */
  .nav nav{
    width:min(74vw, 300px);
    background:rgba(0,0,0,.86);
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    box-shadow:-18px 0 50px rgba(0,0,0,.20);
  }

  body.menu-open::before{
    background:rgba(0,0,0,.38);
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }

  /* Keep the first screen exactly one viewport tall. */
  .hero{
    height:100dvh;
    min-height:100dvh;
    grid-template-rows:minmax(0, 43dvh) minmax(0, 57dvh);
  }

  .hero-media{
    width:100%;
    height:43dvh;
    max-height:none;
    overflow:hidden;
  }

  .hero-image{
    width:100%;
    height:100%;
    max-height:none;
    object-fit:contain;
    object-position:var(--mobile-hero-position);
  }

  /*
    Black text section:
    two balanced groups rather than everything bunched at the top.
    This removes the large dead area below the button.
  */
  .hero-copy{
    height:57dvh;
    min-height:0;
    padding:
      clamp(28px, 4.8dvh, 46px)
      clamp(18px, 5vw, 28px)
      clamp(26px, 4.2dvh, 42px);
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    gap:18px;
  }

  .hero-heading-group,
  .hero-action-group{
    width:100%;
  }

  .hero-heading-group{
    display:flex;
    flex-direction:column;
    gap:0;
  }

  .hero-action-group{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
  }

  .hero-copy .eyebrow{
    margin:0 0 clamp(9px, 1.4dvh, 14px);
    font-size:clamp(9px, 2.5vw, 11px);
    letter-spacing:.18em;
  }

  .hero h1{
    font-size:clamp(58px, 16.4vw, 92px);
    line-height:.76;
    letter-spacing:-.055em;
    margin:0;
  }

  .hero-sub{
    max-width:94%;
    margin:0;
    font-size:clamp(12px, 3.15vw, 14px);
    line-height:1.58;
  }

  .hero .pill{
    margin-top:clamp(18px, 2.4dvh, 24px);
    padding:11px 17px;
  }
}

@media (max-width: 560px) {
  .nav nav{
    width:min(76vw, 286px);
    padding:84px 23px 30px;
    gap:27px;
  }

  .hero{
    grid-template-rows:minmax(0, 41dvh) minmax(0, 59dvh);
  }

  .hero-media{
    height:41dvh;
  }

  .hero-copy{
    height:59dvh;
    padding:
      clamp(25px, 4.2dvh, 34px)
      18px
      clamp(24px, 3.8dvh, 32px);
  }

  .hero h1{
    font-size:clamp(54px, 16.8vw, 80px);
  }

  .hero-sub{
    max-width:100%;
  }
}

/* Very short phones: give text more vertical room, without exposing next section. */
@media (max-width: 900px) and (max-height: 720px) {
  .hero{
    grid-template-rows:minmax(0, 38dvh) minmax(0, 62dvh);
  }

  .hero-media{
    height:38dvh;
  }

  .hero-copy{
    height:62dvh;
    padding-top:20px;
    padding-bottom:22px;
  }

  .hero h1{
    font-size:clamp(49px, 14.7vw, 72px);
  }

  .hero .pill{
    margin-top:14px;
  }
}

/* Taller phones: a little more image, while keeping the text visually centered. */
@media (max-width: 900px) and (min-height: 900px) {
  .hero{
    grid-template-rows:minmax(0, 45dvh) minmax(0, 55dvh);
  }

  .hero-media{
    height:45dvh;
  }

  .hero-copy{
    height:55dvh;
  }
}


/* =========================
   V9 FINAL MOBILE HERO + MENU
   ========================= */

@media (max-width: 900px) {
  /*
    Match the photo width cleanly so the current 4:3 hero does not create
    the thin black letterbox strip above the image.
  */
  .hero{
    height:100dvh;
    min-height:100dvh;
    display:grid;
    grid-template-rows:min(44dvh, 75vw) minmax(0, 1fr);
    background:#000;
    overflow:hidden;
  }

  .hero-media{
    width:100%;
    height:min(44dvh, 75vw);
    max-height:none;
    margin:0;
    padding:0;
    background:#000;
    overflow:hidden;
  }

  .hero-image{
    display:block;
    width:100%;
    height:100%;
    max-height:none;
    object-fit:cover;
    object-position:var(--mobile-hero-position);
    margin:0;
    padding:0;
  }

  .hero-overlay{display:none}

  /*
    More compact, editorial text composition:
    no huge dead gap between the title and description.
  */
  .hero-copy{
    position:relative;
    height:auto;
    min-height:0;
    padding:
      clamp(26px, 4.3dvh, 40px)
      clamp(20px, 5vw, 30px)
      clamp(24px, 3.8dvh, 36px);
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:clamp(24px, 3.1dvh, 34px);
    background:#000;
  }

  .hero-heading-group,
  .hero-action-group{
    width:100%;
  }

  .hero-copy .eyebrow{
    margin:0 0 clamp(12px, 1.6dvh, 17px);
    font-size:clamp(9px, 2.55vw, 11px);
    letter-spacing:.19em;
  }

  .hero h1{
    margin:0;
    font-size:clamp(62px, 17.4vw, 98px);
    line-height:.80;
    letter-spacing:-.055em;
  }

  .hero h1 em{
    display:inline-block;
    margin-top:.075em;
  }

  .hero-action-group{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:0;
  }

  .hero-sub{
    margin:0;
    max-width:min(100%, 560px);
    font-size:clamp(12px, 3.2vw, 14px);
    line-height:1.58;
  }

  .hero .pill{
    margin-top:clamp(18px, 2.4dvh, 24px);
  }

  /* Right drawer: dark translucent, NO blur, and always clickable. */
  .nav nav{
    z-index:10000;
    width:min(74vw, 300px);
    background:rgba(0,0,0,.90);
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    pointer-events:none;
  }

  .nav nav.open{
    pointer-events:auto;
  }

  .nav nav a{
    position:relative;
    z-index:10001;
    pointer-events:auto !important;
    color:#fff;
    opacity:1;
  }

  .menu{
    z-index:10002;
    pointer-events:auto;
  }

  /*
    Remove the old full-page pseudo overlay entirely:
    it was the most likely thing intercepting taps on mobile.
  */
  body.menu-open::before{
    display:none !important;
    content:none !important;
    pointer-events:none !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }
}

@media (max-width: 560px) {
  .hero{
    grid-template-rows:min(42dvh, 75vw) minmax(0, 1fr);
  }

  .hero-media{
    height:min(42dvh, 75vw);
  }

  .hero-copy{
    padding:clamp(24px, 4dvh, 34px) 18px clamp(22px, 3.4dvh, 30px);
    gap:clamp(21px, 2.7dvh, 29px);
  }

  .hero h1{
    font-size:clamp(59px, 17.7vw, 84px);
    line-height:.81;
  }
}

@media (max-width: 900px) and (max-height: 700px) {
  .hero{
    grid-template-rows:min(38dvh, 70vw) minmax(0, 1fr);
  }

  .hero-media{
    height:min(38dvh, 70vw);
  }

  .hero-copy{
    padding-top:18px;
    padding-bottom:18px;
    gap:16px;
  }

  .hero h1{
    font-size:clamp(50px, 14vw, 72px);
  }

  .hero-copy .eyebrow{
    margin-bottom:8px;
  }

  .hero .pill{
    margin-top:13px;
  }
}
