*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth; interpolate-size:allow-keywords;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}

.studio{
  --paper:#F3EFE8; --paper-2:#EAE3D6; --paper-3:#E2DACA;
  --ink:#211F1A; --ink-2:#5A554A; --ink-3:#645E4F; --ink-3-dark:#8D8778;
  --olive:#44562C; --olive-deep:#36451F; --olive-2:#6E8347;
  --cream:#EFE9DD; --cream-soft:rgba(239,233,221,.76);
  --line:#DCD5C6; --line-2:#CcC4B2;
  --clay:#A8693F;
  --ease:cubic-bezier(.22,.61,.36,1);
  --max:1240px;
  background:var(--paper); color:var(--ink-2);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  -webkit-font-smoothing:antialiased; line-height:1.6; font-size:17px;
  position:relative; overflow-x:hidden;
}
.studio a{color:inherit; text-decoration:none;}
.studio ul,.studio ol{list-style:none;}
.studio img{max-width:100%; display:block;}
.studio :focus-visible{outline:2px solid var(--olive); outline-offset:3px; border-radius:3px;}
.serif{font-family:'Fraunces','Georgia',serif; font-optical-sizing:auto;}

.wrap{max-width:var(--max); margin:0 auto; padding:0 32px;}
a.skip{position:absolute; left:16px; top:-60px; z-index:300; background:var(--olive); color:var(--cream); padding:10px 16px; border-radius:6px; font-weight:600; transition:top .2s var(--ease);}
a.skip:focus{top:14px;}

.eyebrow{display:inline-flex; align-items:center; gap:10px; font-size:.74rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--olive);}
.eyebrow::before{content:""; width:26px; height:1px; background:var(--olive-2);}
.eyebrow.center::before{display:none;}

.h1{font-size:clamp(2.6rem,5.6vw,4.7rem); font-weight:500; line-height:1.03; letter-spacing:-.015em; color:var(--ink);}
.h2{font-size:clamp(1.95rem,3.5vw,2.95rem); font-weight:500; line-height:1.1; letter-spacing:-.01em; color:var(--ink);}
.lede{font-size:clamp(1.08rem,1.5vw,1.25rem); line-height:1.62; color:var(--ink-2); max-width:54ch;}

/* Buttons */
.btn{display:inline-flex; align-items:center; gap:9px; font-weight:600; font-size:.96rem; padding:14px 24px; border-radius:6px; cursor:pointer; border:1px solid transparent;
  }
.btn svg{width:18px; height:18px;}
.btn-solid, a.btn-solid{background:var(--olive); color:var(--cream);}
.btn-solid:hover{background:var(--olive-deep); transform:translateY(-1px);}
.btn-line, a.btn-line{background:transparent; color:var(--ink); border-color:var(--line-2);}
.btn-line:hover{border-color:var(--ink); transform:translateY(-1px);}
.btn-cream, a.btn-cream{background:var(--cream); color:var(--olive-deep);}
.btn-cream:hover{background:#fff; transform:translateY(-1px);}
.btn-cream-line, a.btn-cream-line{background:transparent; color:var(--cream); border-color:rgba(239,233,221,.4);}
.btn-cream-line:hover{border-color:var(--cream);}
.btn-wa, a.btn-wa{background:#25d366; color:#123023; border-color:transparent; box-shadow:0 14px 30px -18px rgba(18,140,74,.9);}
.btn-wa:hover{background:#1ebe5b; transform:translateY(-1px);}
.btn-wa svg{flex:none;}

/* Floating WhatsApp */
.wa-fab, a.wa-fab{position:fixed; right:max(18px, env(safe-area-inset-right)); bottom:max(18px, env(safe-area-inset-bottom)); z-index:200;
  width:58px; height:58px; border-radius:50%; background:#25d366; color:#0d2a1c; display:grid; place-items:center;
  box-shadow:0 16px 36px -14px rgba(18,140,74,.85), 0 4px 12px rgba(0,0,0,.18);
  transition:transform .25s var(--ease), box-shadow .25s var(--ease);}
.wa-fab svg{width:28px; height:28px;}
.wa-fab:hover{transform:translateY(-3px) scale(1.05); box-shadow:0 22px 44px -14px rgba(18,140,74,.95), 0 6px 16px rgba(0,0,0,.22);}
.wa-fab:focus-visible{outline:3px solid #123023; outline-offset:3px;}

/* Top bar */
.topbar{background:var(--ink); color:var(--cream-soft); font-size:.8rem;}
.topbar .wrap{display:flex; justify-content:space-between; align-items:center; height:38px; gap:20px;}
.topbar a{color:var(--cream-soft); transition:color .2s var(--ease);}
.topbar a:hover{color:var(--cream);}
.topbar .tb-right{display:flex; gap:22px; align-items:center;}
.tb-loc{display:inline-flex; align-items:center; gap:7px;}
.topbar svg{width:14px; height:14px;}
.tb-right a{display:inline-flex; align-items:center; gap:6px; padding:9px 2px; min-height:40px;}

/* Header */
.header{position:sticky; top:0; z-index:100; background:rgba(243,239,232,.86); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); border-bottom:1px solid transparent; transition:border-color .3s var(--ease), box-shadow .3s var(--ease);}
.header.is-scrolled{border-bottom-color:var(--line); box-shadow:0 6px 24px -18px rgba(0,0,0,.5);}
.header .wrap{display:flex; align-items:center; justify-content:space-between; height:74px; gap:24px;}
.brand{display:flex; align-items:center; gap:11px;}
.brand-mark{width:36px; height:36px; border-radius:8px; background:var(--olive); display:grid; place-items:center; color:var(--cream); position:relative;}
.brand-mark span{font-family:'Fraunces',serif; font-weight:600; font-size:20px; line-height:1;}
.brand-name{display:flex; flex-direction:column; line-height:1;}
.brand-name b{font-weight:700; font-size:18px; letter-spacing:.01em; color:var(--ink);}
.brand-name i{font-style:normal; font-size:11px; font-weight:600; letter-spacing:.28em; color:var(--ink-3); margin-top:4px;}
.nav{display:flex; gap:4px;}
.nav a{font-size:.95rem; font-weight:500; color:var(--ink-2); padding:9px 14px; border-radius:6px; transition:color .2s var(--ease), background .2s var(--ease);}
.nav a:hover{color:var(--ink); background:var(--paper-2);}
.header-cta{display:flex; align-items:center; gap:14px;}
.burger{display:none; width:44px; height:44px; border:1px solid var(--line-2); border-radius:8px; background:transparent; color:var(--ink); align-items:center; justify-content:center; cursor:pointer;}
.burger svg{width:22px; height:22px;}

.mobile{display:flex; flex-direction:column; padding:0 32px; background:var(--paper);
  border-bottom:1px solid transparent; max-height:0; opacity:0; overflow:hidden; visibility:hidden;
  transition:max-height 240ms cubic-bezier(.16,1,.3,1), opacity 160ms ease-out,
             padding 240ms cubic-bezier(.16,1,.3,1), border-color 240ms ease-out, visibility 0s linear 240ms;}
.mobile a.m-link{display:flex; align-items:center; justify-content:space-between; padding:16px 2px; font-size:1.15rem; font-weight:600; color:var(--ink); border-bottom:1px solid var(--line);}
.mobile a.m-link svg{width:18px;height:18px;color:var(--ink-3);}
.mobile .m-foot{margin-top:22px; display:flex; flex-direction:column; gap:12px;}
.mobile .m-foot .btn{justify-content:center;}
.header.menu-open .mobile{max-height:min(78vh,620px); opacity:1; visibility:visible;
  padding:10px 32px 28px; border-bottom-color:var(--line); transition-delay:0s;}
.header .i-x{display:none;}
.header.menu-open .i-menu{display:none;}
.header.menu-open .i-x{display:flex;}

/* Hero — full-bleed video banner */
.hero{position:relative; overflow:hidden; min-height:clamp(560px,78vh,760px); display:flex; align-items:center; background:var(--ink);}
.hero-video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;}
.hero::before{content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(20,18,13,.87) 0%,rgba(20,18,13,.62) 46%,rgba(20,18,13,.24) 100%);}
.hero .wrap{position:relative; z-index:2; width:100%; padding-top:clamp(56px,7vw,90px); padding-bottom:clamp(48px,6vw,80px);}
.hero-copy{max-width:640px;}
.hero .eyebrow{color:var(--olive-2);}
.hero .eyebrow::before{background:var(--olive-2);}
.hero h1{color:var(--cream); margin:22px 0 24px;}
.hero h1 em{font-style:italic; color:#fff;}
.hero .lede{color:var(--cream-soft); margin-bottom:34px;}
.hero-actions{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:40px;}
.hero-stats{display:flex; gap:34px; flex-wrap:wrap; padding-top:30px; border-top:1px solid rgba(239,233,221,.25);}
.hero-stats div b{font-family:'Fraunces',serif; font-weight:500; font-size:2rem; color:var(--cream); display:block; line-height:1;}
.hero-stats div span{font-size:.86rem; color:var(--cream-soft); display:block; margin-top:6px;}

/* Client strip */
.clients{border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--paper-2);}
.clients .wrap{padding-top:clamp(36px,4.5vw,54px); padding-bottom:clamp(36px,4.5vw,54px);}
.clients-head{display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-bottom:22px;}
.clients-eyebrow{font-size:.74rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--olive);}
.clients-note{font-size:.9rem; color:var(--ink-3);}
.clients-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px;}
.client-card{background:var(--cream); border:1px solid var(--line); border-radius:12px; padding:13px 16px; min-height:62px; display:flex; align-items:center; gap:13px; transition:border-color .25s var(--ease), transform .25s var(--ease), box-shadow .25s var(--ease);}
.client-card:hover{border-color:var(--line-2); transform:translateY(-2px); box-shadow:0 18px 36px -30px rgba(40,36,28,.5);}
.client-mark{height:32px; max-width:96px; flex:none; display:flex; align-items:center;}
.client-mark img{height:100%; width:auto; max-width:96px; object-fit:contain; display:block;}
.client-word{font-weight:800; font-size:1.18rem; letter-spacing:-.01em; line-height:1; flex:none;}
.client-name{font-size:.95rem; font-weight:600; color:var(--ink); line-height:1.2; display:block;}
.client-sub{font-size:.72rem; font-weight:400; color:var(--ink-3); margin-top:2px; display:block;}

/* Sections */
.section{padding:clamp(70px,9vw,120px) 0;}
.section-head{max-width:640px; margin-bottom:54px;}
.section-head .eyebrow{margin-bottom:20px;}
.section-head p{margin-top:18px;}

/* Services */
.services-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.svc{background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:34px 30px; }
.svc:hover{box-shadow:0 28px 56px -40px rgba(40,36,28,.6); border-color:var(--line-2);}
.svc-ic{width:54px; height:54px; border-radius:11px; background:var(--paper-2); display:grid; place-items:center; color:var(--olive); margin-bottom:26px;}
.svc-ic svg{width:25px; height:25px;}
.svc-no{font-family:'Fraunces',serif; font-size:.95rem; color:var(--ink-3); margin-bottom:8px; display:block;}
.svc h3{font-size:1.4rem; font-weight:600; color:var(--ink); margin-bottom:12px; letter-spacing:-.01em;}
.svc p{font-size:.99rem; line-height:1.6; color:var(--ink-2);}
.svc-tags{display:flex; flex-wrap:wrap; gap:8px; margin-top:22px;}
.svc-tags span{font-size:.76rem; color:var(--ink-2); background:var(--paper-2); padding:5px 11px; border-radius:100px;}

/* Projects gallery */
.gallery{display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:236px; gap:18px;}
.tile{position:relative; overflow:hidden; border-radius:12px; background:var(--paper-3); display:block;}
.tile.big{grid-column:span 2; grid-row:span 2;}
.tile img{width:100%; height:100%; object-fit:cover; will-change:transform;}
.tile::after{content:""; position:absolute; inset:0; background:linear-gradient(to top,rgba(24,21,15,.82) 0%,rgba(24,21,15,.16) 42%,transparent 70%);}
.tile-cap{position:absolute; left:0; right:0; bottom:0; padding:22px 24px; z-index:2; color:var(--cream);}
.tile-cap .tc-sector{font-size:.72rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:rgba(239,233,221,.82); display:block; margin-bottom:7px;}
.tile-cap h3{font-family:'Fraunces',serif; font-weight:500; font-size:1.32rem; line-height:1.15; color:#fff;}
.tile.big .tile-cap h3{font-size:1.7rem;}
.tile-cap .tc-meta{font-size:.84rem; color:rgba(239,233,221,.78); margin-top:8px; opacity:0; transform:translateY(8px); transition:opacity .35s var(--ease), transform .35s var(--ease);}
.tile:hover .tile-cap .tc-meta{opacity:1; transform:none;}
.gallery-foot{margin-top:30px; display:flex; align-items:center; gap:18px; flex-wrap:wrap;}

/* Walkthroughs */
.walk-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
.walk{margin:0;}
.walk video{width:100%; aspect-ratio:16/9; object-fit:cover; display:block; background:#000; border-radius:12px 12px 0 0;}
.walk figcaption{padding:14px 18px; font-size:.9rem; font-weight:600; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-top:0; border-radius:0 0 12px 12px;}

/* Highlight cards */
.pcards{display:grid; gap:20px;}
.pcard{display:block; border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fff; transition:transform .35s var(--ease), box-shadow .35s var(--ease);}
.pcard:hover{box-shadow:0 30px 60px -42px rgba(40,36,28,.55);}
.pcard img{width:100%; aspect-ratio:16/9; object-fit:cover; display:block; background:var(--paper-3);}
.pcard .pc-body{padding:16px 18px 18px;}
.pcard h3{font-size:1.05rem; margin-bottom:4px; color:var(--ink);}
.pcard p{font-size:.86rem; color:var(--ink-2);}
.pcard .pc-tag{display:inline-block; margin-top:10px; font-size:.74rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--olive);}

/* Statement band */
.band{position:relative; min-height:clamp(420px,52vw,560px); display:flex; align-items:center; background:var(--ink); overflow:hidden;}
.band-img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.5;}
.band::before{content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(20,18,13,.82),rgba(20,18,13,.42));}
.band .wrap{position:relative; z-index:2; color:var(--cream);}
.band-inner{max-width:680px;}
.band .eyebrow{color:var(--olive-2); margin-bottom:24px;}
.band .eyebrow::before{background:var(--olive-2);}
.band h2{font-family:'Fraunces',serif; font-weight:500; font-size:clamp(2rem,4vw,3.3rem); line-height:1.12; color:var(--cream); margin-bottom:22px; letter-spacing:-.01em;}
.band h2 em{font-style:italic; color:#fff;}
.band p{color:var(--cream-soft); font-size:1.1rem; max-width:50ch; margin-bottom:30px;}

/* About / credibility */
.about{background:var(--paper-2);}
.about .wrap{display:grid; grid-template-columns:.92fr 1.08fr; gap:clamp(34px,5vw,76px); align-items:center;}
.about-figure{aspect-ratio:5/6; border-radius:12px; overflow:hidden; background:var(--paper-3); box-shadow:0 36px 70px -52px rgba(40,36,28,.7);}
.about-figure img{width:100%; height:100%; object-fit:cover;}
.about h2{margin:20px 0 20px;}
.about .lede{margin-bottom:28px;}
.about-points{display:flex; flex-direction:column; gap:16px; margin-bottom:34px;}
.about-points li{display:flex; gap:13px; align-items:flex-start; font-size:1rem; color:var(--ink-2);}
.about-points svg{width:21px; height:21px; color:var(--olive); flex:none; margin-top:2px;}
.about-points b{color:var(--ink); font-weight:600;}
.about-stats{display:flex; gap:40px; flex-wrap:wrap; padding-top:30px; border-top:1px solid var(--line-2);}
.about-stats div b{font-family:'Fraunces',serif; font-weight:500; font-size:2.4rem; color:var(--olive); line-height:1; display:block;}
.about-stats div span{font-size:.88rem; color:var(--ink-2); display:block; margin-top:8px;}

/* Process */
.process .process-grid{display:grid; grid-template-columns:repeat(5,1fr); gap:24px; margin-top:8px;}
.step{padding-top:26px; border-top:2px solid var(--line-2); position:relative;}
.step::before{content:""; position:absolute; top:-2px; left:0; width:42px; height:2px; background:var(--olive);}
.step-no{font-family:'Fraunces',serif; font-size:2.1rem; font-weight:500; color:var(--ink); line-height:1; display:block; margin-bottom:14px;}
.step h3{font-size:1.06rem; font-weight:600; color:var(--ink); margin-bottom:9px;}
.step p{font-size:.92rem; line-height:1.55; color:var(--ink-2);}

/* CTA */
.cta{background:var(--olive); color:var(--cream);}
.cta .wrap{padding:clamp(56px,8vw,96px) 32px; display:grid; grid-template-columns:1.2fr .8fr; gap:40px; align-items:center;}
.cta .eyebrow{color:rgba(239,233,221,.8); margin-bottom:20px;}
.cta .eyebrow::before{background:rgba(239,233,221,.5);}
.cta h2{font-family:'Fraunces',serif; font-weight:500; font-size:clamp(2rem,3.6vw,3rem); line-height:1.1; color:var(--cream); letter-spacing:-.01em;}
.cta p{color:var(--cream-soft); margin-top:18px; font-size:1.08rem;}
.cta-side{display:flex; flex-direction:column; gap:16px;}
.cta-side .btn{justify-content:center;}
.cta-direct{display:flex; flex-direction:column; gap:10px; margin-top:6px; font-size:.95rem;}
.cta-direct a{display:inline-flex; align-items:center; gap:10px; color:var(--cream); padding:10px 0; min-height:44px;}
.cta-direct a svg{width:17px; height:17px; opacity:.8;}


/* Contact form */
.cta .wrap{align-items:start;}
.contact-form{display:flex; flex-direction:column; gap:14px; margin-top:6px;}
.contact-form .field{display:flex; flex-direction:column; gap:6px;}
.contact-form label{font-size:.8rem; font-weight:600; letter-spacing:.02em; color:var(--cream);}
.contact-form input, .contact-form textarea{width:100%; font-family:inherit; font-size:.95rem; color:var(--ink); background:var(--cream); border:1px solid transparent; border-radius:8px; padding:12px 14px; transition:border-color .2s var(--ease), box-shadow .2s var(--ease);}
.contact-form textarea{resize:vertical; min-height:110px;}
.contact-form input::placeholder, .contact-form textarea::placeholder{color:var(--ink-3);}
.contact-form input:focus, .contact-form textarea:focus{outline:none; border-color:var(--olive-2); box-shadow:0 0 0 3px rgba(110,131,71,.25);}
.contact-form .form-row{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
.contact-form button{margin-top:4px; width:100%; justify-content:center;}
.form-note{font-size:.8rem; color:var(--cream-soft); margin-top:2px;}
.form-note a{color:var(--cream); text-decoration:underline; text-underline-offset:3px;}
.form-status{font-size:.88rem; padding:10px 14px; border-radius:8px; display:none;}
.form-status:not([hidden]){display:block; background:rgba(255,255,255,.1); color:var(--cream);}
.form-status.show{display:block;}
.form-status.ok{background:rgba(110,131,71,.25); color:var(--cream);}
@media (max-width:620px){ .contact-form .form-row{grid-template-columns:1fr;} }


/* ── Professional image depth treatment ── */
.tile::before{content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  box-shadow:inset 0 0 90px 12px rgba(20,17,11,.42), inset 0 0 30px rgba(20,17,11,.25);
  border-radius:12px; mix-blend-mode:multiply;}
.tile{box-shadow:0 22px 48px -30px rgba(30,26,18,.55);}
.tile img{filter:saturate(1.06) contrast(1.04);}
.pcard{position:relative;}
.pcard::before{content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  box-shadow:inset 0 0 60px 8px rgba(20,17,11,.34); border-radius:inherit; mix-blend-mode:multiply;}
.pcard img{filter:saturate(1.05) contrast(1.03);}
.band-img{filter:saturate(1.08) contrast(1.05);}
.band::after{content:""; position:absolute; inset:0; pointer-events:none;
  box-shadow:inset 0 0 160px 40px rgba(10,8,5,.6);}
.about-media, .about-img-wrap, .about-figure{position:relative;}
.about-media::before, .about-img-wrap::before, .about-figure::before{content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  box-shadow:inset 0 0 70px 10px rgba(20,17,11,.36); border-radius:inherit; mix-blend-mode:multiply;}

/* Footer */
.footer{background:var(--ink); color:var(--cream-soft); padding-top:64px;}
.footer .f-grid{display:grid; grid-template-columns:1.7fr 1fr 1fr 1fr; gap:38px; padding-bottom:46px;}
.footer .brand-name b{color:var(--cream);}
.footer .brand-mark{background:var(--olive-2);}
.f-about{max-width:320px;}
.f-about p{margin:20px 0 22px; font-size:.92rem; line-height:1.6; color:var(--cream-soft);}
.f-social{display:flex; gap:11px;}
.f-social a{width:40px; height:40px; border:1px solid rgba(239,233,221,.2); border-radius:9px; display:grid; place-items:center; color:var(--cream-soft); transition:all .25s var(--ease);}
.f-social a svg{width:18px; height:18px;}
.f-social a:hover{color:var(--cream); border-color:rgba(239,233,221,.5); transform:translateY(-2px);}
.f-col h4, .f-h{font-size:.76rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--cream); margin-bottom:18px;}
.f-col a, .f-col span{display:flex; align-items:center; gap:9px; font-size:.92rem; color:var(--cream-soft); padding:11px 0; min-height:44px; transition:color .2s var(--ease);}
.f-col a:hover{color:var(--cream);}
.f-col svg{width:15px; height:15px; opacity:.8;}
.f-base{border-top:1px solid rgba(239,233,221,.16); padding:22px 0; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:.82rem; color:var(--ink-3-dark);}

/* Reveal */
.studio.reveal-on .reveal{opacity:0; transform:translateY(20px); transition:opacity .8s var(--ease), transform .8s var(--ease);}
.studio.reveal-on .reveal.in{opacity:1; transform:none;}

/* Responsive */
@media (max-width:1000px){
  .nav{display:none;}
  .burger{display:inline-flex;}
  .header-cta .btn{display:none;}
  .about .wrap{grid-template-columns:1fr;}
  .about-figure{max-width:560px; aspect-ratio:16/11;}
  .cta .wrap{grid-template-columns:1fr; gap:30px;}
  .gallery{grid-template-columns:repeat(2,1fr); grid-auto-rows:220px;}
  .process .process-grid{grid-template-columns:repeat(2,1fr); gap:28px 24px;}
  .walk-grid{grid-template-columns:1fr; max-width:640px;}
  .pcards{grid-template-columns:1fr !important;}
  .footer .f-grid{grid-template-columns:1fr 1fr; gap:32px 24px;}
  .f-about{grid-column:1 / -1; max-width:none;}
}
@media (max-width:620px){
  .studio{font-size:16px;}
  .wrap{padding:0 22px;}
  .topbar .tb-loc{display:none;}
  .services-grid{grid-template-columns:1fr;}
  .gallery{grid-template-columns:1fr; grid-auto-rows:230px;}
  .tile.big{grid-column:span 1; grid-row:span 1;}
  .process .process-grid{grid-template-columns:1fr;}
  .footer .f-grid{grid-template-columns:1fr;}
  .hero-actions .btn{flex:1; justify-content:center;}
}
@media (prefers-reduced-motion:reduce){
  .studio *{animation:none !important; transition-duration:.001ms !important;}
  .studio.reveal-on .reveal{opacity:1; transform:none;}
}

/* — polish pass — */
.f-addr{font-size:.86rem; line-height:1.6; color:var(--cream-soft); margin:10px 0 14px;}
footer .brand-name i{color:var(--ink-3-dark);}
.cta-addr{font-style:normal; display:flex; flex-direction:column; gap:2px; margin-top:26px; padding-top:22px; border-top:1px solid rgba(239,233,221,.18); max-width:34ch;}
.cta-addr .ca-label{font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cream-soft); margin-bottom:8px;}
.cta-addr .ca-name{font-weight:600; color:var(--cream);}
.cta-addr span{font-size:.93rem; line-height:1.55; color:var(--cream-soft);}
.cta-addr .ca-map{display:inline-flex; align-items:center; gap:6px; margin-top:12px; font-size:.86rem; font-weight:600; color:var(--cream); text-decoration:none; border-bottom:1px solid rgba(239,233,221,.35); padding-bottom:2px; align-self:flex-start; transition:border-color .2s ease;}
.cta-addr .ca-map:hover{border-color:var(--cream);}
.walk-single{max-width:860px; margin-inline:auto;}
@media (max-width:640px){
  .cta-addr .ca-map{padding:10px 0; margin-top:6px;}
  .crumb a{display:inline-block; padding:12px 4px; margin:-12px -4px;}
  .brand{padding:6px 0;}
  .cta-direct a{padding:9px 0;}
}

/* — full capability — */
.caps{margin-top:clamp(40px,5vw,64px); padding-top:clamp(32px,4vw,44px); border-top:1px solid var(--line);}
.caps .mini-head{margin-bottom:10px;}
.caps-lede{max-width:62ch; color:var(--ink-2); line-height:1.65; margin-bottom:clamp(26px,3vw,36px); text-wrap:pretty;}
.caps-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(24px,3vw,44px);}
.caps-t{font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--olive); margin:0 0 16px; font-weight:600;}
.caps-col ul{list-style:none; margin:0; padding:0;}
.caps-col li{padding:9px 0; border-bottom:1px solid var(--line); font-size:.95rem; color:var(--ink); line-height:1.45;}
.caps-col li:last-child{border-bottom:0;}
@media (max-width:860px){ .caps-grid{grid-template-columns:1fr 1fr; gap:22px 32px;} }
@media (max-width:560px){ .caps-grid{grid-template-columns:1fr;} .caps-col+.caps-col{padding-top:20px; border-top:1px solid var(--line);} }

/* — craft pass: motion & interaction — */
@media (hover:hover){
  .svc:hover{transform:translateY(-2px);}
  .tile:hover .ph{transform:scale(1.03);}
}
.svc{transition:transform .18s cubic-bezier(.16,1,.3,1), box-shadow .18s cubic-bezier(.16,1,.3,1);}
.tile .ph{transition:transform .4s cubic-bezier(.16,1,.3,1);}
.btn{transition:background-color .15s ease-out, color .15s ease-out, border-color .15s ease-out, transform .15s cubic-bezier(.16,1,.3,1);}
.btn:active{transform:scale(.985);}
.nav a:active, .m-link:active, .f-col a:active, .cta-direct a:active, .crumb a:active{transform:scale(.97);}
.nav a, .m-link, .f-col a, .cta-direct a, .crumb a{transition:transform 140ms cubic-bezier(.16,1,.3,1), color .2s ease, background .2s ease;}
.svc:active, .pcard:active, .tile:active, .feat:active, .client-card:active{transform:scale(.99);}
.wa-fab:active{transform:scale(.96);}
a,button,.btn,summary{-webkit-tap-highlight-color:transparent;}
button,.btn,.svc-no,.caps-t,.mini-head,.eyebrow{user-select:none;}
h1,h2,h3,.h1,.h2,.h3{text-wrap:balance;}
p,li{text-wrap:pretty;}
:target{scroll-margin-top:96px;}
section[id]{scroll-margin-top:88px;}
.contact-form input,.contact-form textarea,.contact-form select,input,select,textarea{font-size:16px;}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important; animation-iteration-count:1!important;
    transition-duration:.01ms!important; scroll-behavior:auto!important;}
  .reveal{opacity:1!important; transform:none!important;}
}

/* — faq — */
.faq{max-width:78ch; border-top:1px solid var(--line);}
.faq-i{border-bottom:1px solid var(--line);}
.faq-i summary{display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 0; cursor:pointer; list-style:none; font-weight:600; font-size:1.02rem; color:var(--ink); line-height:1.4;}
.faq-i summary::-webkit-details-marker{display:none;}
.faq-i summary svg{flex:0 0 auto; color:var(--olive); transition:transform .2s cubic-bezier(.16,1,.3,1);}
.faq-i[open] summary svg{transform:rotate(180deg);}
.faq-a{padding:0 0 22px; max-width:70ch;}
/* <details> hides its content with content-visibility, so the grid-rows trick alone
   is a no-op. ::details-content is the only thing that actually animates it. Browsers
   without support (Firefox today) simply snap open — same as before, no regression. */
@supports selector(::details-content){
  .faq-i::details-content{block-size:0; overflow:hidden;
    transition:block-size 220ms cubic-bezier(.16,1,.3,1), content-visibility 220ms allow-discrete;}
  .faq-i[open]::details-content{block-size:auto;}
}
.faq-a p{color:var(--ink-2); line-height:1.7; margin:0;}
@media (hover:hover){ .faq-i summary:hover{color:var(--olive);} }

/* --- graceful media fallback: never show raw alt text or a dead black box --- */
.studio img{color:transparent;}
.studio [data-media-fallback]{position:relative; background:linear-gradient(135deg,var(--paper-2) 0%,var(--paper-3) 100%); overflow:hidden;}
.studio [data-media-fallback]::after{content:"M"; position:absolute; inset:0; display:grid; place-items:center;
  font-family:'Fraunces','Georgia',serif; font-size:clamp(1.6rem,4vw,2.6rem); font-weight:600; letter-spacing:.02em;
  color:var(--ink-3); opacity:.22; pointer-events:none; z-index:0;}
.studio .page-hero-media[data-media-fallback], .studio .band[data-media-fallback], .studio .hero[data-media-fallback]{
  background:linear-gradient(135deg,#2a261d 0%,var(--ink) 100%);}
.studio .page-hero-media[data-media-fallback]::after, .studio .band[data-media-fallback]::after, .studio .hero[data-media-fallback]::after{
  color:var(--cream); opacity:.14;}
.studio .media-missing{visibility:hidden;}
.studio video.media-missing{visibility:hidden;}
.studio .walk[data-media-fallback] video, .studio .walk-single[data-media-fallback] video{min-height:200px;}

/* logo cards: a missing logo collapses to the wordmark, no monogram */
.studio .client-card[data-media-fallback]{background:var(--cream);}
.studio .client-card[data-media-fallback]::after{content:none;}
.studio .client-mark.media-missing{display:none;}
.studio .f-social a[data-media-fallback]::after{content:none;}
/* contact form honeypot: kept off-screen so humans never see or focus it */
.studio .hp-wrap{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}
.studio .hp-wrap label{position:absolute;left:-10000px;}
.studio .contact-form .form-status{min-height:1.2em;margin:.35rem 0 0;font-size:.875rem;}
.studio .contact-form .form-status[hidden]{display:none;}
