/*
Theme Name: Zubair.Works V2
Theme URI: https://zubair.works/
Author: Zubair.Works / OpenAI prototype
Description: Lightweight editorial portfolio and services theme with modular case studies, photo albums, reels, documentary layouts and adaptive hero navigation.
Version: 0.4.28
Text Domain: zubairworks
*/

:root{
  --zw-paper:#fff7e8;
  --zw-paper-deep:#f6e7cb;
  --zw-forest:#1e2a26;
  --zw-navy:#273248;
  --zw-plum:#2e1a27;
  --zw-gold:#ffd17b;
  --zw-ink:var(--zw-forest);
  --zw-muted:#716f65;
  --zw-line:rgba(30,42,38,.16);
  --zw-acid:var(--zw-gold);
  --zw-purple:var(--zw-plum);
  --zw-pad:clamp(18px,2.2vw,38px);
  --zw-section:clamp(78px,9vw,145px);
  --zw-radius:3px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--zw-paper)}
body{margin:0;background:var(--zw-paper);color:var(--zw-ink);font-family:'Darker Grotesque',Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,video{max-width:100%;height:auto}
button,input,textarea,select{font:inherit}
::selection{background:var(--zw-ink);color:var(--zw-paper)}
.zw-grain{position:fixed;inset:0;pointer-events:none;z-index:1100;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 220 220' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E")}

/* Header */
.zw-header{position:fixed;z-index:1200;top:0;left:0;right:0;padding:17px var(--zw-pad);display:flex;align-items:center;justify-content:space-between;gap:24px;color:var(--zw-ink);transition:color .2s ease,background-color .25s ease}
.zw-header.is-scrolled{background:color-mix(in srgb,var(--zw-paper) 84%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid rgba(17,17,15,.08)}
.zw-header[data-tone="light"]{color:#fff}
.zw-header[data-tone="dark"]{color:var(--zw-ink)}
.zw-brand{display:block;position:relative;line-height:0;min-width:80px}
.zw-logo{display:block;max-height:30px;width:auto;max-width:180px;transition:opacity .18s ease}
.zw-logo-light{position:absolute;left:0;top:50%;transform:translateY(-50%);opacity:0}
.zw-logo-dark{opacity:1}
.zw-header[data-tone="light"] .zw-logo-dark{opacity:0}
.zw-header[data-tone="light"] .zw-logo-light{opacity:1}
.zw-brand[data-tone="dark"] .zw-logo-dark{opacity:1}
.zw-brand[data-tone="dark"] .zw-logo-light{opacity:0}
.zw-brand[data-tone="light"] .zw-logo-dark{opacity:0}
.zw-brand[data-tone="light"] .zw-logo-light{opacity:1}
.zw-brand[data-tone="light"] .zw-logo-text{color:#fff}
.zw-brand[data-tone="dark"] .zw-logo-text{color:var(--zw-ink)}
.zw-logo-invert{filter:brightness(0) invert(1)}
.zw-logo-text{font-size:17px;line-height:1;font-weight:800;letter-spacing:-.05em;white-space:nowrap}
.zw-nav{display:flex;align-items:center;gap:24px;font-size:12px;line-height:1}
.zw-nav a{position:relative;opacity:.75;transition:opacity .2s ease}
.zw-nav a:hover{opacity:1}
.zw-nav a:after{content:"";position:absolute;height:1px;left:0;right:100%;bottom:-5px;background:currentColor;transition:right .25s ease}
.zw-nav a:hover:after{right:0}
.zw-nav li{list-style:none;margin:0;padding:0}
.zw-menu-toggle{display:none;border:0;background:none;color:inherit;padding:0;font-size:12px}

/* Homepage */
.zw-home-hero{min-height:100svh;padding:112px var(--zw-pad) 30px;display:flex;flex-direction:column;justify-content:space-between;border-bottom:1px solid var(--zw-line)}
.zw-home-hero__kicker,.zw-section-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--zw-muted)}
.zw-home-hero h1{font-size:clamp(66px,11.6vw,184px);line-height:.79;letter-spacing:-.078em;margin:7vh 0 4vh;font-weight:800;white-space:pre-line;max-width:8ch}
.zw-home-hero__bottom{display:grid;grid-template-columns:minmax(220px,1fr) 2fr auto;gap:30px;align-items:end}
.zw-home-hero__intro{font-size:clamp(20px,1.9vw,30px);max-width:18ch;line-height:1.03;letter-spacing:-.04em}
.zw-home-hero__disciplines{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--zw-muted)}
.zw-home-hero__scroll{font-size:11px;text-transform:uppercase;letter-spacing:.12em}
.zw-home-section{padding:var(--zw-section) var(--zw-pad)}
.zw-home-head{display:grid;grid-template-columns:1fr 2fr auto;gap:24px;align-items:end;border-bottom:1px solid var(--zw-line);padding-bottom:25px}
.zw-home-head h2{margin:0;font-size:clamp(48px,6.6vw,102px);line-height:.87;letter-spacing:-.065em}
.zw-project-list{padding-top:22px}
.zw-project-row{display:grid;grid-template-columns:54px minmax(120px,.65fr) 1.55fr minmax(180px,.72fr);gap:24px;padding:19px 0;border-bottom:1px solid var(--zw-line);align-items:start;transition:opacity .25s}
.zw-project-list:hover .zw-project-row{opacity:.4}.zw-project-list .zw-project-row:hover{opacity:1}
.zw-project-row__num,.zw-project-row__meta{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted);line-height:1.6;padding-top:6px}
.zw-project-row h3{margin:0;font-size:clamp(38px,5.4vw,84px);line-height:.88;letter-spacing:-.06em;transition:transform .3s ease}
.zw-project-row:hover h3{transform:translateX(8px)}
.zw-project-row__thumb{aspect-ratio:16/10;background:#ddd;overflow:hidden}
.zw-project-row__thumb img,.zw-project-row__thumb video{width:100%;height:100%;object-fit:cover;transition:transform .55s cubic-bezier(.2,.7,.15,1)}
.zw-project-row:hover .zw-project-row__thumb img{transform:scale(1.035)}
.zw-service-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px}
.zw-service-card{min-height:420px;border:1px solid var(--zw-line);padding:20px;display:flex;flex-direction:column;justify-content:space-between;transition:background .2s,color .2s}
.zw-service-card:hover{background:var(--zw-ink);color:var(--zw-paper)}
.zw-service-card__meta{font-size:10px;text-transform:uppercase;letter-spacing:.1em;opacity:.6}
.zw-service-card h3{font-size:clamp(30px,3vw,52px);line-height:.92;letter-spacing:-.05em;margin:0}

/* Single item hero */
.zw-item-hero{height:min(96svh,940px);min-height:650px;position:relative;overflow:hidden;background:#151515;color:#fff;isolation:isolate}
.zw-item-hero__media{position:absolute;inset:0;z-index:-3;background:#181818}
.zw-item-hero__media img,.zw-item-hero__media video{width:100%;height:100%;display:block;object-fit:cover}
.zw-hero-placeholder{position:absolute;inset:0;background:linear-gradient(140deg,#282522,#827262)}
.zw-item-hero__shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(0,0,0,.12) 0%,rgba(0,0,0,.04) 44%,rgba(0,0,0,.28) 68%,var(--zw-paper) 100%);pointer-events:none}
.zw-item-hero:after{content:"";position:absolute;z-index:-1;left:0;right:0;bottom:-1px;height:34%;background:linear-gradient(to bottom,transparent,var(--zw-paper));pointer-events:none}
.zw-item-hero__content{height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:120px var(--zw-pad) clamp(58px,6vw,92px);color:#fff;text-shadow:0 1px 16px rgba(0,0,0,.12)}
.zw-item-hero__meta{display:flex;justify-content:space-between;gap:20px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px;max-width:1000px}
.zw-item-hero h1{margin:0;font-size:clamp(58px,9vw,142px);line-height:.82;letter-spacing:-.055em;font-weight:700;max-width:10ch}
.zw-item-hero p{margin:16px 0 0;max-width:40ch;font-size:clamp(17px,1.55vw,24px);line-height:1.12;letter-spacing:-.018em}
.zw-hero-cta{margin-top:28px;display:inline-flex;align-items:center;justify-content:space-between;gap:40px;width:max-content;min-width:220px;background:#fff;color:#111;padding:14px 16px;text-shadow:none;font-size:10px;text-transform:uppercase;letter-spacing:.1em}

/* Shared module anatomy */
.zw-module{position:relative}
.zw-module__head{display:grid;grid-template-columns:.42fr 1.58fr;gap:6vw;align-items:end;margin-bottom:38px}
.zw-module__eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted)}
.zw-module__head h2{margin:0;font-size:clamp(42px,5.5vw,86px);line-height:.84;letter-spacing:-.05em;white-space:pre-line;font-weight:700}
.zw-module__head p{margin:12px 0 0;max-width:48ch;font-size:16px;line-height:1.38;color:var(--zw-muted)}
.zw-module--intro{padding:clamp(68px,7vw,110px) var(--zw-pad);display:grid;grid-template-columns:.42fr 1.58fr;gap:6vw;border-bottom:1px solid var(--zw-line)}
.zw-module--intro .zw-intro-text{font-size:clamp(25px,3.15vw,48px);line-height:1.01;letter-spacing:-.035em;max-width:24ch}
.zw-module--intro .zw-intro-text p{margin:0}
.zw-module--content{padding:var(--zw-section) var(--zw-pad)}
.zw-reading{width:min(760px,calc(100% - 2*var(--zw-pad)));margin:0 auto;font-size:18px;line-height:1.7}
.zw-reading img{height:auto}

/* Reels */
.zw-module--reels{padding:clamp(78px,8vw,118px) var(--zw-pad);background:var(--zw-ink);color:var(--zw-paper);overflow:hidden}
.zw-reels-layout{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);gap:clamp(42px,7vw,110px);align-items:center;max-width:1500px;margin:0 auto}
.zw-reels-copy{align-self:stretch;display:flex;flex-direction:column;justify-content:center;max-width:460px}
.zw-module--reels .zw-module__eyebrow{color:#aaa79e;margin-bottom:20px}
.zw-reels-copy h2{margin:0;font-size:clamp(46px,6vw,94px);line-height:.82;letter-spacing:-.052em;white-space:pre-line;font-weight:700}
.zw-reels-copy p{margin:17px 0 0;max-width:38ch;font-size:16px;line-height:1.42;color:#aaa79e}
.zw-reels-visual{min-width:0}
.zw-reel-carousel{height:clamp(450px,48vw,650px);position:relative;perspective:1500px;touch-action:pan-y;user-select:none}
.zw-reel-card{position:absolute;left:50%;top:50%;width:clamp(190px,18vw,280px);aspect-ratio:9/16;border-radius:22px;overflow:hidden;background:#2b2730;transform-origin:50% 130%;box-shadow:0 22px 58px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);transition:transform .65s cubic-bezier(.2,.75,.2,1),opacity .48s ease,filter .48s ease;cursor:grab}
.zw-reel-card:active{cursor:grabbing}
.zw-reel-card>a{display:block;width:100%;height:100%}
.zw-reel-card img,.zw-reel-card video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#201d24}
.zw-reel-card video{z-index:2}
.zw-reel-card video::-webkit-media-controls{display:none!important}
.zw-reel-card video::-webkit-media-controls-enclosure{display:none!important}
.zw-reel-card__fallback{position:absolute;inset:0;background:linear-gradient(155deg,#b49cff 0 35%,#1d1a21 35% 62%,var(--zw-acid) 62%)}
.zw-reel-controls{display:flex;justify-content:space-between;align-items:center;margin-top:2px}
.zw-reel-count{font-size:9px;color:#88847c;text-transform:uppercase;letter-spacing:.11em}
.zw-circle-buttons{display:flex;gap:8px}
.zw-circle-buttons button{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.24);background:transparent;color:#fff;cursor:pointer}
.zw-circle-buttons button:hover{background:var(--zw-paper);color:var(--zw-ink)}

/* Album — full-width infinite perspective photo carousel */
.zw-module--album{
  background:var(--zw-ink);
  color:var(--zw-paper);
  padding:clamp(88px,8vw,132px) var(--zw-pad) clamp(82px,7vw,116px);
  overflow:hidden;
}
.zw-album-layout{
  max-width:1720px;
  margin:0 auto;
}
.zw-album-copy{
  width:100%;
  margin-bottom:clamp(34px,4.5vw,68px);
}
.zw-module--album .zw-module__eyebrow{
  color:#aaa79e;
  margin-bottom:clamp(18px,2vw,28px);
}
.zw-album-copy__row{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(280px,.5fr);
  gap:clamp(42px,7vw,120px);
  align-items:end;
}
.zw-album-copy h2{
  margin:0;
  max-width:9ch;
  font-size:clamp(68px,8.7vw,142px);
  line-height:.48;
  letter-spacing:-.058em;
  white-space:pre-line;
  font-weight:700;
}
.zw-album-copy__side{
  max-width:520px;
  justify-self:end;
  width:100%;
}
.zw-album-copy p{
  margin:0;
  max-width:42ch;
  color:#aaa79e;
  font-size:clamp(18px,1.35vw,22px);
  line-height:1.42;
}
.zw-album-controls{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-top:clamp(24px,3vw,38px);
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,.14);
}
.zw-album-count{
  font-size:10px;
  color:#88847c;
  text-transform:uppercase;
  letter-spacing:.12em;
  white-space:nowrap;
}
.zw-album-visual{
  min-width:0;
  position:relative;
  width:100%;
}
.zw-album-carousel{
  height:clamp(590px,53vw,800px);
  width:100%;
  position:relative;
  perspective:1900px;
  transform-style:preserve-3d;
  touch-action:pan-y;
  user-select:none;
  cursor:grab;
}
.zw-album-carousel:active,.zw-album-carousel.is-dragging{cursor:grabbing}
.zw-album-card{
  position:absolute;
  left:50%;
  top:50%;
  margin:0;
  width:clamp(310px,29vw,470px);
  padding:clamp(6px,.6vw,10px);
  background:#ebe8df;
  color:var(--zw-ink);
  border:1px solid rgba(255,255,255,.12);
  border-radius:5px;
  transform-origin:50% 120%;
  transform-style:preserve-3d;
  box-shadow:0 30px 76px rgba(0,0,0,.34);
  transition:transform .68s cubic-bezier(.2,.75,.2,1),opacity .45s ease,filter .45s ease,box-shadow .45s ease;
  will-change:transform,opacity;
}
.zw-album-card.is-landscape{width:clamp(500px,48vw,790px)}
.zw-album-card.is-square{width:clamp(370px,36vw,570px)}
.zw-album-card.is-portrait{width:clamp(285px,27vw,430px)}
.zw-album-carousel.is-dragging .zw-album-card,
.zw-album-carousel.is-resetting .zw-album-card{transition:none!important}
.zw-album-card__media{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  background:#151515;
  line-height:0;
}
.zw-album-photo{
  display:block;
  width:100%;
  height:auto;
  max-width:none;
  object-fit:contain;
  object-position:center;
  pointer-events:none;
  -webkit-user-drag:none;
  user-select:none;
}
.zw-album-card figcaption{
  display:flex;
  justify-content:space-between;
  gap:18px;
  min-height:29px;
  padding:10px 3px 1px;
  color:#79756d;
  font-size:9px;
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:.1em;
  opacity:0;
  transform:translateY(3px);
  transition:opacity .28s ease,transform .28s ease;
}
.zw-album-card.is-active figcaption{opacity:1;transform:none}
.zw-album-card figcaption span:last-child{max-width:33ch;text-align:right}
.zw-album-card.is-active{box-shadow:0 42px 108px rgba(0,0,0,.46)}
.zw-album-empty{padding:80px 20px;border:1px solid rgba(255,255,255,.14);text-align:center;color:#88847c}

/* Documentary / design gallery */
.zw-module--documentary,.zw-module--design-gallery{padding:var(--zw-section) var(--zw-pad)}
.zw-media-sequence{display:grid;gap:clamp(15px,2vw,28px)}
.zw-sequence-frame{overflow:hidden;background:#d9d5ca;position:relative}
.zw-sequence-frame.is-wide{aspect-ratio:16/9}
.zw-sequence-pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(15px,2vw,28px)}
.zw-sequence-pair .zw-sequence-frame{aspect-ratio:16/9}
.zw-sequence-frame img,.zw-sequence-frame video{width:100%;height:100%;object-fit:cover;display:block}
.zw-module--design-gallery .zw-sequence-pair:nth-child(even){grid-template-columns:.72fr 1.28fr}
.zw-module--design-gallery .zw-sequence-frame{background:#e6e3db}

/* Testimonial */
.zw-module--testimonial{padding:clamp(62px,7vw,104px) var(--zw-pad);background:#e5e0d3}
.zw-testimonial{display:grid;grid-template-columns:.34fr 1.66fr;gap:6vw;align-items:start}
.zw-testimonial blockquote{margin:0;font-size:clamp(24px,3vw,44px);line-height:1.02;letter-spacing:-.035em;max-width:38ch;font-weight:500}
.zw-testimonial__credit{margin-top:22px;font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--zw-muted)}

/* Details / features / process */
.zw-module--details,.zw-module--features,.zw-module--process{padding:var(--zw-section) var(--zw-pad);border-top:1px solid var(--zw-line)}
.zw-details-table{border-top:1px solid var(--zw-line)}
.zw-detail-row{display:grid;grid-template-columns:.45fr 1.55fr;gap:24px;padding:14px 0;border-bottom:1px solid var(--zw-line);font-size:12px}
.zw-detail-row span:first-child{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted)}
.zw-feature-grid,.zw-process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.zw-feature,.zw-process-step{min-height:270px;border:1px solid var(--zw-line);padding:20px;display:flex;flex-direction:column;justify-content:space-between}
.zw-feature h3,.zw-process-step h3{font-size:26px;line-height:1;letter-spacing:-.04em;margin:0 0 10px}
.zw-feature p,.zw-process-step p{font-size:12px;line-height:1.55;color:var(--zw-muted);margin:0}
.zw-process-step__no{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted)}

/* CTA */
.zw-module--cta{padding:clamp(90px,10vw,150px) var(--zw-pad)}
.zw-module--cta.accent-acid{background:var(--zw-acid)}
.zw-module--cta.accent-purple{background:var(--zw-purple)}
.zw-module--cta.accent-dark{background:var(--zw-ink);color:var(--zw-paper)}
.zw-module--cta.accent-paper{background:var(--zw-paper)}
.zw-cta-grid{display:grid;grid-template-columns:.68fr 1.32fr;gap:8vw;align-items:end}
.zw-cta-grid h2{margin:0;font-size:clamp(44px,5.7vw,88px);line-height:.84;letter-spacing:-.05em;white-space:pre-line;font-weight:700}
.zw-cta-copy p{font-size:16px;line-height:1.45;max-width:42ch}
.zw-cta-button{margin-top:25px;display:flex;justify-content:space-between;align-items:center;gap:40px;background:var(--zw-ink);color:var(--zw-paper);padding:17px 19px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;max-width:430px}
.zw-module--cta.accent-dark .zw-cta-button{background:var(--zw-paper);color:var(--zw-ink)}

/* Next item */
.zw-next{display:block;padding:34px var(--zw-pad) 42px;background:var(--zw-purple);min-height:54vh;display:flex;flex-direction:column;justify-content:space-between}
.zw-next__meta{display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.11em}
.zw-next__title{font-size:clamp(56px,9vw,138px);line-height:.8;letter-spacing:-.055em;font-weight:700;max-width:10ch}

/* Archive / pages */
.zw-index,.zw-page{padding-top:70px}
.zw-index-hero,.zw-page-head{padding:100px var(--zw-pad) 60px;border-bottom:1px solid var(--zw-line)}
.zw-index-hero span{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted)}
.zw-index-hero h1,.zw-page-head h1{margin:12px 0 0;font-size:clamp(58px,9vw,142px);line-height:.82;letter-spacing:-.055em;font-weight:700}
.zw-index-grid{padding:20px var(--zw-pad) var(--zw-section);display:grid;grid-template-columns:1fr 1fr;gap:40px 18px}
.zw-index-card__media{aspect-ratio:16/10;background:#ddd;overflow:hidden}.zw-index-card__media img{width:100%;height:100%;object-fit:cover}
.zw-index-card__meta{display:flex;justify-content:space-between;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted);margin-top:10px}
.zw-index-card h2{font-size:clamp(30px,3.3vw,52px);line-height:.92;letter-spacing:-.04em;margin:6px 0 0}
.zw-page>.zw-reading{padding-top:70px;padding-bottom:120px}

/* Footer */
.zw-footer{
  min-height:clamp(210px,22vw,340px);
  padding:clamp(42px,5vw,78px) var(--zw-pad);
  border-top:1px solid var(--zw-line);
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:clamp(48px,8vw,140px);
  background:var(--zw-paper);
  color:var(--zw-ink);
}
.zw-footer__mark{flex:0 0 auto;display:flex;align-items:flex-end}
.zw-footer__mark img{
  display:block;
  width:clamp(72px,8vw,132px);
  height:auto;
  max-height:165px;
  object-fit:contain;
  filter:brightness(0) saturate(100%);
}
.zw-footer__signature{
  margin-left:auto;
  text-align:right;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:12px;
}
.zw-footer__motto{
  font-size:clamp(22px,2.2vw,36px);
  font-weight:400;
  line-height:1;
  letter-spacing:.20em;
  text-transform:uppercase;
  white-space:nowrap;
  color:#aea798;
}
.zw-footer__copyright{
  font-size:10px;
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--zw-muted);
}

@media(max-width:900px){
  .zw-header{padding-top:16px;padding-bottom:16px}
  .zw-nav{position:absolute;top:100%;left:12px;right:12px;background:var(--zw-paper);color:var(--zw-ink);border:1px solid var(--zw-line);padding:18px;display:none;flex-direction:column;align-items:flex-start;gap:18px}
  .zw-header.menu-open .zw-nav{display:flex}
  .zw-menu-toggle{display:block}
  .zw-header.menu-open{color:var(--zw-ink)}
  .zw-home-hero__bottom,.zw-home-head,.zw-module__head,.zw-module--intro,.zw-testimonial,.zw-cta-grid{grid-template-columns:1fr;gap:32px}
  .zw-home-hero h1{font-size:clamp(66px,18vw,128px)}
  .zw-home-hero__disciplines{display:none}
  .zw-project-row{grid-template-columns:40px 1fr;gap:10px 18px}
  .zw-project-row__meta{grid-column:2}.zw-project-row h3{grid-column:2}.zw-project-row__thumb{grid-column:2}
  .zw-service-cards{grid-template-columns:1fr}
  .zw-service-card{min-height:280px}
  .zw-item-hero{height:88svh;min-height:600px}
  .zw-item-hero__content{padding-bottom:80px}
  .zw-item-hero h1{font-size:clamp(72px,18vw,135px)}
  .zw-sequence-pair{grid-template-columns:1fr}
  .zw-module--design-gallery .zw-sequence-pair:nth-child(even){grid-template-columns:1fr}
  .zw-feature-grid,.zw-process-grid{grid-template-columns:1fr}
  .zw-feature,.zw-process-step{min-height:210px}
  .zw-index-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .zw-logo{max-height:25px;max-width:140px}
  .zw-home-hero{min-height:90svh}
  .zw-home-hero h1{font-size:clamp(62px,20vw,108px)}
  .zw-item-hero{min-height:560px;height:82svh}
  .zw-item-hero__content{padding-bottom:66px}
  .zw-item-hero__meta{font-size:8px}
  .zw-item-hero h1{font-size:clamp(64px,20vw,110px)}
  .zw-item-hero p{font-size:17px}
  .zw-module--reels,.zw-module--album{padding-top:90px}
  .zw-reel-carousel{height:580px}.zw-reel-card{width:232px;border-radius:22px}
  .zw-footer{
    min-height:0;
    padding-top:52px;
    padding-bottom:42px;
    flex-direction:column;
    align-items:stretch;
    gap:48px;
  }
  .zw-footer__mark img{width:82px;max-height:110px}
  .zw-footer__signature{margin-left:0;align-items:flex-start;text-align:left;gap:10px}
  .zw-footer__motto{font-size:clamp(19px,5.4vw,25px);font-weight:400;line-height:1.1;letter-spacing:.18em;white-space:normal;max-width:none;color:#aea798}
  .zw-footer__copyright{font-size:9px;line-height:1.35}
}
@media(max-width:900px){
  .zw-album-copy__row{grid-template-columns:1fr;gap:28px}
  .zw-album-copy__side{justify-self:start;max-width:680px}
  .zw-album-copy p{max-width:48ch}
  .zw-album-controls{max-width:560px}
  .zw-album-carousel{height:clamp(540px,82vw,720px)}
  .zw-album-card.is-landscape{width:clamp(420px,74vw,640px)}
  .zw-album-card.is-square{width:clamp(320px,59vw,490px)}
  .zw-album-card.is-portrait{width:clamp(250px,47vw,380px)}
}
@media(max-width:560px){
  .zw-module--album{padding:82px clamp(18px,4vw,26px) 72px}
  .zw-album-copy h2{font-size:clamp(58px,17vw,88px);line-height:.52}
  .zw-album-copy p{font-size:17px}
  .zw-album-controls{margin-top:28px}
  .zw-album-drag-label{display:none}
  .zw-album-carousel{height:540px;margin-left:-18px;margin-right:-18px}
  .zw-album-card.is-landscape{width:min(86vw,470px)}
  .zw-album-card.is-square{width:min(70vw,380px)}
  .zw-album-card.is-portrait{width:min(57vw,310px)}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}

/* Package / pricing */
.zw-module--package{padding:clamp(64px,6.5vw,104px) var(--zw-pad);display:grid;grid-template-columns:.7fr 1.3fr;gap:clamp(44px,6vw,96px)}
.zw-module--package.accent-acid{background:var(--zw-acid)}
.zw-module--package.accent-purple{background:var(--zw-purple)}
.zw-module--package.accent-dark{background:var(--zw-ink);color:var(--zw-paper)}
.zw-module--package.accent-paper{background:var(--zw-paper)}
.zw-module--package h2{font-size:clamp(42px,5vw,78px);line-height:.86;letter-spacing:-.05em;margin:10px 0 0;white-space:pre-line;font-weight:700}
.zw-package-price{font-size:clamp(64px,6.7vw,104px);line-height:.82;letter-spacing:-.055em;font-weight:700;margin-bottom:clamp(24px,2.5vw,38px)}
.zw-package-copy{max-width:52ch;margin-bottom:26px;font-size:clamp(16px,1.15vw,19px);line-height:1.5}
.zw-package-list{border-top:1px solid color-mix(in srgb,currentColor 45%,transparent)}
.zw-package-row{display:grid;grid-template-columns:minmax(92px,.48fr) minmax(0,1.52fr);gap:28px;padding:17px 0;border-bottom:1px solid color-mix(in srgb,currentColor 45%,transparent);font-size:clamp(14px,1vw,16px);line-height:1.35}
.zw-package-row span:first-child{text-transform:uppercase;letter-spacing:.13em;font-size:10px;font-weight:600;opacity:.64;padding-top:2px}
.zw-package-row span:last-child{font-weight:500;letter-spacing:.005em}
.zw-package-button{margin-top:30px;display:flex;justify-content:space-between;align-items:center;gap:28px;background:var(--zw-ink);color:var(--zw-paper);padding:12px 13px 12px 20px;font-size:15px;line-height:1;text-transform:uppercase;letter-spacing:.075em;font-weight:650;max-width:470px;min-height:58px;border:1px solid rgba(255,255,255,.08);box-shadow:0 15px 34px rgba(0,0,0,.14);transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease,color .25s ease}
.zw-package-button span:last-child{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border:1px solid currentColor;border-radius:50%;font-size:17px;line-height:1;transition:transform .25s ease,background-color .25s ease,color .25s ease}
.zw-package-button:hover,.zw-package-button:focus-visible{transform:translateY(-3px);box-shadow:0 20px 42px rgba(0,0,0,.22)}
.zw-package-button:hover span:last-child,.zw-package-button:focus-visible span:last-child{transform:rotate(45deg);background:var(--zw-gold);color:var(--zw-forest);border-color:var(--zw-gold)}
.zw-module--package.accent-dark .zw-package-button{background:var(--zw-paper);color:var(--zw-ink);border-color:rgba(30,42,38,.12)}
@media(max-width:900px){.zw-module--package{grid-template-columns:1fr;gap:34px}}


/* v0.2 refinements */
body.admin-bar .zw-header{top:32px}
.zw-header.is-scrolled[data-tone="light"]{color:var(--zw-ink)}
.zw-header.is-scrolled .zw-logo-dark{opacity:1}
.zw-header.is-scrolled .zw-logo-light{opacity:0}
@media(max-width:900px){
  .zw-reels-layout{grid-template-columns:1fr;gap:30px}
  .zw-reels-copy{max-width:620px}
  .zw-reel-carousel{height:540px}
  .zw-module__head,.zw-module--intro,.zw-testimonial{gap:24px}
  .zw-item-hero h1{font-size:clamp(54px,14vw,104px)}
  .zw-module__head h2{font-size:clamp(40px,9vw,68px)}
  .zw-module--intro .zw-intro-text{font-size:clamp(24px,5.7vw,38px);max-width:27ch}
}
@media(max-width:782px){body.admin-bar .zw-header{top:46px}}
@media(max-width:560px){
  .zw-header{z-index:1200}
  .zw-menu-toggle{font-size:13px;font-weight:600;letter-spacing:.02em}
  .zw-item-hero__content{padding-bottom:54px}
  .zw-item-hero h1{font-size:clamp(50px,15.5vw,82px)}
  .zw-item-hero p{font-size:16px}
  .zw-module--reels{padding-top:72px;padding-bottom:72px}
  .zw-reels-copy h2{font-size:clamp(42px,13vw,62px)}
  .zw-reel-carousel{height:470px}
  .zw-reel-card{width:205px;border-radius:18px}
  .zw-testimonial blockquote{font-size:clamp(22px,7.4vw,32px);max-width:none}
}


/* v0.3 portfolio readability + hero composition */
.zw-item-hero__shade{
  background:linear-gradient(180deg,rgba(0,0,0,.08) 0%,rgba(0,0,0,.02) 46%,rgba(242,240,233,.18) 63%,rgba(242,240,233,.86) 82%,var(--zw-paper) 100%);
}
.zw-item-hero:after{height:38%;background:linear-gradient(to bottom,transparent,var(--zw-paper) 88%)}
.zw-item-hero__content{padding:120px var(--zw-pad) clamp(38px,4.5vw,70px);color:var(--zw-ink);text-shadow:none}
.zw-item-hero__bottom{width:100%;display:grid;grid-template-columns:minmax(0,1.42fr) minmax(330px,.58fr);gap:clamp(34px,6vw,110px);align-items:end}
.zw-item-hero__title-wrap{min-width:0}
.zw-item-hero h1{margin:0;max-width:9ch;font-size:clamp(82px,10.2vw,172px);line-height:.72;letter-spacing:-.068em;font-weight:700;color:var(--zw-ink)}
.zw-item-hero__aside{display:flex;flex-direction:column;gap:20px;padding-bottom:6px;color:var(--zw-ink)}
.zw-item-hero__summary{margin:0;max-width:34ch;font-size:clamp(18px,1.3vw,22px);line-height:1.28;letter-spacing:-.018em}
.zw-item-hero__meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;max-width:none;margin:0;padding-top:12px;border-top:1px solid rgba(17,17,15,.2);font-size:12px;line-height:1.2;text-transform:none;letter-spacing:0}
.zw-item-hero__meta-item{display:flex;flex-direction:column;gap:5px;min-width:0}
.zw-item-hero__meta-label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--zw-muted)}
.zw-item-hero__website span:last-child{width:max-content;border-bottom:1px solid currentColor;padding-bottom:2px}
.zw-item-hero__website:hover span:last-child{opacity:.6}
.zw-hero-cta{margin-top:0;background:var(--zw-ink);color:var(--zw-paper)}

/* Intro statement: wider measure, less vertical scroll */
.zw-module--intro{padding:clamp(58px,6.2vw,94px) var(--zw-pad);grid-template-columns:.28fr 1.72fr;gap:clamp(30px,5vw,82px)}
.zw-module--intro .zw-intro-text{font-size:clamp(28px,2.55vw,42px);line-height:1.045;letter-spacing:-.03em;max-width:35ch}

/* Reels: larger carousel and denser editorial copy */
.zw-module--reels{padding:clamp(72px,7.2vw,108px) var(--zw-pad)}
.zw-reels-layout{grid-template-columns:minmax(320px,.78fr) minmax(0,1.22fr);gap:clamp(44px,6vw,100px);max-width:1720px}
.zw-reels-copy{max-width:560px}
.zw-module--reels .zw-module__eyebrow{margin-bottom:18px;font-size:11px}
.zw-reels-copy h2{font-size:clamp(66px,7.1vw,116px);line-height:.70;letter-spacing:-.06em;max-width:7ch}
.zw-reels-copy p{margin:24px 0 0;max-width:42ch;font-size:clamp(18px,1.35vw,22px);line-height:1.42;color:#c1beb5}
.zw-reel-carousel{height:clamp(620px,52vw,820px);cursor:grab;-webkit-user-select:none;user-select:none}
.zw-reel-carousel:active{cursor:grabbing}
.zw-reel-card{width:clamp(270px,22vw,410px);border-radius:24px;-webkit-user-select:none;user-select:none}
.zw-reel-card img,.zw-reel-card video{-webkit-user-drag:none;user-select:none;pointer-events:none}
.zw-reel-controls{margin-top:8px}

/* Documentary headings use the same readable type system as reels */
.zw-module--documentary .zw-module__head,.zw-module--design-gallery .zw-module__head{grid-template-columns:.28fr 1.72fr;gap:clamp(30px,5vw,82px);align-items:start;margin-bottom:clamp(44px,5vw,76px)}
.zw-module--documentary .zw-module__head h2,.zw-module--design-gallery .zw-module__head h2{font-size:clamp(66px,7.1vw,116px);line-height:.70;letter-spacing:-.06em;max-width:8ch}
.zw-module--documentary .zw-module__head p,.zw-module--design-gallery .zw-module__head p{margin:24px 0 0;max-width:54ch;font-size:clamp(18px,1.35vw,22px);line-height:1.45;color:var(--zw-muted)}

/* Testimonial: quieter, wider and editorial */
.zw-module--testimonial{padding:clamp(50px,5.8vw,82px) var(--zw-pad)}
.zw-testimonial{grid-template-columns:.28fr 1.72fr;gap:clamp(30px,5vw,82px)}
.zw-testimonial blockquote{margin:0;max-width:64ch;font-size:clamp(19px,1.75vw,28px);line-height:1.24;letter-spacing:-.018em;font-weight:400;font-style:italic}
.zw-testimonial__credit{margin-top:18px}

@media(max-width:900px){
  .zw-item-hero__bottom{grid-template-columns:1fr;gap:24px}
  .zw-item-hero h1{font-size:clamp(72px,16vw,118px);max-width:10ch}
  .zw-item-hero__aside{max-width:720px}
  .zw-item-hero__meta{grid-template-columns:repeat(3,minmax(0,1fr))}
  .zw-module--intro{grid-template-columns:1fr;gap:24px}
  .zw-module--intro .zw-intro-text{font-size:clamp(27px,5vw,38px);max-width:32ch}
  .zw-reels-layout{grid-template-columns:1fr;gap:28px}
  .zw-reels-copy{max-width:700px}
  .zw-reels-copy h2,.zw-module--documentary .zw-module__head h2,.zw-module--design-gallery .zw-module__head h2{font-size:clamp(58px,10vw,84px)}
  .zw-reels-copy p,.zw-module--documentary .zw-module__head p,.zw-module--design-gallery .zw-module__head p{font-size:19px;max-width:50ch}
  .zw-reel-carousel{height:640px}
  .zw-reel-card{width:290px}
  .zw-module--documentary .zw-module__head,.zw-module--design-gallery .zw-module__head{grid-template-columns:1fr;gap:22px}
  .zw-testimonial{grid-template-columns:1fr;gap:20px}
  .zw-testimonial blockquote{font-size:clamp(19px,3.8vw,25px);max-width:58ch}
}
@media(max-width:560px){
  .zw-item-hero__content{padding-bottom:38px}
  .zw-item-hero h1{font-size:clamp(64px,19vw,92px);line-height:.74}
  .zw-item-hero__meta{grid-template-columns:1fr 1fr;gap:14px}
  .zw-item-hero__website{grid-column:1/-1}
  .zw-item-hero__summary{font-size:17px}
  .zw-module--intro .zw-intro-text{font-size:27px;line-height:1.06}
  .zw-reels-copy h2,.zw-module--documentary .zw-module__head h2,.zw-module--design-gallery .zw-module__head h2{font-size:clamp(52px,15vw,72px);line-height:.72}
  .zw-reels-copy p,.zw-module--documentary .zw-module__head p,.zw-module--design-gallery .zw-module__head p{font-size:18px;line-height:1.42}
  .zw-reel-carousel{height:540px}
  .zw-reel-card{width:250px;border-radius:20px}
  .zw-testimonial blockquote{font-size:20px;line-height:1.28}
}


/* v0.3.1 case-study spacing + next-project pass */
/* Larger case-study eyebrows */
.zw-module__eyebrow,
.zw-section-kicker{
  font-size:13px;
  line-height:1;
  letter-spacing:.12em;
}
.zw-module--reels .zw-module__eyebrow{font-size:13px;margin-bottom:24px}

/* Hero metadata: intentionally more legible beside the project title */
.zw-item-hero__aside{gap:24px}
.zw-item-hero__meta{
  gap:clamp(18px,2vw,30px);
  padding-top:15px;
  font-size:clamp(15px,1.05vw,18px);
  line-height:1.12;
}
.zw-item-hero__meta-label{
  font-size:11px;
  line-height:1;
  letter-spacing:.12em;
  margin-bottom:3px;
}
.zw-item-hero__summary{font-size:clamp(19px,1.4vw,24px);max-width:36ch}

/* Tight title rhythm requested for case-study display titles. */
.zw-item-hero h1{line-height:.30}
.zw-reels-copy h2,
.zw-module--documentary .zw-module__head h2,
.zw-module--design-gallery .zw-module__head h2{
  line-height:.30;
  padding-bottom:.50em;
}
.zw-reels-copy p,
.zw-module--documentary .zw-module__head p,
.zw-module--design-gallery .zw-module__head p{margin-top:0}

/* More breathing room at the sides of the dark reels module. */
.zw-module--reels{
  padding-left:clamp(34px,5.8vw,112px);
  padding-right:clamp(34px,5.8vw,112px);
}
.zw-reels-layout{max-width:1600px}

/* Rich next-project section at the bottom of each single item. */
.zw-next{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:clamp(460px,66svh,760px);
  padding:clamp(30px,4vw,58px) clamp(28px,5vw,86px);
  background:var(--zw-ink);
  color:#fff;
}
.zw-next__media{
  position:absolute;
  inset:0;
  z-index:-3;
  background:#1b1a18;
}
.zw-next__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .8s cubic-bezier(.2,.7,.15,1);
}
.zw-next:hover .zw-next__media img{transform:scale(1.025)}
.zw-next__shade{
  position:absolute;
  inset:0;
  z-index:-2;
  background:linear-gradient(180deg,rgba(0,0,0,.28) 0%,rgba(0,0,0,.08) 35%,rgba(0,0,0,.68) 100%);
}
.zw-next__meta{
  position:relative;
  z-index:2;
  font-size:13px;
  letter-spacing:.12em;
}
.zw-next__bottom{margin-top:auto;position:relative;z-index:2}
.zw-next__eyebrow{
  display:block;
  margin-bottom:18px;
  font-size:13px;
  line-height:1;
  text-transform:uppercase;
  letter-spacing:.12em;
  opacity:.72;
}
.zw-next__title{
  margin:0;
  color:#fff;
  font-size:clamp(72px,10.5vw,174px);
  line-height:.72;
  letter-spacing:-.065em;
  max-width:9ch;
}

@media(max-width:900px){
  .zw-module__eyebrow,.zw-section-kicker,.zw-module--reels .zw-module__eyebrow{font-size:12px}
  .zw-item-hero__meta{font-size:16px}
  .zw-item-hero__meta-label{font-size:10px}
  .zw-module--reels{padding-left:clamp(24px,5vw,44px);padding-right:clamp(24px,5vw,44px)}
  .zw-next{min-height:560px;padding:32px clamp(22px,5vw,44px)}
  .zw-next__title{font-size:clamp(66px,16vw,112px)}
}
@media(max-width:560px){
  .zw-item-hero h1{line-height:.30}
  .zw-reels-copy h2,
  .zw-module--documentary .zw-module__head h2,
  .zw-module--design-gallery .zw-module__head h2{line-height:.30;padding-bottom:.56em}
  .zw-item-hero__meta{font-size:15px}
  .zw-next{min-height:500px}
  .zw-next__meta,.zw-next__eyebrow{font-size:11px}
}

/* v0.3.5 — unified display rhythm + larger album focus + lightbox */
/* Keep body copy readable; all large/display titles use the same compact rhythm. */
.zw-home-hero h1,
.zw-home-head h2,
.zw-project-row h3,
.zw-service-card h3,
.zw-item-hero h1,
.zw-module__head h2,
.zw-reels-copy h2,
.zw-album-copy h2,
.zw-cta-grid h2,
.zw-next__title,
.zw-index-hero h1,
.zw-page-head h1,
.zw-index-card h2,
.zw-module--package h2,
.zw-package-price{
  line-height:.55!important;
}
.zw-reels-copy h2,
.zw-module--documentary .zw-module__head h2,
.zw-module--design-gallery .zw-module__head h2{
  padding-bottom:.22em;
}

/* Photography carousel: make the focused photograph the unmistakable hero. */
.zw-album-carousel{
  height:clamp(700px,60vw,930px);
}
.zw-album-card.is-landscape{width:clamp(620px,58vw,1020px)}
.zw-album-card.is-square{width:clamp(470px,44vw,760px)}
.zw-album-card.is-portrait{width:clamp(360px,33vw,560px)}
.zw-album-card.is-active{
  box-shadow:0 54px 136px rgba(0,0,0,.52);
}
.zw-album-controls .zw-circle-buttons button[data-album-lightbox]{
  font-size:18px;
  line-height:1;
}

/* Album lightbox */
html.zw-lightbox-open,
html.zw-lightbox-open body{overflow:hidden}
.zw-lightbox{
  position:fixed;
  inset:0;
  z-index:999999;
  display:grid;
  place-items:center;
  padding:clamp(18px,3vw,48px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .25s ease,visibility .25s ease;
}
.zw-lightbox.is-open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}
.zw-lightbox__backdrop{
  position:absolute;
  inset:0;
  background:rgba(8,8,7,.94);
  backdrop-filter:blur(12px);
}
.zw-lightbox__dialog{
  position:relative;
  z-index:2;
  width:min(94vw,1800px);
  height:min(92vh,1100px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:14px;
}
.zw-lightbox__media{
  min-width:0;
  min-height:0;
  width:100%;
  flex:1;
  display:flex;
  align-items:center;
  justify-content:center;
}
.zw-lightbox__media img,
.zw-lightbox__media video{
  display:block;
  max-width:100%;
  max-height:calc(92vh - 74px);
  width:auto;
  height:auto;
  object-fit:contain;
  box-shadow:0 28px 90px rgba(0,0,0,.32);
}
.zw-lightbox__caption{
  color:rgba(255,255,255,.68);
  font-size:13px;
  line-height:1.3;
  letter-spacing:.02em;
  text-align:center;
  max-width:72ch;
}
.zw-lightbox__close{
  position:absolute;
  top:0;
  right:0;
  z-index:3;
  width:48px;
  height:48px;
  border:1px solid rgba(255,255,255,.3);
  border-radius:50%;
  background:rgba(0,0,0,.18);
  color:#fff;
  font:400 30px/1 'Darker Grotesque',Arial,sans-serif;
  cursor:pointer;
  backdrop-filter:blur(8px);
}
.zw-lightbox__close:hover{background:#fff;color:#1e2a26}

@media(max-width:900px){
  .zw-album-carousel{height:clamp(620px,88vw,780px)}
  .zw-album-card.is-landscape{width:min(84vw,720px)}
  .zw-album-card.is-square{width:min(68vw,570px)}
  .zw-album-card.is-portrait{width:min(52vw,430px)}
}
@media(max-width:560px){
  .zw-album-carousel{height:610px;margin-left:-18px;margin-right:-18px;width:calc(100% + 36px)}
  .zw-album-card.is-landscape{width:min(91vw,520px)}
  .zw-album-card.is-square{width:min(78vw,430px)}
  .zw-album-card.is-portrait{width:min(64vw,350px)}
  .zw-lightbox{padding:14px}
  .zw-lightbox__dialog{width:100%;height:94vh}
  .zw-lightbox__close{width:44px;height:44px;top:4px;right:4px}
  .zw-lightbox__media img,.zw-lightbox__media video{max-height:calc(94vh - 72px)}
}


/* v0.3.6 — stable circular album carousel */
.zw-album-card.is-wrap-jump{transition:none!important}
.zw-album-carousel.is-dragging .zw-album-card{transition:none!important}
.zw-album-card{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  contain:layout style;
}
.zw-album-card.is-active{transform-origin:50% 50%}
.zw-album-card__media img,
.zw-album-card__media video{
  -webkit-user-drag:none;
  user-select:none;
}


/* v0.3.7 — photography-service hero carousel + image features + balanced design grid */
.zw-photo-hero-carousel,
.zw-photo-hero-slide{position:absolute;inset:0}
.zw-photo-hero-slide{
  opacity:0;
  transform:scale(1.018);
  transition:opacity .75s ease,transform 1.15s cubic-bezier(.2,.7,.2,1);
  pointer-events:none;
}
.zw-photo-hero-slide.is-active{opacity:1;transform:scale(1);pointer-events:auto}
.zw-photo-hero-slide img{width:100%;height:100%;display:block;object-fit:cover;-webkit-user-drag:none;user-select:none}
.zw-photo-hero-controls{
  position:absolute;
  z-index:4;
  right:var(--zw-pad);
  top:clamp(78px,7vw,112px);
  display:flex;
  align-items:center;
  gap:16px;
  color:#fff;
  font-size:12px;
  letter-spacing:.08em;
  text-shadow:0 1px 12px rgba(0,0,0,.3);
}
.zw-photo-hero-controls>div{display:flex;gap:7px}
.zw-photo-hero-controls button{
  width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.5);
  background:rgba(0,0,0,.12);color:#fff;cursor:pointer;backdrop-filter:blur(8px)
}
.zw-photo-hero-controls button:hover{background:#fff;color:#1e2a26}

.zw-module--image-features{padding:var(--zw-section) var(--zw-pad);border-top:1px solid var(--zw-line)}
.zw-image-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.7vw,26px)}
.zw-image-feature{min-width:0}
.zw-image-feature__media{aspect-ratio:4/3;overflow:hidden;background:#ddd8cc;margin-bottom:20px}
.zw-image-feature__media img,.zw-image-feature__media video{width:100%;height:100%;display:block;object-fit:cover}
.zw-image-feature h3{font-size:clamp(28px,2.2vw,38px);line-height:.8;letter-spacing:-.045em;margin:0 0 10px;font-weight:650}
.zw-image-feature p{font-size:clamp(16px,1.1vw,19px);line-height:1.38;color:var(--zw-muted);margin:0;max-width:48ch}
.zw-image-feature__placeholder{width:100%;height:100%;background:linear-gradient(135deg,#d9d4c8,#aaa296)}

/* Design work should read as a deliberate grid, never an accidental masonry layout. */
.zw-design-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,1.7vw,26px);align-items:stretch}
.zw-design-frame{
  min-width:0;
  aspect-ratio:4/3;
  background:#e7e3da;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.zw-design-frame.is-featured,
.zw-design-frame.is-single{grid-column:1/-1;aspect-ratio:16/8.5}
.zw-design-frame img,.zw-design-frame video{
  width:100%;height:100%;display:block;object-fit:cover;
}

@media(max-width:760px){
  .zw-photo-hero-controls{top:72px;right:18px}
  .zw-photo-hero-controls button{width:38px;height:38px}
  .zw-image-feature-grid{grid-template-columns:1fr;gap:38px}
  .zw-image-feature__media{margin-bottom:16px}
  .zw-design-grid{grid-template-columns:1fr}
  .zw-design-frame,.zw-design-frame.is-featured,.zw-design-frame.is-single{grid-column:auto;aspect-ratio:4/3}
}

/* v0.3.8 — AJAX transitions, clearer navigation, grouped services */
.zw-nav{
  gap:clamp(24px,2vw,34px);
  font-size:clamp(16px,1.05vw,19px);
  line-height:1;
  font-weight:600;
  letter-spacing:-.018em;
}
.zw-nav a{opacity:.82}
.zw-menu-toggle{
  font-size:17px;
  line-height:1;
  font-weight:650;
  letter-spacing:-.018em;
}

/* Services archive — grouped by the type selected in each Service item. */
.zw-services-archive{padding-bottom:0}
.zw-service-group{
  padding:clamp(68px,7vw,112px) var(--zw-pad) clamp(82px,8vw,132px);
  border-bottom:1px solid var(--zw-line);
}
.zw-service-group__head{
  display:grid;
  grid-template-columns:minmax(120px,.42fr) minmax(0,1.35fr) auto;
  gap:clamp(24px,4vw,70px);
  align-items:end;
  padding-bottom:clamp(26px,3vw,42px);
  border-bottom:1px solid var(--zw-line);
}
.zw-service-group__eyebrow,
.zw-service-group__count{
  font-size:13px;
  line-height:1.1;
  text-transform:uppercase;
  letter-spacing:.095em;
  color:var(--zw-muted);
}
.zw-service-group__count{text-align:right}
.zw-service-group__head h2{
  margin:0;
  font-size:clamp(56px,7.4vw,118px);
  line-height:.55;
  letter-spacing:-.06em;
  font-weight:700;
}
.zw-service-group__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(42px,4.5vw,78px) clamp(14px,1.5vw,24px);
  padding-top:clamp(28px,3vw,46px);
}
.zw-service-group .zw-index-card{min-width:0}
.zw-service-group .zw-index-card__media{aspect-ratio:16/10}
.zw-service-group .zw-index-card h3{
  margin:8px 0 0;
  font-size:clamp(38px,4.4vw,70px);
  line-height:.62;
  letter-spacing:-.05em;
  font-weight:700;
}
.zw-index-card__excerpt{
  margin:16px 0 0;
  max-width:43ch;
  font-size:clamp(16px,1.15vw,19px);
  line-height:1.35;
  color:var(--zw-muted);
}

@media(max-width:760px){
  .zw-nav{
    font-size:22px;
    line-height:1;
    font-weight:650;
    gap:20px;
  }
  .zw-menu-toggle{font-size:18px}
  .zw-service-group{padding-left:18px;padding-right:18px}
  .zw-service-group__head{grid-template-columns:1fr;gap:16px}
  .zw-service-group__count{text-align:left}
  .zw-service-group__head h2{font-size:clamp(54px,17vw,90px)}
  .zw-service-group__grid{grid-template-columns:1fr;gap:48px}
  .zw-service-group .zw-index-card h3{font-size:clamp(42px,13vw,68px)}
}

/* v0.3.9 — cleaner service modules + larger actions + floating CTA imagery */

/* Service pages are product/service presentations rather than numbered case studies.
   Keep each module's supporting copy, but remove the repeated eyebrow + display heading. */
.single-service .zw-module__eyebrow,
.single-service .zw-module h2{
  display:none!important;
}
.single-service .zw-module--intro{
  grid-template-columns:1fr;
}
.single-service .zw-module--intro .zw-intro-text{
  max-width:30ch;
}
.single-service .zw-module__head{
  display:block;
  margin-bottom:0;
}
.single-service .zw-module__head:has(p){
  margin-bottom:clamp(28px,3.5vw,52px);
}
.single-service .zw-module__head p{
  margin:0;
  max-width:62ch;
  font-size:clamp(18px,1.35vw,22px);
  line-height:1.45;
}
.single-service .zw-testimonial{
  grid-template-columns:1fr;
}
.single-service .zw-reels-copy{
  justify-content:center;
}
.single-service .zw-reels-copy p{
  margin-top:0;
  font-size:clamp(18px,1.3vw,21px);
  line-height:1.45;
}
.single-service .zw-album-copy__row{
  grid-template-columns:1fr;
}
.single-service .zw-album-copy__side{
  justify-self:start;
  max-width:760px;
}
.single-service .zw-album-copy p{
  max-width:58ch;
}
.single-service .zw-module--image-features .zw-module__head,
.single-service .zw-module--details .zw-module__head,
.single-service .zw-module--features .zw-module__head,
.single-service .zw-module--process .zw-module__head,
.single-service .zw-module--documentary .zw-module__head,
.single-service .zw-module--design-gallery .zw-module__head{
  grid-template-columns:1fr;
}

/* Service actions need to read as actions, not micro-labels. */
.single-service .zw-hero-cta,
.single-service .zw-package-button,
.single-service .zw-cta-button{
  min-width:min(100%,310px);
  padding:20px 24px;
  font-size:clamp(16px,1.05vw,18px);
  line-height:1;
  letter-spacing:.025em;
  font-weight:650;
}
.single-service .zw-hero-cta{
  margin-top:30px;
  min-width:280px;
}
.single-service .zw-package-button,
.single-service .zw-cta-button{
  max-width:560px;
}

/* Optional floating image shared by pricing/package and CTA modules. */
.zw-module--package,
.zw-module--cta{
  position:relative;
  isolation:isolate;
  overflow:hidden;
}
.zw-package-heading,
.zw-package-main,
.zw-cta-grid{
  position:relative;
  z-index:2;
}
.zw-floating-module-image{
  position:absolute;
  z-index:1;
  margin:0;
  pointer-events:none;
  transform-origin:center;
}
.zw-floating-module-image__media{
  display:block;
  width:100%;
  height:auto;
  max-height:62vh;
  object-fit:contain;
  border-radius:4px;
  box-shadow:0 34px 90px rgba(0,0,0,.22);
}
.zw-floating-module-image--package{
  overflow:hidden;
  border-radius:5px;
}
.zw-floating-module-image--package .zw-floating-module-image__media{
  width:100%;
  height:100%;
  max-height:none;
  object-fit:cover;
  object-position:center;
  border-radius:0;
}
.zw-floating-module-image--package{
  left:clamp(24px,4.5vw,86px);
  top:52%;
  width:clamp(230px,27vw,490px);
  transform:translateY(-50%) rotate(-5deg);
}
.zw-floating-module-image--cta{
  right:clamp(22px,5vw,96px);
  top:50%;
  width:clamp(230px,27vw,500px);
  transform:translateY(-50%) rotate(5deg);
}

/* Service pricing: compact editorial card, image left and commercial info right. */
.single-service .zw-module--package{
  display:grid;
  grid-template-columns:minmax(0,.72fr) minmax(420px,1.28fr);
  align-items:center;
  gap:clamp(52px,6vw,108px);
  min-height:0;
  padding:clamp(56px,5vw,82px) var(--zw-pad);
}
.single-service .zw-package-heading{display:none}
.single-service .zw-package-main{
  width:100%;
  max-width:780px;
  margin:0 0 0 auto;
}
.single-service .zw-module--package.has-floating-image .zw-package-main{width:100%}
.single-service .zw-floating-module-image--package{
  position:relative;
  left:auto;
  top:auto;
  width:100%;
  max-width:460px;
  height:clamp(390px,33vw,535px);
  justify-self:center;
  transform:rotate(-2.25deg);
  box-shadow:0 24px 62px rgba(0,0,0,.2);
}
.single-service .zw-package-price{
  font-size:clamp(68px,6vw,96px);
  margin-bottom:clamp(22px,2.2vw,34px);
}
.single-service .zw-package-list{max-width:780px}
.single-service .zw-package-row{grid-template-columns:minmax(105px,.46fr) minmax(0,1.54fr);font-size:clamp(14px,1.02vw,16px);padding:16px 0}
.single-service .zw-package-button{max-width:520px;margin-top:28px}
.single-service .zw-module--cta{
  min-height:clamp(470px,48vw,680px);
  display:flex;
  align-items:center;
}
.single-service .zw-cta-grid{
  display:block;
  width:100%;
}
.single-service .zw-cta-copy{
  width:min(100%,760px);
}
.single-service .zw-module--cta.has-floating-image .zw-cta-copy{
  width:min(52%,760px);
}
.single-service .zw-cta-copy p{
  margin:0;
  max-width:46ch;
  font-size:clamp(20px,1.5vw,25px);
  line-height:1.38;
}

@media(max-width:900px){
  .single-service .zw-module--package,
  .single-service .zw-module--cta{min-height:0}
  .single-service .zw-module--package{
    grid-template-columns:minmax(0,.78fr) minmax(350px,1.22fr);
    gap:clamp(32px,5vw,54px);
    padding-top:54px;
    padding-bottom:54px;
  }
  .single-service .zw-module--package.has-floating-image .zw-package-main,
  .single-service .zw-module--cta.has-floating-image .zw-cta-copy{width:100%}
  .single-service .zw-floating-module-image--package{
    position:relative;
    top:auto;
    left:auto;
    width:100%;
    height:clamp(330px,52vw,470px);
    transform:rotate(-1.5deg);
  }
  .single-service .zw-module--cta.has-floating-image{padding-bottom:clamp(300px,62vw,520px)}
  .zw-floating-module-image--cta{
    top:auto;
    bottom:clamp(34px,6vw,62px);
    right:50%;
    width:min(72vw,470px);
    transform:translateX(50%) rotate(4deg);
  }
}

@media(max-width:700px){
  .single-service .zw-module--package{
    grid-template-columns:1fr;
    gap:38px;
    padding:46px clamp(18px,5vw,28px) 52px;
  }
  .single-service .zw-floating-module-image--package{
    width:min(88vw,420px);
    height:min(108vw,500px);
    justify-self:start;
    transform:rotate(-1.5deg);
  }
  .single-service .zw-package-main{max-width:none}
  .single-service .zw-package-row{grid-template-columns:100px 1fr;gap:18px;padding:15px 0}
}
@media(max-width:560px){
  .single-service .zw-hero-cta,
  .single-service .zw-cta-button{
    width:100%;
    max-width:none;
    min-width:0;
    padding:18px 20px;
    font-size:16px;
  }
  .single-service .zw-package-button{
    width:100%;
    max-width:none;
    min-width:0;
    min-height:58px;
    padding:12px 12px 12px 18px;
    font-size:15px;
  }
  .single-service .zw-module--cta.has-floating-image{padding-bottom:310px}
}


/* v0.3.14 — interactive homepage, testimonials and personal-photography marquee */
.zw-home-hero--interactive{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(circle at 77% 32%,rgba(215,255,79,.11),transparent 27%),
    var(--zw-paper);
}
.zw-home-hero--interactive>.zw-home-hero__kicker,
.zw-home-hero--interactive>h1,
.zw-home-hero--interactive>.zw-home-hero__bottom,
.zw-home-three-hint{position:relative;z-index:5}
.zw-home-three{position:absolute;z-index:1;inset:55px 0 0 35%;pointer-events:auto;touch-action:none}
.zw-home-three canvas{display:block;width:100%;height:100%}
.zw-home-three-fade{position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--zw-paper) 0%,color-mix(in srgb,var(--zw-paper) 96%,transparent) 24%,color-mix(in srgb,var(--zw-paper) 64%,transparent) 43%,transparent 68%)}
.zw-home-hero--interactive h1{font-size:clamp(76px,12vw,194px);line-height:.69;max-width:7.2ch;margin-top:auto;margin-bottom:auto}
.zw-home-hero--interactive .zw-home-hero__intro{font-size:clamp(25px,2.35vw,38px);max-width:15ch}
.zw-home-three-hint{position:absolute;right:var(--zw-pad);top:88px;font-size:11px;text-transform:uppercase;letter-spacing:.105em;color:var(--zw-muted);padding:9px 12px;border:1px solid var(--zw-line);border-radius:999px;background:color-mix(in srgb,var(--zw-paper) 65%,transparent);backdrop-filter:blur(12px)}

.zw-home-work{background:linear-gradient(180deg,var(--zw-paper),#ece9df 100%)}
.zw-project-row{position:relative;isolation:isolate;padding:23px 0;overflow:hidden}
.zw-project-row:before{content:"";position:absolute;z-index:-1;inset:0 calc(-1 * var(--zw-pad));background:var(--zw-ink);transform:scaleY(0);transform-origin:bottom;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.zw-project-row:hover:before{transform:scaleY(1)}
.zw-project-row:hover{color:var(--zw-paper)}
.zw-project-row:hover .zw-project-row__num,.zw-project-row:hover .zw-project-row__meta{color:#aaa79e}
.zw-project-row__thumb{transform:perspective(900px) rotateX(var(--zw-tilt-y,0deg)) rotateY(var(--zw-tilt-x,0deg));transition:transform .28s ease,clip-path .4s ease;clip-path:inset(0 round 0)}
.zw-project-row:hover .zw-project-row__thumb{clip-path:inset(0 round 10px)}
.zw-project-row__arrow{position:absolute;right:calc(var(--zw-pad) * -.15);top:50%;transform:translateY(-50%) translateX(18px);opacity:0;font-size:28px;transition:.25s ease}
.zw-project-row:hover .zw-project-row__arrow{opacity:1;transform:translateY(-50%) translateX(0)}

.zw-service-card{position:relative;isolation:isolate;overflow:hidden;min-height:500px;background:var(--zw-paper);transition:transform .42s cubic-bezier(.2,.75,.2,1),color .25s ease,border-color .25s ease}
.zw-service-card.has-media{color:#fff;border-color:transparent}
.zw-service-card__media{position:absolute;z-index:-3;inset:0}
.zw-service-card__media img{width:100%;height:100%;object-fit:cover;transform:scale(1.01);transition:transform .7s cubic-bezier(.2,.75,.2,1),filter .4s ease}
.zw-service-card__shade{position:absolute;z-index:-2;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.1) 45%,rgba(0,0,0,.78))}
.zw-service-card:hover{transform:translateY(-8px);background:var(--zw-ink);color:#fff}
.zw-service-card:hover .zw-service-card__media img{transform:scale(1.065);filter:saturate(1.08)}
.zw-service-card__content{position:relative}
.zw-service-card__content p{font-size:17px;line-height:1.25;max-width:32ch;margin:12px 0 20px;opacity:.8}
.zw-service-card__link{display:inline-block;font-size:13px;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid currentColor;padding-bottom:4px}

.zw-home-testimonials{padding:clamp(86px,9vw,145px) var(--zw-pad);background:var(--zw-ink);color:var(--zw-paper);overflow:hidden}
.zw-home-testimonials .zw-section-kicker{color:#aaa79e}
.zw-home-testimonials__head{display:grid;grid-template-columns:.65fr 1.4fr auto;gap:clamp(24px,5vw,76px);align-items:end;padding-bottom:32px;border-bottom:1px solid rgba(255,255,255,.16)}
.zw-home-testimonials__head h2{font-size:clamp(58px,7.7vw,118px);line-height:.72;letter-spacing:-.065em;margin:0}
.zw-home-testimonials__controls{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#aaa79e}
.zw-home-testimonials__controls button{width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.26);background:transparent;color:#fff;cursor:pointer;transition:.2s ease}
.zw-home-testimonials__controls button:hover{background:var(--zw-paper);color:var(--zw-ink)}
.zw-home-testimonials__viewport{position:relative;min-height:clamp(310px,32vw,520px);margin-top:clamp(42px,5vw,76px)}
.zw-home-testimonial{position:absolute;inset:0;margin:0;display:grid;grid-template-columns:.65fr 1.4fr auto;gap:clamp(24px,5vw,76px);align-items:start;opacity:0;transform:translateY(38px);pointer-events:none;transition:opacity .5s ease,transform .65s cubic-bezier(.2,.75,.2,1)}
.zw-home-testimonial.is-active{opacity:1;transform:none;pointer-events:auto}
.zw-home-testimonial:before{content:"“";font-size:clamp(100px,12vw,190px);line-height:.5;color:var(--zw-acid);font-weight:700}
.zw-home-testimonial blockquote{grid-column:2/4;margin:0;font-size:clamp(32px,4.3vw,67px);line-height:.9;letter-spacing:-.045em;font-style:italic;max-width:24ch}
.zw-home-testimonial figcaption{grid-column:2/4;margin-top:28px;display:flex;gap:15px;align-items:baseline;font-size:16px}
.zw-home-testimonial figcaption strong{font-weight:700}.zw-home-testimonial figcaption span{color:#aaa79e}

.zw-home-photography{padding:clamp(86px,9vw,145px) 0 clamp(70px,7vw,110px);overflow:hidden;background:#e6e2d8}
.zw-home-photography__head{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end;padding:0 var(--zw-pad) clamp(42px,5vw,70px)}
.zw-home-photography__head h2{margin:14px 0 0;font-size:clamp(62px,8.5vw,132px);line-height:.66;letter-spacing:-.072em}
.zw-home-socials{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.zw-home-socials a{padding:12px 16px;border:1px solid rgba(17,17,15,.26);border-radius:999px;font-size:14px;font-weight:650;transition:.2s ease}
.zw-home-socials a:hover{background:var(--zw-ink);color:var(--zw-paper)}
.zw-photo-marquee{overflow:hidden;cursor:grab;user-select:none}
.zw-photo-marquee:active{cursor:grabbing}
.zw-photo-marquee__track{display:flex;width:max-content;will-change:transform;animation:zwPhotoMarquee 58s linear infinite}
.zw-photo-marquee:hover .zw-photo-marquee__track{animation-play-state:paused}
.zw-photo-marquee__group{display:flex;align-items:center;gap:clamp(12px,1.4vw,24px);padding-right:clamp(12px,1.4vw,24px)}
.zw-photo-marquee__item{margin:0;flex:0 0 auto;overflow:hidden;background:#d7d3c9}
.zw-photo-marquee__item img{
  display:block;
  width:auto;
  height:clamp(280px,31vw,470px);
  max-width:none;
  object-fit:contain;
  transition:transform .45s ease,filter .45s ease;
}
.zw-photo-marquee__item:hover img{transform:scale(.975);filter:saturate(1.08)}
@keyframes zwPhotoMarquee{to{transform:translateX(-50%)}}

@media(max-width:900px){
  .zw-home-three{inset:64px -22% 28% 34%;opacity:.72}
  .zw-home-three-fade{background:linear-gradient(0deg,var(--zw-paper) 0%,color-mix(in srgb,var(--zw-paper) 92%,transparent) 31%,transparent 65%)}
  .zw-home-three-hint{display:none}
  .zw-service-card{min-height:390px}
  .zw-home-testimonials__head,.zw-home-testimonial{grid-template-columns:1fr;gap:24px}
  .zw-home-testimonial:before{display:none}
  .zw-home-testimonial blockquote,.zw-home-testimonial figcaption{grid-column:auto}
  .zw-home-testimonials__viewport{min-height:460px}
}
@media(max-width:760px){
  .zw-home-three{display:none}
  .zw-home-three-fade{display:none}
  .zw-home-hero--interactive h1{font-size:clamp(70px,21vw,116px);line-height:.67}
  .zw-project-row__arrow{display:none}
  .zw-service-card{min-height:340px}
  .zw-home-testimonials__head{grid-template-columns:1fr auto}
  .zw-home-testimonials__head .zw-section-kicker{grid-column:1/-1}
  .zw-home-testimonials__head h2{font-size:clamp(58px,17vw,92px)}
  .zw-home-testimonials__viewport{min-height:520px}
  .zw-home-testimonial blockquote{font-size:clamp(31px,9vw,48px);line-height:.94}
  .zw-home-photography__head{grid-template-columns:1fr;align-items:start}
  .zw-home-socials{justify-content:flex-start}
  .zw-photo-marquee__item img{height:245px}
}
@media(prefers-reduced-motion:reduce){
  .zw-photo-marquee__track{animation:none;transform:none}
  .zw-home-testimonial,.zw-project-row:before,.zw-service-card,.zw-service-card__media img{transition:none!important}
}

/* v0.3.16 — Sticky Image Story module */
.zw-module--sticky-gallery{
  --zw-sticky-scroll-height:100vh;
  position:relative;
  min-height:var(--zw-sticky-scroll-height);
  background:var(--zw-ink);
  color:var(--zw-paper);
}
.zw-sticky-gallery__sticky{
  position:sticky;
  top:0;
  min-height:100svh;
  padding:clamp(86px,8vw,122px) var(--zw-pad) clamp(58px,6vw,92px);
  display:grid;
  grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr);
  gap:clamp(42px,7vw,118px);
  align-items:center;
  overflow:hidden;
  max-width:1800px;
  margin:0 auto;
}
.zw-sticky-gallery__copy{
  position:relative;
  z-index:3;
  max-width:560px;
}
.zw-module--sticky-gallery .zw-module__eyebrow{
  margin-bottom:24px;
  color:#aaa79e;
  font-size:13px;
}
.zw-sticky-gallery__copy h2{
  margin:0;
  max-width:7ch;
  font-size:clamp(68px,7.4vw,122px);
  line-height:.55;
  letter-spacing:-.06em;
  white-space:pre-line;
  font-weight:700;
}
.zw-sticky-gallery__copy p{
  margin:30px 0 0;
  max-width:42ch;
  font-size:clamp(18px,1.35vw,22px);
  line-height:1.44;
  color:#c1beb5;
}
.zw-sticky-gallery__counter{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:42px;
  color:#8f8c84;
  font-size:12px;
  line-height:1;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.zw-sticky-gallery__counter-sep{opacity:.45}
.zw-sticky-gallery__scroll-label{margin-left:14px}
.zw-sticky-gallery__visual{
  position:relative;
  height:min(76svh,860px);
  min-height:520px;
  perspective:1600px;
  transform-style:preserve-3d;
}
.zw-sticky-gallery__slide{
  position:absolute;
  inset:0;
  margin:0;
  display:grid;
  place-items:center;
  opacity:0;
  transform:translate3d(12%,10%,0) rotateZ(3deg) scale(.88);
  transform-origin:50% 55%;
  filter:brightness(.55);
  pointer-events:none;
  transition:opacity .7s cubic-bezier(.2,.72,.18,1),transform .82s cubic-bezier(.2,.72,.18,1),filter .7s ease;
  will-change:transform,opacity;
}
.zw-sticky-gallery__slide.is-active{
  opacity:1;
  transform:translate3d(0,0,0) rotateZ(0) scale(1);
  filter:none;
  z-index:5;
}
.zw-sticky-gallery__slide.is-before{
  opacity:0;
  transform:translate3d(-12%,-9%,0) rotateZ(-3deg) scale(.9);
  z-index:2;
}
.zw-sticky-gallery__slide.is-next{
  opacity:.20;
  transform:translate3d(8%,7%,0) rotateZ(2.2deg) scale(.92);
  filter:brightness(.65);
  z-index:4;
}
.zw-sticky-gallery__slide.is-after{
  opacity:.06;
  transform:translate3d(14%,12%,0) rotateZ(4deg) scale(.84);
  z-index:1;
}
.zw-sticky-gallery__frame{
  display:flex;
  align-items:center;
  justify-content:center;
  max-width:100%;
  max-height:100%;
  overflow:hidden;
  border-radius:4px;
  box-shadow:0 40px 110px rgba(0,0,0,.34);
  background:#181817;
}
.zw-sticky-gallery__slide.is-landscape .zw-sticky-gallery__frame{width:min(100%,1040px)}
.zw-sticky-gallery__slide.is-square .zw-sticky-gallery__frame{width:min(78%,720px)}
.zw-sticky-gallery__slide.is-portrait .zw-sticky-gallery__frame{width:min(58%,520px)}
.zw-sticky-gallery__media{
  display:block;
  width:100%;
  height:auto;
  max-height:76svh;
  object-fit:contain;
  user-select:none;
  -webkit-user-drag:none;
}
.zw-sticky-gallery__slide figcaption{
  position:absolute;
  left:50%;
  bottom:-3px;
  transform:translateX(-50%);
  max-width:min(80%,760px);
  color:#8f8c84;
  font-size:11px;
  line-height:1.25;
  letter-spacing:.04em;
  text-align:center;
}
.zw-sticky-gallery__empty{
  display:grid;
  place-items:center;
  height:100%;
  border:1px solid rgba(255,255,255,.12);
  color:#8f8c84;
}
.single-service .zw-module--sticky-gallery .zw-sticky-gallery__copy h2,
.single-service .zw-module--sticky-gallery .zw-module__eyebrow{display:none!important}
.single-service .zw-module--sticky-gallery .zw-sticky-gallery__copy p{margin-top:0}

@media(max-width:900px){
  .zw-module--sticky-gallery{min-height:auto!important}
  .zw-sticky-gallery__sticky{
    position:relative;
    min-height:0;
    padding:86px clamp(22px,5vw,44px);
    grid-template-columns:1fr;
    gap:48px;
    overflow:visible;
  }
  .zw-sticky-gallery__copy{max-width:720px}
  .zw-sticky-gallery__copy h2{font-size:clamp(58px,11vw,86px)}
  .zw-sticky-gallery__visual{
    height:auto;
    min-height:0;
    display:grid;
    gap:22px;
    perspective:none;
  }
  .zw-sticky-gallery__slide,
  .zw-sticky-gallery__slide.is-active,
  .zw-sticky-gallery__slide.is-before,
  .zw-sticky-gallery__slide.is-next,
  .zw-sticky-gallery__slide.is-after{
    position:relative;
    inset:auto;
    opacity:1;
    transform:none;
    filter:none;
    pointer-events:auto;
    transition:none;
    z-index:auto;
  }
  .zw-sticky-gallery__slide.is-landscape .zw-sticky-gallery__frame,
  .zw-sticky-gallery__slide.is-square .zw-sticky-gallery__frame,
  .zw-sticky-gallery__slide.is-portrait .zw-sticky-gallery__frame{width:100%}
  .zw-sticky-gallery__media{max-height:none}
  .zw-sticky-gallery__slide figcaption{position:static;transform:none;margin-top:8px;max-width:none}
  .zw-sticky-gallery__counter{display:none}
}


/* v0.3.17 — three-column services + discipline filter on portfolio archive */
.zw-portfolio-browser{
  padding:0 var(--zw-pad) var(--zw-section);
}
.zw-portfolio-browser .zw-index-grid{
  padding-left:0;
  padding-right:0;
  padding-bottom:0;
}
.zw-discipline-menu{
  position:sticky;
  top:72px;
  z-index:20;
  display:flex;
  align-items:center;
  gap:clamp(18px,2.3vw,38px);
  overflow-x:auto;
  padding:18px 0 17px;
  border-bottom:1px solid var(--zw-line);
  background:color-mix(in srgb,var(--zw-paper) 91%,transparent);
  backdrop-filter:blur(16px);
  scrollbar-width:none;
}
.zw-discipline-menu::-webkit-scrollbar{display:none}
.zw-discipline-menu__item{
  position:relative;
  flex:0 0 auto;
  display:flex;
  align-items:baseline;
  gap:7px;
  border:0;
  background:none;
  color:var(--zw-muted);
  padding:5px 0;
  cursor:pointer;
  font-size:clamp(17px,1.35vw,22px);
  line-height:1;
  font-weight:600;
  letter-spacing:-.025em;
  transition:color .22s ease,opacity .22s ease;
}
.zw-discipline-menu__item span{
  font-size:10px;
  font-weight:500;
  letter-spacing:.06em;
  transform:translateY(-4px);
  opacity:.55;
}
.zw-discipline-menu__item::after{
  content:"";
  position:absolute;
  height:1.5px;
  left:0;
  right:100%;
  bottom:0;
  background:currentColor;
  transition:right .28s cubic-bezier(.2,.7,.2,1);
}
.zw-discipline-menu__item:hover,
.zw-discipline-menu__item.is-active{color:var(--zw-ink)}
.zw-discipline-menu__item.is-active::after{right:0}
.zw-portfolio-card[hidden]{display:none!important}
.zw-portfolio-empty{
  padding:72px 0 20px;
  font-size:clamp(24px,2.5vw,38px);
  color:var(--zw-muted);
  letter-spacing:-.035em;
}

@media(max-width:1100px){
  .zw-service-group__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .zw-service-group__grid{grid-template-columns:1fr}
  .zw-discipline-menu{top:62px;gap:22px}
  .zw-discipline-menu__item{font-size:18px}
}

/* v0.4.0 — complete homepage rebuild */
.zw-home-v4{background:var(--zw-paper)}
.zw-home-v4-kicker{font-size:13px;line-height:1;text-transform:uppercase;letter-spacing:.11em;color:var(--zw-muted)}

/* Hero: dark gallery stage */
.zw-home-v4-hero{
  min-height:100svh;
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:#0d0e0c;
  color:var(--zw-paper);
}
.zw-home-v4-stage{position:absolute;z-index:-4;inset:58px -2% 0 34%;pointer-events:none}
.zw-home-v4-stage canvas{display:block;width:100%;height:100%}
.zw-home-v4-hero__shade{
  position:absolute;z-index:-3;inset:0;pointer-events:none;
  background:
    linear-gradient(90deg,#0d0e0c 0%,rgba(13,14,12,.98) 22%,rgba(13,14,12,.72) 42%,rgba(13,14,12,.13) 70%),
    linear-gradient(0deg,rgba(13,14,12,.7) 0%,transparent 42%);
}
.zw-home-v4-hero__grid{
  position:absolute;z-index:-2;inset:0;opacity:.07;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.28) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.28) 1px,transparent 1px);
  background-size:9vw 9vw;
  mask-image:linear-gradient(90deg,#000,transparent 78%);
}
.zw-home-v4-hero__content{
  min-height:100svh;padding:110px var(--zw-pad) 34px;
  display:flex;flex-direction:column;justify-content:space-between;position:relative;z-index:3;
}
.zw-home-v4-hero__topline{display:flex;justify-content:space-between;gap:24px;width:min(58%,870px);font-size:13px;line-height:1;text-transform:uppercase;letter-spacing:.1em;color:rgba(242,240,233,.62)}
.zw-home-v4-hero h1{
  margin:auto 0;
  width:min(58vw,950px);max-width:7.2ch;
  font-size:clamp(88px,12.4vw,205px);line-height:.55;letter-spacing:-.075em;font-weight:750;
  text-wrap:balance;
}
.zw-home-v4-hero__foot{display:grid;grid-template-columns:minmax(260px,.8fr) 1fr auto;gap:clamp(28px,5vw,85px);align-items:end;width:100%;position:relative;z-index:5}
.zw-home-v4-hero__foot p{margin:0;max-width:17ch;font-size:clamp(25px,2.3vw,38px);line-height:.93;letter-spacing:-.035em}
.zw-home-v4-hero__disciplines{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.zw-home-v4-hero__disciplines span{border:1px solid rgba(255,255,255,.23);border-radius:999px;padding:10px 14px;font-size:13px;line-height:1;color:rgba(255,255,255,.78);backdrop-filter:blur(9px)}
.zw-home-v4-hero__foot>a{font-size:16px;font-weight:650;display:flex;align-items:center;gap:18px;white-space:nowrap}
.zw-home-v4-hero__foot>a span{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.28);border-radius:50%;transition:transform .25s ease,background .25s ease,color .25s ease}
.zw-home-v4-hero__foot>a:hover span{transform:translateY(5px);background:var(--zw-acid);color:var(--zw-ink);border-color:var(--zw-acid)}
.zw-home-v4-project-index{position:absolute;z-index:6;right:var(--zw-pad);top:15vh;width:clamp(220px,19vw,320px);border-top:1px solid rgba(255,255,255,.22)}
.zw-home-v4-project-index__label{display:block;padding:12px 0 11px;font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:rgba(255,255,255,.46)}
.zw-home-v4-project-index a{display:grid;grid-template-columns:30px 1fr;gap:10px;padding:10px 0;border-top:1px solid rgba(255,255,255,.1);font-size:15px;line-height:1.05;transition:padding-left .22s ease,color .22s ease}
.zw-home-v4-project-index a span{font-size:10px;color:rgba(255,255,255,.4);padding-top:2px}
.zw-home-v4-project-index a strong{font-weight:600}
.zw-home-v4-project-index a:hover{padding-left:7px;color:var(--zw-acid)}

/* Shared homepage headers */
.zw-home-v4-section-head{display:grid;grid-template-columns:.55fr 1.35fr auto;gap:clamp(24px,5vw,80px);align-items:end;padding:0 0 clamp(38px,4vw,62px);border-bottom:1px solid var(--zw-line)}
.zw-home-v4-section-head h2{margin:0;font-size:clamp(68px,8.5vw,138px);line-height:.55;letter-spacing:-.065em;font-weight:730}
.zw-home-v4-section-head>a{font-size:16px;font-weight:650;white-space:nowrap}

/* Stacking selected work */
.zw-home-v4-work{padding:clamp(90px,9vw,150px) var(--zw-pad) clamp(110px,12vw,190px);background:var(--zw-paper)}
.zw-home-v4-stack{padding-top:clamp(42px,5vw,82px)}
.zw-home-v4-work-card{
  --mx:0px;--my:0px;
  display:block;position:sticky;top:calc(76px + (var(--stack-index) * 8px));z-index:calc(20 + var(--stack-index));
  height:min(76svh,850px);min-height:540px;margin:0 0 clamp(80px,11vh,130px);overflow:hidden;background:#171715;color:#fff;
  box-shadow:0 24px 70px rgba(20,18,13,.14);
}
.zw-home-v4-work-card:last-child{margin-bottom:0}
.zw-home-v4-work-card__media{position:absolute;inset:0;overflow:hidden;background:#1a1a18}
.zw-home-v4-work-card__media img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.035) translate3d(var(--mx),var(--my),0);transition:transform .55s cubic-bezier(.2,.7,.2,1);will-change:transform}
.zw-home-v4-work-card:hover .zw-home-v4-work-card__media img{transform:scale(1.07) translate3d(var(--mx),var(--my),0)}
.zw-home-v4-work-card__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.16),transparent 44%,rgba(0,0,0,.72) 100%)}
.zw-home-v4-work-card__meta{position:absolute;left:22px;right:22px;top:20px;display:grid;grid-template-columns:58px 1fr auto;gap:20px;font-size:13px;text-transform:uppercase;letter-spacing:.09em;color:rgba(255,255,255,.76)}
.zw-home-v4-work-card__title{position:absolute;left:22px;right:22px;bottom:22px;display:flex;justify-content:space-between;align-items:end;gap:25px}
.zw-home-v4-work-card__title h3{margin:0;max-width:9ch;font-size:clamp(72px,10vw,160px);line-height:.55;letter-spacing:-.07em;font-weight:730}
.zw-home-v4-work-card__title>span{font-size:16px;font-weight:650;padding:13px 17px;border:1px solid rgba(255,255,255,.36);border-radius:999px;white-space:nowrap;transition:.25s ease}
.zw-home-v4-work-card:hover .zw-home-v4-work-card__title>span{background:var(--zw-acid);color:#111;border-color:var(--zw-acid)}

/* Bright manifesto / break */
.zw-home-v4-practice{background:var(--zw-acid);padding:clamp(90px,10vw,170px) var(--zw-pad);display:grid;grid-template-columns:.55fr 1.45fr;gap:clamp(30px,6vw,100px)}
.zw-home-v4-practice__label{font-size:13px;text-transform:uppercase;letter-spacing:.11em}
.zw-home-v4-practice__statement p{margin:0;max-width:18ch;font-size:clamp(50px,6.6vw,105px);line-height:.64;letter-spacing:-.06em;font-weight:650}
.zw-home-v4-practice__statement>span{display:block;margin-top:42px;max-width:37ch;font-size:clamp(20px,1.8vw,29px);line-height:1.05;letter-spacing:-.025em}

/* Capabilities */
.zw-home-v4-services{background:#10110f;color:var(--zw-paper);padding:clamp(100px,10vw,165px) var(--zw-pad)}
.zw-home-v4-section-head--dark{border-color:rgba(255,255,255,.17)}
.zw-home-v4-section-head--dark .zw-home-v4-kicker{color:rgba(255,255,255,.48)}
.zw-home-v4-section-head--dark>a{color:rgba(255,255,255,.82)}
.zw-home-v4-capabilities{margin-top:clamp(28px,4vw,55px);border-bottom:1px solid rgba(255,255,255,.16)}
.zw-home-v4-capability{position:relative;isolation:isolate;min-height:clamp(150px,13vw,215px);display:grid;grid-template-columns:70px minmax(240px,.85fr) 1fr 50px;gap:clamp(16px,3vw,55px);align-items:center;border-top:1px solid rgba(255,255,255,.16);overflow:hidden}
.zw-home-v4-capability__image{position:absolute;z-index:-2;right:8%;top:50%;width:min(30vw,450px);height:76%;transform:translateY(-50%) rotate(4deg) scale(.88);opacity:0;transition:opacity .32s ease,transform .5s cubic-bezier(.2,.7,.2,1);overflow:hidden}
.zw-home-v4-capability__image:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#10110f 0%,transparent 35%)}
.zw-home-v4-capability__image img{width:100%;height:100%;object-fit:cover;display:block}
.zw-home-v4-capability:hover .zw-home-v4-capability__image{opacity:.72;transform:translateY(-50%) rotate(-1.5deg) scale(1)}
.zw-home-v4-capability__num{font-size:12px;color:rgba(255,255,255,.4)}
.zw-home-v4-capability h3{margin:0;font-size:clamp(54px,6.7vw,108px);line-height:.55;letter-spacing:-.06em;font-weight:700;transition:transform .35s ease,color .25s ease}
.zw-home-v4-capability:hover h3{transform:translateX(12px);color:var(--zw-acid)}
.zw-home-v4-capability p{margin:0;max-width:48ch;font-size:clamp(16px,1.25vw,21px);line-height:1.15;color:rgba(255,255,255,.54);position:relative;z-index:2}
.zw-home-v4-capability__arrow{font-size:24px;text-align:right;transition:transform .25s ease}
.zw-home-v4-capability:hover .zw-home-v4-capability__arrow{transform:translate(5px,-5px)}

/* Testimonials — compact, wide and editorial */
.zw-home-v4-testimonials{background:var(--zw-purple);color:#111;padding:clamp(95px,10vw,165px) var(--zw-pad);display:grid;grid-template-columns:.58fr 1.42fr;gap:clamp(35px,7vw,115px)}
.zw-home-v4-testimonials__side h2{margin:30px 0 58px;font-size:clamp(64px,7.5vw,120px);line-height:.55;letter-spacing:-.065em;font-weight:720}
.zw-home-v4-testimonials__controls{display:flex;align-items:center;gap:9px;font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.zw-home-v4-testimonials__controls button{width:50px;height:50px;border-radius:50%;border:1px solid rgba(17,17,15,.36);background:transparent;color:#111;cursor:pointer;transition:.2s ease}
.zw-home-v4-testimonials__controls button:hover{background:#111;color:var(--zw-paper)}
.zw-home-v4-testimonials__viewport{position:relative;min-height:clamp(390px,38vw,590px);border-left:1px solid rgba(17,17,15,.25);padding-left:clamp(28px,4vw,70px)}
.zw-home-v4-testimonial{position:absolute;inset:0 0 0 clamp(28px,4vw,70px);margin:0;opacity:0;transform:translateY(30px);pointer-events:none;transition:opacity .45s ease,transform .6s cubic-bezier(.2,.75,.2,1);display:flex;flex-direction:column;justify-content:center}
.zw-home-v4-testimonial.is-active{opacity:1;transform:none;pointer-events:auto}
.zw-home-v4-testimonial blockquote{margin:0;max-width:34ch;font-size:clamp(28px,3.2vw,48px);line-height:1;letter-spacing:-.035em;font-style:italic;font-weight:500}
.zw-home-v4-testimonial figcaption{margin-top:32px;display:flex;gap:14px;align-items:baseline;font-size:17px}
.zw-home-v4-testimonial figcaption strong{font-weight:700}.zw-home-v4-testimonial figcaption span{opacity:.58}

/* Personal photography */
.zw-home-v4-photography{background:var(--zw-paper);padding:clamp(100px,10vw,165px) 0 clamp(90px,8vw,130px);overflow:hidden}
.zw-home-v4-photography__head{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end;padding:0 var(--zw-pad) clamp(42px,5vw,72px)}
.zw-home-v4-photography__head h2{margin:20px 0 0;max-width:14ch;font-size:clamp(62px,7.6vw,122px);line-height:.55;letter-spacing:-.065em;font-weight:700}
.zw-home-v4-socials{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.zw-home-v4-socials a{padding:13px 18px;border:1px solid rgba(17,17,15,.28);border-radius:999px;font-size:16px;font-weight:650;transition:.2s ease}
.zw-home-v4-socials a:hover{background:#111;color:var(--zw-paper)}
.zw-home-v4-photo-marquee{overflow:hidden;width:100%;cursor:grab}
.zw-home-v4-photo-marquee__track{display:flex;width:max-content;animation:zwHomeV4Marquee 52s linear infinite;will-change:transform}
.zw-home-v4-photo-marquee:hover .zw-home-v4-photo-marquee__track{animation-play-state:paused}
.zw-home-v4-photo-marquee__group{display:flex;align-items:center;gap:14px;padding-right:14px}
.zw-home-v4-photo-marquee__item{margin:0;flex:none;height:clamp(320px,34vw,545px);overflow:hidden;background:#ddd}
.zw-home-v4-photo-marquee__item img{display:block;width:auto;height:100%;max-width:none;object-fit:contain}
@keyframes zwHomeV4Marquee{to{transform:translateX(-50%)}}

/* Final contact */
.zw-home-v4-cta{background:#111;color:var(--zw-paper);padding:clamp(90px,10vw,160px) var(--zw-pad) clamp(45px,5vw,78px)}
.zw-home-v4-cta>span{display:block;font-size:14px;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.48);margin-bottom:clamp(70px,8vw,130px)}
.zw-home-v4-cta>a{display:flex;justify-content:space-between;align-items:end;gap:30px}
.zw-home-v4-cta strong{font-size:clamp(80px,12vw,190px);line-height:.55;letter-spacing:-.075em;font-weight:720}
.zw-home-v4-cta i{display:grid;place-items:center;flex:none;width:clamp(74px,8vw,125px);height:clamp(74px,8vw,125px);border-radius:50%;border:1px solid rgba(255,255,255,.34);font-style:normal;font-size:clamp(32px,4vw,60px);transition:.3s ease}
.zw-home-v4-cta>a:hover i{background:var(--zw-acid);color:#111;border-color:var(--zw-acid);transform:rotate(45deg)}

@media(max-width:1050px){
  .zw-home-v4-stage{inset:60px -15% 15% 38%;opacity:.82}
  .zw-home-v4-project-index{display:none}
  .zw-home-v4-hero h1{width:70vw}
  .zw-home-v4-hero__topline{width:70%}
  .zw-home-v4-capability{grid-template-columns:52px .9fr 1fr 40px}
  .zw-home-v4-capability__image{right:2%;width:38vw}
}
@media(max-width:760px){
  .zw-home-v4-stage{display:none}
  .zw-home-v4-hero__shade{background:radial-gradient(circle at 78% 28%,rgba(215,255,79,.08),transparent 35%),#0d0e0c}
  .zw-home-v4-hero__grid{background-size:25vw 25vw;opacity:.08}
  .zw-home-v4-hero__content{padding:94px 18px 24px}
  .zw-home-v4-hero__topline{width:100%;font-size:11px}.zw-home-v4-hero__topline span:last-child{display:none}
  .zw-home-v4-hero h1{width:100%;font-size:clamp(74px,22vw,118px);line-height:.55;margin:auto 0}
  .zw-home-v4-hero__foot{grid-template-columns:1fr;gap:22px}.zw-home-v4-hero__foot p{font-size:25px}.zw-home-v4-hero__disciplines{display:none}.zw-home-v4-hero__foot>a{justify-content:space-between}
  .zw-home-v4-section-head{grid-template-columns:1fr;gap:22px}.zw-home-v4-section-head h2{font-size:clamp(64px,19vw,100px)}
  .zw-home-v4-work{padding-left:12px;padding-right:12px}
  .zw-home-v4-work-card{height:67svh;min-height:500px;top:70px;margin-bottom:70px}
  .zw-home-v4-work-card__meta{grid-template-columns:40px 1fr auto;gap:10px;font-size:10px;left:14px;right:14px;top:14px}
  .zw-home-v4-work-card__title{left:14px;right:14px;bottom:15px;display:block}.zw-home-v4-work-card__title h3{font-size:clamp(58px,18vw,96px)}.zw-home-v4-work-card__title>span{display:inline-block;margin-top:22px;font-size:13px}
  .zw-home-v4-practice{grid-template-columns:1fr;gap:55px;padding-left:18px;padding-right:18px}.zw-home-v4-practice__statement p{font-size:clamp(48px,15vw,78px);line-height:.64}
  .zw-home-v4-services{padding-left:18px;padding-right:18px}
  .zw-home-v4-capability{grid-template-columns:38px 1fr 34px;min-height:145px;gap:12px}.zw-home-v4-capability h3{font-size:clamp(48px,14vw,76px)}.zw-home-v4-capability p{display:none}.zw-home-v4-capability__arrow{grid-column:3}.zw-home-v4-capability__image{right:0;width:55vw;opacity:.25}
  .zw-home-v4-testimonials{grid-template-columns:1fr;padding-left:18px;padding-right:18px}.zw-home-v4-testimonials__side h2{font-size:clamp(60px,18vw,92px);margin-bottom:35px}.zw-home-v4-testimonials__viewport{min-height:470px;border-left:0;border-top:1px solid rgba(17,17,15,.25);padding:35px 0 0}.zw-home-v4-testimonial{inset:35px 0 0}.zw-home-v4-testimonial blockquote{font-size:clamp(27px,8vw,40px)}
  .zw-home-v4-photography__head{grid-template-columns:1fr;padding-left:18px;padding-right:18px}.zw-home-v4-photography__head h2{font-size:clamp(58px,17vw,92px)}.zw-home-v4-socials{justify-content:flex-start}.zw-home-v4-photo-marquee__item{height:300px}
  .zw-home-v4-cta{padding-left:18px;padding-right:18px}.zw-home-v4-cta>a{align-items:flex-end}.zw-home-v4-cta strong{font-size:clamp(66px,20vw,108px)}
}
@media(prefers-reduced-motion:reduce){
  .zw-home-v4-photo-marquee__track{animation-play-state:paused}
  .zw-home-v4-work-card__media img,.zw-home-v4-capability__image,.zw-home-v4-capability h3{transition:none!important}
}


/* v0.4.1 — heritage palette refresh
   Old-site palette: forest #1e2a26, navy #273248, plum #2e1a27, gold #ffd17b. */
.zw-header.is-scrolled{
  background:color-mix(in srgb,var(--zw-paper) 86%,transparent);
  border-bottom-color:rgba(30,42,38,.09);
}

/* Shared dark modules now rotate through the three heritage darks. */
.zw-item-hero{background:var(--zw-forest)}
.zw-item-hero__media{background:var(--zw-navy)}
.zw-hero-placeholder{background:linear-gradient(140deg,var(--zw-navy),var(--zw-plum))}
.zw-hero-cta{background:var(--zw-gold);color:var(--zw-forest)}
.zw-module--reels{background:var(--zw-navy)}
.zw-reel-card{background:var(--zw-plum)}
.zw-reel-card img,.zw-reel-card video{background:var(--zw-forest)}
.zw-reel-card__fallback{background:linear-gradient(155deg,var(--zw-gold) 0 35%,var(--zw-plum) 35% 62%,var(--zw-navy) 62%)}
.zw-module--album{background:var(--zw-forest)}
.zw-album-card__media{background:var(--zw-navy)}
.zw-module--sticky-gallery{background:var(--zw-plum)}
.zw-next{background:var(--zw-plum)}
.zw-next__media{background:var(--zw-navy)}
.zw-module--cta.accent-dark,.zw-module--package.accent-dark{background:var(--zw-forest)}
.zw-module--cta.accent-purple,.zw-module--package.accent-purple{background:var(--zw-plum);color:var(--zw-paper)}
.zw-module--cta.accent-acid,.zw-module--package.accent-acid{background:var(--zw-gold);color:var(--zw-forest)}

/* Homepage palette: each major section gets a clear role in the old colour family. */
.zw-home-v4{background:var(--zw-paper)}
.zw-home-v4-hero{background:var(--zw-forest);color:var(--zw-paper)}
.zw-home-v4-hero__shade{
  background:
    linear-gradient(90deg,rgb(30,42,38) 0%,rgba(30,42,38,.98) 22%,rgba(30,42,38,.76) 43%,rgba(30,42,38,.14) 70%),
    linear-gradient(0deg,rgba(30,42,38,.74) 0%,transparent 42%);
}
.zw-home-v4-hero__foot>a:hover span{background:var(--zw-gold);color:var(--zw-forest);border-color:var(--zw-gold)}
.zw-home-v4-project-index a:hover{color:var(--zw-gold)}

.zw-home-v4-work{background:var(--zw-paper)}
.zw-home-v4-work-card{background:var(--zw-navy);box-shadow:0 24px 70px rgba(30,42,38,.14)}
.zw-home-v4-work-card__media{background:var(--zw-navy)}
.zw-home-v4-work-card:hover .zw-home-v4-work-card__title>span{background:var(--zw-gold);color:var(--zw-forest);border-color:var(--zw-gold)}

.zw-home-v4-practice{background:var(--zw-gold);color:var(--zw-forest)}

.zw-home-v4-services{background:var(--zw-navy);color:var(--zw-paper)}
.zw-home-v4-capability__image:after{background:linear-gradient(90deg,var(--zw-navy) 0%,transparent 35%)}
.zw-home-v4-capability:hover h3{color:var(--zw-gold)}

.zw-home-v4-testimonials{background:var(--zw-plum);color:var(--zw-paper)}
.zw-home-v4-testimonials .zw-home-v4-kicker{color:rgba(255,247,232,.58)}
.zw-home-v4-testimonials__controls{color:var(--zw-paper)}
.zw-home-v4-testimonials__controls button{border-color:rgba(255,247,232,.34);color:var(--zw-paper)}
.zw-home-v4-testimonials__controls button:hover{background:var(--zw-gold);border-color:var(--zw-gold);color:var(--zw-forest)}
.zw-home-v4-testimonials__viewport{border-left-color:rgba(255,247,232,.24)}
.zw-home-v4-testimonial figcaption span{color:rgba(255,247,232,.64);opacity:1}

.zw-home-v4-photography{background:var(--zw-paper)}
.zw-home-v4-socials a{border-color:rgba(30,42,38,.3)}
.zw-home-v4-socials a:hover{background:var(--zw-forest);color:var(--zw-gold)}
.zw-home-v4-photo-marquee__item{background:var(--zw-paper-deep)}

.zw-home-v4-cta{background:var(--zw-forest);color:var(--zw-paper)}
.zw-home-v4-cta>a:hover i{background:var(--zw-gold);color:var(--zw-forest);border-color:var(--zw-gold)}

/* A slightly warmer neutral on the older/fallback homepage components as well. */
.zw-home-work{background:linear-gradient(180deg,var(--zw-paper),var(--zw-paper-deep) 100%)}
.zw-home-photography{background:var(--zw-paper-deep)}

@media(max-width:760px){
  .zw-home-v4-hero__shade{
    background:radial-gradient(circle at 78% 28%,rgba(255,209,123,.10),transparent 35%),var(--zw-forest);
  }
  .zw-home-v4-testimonials__viewport{border-top-color:rgba(255,247,232,.24)}
}

/* v0.4.2 — larger global navigation + personal homepage hero */
.zw-header{
  padding-top:20px;
  padding-bottom:20px;
  gap:32px;
}
.zw-brand{min-width:120px}
.zw-logo{
  max-height:44px;
  max-width:250px;
}
.zw-logo-text{
  font-size:clamp(22px,1.65vw,28px);
  font-weight:800;
}
.zw-nav{
  gap:clamp(28px,2.35vw,42px);
  font-size:clamp(18px,1.25vw,22px);
  font-weight:650;
  letter-spacing:-.022em;
}
.zw-nav a:after{bottom:-7px}
.zw-menu-toggle{font-size:20px;font-weight:700}

/* The homepage now introduces the person first, while the Three.js/project
   imagery remains a visual counterpoint on the right. */
.zw-home-v4-hero__content{
  padding-top:clamp(118px,12vh,160px);
  padding-bottom:clamp(28px,4vh,48px);
  justify-content:space-between;
}
.zw-home-v4-hero__personal{
  width:min(67vw,1060px);
  margin:auto 0;
  position:relative;
  z-index:5;
}
.zw-home-v4-hero h1{
  width:auto;
  max-width:none;
  margin:0 0 clamp(38px,5vh,72px);
  font-size:clamp(92px,11vw,188px);
  line-height:.55;
  letter-spacing:-.072em;
  font-weight:760;
  text-wrap:balance;
}
.zw-home-v4-hero__copy{
  width:min(60vw,880px);
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:clamp(32px,5vw,86px);
  align-items:start;
}
.zw-home-v4-hero__copy p{
  margin:0;
  max-width:26ch;
  color:rgba(255,247,232,.82);
  font-size:clamp(24px,2.25vw,38px);
  line-height:1.02;
  letter-spacing:-.032em;
  font-weight:500;
}
.zw-home-v4-hero__copy .zw-home-v4-hero__lead{
  max-width:25ch;
  color:var(--zw-paper);
  font-size:clamp(31px,3vw,50px);
  line-height:.98;
  letter-spacing:-.04em;
  font-weight:580;
}
.zw-home-v4-hero__foot{
  grid-template-columns:minmax(0,1fr) auto;
  gap:32px;
  align-items:end;
}
.zw-home-v4-hero__disciplines{
  display:block;
  color:rgba(255,247,232,.68);
  font-size:clamp(16px,1.2vw,20px);
  line-height:1.15;
  letter-spacing:-.015em;
  font-weight:550;
}
.zw-home-v4-hero__foot>a{font-size:clamp(17px,1.2vw,20px)}

@media(max-width:1050px){
  .zw-home-v4-hero__personal{width:min(75vw,920px)}
  .zw-home-v4-hero__copy{width:min(72vw,820px)}
}

@media(max-width:760px){
  .zw-header{padding-top:17px;padding-bottom:17px}
  .zw-brand{min-width:90px}
  .zw-logo{max-height:35px;max-width:190px}
  .zw-logo-text{font-size:22px}
  .zw-menu-toggle{font-size:20px}
  .zw-nav{font-size:24px;gap:22px}

  .zw-home-v4-hero__content{padding:105px 18px 24px}
  .zw-home-v4-hero__personal{width:100%;margin:auto 0}
  .zw-home-v4-hero h1{
    width:100%;
    margin:0 0 34px;
    font-size:clamp(76px,22vw,116px);
    line-height:.55;
  }
  .zw-home-v4-hero__copy{
    width:100%;
    grid-template-columns:1fr;
    gap:22px;
  }
  .zw-home-v4-hero__copy .zw-home-v4-hero__lead{
    font-size:clamp(28px,8.4vw,40px);
    max-width:22ch;
  }
  .zw-home-v4-hero__copy p{
    font-size:clamp(22px,6.4vw,30px);
    max-width:25ch;
  }
  .zw-home-v4-hero__foot{grid-template-columns:1fr;gap:18px}
  .zw-home-v4-hero__disciplines{
    display:block;
    font-size:17px;
    max-width:26ch;
  }
  .zw-home-v4-hero__foot>a{justify-content:space-between;font-size:18px}
}


/* v0.4.3 — Watch Film lightbox module */
.zw-module--watch-film{position:relative;padding:clamp(82px,9vw,145px) var(--zw-pad);background:var(--zw-plum);color:var(--zw-paper);overflow:hidden}
.zw-watch-film__intro{display:grid;grid-template-columns:.28fr 1.72fr;gap:clamp(28px,5vw,82px);align-items:start;max-width:1700px;margin:0 auto clamp(38px,5vw,76px)}
.zw-module--watch-film .zw-module__eyebrow{color:rgba(255,247,232,.62);font-size:13px}
.zw-watch-film__copy{display:grid;grid-template-columns:minmax(260px,.82fr) minmax(260px,1fr);gap:clamp(28px,5vw,82px);align-items:end}
.zw-watch-film__copy h2{margin:0;max-width:7ch;font-size:clamp(72px,8vw,132px);line-height:.55;letter-spacing:-.06em;white-space:pre-line}
.zw-watch-film__copy p{margin:0 0 .15em;max-width:46ch;color:rgba(255,247,232,.74);font-size:clamp(18px,1.4vw,23px);line-height:1.42}
.zw-watch-film__poster{position:relative;display:block;width:min(100%,1720px);aspect-ratio:16/8.1;margin:0 auto;padding:0;overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:var(--zw-radius);background:#111;color:#fff;cursor:pointer;text-align:left;isolation:isolate}
.zw-watch-film__poster-image,.zw-watch-film__poster-fallback{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;transition:transform .85s cubic-bezier(.2,.75,.2,1),filter .55s ease}
.zw-watch-film__poster-fallback{background:radial-gradient(circle at 72% 28%,rgba(255,209,123,.22),transparent 26%),linear-gradient(135deg,var(--zw-navy),var(--zw-forest) 55%,var(--zw-plum))}
.zw-watch-film__veil{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.18) 55%,rgba(0,0,0,.62)),linear-gradient(90deg,rgba(30,42,38,.45),transparent 55%);transition:background .45s ease}
.zw-watch-film__scan{position:absolute;z-index:2;inset:-20% 0 auto 0;height:28%;opacity:.12;background:linear-gradient(180deg,transparent,rgba(255,209,123,.7),transparent);transform:translateY(-150%);pointer-events:none}
.zw-watch-film__action{position:absolute;z-index:3;left:clamp(20px,3.2vw,54px);right:clamp(20px,3.2vw,54px);bottom:clamp(20px,3vw,46px);display:flex;align-items:center;gap:clamp(14px,2vw,28px)}
.zw-watch-film__play{width:clamp(58px,6vw,94px);height:clamp(58px,6vw,94px);flex:0 0 auto;transition:transform .35s ease}
.zw-watch-film__play svg{display:block;width:100%;height:100%;overflow:visible}
.zw-watch-film__play circle{fill:rgba(255,209,123,.94);stroke:rgba(255,255,255,.2);stroke-width:1}
.zw-watch-film__play path{fill:var(--zw-forest)}
.zw-watch-film__label{font-size:clamp(42px,7vw,112px);line-height:.55;letter-spacing:-.055em;font-weight:700;text-transform:uppercase}
.zw-watch-film__arrow{margin-left:auto;align-self:flex-end;font-size:clamp(28px,3vw,48px);line-height:1;transform:translate(-8px,8px);transition:transform .35s ease}
.zw-watch-film__corner{position:absolute;z-index:3;top:clamp(18px,2vw,30px);right:clamp(18px,2vw,30px);padding:8px 12px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(30,42,38,.25);backdrop-filter:blur(8px);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.zw-watch-film__poster:hover .zw-watch-film__poster-image{transform:scale(1.025);filter:saturate(1.04) contrast(1.02)}
.zw-watch-film__poster:hover .zw-watch-film__play{transform:scale(1.08) rotate(3deg)}
.zw-watch-film__poster:hover .zw-watch-film__arrow{transform:translate(0,0)}
.zw-watch-film__poster:hover .zw-watch-film__scan{animation:zwFilmScan 1.4s ease both}
@keyframes zwFilmScan{0%{transform:translateY(-150%)}100%{transform:translateY(520%)}}
.zw-watch-film__empty{max-width:1720px;margin:0 auto;padding:80px var(--zw-pad);border:1px dashed rgba(255,255,255,.28);color:rgba(255,247,232,.65);text-align:center}
.zw-film-lightbox .zw-lightbox__dialog{width:min(96vw,1900px);height:min(94vh,1180px)}
.zw-film-lightbox .zw-lightbox__media video,.zw-film-lightbox .zw-lightbox__media iframe{display:block;width:100%;max-width:1700px;height:auto;max-height:calc(94vh - 70px);aspect-ratio:16/9;border:0;background:#000;box-shadow:0 30px 110px rgba(0,0,0,.45)}
.zw-film-lightbox .zw-lightbox__media video{object-fit:contain}
.zw-film-lightbox .zw-lightbox__caption{display:none}
@media(max-width:900px){.zw-watch-film__intro,.zw-watch-film__copy{grid-template-columns:1fr;gap:22px}.zw-watch-film__copy h2{font-size:clamp(58px,12vw,88px)}.zw-watch-film__poster{aspect-ratio:16/10}}
@media(max-width:640px){.zw-module--watch-film{padding:72px clamp(18px,4vw,26px)}.zw-watch-film__poster{aspect-ratio:4/5}.zw-watch-film__label{font-size:clamp(42px,15vw,68px)}.zw-watch-film__corner{font-size:9px}.zw-watch-film__arrow{display:none}}
.single-service .zw-module--watch-film .zw-module__eyebrow,.single-service .zw-module--watch-film h2{display:block!important}


/* v0.4.4 — SVG portrait hero: layered Three.js echo sculpture */
.zw-home-v4-hero{
  background:var(--zw-forest);
}
.zw-home-v4-stage{
  inset:72px -3% 0 43%;
  z-index:-3;
  overflow:visible;
  pointer-events:none;
}
.zw-home-v4-stage canvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  opacity:1;
}
.zw-home-face-fallback{
  position:absolute;
  top:50%;
  left:55%;
  width:min(42vw,620px);
  max-height:82%;
  transform:translate(-50%,-50%);
  object-fit:contain;
  opacity:.92;
  filter:drop-shadow(22px 30px 0 rgba(255,209,123,.10));
  transition:opacity .35s ease;
}
.zw-home-v4-stage.is-three-ready .zw-home-face-fallback{opacity:0}
.zw-home-v4-hero__shade{
  z-index:-2;
  background:
    linear-gradient(90deg,var(--zw-forest) 0%,rgba(30,42,38,.99) 30%,rgba(30,42,38,.82) 46%,rgba(30,42,38,.25) 66%,rgba(30,42,38,.04) 82%),
    linear-gradient(0deg,rgba(30,42,38,.72) 0%,transparent 38%);
}
.zw-home-v4-hero__grid{
  z-index:-1;
  opacity:.06;
}
/* Give the text its own clean reading zone while the portrait occupies the right. */
.zw-home-v4-hero__personal{width:min(61vw,960px)}
.zw-home-v4-hero__copy{width:min(57vw,850px)}

@media(max-width:1120px){
  .zw-home-v4-stage{inset:76px -13% 8% 45%}
  .zw-home-v4-hero__personal{width:min(68vw,900px)}
  .zw-home-v4-hero__copy{width:min(65vw,800px)}
}
@media(max-width:760px){
  .zw-home-v4-stage{
    display:block;
    inset:64px -29% auto 33%;
    height:56vh;
    opacity:.42;
  }
  .zw-home-v4-stage canvas{display:none}
  .zw-home-face-fallback{
    display:block;
    top:48%;left:54%;
    width:min(82vw,470px);
    max-height:100%;
    opacity:.9;
    filter:none;
  }
  .zw-home-v4-stage.is-three-ready .zw-home-face-fallback{opacity:.9}
  .zw-home-v4-hero__shade{
    background:
      linear-gradient(0deg,var(--zw-forest) 0%,rgba(30,42,38,.99) 50%,rgba(30,42,38,.5) 78%,rgba(30,42,38,.08) 100%),
      linear-gradient(90deg,var(--zw-forest) 0%,rgba(30,42,38,.84) 55%,rgba(30,42,38,.18) 100%);
  }
  .zw-home-v4-hero__personal,.zw-home-v4-hero__copy{width:100%}
}
@media(prefers-reduced-motion:reduce){
  .zw-home-v4-stage canvas{display:none}
  .zw-home-face-fallback{opacity:.82!important}
}


/* v0.4.6 — clean portrait + bonk lightbulb idea interaction */
.zw-home-v4-stage{
  inset:76px 0 1% 49%;
  pointer-events:none;
}
.zw-home-face-fallback{
  left:52%;
  width:min(31vw,470px);
  max-height:68%;
  filter:drop-shadow(14px 18px 0 rgba(255,209,123,.08));
}
.zw-home-face-click-hint{
  position:absolute;
  z-index:5;
  left:60%;
  top:26%;
  display:inline-flex;
  align-items:center;
  padding:6px 10px 7px;
  border:1px solid rgba(255,209,123,.3);
  border-radius:999px;
  background:rgba(30,42,38,.52);
  color:var(--zw-gold);
  font-size:11px;
  font-weight:700;
  line-height:1;
  letter-spacing:.08em;
  text-transform:uppercase;
  opacity:.48;
  transform:rotate(-7deg) translateY(0);
  transition:opacity .22s ease,transform .22s ease,background .22s ease;
  pointer-events:none;
  backdrop-filter:blur(8px);
}
.zw-home-v4-stage.is-head-hover .zw-home-face-click-hint{
  opacity:1;
  transform:rotate(-4deg) translateY(-4px) scale(1.05);
  background:rgba(46,26,39,.72);
}
.zw-home-v4-stage.is-head-hover canvas{cursor:pointer}
.zw-home-bonk{
  position:absolute;
  z-index:8;
  left:49%;
  top:17%;
  display:block;
  color:var(--zw-gold);
  font-size:clamp(52px,6vw,104px);
  font-weight:900;
  line-height:.7;
  letter-spacing:-.055em;
  text-shadow:5px 5px 0 var(--zw-plum),10px 10px 0 rgba(39,50,72,.75);
  opacity:0;
  transform:rotate(-13deg) scale(.45);
  transform-origin:center;
  pointer-events:none;
}
.zw-home-bonk.is-visible{animation:zwHomeBonk .66s cubic-bezier(.16,.8,.22,1) both}
@keyframes zwHomeBonk{
  0%{opacity:0;transform:rotate(-20deg) scale(.3) translateY(18px)}
  24%{opacity:1;transform:rotate(-10deg) scale(1.2) translateY(-4px)}
  50%{opacity:1;transform:rotate(-13deg) scale(.96) translateY(0)}
  100%{opacity:0;transform:rotate(-8deg) scale(1.08) translateY(-22px)}
}
.zw-home-v4-stage.is-bonking canvas{cursor:default}

@media(max-width:1120px){
  .zw-home-v4-stage{inset:78px -8% 8% 49%}
  .zw-home-face-fallback{width:min(36vw,430px)}
}
@media(max-width:760px){
  .zw-home-v4-stage{
    inset:64px -22% auto 45%;
    height:48vh;
  }
  .zw-home-face-fallback{
    left:50%;
    width:min(66vw,350px);
    max-height:88%;
  }
  .zw-home-face-click-hint,.zw-home-bonk{display:none}
}
@media(prefers-reduced-motion:reduce){
  .zw-home-face-click-hint,.zw-home-bonk{display:none}
}


/* v0.4.7 — Idea Tree plugin integration (theme based on v0.4.6) */
.zw-home-v4-hero{
  min-height:100svh;
  background:
    radial-gradient(circle at 74% 18%,rgba(255,209,123,.18),transparent 25%),
    linear-gradient(180deg,#fffaf0 0%,var(--zw-paper) 100%);
  color:var(--zw-forest);
}
.zw-home-v4-stage--idea-tree{
  position:absolute;
  inset:72px -1.5% 0 44%;
  z-index:1;
  overflow:visible;
  pointer-events:auto;
  opacity:1;
}
.zw-home-v4-stage--idea-tree .zit-shell{width:100%;height:100%}
.zw-home-v4-hero__shade{
  z-index:2;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(255,247,232,.97) 0%,rgba(255,247,232,.92) 31%,rgba(255,247,232,.55) 43%,rgba(255,247,232,.08) 56%,transparent 68%);
}
.zw-home-v4-hero__grid{z-index:2;opacity:.035;background-image:linear-gradient(rgba(30,42,38,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(30,42,38,.35) 1px,transparent 1px)}
.zw-home-v4-hero__content{position:relative;z-index:3;pointer-events:none;padding-top:clamp(112px,11vh,150px)}
.zw-home-v4-hero__content a{pointer-events:auto}
.zw-home-v4-hero__personal{width:min(43vw,720px);margin:auto 0}
.zw-home-v4-hero h1{color:var(--zw-forest);font-size:clamp(88px,9vw,150px);margin-bottom:clamp(28px,4vh,50px)}
.zw-home-v4-hero__copy{width:min(40vw,650px);grid-template-columns:1fr;gap:18px}
.zw-home-v4-hero__copy .zw-home-v4-hero__lead{font-size:clamp(28px,2.35vw,40px);line-height:1.01;color:var(--zw-forest);max-width:25ch}
.zw-home-v4-hero__copy p{font-size:clamp(21px,1.65vw,29px);line-height:1.06;color:rgba(30,42,38,.72);max-width:26ch}
.zw-home-v4-hero__disciplines{color:rgba(30,42,38,.62)}
.zw-home-v4-hero__foot>a{color:var(--zw-forest)}
.zw-home-v4-hero__foot>a span{border-color:rgba(30,42,38,.28)}
.zw-home-idea-tree-placeholder{position:absolute;inset:14% 10% 10%;border-radius:50%;background:radial-gradient(circle,rgba(255,209,123,.19),transparent 64%)}

@media(max-width:1100px){
  .zw-home-v4-stage--idea-tree{inset:76px -10% 3% 43%}
  .zw-home-v4-hero__personal{width:min(47vw,680px)}
  .zw-home-v4-hero__copy{width:min(44vw,610px)}
}
@media(max-width:760px){
  .zw-home-v4-hero{min-height:100svh}
  .zw-home-v4-stage--idea-tree{
    display:block!important;
    inset:64px -10% auto 16%;
    height:46vh;
    opacity:1;
    pointer-events:none;
  }
  .zw-home-v4-stage--idea-tree canvas{display:none!important}
  .zw-home-v4-hero__shade{
    background:linear-gradient(0deg,var(--zw-paper) 0%,rgba(255,247,232,.99) 35%,rgba(255,247,232,.72) 54%,rgba(255,247,232,.10) 76%,transparent 100%);
  }
  .zw-home-v4-hero__content{padding:48vh 18px 24px;justify-content:flex-end}
  .zw-home-v4-hero__personal,.zw-home-v4-hero__copy{width:100%}
  .zw-home-v4-hero h1{font-size:clamp(72px,20vw,108px);margin-bottom:28px}
  .zw-home-v4-hero__copy{gap:14px}
  .zw-home-v4-hero__copy .zw-home-v4-hero__lead{font-size:clamp(26px,7.8vw,38px)}
  .zw-home-v4-hero__copy p{font-size:clamp(20px,5.9vw,28px)}
}
@media(prefers-reduced-motion:reduce){
  .zw-home-v4-stage--idea-tree canvas{display:none!important}
}


/* v0.4.8 — full-width Idea Tree layer + testimonial carousel fixes */
/* The scene now fills the hero and sits underneath the copy instead of being
   constrained to a cropped right-hand canvas. */
.zw-home-v4-stage--idea-tree{
  inset:0;
  width:100%;
  height:100%;
  overflow:hidden;
  z-index:1;
}
.zw-home-v4-stage--idea-tree .zit-shell{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  min-height:0;
}
.zw-home-v4-hero__shade{
  z-index:2;
  background:
    linear-gradient(90deg,rgba(255,247,232,.97) 0%,rgba(255,247,232,.90) 27%,rgba(255,247,232,.64) 42%,rgba(255,247,232,.20) 58%,transparent 76%),
    linear-gradient(0deg,rgba(255,247,232,.34) 0%,transparent 28%);
}
.zw-home-v4-hero__content{z-index:3}
.zw-home-v4-hero__foot{grid-template-columns:1fr}
.zw-home-v4-hero__foot>a{display:none!important}

/* Make testimonial state changes deterministic even after an AJAX page swap. */
.zw-home-v4-testimonial[aria-hidden="true"]{visibility:hidden}
.zw-home-v4-testimonial.is-active{visibility:visible}
.zw-home-v4-testimonials__controls button:disabled{opacity:.35;cursor:default}

@media(max-width:1100px){
  .zw-home-v4-stage--idea-tree{inset:0}
}
@media(max-width:760px){
  .zw-home-v4-stage--idea-tree{
    display:block!important;
    inset:0;
    width:100%;
    height:100%;
    opacity:1;
  }
  .zw-home-v4-hero__shade{
    background:
      linear-gradient(90deg,rgba(255,247,232,.91) 0%,rgba(255,247,232,.70) 52%,rgba(255,247,232,.22) 100%),
      linear-gradient(0deg,rgba(255,247,232,.96) 0%,rgba(255,247,232,.68) 44%,rgba(255,247,232,.15) 80%,transparent 100%);
  }
  .zw-home-v4-hero__content{
    min-height:100svh;
    padding:105px 18px 24px;
    justify-content:space-between;
  }
  .zw-home-v4-hero__personal{margin:auto 0}
}

/* v0.4.9 — restore portfolio discipline filter behaviour */

/* Contact Form 7 ---------------------------------------------------------- */
/* Keep CF7 visually consistent with the editorial Zubair.Works system. */
.wpcf7{
  width:100%;
  max-width:860px;
}
.wpcf7 form{
  margin:0;
}
.wpcf7 form>p{
  margin:0 0 clamp(26px,3vw,42px);
}
.wpcf7 label{
  display:block;
  width:100%;
  color:var(--zw-ink);
  font-size:12px;
  line-height:1.15;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.wpcf7 .wpcf7-form-control-wrap{
  display:block;
  width:100%;
  margin-top:9px;
}
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="url"],
.wpcf7 input[type="number"],
.wpcf7 input[type="date"],
.wpcf7 select,
.wpcf7 textarea{
  appearance:none;
  display:block;
  width:100%;
  max-width:none;
  margin:0;
  border:0;
  border-bottom:1px solid rgba(30,42,38,.34);
  border-radius:0;
  outline:0;
  background:transparent;
  color:var(--zw-ink);
  padding:9px 0 13px;
  font-family:inherit;
  font-size:clamp(22px,2.2vw,34px);
  font-weight:500;
  line-height:1.05;
  letter-spacing:-.025em;
  box-shadow:none;
  transition:border-color .2s ease,background-color .2s ease,padding .2s ease;
}
.wpcf7 textarea{
  min-height:220px;
  resize:vertical;
  padding:18px;
  border:1px solid rgba(30,42,38,.28);
  background:rgba(246,231,203,.22);
  font-size:clamp(19px,1.8vw,28px);
  line-height:1.2;
}
.wpcf7 input[type="text"]:hover,
.wpcf7 input[type="email"]:hover,
.wpcf7 input[type="tel"]:hover,
.wpcf7 input[type="url"]:hover,
.wpcf7 input[type="number"]:hover,
.wpcf7 input[type="date"]:hover,
.wpcf7 select:hover{
  border-color:rgba(30,42,38,.66);
}
.wpcf7 input[type="text"]:focus,
.wpcf7 input[type="email"]:focus,
.wpcf7 input[type="tel"]:focus,
.wpcf7 input[type="url"]:focus,
.wpcf7 input[type="number"]:focus,
.wpcf7 input[type="date"]:focus,
.wpcf7 select:focus{
  border-color:var(--zw-ink);
}
.wpcf7 textarea:focus{
  border-color:var(--zw-ink);
  background:rgba(246,231,203,.42);
}
.wpcf7 ::placeholder{
  color:rgba(30,42,38,.35);
  opacity:1;
}
.wpcf7 input[type="submit"],
.wpcf7 button[type="submit"]{
  appearance:none;
  min-width:190px;
  border:1px solid var(--zw-ink);
  border-radius:0;
  background:var(--zw-ink);
  color:var(--zw-paper);
  padding:16px 22px 17px;
  font-family:inherit;
  font-size:13px;
  line-height:1;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer;
  transition:background-color .2s ease,color .2s ease,transform .2s ease;
}
.wpcf7 input[type="submit"]:hover,
.wpcf7 button[type="submit"]:hover{
  background:var(--zw-gold);
  color:var(--zw-ink);
  transform:translateY(-2px);
}
.wpcf7 input[type="submit"]:focus-visible,
.wpcf7 button[type="submit"]:focus-visible{
  outline:2px solid var(--zw-gold);
  outline-offset:3px;
}
.wpcf7 .wpcf7-spinner{
  margin:0 0 0 14px;
  background-color:var(--zw-ink);
}
.wpcf7 .wpcf7-not-valid{
  border-color:#a34838!important;
}
.wpcf7 .wpcf7-not-valid-tip{
  margin-top:8px;
  color:#8d3529;
  font-size:12px;
  line-height:1.25;
  font-weight:600;
  letter-spacing:.02em;
  text-transform:none;
}
.wpcf7 form .wpcf7-response-output{
  margin:30px 0 0;
  padding:16px 18px;
  border:1px solid var(--zw-line);
  background:rgba(246,231,203,.28);
  color:var(--zw-ink);
  font-size:15px;
  line-height:1.35;
}
.wpcf7 form.sent .wpcf7-response-output{
  border-color:var(--zw-forest);
  background:rgba(30,42,38,.07);
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output{
  border-color:#a34838;
  background:rgba(163,72,56,.06);
}
.wpcf7 .wpcf7-list-item{
  margin:0 18px 8px 0;
}
.wpcf7 input[type="checkbox"],
.wpcf7 input[type="radio"]{
  accent-color:var(--zw-forest);
}

/* Let contact forms breathe a little more than normal reading copy. */
.zw-page>.zw-reading:has(.wpcf7){
  width:min(920px,calc(100% - 2*var(--zw-pad)));
}

@media(max-width:700px){
  .zw-page>.zw-reading:has(.wpcf7){
    width:calc(100% - 2*var(--zw-pad));
    padding-top:48px;
  }
  .wpcf7 form>p{margin-bottom:26px}
  .wpcf7 label{font-size:11px}
  .wpcf7 input[type="text"],
  .wpcf7 input[type="email"],
  .wpcf7 input[type="tel"],
  .wpcf7 input[type="url"],
  .wpcf7 input[type="number"],
  .wpcf7 input[type="date"],
  .wpcf7 select{
    font-size:24px;
    padding-bottom:11px;
  }
  .wpcf7 textarea{
    min-height:180px;
    padding:14px;
    font-size:21px;
  }
  .wpcf7 input[type="submit"],
  .wpcf7 button[type="submit"]{
    width:100%;
    min-width:0;
  }
}


/* v0.4.13 — mobile navigation + stacked mobile homepage hero */
.zw-menu-toggle__icon{
  display:none;
  width:30px;
  height:22px;
  position:relative;
}
.zw-menu-toggle__icon>span{
  position:absolute;
  left:0;
  width:30px;
  height:2px;
  border-radius:999px;
  background:currentColor;
  transform-origin:center;
  transition:transform .22s ease,top .22s ease,opacity .16s ease;
}
.zw-menu-toggle__icon>span:nth-child(1){top:2px}
.zw-menu-toggle__icon>span:nth-child(2){top:10px}
.zw-menu-toggle__icon>span:nth-child(3){top:18px}
.zw-menu-toggle__label{display:inline}

@media(max-width:900px){
  /* Use an icon rather than the word “Menu”. */
  .zw-menu-toggle{
    display:grid;
    place-items:center;
    width:38px;
    height:34px;
    padding:5px 4px;
    color:inherit;
    cursor:pointer;
  }
  .zw-menu-toggle__icon{display:block}
  .zw-menu-toggle__label{
    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;
  }
  .zw-header.menu-open .zw-menu-toggle__icon>span:nth-child(1){top:10px;transform:rotate(45deg)}
  .zw-header.menu-open .zw-menu-toggle__icon>span:nth-child(2){opacity:0}
  .zw-header.menu-open .zw-menu-toggle__icon>span:nth-child(3){top:10px;transform:rotate(-45deg)}

  /* Automatic hero contrast can set inline white colours. The menu panel is
     always light, so its links must always remain dark. */
  .zw-header.menu-open .zw-nav{
    color:var(--zw-ink)!important;
    background:rgba(255,247,232,.98);
    backdrop-filter:blur(18px);
  }
  .zw-header.menu-open .zw-nav a,
  .zw-header.menu-open .zw-nav li,
  .zw-header.menu-open .zw-nav *{
    color:var(--zw-ink)!important;
  }

  /* Mobile hero becomes a true stack: visual first, copy second. This avoids
     fading the illustration underneath several screens' worth of text. */
  .zw-home-v4-hero{
    min-height:0;
    overflow:hidden;
    display:block;
    background:var(--zw-paper);
  }
  .zw-home-v4-stage--idea-tree{
    position:relative!important;
    inset:auto!important;
    width:100%!important;
    height:clamp(360px,55svh,560px)!important;
    margin:64px 0 0!important;
    overflow:hidden!important;
    z-index:1;
    pointer-events:none;
    opacity:1;
  }
  .zw-home-v4-stage--idea-tree .zit-shell{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    min-height:0;
  }
  .zw-home-v4-stage--idea-tree .zit-fallback{
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    object-fit:contain!important;
    object-position:center center!important;
  }
  .zw-home-v4-stage--idea-tree canvas{display:none!important}
  .zw-home-v4-hero__shade,
  .zw-home-v4-hero__grid{display:none!important}
  .zw-home-v4-hero__content{
    min-height:0!important;
    padding:clamp(24px,5vw,38px) 18px 38px!important;
    display:block;
    pointer-events:auto;
  }
  .zw-home-v4-hero__personal{
    width:100%!important;
    margin:0!important;
  }
  .zw-home-v4-hero h1{
    margin:0 0 26px!important;
    font-size:clamp(70px,19vw,106px)!important;
  }
  .zw-home-v4-hero__copy{
    width:100%!important;
    gap:14px;
  }
  .zw-home-v4-hero__foot{
    margin-top:28px;
  }
}


/* v0.4.14 — mobile Idea Tree: full-bleed crop + soft fade */
@media(max-width:900px){
  .zw-home-v4-stage--idea-tree{
    height:clamp(390px,58svh,590px)!important;
    position:relative!important;
    isolation:isolate;
    background:var(--zw-paper);
  }

  /* Fill the visual area rather than letterboxing the landscape fallback.
     Bias the crop slightly right so the tree + seated figure remain prominent. */
  .zw-home-v4-stage--idea-tree .zit-fallback{
    position:absolute!important;
    inset:0!important;
    margin:0!important;
    transform:none!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    object-fit:cover!important;
    object-position:56% center!important;
    filter:none!important;
    z-index:1;
  }

  /* Bring back a restrained overlay: slight paper wash overall and a stronger
     fade at the bottom so the image flows naturally into the text block. */
  .zw-home-v4-stage--idea-tree::after{
    content:"";
    position:absolute;
    z-index:4;
    inset:0;
    pointer-events:none;
    background:
      linear-gradient(180deg,
        rgba(255,247,232,.08) 0%,
        rgba(255,247,232,.04) 48%,
        rgba(255,247,232,.22) 72%,
        rgba(255,247,232,.92) 100%
      ),
      linear-gradient(90deg,
        rgba(255,247,232,.10) 0%,
        transparent 32%,
        transparent 74%,
        rgba(255,247,232,.08) 100%
      );
  }
}

/* v0.4.19 — separate curved widescreen carousel with vertical 9:16 cards */
.zw-module--wide-reels{
  position:relative;
  overflow:hidden;
  padding:clamp(82px,8vw,126px) 0 clamp(74px,7vw,112px);
  background:
    radial-gradient(circle at 78% 20%,rgba(39,50,72,.38),transparent 34%),
    radial-gradient(circle at 15% 85%,rgba(46,26,39,.4),transparent 38%),
    var(--zw-ink);
  color:var(--zw-paper);
}
.zw-wide-reels-head{
  width:min(1600px,calc(100% - (var(--zw-pad) * 2)));
  margin:0 auto;
  position:relative;
  z-index:3;
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(320px,.72fr);
  column-gap:clamp(54px,8vw,150px);
  align-items:end;
}
.zw-module--wide-reels .zw-module__eyebrow{
  grid-column:1/-1;
  margin-bottom:18px;
  color:rgba(255,247,232,.58);
  font-size:13px;
}
.zw-wide-reels-head h2{
  grid-column:1;
  margin:0;
  max-width:12ch;
  font-size:clamp(62px,7.5vw,122px);
  line-height:.72;
  letter-spacing:-.058em;
  white-space:pre-line;
  font-weight:700;
}
.zw-wide-reels-head p{
  grid-column:2;
  margin:0 0 .2em;
  max-width:54ch;
  justify-self:end;
  font-size:clamp(18px,1.5vw,24px);
  line-height:1.42;
  color:rgba(255,247,232,.72);
}
.zw-wide-reel-stage{
  position:relative;
  z-index:2;
  height:clamp(420px,36vw,620px);
  margin-top:clamp(36px,5vw,76px);
  perspective:1800px;
  perspective-origin:50% 26%;
}
.zw-wide-reel-stage::before,
.zw-wide-reel-stage::after{
  content:"";
  position:absolute;
  z-index:5;
  top:0;
  bottom:0;
  width:min(10vw,150px);
  pointer-events:none;
}
.zw-wide-reel-stage::before{left:0;background:linear-gradient(90deg,var(--zw-ink),transparent)}
.zw-wide-reel-stage::after{right:0;background:linear-gradient(-90deg,var(--zw-ink),transparent)}
.zw-wide-reel-carousel{
  position:absolute;
  inset:0;
  transform-style:preserve-3d;
  touch-action:pan-y;
  cursor:grab;
  user-select:none;
  -webkit-user-select:none;
}
.zw-wide-reel-carousel:active,.zw-wide-reel-carousel.is-dragging{cursor:grabbing}
.zw-wide-reel-card{
  position:absolute;
  left:50%;
  top:54%;
  width:clamp(190px,15.5vw,270px);
  aspect-ratio:9/16;
  overflow:hidden;
  border-radius:16px;
  background:var(--zw-plum);
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 22px 60px rgba(0,0,0,.32);
  transform-origin:50% 50%;
  will-change:transform,opacity,filter;
  backface-visibility:hidden;
}
.zw-wide-reel-card>a{display:block;width:100%;height:100%}
.zw-wide-reel-card img,
.zw-wide-reel-card video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  background:var(--zw-forest);
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
}
.zw-wide-reel-card video::-webkit-media-controls,
.zw-wide-reel-card video::-webkit-media-controls-enclosure{display:none!important}
.zw-wide-reel-fallback{
  position:absolute;
  inset:0;
  background:linear-gradient(135deg,var(--zw-navy),var(--zw-plum) 52%,var(--zw-gold));
}
@media(max-width:900px){
  .zw-module--wide-reels{padding:74px 0 66px}
  .zw-wide-reels-head{width:calc(100% - 40px);display:block}
  .zw-module--wide-reels .zw-module__eyebrow{font-size:12px}
  .zw-wide-reels-head h2{font-size:clamp(52px,14vw,78px);line-height:.75;max-width:10ch}
  .zw-wide-reels-head p{font-size:18px;max-width:48ch;margin:20px 0 0;justify-self:auto}
  .zw-wide-reel-stage{height:clamp(330px,78vw,520px);margin-top:28px;perspective:1100px}
  .zw-wide-reel-card{top:56%;width:min(34vw,190px);border-radius:12px}
  .zw-wide-reel-stage::before,.zw-wide-reel-stage::after{width:12vw}
}
@media(prefers-reduced-motion:reduce){
  .zw-wide-reel-card{will-change:auto}
}

/* This secondary curved carousel is intentionally editorial even on service pages:
   retain its requested heading above the moving media. */
.single-service .zw-module--wide-reels h2{display:block!important}


/* v0.4.24 — portfolio linked-service CTA, up to three services */
.zw-module--service-cta{
  padding:clamp(72px,7vw,112px) var(--zw-pad);
  background:var(--zw-paper);
  color:var(--zw-ink);
}
.zw-service-cta-intro,
.zw-service-cta-grid{
  width:min(1600px,100%);
  margin-inline:auto;
}
.zw-service-cta-intro{margin-bottom:clamp(34px,4vw,62px)}
.zw-service-cta-intro .zw-module__eyebrow{margin-bottom:20px;color:rgba(30,42,38,.58)}
.zw-service-cta-intro__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.72fr);gap:clamp(34px,7vw,110px);align-items:start}
.zw-service-cta-intro h2{margin:0;max-width:10ch;font-size:clamp(56px,6.2vw,106px);line-height:.72;letter-spacing:-.058em;white-space:pre-line}
.zw-service-cta-intro__body{max-width:48ch;font-size:clamp(18px,1.35vw,23px);line-height:1.42;color:var(--zw-muted)}
.zw-service-cta-intro__body p{margin:0}
.zw-service-cta-grid{display:grid;gap:clamp(18px,2vw,30px)}
.zw-service-cta-grid--1{grid-template-columns:1fr}
.zw-service-cta-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.zw-service-cta-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.zw-service-cta{
  position:relative;
  overflow:hidden;
  border:1px solid rgba(30,42,38,.18);
  border-radius:24px;
  background:#fffaf0;
  color:inherit;
  text-decoration:none;
  box-shadow:0 24px 70px rgba(30,42,38,.08);
}
.zw-service-cta-grid--1 .zw-service-cta{
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(420px,1.08fr);
  min-height:clamp(430px,40vw,650px);
}
.zw-service-cta-grid--2 .zw-service-cta,
.zw-service-cta-grid--3 .zw-service-cta{
  display:flex;
  flex-direction:column;
  min-height:clamp(500px,42vw,660px);
}
.zw-service-cta__copy{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(30px,3.5vw,58px);
}
.zw-service-cta-grid--2 .zw-service-cta__copy,
.zw-service-cta-grid--3 .zw-service-cta__copy{order:2;justify-content:flex-start;flex:1;padding:clamp(26px,2.5vw,40px)}
.zw-service-cta__type{
  width:max-content;
  margin-bottom:14px;
  padding:7px 11px 8px;
  border:1px solid rgba(30,42,38,.18);
  border-radius:999px;
  font-size:11px;
  line-height:1;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.zw-service-cta h3{
  margin:0;
  max-width:12ch;
  font-size:clamp(42px,4.6vw,82px);
  line-height:.78;
  letter-spacing:-.052em;
}
.zw-service-cta-grid--2 h3,.zw-service-cta-grid--3 h3{font-size:clamp(36px,3.4vw,58px);line-height:.82;max-width:11ch}
.zw-service-cta__body{margin-top:clamp(20px,2vw,30px);max-width:47ch;font-size:clamp(17px,1.15vw,21px);line-height:1.42;color:var(--zw-muted)}
.zw-service-cta__body p{margin:0}
.zw-service-cta__button{
  width:max-content;
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:30px;
  margin-top:clamp(28px,3vw,44px);
  padding:14px 17px 15px;
  border-radius:999px;
  background:var(--zw-ink);
  color:var(--zw-paper);
  font-size:14px;
  font-weight:700;
  line-height:1;
  transition:transform .2s ease,background .2s ease,color .2s ease;
}
.zw-service-cta-grid--2 .zw-service-cta__button,.zw-service-cta-grid--3 .zw-service-cta__button{margin-top:auto;padding-top:14px}
.zw-service-cta__media{position:relative;overflow:hidden;background:var(--zw-forest)}
.zw-service-cta-grid--1 .zw-service-cta__media{min-height:100%}
.zw-service-cta-grid--2 .zw-service-cta__media,.zw-service-cta-grid--3 .zw-service-cta__media{order:1;aspect-ratio:4/3;min-height:0}
.zw-service-cta__media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(30,42,38,.12),transparent 34%);pointer-events:none}
.zw-service-cta__media img,.zw-service-cta__placeholder{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .45s ease}
.zw-service-cta__placeholder{background:linear-gradient(135deg,var(--zw-forest),var(--zw-navy) 60%,var(--zw-plum))}
.zw-service-cta__arrow{position:absolute;z-index:3;right:18px;top:18px;width:50px;height:50px;display:grid;place-items:center;border-radius:50%;background:rgba(255,247,232,.92);color:var(--zw-ink);font-size:21px;backdrop-filter:blur(8px);transition:transform .25s ease}
.zw-service-cta:hover .zw-service-cta__media img{transform:scale(1.035)}
.zw-service-cta:hover .zw-service-cta__arrow{transform:rotate(8deg) scale(1.05)}
.zw-service-cta:hover .zw-service-cta__button{transform:translateY(-2px);background:var(--zw-gold);color:var(--zw-ink)}
@media(max-width:1100px){
  .zw-service-cta-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
  .zw-module--service-cta{padding:58px 20px}
  .zw-service-cta-intro__grid{grid-template-columns:1fr;gap:20px}
  .zw-service-cta-intro h2{font-size:clamp(52px,15vw,76px);max-width:10ch}
  .zw-service-cta-intro__body{font-size:18px}
  .zw-service-cta-grid--1,.zw-service-cta-grid--2,.zw-service-cta-grid--3{grid-template-columns:1fr}
  .zw-service-cta,.zw-service-cta-grid--1 .zw-service-cta,.zw-service-cta-grid--2 .zw-service-cta,.zw-service-cta-grid--3 .zw-service-cta{display:flex;flex-direction:column;min-height:0;border-radius:18px}
  .zw-service-cta__media,.zw-service-cta-grid--1 .zw-service-cta__media,.zw-service-cta-grid--2 .zw-service-cta__media,.zw-service-cta-grid--3 .zw-service-cta__media{order:1;min-height:0;aspect-ratio:4/3}
  .zw-service-cta__copy,.zw-service-cta-grid--2 .zw-service-cta__copy,.zw-service-cta-grid--3 .zw-service-cta__copy{order:2;padding:30px 26px 34px}
  .zw-service-cta h3,.zw-service-cta-grid--2 h3,.zw-service-cta-grid--3 h3{font-size:clamp(42px,12vw,62px);max-width:11ch}
  .zw-service-cta__body{font-size:18px}
}

/* v0.4.23 — optional module headings */
.zw-module h2:empty{display:none!important}


/* v0.4.28 — pricing/package CTA refinement */
.single-service .zw-module--package{
  grid-template-columns:minmax(300px,420px) minmax(440px,700px);
  justify-content:center;
  gap:clamp(58px,6vw,104px);
  padding:clamp(54px,4.5vw,76px) clamp(72px,10vw,190px);
}
.single-service .zw-floating-module-image--package{
  max-width:420px;
  height:clamp(370px,30vw,500px);
  justify-self:end;
}
.single-service .zw-package-main{
  max-width:700px;
  margin:0;
  justify-self:start;
}
.zw-package-offer{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:.28em .42em;
  margin-bottom:clamp(20px,2vw,30px);
}
.zw-package-offer__lead{
  font-size:clamp(22px,1.65vw,28px);
  line-height:1.05;
  font-weight:500;
  letter-spacing:-.018em;
}
.single-service .zw-package-price{
  display:inline;
  margin:0;
  font-size:clamp(72px,5.7vw,98px);
  line-height:.78;
  letter-spacing:-.055em;
}
.single-service .zw-package-copy{
  max-width:58ch;
  margin-bottom:28px;
  font-size:clamp(19px,1.3vw,22px);
  line-height:1.48;
}
.single-service .zw-package-list{
  max-width:700px;
}
.single-service .zw-package-row{
  grid-template-columns:minmax(112px,.42fr) minmax(0,1.58fr);
  gap:clamp(24px,2vw,34px);
  padding:19px 0;
  font-size:clamp(17px,1.18vw,20px);
  line-height:1.38;
}
.single-service .zw-package-row span:first-child{
  font-size:11px;
  letter-spacing:.15em;
  padding-top:4px;
}
.single-service .zw-package-row span:last-child{
  font-weight:500;
}
.single-service .zw-package-button{
  width:min(100%,560px);
  max-width:none;
  min-height:66px;
  margin-top:34px;
  padding:14px 14px 14px 24px;
  font-size:clamp(16px,1.05vw,18px);
  letter-spacing:.065em;
  background:var(--zw-gold);
  color:var(--zw-forest);
  border-color:rgba(30,42,38,.12);
  box-shadow:0 18px 38px rgba(0,0,0,.18);
}
.single-service .zw-package-button span:last-child{
  width:40px;
  height:40px;
  flex-basis:40px;
  background:var(--zw-forest);
  color:var(--zw-paper);
  border-color:var(--zw-forest);
}
.single-service .zw-package-button:hover,
.single-service .zw-package-button:focus-visible{
  background:var(--zw-paper);
  color:var(--zw-forest);
  transform:translateY(-4px);
  box-shadow:0 24px 48px rgba(0,0,0,.24);
}
.single-service .zw-package-button:hover span:last-child,
.single-service .zw-package-button:focus-visible span:last-child{
  background:var(--zw-forest);
  color:var(--zw-gold);
  border-color:var(--zw-forest);
}

@media(max-width:1100px){
  .single-service .zw-module--package{
    grid-template-columns:minmax(260px,.76fr) minmax(390px,1.24fr);
    gap:clamp(38px,5vw,62px);
    padding-left:clamp(52px,7vw,82px);
    padding-right:clamp(52px,7vw,82px);
  }
}
@media(max-width:900px){
  .single-service .zw-module--package{
    grid-template-columns:minmax(0,.78fr) minmax(350px,1.22fr);
    padding-left:clamp(34px,5vw,54px);
    padding-right:clamp(34px,5vw,54px);
  }
  .single-service .zw-floating-module-image--package{
    justify-self:center;
  }
  .single-service .zw-package-main{
    justify-self:stretch;
  }
}
@media(max-width:700px){
  .single-service .zw-module--package{
    grid-template-columns:1fr;
    padding:44px clamp(22px,6vw,34px) 50px;
  }
  .single-service .zw-floating-module-image--package{
    justify-self:center;
  }
  .zw-package-offer{
    gap:.2em .35em;
  }
  .zw-package-offer__lead{
    font-size:22px;
  }
  .single-service .zw-package-price{
    font-size:clamp(68px,20vw,88px);
  }
  .single-service .zw-package-row{
    grid-template-columns:104px 1fr;
    gap:18px;
    font-size:17px;
  }
}
