/*
Theme Name: Upscale Photographer
Theme URI:
Author: Custom build
Description: A chic, editorial, cinematic personal-brand theme. Cream-to-charcoal narrative arc, Fraunces + Manrope typography, full-screen menu, full-bleed photo sections, retina-quality image handling, per-page SEO controls, and automatic EXIF/GPS stripping on upload.
Version: 0.1.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: upscale
*/

/* ============ TOKENS ============ */
:root{
  --cream:#F6F2EE;
  --cream-2:#F1ECE5;
  --ink:#1B1813;
  --char:#151310;
  --char-2:#1C1915;
  --paper-dark:#F0EBE5;
  --gray:#6A6558;          /* AA 5.1:1 on cream — captions/labels */
  --gray-dark:#9A948A;
  --rose:#B08488;          /* decorative only on light (dots, borders) */
  --rose-deep:#84575C;     /* AA 5.2:1 on cream — rose TEXT on light */
  --rose-dark:#C29B9E;
  --hair:rgba(27,24,19,.14);
  --hair-dark:rgba(242,239,233,.16);
  --serif:'Fraunces',Georgia,serif;
  --sans:'Manrope',Helvetica,Arial,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
  font-family:var(--serif);
  background:var(--cream);
  color:var(--ink);
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--rose);color:var(--cream)}
img{max-width:100%;display:block}
a,button,input,textarea{touch-action:manipulation}
:focus-visible{outline:2px solid var(--rose-deep);outline-offset:3px;border-radius:1px}
.dark :focus-visible,.site-header :focus-visible,.statement :focus-visible,.site-footer :focus-visible{outline-color:var(--rose-dark)}

/* ============ TYPE SYSTEM ============ */
.label{
  font-family:var(--sans);
  font-size:.7rem;font-weight:500;
  letter-spacing:.3em;text-transform:uppercase;
  color:var(--ink);
}
.label--quiet{color:var(--gray)}
.label--rose{color:var(--rose-deep)}
.dark .label--rose{color:var(--rose-dark)}
.caption{
  font-family:var(--sans);
  font-size:.68rem;font-weight:500;
  letter-spacing:.24em;text-transform:uppercase;
  color:var(--gray);
}
.aside{
  font-family:var(--serif);font-style:italic;
  font-size:1.05rem;color:var(--rose-deep);
}
p.body,.body{
  font-family:var(--serif);
  font-size:1.08rem;font-weight:340;line-height:1.85;
  color:var(--ink);max-width:34em;
}

/* the ONE cta style */
.cta{
  display:inline-flex;align-items:center;gap:.9rem;
  padding-top:.7rem;padding-bottom:.7rem;margin-top:-.7rem;margin-bottom:-.7rem; /* 44px hit area, same visual */
  font-family:var(--sans);
  font-size:.66rem;font-weight:600;
  letter-spacing:.3em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;
  transition:opacity .4s ease;
}
.cta::after{
  content:'';width:2.6rem;height:1px;background:currentColor;
  transition:width .5s cubic-bezier(.16,1,.3,1);
}
.cta:hover::after{width:4rem}
.cta:hover{opacity:.65}

/* ============ HEADER ============ */
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:900;
  padding:2.2rem 3rem;
  display:flex;justify-content:space-between;align-items:flex-start;
  mix-blend-mode:difference;color:#fff;pointer-events:none;
}
.site-header a,.site-header .menu-btn{pointer-events:auto}
.wordmark{text-decoration:none;color:inherit;line-height:1}
.wordmark .top{
  display:block;font-family:var(--sans);
  font-size:.6rem;font-weight:600;letter-spacing:.42em;text-transform:uppercase;
  margin-bottom:.3rem;
}
.wordmark .bottom{
  display:block;font-family:var(--serif);font-style:italic;font-weight:340;
  font-size:1.35rem;letter-spacing:.02em;
}
.menu-btn{
  background:none;border:0;cursor:pointer;
  display:flex;flex-direction:column;gap:.42rem;justify-content:center;
  padding:1.2rem .8rem;margin:-1.2rem -.8rem; /* 44px hit area, same visual */
  color:inherit;
}
.menu-btn span{
  display:block;width:2rem;height:1px;background:currentColor;
  transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .3s;
}
body.menu-open .menu-btn span:first-child{transform:translateY(.26rem) rotate(45deg)}
body.menu-open .menu-btn span:last-child{transform:translateY(-.26rem) rotate(-45deg)}

/* ============ MENU OVERLAY ============ */
.menu{
  position:fixed;inset:0;z-index:800;background:var(--cream);
  display:flex;align-items:center;padding:0 clamp(2rem,10vw,12rem);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .6s ease,visibility .6s;
}
body.menu-open .menu{opacity:1;visibility:visible;pointer-events:auto}
.menu ol{list-style:none;counter-reset:m;margin:0;padding:0}
.menu li{
  counter-increment:m;opacity:0;transform:translateY(1.2rem);
  transition:opacity .7s ease,transform .7s cubic-bezier(.16,1,.3,1);
}
body.menu-open .menu li{opacity:1;transform:none}
body.menu-open .menu li:nth-child(1){transition-delay:.12s}
body.menu-open .menu li:nth-child(2){transition-delay:.19s}
body.menu-open .menu li:nth-child(3){transition-delay:.26s}
body.menu-open .menu li:nth-child(4){transition-delay:.33s}
body.menu-open .menu li:nth-child(5){transition-delay:.4s}
body.menu-open .menu li:nth-child(6){transition-delay:.47s}
.menu a{
  display:flex;align-items:baseline;gap:2rem;text-decoration:none;color:var(--ink);
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2.4rem,5.5vw,4.4rem);line-height:1.28;
  transition:color .4s,font-style .4s;
}
.menu a::before{
  content:"0" counter(m);
  font-family:var(--sans);font-size:.62rem;font-weight:500;letter-spacing:.3em;color:var(--gray);
}
.menu a:hover{color:var(--rose-deep);font-style:italic}
.menu .menu-foot{position:absolute;bottom:3rem;left:clamp(2rem,10vw,12rem)}

/* ============ SECTION SCAFFOLD ============ */
.section{position:relative;padding:6rem 3rem;overflow:hidden}
.shell{max-width:1500px;margin:0 auto;position:relative}
.index-row{display:flex;align-items:center;gap:1.6rem;margin-bottom:3.5rem}
.index-row .num{
  font-family:var(--sans);font-size:.66rem;font-weight:600;letter-spacing:.34em;color:var(--ink);
}
.index-row .rule{flex:0 0 4rem;height:1px;background:var(--hair)}
.dark .index-row .num{color:var(--cream)}
.dark .index-row .rule{background:var(--hair-dark)}
.ghost{
  position:absolute;z-index:0;
  font-family:var(--serif);font-weight:300;
  font-size:clamp(15rem,26vw,26rem);line-height:1;
  color:rgba(27,24,19,.06);
  pointer-events:none;user-select:none;
}
.dark .ghost{color:rgba(242,239,233,.05)}

/* ============ IMAGE FRAMES / PLACEHOLDERS ============ */
.ph{
  position:relative;overflow:hidden;
  background:
    radial-gradient(ellipse 70% 55% at 32% 26%,rgba(255,253,250,.55) 0%,rgba(255,253,250,0) 60%),
    linear-gradient(160deg,#EAE4DC 0%,#DFD8CF 55%,#D5CDC3 100%);
}
.ph::after{
  content:attr(data-label);
  position:absolute;inset:auto 0 1.4rem 0;text-align:center;
  font-family:var(--sans);font-size:.58rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;
  color:rgba(27,24,19,.38);
}
.ph::before{content:'';position:absolute;inset:1rem;border:1px solid rgba(27,24,19,.1)}
.ph--dark{background:linear-gradient(165deg,#2A2620 0%,#211D18 60%,#191612 100%)}
.ph--dark::after{color:rgba(242,239,233,.3)}
.ph--dark::before{border-color:rgba(242,239,233,.08)}
.frame{overflow:hidden}
.frame .ph,.frame img{transition:transform 1.6s cubic-bezier(.16,1,.3,1)}
.frame:hover .ph,.frame:hover img{transform:scale(1.03)}
/* editor: images inside frames fill their crop */
.frame img{width:100%;height:100%;object-fit:cover}

/* ============ HERO ============ */
.hero{
  min-height:100vh;display:grid;
  grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  align-items:stretch;position:relative;
}
.hero-left{
  display:flex;flex-direction:column;justify-content:center;
  padding:9rem 0 7rem clamp(2rem,6vw,7rem);position:relative;z-index:2;
}
.hero-tag{margin-bottom:3.2rem}
.hero-name{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(4.6rem,11.5vw,11rem);line-height:.92;letter-spacing:-.015em;margin-left:-.06em;
}
.hero-name .ln2{
  font-style:italic;font-weight:300;color:transparent;
  -webkit-text-stroke:1.2px rgba(27,24,19,.5);
  margin-left:1.9em;display:block;position:relative;z-index:2;
}
.hero-sub{margin-top:2.6rem;font-style:italic;font-size:1.35rem;font-weight:340;color:var(--ink)}
.hero-loc{margin-top:4.2rem;display:flex;gap:1.4rem;align-items:center}
.hero-loc .dot{width:3px;height:3px;border-radius:50%;background:var(--rose)}
.hero-right{position:relative;z-index:1;padding:0;overflow:hidden}
.hero-right .ph{position:absolute;inset:-6% 0 -6% -6rem;will-change:transform}
.hero-right img{position:absolute;top:-6%;left:-6rem;width:calc(100% + 6rem);height:112%;object-fit:cover;will-change:transform}
.hero-scroll{
  position:absolute;bottom:2.6rem;left:3.1rem;z-index:3;writing-mode:vertical-rl;
  font-family:var(--sans);font-size:.58rem;font-weight:500;letter-spacing:.4em;text-transform:uppercase;color:var(--gray);
  display:flex;align-items:center;gap:1rem;
}
.hero-scroll::after{content:'';width:1px;height:3.4rem;background:var(--hair)}

/* ---- SIGNATURE ENTRANCE: the serif name writes in with a slow left-to-right wipe ---- */
.js .hero-name.reveal{opacity:1;transform:none;transition:none} /* its entrance IS the wipe */
.js .hero-name .sig{
  display:block;padding-right:.15em;
  -webkit-mask-image:linear-gradient(90deg,#000 0 33%,transparent 42% 100%);
          mask-image:linear-gradient(90deg,#000 0 33%,transparent 42% 100%);
  -webkit-mask-size:300% 100%;mask-size:300% 100%;
  -webkit-mask-position:100% 0;mask-position:100% 0;
  animation:sig-wipe 2s cubic-bezier(.55,.06,.28,.99) .35s forwards;
}
.js .hero-name .sig-2{animation-delay:1.5s}
@keyframes sig-wipe{to{-webkit-mask-position:0 0;mask-position:0 0}}
/* the rest of the hero waits for the name to finish */
.js .hero-tag.reveal{transition-delay:.05s}
.js .hero-sub.reveal{transition-delay:2.9s}
.js .hero-loc.reveal{transition-delay:3.1s}

/* ---- CENTERED HERO VARIANT (self-contained: section carries .is-centered) ---- */
.hero.is-centered{grid-template-columns:1fr}
.hero.is-centered .hero-right{display:none}
.hero.is-centered .hero-scroll{display:none}
.hero.is-centered .hero-left{align-items:center;text-align:center;padding:9rem 2rem 7rem}
.hero.is-centered .hero-name{
  font-size:clamp(3.4rem,8.5vw,8rem);letter-spacing:.02em;text-transform:uppercase;margin-left:0;line-height:1;
}
.hero.is-centered .hero-name .ln2{display:inline;margin-left:.32em;font-style:normal;color:var(--ink);-webkit-text-stroke:0}
.hero.is-centered .hero-tag{margin-bottom:2.2rem}
.hero.is-centered .hero-sub{margin-top:1.8rem}
.hero.is-centered .hero-loc{justify-content:center;margin-top:2.8rem}

/* ---- optional full-bleed image behind the centered hero (.has-image) ---- */
.hero-media{position:absolute;inset:0;z-index:0;display:none}
.hero-media .ph{position:absolute;inset:0}
.hero-media .ph::before{display:none}
.hero-media-scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(21,19,16,.5) 0%,rgba(21,19,16,.36) 45%,rgba(21,19,16,.62) 100%),
    radial-gradient(ellipse 82% 72% at 50% 46%,rgba(21,19,16,.32) 0%,rgba(21,19,16,0) 70%);
}
.hero.has-image .hero-media{display:block}
.hero.has-image .hero-left{z-index:2}
.hero.has-image .hero-name,.hero.has-image .hero-name .ln2{color:var(--cream)}
.hero.has-image .hero-name .ln2{-webkit-text-stroke:0}
.hero.has-image .hero-sub{color:var(--cream)}
.hero.has-image .hero-tag{color:rgba(242,239,233,.82)}
.hero.has-image .hero-loc .label{color:var(--cream)}
.hero.has-image .hero-loc .label--quiet{color:rgba(242,239,233,.72)}

/* ============ ABOUT ============ */
.woman .ghost{top:-2rem;right:-2rem}
.woman-grid{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,1fr) minmax(0,6fr);
  align-items:start;position:relative;z-index:1;
}
.woman-grid .frame{grid-column:1}
.woman-grid .ph{aspect-ratio:3/4.2}
.woman-copy{grid-column:3;padding-top:3rem}
.woman-copy h2{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(2.6rem,4.6vw,4.2rem);line-height:1.12;letter-spacing:-.01em;margin-bottom:2.8rem;
}
.woman-copy .body+.body{margin-top:1.6rem}
.pt-caption{margin-top:1.2rem;display:flex;justify-content:space-between}
.passions{margin-top:4rem}
.passions .label{margin-bottom:1.4rem;display:block}
.tags{display:flex;flex-wrap:wrap;gap:.6rem}
.tag{
  font-family:var(--sans);font-size:.6rem;font-weight:500;letter-spacing:.26em;text-transform:uppercase;
  color:var(--ink);border:1px solid var(--hair);padding:.55rem 1rem;transition:border-color .4s,color .4s;
}
.tag:hover{border-color:var(--rose);color:var(--rose-deep)}

/* ============ GALLERY ============ */
.gallery{background:var(--paper-dark)}
.gallery .ghost{bottom:-4rem;left:-3rem}
.gallery-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:3.5rem;position:relative;z-index:1}
.gallery-head h2{font-family:var(--serif);font-weight:300;font-size:clamp(2.4rem,4vw,3.6rem);line-height:1.1}
.gallery-head .aside{margin-top:.8rem}
.g-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:2rem;position:relative;z-index:1}
.g-item .cap{margin-top:1.1rem;display:flex;justify-content:space-between;align-items:baseline}
.g-item:nth-child(1){grid-column:1/6}
.g-item:nth-child(1) .ph{aspect-ratio:3/4}
.g-item:nth-child(2){grid-column:7/13;margin-top:5.5rem}
.g-item:nth-child(2) .ph{aspect-ratio:4/3}
.g-item:nth-child(3){grid-column:2/5;margin-top:2.5rem}
.g-item:nth-child(3) .ph{aspect-ratio:4/5}
.g-item:nth-child(4){grid-column:8/12;margin-top:4.5rem}
.g-item:nth-child(4) .ph{aspect-ratio:3/4}
.gallery-cta{margin-top:4rem;text-align:right;position:relative;z-index:1}

/* ============ FULL-BLEED STATEMENT ============ */
.statement{position:relative;min-height:92vh;overflow:hidden;display:flex;align-items:center;background:var(--char)}
.statement-media{position:absolute;inset:0}
.statement-media .ph{
  position:absolute;inset:0;
  background:
    radial-gradient(ellipse 62% 52% at 66% 40%,rgba(214,196,178,.16) 0%,rgba(214,196,178,0) 70%),
    linear-gradient(160deg,#332D26 0%,#241F1A 55%,#191612 100%);
}
.statement-media .ph::before{display:none}
.statement-media .ph::after{color:rgba(242,239,233,.24)}
.statement-media img{width:100%;height:100%;object-fit:cover}
.statement-scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(21,19,16,.5) 0%,rgba(21,19,16,.2) 42%,rgba(21,19,16,.72) 100%),
    radial-gradient(ellipse 85% 75% at 28% 52%,rgba(21,19,16,.5) 0%,rgba(21,19,16,0) 68%);
}
.statement-inner{position:relative;z-index:2;width:100%;padding:0 3rem}
.statement-inner .shell{display:flex;flex-direction:column;gap:1.5rem;max-width:1100px}
.statement-line{
  font-family:var(--serif);font-weight:300;font-size:clamp(2rem,4.6vw,4.2rem);line-height:1.14;
  letter-spacing:-.005em;color:var(--cream);max-width:15em;
}
.statement-line em{font-style:italic;color:var(--rose-dark)}

/* ============ DARK HALF ============ */
.dark{background:var(--char);color:var(--cream)}
.dark p.body,.dark .body{color:rgba(242,239,233,.88)}
.dark .label{color:var(--cream)}
.dark .label--quiet{color:var(--gray-dark)}
.dark .caption{color:var(--gray-dark)}
.dark .aside{color:var(--rose-dark)}
.dark .cta{color:var(--cream)}

/* ============ INVESTMENT ============ */
.invest .ghost{bottom:-5rem;left:-2rem}
.invest-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,1fr) minmax(0,8fr);position:relative;z-index:1}
.invest-intro h2{
  font-family:var(--serif);font-weight:300;font-style:italic;
  font-size:clamp(2.8rem,5vw,4.4rem);line-height:1.05;margin-bottom:2.4rem;
}
.invest-intro .body{font-size:1.02rem}
.invest-travel{margin-top:3.4rem;padding-top:2.2rem;border-top:1px solid var(--hair-dark)}
.invest-travel .aside{display:block;margin-bottom:.7rem}
.invest-travel p{font-size:.98rem;color:rgba(242,239,233,.75);font-weight:340}
.rate-cols{grid-column:3;display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5.5rem)}
.rate-col h3{
  font-family:var(--serif);font-style:italic;font-weight:340;font-size:1.5rem;color:var(--rose-dark);
  padding-bottom:1.3rem;margin-bottom:.4rem;border-bottom:1px solid var(--hair-dark);
}
.rate{display:flex;align-items:baseline;gap:1rem;padding:1.15rem 0}
.rate+.rate{border-top:1px solid rgba(242,239,233,.07)}
.rate .t{font-family:var(--serif);font-weight:340;font-size:1.02rem;white-space:nowrap}
.rate .leader{flex:1;border-bottom:1px dotted rgba(242,239,233,.22);transform:translateY(-.3em)}
.rate .v{font-family:var(--serif);font-weight:400;font-size:1.02rem;white-space:nowrap;font-variant-numeric:lining-nums tabular-nums}
.rate-note{margin-top:2rem;font-family:var(--serif);font-style:italic;font-size:.92rem;color:var(--gray-dark)}
.invest-cta{grid-column:3;margin-top:4.5rem;display:flex;justify-content:space-between;align-items:center}

/* ============ GALLERY FILMSTRIP ============ */
.filmstrip-wrap{position:relative;margin-top:1rem}
.filmstrip{
  display:flex;gap:1.4rem;
  overflow-x:auto;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  padding:0 3rem 1rem;
}
.filmstrip::-webkit-scrollbar{display:none}
.strip-item{
  flex:0 0 clamp(230px,21vw,330px);
  scroll-snap-align:start;margin:0;
}
.strip-item .ph{aspect-ratio:3/4}
.strip-item img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.strip-item figcaption{margin-top:.8rem}
.strip-btn{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:46px;height:46px;border-radius:50%;
  border:1px solid var(--hair);background:rgba(246,242,238,.92);
  color:var(--ink);font-size:1.05rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:border-color .4s,color .4s,opacity .4s;
}
.strip-btn:hover{border-color:var(--rose);color:var(--rose-deep)}
.strip-prev{left:1rem}
.strip-next{right:1rem}
.dark .strip-btn{background:rgba(21,19,16,.85);color:var(--cream);border-color:var(--hair-dark)}
@media (max-width:900px){
  .filmstrip{padding:0 1.5rem 1rem;gap:1rem}
  .strip-item{flex-basis:72vw}
  .strip-btn{display:none} /* touch swipes; arrows are desktop affordances */
}

/* ---- generic "section on image": photo behind any section, scrim keeps text clean ---- */
.section-media{position:absolute;inset:0;z-index:0}
.section-media .ph{position:absolute;inset:0}
.section-media .ph::before{display:none}
.section-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.section-media-scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(21,19,16,.68) 0%,rgba(21,19,16,.46) 50%,rgba(21,19,16,.72) 100%);
}
.has-media>.shell{position:relative;z-index:1}

/* ============ INVITATION ============ */
.invite{background:var(--char-2);text-align:left}
.invite .shell{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:end;gap:3rem}
.invite h2{font-family:var(--serif);font-weight:300;font-size:clamp(3.2rem,7vw,6.4rem);line-height:1.04;letter-spacing:-.015em}
.invite h2 em{font-style:italic;color:var(--rose-dark)}
.invite .body{margin-top:2.6rem;color:rgba(242,239,233,.8)}
.invite-cta{padding-bottom:.8rem;display:flex;justify-content:flex-end}

/* ============ NEWSLETTER ============ */
.dispatch{background:var(--char-2);padding-top:0}
.dispatch .shell{
  border-top:1px solid var(--hair-dark);padding-top:4.5rem;
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,2fr) minmax(0,5fr);align-items:center;
}
.dispatch h3{font-family:var(--serif);font-style:italic;font-weight:300;font-size:1.9rem;margin:.9rem 0 1rem}
.dispatch p{font-size:.95rem;color:rgba(242,239,233,.65);font-weight:340;max-width:26em}
.dispatch-signup{grid-column:3}
.dispatch form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem 2.5rem}
.dispatch form label{flex:1 0 100%}
.dispatch-done{font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--rose-dark);padding:.8rem 0}
.dispatch input{
  flex:1;background:none;border:0;outline:0;border-bottom:1px solid var(--hair-dark);padding:.8rem 0;
  font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--cream);transition:border-color .4s;
}
.dispatch input::placeholder{color:rgba(242,239,233,.35);font-style:italic}
.dispatch input:focus{border-color:var(--rose-dark)}
.dispatch button{background:none;border:0;cursor:pointer}
/* newsletter plugin form, restyled to match */
.dispatch-signup input[type=email]{
  width:100%;background:none;border:0;outline:0;border-bottom:1px solid var(--hair-dark);padding:.8rem 0;
  font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--cream);
}

/* ============ FOOTER ============ */
.site-footer{background:var(--char-2);color:var(--cream);padding:3rem}
.site-footer .shell{
  border-top:1px solid var(--hair-dark);padding-top:2.6rem;
  display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap;
}
.site-footer nav{display:flex;gap:2.2rem;flex-wrap:wrap}
.site-footer nav a{
  display:inline-block;padding:.9rem 0; /* touch target */
  font-family:var(--sans);font-size:.62rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;
  color:rgba(242,239,233,.6);text-decoration:none;transition:color .4s;
}
.site-footer nav a:hover{color:var(--rose-dark)}
.site-footer .fine{
  font-family:var(--sans);font-size:.58rem;font-weight:400;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(242,239,233,.32);
}

/* ============ INTERIOR PAGES ============ */
.page-hero{position:relative;padding:15rem 3rem 5rem;text-align:center;overflow:hidden}
.page-hero .eyebrow{display:block;margin-bottom:1.6rem}
.page-hero .ghost{top:auto;bottom:-3rem;left:50%;transform:translateX(-50%)}
.page-hero h1,.page-hero .wp-block-post-title{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(3rem,7vw,6rem);line-height:1;letter-spacing:-.015em;
  position:relative;z-index:1;
}
.page-hero .page-sub{margin-top:1.6rem;font-style:italic;font-size:1.3rem;color:var(--rose)}
.page-body{padding:0 3rem 8rem}
.page-body>.shell,.page-body .page-prose{max-width:820px;margin:0 auto}
.page-prose p{font-family:var(--serif);font-size:1.12rem;line-height:1.85;font-weight:340;margin-bottom:1.5rem;color:var(--ink)}
.page-prose h2{font-family:var(--serif);font-style:italic;font-weight:300;font-size:clamp(2rem,4vw,3rem);margin:3rem 0 1.4rem}

/* interior: full gallery grid */
.gallery-full{padding:2rem 3rem 8rem}
.gallery-full .g-grid2{
  display:grid;grid-template-columns:repeat(2,1fr);gap:2rem 2rem;max-width:1200px;margin:0 auto;position:relative;z-index:1;
}
.gallery-full .g-item:nth-child(odd){margin-top:0}
.gallery-full .g-item:nth-child(even){margin-top:4rem}
.gallery-full .g-item .ph{aspect-ratio:4/5}

/* interior: contact */
.contact-grid{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(2rem,6vw,6rem);
  max-width:1200px;margin:0 auto;align-items:start;
}
.contact-grid .frame .ph{aspect-ratio:3/4}
.contact-aside h2{font-family:var(--serif);font-style:italic;font-weight:300;font-size:clamp(2.2rem,4vw,3.4rem);line-height:1.1;margin-bottom:2rem}
.contact-aside .body{margin-bottom:2.4rem}
.contact-detail{padding:1.1rem 0;border-top:1px solid var(--hair);display:flex;justify-content:space-between;gap:1rem}
.contact-detail:last-child{border-bottom:1px solid var(--hair)}
.contact-detail .k{font-family:var(--sans);font-size:.62rem;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--gray)}
.contact-detail .v{font-family:var(--serif);font-size:1.02rem}
.contact-form label{display:block;font-family:var(--sans);font-size:.62rem;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--gray);margin:1.6rem 0 .5rem}
.contact-form input,.contact-form textarea{
  width:100%;background:none;border:0;outline:0;border-bottom:1px solid var(--hair);padding:.7rem 0;
  font-family:var(--serif);font-size:1.05rem;color:var(--ink);transition:border-color .4s;
}
.contact-form textarea{min-height:6rem;resize:vertical}
.contact-form input:focus,.contact-form textarea:focus{border-color:var(--rose)}
.contact-form .cta{margin-top:2.4rem;cursor:pointer;background:none;border:0}

@media (max-width:900px){
  .page-hero{padding:10rem 1.5rem 3rem}
  .page-body{padding:0 1.5rem 5rem}
  .gallery-full{padding:1rem 1.5rem 5rem}
  .gallery-full .g-grid2{grid-template-columns:1fr;gap:3rem}
  .gallery-full .g-item:nth-child(even){margin-top:0}
  .contact-grid{grid-template-columns:1fr;gap:3rem}
}

/* ============ AGE GATE ============ */
.age-gate{
  position:fixed;inset:0;z-index:1200;
  background:var(--char);color:var(--cream);
  display:flex;align-items:center;justify-content:center;text-align:center;
  padding:2rem;
  transition:opacity .6s ease;
}
/* optional photo background for the gate — drop an <img> into .age-gate-media */
.age-gate-media{position:absolute;inset:0}
.age-gate-media img{width:100%;height:100%;object-fit:cover;display:block}
.age-gate-media::after{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(21,19,16,.55) 0%,rgba(21,19,16,.4) 50%,rgba(21,19,16,.66) 100%),
    radial-gradient(ellipse 80% 70% at 50% 45%,rgba(21,19,16,.35) 0%,rgba(21,19,16,0) 70%);
}
.age-gate-inner{position:relative;z-index:1}
html.age-ok .age-gate{display:none}
html:not(.age-ok) body{overflow:hidden}
.age-gate.leaving{opacity:0;pointer-events:none}
.age-gate-inner{max-width:34em}
.age-gate-name{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2.6rem,6vw,4.6rem);line-height:1.05;
  margin:1.6rem 0 1.8rem;
}
.age-gate-name em{font-style:italic;color:var(--rose-dark)}
.age-gate-line{
  font-family:var(--serif);font-weight:340;font-size:1.05rem;line-height:1.7;
  color:rgba(242,239,233,.85);margin-bottom:2.6rem;
}
.age-gate-actions{display:flex;align-items:center;justify-content:center;gap:2.5rem}
.age-gate .cta{color:var(--cream);background:none;border:0;cursor:pointer}
.age-leave{
  font-family:var(--sans);font-size:.66rem;font-weight:500;
  letter-spacing:.3em;text-transform:uppercase;
  color:rgba(242,239,233,.5);text-decoration:none;transition:color .4s;
  padding:.7rem 0;
}
.age-leave:hover{color:var(--rose-dark)}

/* ============ GRAIN ============ */
.grain{
  position:fixed;inset:-50%;z-index:999;pointer-events:none;width:200%;height:200%;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity:.026;animation:grain 8s steps(10) infinite; /* whisper of texture — higher values gray out the cream */
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}10%{transform:translate(-2%,-3%)}20%{transform:translate(3%,2%)}
  30%{transform:translate(-4%,1%)}40%{transform:translate(2%,-4%)}50%{transform:translate(-1%,3%)}
  60%{transform:translate(4%,-2%)}70%{transform:translate(-3%,-1%)}80%{transform:translate(1%,4%)}90%{transform:translate(-2%,2%)}
}

/* ============ REVEALS ============ */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.16,1,.3,1)}
.js .reveal.in{opacity:1;transform:none}
/* images enter with a curtain wipe instead of a fade — editorial, not template */
.js .frame.reveal{opacity:1;transform:none;clip-path:inset(100% 0 0 0);transition:clip-path 1.25s cubic-bezier(.16,1,.3,1)}
.js .frame.reveal.in{clip-path:inset(0 0 0 0)}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none;clip-path:none !important}
  .grain{animation:none}
  .hero-name .sig{animation:none;-webkit-mask:none !important;mask:none !important}
}

/* ============ TONAL IMAGE TREATMENT (optional) ============ */
/* Add class "tone" to any image (or a wrapper) to pull uploaded photography
   into one cohesive near-B&W family — cohesion is what reads as art-directed */
.tone img,img.tone{filter:grayscale(1) sepia(.06) contrast(1.03)}

/* ============ EDITOR TWEAKS ============ */
/* keep the fixed header from covering the editor toolbar area */
.editor-styles-wrapper .site-header{position:relative}

/* ============ MOBILE ============ */
@media (max-width:900px){
  .section{padding:5.5rem 1.5rem}
  .site-header{padding:1.6rem 1.5rem}
  .hero{grid-template-columns:1fr;min-height:auto}
  .hero-left{padding:9rem 1.5rem 4rem}
  .hero-right{height:64vh;position:relative}
  .hero-right .ph{inset:0 0 0 0}
  .hero-right img{top:0;left:0;width:100%;height:100%}
  .hero-name .ln2{margin-left:.4em}
  .hero-scroll{display:none}
  .index-row{margin-bottom:3rem}
  .woman-grid{grid-template-columns:1fr;gap:3rem}
  .woman-copy{grid-column:1;padding-top:0}
  .g-grid{grid-template-columns:1fr;gap:3rem}
  .g-item{grid-column:1/-1 !important;margin-top:0 !important}
  .invest-grid{grid-template-columns:1fr;gap:4rem}
  .rate-cols{grid-column:1;grid-template-columns:1fr;gap:3.5rem}
  .invest-cta{grid-column:1;flex-direction:column;align-items:flex-start;gap:2rem}
  .invite .shell{grid-template-columns:1fr}
  .invite-cta{justify-content:flex-start}
  .dispatch .shell{grid-template-columns:minmax(0,1fr);gap:2.2rem}
  .dispatch-signup{grid-column:1;min-width:0}
  .dispatch form{width:100%;flex-direction:column;align-items:stretch;gap:1.4rem}
  .dispatch input{width:100%}
  .dispatch-form button{align-self:flex-start}
  .dispatch p{max-width:100%}
  .statement{min-height:80vh}
  .statement-inner{padding:0 1.5rem}
  .statement-line{font-size:clamp(1.8rem,7vw,2.6rem)}
  .site-footer .shell{flex-direction:column;align-items:flex-start}
}
