/* NP Production - luxury wedding aesthetic (sarahkatphoto-inspired).
   Serif: Cormorant Garamond. Sans: Jost (letterspaced labels).
   Palette: warm white / cream / soft gray / muted gold. */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Jost:wght@300;400;500&display=swap');

:root {
  --bg: #fdfcfa;
  --cream: #f7f2e9;
  --cream-deep: #efe7d6;
  --ink: #3d3833;
  --ink-soft: #7c7367;
  --ink-faint: #ab9f8d;
  --gold: #b9975b;
  --gold-soft: #d9c9a6;
  --line: #e9e1d2;
  --serif: 'Cormorant Garamond', 'Times New Roman', Georgia, serif;
  --sans: 'Jost', 'Helvetica Neue', Arial, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--serif);
  color: var(--ink);
  background: var(--bg);
  font-size: 17px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
::selection { background: var(--gold-soft); }

/* ---------- Header / nav ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: var(--bg);
  border-bottom: 1px solid transparent;
  transition: border-color .3s;
}
.site-header.scrolled { border-bottom-color: var(--line); }
.nav {
  max-width: 1280px; margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 36px;
}
.nav-group { display: flex; gap: 38px; flex: 1; align-items: center; }
.nav-group.right { justify-content: flex-end; }
.nav a.nl {
  text-decoration: none;
  font-family: var(--sans);
  font-size: 12px; font-weight: 400; letter-spacing: 3px;
  color: var(--ink-soft);
  padding: 6px 0;
  border-bottom: 1px solid transparent;
  transition: color .25s, border-color .25s;
}
.nav a.nl:hover, .nav a.nl.on { color: var(--ink); border-bottom-color: var(--gold); }
.wordmark {
  text-decoration: none; flex: 0 0 auto; margin: 0 28px;
  line-height: 0;
}
/* Real NP logo (v131): the horizontal lockup — mint circle NP mark +
   NP PRODUCTION — the same logo as the film portal. Replaces the
   text wordmark (NP PRODUCTION + PHOTO & FILM). */
.wordmark img { display: block; height: 56px; width: auto; }
.burger { display: none; background: none; border: 0; font-size: 26px; cursor: pointer; color: var(--ink); }

/* ---------- Shared bits ---------- */
.kicker {
  font-family: var(--sans); font-size: 12px; letter-spacing: 5px;
  color: var(--gold); text-transform: uppercase; margin: 0 0 18px;
}
.section { max-width: 1280px; margin: 0 auto; padding: 84px 36px; }
.section.narrow { max-width: 780px; }
.sec-head { text-align: center; margin-bottom: 54px; }
.sec-head h2 {
  font-size: clamp(26px, 3.4vw, 40px); font-weight: 500;
  letter-spacing: 8px; margin: 0 0 14px; color: var(--ink);
}
.sec-head p { font-style: italic; color: var(--ink-soft); margin: 0; font-size: 18px; }
.btn-row { display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; }
.btn {
  display: inline-block; text-decoration: none;
  font-family: var(--sans); font-size: 12px; letter-spacing: 4px; font-weight: 400;
  padding: 16px 42px; border: 1px solid var(--ink-soft); color: var(--ink);
  background: transparent; cursor: pointer;
  transition: all .3s;
}
.btn:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
.btn.solid { background: var(--gold); border-color: var(--gold); color: #fff; }
.btn.solid:hover { background: #a3854c; border-color: #a3854c; }
.btn.light { border-color: rgba(255,255,255,.8); color: #fff; }
.btn.light:hover { background: #fff; color: var(--ink); border-color: #fff; }

/* ---------- Luxe hero ---------- */
.hero-luxe {
  position: relative; min-height: 78vh;
  display: flex; align-items: center; justify-content: center; text-align: center;
  background: var(--cream) center/cover no-repeat; color: #fff;
  padding: 90px 24px;
}
.hero-luxe::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(rgba(45,38,30,.42), rgba(45,38,30,.55));
}
.hero-luxe-inner { position: relative; max-width: 900px; }
.hero-luxe .kicker { color: var(--gold-soft); }
.hero-luxe h1 {
  font-size: clamp(34px, 5.4vw, 64px); font-weight: 500; letter-spacing: 4px;
  line-height: 1.3; margin: 0 0 20px; color: #fff;
}
.hero-luxe .hero-tag {
  font-style: italic; font-size: 20px; color: #f0e9da; margin: 0 0 36px;
}
.hero-scroll {
  position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%);
  font-family: var(--sans); font-size: 10px; letter-spacing: 4px;
  color: rgba(255,255,255,.75); text-decoration: none;
}

/* ---------- Category trio ---------- */
.cat-trio {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px;
  max-width: 1280px; margin: 0 auto; padding: 70px 36px 10px;
}
.cat-card { position: relative; display: block; overflow: hidden; background: var(--cream); text-decoration: none; }
.cat-card img { width: 100%; height: auto; display: block; transition: transform .8s ease; }
.cat-card:hover img { transform: scale(1.05); }
.cat-card .cat-label {
  position: absolute; inset: auto 0 0 0; padding: 34px 20px 26px;
  background: linear-gradient(transparent, rgba(40,33,25,.62));
  color: #fff; text-align: center;
  font-family: var(--sans); font-size: 14px; letter-spacing: 6px; text-transform: uppercase;
}
.cat-card .cat-label small { display: block; font-family: var(--serif); font-style: italic; font-size: 16px; letter-spacing: 1px; margin-top: 6px; opacity: .85; }

/* ---------- Featured work ---------- */
.work-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 34px; max-width: 1160px; margin: 0 auto; }
.work-card { text-align: center; text-decoration: none; display: block; }
/* Luxe frame (v130): each featured gallery is a fine-art print — a
   cream mat + a gold double border + a soft shadow, matching the
   fancy video frame on the Films page. The full galleries sent
   privately to couples are NOT touched; only the public featured
   showcase (homepage + photos.php) gets this treatment. */
.work-card .gimg { position: relative; display: block; aspect-ratio: 2/3; overflow: hidden; background: #fffdf6; padding: 10px; border: 1px solid #d9c9a6; box-shadow: 0 14px 34px rgba(90,70,40,.14); margin-bottom: 18px; }
.work-card .gimg::before { content: ""; position: absolute; inset: 5px; border: 1px solid #e6dcc3; pointer-events: none; z-index: 2; }
.work-card img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s ease; }
.work-card:hover img { transform: scale(1.05); }
.work-card .gimg .ph { aspect-ratio: 2/3; height: auto; }
/* "View Gallery" pill, revealed on hover (v130). */
.work-card .gview { position: absolute; left: 50%; bottom: 22px; transform: translate(-50%, 6px); z-index: 3; font-family: var(--sans); font-size: 11px; letter-spacing: .28em; text-transform: uppercase; color: #fff; background: rgba(30,25,18,.55); border: 1px solid rgba(255,255,255,.65); padding: 10px 18px 10px 22px; opacity: 0; transition: opacity .35s ease, transform .35s ease; white-space: nowrap; }
.work-card:hover .gview { opacity: 1; transform: translate(-50%, 0); }
/* Gold ornament above the couple name (v130). */
.work-card .gorn { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 0 0 8px; }
.work-card .gorn::before, .work-card .gorn::after { content: ""; width: 34px; height: 1px; background: #c9a86a; }
.work-card .gorn i { width: 6px; height: 6px; background: #c9a86a; transform: rotate(45deg); display: block; }
.work-card h3 { font-size: 27px; font-weight: 500; margin: 0 0 4px; letter-spacing: 1px; }
.work-card .loc { font-family: var(--sans); font-size: 11px; letter-spacing: 4px; color: var(--ink-faint); text-transform: uppercase; }
.work-card .lbl { font-style: italic; color: var(--ink-faint); font-size: 16px; }
.see-more { text-align: center; margin-top: 44px; }
.see-more a {
  font-family: var(--sans); font-size: 13px; letter-spacing: 4px; color: var(--ink-soft);
  text-decoration: none; border-bottom: 1px solid var(--gold); padding-bottom: 4px;
  transition: color .25s;
}
.see-more a:hover { color: var(--ink); }

/* ---------- Testimonials / reviews ---------- */
.quotes { background: var(--cream); }
.quotes .section { max-width: 860px; }
.quote { text-align: center; margin-bottom: 56px; }
.quote:last-child { margin-bottom: 0; }
.quote blockquote {
  font-size: clamp(20px, 2.6vw, 27px); font-style: italic; line-height: 1.7;
  color: var(--ink); margin: 0 0 18px; font-weight: 400;
}
.quote .qname { font-family: var(--sans); font-size: 12px; letter-spacing: 4px; color: var(--ink-faint); text-transform: uppercase; }
.quote .qstars { color: var(--gold); letter-spacing: 6px; font-size: 14px; margin-bottom: 14px; }
.reviews-band { text-align: center; }
.reviews-band details { margin: 0 auto 34px; max-width: 760px; text-align: left; }
.reviews-band summary {
  cursor: pointer; font-family: var(--sans); font-size: 13px; letter-spacing: 4px;
  color: var(--gold); list-style: none; text-align: center; padding: 10px;
}
.reviews-band summary::-webkit-details-marker { display: none; }

/* ---------- About teaser ---------- */
.about-teaser { text-align: center; }
.about-teaser .about-body { font-size: 19px; color: var(--ink-soft); max-width: 720px; margin: 0 auto; }
.about-teaser .about-body p { margin: 0 0 20px; }
.sig { font-size: 30px; font-style: italic; color: var(--ink); margin: 26px 0 34px; }

/* ---------- Featured in ---------- */
.press { text-align: center; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.press .kicker { margin-bottom: 22px; }
.press-row { display: flex; flex-wrap: wrap; gap: 18px 44px; justify-content: center; align-items: center; }
.press-row span { font-family: var(--serif); font-size: 22px; font-style: italic; color: var(--ink-faint); }

/* ---------- Instagram strip ---------- */
.ig-banner { position: relative; }
.ig-banner-link { display: block; position: relative; text-decoration: none; }
.ig-banner-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; }
.ig-banner-cell { aspect-ratio: 4/3; overflow: hidden; background: var(--cream); }
.ig-banner-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ig-banner-cell .ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: var(--ink-soft); }
.ig-banner-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; background: rgba(20,18,16,.45); color: #fff; transition: background .4s; }
.ig-banner-link:hover .ig-banner-overlay { background: rgba(20,18,16,.6); }
.ig-banner-title { font-family: var(--serif); font-size: clamp(38px, 6vw, 64px); font-weight: 400; letter-spacing: 1px; }
.ig-banner-handle { font-family: var(--sans); font-size: 14px; letter-spacing: 5px; opacity: .9; }
.ig-embed { max-width: 720px; margin: 0 auto; height: 180px; overflow: hidden; }
.ig-embed iframe { height: 100% !important; }
.ig-embed iframe { max-width: 100%; }
/* ---------- Instagram feed (LightWidget, studio-style, transparent bg) ---------- */
.ig-feed-wrap{padding:64px 24px 48px;text-align:center;max-width:1200px;margin:0 auto;background:transparent}
.ig-feed-wrap .kicker{margin-bottom:10px}
.ig-feed-title{font-family:var(--serif);font-weight:500;font-size:clamp(28px,3.4vw,40px);margin:0 0 8px;color:var(--ink)}
.ig-feed-sub{margin:0 0 28px;font-family:var(--sans);font-size:14px;letter-spacing:3px;color:var(--ink-soft)}
.ig-feed-sub a{color:var(--gold);text-decoration:none}
.ig-feed-sub a:hover{text-decoration:underline}
.ig-feed-grid{max-width:1080px;margin:0 auto}
.ig-feed-grid iframe{width:100%!important;border:0}
@media(max-width:700px){
  .ig-feed-wrap{padding:48px 16px 36px}
}

/* ---------- CTA: pricing & availability ---------- */
.cta-pricing { background: var(--cream); text-align: center; }
.cta-pricing h2 { font-size: clamp(24px, 3.4vw, 38px); font-weight: 500; letter-spacing: 5px; margin: 0 0 16px; line-height: 1.5; }
.cta-pricing p { font-style: italic; color: var(--ink-soft); font-size: 19px; max-width: 620px; margin: 0 auto 34px; }

/* ---------- Reassurance ---------- */
.reassure { text-align: center; }
.reassure h2 { font-size: clamp(30px, 4.4vw, 52px); font-weight: 500; font-style: italic; margin: 0 0 8px; line-height: 1.4; }
.reassure .big { font-size: clamp(22px, 3vw, 32px); letter-spacing: 2px; color: var(--gold); font-style: italic; margin: 0 0 22px; }
.reassure p { color: var(--ink-soft); font-size: 18px; max-width: 660px; margin: 0 auto 34px; }
.reassure .worries { display: flex; gap: 26px; justify-content: center; margin-bottom: 26px; flex-wrap: wrap; }
.reassure .worries span { font-family: var(--sans); font-size: 12px; letter-spacing: 4px; color: var(--ink-faint); text-transform: uppercase; }

/* ---------- Footer ---------- */
.site-footer { background: #f6e8dd; padding: 52px 24px 40px; text-align: center; }
.ftr-row { display: flex; align-items: center; justify-content: center; gap: 56px; flex-wrap: wrap; }
.ftr-links { display: flex; gap: 34px; flex-wrap: wrap; justify-content: center; }
.ftr-links a { text-decoration: none; font-family: var(--sans); font-size: 11px; letter-spacing: 4px; color: #4a4438; }
.ftr-links a:hover { color: #000; }
.ftr-mono { display: flex; align-items: center; gap: 22px; font-family: var(--serif); font-size: 44px; font-weight: 400; letter-spacing: .12em; color: var(--ink); line-height: 1; }
.ftr-mono::before, .ftr-mono::after { content: ""; width: 1px; height: 56px; background: #b9a693; }
.ftr-credit { margin-top: 34px; font-size: 11px; letter-spacing: 2px; font-style: italic; color: #8a8078; text-transform: uppercase; }
.ftr-copy { margin-top: 8px; font-family: var(--sans); font-size: 10px; letter-spacing: 2px; color: #a39a90; }
@media(max-width:640px){
  .ftr-row{ gap: 22px; }
  .ftr-links{ gap: 22px; }
  .ftr-mono{ font-size: 36px; }
}

/* ---------- Legacy sections kept for inner pages ---------- */
.gal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.gal-card { text-align: center; }
.gal-card .gimg { aspect-ratio: 3/4; overflow: hidden; background: var(--cream); margin-bottom: 18px; }
.gal-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.gal-card:hover img { transform: scale(1.04); }
.gal-card h3 { font-size: 24px; font-weight: 500; margin: 0 0 4px; letter-spacing: 1px; }
.gal-card .loc { font-family: var(--sans); font-size: 11px; letter-spacing: 4px; color: var(--ink-faint); text-transform: uppercase; }
.gal-card .lbl { font-style: italic; color: var(--ink-faint); font-size: 16px; }

.film-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 40px; }
.film { text-align: center; }
.film .frame { aspect-ratio: 16/9; background: #211d18; margin-bottom: 18px; position: relative; overflow: hidden; }
.film .frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.film h3 { font-size: 23px; font-weight: 500; margin: 0 0 14px; letter-spacing: 1px; }

.cta-band { background: var(--cream); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: center; }
.cta-band h2 { font-size: clamp(24px, 3vw, 34px); font-weight: 500; letter-spacing: 6px; margin: 0 0 14px; }
.cta-band p { font-style: italic; color: var(--ink-soft); max-width: 560px; margin: 0 auto 30px; }
.cta-simple { text-align: center; }
.cta-simple h2 { font-size: clamp(24px, 3vw, 34px); font-weight: 500; letter-spacing: 6px; margin: 0 0 14px; }
.cta-simple p { font-style: italic; color: var(--ink-soft); font-size: 17px; margin: 0 0 22px; }

/* ---------- Sample placeholders (seed content only) ---------- */
.ph {
  width: 100%; height: 100%; min-height: 120px;
  background: linear-gradient(135deg, #efe8d9 0%, #e0d5bf 45%, #cfc0a4 100%);
  display: flex; align-items: center; justify-content: center; text-align: center;
  color: #8a7a5f; font-style: italic; font-size: 16px; padding: 20px;
}
.ph.dark { background: linear-gradient(135deg, #3a342c 0%, #211d18 100%); color: #b8a98f; }

/* ---------- Inner pages ---------- */
.page-hero { text-align: center; padding: 70px 20px 16px; }
.page-hero .kicker { margin-bottom: 14px; }
.page-hero h1 { font-size: clamp(30px, 4.4vw, 48px); font-weight: 500; letter-spacing: 5px; margin: 0 0 14px; line-height: 1.3; }
.page-hero p { font-style: italic; color: var(--ink-soft); margin: 0; font-size: 18px; }

.masonry { columns: 3; column-gap: 20px; }
.masonry .mitem { break-inside: avoid; margin-bottom: 20px; background: var(--cream); }
.masonry .mitem img { width: 100%; height: auto; }

.price-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; align-items: stretch; }
.price-card { border: 1px solid var(--line); background: #fff; padding: 44px 34px; text-align: center; display: flex; flex-direction: column; }
.price-card h3 { font-family: var(--sans); font-size: 15px; font-weight: 500; letter-spacing: 3px; margin: 0 0 8px; }
.price-card .price { font-size: 42px; font-weight: 500; color: var(--gold); margin: 0 0 22px; }
.price-card ul { list-style: none; margin: 0 0 28px; padding: 0; text-align: left; flex: 1; }
.price-card ul li { padding: 9px 0; border-bottom: 1px dotted var(--line); font-size: 15px; color: var(--ink-soft); }
.price-card ul li:last-child { border-bottom: 0; }
.note-box { background: var(--cream); border: 1px solid var(--line); padding: 26px 32px; font-style: italic; color: var(--ink-soft); text-align: center; margin-top: 40px; }

.about-body { font-size: 18px; color: var(--ink-soft); }
.about-body p { margin: 0 0 22px; }

.contact-wrap { display: grid; grid-template-columns: 1fr 1.4fr; gap: 64px; align-items: start; }
.contact-info h3 { font-family: var(--sans); font-size: 14px; letter-spacing: 4px; font-weight: 500; margin: 0 0 18px; }
.contact-info p { color: var(--ink-soft); margin: 0 0 14px; }
.contact-info a { color: var(--gold); text-decoration: none; }
.form label { display: block; margin: 0 0 20px; font-family: var(--sans); font-size: 12px; letter-spacing: 3px; color: var(--ink-soft); text-transform: uppercase; }
.form input[type=text], .form input[type=email], .form input[type=tel], .form textarea, .form select {
  width: 100%; padding: 14px 15px; margin-top: 8px;
  border: 1px solid var(--line); font-family: var(--serif); font-size: 17px; color: var(--ink);
  background: #fff; border-radius: 0; letter-spacing: 0; text-transform: none;
}
.form textarea { min-height: 150px; resize: vertical; }
.form .checks { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 12px; }
.form .checks label { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); cursor: pointer; font-family: var(--serif); }
.form .checks input { width: 18px; height: 18px; accent-color: var(--gold); }
.form .req { color: #b00; }
.form-ok { background: #f4f9f0; border: 1px solid var(--gold); padding: 22px 26px; color: var(--ink); font-style: italic; margin-bottom: 24px; }
.form-err { background: #fdf0f0; border: 1px solid #d88; padding: 22px 26px; margin-bottom: 24px; }

/* ---------- Gallery detail (2focus blog style) ---------- */
.gd-hero { position: relative; display: flex; align-items: center; justify-content: center; min-height: 620px; background-size: cover; background-position: center; background-color: #3d3833; text-align: center; padding: 80px 24px; }
.gd-hero::before { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.38); }
.gd-hero-text { position: relative; z-index: 1; max-width: 1160px; }
.gd-hero h1 { margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 2.3vw, 44px); line-height: 1.25; color: #fff; }
.gd-hero-cat { margin: 40px 0 0; font-family: var(--sans); font-size: 13px; letter-spacing: 5px; text-transform: uppercase; color: #fff; }
.gd-story { max-width: 1160px; margin: 0 auto; padding: 64px 24px 20px; }
.gd-story h2 { margin: 0 0 24px; font-family: var(--serif); font-weight: 500; font-size: clamp(28px, 2.1vw, 40px); line-height: 1.35; color: var(--ink); }
.gd-story p { margin: 0 0 28px; font-family: var(--sans); font-size: 17px; line-height: 1.65; color: var(--ink); }
.gd-masonry { max-width: 1160px; margin: 0 auto; padding: 28px 24px 20px; column-count: 3; column-gap: 10px; }
.gd-masonry figure { margin: 0 0 10px; break-inside: avoid; background: var(--cream); }
.gd-masonry img { display: block; width: 100%; height: auto; cursor: zoom-in; }
.gd-related { max-width: 1160px; margin: 0 auto; padding: 56px 24px 90px; text-align: center; }
.gd-related h2 { margin: 0; font-family: var(--serif); font-weight: 500; font-size: clamp(24px, 1.6vw, 30px); color: var(--ink); }
.gd-related .gd-rule { width: 100px; height: 1px; margin: 18px auto 40px; border: 0; background: #d8d2c8; }
.gd-rel-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.gd-rel-card { display: block; text-decoration: none; color: var(--ink); }
.gd-rel-card .gimg { display: block; aspect-ratio: 2/3; overflow: hidden; background: var(--cream); }
.gd-rel-card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gd-rel-card h3 { margin: 20px 0 8px; font-family: var(--serif); font-weight: 500; font-size: 28px; line-height: 1.3; }
.gd-rel-card .glbl { font-family: var(--sans); font-size: 12px; letter-spacing: 3px; text-transform: uppercase; color: var(--ink-soft); }
.gd-rel-card .ph { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; color: var(--ink-faint); font-family: var(--serif); font-style: italic; font-size: 18px; text-align: center; padding: 20px; }
.gd-lb { position: fixed; inset: 0; z-index: 200; display: none; align-items: center; justify-content: center; background: rgba(20,18,16,.92); }
.gd-lb.on { display: flex; }
.gd-lb img { max-width: 92vw; max-height: 88vh; object-fit: contain; }
.gd-lb button { position: absolute; background: none; border: 0; color: #fff; font-family: var(--serif); cursor: pointer; }
.gd-lb-x { top: 18px; right: 26px; font-size: 40px; line-height: 1; }
.gd-lb-prev, .gd-lb-next { top: 50%; transform: translateY(-50%); font-size: 52px; line-height: 1; padding: 10px 18px; }
.gd-lb-prev { left: 10px; }
.gd-lb-next { right: 10px; }
@media (max-width: 1000px) { .gd-masonry { column-count: 2; } }
@media (max-width: 700px) {
  .gd-hero { min-height: 420px; padding: 60px 20px; }
  .gd-hero h1 { font-size: clamp(26px, 7vw, 32px); }
  .gd-hero-cat { margin-top: 28px; font-size: 12px; }
  .gd-story { padding: 44px 20px 12px; }
  .gd-story h2 { font-size: 28px; }
  .gd-story p { font-size: 16px; }
  .gd-masonry { column-count: 2; padding: 20px 20px 12px; }
  .gd-related { padding: 44px 20px 64px; }
  .gd-rel-grid { grid-template-columns: 1fr; gap: 36px; max-width: 370px; margin: 0 auto; }
  .gd-rel-card h3 { font-size: 24px; }
  .gd-lb-prev, .gd-lb-next { font-size: 40px; }
}

/* ---------- Responsive ---------- */
@media (max-width: 840px) {
  .nav-group { display: none; }
  .nav-group.open { display: flex; position: absolute; top: 100%; left: 0; right: 0; background: var(--bg); flex-direction: column; gap: 0; border-bottom: 1px solid var(--line); text-align: center; z-index: 60; }
  .nav-group.open a.nl { padding: 16px 32px; border-top: 1px solid var(--line); width: 100%; }
  .burger { display: block; }
  .wordmark { margin: 0; }
  .wordmark img { height: 40px; }
  .cat-trio { grid-template-columns: 1fr; max-width: 440px; padding: 50px 24px 10px; }
  /* Portfolio page only (Hai 30/10/2026): the homepage keeps its old
     grid. Only the portfolio grid (photos.php, .work-grid--portfolio)
     goes 2-column on phones. */
  .work-grid--portfolio { grid-template-columns: repeat(2, 1fr); gap: 14px; max-width: none; }
  .work-grid--portfolio .work-card h3 { font-size: 19px; }
  .work-grid--portfolio .work-card .loc { letter-spacing: 2px; }
  .work-grid--portfolio .work-card .lbl { font-size: 14px; }
  .gal-grid { grid-template-columns: 1fr; max-width: 440px; margin: 0 auto; }
  .film-grid { grid-template-columns: 1fr; }
  .price-grid { grid-template-columns: 1fr; max-width: 440px; margin: 0 auto; }
  .masonry { columns: 2; }
  .ig-banner-row { grid-template-columns: repeat(2, 1fr); }
  .ig-banner-cell:last-child { display: none; }
  .contact-wrap { grid-template-columns: 1fr; gap: 40px; }
  .gphotos { grid-template-columns: 1fr; }
  .gprevnext { flex-direction: column; gap: 18px; }
  .section { padding: 60px 24px; }
  .hero-luxe { min-height: 64vh; }
}

/* v140: the desktop header nav needs ~973px; between 841-1000px it
   overflows (right group runs off the edge), so collapse to the burger
   menu there too. Nav rules only — the phone grids above stay at 840. */
@media (max-width: 1000px) {
  .nav-group { display: none; }
  .nav-group.open { display: flex; position: absolute; top: 100%; left: 0; right: 0; background: var(--bg); flex-direction: column; gap: 0; border-bottom: 1px solid var(--line); text-align: center; z-index: 60; }
  .nav-group.open a.nl { padding: 16px 32px; border-top: 1px solid var(--line); width: 100%; }
  .burger { display: block; }
  .wordmark { margin: 0; }
  .wordmark img { height: 40px; }
}
@media (max-width: 560px) {
  .masonry { columns: 1; }
  .nav { padding: 14px 20px; }
}

/* ---- Admin quick-edit badges on homepage (visible only when logged in) ---- */
.sec-edit { display: flex; align-items: center; gap: 10px; max-width: 1280px; margin: 6px auto; padding: 6px 12px;
  background: #fff8e6; border: 1px dashed #d9a91e; border-radius: 8px; font-size: 13px; color: #8a6d1a; }
.sec-edit span { font-weight: 600; letter-spacing: 1px; }
.sec-edit a { color: #0f766e; font-weight: 600; text-decoration: underline; }

/* ---------- Instagram 3x3 grid + pricing CTA (reference layout) ---------- */
.ig-cta{display:grid;grid-template-columns:460px minmax(0,1fr);gap:56px;max-width:1280px;margin:0 auto;padding:56px 24px;align-items:center}
.ig-handle{font-family:var(--sans);font-size:13px;letter-spacing:.35em;text-transform:uppercase;margin:0 0 18px;color:var(--ink)}
.ig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ig-grid a{display:block;aspect-ratio:1/1;overflow:hidden;background:var(--cream)}
.ig-grid img{width:100%;height:100%;object-fit:cover;display:block}
.ig-follow{margin:20px 0 0;text-align:center;font-family:var(--sans);font-size:13px;letter-spacing:.35em;text-transform:uppercase}
.ig-follow a{color:var(--ink);text-decoration:none}
.ig-cta-side{display:flex;gap:36px;align-items:center;min-width:0}
.ig-cta-photo{position:relative;flex:0 0 300px;min-width:0;display:block;aspect-ratio:3/4}
.ig-cta-photo::before{content:"";position:absolute;left:-32px;bottom:-32px;width:100%;height:100%;background:#f4f2f0}
.ig-cta-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1s ease}
.ig-cta-photo img.on{opacity:1}
.ig-cta-text{text-align:center;min-width:0}
.ig-cta-text h2{font-family:var(--serif);font-weight:500;font-size:clamp(26px,2.6vw,36px);line-height:1.45;letter-spacing:.12em;text-transform:uppercase;margin:0 0 18px;color:var(--ink)}
.ig-cta-rule{width:64px;border:0;border-top:1px solid var(--ink);margin:0 auto 18px}
.ig-cta-text p{font-family:var(--serif);font-style:italic;font-size:18px;color:var(--ink-soft);margin:0 0 28px;line-height:1.6}
@media(max-width:1100px){
  .ig-cta{grid-template-columns:1fr;gap:48px;padding:48px 24px}
  .ig-cta-grid{max-width:480px;margin:0 auto;width:100%}
  .ig-cta-side{justify-content:center}
}
@media(max-width:900px){
  /* v107 (Hai 30/10/2026): no Instagram on mobile at all. The grid
     column is hidden and the "yes, please!" CTA takes the full width,
     like the US map in the reviews split. The v103 exact-fit zoom and
     the v100 mobile row are both gone: the CTA is a normal readable
     column now (photo on top, text + gold button below). */
  .ig-cta-grid{display:none}
  .ig-cta-side{flex-direction:column;gap:28px;justify-content:center}
  .ig-cta-photo{flex:none;width:min(320px,100%)}
  .ig-cta-photo::before{display:none}
}

/* ---------- Category album strip (texas-gallery style) ---------- */
.catstrip{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;scroll-snap-type:x proximity;outline:none}
.catstrip::-webkit-scrollbar{display:none}
.catstrip-row{display:flex;gap:4px;height:clamp(320px,62vh,600px);width:max-content}
.catstrip-row img{height:100%;width:auto;display:block;scroll-snap-align:start}
.catstrip-bar{display:flex;align-items:center;justify-content:space-between;height:90px;padding:0 24px}
.catstrip-chev{background:none;border:0;font-family:var(--serif);font-size:34px;line-height:1;color:var(--ink);cursor:pointer;padding:8px 12px}
.catstrip-chev:disabled{opacity:.25;cursor:default}
.catstrip-nav{margin:0;font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:1px;text-align:center}
.catstrip-nav a{color:var(--ink);text-decoration:none}
.catstrip-nav a:hover{text-decoration:underline}
.catstrip-nav span{margin:0 6px;color:var(--ink-faint)}
@media(max-width:700px){.catstrip-bar{height:72px;padding:0 8px}.catstrip-chev{font-size:28px}}
/* v108 (Hai 30/10/2026): on phones nobody could tell the strip swipes.
   The row is shorter (50vh) so a portrait first photo leaves a peek
   of the next one at the right edge, a live "1 / N" counter sits
   top-right, and a Swipe pill nudges at the bottom until the first
   swipe (or 6s). Desktop keeps the 62vh row with no overlays. */
.catstrip-wrap{position:relative}
.catstrip-count,.catstrip-hint{display:none}
@media(max-width:700px){
  .catstrip-row{height:50vh}
  .catstrip-count{display:block;position:absolute;top:10px;right:10px;z-index:2;background:rgba(0,0,0,.55);color:#fff;font-family:var(--sans);font-size:12px;letter-spacing:1px;padding:4px 9px;border-radius:20px;pointer-events:none}
  .catstrip-hint{display:flex;align-items:center;gap:8px;position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:2;background:rgba(0,0,0,.55);color:#fff;font-family:var(--serif);font-style:italic;font-size:14px;letter-spacing:1px;padding:7px 14px;border-radius:999px;pointer-events:none;transition:opacity .6s ease;animation:stripNudge 1.8s ease-in-out infinite}
  @keyframes stripNudge{0%,100%{transform:translateX(-50%)}50%{transform:translateX(calc(-50% + 6px))}}
  .catstrip-wrap.is-swiped .catstrip-hint{opacity:0;animation:none}
}

/* v151: Films page titles all caps (display only; stored titles unchanged).
   .fp-ttl is the playlist row title (Cinema list reuses the same class),
   .fp-now-t / .fp-cinema-now-t are the now-playing titles. Homepage does
   not use .fp-* classes, admin keeps original case for editing. */
.fp-ttl,.fp-now-t,.fp-cinema-now-t{text-transform:uppercase}

/* ---------- About page (v163): Meet Us + Fun Facts, after the old About
   page, restyled in the site's own language (Cormorant + Jost, gold,
   warm white, the fine-art print frame from the featured galleries).
   The old page's teal "+" divider becomes the site's gold diamond;
   its floral sprig becomes the gold rule-and-diamond ornament. */
.about-meet{display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center;max-width:1160px;margin:0 auto;padding:84px 36px 40px}
.about-frame{position:relative;aspect-ratio:4/5;overflow:hidden;background:#fffdf6;padding:10px;border:1px solid #d9c9a6;box-shadow:0 14px 34px rgba(90,70,40,.14)}
.about-frame::before{content:"";position:absolute;inset:5px;border:1px solid #e6dcc3;pointer-events:none;z-index:2}
.about-frame img{width:100%;height:100%;object-fit:cover;display:block}
.about-frame .ph{width:100%;height:100%;min-height:0}
.about-meet-text{text-align:center}
.about-meet-text h1{font-size:clamp(30px,3.4vw,42px);font-weight:500;letter-spacing:8px;margin:0 0 12px;line-height:1.3;color:var(--ink)}
.about-meet-sub{font-family:var(--sans);font-size:12px;letter-spacing:5px;color:var(--gold);text-transform:uppercase;margin:0 0 22px}
.about-orn{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 22px}
.about-orn::before,.about-orn::after{content:"";width:34px;height:1px;background:#c9a86a}
.about-orn i{width:6px;height:6px;background:#c9a86a;transform:rotate(45deg);display:block}
.about-meet-text .about-body{font-size:18px;color:var(--ink-soft)}
.about-divider{display:flex;align-items:center;gap:16px}
.about-divider::before,.about-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.about-divider i{width:8px;height:8px;background:var(--gold);transform:rotate(45deg);display:block;flex:none}
.about-facts{max-width:1160px;margin:0 auto;padding:64px 36px 84px;text-align:center}
.about-facts .kicker{margin-bottom:44px}
.about-facts-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px}
.about-fact .num{font-size:44px;font-weight:500;color:var(--gold);line-height:1.2;margin-bottom:14px}
.about-fact .rule{width:64px;height:1px;background:var(--gold-soft);margin:0 auto 18px}
.about-fact p{font-size:16px;color:var(--ink-soft);line-height:1.7;margin:0}
@media(max-width:840px){
  .about-meet{grid-template-columns:1fr;gap:40px;padding:60px 24px 30px}
  .about-meet-photo{max-width:520px;margin:0 auto;width:100%}
  .about-facts-grid{grid-template-columns:repeat(2,1fr);gap:32px}
  .about-facts{padding:48px 24px 60px}
}
@media(max-width:560px){
  .about-facts-grid{grid-template-columns:1fr}
}
