:root { --ink:#141414; --charcoal:#252525; --paper:#fff; --ivory:#fff; --line:rgba(20,20,20,.16); --light-line:rgba(255,255,255,.28); --accent:#dc2529; --sans:"Manrope",Arial,sans-serif; --serif:"Playfair Display",Georgia,serif; --mono:"DM Mono",monospace; --page-pad:clamp(1.25rem,4.25vw,5.7rem); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:var(--sans); font-size:16px; line-height:1.5; }
body.menu-open { overflow:hidden; }
img { display:block; width:100%; height:100%; object-fit:cover; }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; }
button { cursor:pointer; }
.page-padding { padding-left:var(--page-pad); padding-right:var(--page-pad); }
.section-space { padding-top:clamp(5.5rem,10vw,10.5rem); padding-bottom:clamp(5.5rem,10vw,10.5rem); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link { position:fixed; left:1rem; top:-4rem; z-index:1000; padding:.7rem 1rem; color:#fff; background:#000; transition:top .2s; }
.skip-link:focus { top:1rem; }
.eyebrow { margin:0 0 1.4rem; color:#464640; font-family:var(--mono); font-size:.75rem; font-weight:500; letter-spacing:.13em; line-height:1.3; text-transform:uppercase; }
.eyebrow--light { color:rgba(255,255,255,.78); }
.display-title { max-width:17ch; margin:0; font-size:clamp(2rem,3.15vw,3.6rem); font-weight:500; letter-spacing:-.058em; line-height:1.06; }
.display-title em { font-family:var(--serif); font-weight:500; letter-spacing:-.075em; }
.display-title--light { color:#fff; }
.button { display:inline-flex; align-items:center; justify-content:space-between; gap:2.6rem; min-height:3.4rem; padding:.8rem 1rem .8rem 1.2rem; border:1px solid transparent; font-size:.75rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; transition:background .3s,color .3s,border-color .3s,transform .3s; }
.button span { font-size:1rem; line-height:1; }
.button:hover { transform:translateY(-2px); }
.button--light { color:#171717; background:#fff; }
.button--light:hover { background:#eeeeee; }
.button--dark { color:#fff; background:var(--ink); }
.button--dark:hover { background:#444; }
.button--full { width:100%; }
.text-link { display:inline-flex; align-items:center; gap:.8rem; padding-bottom:.42rem; border-bottom:1px solid var(--ink); font-family:var(--mono); font-size:.75rem; font-weight:500; letter-spacing:.07em; text-transform:uppercase; transition:gap .25s; }
.text-link:hover { gap:1.2rem; }
.text-link--light { color:#fff; border-color:#fff; }

/* Header */
.site-header { position:fixed; top:0; left:0; z-index:50; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; width:100%; min-height:5.25rem; padding:0 var(--page-pad); color:#fff; border-bottom:1px solid transparent; transition:background .45s,color .45s,border-color .45s,transform .35s; }
.site-header.is-scrolled { color:var(--ink); background:rgba(255,255,255,.98); border-color:var(--line); }
.site-header.is-hidden { transform:translateY(-100%); }
.brand { display:flex; align-items:center; width:7.8rem; height:3.7rem; overflow:hidden; }
.brand-logo { display:block; width:100%; height:100%; object-fit:contain; object-position:center; }
.main-nav { display:flex; align-items:center; justify-content:center; gap:clamp(.8rem,1.5vw,1.8rem); }
.main-nav a { position:relative; padding:.4rem 0; font-family:var(--mono); font-size:.75rem; letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; }
.main-nav a::after { position:absolute; right:0; bottom:0; left:0; height:1px; background:currentColor; content:""; transform:scaleX(0); transform-origin:right; transition:transform .25s; }
.main-nav a:hover::after,.main-nav a.is-active::after { transform:scaleX(1); transform-origin:left; }
.header-cta { justify-self:end; display:inline-flex; gap:.7rem; align-items:center; font-family:var(--mono); font-size:.75rem; font-weight:500; letter-spacing:.06em; text-transform:uppercase; }
.menu-toggle { display:none; }
.menu-layer { position:fixed; z-index:120; inset:0; visibility:hidden; opacity:0; transition:visibility .24s ease,opacity .24s ease; }
.menu-layer.is-open { visibility:visible; opacity:1; }
.menu-layer__backdrop { position:absolute; inset:0; border:0; background:rgba(15,15,14,.48); }
.menu-layer__panel { position:relative; z-index:1; display:flex; flex-direction:column; width:min(28rem,calc(100vw - .7rem)); min-height:100%; margin-left:auto; padding:1.35rem clamp(1.3rem,5vw,2.5rem) 1.6rem; color:var(--ink); background:var(--paper); box-shadow:-1.5rem 0 4rem rgba(0,0,0,.18); transform:translateX(105%); transition:transform .28s cubic-bezier(.2,.8,.2,1); }
.menu-layer.is-open .menu-layer__panel { transform:none; }
.menu-layer__header { display:flex; align-items:center; justify-content:space-between; padding-bottom:1.25rem; border-bottom:1px solid var(--line); }
.menu-layer__label { color:#6d6b65; font-family:var(--mono); font-size:.64rem; letter-spacing:.13em; text-transform:uppercase; }
.menu-layer__close { display:grid; width:2.35rem; height:2.35rem; place-items:center; padding:0; color:var(--ink); border:1px solid var(--line); border-radius:50%; background:transparent; font:300 1.6rem/1 var(--serif); }
.menu-layer__intro { margin:1.6rem 0 1.25rem; color:#6d6b65; font-family:var(--serif); font-size:1.05rem; line-height:1.4; }
.menu-layer__links { display:grid; border-top:1px solid var(--line); }
.menu-layer__links a { display:flex; align-items:center; justify-content:space-between; min-height:3.2rem; border-bottom:1px solid var(--line); font-family:var(--serif); font-size:1.18rem; }
.menu-layer__links a span:last-child { color:var(--accent); font-family:var(--mono); font-size:.9rem; }
.menu-layer__links a.is-current { color:var(--accent); }
.menu-layer__footer { display:flex; justify-content:space-between; gap:1rem; margin-top:auto; padding-top:1.5rem; color:#6d6b65; font-family:var(--mono); font-size:.65rem; letter-spacing:.04em; }
.menu-layer__footer a { color:var(--ink); border-bottom:1px solid var(--ink); }

/* Hero */
.hero { position:relative; min-height:88svh; overflow:hidden; color:#fff; background:#383632; }
.hero__image,.final-cta__image { position:absolute; inset:0; background:center 47% / cover no-repeat; transform:scale(1.04); animation:hero-zoom 8s ease-out forwards; }
.hero__image { background-image:url("../assets/portfolio/wedding/wedding-34.jpg"); background-position:center 52%; }

.hero__image--video { overflow:hidden; background-image:none; background:#737776; }
.hero__video-frame { position:absolute; top:50%; left:50%; width:max(100%,156.45svh); height:max(100%,56.25vw); border:0; opacity:0; transform:translate(-50%,-50%); pointer-events:none; transition:opacity .55s ease; }
.hero__image--video.is-video-ready .hero__video-frame { opacity:1; }
.hero__veil { position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.47),rgba(0,0,0,.08) 60%,rgba(0,0,0,.27)),linear-gradient(0deg,rgba(0,0,0,.52),transparent 55%); }
.hero__content { position:relative; z-index:1; display:flex; flex-direction:column; justify-content:flex-end; min-height:88svh; padding-top:8rem; padding-bottom:clamp(6rem,10vh,7.4rem); }
.hero__eyebrow { margin-bottom:clamp(1.15rem,2vw,1.9rem); }
.hero__title { max-width:22ch; margin:0; font-size:clamp(1.95rem,2.65vw,3rem); font-weight:500; letter-spacing:-.058em; line-height:1.07; }
.hero__title em { font-family:var(--serif); font-weight:500; letter-spacing:-.07em; }
.hero__bottom { display:flex; align-items:center; justify-content:space-between; gap:2rem; max-width:67rem; margin-top:clamp(1.75rem,3vw,2.75rem); }
.hero__bottom > p { max-width:21rem; margin:0; font-size:clamp(.92rem,1.05vw,1rem); line-height:1.6; }
.hero__actions { display:flex; align-items:center; gap:2rem; }
.hero__location { position:absolute; z-index:1; right:var(--page-pad); bottom:1.75rem; margin:0; font-family:var(--mono); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; }
.hero__location span { margin:0 .45rem; color:var(--accent); }
.scroll-cue { position:absolute; bottom:1.55rem; left:var(--page-pad); z-index:1; display:grid; place-items:center; width:1.8rem; height:2.8rem; border:1px solid rgba(255,255,255,.5); border-radius:10rem; }
.scroll-cue span { width:1px; height:.72rem; background:#fff; animation:scroll-cue 1.9s infinite; }

/* Manifest */
.manifest { display:grid; grid-template-columns:minmax(16rem,.82fr) minmax(29rem,1.18fr); align-items:center; gap:clamp(3rem,8vw,10rem); min-height:55rem; }
.body-copy { max-width:31rem; margin:2.25rem 0; color:#4c4b47; font-size:clamp(1rem,1.25vw,1.17rem); line-height:1.7; }
.manifest__collage { position:relative; width:min(100%,47rem); min-height:40rem; justify-self:end; }
.collage-image { position:absolute; overflow:hidden; margin:0; background:#ddd; }
.collage-image img { transition:transform .7s cubic-bezier(.2,.8,.2,1); }
.manifest__collage:hover img { transform:scale(1.035); }
.collage-image--one { top:0; right:3%; width:61%; height:77%; }
.collage-image--two { bottom:0; left:0; z-index:1; width:42%; height:47%; border:10px solid var(--paper); }
.collage-image--three { right:0; bottom:1%; width:33%; height:31%; }

/* Photography & film */
.photo-film { overflow:hidden; padding-top:clamp(6.5rem,12vw,12rem); color:#fff; background:var(--ink); }
.photo-film__intro { display:flex; align-items:end; justify-content:space-between; padding-bottom:clamp(4rem,7vw,7.5rem); }
.photo-film__grid { display:grid; grid-template-columns:1fr 1fr; }
.discipline { position:relative; min-height:40rem; overflow:hidden; background:#222; }
.discipline__image, .discipline__video { position:absolute; inset:0; }
.discipline__image::after, .discipline__video::after { position:absolute; inset:0; pointer-events:none; background:linear-gradient(0deg,rgba(0,0,0,.73),transparent 55%); content:""; }
.discipline__image img { transition:transform .8s cubic-bezier(.2,.7,.2,1),filter .6s; filter:saturate(.78); }
.discipline:hover .discipline__image img { transform:scale(1.045); filter:saturate(1); }
.discipline__video { overflow:hidden; background:#111; }
.discipline__video iframe { position:absolute; top:50%; left:50%; width:max(100%,71.12rem); height:max(100%,40rem); border:0; transform:translate(-50%,-50%); pointer-events:none; }
.discipline__meta { position:absolute; right:clamp(1.25rem,4vw,5.6rem); bottom:clamp(1.5rem,4vw,4rem); left:clamp(1.25rem,4vw,5.6rem); display:flex; align-items:end; justify-content:space-between; gap:2rem; }
.discipline__meta .eyebrow { margin:0; }
.discipline__meta > p:last-child { margin:0; font-size:clamp(1.05rem,1.7vw,1.65rem); font-weight:500; letter-spacing:-.045em; line-height:1.16; text-align:right; }
.play-button { position:absolute; top:50%; left:50%; display:grid; place-items:center; width:5.4rem; height:5.4rem; padding:0; color:#fff; background:rgba(18,18,18,.2); border:1px solid rgba(255,255,255,.85); border-radius:50%; transform:translate(-50%,-50%); transition:background .3s,transform .3s; }
.play-button:hover { background:#fff; transform:translate(-50%,-50%) scale(1.08); }
.play-button span,.showreel__play > span { width:0; height:0; margin-left:.28rem; border-top:.42rem solid transparent; border-bottom:.42rem solid transparent; border-left:.62rem solid currentColor; }
.play-button:hover span { color:#111; }

/* Portfolio */
.section-heading { display:flex; align-items:end; justify-content:space-between; gap:3rem; margin-bottom:clamp(3rem,7vw,6.5rem); }
.section-heading__note { max-width:18rem; margin:0 0 .5rem; color:#5c5b56; font-size:.9rem; line-height:1.65; }
.section-heading__link { margin-bottom:.35rem; }
.portfolio-showcase { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(1rem,2vw,2rem); }
.portfolio-card { display:block; min-width:0; }
.portfolio-card__image { overflow:hidden; aspect-ratio:2 / 3; background:#e7e7e4; }
.portfolio-card__image img { object-fit:cover; transition:transform .7s cubic-bezier(.2,.8,.2,1); }
.portfolio-card:hover .portfolio-card__image img { transform:scale(1.018); }
.portfolio-card__meta { display:grid; grid-template-columns:auto 1fr auto; gap:.85rem; align-items:center; padding:1rem 0; border-bottom:1px solid var(--line); }
.portfolio-card__meta span,.portfolio-card__meta i { color:var(--accent); font-family:var(--mono); font-size:.58rem; font-style:normal; letter-spacing:.07em; }
.portfolio-card__meta b { font-family:var(--serif); font-size:clamp(1.2rem,1.65vw,1.7rem); font-weight:500; letter-spacing:-.035em; }
.centered-link { display:flex; justify-content:center; padding-top:clamp(3rem,6vw,6rem); }

/* Story gateways */
.story-gateways { padding:clamp(6rem,10vw,10rem) 0; color:var(--ink); background:#fff; }
.story-gateways__heading { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(18rem,.55fr); align-items:end; gap:clamp(3rem,8vw,9rem); margin-bottom:clamp(2.5rem,4.5vw,4.5rem); }
.story-gateways__intro { max-width:31rem; margin:0 0 .35rem; color:#5a5852; font-size:clamp(.96rem,1.15vw,1.08rem); line-height:1.7; }
.story-gateways__grid { display:grid; grid-template-columns:minmax(0,1.38fr) minmax(18rem,.62fr); grid-template-rows:repeat(2,minmax(18rem,21rem)); gap:clamp(.7rem,1vw,1rem); }
.story-card { position:relative; min-width:0; overflow:hidden; color:#fff; background:#1a1a1a; isolation:isolate; }
.story-card--wedding { grid-row:1 / 3; }
.story-card img { position:absolute; inset:0; z-index:-3; width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.8,.2,1),filter .6s ease; }
.story-card--wedding img { object-position:center center; }
.story-card--baptism img { object-position:center 31%; }
.story-card--civil img { object-position:center 30%; }
.story-card__shade { position:absolute; inset:0; z-index:-2; background:linear-gradient(180deg,rgba(0,0,0,.14) 5%,rgba(0,0,0,.08) 40%,rgba(0,0,0,.78) 100%); transition:background .45s ease; }
.story-card__index { position:absolute; top:clamp(1.15rem,2vw,1.7rem); left:clamp(1.15rem,2vw,1.7rem); font-family:var(--mono); font-size:.62rem; font-weight:500; letter-spacing:.11em; text-transform:uppercase; }
.story-card__arrow { position:absolute; top:clamp(1rem,1.8vw,1.5rem); right:clamp(1rem,1.8vw,1.5rem); display:grid; width:2.7rem; height:2.7rem; place-items:center; border:1px solid rgba(255,255,255,.65); border-radius:50%; font-size:1rem; transition:color .3s ease,background .3s ease,transform .3s ease; }
.story-card__content { position:absolute; right:clamp(1.25rem,2.2vw,2.1rem); bottom:clamp(1.35rem,2.4vw,2.25rem); left:clamp(1.25rem,2.2vw,2.1rem); }
.story-card h3 { margin:0 0 .7rem; font-size:clamp(2.25rem,3.7vw,4.5rem); font-weight:500; letter-spacing:-.065em; line-height:.92; }
.story-card:not(.story-card--wedding) h3 { font-size:clamp(2rem,2.65vw,3.15rem); }
.story-card p { max-width:31rem; margin:0; color:rgba(255,255,255,.9); font-size:clamp(.84rem,1vw,.98rem); line-height:1.55; }
.story-card:not(.story-card--wedding) p { max-width:20rem; }
.story-card__link { display:inline-block; margin-top:1.35rem; padding-bottom:.28rem; border-bottom:1px solid rgba(255,255,255,.8); font-family:var(--mono); font-size:.61rem; font-weight:500; letter-spacing:.09em; text-transform:uppercase; }
.story-card:hover img { transform:scale(1.035); filter:saturate(1.06); }
.story-card:hover .story-card__shade { background:linear-gradient(180deg,rgba(0,0,0,.1) 5%,rgba(0,0,0,.04) 38%,rgba(0,0,0,.7) 100%); }
.story-card:hover .story-card__arrow { color:#111; background:#fff; transform:rotate(8deg); }

/* Experience */
.experience { display:grid; grid-template-columns:1fr 1fr; gap:10vw; }
.experience__detail { padding-top:5.5rem; }
.experience__statement { max-width:35rem; margin:0 0 3.7rem; font-size:clamp(1.2rem,1.7vw,1.85rem); font-weight:500; letter-spacing:-.055em; line-height:1.28; }
.services-list { display:grid; grid-template-columns:repeat(2,1fr); margin:0 0 3.5rem; border-top:1px solid var(--line); }
.services-list span { padding:1.15rem 0; border-bottom:1px solid var(--line); font-size:clamp(.93rem,1.1vw,1.05rem); }
.services-list span:nth-child(odd) { padding-right:1rem; border-right:1px solid var(--line); }
.services-list span:nth-child(even) { padding-left:1rem; }

/* Showreel */
.showreel { position:relative; min-height:48rem; overflow:hidden; color:#fff; background:#202020; }
.showreel__visual { position:absolute; inset:0; }
.showreel__video { position:absolute; top:50%; left:50%; width:max(100%,85.34rem); height:max(100%,56.25vw); border:0; transform:translate(-50%,-50%); pointer-events:none; }
.showreel__shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.78),rgba(0,0,0,.08)),linear-gradient(0deg,rgba(0,0,0,.4),transparent 50%); }
.showreel__copy { position:relative; z-index:1; padding-top:clamp(7rem,12vw,12rem); }
.showreel__play { position:absolute; z-index:2; right:var(--page-pad); bottom:clamp(2.4rem,5vw,5.5rem); display:flex; align-items:center; gap:1rem; padding:.45rem 0; color:#fff; background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.8); }
.showreel__play i { font-family:var(--mono); font-size:.65rem; font-style:normal; letter-spacing:.08em; text-transform:uppercase; }

/* Packages */
.packages { background:var(--ivory); }
.packages__list { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.package { min-height:26rem; padding:1.5rem clamp(1.3rem,3.4vw,4.5rem) 2.3rem 0; border-bottom:1px solid var(--line); }
.package + .package { padding-left:clamp(1.3rem,3.4vw,4.5rem); border-left:1px solid var(--line); }
.package--featured { color:#fff; background:var(--ink); border-color:var(--ink); }
.package__index,.package__overline { margin:0 0 4.5rem; color:#66655d; font-family:var(--mono); font-size:.63rem; letter-spacing:.09em; text-transform:uppercase; }
.package--featured .package__index { margin-bottom:.8rem; color:#bbb8ad; }
.package__overline { color:#d3d0c7; }
.package h3 { margin:0 0 1.2rem; font-size:clamp(1.8rem,2.8vw,3.4rem); font-weight:500; letter-spacing:-.065em; line-height:1; }
.package > p:not(.package__index):not(.package__overline) { max-width:17rem; margin:0; color:#64635d; font-size:.9rem; line-height:1.65; }
.package--featured > p:not(.package__index):not(.package__overline) { color:#dedcd5; }
.package a { display:inline-flex; gap:.6rem; margin-top:3rem; padding-bottom:.35rem; border-bottom:1px solid currentColor; font-family:var(--mono); font-size:.63rem; letter-spacing:.08em; text-transform:uppercase; }

/* Availability */
.availability { display:grid; grid-template-columns:1.05fr .95fr; min-height:51rem; padding-top:0; padding-bottom:0; background:#fff; }
.availability__image { margin-left:calc(var(--page-pad) * -1); overflow:hidden; }
.availability__panel { padding:clamp(5rem,9vw,9rem) 0 clamp(5rem,9vw,8rem) clamp(3rem,7vw,8.5rem); }
.availability__intro { max-width:30rem; margin:1.3rem 0 .85rem; color:#53524d; font-size:.95rem; line-height:1.65; }
.availability__direct-contact { margin:0 0 2.25rem; color:#5d5b54; font-size:.88rem; }
.availability__direct-contact a { color:var(--ink); border-bottom:1px solid currentColor; font-weight:700; }
.availability-form { max-width:34rem; }
.availability-form label { display:block; color:#5c5a54; font-family:var(--mono); font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; }
.availability-form input,.availability-form select { width:100%; margin:.5rem 0 1.45rem; padding:.55rem 0 .7rem; color:var(--ink); background:transparent; border:0; border-bottom:1px solid rgba(19,19,19,.42); border-radius:0; outline:none; font-family:var(--sans); font-size:.98rem; letter-spacing:0; text-transform:none; transition:border-color .2s; }
.availability-form input::placeholder { color:#8d8b84; }
.availability-form input:focus,.availability-form select:focus { border-color:var(--ink); }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.8rem; }
.form-message { min-height:1.5rem; margin:.8rem 0 0; color:#333; font-size:.85rem; }
.form-message.is-error { color:#8f171b; }
.form-message.is-success { color:#1d5d3b; }
.availability-form button:disabled { cursor:wait; opacity:.62; transform:none; }
.availability-consent { display:flex !important; align-items:flex-start; gap:.7rem; margin:.15rem 0 1.35rem; color:#5c5a54 !important; font-family:var(--sans) !important; font-size:.78rem !important; letter-spacing:0 !important; line-height:1.5; text-transform:none !important; }
.availability-consent input { flex:0 0 auto; width:1rem !important; height:1rem; margin:.18rem 0 0 !important; accent-color:var(--ink); }
.availability-consent a { color:var(--ink); border-bottom:1px solid currentColor; }
.hp-field { position:absolute !important; left:-10000px !important; width:1px !important; height:1px !important; overflow:hidden !important; }

/* Testimonials */
.testimonials { display:grid; grid-template-columns:.85fr 1.15fr; gap:10vw; }
.testimonials__heading { padding-top:.5rem; }
.testimonials__list { border-top:1px solid var(--line); }
.testimonial { margin:0; padding:clamp(2rem,4vw,3.8rem) 0; border-bottom:1px solid var(--line); }
.testimonial p { max-width:41rem; margin:0 0 1.7rem; font-size:clamp(1.05rem,1.4vw,1.45rem); font-weight:500; letter-spacing:-.04em; line-height:1.42; }
.testimonial footer { color:#5f5e58; font-family:var(--mono); font-size:.63rem; letter-spacing:.07em; text-transform:uppercase; }
.testimonial footer span { margin-left:.3rem; color:#898780; }

/* Final CTA & footer */
.final-cta { position:relative; min-height:42rem; overflow:hidden; color:#fff; background:#262626; }
.final-cta__image { background-image:url("../assets/home/final-cta-am.jpg"); background-position:center 46%; }
.final-cta__shade { position:absolute; inset:0; background:rgba(0,0,0,.42); }
.final-cta__content { position:relative; z-index:1; padding-top:clamp(8rem,14vw,13rem); }
.final-cta h2 { max-width:14ch; margin:0 0 2.5rem; font-size:clamp(2.35rem,4.1vw,4.65rem); font-weight:500; letter-spacing:-.068em; line-height:.96; text-transform:uppercase; }
.site-footer { padding-top:clamp(3.5rem,6vw,6rem); padding-bottom:2rem; color:#ebeae5; background:#151515; }
.footer__top { display:grid; grid-template-columns:1fr 1fr 1fr; align-items:start; padding-bottom:5.5rem; }
.footer__top .brand { width:10rem; height:4.8rem; }
.footer__top > p { max-width:12rem; margin:0; color:#c7c5bd; font-size:.88rem; }
.footer__social { justify-self:end; display:flex; gap:1.5rem; }
.footer__social a,.footer__nav a,.footer__bottom a { font-family:var(--mono); font-size:.63rem; letter-spacing:.08em; text-transform:uppercase; }
.footer__social a:hover,.footer__nav a:hover,.footer__bottom a:hover { color:var(--accent); }
.footer__nav { display:grid; grid-template-columns:repeat(6,1fr); gap:1rem; padding-bottom:4rem; }
.footer__bottom { display:flex; justify-content:space-between; gap:2rem; padding-top:1.6rem; border-top:1px solid rgba(255,255,255,.18); color:#aaa8a1; }
.footer__bottom p { margin:0; font-family:var(--mono); font-size:.58rem; letter-spacing:.06em; text-transform:uppercase; }
.footer__bottom > div { display:flex; flex-wrap:wrap; justify-content:end; gap:1.4rem; }

/* Dialog */
.film-dialog { width:min(85vw,68rem); padding:0; color:#fff; background:#171717; border:1px solid rgba(255,255,255,.3); }
.film-dialog::backdrop { background:rgba(0,0,0,.84); backdrop-filter:blur(5px); }
.film-dialog__frame { position:relative; aspect-ratio:16 / 9; min-height:0; overflow:hidden; border:1px solid rgba(255,255,255,.2); background:#000; }
.film-dialog__frame iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
.film-dialog__close { position:absolute; top:1rem; right:1rem; z-index:1; width:2.3rem; height:2.3rem; color:#fff; background:transparent; border:1px solid rgba(255,255,255,.55); border-radius:50%; font-size:1.5rem; line-height:1; }

/* Placeholder pages */
.coming-page { min-height:100svh; color:#f6f5f1; background:#171717; }
.coming-page__main { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-height:100svh; padding:clamp(1.5rem,4vw,4rem) var(--page-pad); overflow:hidden; }
.coming-page__main::before { position:absolute; inset:0; z-index:0; background:linear-gradient(90deg,rgba(12,12,12,.9),rgba(12,12,12,.62)),url("../assets/portfolio/wedding/wedding-34.jpg") center / cover; content:""; filter:grayscale(.25); }
.coming-page__main > * { position:relative; z-index:1; }
.coming-page__logo { display:block; width:clamp(9rem,14vw,13rem); height:clamp(4.2rem,7vw,6.5rem); }
.coming-page__logo img { width:100%; height:100%; object-fit:contain; }
.coming-page__copy { max-width:49rem; margin:auto 0; padding:4rem 0; }
.coming-page__copy h1 { max-width:12ch; margin:0; font-size:clamp(3rem,7vw,7rem); font-weight:500; letter-spacing:-.08em; line-height:.9; text-transform:uppercase; }
.coming-page__copy h1 em { font-family:var(--serif); font-weight:500; letter-spacing:-.07em; text-transform:none; }
.coming-page__copy > p:not(.eyebrow) { max-width:32rem; margin:2rem 0; color:#dedcd5; font-size:clamp(.96rem,1.25vw,1.15rem); line-height:1.7; }
.coming-page__email { display:inline-flex; gap:1rem; align-items:center; padding-bottom:.45rem; color:#fff; border-bottom:1px solid var(--accent); font-family:var(--mono); font-size:.85rem; letter-spacing:.06em; }
.coming-page__email span { color:var(--accent); font-size:1rem; }
.coming-page__back { align-self:flex-start; color:#e8e7e1; font-family:var(--mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.coming-page__back span { margin-left:.5rem; color:var(--accent); }

/* Motion */
.animate-up { animation:fade-up .8s both; }
.hero__title { animation-delay:.13s; }
.hero__bottom { animation-delay:.25s; }
.reveal { opacity:0; transform:translateY(1.8rem); transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1); }
.reveal.is-visible { opacity:1; transform:none; }
@keyframes fade-up { from { opacity:0; transform:translateY(1.3rem); } to { opacity:1; transform:none; } }
@keyframes hero-zoom { from { transform:scale(1.08); } to { transform:scale(1.02); } }
@keyframes scroll-cue { 0%,100% { transform:translateY(-.25rem); opacity:0; } 45% { opacity:1; } 70% { transform:translateY(.4rem); opacity:1; } }

@media (max-width: 900px) {
  .story-gateways__heading { grid-template-columns:1fr; gap:1.7rem; }
  .story-gateways__intro { max-width:37rem; }
  .story-gateways__grid { grid-template-columns:1fr; grid-template-rows:none; }
  .story-card,.story-card--wedding { grid-row:auto; min-height:31rem; }
  .story-card--wedding { min-height:39rem; }
  .site-header { grid-template-columns:1fr auto; min-height:4.7rem; }
  .menu-toggle { position:relative; z-index:2; display:grid; gap:.35rem; width:2.25rem; padding:.45rem 0 .45rem .65rem; color:currentColor; background:none; border:0; }
  .menu-toggle__line { width:1.55rem; height:1px; background:currentColor; transition:transform .25s; }
  .menu-toggle[aria-expanded="true"] .menu-toggle__line:first-child { transform:translateY(3px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] .menu-toggle__line:last-child { transform:translateY(-3px) rotate(-45deg); }
  .main-nav { display:none; }
  .menu-layer__panel { overflow-y:auto; }
  .header-cta { display:none; }
  .manifest { grid-template-columns:1fr; min-height:0; }
  .manifest__collage { width:100%; max-width:43rem; min-height:33rem; justify-self:start; }
  .discipline { min-height:36rem; }
  .portfolio-showcase { gap:1rem; }
  .event-row { grid-template-columns:.6fr 2.2fr 1.4fr; }
  .event-row__link { display:none; }
  .experience { gap:6vw; }
  .availability { grid-template-columns:.9fr 1.1fr; min-height:0; }
  .availability__panel { padding-left:clamp(2rem,5vw,4rem); }
  .footer__nav { grid-template-columns:repeat(3,1fr); row-gap:1.2rem; }
}

@media (max-width: 640px) {
  .story-gateways { padding-top:5.5rem; padding-bottom:5.5rem; }
  .story-gateways__heading { margin-bottom:2.1rem; }
  .story-gateways__grid { gap:.65rem; }
  .story-card,.story-card--wedding { min-height:27rem; }
  .story-card--wedding { min-height:31rem; }
  .story-card h3,.story-card:not(.story-card--wedding) h3 { font-size:clamp(2.15rem,10.5vw,3rem); }
  .story-card__link { margin-top:1rem; }
  .story-card__arrow { width:2.45rem; height:2.45rem; }
  .hero__image { background-position:center 50%; }

  .section-space { padding-top:5.5rem; padding-bottom:5.5rem; }
  .display-title { font-size:clamp(2rem,8.7vw,2.65rem); }
  .hero { min-height:42rem; }
  .hero__content { min-height:42rem; padding-bottom:5rem; }
  .hero__title { font-size:clamp(1.85rem,7.8vw,2.3rem); line-height:1.1; }
  .hero__bottom { display:block; margin-top:1.8rem; }
  .hero__bottom > p { max-width:20rem; font-size:.88rem; }
  .hero__actions { gap:1.2rem; margin-top:1.6rem; }
  .hero__location { right:auto; left:var(--page-pad); bottom:1.25rem; font-size:.51rem; }
  .scroll-cue { display:none; }
  .manifest__collage { min-height:25rem; }
  .collage-image--one { width:65%; height:76%; }
  .collage-image--two { width:47%; height:48%; border-width:6px; }
  .collage-image--three { width:29%; height:30%; }
  .photo-film__intro { display:block; }
  .photo-film__grid { grid-template-columns:1fr; }
  .discipline { min-height:31rem; }
  .discipline__meta { align-items:start; flex-direction:column; gap:1rem; }
  .discipline__meta > p:last-child { text-align:left; }
  .section-heading { display:block; margin-bottom:2.8rem; }
  .section-heading__note { margin-top:1.6rem; }
  .section-heading__link { margin-top:1.8rem; }
  .portfolio-showcase { grid-template-columns:1fr; gap:2.3rem; }
  .portfolio-card__meta { padding-top:.85rem; }
  .event-row { grid-template-columns:2.3rem 1fr; min-height:8.2rem; gap:.6rem; }
  .event-row h3 { font-size:clamp(2rem,9.2vw,2.75rem); }
  .event-row p { grid-column:2; font-size:.76rem; }
  .experience { grid-template-columns:1fr; gap:0; }
  .experience__detail { padding-top:2.2rem; }
  .experience__statement { font-size:1.5rem; }
  .showreel { min-height:40rem; }
  .showreel__copy { padding-top:7rem; }
  .showreel__play { right:auto; bottom:2.2rem; left:var(--page-pad); }
  .packages__list { grid-template-columns:1fr; }
  .package,.package + .package { min-height:0; padding:2.2rem 0; border-left:0; }
  .package__index,.package__overline { margin-bottom:2rem; }
  .package--featured { margin:0 calc(var(--page-pad) * -1); padding:2.5rem var(--page-pad) !important; }
  .availability { display:block; margin:0; padding:0; }
  .availability__image { height:25rem; margin:0; }
  .availability__panel { padding:4.5rem var(--page-pad) 5rem; }
  .form-grid { gap:1.1rem; }
  .availability-form .form-grid { grid-template-columns:1fr; gap:0; }
  .testimonials { grid-template-columns:1fr; gap:3.2rem; }
  .testimonial p { font-size:1.2rem; }
  .final-cta { min-height:35rem; }
  .final-cta__content { padding-top:7rem; }
  .footer__top { grid-template-columns:1fr; gap:1.8rem; padding-bottom:3.5rem; }
  .footer__social { justify-self:start; }
  .footer__nav { grid-template-columns:repeat(2,1fr); padding-bottom:3rem; }
  .footer__bottom { display:block; }
  .footer__bottom > div { justify-content:start; gap:1.1rem; margin-top:1.2rem; }
  .coming-page__main { padding-top:1.15rem; padding-bottom:1.8rem; }
  .coming-page__copy { margin:auto 0; }
}

@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; } .reveal { opacity:1; transform:none; } }

@media (prefers-reduced-motion: reduce) { .hero__video-frame { display:none !important; } }

.availability__actions { display:flex; align-items:center; flex-wrap:wrap; gap:1.25rem 1.75rem; margin-top:2.2rem; }
@media (max-width:640px) { .availability__actions { align-items:flex-start; flex-direction:column; } }

/* UPDATE 31 — chapter hub redesign */
.chapter-hub {
  padding: clamp(5.5rem, 9vw, 9rem) 0;
  background: linear-gradient(180deg, #f8f6f1 0%, #ffffff 100%);
  color: var(--ink);
}
.chapter-hub__intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(18rem, .9fr);
  gap: clamp(2rem, 5vw, 6rem);
  align-items: end;
  margin-bottom: clamp(2rem, 4vw, 3.5rem);
}
.chapter-hub__text {
  max-width: 34rem;
  margin: 0;
  color: #605d57;
  font-size: clamp(.98rem, 1.08vw, 1.08rem);
  line-height: 1.75;
}
.chapter-hub__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 1.3vw, 1.2rem);
}
.chapter-card {
  position: relative;
  overflow: hidden;
  min-height: clamp(20rem, 31vw, 28rem);
  color: #fff;
  background: #121212;
  isolation: isolate;
  border-radius: 1.2rem;
  box-shadow: 0 18px 40px rgba(17, 17, 17, .08);
}
.chapter-card img {
  position: absolute;
  inset: 0;
  z-index: -3;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .7s cubic-bezier(.2,.8,.2,1), filter .35s ease;
}
.chapter-card__overlay {
  position: absolute;
  inset: 0;
  z-index: -2;
  background: linear-gradient(180deg, rgba(0,0,0,.08) 0%, rgba(0,0,0,.18) 32%, rgba(0,0,0,.82) 100%);
}
.chapter-card__index {
  position: absolute;
  top: 1.25rem;
  left: 1.25rem;
  font-family: var(--mono);
  font-size: .62rem;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: rgba(255,255,255,.88);
}
.chapter-card__content {
  position: absolute;
  right: 1.4rem;
  bottom: 1.35rem;
  left: 1.4rem;
}
.chapter-card__content h3 {
  margin: 0 0 .65rem;
  font-size: clamp(2.15rem, 3.3vw, 3.65rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: .95;
}
.chapter-card__content p {
  max-width: 31rem;
  margin: 0;
  color: rgba(255,255,255,.9);
  font-size: clamp(.9rem, 1vw, .98rem);
  line-height: 1.62;
}
.chapter-card__cta {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 1.15rem;
  padding-bottom: .28rem;
  border-bottom: 1px solid rgba(255,255,255,.78);
  font-family: var(--mono);
  font-size: .62rem;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.chapter-card:hover img {
  transform: scale(1.035);
  filter: saturate(1.03);
}
.chapter-card:hover .chapter-card__cta i {
  transform: translate(.15rem, -.12rem);
}
.chapter-card__cta i {
  display: inline-block;
  transition: transform .25s ease;
}
@media (max-width: 960px) {
  .chapter-hub__intro { grid-template-columns: 1fr; }
  .chapter-hub__grid { grid-template-columns: 1fr; }
  .chapter-card { min-height: 22rem; }
}
@media (max-width: 640px) {
  .chapter-hub { padding-top: 4.8rem; padding-bottom: 4.8rem; }
  .chapter-card { min-height: 19.5rem; border-radius: 1rem; }
  .chapter-card__content { right: 1rem; bottom: 1rem; left: 1rem; }
  .chapter-card__content h3 { font-size: clamp(2rem, 11vw, 2.8rem); }
}

/* UPDATE 32 — keep directional icons as text, never iOS emoji */
.portfolio-card__meta i,
.chapter-card__cta i,
.header-cta span,
.button span,
.text-link span,
.package a span {
  font-family:Arial, Helvetica, sans-serif;
  font-style:normal;
  font-variant-emoji:text;
}

/* UPDATE 32 — CSS arrows, so iOS cannot turn them into blue emoji buttons */
.story-card__arrow { font-size:0; color:#fff; }
.story-card__arrow::before,
.chapter-card__cta i::before {
  content:"";
  display:block;
  width:.55rem;
  height:.55rem;
  border-top:1.5px solid currentColor;
  border-right:1.5px solid currentColor;
}
.story-card__arrow::after,
.chapter-card__cta i::after {
  content:"";
  position:absolute;
  width:.78rem;
  height:1.5px;
  background:currentColor;
  transform:rotate(-45deg);
  transform-origin:right center;
}
.story-card__arrow::before { transform:translate(.08rem,-.08rem); }
.story-card__arrow::after { top:50%; left:50%; transform:translate(-48%,-50%) rotate(-45deg); }
.chapter-card__cta i { position:relative; display:inline-grid; width:.85rem; height:.85rem; place-items:center; font-size:0; }
.chapter-card__cta i::before { transform:translate(.08rem,-.08rem); }
.chapter-card__cta i::after { top:50%; left:50%; transform:translate(-50%,-50%) rotate(-45deg); }
