:root{
  --green:#142a27;
  --green-deep:#0e201d;
  --cream:#f5efe7;
  --cream-2:#ede5d8;
  --card:#fbf8f2;
  --ink:#15221f;
  --muted:#5d6b63;
  --muted-2:#8a9089;
  --muted-g:rgba(248,243,239,.7);
  --paper-text:#f8f3ef;
  --terra:#89432a;
  --terra-2:#9a4f33;
  --gold:#c19a5b;
  --gold-deep:#a06d24;
  --line:rgba(21,34,31,.14);
  --line-g:rgba(248,243,239,.16);
  --shadow:0 30px 70px -30px rgba(14,32,29,.35);
  --shadow-sm:0 18px 44px -22px rgba(14,32,29,.3);
  --serif:'Marcellus',Georgia,serif;
  --sans:'Mulish','Helvetica Neue',Arial,sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
  --reveal-dur:680ms;
  --reveal-distance:18px;
  --pad:clamp(20px,5vw,90px);
  --maxw:1560px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,p,figure,blockquote{margin:0;font-weight:inherit}
::selection{background:var(--green);color:var(--cream)}
:focus-visible{outline:2px solid var(--terra);outline-offset:3px}

html.qa-shift .nav{display:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}
.wrap--narrow{max-width:1120px}
.sec{padding-block:clamp(80px,11vw,170px)}

/* balanced headings, orphan-proof body */
h1,h2,h3,h4,.serif{text-wrap:balance}
p{text-wrap:pretty}

/* ===== FIRST-VISIT LOGO INTRO + LIGHT PAGE TRANSITION ===== */
.curtain{display:none}
html.js .curtain{display:grid;place-items:center;position:fixed;inset:0;z-index:200;background:var(--green-deep);
  opacity:1;transition:opacity .28s var(--ease);pointer-events:none}
.curtain::after{content:"";width:min(48vw,320px);aspect-ratio:875/434;background:url('assets/logo.png') center/contain no-repeat;
  opacity:0;transform:scale(.9)}
html.js.intro-active .curtain::after{animation:logoPulse .48s var(--ease) both}
html.js.ready .curtain{opacity:0}
@keyframes logoPulse{0%{opacity:0;transform:scale(.9)}55%{opacity:1;transform:scale(1.035)}100%{opacity:1;transform:scale(1)}}
main,.nav{transition:opacity .24s var(--ease),transform .32s var(--ease),filter .24s var(--ease)}
html.page-enter main,html.page-enter .nav{transform:translateY(6px);filter:blur(1px)}
html.page-leaving main,html.page-leaving .nav{opacity:.88;transform:translateY(-6px);filter:blur(1px);pointer-events:none}

/* ===== SCROLL PROGRESS ===== */
.progress{position:fixed;top:0;left:0;height:2px;background:var(--terra);z-index:150;width:0}

/* ===== REVEALS (enabled only after the observer is running) ===== */
html.js.motion-ready .r,html.js.motion-ready .reveal{
  opacity:0;transform:translate3d(0,var(--reveal-distance),0);will-change:opacity,transform;
  transition:opacity var(--reveal-dur) var(--ease) var(--reveal-delay,0ms),transform var(--reveal-dur) var(--ease) var(--reveal-delay,0ms)
}
html.js.motion-ready .r.in,html.js.motion-ready .reveal.in{opacity:1;transform:translate3d(0,0,0);will-change:auto}
html.js.motion-ready .r-1{--reveal-delay:50ms}html.js.motion-ready .r-2{--reveal-delay:90ms}html.js.motion-ready .r-3{--reveal-delay:130ms}
html.js.motion-ready .r-4{--reveal-delay:170ms}
.mask{overflow:hidden}
html.js.motion-ready .mask img{
  transform:scale(1.045);will-change:transform;
  transition:transform 1s var(--ease) var(--reveal-delay,0ms)
}
html.js.motion-ready .mask.in img{transform:scale(1);will-change:auto}
/* Structural media and cards stay visible while copy and smaller elements reveal. */
html.js.motion-ready .mask,
html.js.motion-ready .rcard.r,
html.js.motion-ready .package.r,
html.js.motion-ready .pkcard.r,
html.js.motion-ready .deliv__item.r{opacity:1;transform:none;will-change:auto}
.plx{display:block;height:100%;will-change:transform}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
  html.js .curtain{display:none}
}

/* ===== BUTTONS ===== */
.cta{display:inline-flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--paper-text);background:var(--terra);border:1px solid var(--terra);
  padding:17px 38px;border-radius:2px;white-space:nowrap;
  transition:background .45s var(--ease),border-color .45s var(--ease),transform .45s var(--ease),box-shadow .45s var(--ease)}
.cta:hover{background:var(--terra-2);border-color:var(--terra-2);transform:translateY(-2px);box-shadow:0 14px 34px rgba(14,32,29,.22)}
.cta--ghost{background:transparent;color:var(--paper-text);border-color:rgba(248,243,239,.5)}
.cta--ghost:hover{background:var(--paper-text);color:var(--green);border-color:var(--paper-text)}
.cta--ink{background:var(--green);border-color:var(--green)}
.cta--ink:hover{background:var(--green-deep);border-color:var(--green-deep)}

/* ===== TEXT LINK CTA ===== */
.tlink{display:inline-flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--terra);position:relative;padding-bottom:4px}
.tlink::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;
  transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease)}
.tlink:hover::after{transform:scaleX(1)}
.tlink svg{transition:transform .45s var(--ease)}
.tlink:hover svg{transform:translateX(4px)}
.tlink--light{color:var(--paper-text)}

/* ===== NAV ===== */
.nav{position:fixed;inset:0 0 auto 0;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:18px var(--pad);
  transition:background .5s var(--ease),padding .5s var(--ease),border-color .5s,transform .55s var(--ease),opacity .5s var(--ease)}
.nav.hide{transform:translateY(-102%);opacity:0;pointer-events:none}
.nav.solid{background:var(--green);border-bottom:1px solid var(--line-g);padding-block:12px}
.nav__logo img{height:84px;width:auto;filter:drop-shadow(0 2px 12px rgba(8,20,18,.72));transition:height .5s var(--ease),filter .5s var(--ease)}
.nav.solid .nav__logo img{height:68px}
.nav__links{display:flex;align-items:center;gap:32px}
.nav__links a{font-size:13px;font-weight:500;letter-spacing:.06em;color:var(--paper-text);position:relative;padding:4px 0}
.nav__links a::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;background:currentColor;transition:width .45s var(--ease)}
.nav__links a:hover::after,.nav__links a[aria-current]::after{width:100%}
.nav__cta{padding:13px 26px}
html.js .nav{opacity:1;transition:opacity .24s var(--ease),background .5s var(--ease),padding .5s var(--ease),transform .32s var(--ease),filter .24s var(--ease)}
.burger{display:none;flex-direction:column;gap:6px;width:30px;z-index:90;padding:6px 0}
.burger span{height:1.5px;width:100%;background:var(--paper-text);transition:.45s var(--ease)}
body.menu-open .burger span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

.menu{position:fixed;inset:0;z-index:70;background:var(--green);display:flex;flex-direction:column;justify-content:center;gap:34px;
  padding:0 var(--pad);clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease);pointer-events:none}
body.menu-open .menu{clip-path:inset(0 0 0 0);pointer-events:auto}
.menu li{overflow:hidden}
.menu a{color:var(--paper-text)}
.menu ul a{font-family:var(--serif);font-size:clamp(30px,8vw,60px);line-height:1.32;display:inline-block;
  transform:translateY(115%);transition:transform .7s var(--ease),color .4s}
body.menu-open .menu ul a{transform:none}
body.menu-open .menu li:nth-child(1) a{transition-delay:.12s}
body.menu-open .menu li:nth-child(2) a{transition-delay:.18s}
body.menu-open .menu li:nth-child(3) a{transition-delay:.24s}
body.menu-open .menu li:nth-child(4) a{transition-delay:.30s}
body.menu-open .menu li:nth-child(5) a{transition-delay:.36s}
body.menu-open .menu li:nth-child(6) a{transition-delay:.42s}
.menu a:hover{color:#e4c1b6}
.menu__ig{font-size:13px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-g);
  display:inline-flex;align-items:center;gap:9px;opacity:0;transition:opacity .6s var(--ease) .42s}
body.menu-open .menu__ig{opacity:1}

/* ===== HOME HERO ===== */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;background:var(--green)}
.hero__media{position:absolute;inset:0}
.hero__media img{width:100%;height:100%;object-fit:cover;will-change:transform;filter:saturate(.62) brightness(.8) contrast(1.03)}
html.js .hero__media img{animation:heroSettle 3.4s var(--ease) .2s both}
@keyframes heroSettle{from{transform:scale(1.16)}to{transform:scale(1.03)}}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,42,39,.72),rgba(20,42,39,.42) 40%,rgba(14,32,29,.68) 72%,rgba(14,32,29,.93)),
  radial-gradient(120% 90% at 50% 40%,transparent 40%,rgba(14,32,29,.5) 100%)}
.hero::before{content:"";position:absolute;inset:0;z-index:1;background:var(--green);mix-blend-mode:color;opacity:.4}
.hero__inner{position:relative;z-index:3;width:100%;color:var(--paper-text);text-align:center;
  padding-block:clamp(150px,18vh,230px) clamp(90px,12vh,150px);will-change:transform,opacity}
.hero__eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.34em;text-transform:uppercase;color:rgba(248,243,239,.72);margin-bottom:22px}
.hero__title{font-family:var(--serif);font-size:clamp(40px,6.1vw,88px);line-height:1.08;letter-spacing:-.01em;max-width:16ch;margin-inline:auto}
.hero__sub{margin:24px auto 0;max-width:52ch;font-size:clamp(15px,1.2vw,17.5px);line-height:1.85;color:rgba(248,243,239,.82)}
.hero__cta{margin-top:34px;display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
/* headline, subline, and buttons enter together as one block */
html.js .hero__inner .wrap{animation:rise 1s var(--ease) .08s both}
@keyframes rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}

/* ===== FOUNDER (personal mission) ===== */
.founder__grid{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(44px,7vw,120px);align-items:center}
.founder__media{aspect-ratio:4/5;background:var(--cream-2);max-width:520px;box-shadow:var(--shadow)}
.founder__media img{width:100%;height:100%;object-fit:cover;object-position:center 18%}
.founder__lead{font-family:var(--serif);font-size:clamp(28px,3.5vw,52px);line-height:1.22;letter-spacing:-.01em;
  color:var(--muted);max-width:19ch}
.founder__lead .hl{color:var(--ink);font-style:normal}
/* As the statement scrolls through the viewport, each emphasized word warms
   to gold with a soft glow, one after another (words higher on the page turn
   first). Scrubbed by scroll position; words are fully visible ink without it. */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .founder__lead .hl{animation:hlGold linear both;animation-timeline:view();animation-range:entry 80% cover 38%}
  }
}
@keyframes hlGold{
  from{color:var(--ink);text-shadow:0 0 0 rgba(193,154,91,0)}
  to{color:var(--gold-deep);text-shadow:0 0 24px rgba(193,154,91,.45)}
}
.founder__id{margin-top:clamp(28px,4vw,44px)}
.founder__name{font-family:var(--serif);font-size:clamp(22px,1.9vw,28px);line-height:1.2}
.founder__role{margin-top:8px;font-size:12px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.founder__links{margin-top:26px;display:flex;flex-wrap:wrap;gap:16px 40px;align-items:center}

/* ===== SERVICES ===== */
.svc{padding-block:clamp(40px,6vw,90px) clamp(80px,11vw,160px)}
.svc--continuation{padding-top:clamp(80px,11vw,160px)}
.svc--other{padding-top:clamp(80px,11vw,160px);padding-bottom:clamp(42px,6vw,80px)}
.chapter{font-family:var(--serif);font-size:clamp(46px,7.5vw,104px);line-height:1.04;letter-spacing:-.01em;
  margin-bottom:clamp(56px,8vw,120px)}
.chapter__lead{margin:-32px 0 clamp(56px,8vw,120px);max-width:44ch;font-size:clamp(15.5px,1.2vw,17px);line-height:1.85;color:var(--muted)}
.chapter--sub{font-size:clamp(34px,4.6vw,60px);color:var(--muted);margin-top:0;margin-bottom:clamp(56px,8vw,110px)}
.spread{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6.5vw,110px);align-items:center}
.spread + .spread,.spread + .passage,.passage + .spread,.passage + .passage{margin-top:clamp(80px,11vw,150px)}
.spread__media{background:var(--cream-2);box-shadow:var(--shadow)}
.spread__media img{width:100%;height:100%;object-fit:cover}
html.js .spread__media:hover img{transform:scale(1.05)}
.spread:not(.spread--tall) .spread__media{aspect-ratio:4/3}
.spread--flip .spread__media{order:2}
.spread--tall{grid-template-columns:1.12fr .88fr}
.spread--tall .spread__media{aspect-ratio:4/5;max-width:500px;justify-self:end}
.spread--tall:not(.spread--flip) .spread__media{justify-self:start}
.spread__body h3,.passage h3{font-family:var(--serif);font-size:clamp(27px,2.8vw,42px);line-height:1.16}
.spread__body p,.passage p{margin-top:18px;font-size:clamp(15.5px,1.15vw,17px);line-height:1.85;color:var(--muted);max-width:54ch}
.spread__body .tlink,.passage .tlink{margin-top:26px}
.passage{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(28px,5vw,90px);align-items:start}
.passage h3{max-width:12ch}
.passage p{margin-top:0}

/* ===== SERVICE BREAKS ===== */
.service-break{padding-block:clamp(84px,11vw,164px);text-align:center;color:var(--paper-text)}
.service-break--terra{background:var(--terra)}
.service-break--green{background:var(--green)}
.service-break--deep{background:var(--green-deep)}
.service-break__body{max-width:900px}
.service-break h2{font-family:var(--serif);font-size:clamp(42px,6.2vw,84px);line-height:1.04;letter-spacing:-.015em}
.service-break p{max-width:58ch;margin:clamp(22px,2.8vw,34px) auto 0;font-size:clamp(15.5px,1.2vw,17px);line-height:1.85;color:rgba(248,243,239,.84)}
.service-break .tlink{margin-top:28px}
.service-break .cta{margin-top:34px}

/* ===== HOME PORTFOLIO STRIP ===== */
.work{padding-bottom:clamp(60px,8vw,110px)}
.work__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:clamp(40px,5vw,70px)}
.work__head .chapter{margin-bottom:0}
.work__strip{display:grid;gap:clamp(12px,1.4vw,20px);overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.work__row{display:flex;gap:clamp(12px,1.4vw,20px);width:max-content;will-change:transform}
.work__row--forward{transform:translateX(-24%)}
.work__row--reverse{transform:translateX(-3%)}
.work__row a{flex:none;height:clamp(190px,20vw,292px);overflow:hidden;background:var(--cream-2);border-radius:2px;box-shadow:var(--shadow-sm)}
.work__row img{height:100%;width:auto;max-width:none;transition:transform 1.2s var(--ease)}
.work__row a:hover img{transform:scale(1.05)}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .work__row{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% exit 100%}
    .work__row--forward{animation-name:workDriftForward}
    .work__row--reverse{animation-name:workDriftReverse}
  }
}
@keyframes workDriftForward{from{transform:translateX(-29%)}to{transform:translateX(-4%)}}
@keyframes workDriftReverse{from{transform:translateX(0)}to{transform:translateX(-26%)}}
@media (prefers-reduced-motion:reduce){.work__strip{overflow-x:auto;-webkit-mask-image:none;mask-image:none}}

/* ===== INSTAGRAM ===== */
.ig{background:var(--cream-2)}
.ig__profile{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:clamp(18px,2.8vw,40px);align-items:center;padding:clamp(20px,2.8vw,34px);background:var(--green);color:var(--paper-text);border:1px solid rgba(248,243,239,.17)}
.ig__avatar{width:clamp(72px,7.2vw,96px);aspect-ratio:1;display:block;padding:3px;border:2px solid var(--terra);border-radius:50%;background:var(--cream);overflow:hidden}
.ig__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.ig__identity{min-width:0;display:grid;gap:4px}
.ig__name{font-family:var(--serif);font-size:clamp(24px,2.3vw,34px);line-height:1.04;color:var(--paper-text)}
.ig__handle{font-size:14px;line-height:1.2;color:rgba(248,243,239,.68)}
.ig__stats{display:grid;grid-template-columns:repeat(3,auto);gap:clamp(18px,2.6vw,38px);margin:0;text-align:center}
.ig__stats div{display:grid;gap:4px}
.ig__stats dt{font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(248,243,239,.56)}
.ig__stats dd{font-family:var(--serif);font-size:clamp(22px,2.1vw,30px);line-height:1;color:var(--paper-text);font-variant-numeric:tabular-nums}
.ig__follow{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;background:var(--terra);color:var(--paper-text);font-size:13px;font-weight:600;letter-spacing:.04em;transition:background .25s var(--ease),transform .25s var(--ease)}
.ig__follow:hover{background:#b6674f;color:var(--paper-text);transform:translateY(-1px)}
.ig__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:rgba(248,243,239,.16);border:1px solid rgba(248,243,239,.17);border-top:0}
.ig__post{display:block;aspect-ratio:4/5;overflow:hidden;background:var(--green-deep)}
.ig__post img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease),filter .55s var(--ease)}
.ig__post:hover img{transform:scale(1.04);filter:saturate(1.05)}

/* ===== REVIEWS (star cards) ===== */
.say{background:var(--cream-2)}
.say__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2vw,30px)}
.rcard{background:var(--card);border:1px solid var(--line);border-radius:4px;padding:clamp(30px,3vw,44px);
  display:flex;flex-direction:column;box-shadow:var(--shadow-sm);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.rcard:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.stars{display:flex;gap:5px;color:var(--gold);margin-bottom:22px}
.rcard blockquote{font-size:clamp(15px,1.1vw,16.5px);line-height:1.75;color:var(--ink)}
.rcard figcaption{margin-top:26px;font-size:12px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--terra)}

/* ===== TAGLINE MARQUEE ===== */
.tagline{overflow:hidden;padding:clamp(42px,6vw,88px) 0;border-top:1px solid var(--line);background:var(--cream)}
.tagline__track{display:flex;width:max-content;white-space:nowrap;will-change:transform;animation:marq 44s linear infinite}
.tagline:hover .tagline__track{animation-play-state:paused}
.tagline__track span{font-family:var(--serif);font-size:clamp(46px,8vw,116px);line-height:1;padding:0 clamp(24px,3vw,54px);color:var(--ink)}
.tagline__track .o{color:transparent;-webkit-text-stroke:1px rgba(21,34,31,.5)}
@keyframes marq{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.tagline__track{animation:none}}

/* ===== GET IN TOUCH ===== */
.touch{position:relative;overflow:hidden;background:var(--green);color:var(--paper-text);text-align:center}
.touch::before{content:"";position:absolute;inset:0;background:url('assets/ev-banner.jpg') center/cover no-repeat;opacity:.42}
.touch::after{content:"";position:absolute;inset:0;background:radial-gradient(110% 100% at 50% 50%,transparent 24%,rgba(14,32,29,.72) 100%)}
.touch__frame{position:absolute;inset:clamp(16px,2.4vw,30px);border:1px solid rgba(248,243,239,.22);z-index:2;pointer-events:none}
html.js.motion-ready .touch__frame.r{transform:scale(.985)}
html.js.motion-ready .touch__frame.r.in{transform:none}
.touch__inner{position:relative;z-index:3;padding-block:clamp(110px,16vw,210px)}
.touch h2{font-family:var(--serif);font-size:clamp(50px,9vw,124px);line-height:1.06;letter-spacing:-.01em;margin-bottom:28px}
.touch p{max-width:46ch;margin:0 auto;font-size:clamp(15.5px,1.2vw,17.5px);line-height:1.85;color:rgba(248,243,239,.82)}
.touch__hello{margin-top:34px;font-size:12.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--paper-text)}
.touch .cta{margin-top:26px;padding:19px 46px}

/* ===== FOOTER ===== */
.foot{background:var(--green-deep);color:var(--paper-text);text-align:center;padding:clamp(60px,8vw,100px) var(--pad) 38px}
.foot__logo{width:clamp(250px,24vw,350px);height:auto;margin:0 auto 38px}
.foot__nav{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(18px,3vw,40px);margin-bottom:30px}
.foot__nav a{font-size:13px;letter-spacing:.05em;color:rgba(248,243,239,.85);position:relative}
.foot__nav a::after{content:"";position:absolute;left:0;bottom:-3px;height:1px;width:0;background:currentColor;transition:width .4s var(--ease)}
.foot__nav a:hover::after{width:100%}
.foot__social{display:flex;justify-content:center;gap:16px;margin-bottom:40px}
.foot__social a{width:42px;height:42px;border:1px solid var(--line-g);border-radius:50%;display:grid;place-items:center;
  color:rgba(248,243,239,.85);transition:background .4s var(--ease),color .4s,border-color .4s,transform .4s var(--ease)}
.foot__social a:hover{background:var(--paper-text);color:var(--green);border-color:var(--paper-text);transform:translateY(-2px)}
.foot__line{height:1px;background:var(--line-g);max-width:var(--maxw);margin:0 auto 26px}
.foot__legal{font-size:12px;color:rgba(248,243,239,.55)}

/* ===== PAGE HERO (subpages) ===== */
.phero{position:relative;overflow:hidden;background:var(--green);color:var(--paper-text);
  min-height:min(78vh,720px);display:flex;align-items:center}
.phero--tall{min-height:min(92vh,900px)}
.phero__media{position:absolute;inset:0}
.phero__media img{width:100%;height:100%;object-fit:cover;filter:saturate(.62) brightness(.78) contrast(1.03)}
html.js .phero__media img{animation:heroSettle 3.4s var(--ease) .2s both}
.phero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,42,39,.66),rgba(20,42,39,.4) 42%,rgba(14,32,29,.72) 78%,rgba(14,32,29,.94)),
  radial-gradient(120% 90% at 50% 42%,transparent 42%,rgba(14,32,29,.46) 100%)}
.phero::before{content:"";position:absolute;inset:0;z-index:1;background:var(--green);mix-blend-mode:color;opacity:.4}
.phero__frame{position:absolute;inset:clamp(16px,2.4vw,30px);border:1px solid rgba(248,243,239,.24);z-index:2;pointer-events:none}
html.js .phero__frame{opacity:0;transform:scale(.985);transition:opacity 1.6s var(--ease) .6s,transform 1.6s var(--ease) .6s}
html.js.ready .phero__frame{opacity:1;transform:none}
.phero__inner{position:relative;z-index:3;width:100%;padding-block:clamp(150px,18vw,230px) clamp(84px,12vw,150px);text-align:center}
.phero__eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.34em;text-transform:uppercase;color:rgba(248,243,239,.72);margin-bottom:20px}
.phero__title{font-family:var(--serif);font-size:clamp(46px,8vw,120px);line-height:1.02;letter-spacing:-.015em;max-width:14ch;margin-inline:auto}
.phero__sub{margin:24px auto 0;max-width:56ch;font-size:clamp(15px,1.2vw,17.5px);line-height:1.85;color:rgba(248,243,239,.82)}
.phero__cta{margin-top:34px;display:flex;flex-wrap:wrap;justify-content:center;gap:14px}

/* ===== PORTFOLIO GRID ===== */
.pgrid-sec{padding-block:clamp(64px,8vw,120px) clamp(80px,11vw,150px)}
.pgrid{columns:3;column-gap:clamp(14px,1.6vw,22px)}
.pgrid figure{break-inside:avoid;margin:0 0 clamp(14px,1.6vw,22px);position:relative;overflow:hidden;border-radius:3px;
  background:var(--cream-2);box-shadow:var(--shadow-sm);cursor:pointer}
.pgrid button{display:block;width:100%;padding:0;border:0;background:none;cursor:pointer}
.pgrid img{width:100%;height:auto;display:block;transition:transform 1.1s var(--ease)}
.pgrid figure::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(14,32,29,.32));
  opacity:0;transition:opacity .5s var(--ease)}
.pgrid figure:hover img{transform:scale(1.05)}
.pgrid figure:hover{box-shadow:var(--shadow)}
.pgrid figure:hover::after{opacity:1}

/* lightbox */
.lb{position:fixed;inset:0;z-index:210;background:rgba(10,20,18,.94);backdrop-filter:blur(6px);
  display:grid;place-items:center;padding:5vw;opacity:0;pointer-events:none;transition:opacity .5s var(--ease)}
.lb.on{opacity:1;pointer-events:auto}
.lb img{max-width:92vw;max-height:86vh;width:auto;border-radius:3px;box-shadow:0 40px 90px rgba(0,0,0,.5);
  transform:scale(.96);transition:transform .5s var(--ease)}
.lb.on img{transform:scale(1)}
.lb__btn{position:absolute;color:var(--paper-text);width:52px;height:52px;border:1px solid var(--line-g);border-radius:50%;
  display:grid;place-items:center;transition:background .4s var(--ease),color .4s}
.lb__btn:hover{background:var(--paper-text);color:var(--green)}
.lb__close{top:22px;right:26px}
.lb__prev{left:20px;top:50%;transform:translateY(-50%)}
.lb__next{right:20px;top:50%;transform:translateY(-50%)}
.lb__count{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:rgba(248,243,239,.7);
  font-size:12px;letter-spacing:.22em}

/* ===== GALA PAGE ===== */
.gala-intro{padding-block:clamp(72px,9vw,130px)}
.gala-intro__grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(40px,6vw,100px);align-items:center}
.gala-intro__media{aspect-ratio:4/5;background:var(--cream-2);box-shadow:var(--shadow);max-width:520px}
.gala-intro__media img{width:100%;height:100%;object-fit:cover}
.gala-intro h2{font-family:var(--serif);font-size:clamp(30px,3.6vw,52px);line-height:1.18;margin-bottom:26px}
.gala-intro p{font-size:clamp(15.5px,1.15vw,17px);line-height:1.9;color:var(--muted);margin-bottom:18px;max-width:60ch}
.gala-intro .sig{font-family:var(--serif);font-size:clamp(18px,1.5vw,22px);color:var(--ink);margin-top:28px}
.gala-intro .sig span{display:block;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);margin-top:8px}

.gala-band{background:var(--green);color:var(--paper-text);text-align:center;padding-block:clamp(72px,9vw,120px)}
.gala-band h2{font-family:var(--serif);font-size:clamp(30px,4vw,58px);line-height:1.12;max-width:20ch;margin:0 auto}
.gala-band p{margin:22px auto 0;max-width:40ch;color:rgba(248,243,239,.78);font-size:12.5px;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase}

.honorees{padding-block:clamp(72px,9vw,130px)}
.honorees .chapter{text-align:center;margin-bottom:clamp(20px,2.5vw,36px)}
.honorees__note{text-align:center;font-size:12.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted);margin-bottom:clamp(48px,6vw,74px)}
.honorees__list{columns:3;column-gap:clamp(28px,4vw,64px);max-width:1080px;margin:0 auto}
.honorees__list li{break-inside:avoid;font-family:var(--serif);font-size:clamp(16px,1.35vw,20px);line-height:1.9;
  color:var(--ink);padding:5px 0;border-bottom:1px solid var(--line)}

.hosts{background:var(--cream-2);padding-block:clamp(72px,9vw,130px)}
.hosts .chapter{text-align:center}
.hosts__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,2.4vw,34px)}
.hostcard{text-align:center}
.hostcard h3{font-family:var(--serif);font-size:clamp(18px,1.5vw,22px);margin-bottom:8px}
.hostcard p{font-size:12.5px;letter-spacing:.04em;color:var(--muted);line-height:1.7}
.hostcard .dot{width:8px;height:8px;border-radius:50%;background:var(--terra);margin:0 auto 18px}

.partners{padding-block:clamp(72px,9vw,120px);text-align:center}
.partners h2{font-family:var(--serif);font-size:clamp(34px,5vw,72px);line-height:1;margin-bottom:12px}
.partners__tag{font-size:12.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--terra);margin-bottom:clamp(40px,5vw,64px)}
.partners__list{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 12px;max-width:960px;margin:0 auto}
.partners__list li{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--line);border-radius:40px;padding:11px 22px}

/* ===== SOCIAL MEDIA PACKAGES ===== */
.packages{padding-block:clamp(84px,11vw,160px)}
.packages__intro{display:grid;grid-template-columns:.84fr 1.16fr;gap:clamp(30px,5vw,88px);align-items:end;margin-bottom:clamp(58px,8vw,110px)}
.packages__intro h2{font-family:var(--serif);font-size:clamp(34px,4.8vw,68px);line-height:1.08;max-width:13ch}
.packages__intro p{font-size:clamp(17px,1.35vw,21px);line-height:1.7;color:var(--muted);max-width:40ch}
.package-list{border-top:1px solid var(--line)}
.package{display:grid;grid-template-columns:minmax(190px,.74fr) minmax(0,1.26fr);gap:clamp(30px,5vw,82px);padding-block:clamp(42px,6vw,82px);border-bottom:1px solid var(--line)}
.package__name{font-family:var(--serif);font-size:clamp(31px,3.8vw,54px);line-height:1.08}
.package__price{margin-top:12px;color:var(--terra);font-family:var(--serif);font-size:clamp(25px,2.6vw,36px);line-height:1}
.package__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,.82fr);gap:30px 48px;align-items:start}
.package__body p{font-size:15.5px;line-height:1.8;color:var(--muted)}
.package__body ul{display:grid;gap:9px}
.package__body li{position:relative;padding-left:21px;font-size:14.5px;line-height:1.55;color:var(--ink)}
.package__body li::before{content:"";position:absolute;left:0;top:.68em;width:7px;height:7px;border-radius:50%;background:var(--terra)}
.package--deep{background:var(--green);color:var(--paper-text);margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);border-bottom:0}
.package--deep .package__price{color:var(--gold)}
.package--deep .package__body p{color:rgba(248,243,239,.8)}
.package--deep .package__body li{color:rgba(248,243,239,.92)}
.package--deep .package__body li::before{background:var(--gold)}
.package--deep .tlink{color:var(--paper-text);grid-column:1/-1}
.package__cta{grid-column:1/-1;justify-self:start;margin-top:4px}
.package--deep .package__cta{background:var(--paper-text);border-color:var(--paper-text);color:var(--green)}
.package--deep .package__cta:hover{background:var(--cream-2);border-color:var(--cream-2)}
.package-cta{padding-block:clamp(72px,9vw,128px);text-align:center}
.package-cta h2{font-family:var(--serif);font-size:clamp(38px,5.7vw,78px);line-height:1.06}
.package-cta .cta{margin-top:28px}

/* ===== CONSULTATION ===== */
.consultation{padding-block:clamp(90px,13vw,190px);background:var(--cream-2)}
.consultation__grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(42px,7vw,120px);align-items:center}
.consultation__media{aspect-ratio:4/5;background:var(--green-deep);box-shadow:var(--shadow)}
.consultation__media img{width:100%;height:100%;object-fit:cover}
.consultation__body h1,.consultation__body h2{font-family:var(--serif);font-size:clamp(45px,6vw,88px);line-height:1.03;max-width:10ch}
.consultation__body p{margin-top:24px;max-width:44ch;color:var(--muted);font-size:clamp(16px,1.3vw,19px);line-height:1.82}
.consultation__body .cta{margin-top:34px}
.page-light-nav .nav{background:var(--green);border-bottom:1px solid var(--line-g)}

/* ===== CONTACT ===== */
.contact-simple{padding:clamp(150px,16vw,210px) 0 clamp(84px,10vw,148px);background:var(--cream-2)}
.contact-simple__inner{max-width:980px;text-align:center}
.contact-simple h1{max-width:11ch;margin-inline:auto;font-family:var(--serif);font-size:clamp(48px,7vw,96px);line-height:1.02;letter-spacing:-.015em}
.contact-simple .contact-form{margin-top:clamp(38px,5vw,64px);text-align:left}
.contact-form__foot{display:flex;justify-content:center;padding-top:8px}

/* ===== WEDDING PAGE ===== */
.pk{padding-block:clamp(72px,9vw,130px)}
.pk__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2vw,28px);align-items:stretch}
.pkcard{--package-image:none;position:relative;isolation:isolate;overflow:hidden;min-height:650px;padding:clamp(30px,3vw,44px);display:flex;flex-direction:column;border:1px solid rgba(248,243,239,.18);border-radius:3px;background:var(--green-deep);color:var(--paper-text);box-shadow:none;transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.pkcard::before,.pkcard::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0}
.pkcard::before{background:var(--package-image) center/cover no-repeat;opacity:.46;filter:saturate(.58) brightness(.64) contrast(1.04)}
.pkcard::after{background:linear-gradient(180deg,rgba(14,32,29,.62),rgba(14,32,29,.73) 42%,rgba(14,32,29,.96))}
.pkcard--sweet{--package-image:url('assets/wed-1.jpg')}
.pkcard--forever{--package-image:url('assets/wed-2.jpg')}
.pkcard--everlasting{--package-image:url('assets/wed-5.jpg')}
.pkcard>*{position:relative;z-index:1}
.pkcard:hover{transform:translateY(-3px);box-shadow:0 24px 52px rgba(14,32,29,.18)}
.pkcard__tag{font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;text-shadow:0 2px 14px rgba(0,0,0,.42)}
.pkcard h3{font-family:var(--serif);font-size:clamp(24px,2.2vw,32px);line-height:1.1;text-shadow:0 2px 18px rgba(0,0,0,.48)}
.pkcard__price{font-family:var(--serif);font-size:clamp(28px,2.6vw,38px);margin-top:10px;color:var(--paper-text);text-shadow:0 2px 16px rgba(0,0,0,.45)}
.pkcard__lede{margin-top:14px;font-size:14.5px;line-height:1.7;color:rgba(248,243,239,.88);text-shadow:0 2px 14px rgba(0,0,0,.45)}
.pkcard__inc{margin:24px 0 0;font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(248,243,239,.72);text-shadow:0 2px 14px rgba(0,0,0,.42)}
.pkcard ul{margin-top:16px;display:flex;flex-direction:column;gap:12px}
.pkcard li{position:relative;padding-left:24px;font-size:14.5px;line-height:1.6;color:rgba(248,243,239,.94);text-shadow:0 2px 12px rgba(0,0,0,.42)}
.pkcard li::before{content:"";position:absolute;left:0;top:9px;width:9px;height:9px;border-radius:50%;
  border:1.5px solid rgba(248,243,239,.82)}
.pkcard__good{margin-top:20px;margin-bottom:clamp(26px,2.4vw,38px);font-size:13.5px;font-style:normal;color:rgba(248,243,239,.76);line-height:1.6;text-shadow:0 2px 12px rgba(0,0,0,.42)}
.pkcard .cta{margin-top:auto;background:var(--paper-text);border-color:var(--paper-text);color:var(--green)}
.pkcard .cta:hover{background:var(--cream-2);border-color:var(--cream-2);color:var(--green)}
.pkcard>*:last-child{margin-top:28px}

.deliv{background:var(--cream-2);padding-block:clamp(78px,10vw,148px)}
.deliv__head{display:grid;grid-template-columns:minmax(0,.9fr) minmax(260px,.55fr);gap:clamp(30px,6vw,100px);align-items:end;margin-bottom:clamp(42px,6vw,82px)}
.deliv__head .chapter{margin:0}
.deliv__head>p{max-width:28ch;color:var(--muted);font-size:clamp(15px,1.2vw,18px);line-height:1.7}
.deliv__layout{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(18px,2.2vw,34px)}
.deliv__feature{grid-column:span 7;grid-row:span 2;display:grid;grid-template-columns:minmax(190px,.82fr) minmax(0,1.18fr);align-items:stretch;background:var(--card)}
.deliv__item{grid-column:span 5;display:grid;grid-template-columns:clamp(110px,12vw,170px) minmax(0,1fr);gap:clamp(22px,2.4vw,36px);align-items:center;padding:0 0 clamp(22px,2.8vw,34px);border-bottom:1px solid var(--line)}
.deliv__item + .deliv__item{padding-top:clamp(22px,2.8vw,34px)}
.deliv__media{overflow:hidden;background:var(--green)}
.deliv__media img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.deliv__feature .deliv__media{min-height:100%;aspect-ratio:auto}
.deliv__item .deliv__media{height:100%;min-height:168px;aspect-ratio:4/5}
.deliv__feature:hover .deliv__media img,.deliv__item:hover .deliv__media img{transform:scale(1.035)}
.deliv__copy{padding:clamp(28px,4vw,58px);align-self:center}
.deliv__item .deliv__copy{padding:0}
.deliv__copy h3{font-family:var(--serif);font-size:clamp(24px,2.2vw,34px);line-height:1.12}
.deliv__item .deliv__copy h3{font-size:clamp(21px,1.8vw,27px)}
.deliv__copy p{margin-top:18px;font-size:clamp(14.5px,1.1vw,16px);line-height:1.82;color:var(--muted)}

.addons{padding-block:clamp(78px,10vw,148px)}
.addons__head{display:grid;grid-template-columns:minmax(0,.9fr) minmax(260px,.55fr);gap:clamp(30px,6vw,100px);align-items:end;margin-bottom:clamp(42px,6vw,82px)}
.addons__head h2{font-family:var(--serif);font-size:clamp(40px,5vw,72px);line-height:1.06;max-width:10ch}
.addons__head p{font-size:clamp(15px,1.2vw,18px);line-height:1.75;color:var(--muted);max-width:31ch}
.addons__layout{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(36px,6vw,104px);align-items:start}
.addons__media{aspect-ratio:4/5;overflow:hidden;background:var(--green);position:sticky;top:112px}
.addons__media img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .8s var(--ease)}
.addons__media:hover img{transform:scale(1.035)}
.addons__groups{border-top:1px solid var(--line)}
.addons__group{display:grid;grid-template-columns:minmax(150px,.42fr) minmax(0,1fr);gap:clamp(28px,4vw,68px);padding:clamp(28px,3.8vw,50px) 0;border-bottom:1px solid var(--line)}
.addons__group h3{font-family:var(--serif);font-size:clamp(23px,2.1vw,32px);line-height:1.15}
.addons__group ul{display:grid;gap:13px}
.addons__group li{position:relative;padding-left:18px;font-size:clamp(14.5px,1.1vw,16px);line-height:1.65;color:var(--ink)}
.addons__group li::before{content:"";position:absolute;left:0;top:.72em;width:7px;height:1px;background:var(--terra)}

.wgal{padding-bottom:clamp(72px,9vw,120px);overflow:hidden}
.wgal__head{text-align:center;margin-bottom:clamp(40px,5vw,64px)}
.wgal__head h2{font-family:var(--serif);font-size:clamp(30px,4vw,54px);line-height:1.08}
.wgal__strip{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.wgal__row{display:flex;gap:clamp(12px,1.4vw,20px);width:max-content;animation:wgalStrip 72s linear infinite}
.wgal__strip:hover .wgal__row{animation-play-state:paused}
.wgal__row div{flex:none;height:clamp(300px,38vw,480px);overflow:hidden;border-radius:3px;background:var(--cream-2);box-shadow:var(--shadow-sm)}
.wgal__row img{height:100%;width:auto;max-width:none;transition:transform 1.2s var(--ease)}
.wgal__row div:hover img{transform:scale(1.05)}
@keyframes wgalStrip{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.wgal__row{animation:none}.wgal__strip{overflow-x:auto}}

/* ===== RESPONSIVE ===== */
@media (max-width:1024px){
  .packages__intro,.package,.package__body,.consultation__grid{grid-template-columns:1fr}
  .packages__intro{gap:18px}
  .package__body{gap:24px}
  .hosts__grid{grid-template-columns:repeat(2,1fr);gap:clamp(28px,4vw,44px)}
  .honorees__list{columns:2}
  .pgrid{columns:2}
}
@media (max-width:880px){
  .nav__links{display:none}
}
@media (max-width:760px){
  .nav__cta{display:none}
  .burger{display:flex}
  .nav__logo img{height:64px}
  .nav.solid .nav__logo img{height:56px}

  /* mobile: center headlines + hero, keep body readable */
  .hero__inner{padding-block:clamp(132px,28vw,166px) clamp(68px,16vw,104px)}
  .hero__eyebrow{margin-inline:auto}
  .hero__title{font-size:clamp(34px,9vw,46px);max-width:none;margin-inline:auto}
  .hero__sub{font-size:15px;margin-inline:auto}
  /* keep both actions on one row on phones */
  .hero__cta{justify-content:center;flex-wrap:nowrap;gap:10px}
  .hero__cta .cta{padding:14px 16px;font-size:11px;letter-spacing:.1em}

  .founder__grid{grid-template-columns:1fr;text-align:center}
  .founder__media{order:-1;max-width:400px;margin-inline:auto}
  .founder__lead{max-width:none;margin-inline:auto;font-size:clamp(23px,6.6vw,30px)}
  .founder__links{justify-content:center;gap:14px 30px}

  .chapter{text-align:center;font-size:clamp(40px,13vw,60px)}
  .chapter__lead{margin-inline:auto;text-align:center}
  .chapter--sub{text-align:center}
  .spread,.spread--tall,.spread--flip{grid-template-columns:1fr;text-align:center}
  .spread--flip .spread__media{order:0}
  .spread--tall .spread__media,.spread--tall:not(.spread--flip) .spread__media{max-width:none;aspect-ratio:4/5;justify-self:stretch}
  .spread__body p,.passage p{margin-inline:auto;max-width:60ch}
  .spread__body .tlink,.passage .tlink{margin-inline:auto}
  .passage{grid-template-columns:1fr;gap:14px;text-align:center}
  .passage h3{max-width:none;margin-inline:auto}

  .service-break{padding-block:clamp(72px,18vw,104px)}
  .service-break p{margin-inline:auto}

  .work__head{flex-direction:column;align-items:center;text-align:center;gap:14px}

  .ig__profile{grid-template-columns:auto minmax(0,1fr);gap:18px}
  .ig__stats{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:12px;padding-top:6px}
  .ig__follow{grid-column:1/-1;grid-row:3;width:100%}
  .ig__grid{grid-template-columns:repeat(2,minmax(0,1fr))}

  .say__grid{grid-template-columns:1fr}
  .stars{justify-content:center}
  .rcard{text-align:center;align-items:center}

  .phero__inner{padding-block:clamp(132px,28vw,166px) clamp(68px,16vw,104px)}
  .phero__eyebrow{margin-inline:auto}
  .phero__title{font-size:clamp(42px,13vw,66px)}
  .phero__sub{margin-inline:auto}
  .phero__cta{justify-content:center}

  .gala-intro__grid{grid-template-columns:1fr;text-align:center}
  .gala-intro__media{order:-1;margin-inline:auto}
  .gala-intro p{margin-inline:auto}
  .gala-intro .sig{text-align:center}
  .honorees__list{columns:1;text-align:center;max-width:360px}
  .honorees__list li{border-bottom:none;padding:3px 0}
  .hosts__grid{grid-template-columns:1fr 1fr;gap:26px 18px}

  .pk__grid{grid-template-columns:1fr;max-width:440px;margin-inline:auto}
  .pkcard{text-align:center}
  .pkcard ul{align-items:flex-start;text-align:left;max-width:280px;margin-inline:auto}
  .deliv__head,.addons__head{grid-template-columns:1fr;text-align:center}
  .deliv__head>p,.addons__head p{margin-inline:auto}
  .deliv__layout{grid-template-columns:1fr;gap:28px}
  .deliv__feature,.deliv__item{grid-column:auto;grid-row:auto}
  .deliv__feature{grid-template-columns:1fr}
  .deliv__feature .deliv__media{aspect-ratio:4/5;min-height:0}
  .deliv__item{grid-template-columns:108px minmax(0,1fr);padding-top:0}
  .deliv__item + .deliv__item{padding-top:28px}
  .deliv__item .deliv__media{min-height:142px}
  .addons__layout{grid-template-columns:1fr}
  .addons__media{position:static;aspect-ratio:4/3;max-height:460px}
  .addons__group{grid-template-columns:1fr;gap:16px;text-align:center}
  .addons__group ul{max-width:460px;margin-inline:auto;text-align:left}
}
@media (max-width:460px){
  .hosts__grid{grid-template-columns:1fr;max-width:260px;margin-inline:auto}
  .pgrid{columns:1}
  .partners__list li{font-size:12px;padding:9px 16px}
}

/* ===== 2026 CROSS-PAGE SYSTEM PASS ===== */
.icon{display:inline-block;width:1em;height:1em;flex:none;background:currentColor}
.icon--instagram{-webkit-mask:url('assets/instagram.svg') center/contain no-repeat;mask:url('assets/instagram.svg') center/contain no-repeat}

.nav{min-height:80px;padding:8px var(--pad);background:rgba(14,32,29,.82);border-bottom:1px solid rgba(248,243,239,.12);backdrop-filter:blur(14px)}
.nav.solid{padding-block:8px;background:rgba(14,32,29,.96)}
.nav__logo img,.nav.solid .nav__logo img{height:62px;filter:drop-shadow(0 2px 16px rgba(0,0,0,.68))}
.nav__cta{padding:11px 22px}

.tlink{gap:12px;padding-bottom:0}
.tlink::after{content:"\2192";position:static;width:auto;height:auto;background:none;transform:none;font-size:18px;line-height:1;transition:transform .35s var(--ease)}
.tlink:hover::after{transform:translateX(4px)}
.tlink svg{display:none}
.phero__frame,.touch__frame{display:none}

.founder.sec{padding-bottom:clamp(50px,6vw,88px)}
.services-editorial{padding-top:clamp(48px,5.5vw,80px);padding-bottom:clamp(64px,7vw,104px);background:var(--cream-2)}
.services-editorial .chapter{font-size:clamp(48px,6.4vw,88px);margin-bottom:clamp(50px,6vw,82px);text-align:center}
.services-editorial .spread{grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:clamp(44px,6vw,96px);min-height:0;align-items:center}
.services-editorial .spread + .spread{margin-top:clamp(84px,9vw,130px)}
.services-editorial .spread__media{height:auto;aspect-ratio:4/3;overflow:hidden}
.services-editorial .spread--social .spread__media{aspect-ratio:4/5;max-height:610px;max-width:500px;justify-self:end}
.services-editorial .spread__body{position:relative;z-index:1}
.service-break--green{position:relative;text-align:left;background:var(--green-deep);overflow:hidden}
.service-break--green::after{content:"";position:absolute;inset:0 0 0 auto;width:44%;background:url('assets/ev-banner.jpg') center/cover no-repeat;opacity:.18;mix-blend-mode:luminosity}
.service-break--green .service-break__body{position:relative;z-index:1;margin:0;max-width:760px}
.service-break--green p{margin-left:0;margin-right:0}

.other-services{padding-top:clamp(64px,7vw,104px);padding-bottom:clamp(80px,9vw,130px);background:var(--cream-2)}
.other-services .chapter{text-align:center}
.other-services .spread{grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:clamp(44px,6vw,96px);align-items:center}
.other-services .spread + .spread{margin-top:clamp(84px,9vw,130px)}
.other-services .spread__media{aspect-ratio:4/3;overflow:hidden}
.other-services .spread__body{position:relative;z-index:1}

.say__grid{grid-template-columns:1.15fr .85fr;gap:1px;background:var(--line)}
.rcard{border:0;border-radius:0;box-shadow:none;padding:clamp(34px,4vw,58px)}
.rcard:hover{transform:none;box-shadow:none}
.rcard:first-child{grid-row:1/3;background:var(--green);color:var(--paper-text);justify-content:center}
.rcard:first-child blockquote{font-family:var(--serif);font-size:clamp(21px,2vw,30px);line-height:1.55;color:var(--paper-text)}
.rcard:first-child figcaption{color:var(--gold)}
.rcard:not(:first-child){background:var(--card)}

.touch__inner{padding-block:clamp(96px,12vw,160px)}
.touch h2{font-size:clamp(48px,7vw,92px);margin-bottom:24px}
.touch__kicker{margin-bottom:22px;font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}

.packages{padding-top:clamp(72px,9vw,128px)}
.packages__intro{grid-template-columns:.72fr 1.28fr;align-items:center;margin-bottom:0;background:var(--cream-2)}
.packages__portrait{aspect-ratio:4/5;min-height:520px}
.packages__portrait img{width:100%;height:100%;object-fit:cover;object-position:center 18%}
.packages__intro-copy{padding:clamp(44px,7vw,100px)}
.packages__intro-copy h2{font-family:var(--serif);font-size:clamp(42px,5vw,72px);line-height:1.08;max-width:12ch}
.packages__intro-copy p{margin-top:28px;font-size:clamp(16px,1.3vw,20px);line-height:1.75;color:var(--muted);max-width:38ch}
.package-list{margin-top:clamp(70px,9vw,120px)}
.package{padding-inline:clamp(24px,4vw,58px);width:100%;background:var(--card)}
.package--deep{width:100%;margin-inline:0;padding-inline:clamp(32px,5vw,72px);border:0;background:var(--green);color:var(--paper-text)}
.package--deep .package__name{color:var(--paper-text)}
.package--deep .package__body p{color:rgba(248,243,239,.78)}
.package--deep .package__body li{color:rgba(248,243,239,.92)}
.package:last-child{margin-left:0}
.package__body li::before{width:12px;height:1px;border-radius:0;top:.78em}
.package-cta{margin-top:clamp(72px,9vw,120px);padding:clamp(44px,5vw,70px);background:var(--cream-2);display:flex;justify-content:space-between;align-items:center;gap:36px;text-align:left}
.package-cta h2{font-size:clamp(34px,4.5vw,60px)}
.package-cta p{margin-top:12px;color:var(--muted);max-width:50ch}
.package-cta .cta{margin-top:0;flex:none}

.pk__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,44px)}
.pkcard{min-height:610px;border:1px solid rgba(248,243,239,.18);border-radius:3px;background:var(--green-deep);box-shadow:none;padding:clamp(34px,4vw,54px)}
.pkcard:hover{transform:translateY(-3px);box-shadow:0 24px 52px rgba(14,32,29,.18)}
.pkcard--feature{grid-column:1/-1;order:-1;min-height:620px;padding:clamp(44px,6vw,82px);border:1px solid rgba(248,243,239,.18);background:var(--green-deep);justify-content:center}
.pkcard--feature>*{max-width:520px}
.pkcard li::before{width:12px;height:1px;border:0;border-radius:0;background:rgba(248,243,239,.82);top:.78em}
.pkcard--feature li::before{background:var(--gold)}
.wgal{padding-block:clamp(76px,9vw,130px);background:var(--green-deep)}
.wgal__head{color:var(--paper-text);text-align:left}
.wgal__grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:260px;gap:clamp(10px,1.4vw,18px)}
.wgal__grid div{overflow:hidden;background:var(--green)}
.wgal__grid img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.wgal__grid div:hover img{transform:scale(1.035)}
.wgal__grid div:nth-child(1){grid-column:span 4;grid-row:span 2}
.wgal__grid div:nth-child(2){grid-column:span 5}
.wgal__grid div:nth-child(3){grid-column:span 3}
.wgal__grid div:nth-child(4){grid-column:span 3}
.wgal__grid div:nth-child(5){grid-column:span 5}

.gala-moment{background:var(--green);color:var(--paper-text);padding-block:clamp(80px,10vw,140px)}
.gala-moment__grid{display:grid;grid-template-columns:.72fr 1.28fr;gap:clamp(40px,7vw,120px);align-items:center}
.gala-moment__copy h2{font-family:var(--serif);font-size:clamp(38px,4.8vw,70px);line-height:1.12}
.gala-moment__copy p{margin-top:28px;color:var(--gold);font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase}
.gala-moment__images{display:grid;grid-template-columns:1fr .9fr;grid-template-rows:repeat(2,minmax(200px,320px));gap:14px}
.gala-moment__images figure{overflow:hidden}
.gala-moment__images figure:first-child{grid-row:1/3}
.gala-moment__images img{width:100%;height:100%;object-fit:cover}
.honorees__note{font-family:var(--serif);font-size:17px;font-weight:400;letter-spacing:0;text-transform:none}
.hosts{background:var(--green-deep);color:var(--paper-text)}
.hosts .chapter{text-align:left;color:var(--paper-text)}
.hosts__grid{grid-template-columns:repeat(2,1fr);gap:0 clamp(40px,7vw,110px)}
.hostcard{text-align:left;padding:26px 0;border-top:1px solid var(--line-g)}
.hostcard h3{font-size:clamp(20px,1.8vw,27px)}
.hostcard p{color:rgba(248,243,239,.62)}
.partners{text-align:left}
.partners h2,.partners__tag{text-align:center}
.partners__list{display:grid;grid-template-columns:repeat(4,1fr);gap:0 clamp(22px,3vw,46px);max-width:none}
.partners__list li{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 0;font-size:12px;text-align:left}

.consultation{padding-top:clamp(150px,15vw,210px);padding-bottom:clamp(80px,10vw,140px)}
.consultation__grid{grid-template-columns:.92fr 1.08fr}
.consultation__body{text-align:center}
.consultation__body h1,.consultation__body p{margin-inline:auto}
.consultation__kicker{display:block;width:100%;margin:0 auto 20px!important;text-align:center;font-size:12px!important;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--terra)!important}
.consult-prep{padding-block:clamp(86px,11vw,160px)}
.consult-prep__grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(50px,8vw,130px)}
.consult-prep__lead h2{font-family:var(--serif);font-size:clamp(36px,4.8vw,66px);line-height:1.1;max-width:13ch}
.consult-prep__lead p{margin-top:24px;max-width:38ch;color:var(--muted)}
.consult-prep__list{border-top:1px solid var(--line)}
.consult-prep__list article{display:grid;grid-template-columns:.45fr 1fr;gap:28px;padding:30px 0;border-bottom:1px solid var(--line)}
.consult-prep__list h3{font-family:var(--serif);font-size:clamp(22px,2vw,29px)}
.consult-prep__list p{color:var(--muted);font-size:15.5px}
.consult-next{background:var(--terra);color:var(--paper-text);padding-block:clamp(58px,7vw,94px)}
.consult-next__inner{display:flex;align-items:center;justify-content:space-between;gap:40px}
.consult-next h2{font-family:var(--serif);font-size:clamp(32px,4vw,54px);line-height:1.1}
.consult-next p{margin-top:12px;color:rgba(248,243,239,.78)}
.consult-next .cta{background:var(--paper-text);border-color:var(--paper-text);color:var(--green)}

/* ===== CONSULTATION INQUIRY FORM ===== */
.consult-form-sec{padding-block:clamp(84px,11vw,150px);background:var(--card)}
.consult-form-sec__grid{display:grid;grid-template-columns:.68fr 1.32fr;gap:clamp(48px,8vw,136px);align-items:start}
.consult-form-sec__intro{position:sticky;top:120px}
.consult-form-sec__intro h2{font-family:var(--serif);font-size:clamp(38px,4.8vw,66px);line-height:1.08;max-width:10ch}
.consult-form-sec__intro p{max-width:34ch;margin-top:22px;color:var(--muted);font-size:16px;line-height:1.7}
.consult-form{display:grid;gap:22px;padding:clamp(28px,4vw,54px);background:var(--cream);border:1px solid var(--line)}
.consult-form__pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.consult-form label{display:grid;gap:8px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.consult-form input,.consult-form select,.consult-form textarea{width:100%;min-height:50px;padding:13px 14px;border:1px solid rgba(21,34,31,.26);border-radius:0;background:var(--card);color:var(--ink);font:400 16px/1.5 var(--sans);letter-spacing:0;text-transform:none;outline:none;transition:border-color .25s var(--ease),box-shadow .25s var(--ease)}
.consult-form textarea{resize:vertical;min-height:132px}
.consult-form input:focus,.consult-form select:focus,.consult-form textarea:focus{border-color:var(--terra);box-shadow:0 0 0 3px rgba(137,67,42,.14)}
.consult-form__foot{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:8px}
.consult-form__foot .cta{flex:none}
.consult-form__foot p{max-width:31ch;color:var(--muted);font-size:13px;line-height:1.55}
.progress{display:none}

/* ===== REFINED INTERACTION AND COMPOSITION PASS ===== */
/* Navigation is immediate. Motion belongs to the content as it enters the page. */
html.js .curtain{display:none}
html.page-enter main,html.page-enter .nav,html.page-leaving main,html.page-leaving .nav{opacity:1;transform:none;filter:none;pointer-events:auto}
html.js .phero__media img{animation:none}

/* Instagram profile header: paper surface, story ring, and centered brand mark. */
.ig__profile{background:var(--card);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow-sm)}
.ig__avatar{width:clamp(78px,7.8vw,108px);padding:0;border:0;background:transparent;overflow:visible}
.ig__story-ring{position:relative;display:grid;place-items:center;width:100%;height:100%;padding:4px;border-radius:50%;background:conic-gradient(from 210deg,var(--terra),#d98b68,var(--gold),var(--terra))}
.ig__story-ring::before{content:"";position:absolute;inset:-4px;border:1px solid rgba(137,67,42,.42);border-radius:inherit}
.ig__story-ring::after{content:"";position:absolute;inset:7px;border:1px solid rgba(248,243,239,.55);border-radius:inherit;pointer-events:none}
.ig__story-ring img{position:relative;width:100%;height:100%;border:3px solid var(--card);border-radius:50%;object-fit:cover}
.ig__name{color:var(--ink)}
.ig__handle{color:var(--muted)}
.ig__stats dt{color:var(--muted-2)}
.ig__stats dd{color:var(--ink)}
.ig__follow{background:var(--green);color:var(--paper-text)}
.ig__follow:hover{background:var(--green-deep);color:var(--paper-text)}
.ig__grid{background:var(--line);border-color:var(--line)}
@media (prefers-reduced-motion:no-preference){.ig__story-ring::before{animation:storyPulse 2.4s var(--ease) infinite}}
@keyframes storyPulse{0%,100%{transform:scale(1);opacity:.4}50%{transform:scale(1.055);opacity:1}}

/* Wedding packages need one shared action line, regardless of copy length. */
.pkcard{align-self:stretch}
.pkcard .cta{margin-top:auto!important}

/* Deliverables read as a three-part handoff, not a loose collage. */
.deliv{padding-block:clamp(76px,9vw,132px)}
.deliv__head{display:block;max-width:720px;margin:0 auto clamp(46px,6vw,84px);text-align:center}
.deliv__head .chapter{font-size:clamp(44px,6vw,82px);line-height:1.04}
.deliv__head>p{max-width:38ch;margin:22px auto 0;font-size:clamp(15px,1.2vw,18px)}
.deliv__stack{border-top:1px solid var(--line)}
.deliv__feature,.deliv__item{display:grid;grid-column:auto;grid-row:auto;grid-template-columns:minmax(52px,.16fr) minmax(220px,.72fr) minmax(280px,1.12fr);grid-template-areas:"count media copy";gap:clamp(24px,4vw,72px);align-items:center;min-height:clamp(360px,34vw,480px);padding:clamp(28px,4vw,58px) 0;border:0;border-bottom:1px solid var(--line);background:transparent}
.deliv__item:nth-child(even){grid-template-areas:"count copy media"}
.deliv__item + .deliv__item{padding-top:clamp(28px,4vw,58px)}
.deliv__count{grid-area:count;align-self:start;padding-top:8px;font-family:var(--serif);font-size:clamp(28px,3vw,46px);line-height:1;color:var(--terra)}
.deliv__media,.deliv__feature .deliv__media,.deliv__item .deliv__media{grid-area:media;width:100%;height:100%;min-height:0;aspect-ratio:4/5;overflow:hidden}
.deliv__copy,.deliv__item .deliv__copy{grid-area:copy;padding:0;align-self:center}
.deliv__copy h3,.deliv__item .deliv__copy h3{font-size:clamp(27px,2.7vw,42px)}
.deliv__copy p{max-width:42ch;font-size:clamp(15px,1.15vw,17px)}

/* The Gala: an invitation hero that lives inside the normal site chrome
   (fixed nav above, standard footer below, page scrolls normally). */
body.gala-landing{background:var(--green-deep)}
body.gala-landing .nav{z-index:100;background:rgba(14,32,29,.96);border-bottom:1px solid rgba(248,243,239,.16)}
body.gala-landing .nav.hide{transform:none;opacity:1;pointer-events:auto}
.gala-landing__main,.gala-landing__hero{height:100svh;min-height:600px}
.gala-landing__hero{position:relative;display:grid;place-items:center;overflow:hidden;background:var(--green-deep);isolation:isolate}
.gala-landing__media,.gala-landing__shade{position:absolute;inset:0}
.gala-landing__media img{width:100%;height:100%;object-fit:cover;object-position:center 40%;filter:saturate(.45) brightness(.5) contrast(1.1)}
.gala-landing__shade{z-index:1;background:linear-gradient(90deg,rgba(14,32,29,.94),rgba(14,32,29,.5) 48%,rgba(14,32,29,.94)),radial-gradient(72% 66% at 50% 42%,transparent 0%,rgba(14,32,29,.55) 100%)}
.gala-landing__content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:min(820px,calc(100% - 40px));text-align:center;color:var(--paper-text)}
.gala-landing__overline{font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.gala-landing h1{margin-top:20px;font-family:var(--serif);font-size:clamp(52px,8vw,112px);line-height:.98;letter-spacing:-.035em}
.gala-landing__sub{max-width:45ch;margin-top:26px;font-size:clamp(15px,1.3vw,18px);line-height:1.8;color:rgba(248,243,239,.84)}
.gala-landing__cta{margin-top:34px;background:var(--paper-text);border-color:var(--paper-text);color:var(--green)}
.gala-landing__cta:hover{background:var(--cream-2);border-color:var(--cream-2)}
.gala-landing__brand{display:block;width:min(220px,54vw);margin-top:clamp(42px,6vw,72px);opacity:.96}
.gala-landing__brand img{width:100%;height:auto}

@media (max-width:1024px){
  .packages__intro{grid-template-columns:1fr 1fr}
  .package{width:100%}
  .partners__list{grid-template-columns:repeat(3,1fr)}
  .wgal__grid{grid-auto-rows:220px}
}

@media (max-width:760px){
  .nav{min-height:72px;padding-block:6px}
  .nav__logo img,.nav.solid .nav__logo img{height:58px}
  .services-editorial{padding-block:54px 76px}
  .services-editorial .chapter{font-size:clamp(40px,13vw,58px);margin-bottom:52px}
  .services-editorial .spread{grid-template-columns:1fr;gap:30px;min-height:0}
  .services-editorial .spread + .spread{margin-top:78px}
  .services-editorial .spread__media{aspect-ratio:4/3}
  .services-editorial .spread--social .spread__media{justify-self:stretch;max-width:none;max-height:none;aspect-ratio:4/5}
  .service-break--green{text-align:center}
  .service-break--green::after{width:100%;opacity:.12}
  .service-break--green .service-break__body{margin-inline:auto}
  .service-break--green p{margin-inline:auto}
  .other-services{padding-block:54px 76px}
  .other-services .spread{grid-template-columns:1fr;gap:30px;text-align:center}
  .other-services .spread + .spread{margin-top:78px}
  .say__grid{grid-template-columns:1fr}
  .rcard:first-child{grid-row:auto}
  .packages__intro{grid-template-columns:1fr}
  .packages__portrait{min-height:0;max-height:560px}
  .package{grid-template-columns:1fr;padding-inline:24px}
  .package-cta{display:block;text-align:center}
  .package-cta p{margin-inline:auto}
  .package-cta .cta{margin-top:26px}
  .package__cta{justify-self:center}
  .pk__grid{grid-template-columns:1fr;max-width:none}
  .pkcard{grid-column:auto;min-height:620px;text-align:left}
  .pkcard ul{margin-inline:0}
  .wgal__grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:220px}
  .wgal__grid div:nth-child(n){grid-column:span 1;grid-row:span 1}
  .wgal__grid div:first-child{grid-column:1/-1;grid-row:span 2}
  .gala-moment__grid{grid-template-columns:1fr;text-align:center}
  .gala-moment__images{grid-template-rows:320px 220px}
  .hosts .chapter{text-align:center}
  .hosts__grid{grid-template-columns:1fr;max-width:none}
  .hostcard{text-align:center}
  .partners__list{grid-template-columns:repeat(2,1fr)}
  .partners__list li{text-align:center}
  .consult-prep__grid{grid-template-columns:1fr}
  .consultation__grid{grid-template-columns:1fr;text-align:center}
  .consultation__body h1{margin-inline:auto}
  .consultation__body p{margin-inline:auto}
  .consult-prep__lead{text-align:center}
  .consult-prep__lead h2,.consult-prep__lead p{margin-inline:auto}
  .consult-next__inner{display:block;text-align:center}
  .consult-next .cta{margin-top:26px}
  .menu{align-items:center;text-align:center}
  .say__grid .rcard:nth-child(2){order:1}
  .say__grid .rcard:first-child{order:2}
  .say__grid .rcard:nth-child(3){order:3}
  .addons__head h2{margin-inline:auto}
  .addons__media img{object-position:center 20%}
  .work__row a{height:clamp(144px,44vw,238px)}
  .work__row--forward{transform:translateX(-18%)}
  .work__row--reverse{transform:translateX(-2%)}
  .consult-form-sec__grid{grid-template-columns:1fr}
  .consult-form-sec__intro{position:static;text-align:center}
  .consult-form-sec__intro h2,.consult-form-sec__intro p{margin-inline:auto}
  .consult-form{padding:26px 20px}
  .consult-form__pair{grid-template-columns:1fr}
  .consult-form__foot{flex-direction:column;text-align:center}
  .contact-simple{padding-top:132px}
  .contact-simple h1{max-width:8ch}
  .contact-form__foot{align-items:center}

  .ig__profile{grid-template-columns:auto minmax(0,1fr)}
  .ig__stats{grid-column:1/-1;grid-row:2}
  .ig__follow{grid-column:1/-1;grid-row:3}
  .pkcard{min-height:0}
  .deliv__head{margin-bottom:46px}
  .deliv__feature,.deliv__item,.deliv__item:nth-child(even){grid-template-columns:1fr;grid-template-areas:"count" "media" "copy";gap:22px;min-height:0;padding:42px 0;text-align:center}
  .deliv__count{padding-top:0}
  .deliv__media,.deliv__feature .deliv__media,.deliv__item .deliv__media{width:min(100%,420px);height:auto;aspect-ratio:4/5;margin-inline:auto}
  .deliv__copy p{margin-inline:auto}
  .gala-landing__main,.gala-landing__hero{min-height:0;height:100svh}
  .gala-landing__content{width:min(100% - 40px,640px)}
  .gala-landing h1{font-size:clamp(50px,15vw,72px)}
  .gala-landing__brand{margin-top:42px}
}

@media (max-width:460px){
  .foot__logo{width:min(78vw,280px)}
  .partners__list{grid-template-columns:1fr}
  .wgal__grid{grid-template-columns:1fr;grid-auto-rows:300px}
  .wgal__grid div:nth-child(n){grid-column:auto;grid-row:auto}
  .gala-moment__images{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(3,280px)}
  .gala-moment__images figure:first-child{grid-row:auto}
  .consult-prep__list article{grid-template-columns:1fr;gap:8px;text-align:center}
}

/* ============================================================
   2026-08 REVISION LAYER
   Scope: tighter global scale, brighter accent, service index,
   wedding deliverables row, add-ons columns, page transitions,
   scroll-read founder statement, collapsed-media fixes.
   Everything here is additive: resting state is the visible state.
   ============================================================ */

:root{
  /* Brighter terracotta. --terra fills, --terra-2 hover (noticeably hotter),
     --terra-ink for small type on cream where contrast has to hold. */
  --terra:#b5502c;
  --terra-2:#d2673a;
  --terra-ink:#9e4223;
  --pad:clamp(18px,4.2vw,72px);
  --maxw:1420px;
}

/* ---------- GLOBAL SCALE: everything was reading oversized ---------- */
.sec{padding-block:clamp(56px,7vw,110px)}
.svc{padding-block:clamp(34px,4.4vw,62px) clamp(56px,7vw,104px)}
.svc--other{padding-top:clamp(56px,7vw,104px);padding-bottom:clamp(34px,4.4vw,60px)}
.chapter{font-size:clamp(32px,4.4vw,62px);margin-bottom:clamp(30px,3.6vw,52px)}
.chapter--sub{font-size:clamp(26px,3.2vw,42px);margin-bottom:clamp(34px,4.4vw,64px)}
.hero{min-height:min(88svh,860px)}
.hero__inner{padding-block:clamp(120px,14vh,180px) clamp(70px,9vh,112px)}
.hero__title{font-size:clamp(36px,4.9vw,68px);max-width:17ch}
.hero__sub{font-size:clamp(14.5px,1.05vw,16.5px);max-width:50ch;margin-top:20px}
.hero__cta{margin-top:28px}
.phero--tall{min-height:min(74vh,700px)}
.phero__inner{padding-block:clamp(118px,13vw,170px) clamp(64px,8vw,104px)}
.phero__title{font-size:clamp(36px,5.4vw,76px);max-width:15ch}
.phero__sub{font-size:clamp(14.5px,1.05vw,16.5px)}
.founder__lead{font-size:clamp(24px,2.7vw,40px);max-width:21ch}
.founder__grid{gap:clamp(36px,5vw,84px)}
.founder__media{max-width:430px}
.deliv,.addons{padding-block:clamp(56px,7vw,102px)}
.deliv__head,.addons__head{margin-bottom:clamp(32px,4vw,58px)}
.addons__head h2{font-size:clamp(30px,3.6vw,52px)}
.wgal{padding-block:clamp(52px,6.4vw,92px)}
.wgal__head h2{font-size:clamp(26px,3vw,42px)}

/* ---------- SERVICE INDEX (replaces alternating image/text spreads) ---------- */
.svcx{display:block;border-top:1px solid var(--line)}
.svcx__row{display:grid;grid-template-columns:clamp(52px,5vw,78px) minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(20px,2.6vw,44px);align-items:center;
  padding-block:clamp(26px,3.2vw,46px);border-bottom:1px solid var(--line)}
.svcx__num{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.2em;
  color:var(--terra-ink);align-self:start;padding-top:.5em}
.svcx__media{aspect-ratio:16/10;overflow:hidden;background:var(--cream-2);border-radius:2px}
.svcx__media img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.svcx__row:hover .svcx__media img{transform:scale(1.04)}
.svcx__body h3{font-family:var(--serif);font-size:clamp(22px,2.1vw,32px);line-height:1.15}
.svcx__body p{margin-top:12px;font-size:clamp(14.5px,1.02vw,16px);line-height:1.75;color:var(--muted);max-width:52ch}
.svcx__body .tlink{margin-top:18px}

/* ---------- WEDDING DELIVERABLES: a row of three ---------- */
.deliv__row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,30px);align-items:start}
.dcard{background:var(--card);overflow:hidden;border-radius:2px;box-shadow:var(--shadow-sm)}
.dcard__media{aspect-ratio:4/5;overflow:hidden;background:var(--green)}
.dcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.dcard:hover .dcard__media img{transform:scale(1.035)}
.dcard__copy{padding:clamp(20px,2.2vw,30px)}
.dcard__num{font-size:11.5px;font-weight:700;letter-spacing:.24em;color:var(--terra-ink);margin-bottom:10px}
.dcard__copy h3{font-family:var(--serif);font-size:clamp(19px,1.6vw,24px);line-height:1.18}
.dcard__copy p{margin-top:10px;font-size:clamp(14px,1vw,15.2px);line-height:1.72;color:var(--muted)}

/* ---------- ADD-ONS: three readable columns, no sticky slab ---------- */
.addx{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,52px);
  border-top:1px solid var(--line);padding-top:clamp(26px,3vw,42px)}
.addx__col{display:block}
.addx__step{font-size:11.5px;font-weight:700;letter-spacing:.24em;color:var(--terra-ink);margin-bottom:10px}
.addx__col h3{font-family:var(--serif);font-size:clamp(19px,1.7vw,25px);line-height:1.18;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.addx__col ul{display:grid;gap:11px;margin-top:16px}
.addx__col li{position:relative;padding-left:17px;font-size:clamp(14px,1vw,15.2px);line-height:1.62;color:var(--ink)}
.addx__col li::before{content:"";position:absolute;left:0;top:.68em;width:8px;height:1px;background:var(--terra)}

/* ---------- COLLAPSED MEDIA FIX ----------
   The portfolio strip sized itself entirely from loaded image intrinsics, so
   lazy or not-yet-decoded images left links at width:0 and the rows empty.
   Reserve the box first; the image fills it. */
.work__row a{width:clamp(240px,26vw,380px);aspect-ratio:3/2;height:auto}
.work__row img{width:100%;height:100%;object-fit:cover}
.spread__media,.founder__media{min-width:0}
.plx{width:100%}

/* ---------- ACCENT + CONTRAST ---------- */
.tlink{color:var(--terra-ink)}
.tlink:hover{color:var(--terra-2)}
.rcard figcaption{color:var(--terra-ink)}
.cta:hover{background:var(--terra-2);border-color:var(--terra-2)}
.founder__lead{color:#6a7770}
.founder__lead .hl{color:var(--ink)}

/* ---------- SCROLL-READ FOUNDER STATEMENT ----------
   Words start dim and warm to ink as the block travels the viewport, so the
   sentence reads itself on scroll. The portrait resolves alongside it.
   Without support, or with reduced motion, everything is simply visible. */
.founder__lead .w{transition:color .5s var(--ease)}
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    html.js .founder__lead .w{animation:wordRead linear both;animation-timeline:view();
      animation-range:entry 62% cover 46%}
    html.js .founder__media img{animation:focusIn linear both;animation-timeline:view();
      animation-range:entry 30% cover 34%}
  }
}
@keyframes wordRead{
  from{color:#b3bbb5}
  to{color:var(--ink)}
}
@keyframes focusIn{
  from{filter:blur(9px) saturate(.72);transform:scale(1.06)}
  to{filter:blur(0) saturate(1);transform:scale(1)}
}

/* ---------- PAGE TRANSITIONS ----------
   Navigation stays instant; the swap is what gets the treatment. */
@view-transition{navigation:auto}
@media (prefers-reduced-motion:no-preference){
  ::view-transition-old(root){animation:vtOut .26s var(--ease) both}
  ::view-transition-new(root){animation:vtIn .42s var(--ease) both}
  .nav{view-transition-name:site-nav}
  .foot{view-transition-name:site-foot}
}
@keyframes vtOut{to{opacity:0;transform:translateY(-6px)}}
@keyframes vtIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Browsers without the View Transitions API get a short dip instead. */
.vt-veil{position:fixed;inset:0;z-index:300;background:var(--green-deep);opacity:0;pointer-events:none;
  transition:opacity .22s var(--ease)}
.vt-veil.on{opacity:1}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1000px){
  .svcx__row{grid-template-columns:clamp(38px,7vw,54px) minmax(0,1fr);gap:16px 18px}
  .svcx__media{grid-column:2;aspect-ratio:16/9}
  .svcx__body{grid-column:2}
  .deliv__row{grid-template-columns:1fr;gap:18px}
  .dcard{display:grid;grid-template-columns:minmax(120px,.42fr) minmax(0,1fr);align-items:stretch}
  .dcard__media{aspect-ratio:auto;height:100%}
  .addx{grid-template-columns:1fr;gap:26px}
}
@media (max-width:620px){
  .svcx__row{grid-template-columns:1fr;padding-block:24px}
  .svcx__num{padding-top:0}
  .svcx__media,.svcx__body{grid-column:1}
  .dcard{grid-template-columns:1fr}
  .dcard__media{aspect-ratio:4/3}
  .work__row a{width:clamp(190px,62vw,260px)}
}

/* Wedding hero: the couple sat low in the crop and got cut by the fold.
   Pull the focal point up and let the frame breathe. */
.phero__media img{object-position:center 26%}

/* The gap between the two service blocks stacked two full section paddings.
   One breath is enough. */
.svc--other{padding-top:clamp(28px,3.4vw,52px)}
.svc{padding-bottom:clamp(40px,5vw,72px)}

/* Wedding packages: they were a full-width feature card stacked over two
   smaller ones. Three equal columns, read left to right, with the middle
   card keeping its darker "Most Loved" treatment. */
.pk{padding-block:clamp(52px,6.5vw,96px)}
.pk__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,1.8vw,26px);align-items:stretch}
.pkcard--feature{grid-column:auto;order:0;min-height:0;padding:clamp(26px,2.6vw,38px);justify-content:flex-start}
.pkcard--feature>*{max-width:none}
.pkcard{padding:clamp(24px,2.4vw,34px)}
.pkcard h3{font-size:clamp(21px,1.9vw,28px)}
.pkcard__price{font-size:clamp(26px,2.4vw,36px)}
.pkcard li,.pkcard__lede,.pkcard__good{font-size:clamp(13.6px,.98vw,14.8px)}

/* Section headings had a second, larger override that outranked the global
   scale pass. Bring them back in line. */
.deliv__head .chapter,.addons__head h2,.wgal__head h2{font-size:clamp(28px,3.4vw,50px);line-height:1.08}
.deliv__head{max-width:640px;margin-bottom:clamp(32px,4vw,58px)}

@media (max-width:1000px){
  .pk__grid{grid-template-columns:1fr;max-width:460px;margin-inline:auto}
  .pkcard--feature{min-height:0}
}
.deliv__row{align-items:stretch}
.dcard{display:flex;flex-direction:column}
.dcard__copy{flex:1}

/* ============================================================
   REVISION PASS 2
   Full-bleed heroes, a real motion signature, centred mobile
   composition, and add-on cards that look designed.
   Still additive: with JS off or reduced motion on, the resting
   state of every element is its final visible state.
   ============================================================ */

/* ---------- HEROES OWN THE FIRST SCREEN ---------- */
.hero{min-height:100svh}
.hero__inner{padding-block:clamp(140px,17vh,210px) clamp(84px,11vh,140px)}
.phero--tall{min-height:100svh}
.phero__inner{padding-block:clamp(140px,17vh,210px) clamp(84px,11vh,140px)}

/* ---------- MOTION SIGNATURE ----------
   Three moves, used consistently: headings clear from blur as they rise,
   media wipes open from the bottom edge, and grouped items stagger. */
:root{--reveal-dur:900ms;--reveal-distance:34px}

html.js.motion-ready .chapter.reveal,
html.js.motion-ready .phero__title.reveal,
html.js.motion-ready .hero__title.reveal,
html.js.motion-ready .wgal__head h2.reveal,
html.js.motion-ready .addons__head h2.reveal,
html.js.motion-ready .touch__inner h2.reveal{
  opacity:0;transform:translate3d(0,42px,0);filter:blur(10px);
  transition:opacity 1s var(--ease),transform 1.05s var(--ease),filter 1s var(--ease)
}
html.js.motion-ready .chapter.reveal.in,
html.js.motion-ready .phero__title.reveal.in,
html.js.motion-ready .hero__title.reveal.in,
html.js.motion-ready .wgal__head h2.reveal.in,
html.js.motion-ready .addons__head h2.reveal.in,
html.js.motion-ready .touch__inner h2.reveal.in{
  opacity:1;transform:none;filter:blur(0)
}

/* Media wipes open, then settles out of its overscale. */
html.js.motion-ready .svcx__media,
html.js.motion-ready .dcard__media,
html.js.motion-ready .wgal__grid div{
  clip-path:inset(0 0 100% 0);
  transition:clip-path 1.15s var(--ease) var(--reveal-delay,0ms)
}
html.js.motion-ready .svcx__row.in .svcx__media,
html.js.motion-ready .dcard.in .dcard__media,
html.js.motion-ready .wgal__grid div.in{clip-path:inset(0 0 0 0)}
html.js.motion-ready .svcx__media img,
html.js.motion-ready .dcard__media img{
  transform:scale(1.14);transition:transform 1.5s var(--ease) var(--reveal-delay,0ms)
}
html.js.motion-ready .svcx__row.in .svcx__media img,
html.js.motion-ready .dcard.in .dcard__media img{transform:scale(1)}

/* Copy inside a revealed row arrives just behind its image. */
html.js.motion-ready .svcx__num,
html.js.motion-ready .svcx__body>*{
  opacity:0;transform:translate3d(0,22px,0);
  transition:opacity .8s var(--ease),transform .8s var(--ease)
}
html.js.motion-ready .svcx__row.in .svcx__num{opacity:1;transform:none;transition-delay:120ms}
html.js.motion-ready .svcx__row.in .svcx__body>h3{opacity:1;transform:none;transition-delay:200ms}
html.js.motion-ready .svcx__row.in .svcx__body>p{opacity:1;transform:none;transition-delay:280ms}
html.js.motion-ready .svcx__row.in .svcx__body>.tlink{opacity:1;transform:none;transition-delay:360ms}

/* Cards rise together with a light stagger instead of appearing flat. */
html.js.motion-ready .dcard,
html.js.motion-ready .addx__col,
html.js.motion-ready .pkcard{
  opacity:0;transform:translate3d(0,40px,0);
  transition:opacity .95s var(--ease) var(--reveal-delay,0ms),transform .95s var(--ease) var(--reveal-delay,0ms)
}
html.js.motion-ready .dcard.in,
html.js.motion-ready .addx__col.in,
html.js.motion-ready .pkcard.in{opacity:1;transform:none}

/* ---------- ADD-ONS: real cards ---------- */
.addx{border-top:0;padding-top:0;gap:clamp(16px,1.8vw,26px)}
.addx__col{background:var(--card);border:1px solid var(--line);border-radius:3px;
  padding:clamp(24px,2.6vw,38px);box-shadow:var(--shadow-sm);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.addx__col:hover{transform:translateY(-4px);box-shadow:0 26px 60px -28px rgba(14,32,29,.4)}
.addx__step{display:inline-block;padding:5px 11px;margin-bottom:14px;border-radius:999px;
  background:rgba(181,80,44,.1);color:var(--terra-ink);font-size:10.5px;letter-spacing:.22em}
.addx__col h3{border-bottom:0;padding-bottom:0}
.addx__col ul{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}

/* ---------- MOBILE COMPOSITION ----------
   Single column reads best centred, with the index number sitting directly
   above its own headline rather than floating beside the image. */
@media (max-width:760px){
  .svcx{border-top:0}
  .svcx__row{grid-template-columns:1fr;gap:0;text-align:center;padding-block:34px}
  .svcx__media{order:1;aspect-ratio:4/3;margin-bottom:20px}
  .svcx__num{order:2;align-self:center;padding-top:0;margin-bottom:8px;
    display:inline-block;justify-self:center}
  .svcx__body{order:3}
  .svcx__body p{margin-inline:auto;max-width:46ch}
  .svcx__body .tlink{margin-top:16px}

  .chapter,.addons__head h2,.deliv__head .chapter,.wgal__head h2{text-align:center}
  .deliv__head,.addons__head{text-align:center}
  .deliv__head>p,.addons__head p{margin-inline:auto}
  .wgal__head{text-align:center}

  .dcard__copy{text-align:center}
  .dcard__copy p{margin-inline:auto;max-width:44ch}
  .addx__col{text-align:center}
  .addx__col ul{max-width:38ch;margin-inline:auto;text-align:left}
  .addx__col li{padding-left:16px}

  .pkcard{text-align:center}
  .pkcard ul{max-width:36ch;margin-inline:auto;text-align:left}
  .founder__grid{text-align:center}
  .founder__lead{margin-inline:auto}
  .founder__links{justify-content:center}
}

/* The centred single column also wants the media to lead on small screens. */
@media (max-width:760px){
  .dcard{display:flex;flex-direction:column}
  .dcard__media{aspect-ratio:4/3}
}

/* The original stylesheet exempts .pkcard.r from revealing at all, and it wins
   on specificity. Re-enable it here, and let the service row stay put so its
   children carry the stagger instead of the whole block sliding. */
html.js.motion-ready .pkcard.r{opacity:0;transform:translate3d(0,40px,0)}
html.js.motion-ready .pkcard.r.in{opacity:1;transform:none}
html.js.motion-ready .svcx__row.r{opacity:1;transform:none}
html.js.motion-ready .dcard.r{opacity:0;transform:translate3d(0,40px,0)}
html.js.motion-ready .dcard.r.in{opacity:1;transform:none}
html.js.motion-ready .addx__col.r{opacity:0;transform:translate3d(0,40px,0)}
html.js.motion-ready .addx__col.r.in{opacity:1;transform:none}

/* The founder portrait sized itself from its own contents while its child was
   sized from the parent, so on narrow screens the box collapsed to zero.
   Give the frame an explicit width and the cycle breaks. */
.founder__media{width:100%}
.founder__media .plx{width:100%;height:100%}
@media (max-width:760px){.founder__media{margin-inline:auto}}

/* The strip was forced to uniform 3:2 tiles to stop it collapsing. Now that
   every image carries its intrinsic width/height, the browser can reserve the
   right box before load, so the original mixed-ratio rhythm comes back. */
.work__row a{width:auto;aspect-ratio:auto;height:clamp(190px,20vw,292px);min-width:120px}
.work__row img{width:auto;height:100%;max-width:none;object-fit:cover}
@media (max-width:620px){.work__row a{width:auto;height:clamp(160px,42vw,220px)}}

/* ---------- SERVICE INDEX v2 ----------
   The numeral had its own column, which left it stranded in dead space and
   made the separator rules start at a different x than the section rule.
   Two columns now: media, then a body that opens with its own index number.
   Rules run the full width of the section. */
.svcx__row{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(24px,3.4vw,60px);align-items:center;padding-block:clamp(30px,3.4vw,50px)}
.svcx__num{display:block;font-size:11.5px;font-weight:700;letter-spacing:.26em;
  color:var(--terra-ink);margin-bottom:12px;padding-top:0;align-self:auto}
.svcx__body{max-width:36em}
.svcx__body p{max-width:none}
.svcx__media{aspect-ratio:3/2}

/* Add-on cards should size to their own content, not stretch to the tallest. */
.addx{align-items:start}

@media (max-width:760px){
  .svcx__row{grid-template-columns:1fr;gap:0}
  .svcx__media{order:0;margin-bottom:20px}
  .svcx__body{order:1;max-width:none}
  .svcx__num{margin-bottom:10px}
}

/* <ol> keeps a 40px inline start padding by default, which pushed every row
   40px right of the section rule above it. Reset it so the media edge, the
   separators and the chapter rule all share one left margin. */
.svcx{margin:0;padding:0;list-style:none}
.svcx__row{list-style:none}

/* ============================================================
   SERVICE CARD SYSTEM
   The home page and social packages now share the same clear, image-led
   comparison language as the wedding packages. Cards are always visible;
   motion never gates the content.
   ============================================================ */
.svc--cards{padding-block:clamp(68px,8vw,124px);background:var(--cream-2)}
.svc-cards__head{display:grid;grid-template-columns:minmax(0,.92fr) minmax(250px,.58fr);gap:28px clamp(36px,7vw,120px);align-items:end;margin-bottom:clamp(38px,5vw,68px)}
.svc-cards__head .eyebrow{grid-column:1/-1;margin:0;color:var(--terra-ink)}
.svc-cards__head .chapter{margin:0}
.svc-cards__head>p:last-child{max-width:31ch;margin:0;color:var(--muted);font-size:clamp(15px,1.15vw,17px);line-height:1.75}
.svc-cards{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:minmax(250px,auto);gap:clamp(12px,1.5vw,22px)}
.svc-card{position:relative;isolation:isolate;display:flex;min-height:300px;overflow:hidden;border-radius:3px;background:var(--green-deep);color:var(--paper-text);box-shadow:var(--shadow-sm)}
.svc-card>img,.svc-card__shade{position:absolute;inset:0;width:100%;height:100%}
.svc-card>img{object-fit:cover;filter:saturate(.62) brightness(.65) contrast(1.05);transition:transform .9s var(--ease),filter .7s var(--ease)}
.svc-card__shade{z-index:1;background:linear-gradient(180deg,rgba(14,32,29,.16),rgba(14,32,29,.58) 50%,rgba(14,32,29,.96))}
.svc-card__content{position:relative;z-index:2;display:flex;flex:1;flex-direction:column;justify-content:flex-end;padding:clamp(24px,3vw,46px)}
.svc-card__num{margin:0 0 auto;font-size:10.5px;font-weight:700;letter-spacing:.24em;color:var(--gold)}
.svc-card h3{max-width:13ch;margin-top:clamp(54px,8vw,126px);font-family:var(--serif);font-size:clamp(27px,3.15vw,50px);line-height:1.04;text-wrap:balance;text-shadow:0 2px 16px rgba(0,0,0,.3)}
.svc-card h3 span{display:block;font-size:.68em;line-height:1.15}
.svc-card__content>p:not(.svc-card__num){max-width:45ch;margin-top:15px;color:rgba(248,243,239,.88);font-size:clamp(14px,1.05vw,16px);line-height:1.7}
.svc-card .tlink{margin-top:22px;color:var(--paper-text)}
.svc-card .tlink::after{background:var(--gold)}
.svc-card:hover>img{transform:scale(1.045);filter:saturate(.78) brightness(.72) contrast(1.04)}
.svc-card--activation{grid-column:span 7;grid-row:span 2;min-height:610px}
.svc-card--activation h3{font-size:clamp(34px,4.1vw,66px)}
.svc-card--social,.svc-card--planning{grid-column:span 5}
.svc-card--host{grid-column:1/-1;min-height:390px}
.svc-card--host .svc-card__content{max-width:720px}
.svc-card--project{grid-column:span 4}
.svc-card--production{grid-column:span 8}

/* Social media packages use the wedding-card rhythm without repeating its imagery. */
.packages--cards{padding-block:clamp(70px,9vw,126px);background:var(--paper)}
.social-packages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,28px);align-items:stretch}
.social-card{--social-image:none;position:relative;isolation:isolate;display:flex;flex-direction:column;min-height:680px;padding:clamp(26px,2.8vw,42px);overflow:hidden;border:1px solid rgba(248,243,239,.18);border-radius:3px;background:var(--green-deep);color:var(--paper-text);box-shadow:var(--shadow-sm);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.social-card::before,.social-card::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0}
.social-card::before{background:var(--social-image) center/cover no-repeat;opacity:.46;filter:saturate(.58) brightness(.62) contrast(1.05);transition:transform .9s var(--ease),filter .7s var(--ease)}
.social-card::after{background:linear-gradient(180deg,rgba(14,32,29,.62),rgba(14,32,29,.72) 43%,rgba(14,32,29,.97))}
.social-card--kickstart{--social-image:url('assets/port-10.jpg')}
.social-card--social{--social-image:url('assets/port-06.jpg')}
.social-card--dominate{--social-image:url('assets/event-3.jpg')}
.social-card>*{position:relative;z-index:1}
.social-card:hover{transform:translateY(-4px);box-shadow:0 28px 56px rgba(14,32,29,.22)}
.social-card:hover::before{transform:scale(1.045);filter:saturate(.78) brightness(.7) contrast(1.04)}
.social-card__tag{margin:0;color:var(--gold);font-size:10.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase}
.social-card h2{margin-top:clamp(54px,7vw,104px);font-family:var(--serif);font-size:clamp(28px,2.9vw,44px);line-height:1.06;text-wrap:balance;text-shadow:0 2px 16px rgba(0,0,0,.35)}
.social-card__price{margin-top:12px;font-family:var(--serif);font-size:clamp(27px,2.65vw,38px);line-height:1;color:var(--paper-text)}
.social-card__lede{min-height:4.9em;margin-top:18px;color:rgba(248,243,239,.86);font-size:14.5px;line-height:1.66}
.social-card ul{display:grid;gap:10px;margin-top:25px}
.social-card li{position:relative;padding-left:22px;color:rgba(248,243,239,.94);font-size:14px;line-height:1.52}
.social-card li::before{content:"";position:absolute;left:0;top:.55em;width:9px;height:9px;border:1.5px solid rgba(248,243,239,.78);border-radius:50%}
.social-card .cta{margin-top:auto;padding-top:26px;align-self:flex-start;background:var(--paper-text);border-color:var(--paper-text);color:var(--green)}
.social-card .cta:hover{background:var(--cream-2);border-color:var(--cream-2);color:var(--green)}

/* Do not let a missed observer callback hide cards or wedding photography. */
html.js.motion-ready .svc-card.r,html.js.motion-ready .social-card.r{opacity:1;transform:none;will-change:auto}
html.js.motion-ready .wgal__grid .wgal__tile{clip-path:inset(0 0 0 0);transition:transform .7s var(--ease)}

/* Add-ons become a consistent comparison set instead of three uneven columns. */
.addx{align-items:stretch}
.addx__col{display:flex;flex-direction:column;min-height:100%}
.addx__col ul{flex:1}

@media (max-width:1000px){
  .svc-cards{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto}
  .svc-card,.svc-card--activation,.svc-card--social,.svc-card--planning,.svc-card--host,.svc-card--project,.svc-card--production{grid-column:auto;grid-row:auto;min-height:460px}
  .svc-card--activation,.svc-card--host{grid-column:1/-1}
  .social-packages{grid-template-columns:1fr;max-width:520px;margin-inline:auto}
  .social-card{min-height:0}
}
@media (max-width:760px){
  .svc-cards__head{display:block;text-align:center}
  .svc-cards__head .eyebrow{margin-bottom:12px}
  .svc-cards__head .chapter{margin-bottom:16px}
  .svc-cards__head>p:last-child{margin-inline:auto}
  .svc-cards{grid-template-columns:1fr}
  .svc-card,.svc-card--activation,.svc-card--social,.svc-card--planning,.svc-card--host,.svc-card--project,.svc-card--production{grid-column:auto;min-height:420px}
  .svc-card--activation,.svc-card--host{grid-column:auto}
  .svc-card__content{text-align:center;align-items:center}
  .svc-card h3{margin-top:74px}
  .social-card{text-align:center;align-items:center}
  .social-card h2{margin-top:68px}
  .social-card__lede{min-height:0}
  .social-card ul{max-width:34ch;text-align:left}
  .social-card .cta{align-self:center}
  .addx__col{min-height:0}
}

/* ============================================================
   REVISION PASS 3 — consistency fixes
   ============================================================ */

/* ---------- SERVICE CARDS: one size, side by side ----------
   The mosaic gave one card 7 columns and two rows, another the full width,
   then 4 and 8. Reading six services meant reading six different shapes.
   Equal cards in a three-up grid instead. */
.svc-cards{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr}
.svc-card,
.svc-card--activation,
.svc-card--social,
.svc-card--planning,
.svc-card--host,
.svc-card--project,
.svc-card--production{grid-column:auto;grid-row:auto;min-height:clamp(360px,30vw,440px)}
.svc-card--activation h3{font-size:clamp(24px,1.9vw,30px)}
.svc-card h3{max-width:none;margin-top:auto;font-size:clamp(24px,1.9vw,30px)}
.svc-card__num{margin:0 0 auto}
.svc-card__content{padding:clamp(22px,2vw,30px)}
.svc-card__content>p:not(.svc-card__num){max-width:38ch;margin-top:12px;font-size:clamp(13.6px,.98vw,15px)}
.svc-card--host .svc-card__content{max-width:none}
.svc-card .tlink{margin-top:18px}

/* The arrow glyph was inheriting the old underline rule's background, which
   painted a gold block behind it. */
.svc-card .tlink::after{background:none}
.tlink::after{background:none}

/* ---------- RECENT WEDDINGS: stop cropping portraits into letterboxes ----------
   All five wedding photographs are vertical. Forcing them into wide, short
   mosaic cells cut heads and dresses out of frame. Vertical images now get
   vertical tiles. */
.wgal__grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:auto;
  gap:clamp(10px,1.2vw,18px)}
.wgal__grid div:nth-child(n){grid-column:auto;grid-row:auto}
.wgal__grid .wgal__tile,.wgal__grid div{aspect-ratio:4/5;overflow:hidden}
.wgal__grid img{width:100%;height:100%;object-fit:cover;object-position:center 22%}
@media (max-width:900px){
  .wgal__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wgal__grid>*:nth-child(n+4){grid-column:span 1}
}
@media (max-width:620px){
  .wgal__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wgal__grid>*:first-child{grid-column:1/-1;aspect-ratio:3/4}
}

/* ---------- ADD-ON NUMBER PILLS ----------
   Wide tracking on a two-character label left a chunk of trailing space
   inside the pill, so it read as a stretched bar. */
.addx__step{padding:4px 9px;letter-spacing:.12em;font-size:10.5px;line-height:1.4;
  padding-right:calc(9px - .12em)}
.dcard__num{letter-spacing:.16em}
.svc-card__num{letter-spacing:.18em}

/* Netlify honeypot. It has to exist in the markup for spam filtering, but it
   must never be visible to a person. */
.hp{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* The card became a flex column, which stretched the number pill to the full
   card width and let the list rows spread to fill leftover height. */
.addx__step{align-self:flex-start;width:auto;max-width:max-content}
.addx__col ul{align-content:start}
@media (max-width:760px){.addx__step{align-self:center}}
.svc-card__num,.dcard__num{align-self:flex-start;width:max-content}
@media (max-width:760px){.svc-card__num,.dcard__num{align-self:center}}

/* The three-up rule was declared after the responsive block, so it kept three
   columns all the way down to 390px and squeezed each card to 110px. */
@media (max-width:1000px){
  .svc-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .svc-card,.svc-card--activation,.svc-card--social,.svc-card--planning,
  .svc-card--host,.svc-card--project,.svc-card--production{min-height:400px}
}
@media (max-width:760px){
  .svc-cards{grid-template-columns:1fr}
  .svc-card,.svc-card--activation,.svc-card--social,.svc-card--planning,
  .svc-card--host,.svc-card--project,.svc-card--production{min-height:400px}
  .svc-card h3{font-size:clamp(24px,6.6vw,30px)}
}

/* Wedding gallery on small screens: two even columns, every tile the same
   vertical crop. The earlier full-width first tile was landing at column
   width anyway, which left one tile a different height than its neighbours. */
@media (max-width:620px){
  .wgal__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wgal__grid>*,.wgal__grid>*:first-child{grid-column:auto;aspect-ratio:4/5}
}

/* ============================================================
   REVISION PASS 4 — pricing cards + portfolio motion
   ============================================================ */

/* ---------- SOCIAL PACKAGE CARDS ----------
   The tier label floated ~100px above its own headline, the headline broke
   across two lines when it fits on one, and the button sat hard against the
   last list item, left-aligned under centred-feeling content. */
.social-card{align-items:center;text-align:center;min-height:0;
  padding:clamp(26px,2.6vw,38px) clamp(22px,2.2vw,32px) clamp(28px,2.6vw,38px)}
.social-card__tag{margin-bottom:0}
.social-card h2{margin-top:14px;font-size:clamp(25px,2.2vw,32px);line-height:1.12;
  text-wrap:pretty;max-width:100%}
.social-card__price{margin-top:8px;font-size:clamp(26px,2.3vw,34px)}
.social-card__lede{min-height:0;margin-top:14px;max-width:34ch;margin-inline:auto;font-size:14px}
.social-card ul{margin-top:22px;text-align:left;max-width:32ch;margin-inline:auto;width:100%}
.social-card li{font-size:13.6px}
.social-card .cta{margin-top:32px;padding-top:0;align-self:center}
.social-packages{align-items:stretch}

/* ---------- WEDDING PACKAGE CARDS ----------
   Headline and price centred; the list stays left-aligned so it can be read. */
.pkcard{text-align:center;align-items:center}
.pkcard h3,.pkcard__price,.pkcard__tag{width:100%}
.pkcard h3{line-height:1.12}
.pkcard__lede{max-width:32ch;margin-inline:auto}
.pkcard ul{text-align:left;max-width:34ch;margin-inline:auto;width:100%}
.pkcard__inc{width:100%}
.pkcard__good{max-width:34ch;margin-inline:auto}
.pkcard .cta{align-self:center}

/* ---------- HOME PORTFOLIO STRIP: continuous movement ----------
   It was scrubbed by scroll position, so it froze whenever the page did.
   The rows now drift on their own, pausing on hover, and the JS duplicates
   each row's tiles so the loop has no seam. */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .work__row--forward,.work__row--reverse{animation-timeline:auto;animation-range:normal}
  }
}
.work__row--forward,.work__row--reverse{transform:none}
@media (prefers-reduced-motion:no-preference){
  html.js .work__row--forward{animation:stripLeft 64s linear infinite}
  html.js .work__row--reverse{animation:stripRight 78s linear infinite}
  .work__strip:hover .work__row{animation-play-state:paused}
}
@keyframes stripLeft{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes stripRight{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@media (prefers-reduced-motion:reduce){
  .work__row--forward,.work__row--reverse{animation:none}
}

@media (max-width:760px){
  .social-card ul,.pkcard ul{max-width:30ch}
}

/* Buttons align on one line across the row, with a guaranteed gap above them
   so they never sit against the last list item. */
.social-card ul{margin-bottom:34px}
.social-card .cta{margin-top:auto}
.pkcard ul{margin-bottom:8px}

/* ---------- CTA LABEL CENTRING ----------
   Zeroing padding-top to pull the button off the list left it with 17px of
   bottom padding and none on top, so the label sat high inside the button.
   Spacing above the button belongs to the margin, not the padding. */
.social-card .cta,.pkcard .cta{padding:17px 34px;line-height:1}
@media (max-width:760px){
  .social-card .cta,.pkcard .cta{padding:16px 30px;width:auto;min-width:180px}
}
