:root{
  --paper:#F5F2ED;
  --paper-2:#EAE5DD;
  --ink:#141414;
  --ink-soft:#5B5752;
  --rust:#B5532B;
  --line:rgba(20,20,20,.12);
  --display:"Anton","Bebas Neue",Impact,sans-serif;
  --body:"DM Sans",Helvetica,Arial,sans-serif;
  --gutter:clamp(16px,4vw,56px);
  --ease:cubic-bezier(.2,.7,.1,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--rust);color:var(--paper)}

/* page entrance */
body{animation:pageIn .7s var(--ease) both}
@keyframes pageIn{from{opacity:0}to{opacity:1}}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:20px var(--gutter);transition:background .4s,padding .4s,color .4s;color:var(--ink)}
.nav.on-dark{color:var(--paper)}
.nav.scrolled{background:rgba(245,242,237,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:12px var(--gutter);color:var(--ink);border-bottom:1px solid var(--line)}
.brand{font-family:var(--display);font-size:22px;letter-spacing:.04em;text-decoration:none;text-transform:uppercase}
.nav ul{list-style:none;display:flex;gap:clamp(16px,2.6vw,36px)}
.nav ul a{text-decoration:none;font-size:13px;letter-spacing:.18em;text-transform:uppercase;position:relative;padding:4px 0}
.nav ul a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease)}
.nav ul a:hover::after,.nav ul a[aria-current]::after{transform:scaleX(1);transform-origin:left}
.menu-btn{display:none;background:none;border:0;color:inherit;font:inherit;font-size:13px;letter-spacing:.18em;text-transform:uppercase;cursor:pointer}
@media(max-width:760px){
  .menu-btn{display:block}
  .nav ul{position:fixed;inset:0;background:var(--ink);color:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:28px;opacity:0;pointer-events:none;transition:opacity .4s}
  .nav ul a{font-family:var(--display);font-size:44px;letter-spacing:.02em}
  .nav.open ul{opacity:1;pointer-events:auto}
  .nav.open .menu-btn{position:relative;z-index:2;color:var(--paper)}
}

/* ---------- hero ---------- */
.hero{position:relative;height:100svh;min-height:560px;background:var(--ink);color:var(--paper);overflow:hidden}
.hero-strip{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.hero-strip figure{overflow:hidden;position:relative}
.hero-strip img{width:100%;height:100%;object-fit:cover;transform:scale(1.18);opacity:0;animation:heroImg 1.8s var(--ease) forwards,kenburns 22s ease-in-out 1.8s infinite alternate}
.hero-strip figure:nth-child(2) img{animation-delay:.18s,2s}
.hero-strip figure:nth-child(3) img{animation-delay:.36s,2.2s}
@keyframes heroImg{to{opacity:1;transform:scale(1.04)}}
@keyframes kenburns{from{transform:scale(1.04)}to{transform:scale(1.14) translateY(-2%)}}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,20,20,.35) 0%,rgba(20,20,20,0) 30%,rgba(20,20,20,.15) 55%,rgba(20,20,20,.85) 100%)}
.hero-copy{position:absolute;z-index:2;left:var(--gutter);right:var(--gutter);bottom:clamp(28px,6vh,64px)}
.hero h1{font-family:var(--display);font-weight:400;text-transform:uppercase;font-size:clamp(64px,15vw,230px);line-height:.86;letter-spacing:-.005em}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line span{display:inline-block;transform:translateY(105%);animation:rise 1.1s var(--ease) forwards}
.hero h1 .line:nth-child(2) span{animation-delay:.12s}
@keyframes rise{to{transform:none}}
.hero-meta{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-top:18px;opacity:0;animation:fadeUp 1s var(--ease) .7s forwards}
.hero-meta p{font-size:13px;letter-spacing:.22em;text-transform:uppercase}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.scroll-cue{width:1px;height:56px;background:rgba(245,242,237,.35);position:relative;overflow:hidden}
.scroll-cue::after{content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;background:var(--paper);animation:cue 2s ease-in-out infinite}
@keyframes cue{to{top:100%}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:12px;font-size:13px;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;padding:16px 28px;border:1px solid currentColor;position:relative;overflow:hidden;isolation:isolate;transition:color .45s var(--ease);cursor:pointer;background:none;font-family:var(--body)}
.btn::before{content:"";position:absolute;inset:0;background:var(--ink);transform:translateY(101%);transition:transform .45s var(--ease);z-index:-1}
.btn:hover{color:var(--paper)}
.btn:hover::before{transform:none}
.btn.light{color:var(--paper)}
.btn.light::before{background:var(--paper)}
.btn.light:hover{color:var(--ink)}
.btn.solid{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn.solid::before{background:var(--rust)}
.btn .arrow{transition:transform .45s var(--ease)}
.btn:hover .arrow{transform:translateX(5px)}

/* ---------- client marquee ---------- */
.clients{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0;overflow:hidden;background:var(--paper)}
.clients .label{padding:0 var(--gutter);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}
.marquee{display:flex;width:max-content;animation:marquee 38s linear infinite}
.clients:hover .marquee{animation-play-state:paused}
.marquee span{font-family:var(--display);font-size:clamp(34px,5vw,64px);text-transform:uppercase;white-space:nowrap;padding-right:.6em;line-height:1.1}
.marquee span i{font-style:normal;color:var(--rust);padding-left:.6em}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ---------- sections ---------- */
.section{padding:clamp(72px,11vw,150px) var(--gutter)}
.eyebrow{font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:12px}
.eyebrow::before{content:"";width:28px;height:1px;background:currentColor}
.display{font-family:var(--display);font-weight:400;text-transform:uppercase;line-height:.92;font-size:clamp(48px,8vw,120px)}
.lede{font-size:clamp(20px,2.2vw,28px);line-height:1.4;max-width:30ch}
.intro{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(24px,6vw,96px);align-items:end}
@media(max-width:800px){.intro{grid-template-columns:1fr}}

/* ---------- page header ---------- */
.page-head{padding:clamp(130px,18vw,220px) var(--gutter) clamp(40px,6vw,72px)}
.page-head h1{font-family:var(--display);font-weight:400;text-transform:uppercase;font-size:clamp(72px,16vw,240px);line-height:.85}
.page-head h1 .line{display:block;overflow:hidden}
.page-head h1 .line span{display:inline-block;transform:translateY(105%);animation:rise 1.1s var(--ease) .1s forwards}
.page-head .sub{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-top:28px;align-items:flex-end}
.page-head .sub p{max-width:42ch;font-size:19px}

/* ---------- tiles ---------- */
.tiles{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(12px,1.6vw,24px);margin-top:clamp(40px,6vw,80px)}
.tile{position:relative;text-decoration:none;display:block;grid-column:span 4}
.tile.wide{grid-column:span 8}
.tile.half{grid-column:span 6}
.tile .frame{position:relative;overflow:hidden;aspect-ratio:3/4;background:var(--paper-2)}
.tile.wide .frame{aspect-ratio:16/10}
.tile .frame img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease),filter .8s}
.tile:hover .frame img{transform:scale(1.06)}
.tile .cap{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:14px;border-top:1px solid var(--ink);margin-top:14px}
.tile .cap b{font-family:var(--display);font-weight:400;font-size:clamp(22px,2.2vw,32px);text-transform:uppercase;letter-spacing:.01em;line-height:1}
.tile .cap small{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}
.tile .view{position:absolute;right:16px;bottom:16px;width:74px;height:74px;border-radius:50%;background:var(--paper);color:var(--ink);display:grid;place-items:center;font-size:11px;letter-spacing:.18em;text-transform:uppercase;transform:scale(0);transition:transform .5s var(--ease)}
.tile:hover .view{transform:scale(1)}
@media(max-width:800px){.tile,.tile.wide,.tile.half{grid-column:span 12}.tile.wide .frame{aspect-ratio:4/5}}
@media(min-width:801px){.tile.lift{margin-top:clamp(40px,8vw,120px)}}

/* placeholder art */
.ph{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:22px;background:
  repeating-linear-gradient(135deg,transparent 0 14px,rgba(20,20,20,.035) 14px 15px),var(--paper-2);color:var(--ink)}
.ph .ph-name{font-family:var(--display);text-transform:uppercase;font-size:clamp(34px,4.4vw,64px);line-height:.9}
.ph .ph-note{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:10px}
.ph .ph-note::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--rust);animation:pulse 2.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
.ph.dark{background:repeating-linear-gradient(135deg,transparent 0 14px,rgba(245,242,237,.05) 14px 15px),#1E1D1B;color:var(--paper)}
.ph.dark .ph-note{color:rgba(245,242,237,.6)}

/* ---------- reveal on scroll ---------- */
.reveal{opacity:0;transform:translateY(48px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal-img{clip-path:inset(100% 0 0 0);transition:clip-path 1.3s var(--ease)}
.reveal-img.in{clip-path:inset(0 0 0 0)}
.reveal-img img{transform:scale(1.25);transition:transform 1.8s var(--ease)}
.reveal-img.in img{transform:scale(1)}
.delay-1{transition-delay:.1s}.delay-2{transition-delay:.2s}.delay-3{transition-delay:.3s}

/* ---------- big CTA ---------- */
.cta{background:var(--ink);color:var(--paper);text-align:center;padding:clamp(90px,14vw,180px) var(--gutter)}
.cta .display{font-size:clamp(56px,11vw,170px)}
.cta p{color:rgba(245,242,237,.7);margin:20px auto 40px;max-width:40ch}

/* ---------- footer ---------- */
.footer{background:var(--ink);color:var(--paper);padding:48px var(--gutter) 36px;border-top:1px solid rgba(245,242,237,.12)}
.footer .row{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;font-size:13px;letter-spacing:.1em}
.footer .big{font-family:var(--display);font-size:clamp(40px,7vw,96px);text-transform:uppercase;line-height:.9;margin-bottom:36px}
.footer a{text-decoration:none;border-bottom:1px solid rgba(245,242,237,.3);transition:border-color .3s}
.footer a:hover{border-color:var(--paper)}

/* ---------- work page ---------- */
.filters{display:flex;flex-wrap:wrap;gap:8px;padding:0 var(--gutter);position:sticky;top:64px;z-index:20}
.filters button{font:inherit;font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:10px 18px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:999px;transition:background .3s,color .3s}
.filters button:hover{background:var(--paper-2)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.project{padding:clamp(56px,8vw,110px) var(--gutter);border-top:1px solid var(--line);transition:opacity .5s}
.project[hidden]{display:none}
.project-head{display:grid;grid-template-columns:auto 1fr auto;gap:clamp(16px,3vw,48px);align-items:end;margin-bottom:clamp(28px,4vw,48px)}
.project-head .num{font-family:var(--display);font-size:clamp(20px,2vw,28px);color:var(--rust)}
.project-head h2{font-family:var(--display);font-weight:400;font-size:clamp(48px,8vw,120px);text-transform:uppercase;line-height:.88}
.project-head .tag{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);text-align:right}
.project-desc{max-width:58ch;font-size:18px;margin-bottom:clamp(28px,4vw,48px);color:var(--ink-soft)}
@media(max-width:700px){.project-head{grid-template-columns:1fr}.project-head .tag{text-align:left}}
.gallery{columns:4 260px;column-gap:clamp(10px,1.2vw,18px)}
.gallery figure{break-inside:avoid;margin-bottom:clamp(10px,1.2vw,18px);overflow:hidden;cursor:zoom-in;background:var(--paper-2)}
.gallery img{width:100%;height:auto;transition:transform 1s var(--ease)}
.gallery figure:hover img{transform:scale(1.04)}
.gallery.ph-row{columns:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(10px,1.2vw,18px)}
.gallery.ph-row figure{position:relative;aspect-ratio:3/4;cursor:default;margin:0}
@media(max-width:700px){.gallery.ph-row{grid-template-columns:1fr 1fr}.gallery.ph-row figure:nth-child(3){display:none}}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(20,20,20,.96);display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .4s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:min(92vw,1100px);max-height:86vh;object-fit:contain;transform:scale(.96);transition:transform .5s var(--ease)}
.lightbox.open img{transform:none}
.lightbox button{position:absolute;background:none;border:0;color:var(--paper);font:inherit;font-size:13px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;padding:16px}
.lb-close{top:12px;right:12px}.lb-prev{left:8px;top:50%;transform:translateY(-50%)}.lb-next{right:8px;top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);color:rgba(245,242,237,.6);font-size:12px;letter-spacing:.2em}

/* ---------- motion page ---------- */
.reel{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px) clamp(16px,2vw,28px);padding:0 var(--gutter) clamp(72px,10vw,140px)}
.reel .item.feature{grid-column:span 2}
@media(max-width:800px){.reel{grid-template-columns:1fr}.reel .item.feature{grid-column:span 1}}
.video{position:relative;aspect-ratio:16/9;background:#1E1D1B;overflow:hidden;cursor:pointer}
.video img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease),opacity .5s}
.video:hover img{transform:scale(1.05)}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.play{position:absolute;inset:0;display:grid;place-items:center}
.play span{width:clamp(70px,8vw,104px);height:clamp(70px,8vw,104px);border-radius:50%;border:1px solid rgba(245,242,237,.8);display:grid;place-items:center;color:var(--paper);font-size:11px;letter-spacing:.2em;text-transform:uppercase;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);background:rgba(20,20,20,.18);transition:transform .5s var(--ease),background .4s}
.video:hover .play span{transform:scale(1.12);background:rgba(181,83,43,.85);border-color:transparent}
.item .meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-top:1px solid var(--ink);margin-top:14px;padding-top:14px}
.item .meta b{font-family:var(--display);font-weight:400;font-size:clamp(24px,2.6vw,38px);text-transform:uppercase;line-height:1}
.item .meta small{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft)}
.item p{color:var(--ink-soft);margin-top:8px;max-width:52ch}

/* ---------- about ---------- */
.about-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,7vw,120px);padding:0 var(--gutter) clamp(72px,10vw,140px);align-items:start}
.about-grid .portrait{position:sticky;top:110px}
.about-grid .portrait .frame{aspect-ratio:4/5;overflow:hidden;background:var(--paper-2)}
.about-grid .portrait img{width:100%;height:100%;object-fit:cover}
.about-grid .bio p{font-size:clamp(18px,1.6vw,21px);margin-bottom:1.2em}
.about-grid .bio p:first-child{font-size:clamp(24px,2.6vw,34px);line-height:1.3}
@media(max-width:800px){.about-grid{grid-template-columns:1fr}.about-grid .portrait{position:static}}
.services{list-style:none;border-top:1px solid var(--ink);margin:40px 0}
.services li{display:flex;justify-content:space-between;align-items:baseline;padding:18px 0;border-bottom:1px solid var(--line);font-family:var(--display);font-size:clamp(24px,2.6vw,36px);text-transform:uppercase;line-height:1;transition:padding .45s var(--ease),color .3s}
.services li span{font-family:var(--body);font-size:12px;letter-spacing:.2em;color:var(--ink-soft)}
.services li:hover{padding-left:14px;color:var(--rust)}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:40px 0}
.facts div{border-top:1px solid var(--ink);padding-top:12px}
.facts b{font-family:var(--display);font-weight:400;font-size:clamp(40px,5vw,72px);line-height:1;display:block}
.facts small{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(32px,7vw,120px);padding:0 var(--gutter) clamp(72px,10vw,140px)}
@media(max-width:800px){.contact-grid{grid-template-columns:1fr}}
.direct a{display:block;font-family:var(--display);font-size:clamp(28px,3.2vw,46px);text-transform:uppercase;text-decoration:none;line-height:1.1;margin:10px 0;transition:color .3s;word-break:break-word}
.direct a:hover{color:var(--rust)}
.direct p{color:var(--ink-soft);margin-top:24px;max-width:36ch}
form .field{position:relative;margin-bottom:28px}
form label{display:block;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
form input,form textarea,form select{width:100%;font:inherit;font-size:19px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--ink);padding:10px 0;border-radius:0;outline:none;transition:border-color .3s}
form input:focus,form textarea:focus,form select:focus{border-color:var(--rust)}
form textarea{min-height:140px;resize:vertical}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{margin:0;cursor:pointer}
.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;padding:10px 16px;border:1px solid var(--ink);border-radius:999px;transition:background .3s,color .3s;color:var(--ink)}
.chips input:checked+span{background:var(--ink);color:var(--paper)}
.chips input:focus-visible+span{outline:2px solid var(--rust);outline-offset:2px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media(max-width:560px){.two{grid-template-columns:1fr}}
.form-note{font-size:14px;color:var(--ink-soft);margin-top:14px}
.sent{display:none;font-family:var(--display);font-size:clamp(32px,4vw,54px);text-transform:uppercase;line-height:1}
.sent.show{display:block;animation:fadeUp .8s var(--ease)}

/* cursor follower (desktop only) */
.cursor{position:fixed;top:0;left:0;width:10px;height:10px;border-radius:50%;background:var(--rust);pointer-events:none;z-index:200;transform:translate(-50%,-50%);transition:width .3s var(--ease),height .3s var(--ease),opacity .3s;mix-blend-mode:multiply;opacity:0}
.cursor.big{width:48px;height:48px;opacity:.35}
@media(hover:none){.cursor{display:none}}

/* skip link */
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--paper);padding:8px 14px;z-index:300}
.skip:focus{left:8px}

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .reveal,.reveal-img{opacity:1;transform:none;clip-path:none}
  .reveal-img img{transform:none}
  .hero-strip img{opacity:1;transform:none}
  .hero h1 .line span,.page-head h1 .line span{transform:none}
  .hero-meta{opacity:1}
  .marquee{animation:none}
  .cursor{display:none}
}
/* =========================================================
   Soft theme (overrides): blush, cream, plum + Cormorant/Jost
   ========================================================= */
:root{
  --paper:#FBF6F1;
  --paper-2:#F3E5DF;
  --blush:#EBD5CF;
  --ink:#33262B;
  --ink-soft:#86737A;
  --rust:#B87478;
  --plum:#3E2C33;
  --line:rgba(51,38,43,.12);
  --display:"Cormorant Garamond","Cormorant",Georgia,serif;
  --body:"Jost","DM Sans",Helvetica,Arial,sans-serif;
}
body{font-weight:300;letter-spacing:.01em}
::selection{background:var(--blush);color:var(--ink)}
em{font-style:italic;color:var(--rust)}

.brand,.hero h1,.display,.page-head h1,.tile .cap b,.ph .ph-name,.project-head h2,
.item .meta b,.services li,.facts b,.direct a,.sent,.footer .big,.clientlist li{
  font-family:var(--display);text-transform:none;font-weight:400;letter-spacing:-.01em}
.brand{font-size:26px;letter-spacing:.01em;font-weight:500}
.brand em{color:inherit}
.hero h1{font-size:clamp(68px,13vw,200px);line-height:.88;font-weight:400}
.hero h1 .line:nth-child(2) span{font-style:italic;font-weight:300}
.display{font-size:clamp(52px,8vw,124px);line-height:.95}
.page-head h1{font-size:clamp(76px,14vw,210px);line-height:.9}
.tile .cap b{font-size:clamp(26px,2.4vw,36px);line-height:1}
.ph .ph-name{font-size:clamp(38px,4.6vw,68px);line-height:.95;font-style:italic;font-weight:300}
.project-head h2{font-size:clamp(52px,8vw,120px);line-height:.95}
.item .meta b{font-size:clamp(26px,2.8vw,40px)}
.services li{font-size:clamp(28px,2.8vw,40px)}
.facts b{font-size:clamp(46px,5.4vw,80px);font-weight:300}
.direct a{font-size:clamp(30px,3.4vw,50px);word-break:normal;overflow-wrap:anywhere}
.footer .big{font-size:clamp(48px,7vw,104px);font-weight:300}
.sent{font-size:clamp(34px,4vw,56px);font-style:italic}
@media(max-width:760px){.nav ul a{font-family:var(--display);text-transform:none;font-size:48px;letter-spacing:0;font-style:italic}}

.nav ul a,.eyebrow,.tile .cap small,.btn,.filters button,.project-head .tag,.item .meta small,form label,.chips span,.ph .ph-note,.hero-meta p,.clients .label{font-weight:400;letter-spacing:.2em}

.hero{background:var(--plum)}
.hero::after{background:linear-gradient(180deg,rgba(62,44,51,.30) 0%,rgba(62,44,51,0) 30%,rgba(62,44,51,.12) 55%,rgba(62,44,51,.78) 100%)}
@media(max-width:760px){.nav ul{background:var(--plum)}}
.nav.scrolled{background:rgba(251,246,241,.9)}
.tile .frame,.gallery figure,.video,.about-grid .portrait .frame{border-radius:6px}
.tile .cap{border-top-color:var(--line)}
.item .meta{border-top-color:var(--line)}
.services{border-top-color:var(--line)}
.facts div{border-top-color:var(--line)}
.tile .view{background:var(--blush)}
.ph{background:repeating-linear-gradient(135deg,transparent 0 16px,rgba(184,116,120,.07) 16px 17px),var(--paper-2)}
.ph.dark{background:repeating-linear-gradient(135deg,transparent 0 16px,rgba(251,246,241,.06) 16px 17px),#5A434B;color:var(--paper)}

.btn{border-radius:999px;padding:15px 30px}
.btn::before{background:var(--ink);border-radius:999px}
.btn.solid{background:var(--ink);border-color:var(--ink)}
.btn.solid::before{background:var(--rust)}

.cta{background:var(--blush);color:var(--ink)}
.cta p{color:var(--ink-soft)}
.cta .eyebrow{color:var(--ink-soft)!important}
.cta .btn.light{color:var(--ink)}
.cta .btn.light::before{background:var(--ink)}
.cta .btn.light:hover{color:var(--paper)}
.footer{background:var(--plum);border-top:0}
.lightbox{background:rgba(62,44,51,.96)}
.video{background:#5A434B}
.play span{background:rgba(62,44,51,.2)}
.video:hover .play span{background:rgba(184,116,120,.9)}
.cursor{mix-blend-mode:normal;background:var(--rust)}
.cursor.big{opacity:.25}
.filters button[aria-pressed="true"]{background:var(--ink)}
.filters button{border-color:rgba(51,38,43,.35)}
.chips span{border-color:rgba(51,38,43,.35)}
form input,form textarea{border-bottom-color:rgba(51,38,43,.35)}

.clientlist{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:6px 0;padding:6px var(--gutter) 0}
.clientlist li{font-size:clamp(28px,3.6vw,50px);line-height:1.15;white-space:nowrap}
.clientlist li:nth-child(even){font-style:italic;font-weight:300}
.clientlist li:not(:last-child)::after{content:"·";color:var(--rust);padding:0 .45em;font-style:normal}
.clients{text-align:center}
.clients .label{padding:0}
.page-head h1 .line:nth-child(2) span{font-style:italic;font-weight:300}
.project-head{grid-template-columns:1fr auto}
.tile .frame .play span{width:64px;height:64px}
.gallery.ph-row.single{grid-template-columns:1fr}
.gallery.ph-row.single figure{aspect-ratio:21/8;display:block}
@media(max-width:700px){.gallery.ph-row.single figure{aspect-ratio:4/3}}
.footer em{color:var(--blush)}
/* reveal fix: clip the image, not the observed frame, so the scroll observer can see it */
.reveal-img{clip-path:none}
.reveal-img img{clip-path:inset(100% 0 0 0);transition:clip-path 1.3s var(--ease),transform 1.8s var(--ease)}
.reveal-img.in img{clip-path:inset(0 0 0 0)}
@media (prefers-reduced-motion:reduce){.reveal-img img{clip-path:none}}
/* even photo grid (replaces column masonry, which left gaps while images loaded) */
.gallery{columns:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:clamp(10px,1.2vw,18px)}
.gallery figure{margin:0;aspect-ratio:4/5}
.gallery figure img{width:100%;height:100%;object-fit:cover}
.gallery figure.still{grid-column:span 2;aspect-ratio:16/10}
@media(max-width:560px){.gallery{grid-template-columns:1fr 1fr}.gallery figure.still{grid-column:1/-1}}
/* Instagram reel embeds on Motion */
.item.ig .igframe{position:relative;aspect-ratio:9/15;max-height:820px;width:100%;max-width:460px;margin:0 auto;background:var(--paper-2);border-radius:6px;overflow:hidden}
.item.ig iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.item.ig .meta,.item.ig p{max-width:460px;margin-left:auto;margin-right:auto}
/* linked reel card when embedding is blocked */
.item.ig .iglink{display:block;text-decoration:none}
.item.ig .iglink img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.item.ig .iglink:hover img{transform:scale(1.04)}
.item.ig .iglink:hover .play span{transform:scale(1.12);background:rgba(184,116,120,.9);border-color:transparent}
.item.ig .igtag{position:absolute;left:16px;bottom:14px;color:var(--paper);font-size:11px;letter-spacing:.2em;text-transform:uppercase;text-shadow:0 1px 8px rgba(0,0,0,.4)}

/* star cursor: solid sparkle normally, see-through outline that slowly spins over links and buttons */
.cursor{width:18px;height:18px;border-radius:0;background:none;mix-blend-mode:normal;transition:width .35s var(--ease),height .35s var(--ease),opacity .3s}
.cursor::before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C13 8 16 11 24 12C16 13 13 16 12 24C11 16 8 13 0 12C8 11 11 8 12 0Z' fill='%23B87478'/%3E%3C/svg%3E") center/contain no-repeat}
.cursor.big{width:46px;height:46px;opacity:1}
.cursor.big::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0.6C13 8 16 11 23.4 12C16 13 13 16 12 23.4C11 16 8 13 0.6 12C8 11 11 8 12 0.6Z' fill='none' stroke='%23B87478' stroke-width='0.7'/%3E%3C/svg%3E");animation:starspin 6s linear infinite}
@keyframes starspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.cursor.big::before{animation:none}}
/* hover swap: clean crop by default, original post on hover */
.gallery figure{position:relative}
.gallery figure .alt{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:none!important;transition:opacity .6s var(--ease);background:var(--paper)}
.gallery figure:hover .alt,.gallery figure:focus-visible .alt{opacity:1}
.gallery figure .alt-tag{position:absolute;left:12px;bottom:12px;padding:6px 12px;border-radius:999px;background:var(--blush);color:var(--ink);font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:0;transform:translateY(6px);transition:opacity .5s var(--ease),transform .5s var(--ease);pointer-events:none}
.gallery figure:hover .alt-tag,.gallery figure:focus-visible .alt-tag{opacity:1;transform:none}
/* Compact 'coming soon' note for projects without photos yet */
.soon{display:inline-flex;align-items:center;gap:12px;margin:clamp(14px,2vw,22px) 0 0;padding:11px 20px;border:1px dashed var(--blush);border-radius:999px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
.soon-dot{width:7px;height:7px;border-radius:50%;background:var(--rust);flex:none;animation:pulse 2.2s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.soon-dot{animation:none}}
/* =========================================================
   Softer palette: mauve and blush instead of near-black fills
   ========================================================= */
:root{--ink:#45343A;--plum:#8A5F66;--rose-deep:#9C5D64;--paper:#F7EAE1;--paper-2:#EFDBD0;--blush:#E8CBC2}
body{background:var(--paper)}
.filters button[aria-pressed="true"]{background:var(--blush);color:var(--ink);border-color:var(--rust)}
.filters button:hover{background:var(--paper-2)}
.btn::before{background:var(--rose-deep)}
.btn.solid{background:var(--rose-deep);border-color:var(--rose-deep)}
.cta{background:var(--plum)}
.cta .btn.light::before{background:var(--paper)}
.cta .btn.light:hover{color:var(--ink)}
.chips input:checked+span{background:var(--blush);color:var(--ink)}
.skip{background:var(--plum)}

/* Legible CTA band: warm blush with dark text */
.cta{background:var(--paper-2);color:var(--ink)}
.cta .display,.cta h2{color:var(--ink)}
.cta em{color:var(--rose-deep)}
.cta p,.cta .eyebrow{color:#5E4A50}
.cta .eyebrow::before{background:#5E4A50}
.cta .btn.light{color:var(--ink);border-color:var(--ink)}
.cta .btn.light::before{background:var(--rose-deep)}
.cta .btn.light:hover{color:var(--paper);border-color:var(--rose-deep)}
