/* ===== Ella May Photography — elegant editorial (referencing live site) ===== */
:root{
  --ink:#2b2a28;
  --bg:#ffffff;
  --warm:#faf8f5;
  --soft:#f3f1ec;
  --muted:#8c8782;
  --line:#e2ded8;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Jost",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --maxw:1280px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);font-weight:300;color:var(--ink);background:var(--bg);line-height:1.75;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.container{max-width:var(--maxw);margin:0 auto;padding:0 40px}
.section{padding:120px 0}
p{text-wrap:pretty}

/* type */
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.12;letter-spacing:.005em}
.display{font-family:var(--serif);font-weight:500;line-height:1}
.script{font-style:italic}
.label{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.28em;font-size:.72rem;color:var(--ink);display:inline-block;padding-bottom:14px;margin-bottom:26px;border-bottom:1px solid var(--line)}
.lede{font-size:1.02rem;color:var(--muted);font-weight:300;max-width:620px}
.center{text-align:center}
.center .lede,.center .label{margin-left:auto;margin-right:auto}
.center .label{display:block;width:fit-content}

/* links / buttons */
.link{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.24em;font-size:.74rem;display:inline-block;padding-bottom:4px;border-bottom:1px solid currentColor;transition:opacity .2s}
.link:hover{opacity:.55}
.btn{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.22em;font-size:.74rem;padding:15px 34px;border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;transition:all .25s;display:inline-block}
.btn:hover{background:var(--ink);color:#fff}
.btn-light{border-color:rgba(255,255,255,.7);color:#fff}
.btn-light:hover{background:#fff;color:var(--ink);border-color:#fff}

/* nav */
.nav{position:absolute;top:0;left:0;right:0;z-index:40}
.nav.solid{position:sticky;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav .container{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:92px}
.nav .container>.nav-toggle{grid-column:1;justify-self:start}
.nav .container>.brand-mark{grid-column:2;justify-self:center;text-align:center}
.nav .container>.nav-right{grid-column:3;justify-self:end}
.nav-toggle{background:none;border:0;cursor:pointer;display:flex;flex-direction:column;gap:5px;width:30px;z-index:60;color:inherit;-webkit-appearance:none;appearance:none}
.nav.solid .nav-toggle{color:var(--ink)}
.nav-toggle span{height:1.5px;width:100%;background:currentColor;transition:.3s}
.brand-mark{font-family:var(--serif);font-weight:500;font-size:1.45rem;letter-spacing:.04em;display:inline-flex;align-items:center}
/* logo (black or white SVG chosen to suit its background) */
.brand-logo{display:block;height:auto}
.nav .brand-logo{width:150px}
.footer .brand-logo{width:190px;margin:0 auto}
.hero-logo{width:min(370px,60vw);margin-bottom:10px}
.nav-right{display:flex;gap:26px}
.nav-right a{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.18em;font-size:.7rem;transition:opacity .2s}
.nav-right a:hover{opacity:.55}
.nav.on-dark{color:#fff}
.nav.on-dark .brand-mark{display:none}
.nav.on-dark .nav-toggle span{background:#fff}
.nav.on-dark .nav-toggle{filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}

/* overlay menu */
.menu{position:fixed;inset:0;background:var(--warm);z-index:55;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;opacity:0;visibility:hidden;transition:opacity .35s}
.menu.open{opacity:1;visibility:visible}
.menu a{font-family:var(--serif);font-weight:500;font-size:2.4rem;color:var(--ink);padding:6px 0;transition:opacity .2s}
.menu a:hover{opacity:.5;font-style:italic}
.menu .sub-link{font-family:var(--sans);font-weight:300;font-size:.95rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.menu-close{position:absolute;top:32px;right:42px;background:none;border:0;font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;font-size:.78rem;cursor:pointer}

/* hero splash */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;color:#fff;overflow:hidden;background:#111}
.hero-bg{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.32),rgba(0,0,0,.12) 55%,rgba(0,0,0,.28))}
.hero .container{position:relative;z-index:2;width:100%}
.hero-inner{max-width:560px}
.hero .display{font-size:clamp(3.4rem,8vw,6.4rem);margin-bottom:-0.16em}
.hero .tag-sub{font-family:var(--sans);font-weight:300;text-transform:uppercase;letter-spacing:.42em;font-size:clamp(0.415rem,0.975vw,0.78rem);margin-top:0;padding-left:6px}
.hero p.tagline{font-weight:300;font-size:1.02rem;line-height:1.85;margin:34px 0 34px;max-width:380px;color:#f0eeea}
.hero.center .hero-inner{margin:0 auto;text-align:center}

/* page hero (smaller) */
.phero{position:relative;min-height:62vh;display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:#111}
.phero .display{font-size:clamp(2.6rem,6vw,4.6rem);position:relative;z-index:2}
.phero .container{position:relative;z-index:2;width:100%;padding-bottom:64px}
.phero .hero-bg::after{background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.5))}
/* lifestyle hub: the wide desktop hero crops the subjects out on mobile, so use a centred crop there */
@media(max-width:700px){#lifestyleHeroBg{background-image:url('images/lifestyle-hero-mobile.jpg')!important;background-position:center}}

/* split (about / approach) */
.split{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.split.text-first{grid-template-columns:1fr 1.05fr}
.split h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin-bottom:26px}
.split .lede{margin-bottom:18px;max-width:none}
.split .media{aspect-ratio:4/5;background:var(--soft);overflow:hidden}
.split .media img{width:100%;height:100%;object-fit:cover}

/* category cards */
.cats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.cat{position:relative;display:block;aspect-ratio:3/4;overflow:hidden;background:var(--soft)}
.cat img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease}
.cat:hover img{transform:scale(1.05)}
.cat::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 50%,rgba(0,0,0,.5))}
.cat .cap{position:absolute;left:0;right:0;bottom:0;z-index:2;text-align:center;color:#fff;padding:26px}
.cat .cap h3{font-size:1.7rem}
.cat .cap span{font-family:var(--sans);font-weight:300;text-transform:uppercase;letter-spacing:.24em;font-size:.66rem;opacity:.85}

.collections{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.cat .cap .client{font-size:1.9rem}
@media(max-width:900px){.collections{grid-template-columns:1fr 1fr}}
/* stack every hub's sub-category cards one on top of the other on mobile (overrides inline 2-col) */
@media(max-width:640px){.collections{grid-template-columns:1fr!important}}

/* reel wall (vertical films) */
.reel-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.reel{position:relative;aspect-ratio:9/16;overflow:hidden;background:#111}
.reel video{width:100%;height:100%;object-fit:cover;display:block}
.reel-sound{position:absolute;bottom:12px;right:12px;z-index:2;background:rgba(20,18,16,.55);color:#fff;border:1px solid rgba(255,255,255,.5);font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.14em;font-size:.6rem;padding:6px 10px;cursor:pointer;transition:background .2s}
.reel-sound:hover,.reel-sound.on{background:var(--ink);border-color:var(--ink)}
@media(max-width:900px){.reel-wall{grid-template-columns:1fr 1fr;gap:12px}}

/* masonry gallery */
.gallery{column-count:3;column-gap:18px}
.gallery img{width:100%;margin-bottom:18px;background:var(--soft);cursor:zoom-in}

/* investment / tiers */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tier{border:1px solid var(--line);padding:44px 34px;text-align:center;display:flex;flex-direction:column}
.tier h3{font-size:1.8rem;margin-bottom:8px}
.tier .price{font-family:var(--sans);font-weight:300;font-size:1.1rem;letter-spacing:.05em;color:var(--muted);margin-bottom:24px}
.tier ul{list-style:none;margin:0 0 30px;display:flex;flex-direction:column;gap:12px}
.tier li{font-family:var(--sans);font-weight:300;font-size:.92rem;color:var(--muted)}
.tier .link{margin-top:auto;align-self:center}

/* reviews / testimonials */
.reviews{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:1000px;margin:0 auto;text-align:left}
.review{border:1px solid var(--line);padding:36px 34px;background:#fff;display:flex;flex-direction:column}
.review .stars{color:#c9a24a;letter-spacing:3px;font-size:.95rem;margin-bottom:16px}
.review p{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.2rem;line-height:1.5;color:var(--ink);margin-bottom:22px}
.review .by{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.18em;font-size:.7rem;color:var(--muted);margin-top:auto}
@media(max-width:760px){.reviews{grid-template-columns:1fr}}

/* explore / internal links */
.explore{display:flex;flex-wrap:wrap;gap:14px 28px;justify-content:center;margin-top:8px;max-width:760px;margin-left:auto;margin-right:auto}
.explore a{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.2em;font-size:.72rem;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:4px;transition:color .2s,border-color .2s}
.explore a:hover{color:var(--ink);border-color:var(--ink)}

/* quote */
.quote{max-width:780px;margin:0 auto;text-align:center}
.quote p{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.7rem;line-height:1.5;color:var(--ink)}
.quote .by{font-family:var(--sans);font-weight:300;text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;color:var(--muted);margin-top:26px}

/* form */
.form{max-width:620px;margin:0 auto;display:grid;gap:20px;text-align:left}
.form label{font-family:var(--sans);font-weight:400;text-transform:uppercase;letter-spacing:.18em;font-size:.68rem;color:var(--muted);display:block;margin-bottom:8px}
.form input,.form textarea,.form select{width:100%;padding:13px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;font:inherit;font-size:1rem;color:var(--ink)}
.form input:focus,.form textarea:focus,.form select:focus{outline:none;border-color:var(--ink)}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:20px}

/* footer */
.footer{background:var(--warm);border-top:1px solid var(--line);padding:60px 0;text-align:center}
.footer .brand-mark{display:inline-block;margin-bottom:16px}
.footer .fsocial{display:flex;gap:26px;justify-content:center;margin-bottom:22px}
.footer .fsocial a{font-family:var(--sans);font-weight:300;text-transform:uppercase;letter-spacing:.18em;font-size:.7rem;color:var(--muted)}
.footer .fsocial a:hover{color:var(--ink)}
.footer small{font-family:var(--sans);font-weight:300;font-size:.72rem;color:var(--muted);letter-spacing:.05em}
.footer small a{border-bottom:1px solid var(--line)}

/* responsive */
@media(max-width:900px){
  .section{padding:80px 0}
  .container{padding:0 26px}
  .split{grid-template-columns:1fr;gap:36px}
  .split.text-first{grid-template-columns:1fr}
  .split .media{aspect-ratio:4/5;max-height:70vh}
  .cats{grid-template-columns:1fr 1fr}
  .gallery{column-count:2}
  .tiers{grid-template-columns:1fr}
  .nav-right{display:none}
  .menu a{font-size:1.9rem}
}
@media(max-width:540px){
  .cats{grid-template-columns:1fr}
  .gallery{column-count:1}
  .form .row{grid-template-columns:1fr}
}
/* mobile home hero — keep the lockup in the empty top area, clear of subjects */
@media(max-width:680px){
  .hero{align-items:flex-start}
  .hero .container{padding-top:22vh;padding-bottom:40px}
  .hero-inner{max-width:none}
  .hero-bg::after{background:linear-gradient(180deg,rgba(0,0,0,.6),rgba(0,0,0,.15) 46%,rgba(0,0,0,.3))}
  .hero-logo{width:min(270px,66vw);margin-bottom:6px}
  .hero p.tagline{font-size:.95rem;line-height:1.7;margin:18px 0 22px;max-width:330px}
}
