:root {
  --ink: #0a0a09;
  --paper: #f1eee7;
  --ivory: #e9e3d8;
  --gold: #b79a62;
  --muted: #8e887e;
  --line: rgba(20, 20, 18, .18);
  --serif: "Cormorant Garamond", Georgia, serif;
  --sans: "Manrope", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-weight: 400; overflow-x: hidden; }
body.menu-open, body.modal-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
img { display: block; width: 100%; }

.noise { position: fixed; inset: 0; pointer-events: none; z-index: 1000; opacity: .035; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E"); }
.cursor-dot, .cursor-ring { position: fixed; border-radius: 50%; pointer-events: none; z-index: 1100; transform: translate(-50%, -50%); display: none; }
@media (pointer:fine) {
  .cursor-dot { display:block; width:5px; height:5px; background:var(--gold); }
  .cursor-ring { display:block; width:34px; height:34px; border:1px solid rgba(183,154,98,.65); transition:width .2s,height .2s; }
}

.site-header { position: fixed; top: 0; left: 0; width: 100%; z-index: 100; display:flex; align-items:center; justify-content:space-between; padding:22px 4vw; color:#fff; transition:.35s ease; }
.site-header.scrolled { background:rgba(10,10,9,.92); backdrop-filter: blur(18px); padding-top:14px; padding-bottom:14px; border-bottom:1px solid rgba(255,255,255,.08); }
.brand { display:flex; align-items:center; gap:14px; }
.brand-mark { width:68px; height:60px; flex:0 0 auto; border:1px solid rgba(255,255,255,.42); background:rgba(241,238,231,.94); display:grid; place-items:center; padding:4px; overflow:hidden; }
.brand-mark img { width:100%; height:100%; object-fit:contain; }
.brand-mark.large { width:92px; height:82px; border-color:rgba(255,255,255,.2); background:#f1eee7; padding:6px; }
.brand-copy { display:grid; gap:1px; }
.brand-copy strong, .footer-brand strong { font-family:var(--serif); font-weight:500; font-size:20px; letter-spacing:.02em; }
.brand-copy small, .footer-brand small { font-size:9px; text-transform:uppercase; letter-spacing:.22em; opacity:.68; }
.nav { display:flex; align-items:center; gap:34px; font-size:11px; letter-spacing:.16em; text-transform:uppercase; }
.nav a:not(.nav-cta) { position:relative; }
.nav a:not(.nav-cta)::after { content:""; position:absolute; height:1px; width:0; left:0; bottom:-7px; background:var(--gold); transition:.3s; }
.nav a:hover::after { width:100%; }
.nav-cta { border:1px solid rgba(255,255,255,.38); padding:13px 18px; transition:.3s; }
.nav-cta:hover { background:#fff; color:#000; }
.menu-toggle { display:none; background:none; border:0; width:38px; height:38px; position:relative; }
.menu-toggle span { position:absolute; left:7px; right:7px; height:1px; background:#fff; transition:.3s; }
.menu-toggle span:first-child { top:14px; }.menu-toggle span:last-child { top:22px; }

.hero { min-height:100vh; position:relative; color:#fff; display:flex; align-items:flex-end; padding:0 4vw 9vh; overflow:hidden; }
.hero-media { position:absolute; inset:0; background:url('hero-wedding-couple.jpg') center 44%/cover no-repeat; transform:scale(1.03); animation:heroZoom 14s ease-out forwards; }
@keyframes heroZoom { to { transform:scale(1.0); } }
.hero-shade { position:absolute; inset:0; background:linear-gradient(90deg, rgba(5,5,4,.78) 0%, rgba(5,5,4,.4) 46%, rgba(5,5,4,.16) 75%), linear-gradient(0deg, rgba(0,0,0,.45), transparent 48%); }
.hero-content { position:relative; z-index:2; max-width:760px; }
.eyebrow, .section-kicker { font-size:10px; letter-spacing:.28em; text-transform:uppercase; font-weight:600; }
.eyebrow { color:#d8c4a1; margin:0 0 20px; }
.hero h1 { margin:0; font-family:var(--serif); font-size:clamp(72px, 9.5vw, 144px); font-weight:400; line-height:.74; letter-spacing:-.045em; }
.hero h1 em, .display em, .film-content em, .experience-copy em { font-weight:400; color:var(--gold); }
.hero-copy { max-width:550px; font-size:15px; line-height:1.8; margin:32px 0 34px; color:rgba(255,255,255,.78); }
.hero-actions { display:flex; align-items:center; gap:28px; flex-wrap:wrap; }
.button { display:inline-flex; align-items:center; justify-content:center; border:0; cursor:pointer; text-transform:uppercase; letter-spacing:.18em; font-size:10px; padding:17px 23px; transition:.3s ease; }
.button-solid { background:#f4f0e7; color:#111; }
.button-solid:hover { background:var(--gold); color:#fff; transform:translateY(-2px); }
.text-link { display:inline-flex; align-items:center; gap:10px; font-size:11px; text-transform:uppercase; letter-spacing:.17em; padding-bottom:7px; border-bottom:1px solid rgba(255,255,255,.35); }
.text-link span { color:var(--gold); }
.text-link.dark { border-color:rgba(0,0,0,.3); }
.hero-bottom { position:absolute; z-index:2; right:4vw; bottom:4.2vh; display:flex; align-items:center; gap:14px; font-size:8px; text-transform:uppercase; letter-spacing:.25em; color:rgba(255,255,255,.58); }
.scroll-line { width:70px; height:1px; background:rgba(255,255,255,.35); position:relative; overflow:hidden; }
.scroll-line::after { content:""; position:absolute; inset:0; width:50%; background:#fff; animation:scrollLine 2.6s ease-in-out infinite; }
@keyframes scrollLine { 0%{transform:translateX(-110%)} 100%{transform:translateX(220%)} }

.section-pad { padding:130px 7vw; }
.intro { background:var(--paper); }
.section-kicker { color:#7e735f; margin-bottom:28px; }
.section-kicker.light { color:#cfb786; }
.intro-grid { display:grid; grid-template-columns:1.25fr .75fr; gap:8vw; align-items:start; }
.display { font-family:var(--serif); font-size:clamp(52px,6.4vw,102px); font-weight:400; line-height:.9; letter-spacing:-.04em; margin:0; }
.intro-copy { padding-top:20px; max-width:550px; }
.intro-copy p { font-size:15px; line-height:1.9; color:#5f5a52; margin:0 0 22px; }
.intro-copy .text-link { margin-top:10px; }

.statement-image { min-height:85vh; background:url('bridal-grace.jpg') center 54%/cover fixed; position:relative; display:flex; align-items:center; justify-content:flex-end; padding:7vw; }
.statement-image::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg, rgba(0,0,0,.05), rgba(0,0,0,.42)); }
.statement-card { position:relative; z-index:2; width:min(490px, 90%); padding:50px; background:rgba(12,12,11,.78); color:#fff; backdrop-filter:blur(10px); }
.quote-mark { font-family:var(--serif); font-size:92px; line-height:.6; color:var(--gold); }
.statement-card p { font-family:var(--serif); font-size:36px; line-height:1.15; margin:14px 0 0; }

.section-head { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:70px; }
.section-note { font-size:10px; line-height:1.8; text-transform:uppercase; letter-spacing:.17em; color:#777168; text-align:right; }
.portfolio-grid { display:grid; grid-template-columns:repeat(12,1fr); gap:20px; }
.portfolio-item { position:relative; border:0; padding:0; background:#111; overflow:hidden; cursor:pointer; min-height:420px; }
.portfolio-item img { width:100%; height:100%; object-fit:cover; transition:transform .9s cubic-bezier(.2,.7,.2,1), filter .5s; }
.portfolio-item::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(0,0,0,.62), transparent 50%); opacity:.8; transition:.4s; }
.portfolio-item:hover img { transform:scale(1.045); filter:saturate(.82); }
.portfolio-item:hover::after { opacity:1; }
.portfolio-meta { position:absolute; left:24px; bottom:22px; z-index:2; color:#fff; display:grid; text-align:left; gap:4px; }
.portfolio-meta b { font-family:var(--serif); font-size:28px; font-weight:500; }
.portfolio-meta small { font-size:8px; text-transform:uppercase; letter-spacing:.22em; color:rgba(255,255,255,.65); }
.portfolio-item.tall { grid-column:span 5; grid-row:span 2; min-height:860px; }
.portfolio-item.wide { grid-column:span 7; min-height:420px; }
.portfolio-item.square { grid-column:span 4; min-height:420px; }
.portfolio-item.portrait { grid-column:span 3; min-height:560px; }
.portfolio-item.landscape { grid-column:span 5; min-height:560px; }
.portfolio-item.wide img { object-position:center 28%; }
.portfolio-item.landscape img { object-position:center 86%; }
.archive-head { margin:120px 0 46px; padding-top:70px; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:flex-end; gap:40px; }
.archive-head .section-kicker { margin-bottom:18px; }
.archive-head h3 { margin:0; font-family:var(--serif); font-size:clamp(48px,5vw,76px); font-weight:400; line-height:.9; letter-spacing:-.035em; }
.archive-head h3 em { color:var(--gold); font-weight:400; }
.archive-head > p { margin:0; color:#777168; font-size:9px; line-height:1.9; text-align:right; text-transform:uppercase; letter-spacing:.17em; }
.archive-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.archive-item { grid-column:auto !important; grid-row:auto !important; width:100%; min-height:0 !important; aspect-ratio:2/3; margin:0; }
.archive-item img { object-position:center; }
.archive-item::after { background:linear-gradient(0deg,rgba(0,0,0,.46),transparent 34%); }
.archive-index { position:absolute; z-index:2; left:16px; bottom:14px; color:rgba(255,255,255,.78); font-size:8px; letter-spacing:.2em; }
.center { text-align:center; margin-top:55px; }
.button-outline { border:1px solid #8d887f; background:transparent; color:#1d1d1b; }
.button-outline:hover { background:#111; color:#fff; border-color:#111; }

.film-section { min-height:92vh; position:relative; display:flex; align-items:center; justify-content:center; color:#fff; overflow:hidden; }
.film-bg { position:absolute; inset:0; background:url('sacred-ceremony.jpg') center/cover no-repeat; }
.film-overlay { position:absolute; inset:0; background:rgba(4,4,3,.55); }
.film-content { position:relative; z-index:2; text-align:center; max-width:780px; padding:30px; }
.film-content h2 { font-family:var(--serif); font-size:clamp(66px,8vw,118px); line-height:.82; font-weight:400; letter-spacing:-.04em; margin:0; }
.film-content p { max-width:520px; margin:30px auto; color:rgba(255,255,255,.74); line-height:1.7; }
.play-button { margin:24px auto 0; color:#fff; background:none; border:0; display:flex; align-items:center; gap:16px; text-transform:uppercase; letter-spacing:.18em; font-size:10px; cursor:pointer; }
.play-icon { width:62px; height:62px; border:1px solid rgba(255,255,255,.55); border-radius:50%; display:grid; place-items:center; padding-left:3px; transition:.3s; }
.play-button:hover .play-icon { background:#fff; color:#000; transform:scale(1.06); }

.service-list { border-top:1px solid var(--line); }
.service { display:grid; grid-template-columns:70px 1fr 40px; gap:25px; align-items:start; border-bottom:1px solid var(--line); padding:34px 0; }
.service-num { font-size:9px; letter-spacing:.18em; color:#93876f; padding-top:8px; }
.service h3 { font-family:var(--serif); font-size:42px; font-weight:500; margin:0 0 10px; }
.service p { max-width:680px; margin:0; line-height:1.7; color:#676159; font-size:13px; }
.service-arrow { font-size:24px; color:var(--gold); transition:.3s; }
.service:hover .service-arrow { transform:translate(5px,-5px); }
.investment { margin-top:90px; background:#ded8cc; padding:45px 50px; display:flex; justify-content:space-between; gap:30px; align-items:center; }
.investment h3 { margin:0; font-family:var(--serif); font-size:32px; font-weight:400; }
.investment h3 strong { color:#7e6235; font-weight:500; }
.dark-button { background:#111; color:#fff; }

.experience { min-height:90vh; display:grid; grid-template-columns:1.05fr .95fr; background:#111; color:#fff; }
.experience-image { min-height:720px; background:url('cinematic-vows.jpg') center 82%/cover no-repeat; }
.experience-copy { padding:9vw 7vw; display:flex; flex-direction:column; justify-content:center; }
.experience-copy h2 { font-family:var(--serif); font-size:clamp(50px,5.7vw,86px); line-height:.88; font-weight:400; letter-spacing:-.035em; margin:0; }
.experience-copy > p:not(.section-kicker) { color:rgba(255,255,255,.64); line-height:1.8; margin:30px 0; }
.experience-copy ul { padding:0; margin:20px 0 0; list-style:none; border-top:1px solid rgba(255,255,255,.14); }
.experience-copy li { padding:19px 0; border-bottom:1px solid rgba(255,255,255,.14); text-transform:uppercase; letter-spacing:.14em; font-size:9px; }
.experience-copy li span { color:var(--gold); margin-right:28px; }

.testimonial { text-align:center; max-width:1200px; margin:auto; }
.testimonial blockquote { font-family:var(--serif); font-size:clamp(44px,6vw,88px); line-height:1.03; letter-spacing:-.025em; margin:20px auto 35px; }
.testimonial-meta { text-transform:uppercase; letter-spacing:.2em; font-size:9px; color:#777168; }
.testimonial-meta span { color:var(--gold); margin:0 7px; }

.contact { background:#0d0d0c; color:#fff; display:grid; grid-template-columns:.82fr 1.18fr; gap:8vw; }
.contact-copy h2 { font-family:var(--serif); font-size:clamp(60px,7vw,105px); font-weight:400; line-height:.84; letter-spacing:-.04em; margin:0; }
.contact-copy > p:not(.section-kicker) { color:rgba(255,255,255,.62); line-height:1.75; max-width:470px; margin:30px 0; }
.contact-links { display:grid; gap:10px; margin-top:40px; }
.contact-links a { font-size:11px; letter-spacing:.08em; color:#d2b77f; }
.enquiry-form { display:grid; gap:25px; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.enquiry-form label { display:grid; gap:9px; font-size:8px; letter-spacing:.2em; color:#a99d89; }
.enquiry-form input, .enquiry-form select, .enquiry-form textarea { width:100%; border:0; border-bottom:1px solid rgba(255,255,255,.22); background:transparent; color:#fff; padding:13px 0; outline:0; border-radius:0; }
.enquiry-form select option { color:#111; }
.enquiry-form input:focus, .enquiry-form select:focus, .enquiry-form textarea:focus { border-color:var(--gold); }
.enquiry-form textarea { resize:vertical; }
.button-gold { background:var(--gold); color:#111; justify-self:start; margin-top:10px; }
.button-gold:hover { background:#d4ba83; transform:translateY(-2px); }
.form-note { font-size:8px; color:rgba(255,255,255,.4); letter-spacing:.06em; }

.footer { background:#070706; color:#fff; padding:70px 4vw 25px; }
.footer-brand { display:flex; align-items:center; gap:18px; }
.footer-brand > div { display:grid; gap:4px; }
.footer-nav { display:flex; flex-wrap:wrap; gap:30px; margin:55px 0; padding:28px 0; border-top:1px solid rgba(255,255,255,.11); border-bottom:1px solid rgba(255,255,255,.11); font-size:9px; text-transform:uppercase; letter-spacing:.18em; }
.footer-bottom { display:flex; justify-content:space-between; gap:20px; color:rgba(255,255,255,.42); font-size:8px; text-transform:uppercase; letter-spacing:.16em; }

.whatsapp-float { position:fixed; right:22px; bottom:22px; width:52px; height:52px; border-radius:50%; background:#d1b26f; display:grid; place-items:center; z-index:80; box-shadow:0 12px 35px rgba(0,0,0,.25); transition:.25s; }
.whatsapp-float:hover { transform:translateY(-4px); }
.whatsapp-float svg { width:24px; fill:#111; }

.lightbox, .video-modal { position:fixed; inset:0; background:rgba(0,0,0,.93); z-index:500; display:grid; place-items:center; opacity:0; visibility:hidden; transition:.3s; }
.lightbox.open, .video-modal.open { opacity:1; visibility:visible; }
.lightbox img { max-width:90vw; max-height:88vh; object-fit:contain; }
.lightbox-close, .video-close { position:absolute; right:28px; top:20px; color:#fff; background:none; border:0; font-family:var(--serif); font-size:42px; cursor:pointer; }
.video-placeholder { width:min(900px,90vw); min-height:500px; background:#171715; border:1px solid rgba(255,255,255,.12); color:#fff; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; padding:40px; }
.video-placeholder span { color:var(--gold); font-size:9px; letter-spacing:.3em; }
.video-placeholder h3 { font-family:var(--serif); font-size:42px; font-weight:400; max-width:620px; }
.video-placeholder a { font-size:10px; text-transform:uppercase; letter-spacing:.18em; border-bottom:1px solid var(--gold); padding-bottom:6px; }

.reveal { opacity:0; transform:translateY(34px); transition:opacity .9s ease, transform .9s cubic-bezier(.2,.65,.3,1); }
.reveal.visible { opacity:1; transform:none; }

@media (max-width: 980px) {
  .nav { position:fixed; inset:0; background:#0a0a09; flex-direction:column; justify-content:center; gap:34px; font-family:var(--serif); font-size:32px; text-transform:none; transform:translateX(100%); transition:.4s; }
  .nav.open { transform:none; }
  .nav-cta { font-family:var(--sans); font-size:10px; text-transform:uppercase; }
  .menu-toggle { display:block; z-index:2; }
  .menu-toggle.active span:first-child { transform:rotate(45deg); top:18px; }
  .menu-toggle.active span:last-child { transform:rotate(-45deg); top:18px; }
  .intro-grid, .contact { grid-template-columns:1fr; }
  .portfolio-item.tall { grid-column:span 6; min-height:700px; }
  .portfolio-item.wide { grid-column:span 6; }
  .portfolio-item.square { grid-column:span 5; }
  .portfolio-item.portrait { grid-column:span 7; }
  .portfolio-item.landscape { grid-column:span 12; min-height:500px; }
  .archive-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .archive-head { margin-top:90px; }
  .experience { grid-template-columns:1fr; }
  .experience-image { min-height:70vh; }
}

@media (max-width: 700px) {
  .site-header { padding:16px 18px; }
  .brand { gap:10px; }
  .brand-mark { width:54px; height:48px; padding:3px; }
  .brand-copy strong { font-size:17px; }
  .brand-copy small { display:none; }
  .hero { padding:0 20px 12vh; min-height:100svh; }
  .hero-media { background-position:60% center; }
  .hero-shade { background:linear-gradient(90deg, rgba(4,4,3,.76), rgba(4,4,3,.28)), linear-gradient(0deg, rgba(0,0,0,.55), transparent 55%); }
  .hero h1 { font-size:clamp(66px,21vw,98px); line-height:.78; }
  .hero-copy { font-size:13px; margin:24px 0; }
  .hero-bottom { display:none; }
  .section-pad { padding:88px 20px; }
  .display { font-size:54px; }
  .intro-grid { gap:30px; }
  .statement-image { min-height:72vh; padding:20px; background-attachment:scroll; background-position:center 46%; }
  .statement-card { padding:32px; }
  .statement-card p { font-size:29px; }
  .section-head { display:block; margin-bottom:42px; }
  .section-note { text-align:left; margin-top:25px; }
  .portfolio-grid { display:block; }
  .portfolio-item { width:100%; min-height:520px !important; margin-bottom:14px; }
  .portfolio-item.wide, .portfolio-item.square, .portfolio-item.landscape { min-height:360px !important; }
  .archive-head { display:block; margin:76px 0 34px; padding-top:50px; }
  .archive-head > p { margin-top:22px; text-align:left; }
  .archive-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .archive-item { min-height:0 !important; margin:0; }
  .film-section { min-height:76vh; }
  .film-content h2 { font-size:68px; }
  .service { grid-template-columns:40px 1fr 20px; gap:12px; }
  .service h3 { font-size:31px; }
  .service p { font-size:12px; }
  .investment { padding:32px 24px; display:block; }
  .investment .button { margin-top:25px; }
  .experience-image { min-height:60vh; }
  .experience-copy { padding:90px 20px; }
  .experience-copy h2 { font-size:54px; }
  .testimonial blockquote { font-size:44px; }
  .contact { gap:60px; }
  .contact-copy h2 { font-size:64px; }
  .field-row { grid-template-columns:1fr; }
  .footer-bottom { display:grid; }
  .video-placeholder { min-height:360px; }
  .video-placeholder h3 { font-size:30px; }
}

@media (max-width: 520px) {
  .archive-grid { grid-template-columns:1fr; }
}

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