/* ==========================================================================
   Malli Celebrations — plain HTML5 / CSS3 build
   Design tokens mirror the app design system.
   ========================================================================== */

:root {
  --background: #f5f0e8;
  --foreground: #3a352e;
  --muted-foreground: #6f6659;
  --secondary: #ebe4d6;
  --border: #d9d0c0;
  --primary: #c6a76b;
  --gold-deep: #8f7442;
  --ink: #211e1a;
  --ink-foreground: #f4f0e8;
  --link-strong: #211e1a;
  --link-on-dark: rgba(244, 240, 232, 0.86);
  --gradient-gold: linear-gradient(100deg, #8f7442, #d9bc84, #9a7f4a);
  --shadow-editorial: 0 30px 70px -40px rgba(58, 53, 46, 0.55);
  --container: 84rem;
  --section-space: clamp(3.5rem, 5.5vw, 5.5rem);
  --font-display: "Cormorant Garamond", Georgia, serif;
  --font-sans: "Jost", ui-sans-serif, system-ui, sans-serif;
}

*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--background);
  color: var(--foreground);
  font-family: var(--font-sans);
  font-weight: 300;
  letter-spacing: 0.01em;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, blockquote {
  font-family: var(--font-display);
  font-weight: 300;
  letter-spacing: -0.01em;
  margin: 0;
}

p { margin: 0; }
ul, ol { list-style: none; margin: 0; padding: 0; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }

::selection { background: var(--gold-deep); color: var(--ink-foreground); }
:focus-visible { outline: 1px solid var(--gold-deep); outline-offset: 3px; }

/* ---------- utilities ---------- */
.shell {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 3.5rem);
}
.section { padding-block: var(--section-space); }
.pb-0 { padding-bottom: 0; }
.center { text-align: center; }
.tinted { background: rgba(242, 236, 225, 0.5); }

.eyebrow {
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 400;
  letter-spacing: 0.38em;
  text-transform: uppercase;
}
.gold { color: var(--gold-deep); }
.gold-light { color: var(--primary); }
.primary { color: var(--primary); }

.rule-gold {
  display: block;
  height: 1px;
  width: 6rem;
  margin-top: 2.5rem;
  background: var(--gradient-gold);
}
.center-rule { width: 4rem; margin-inline: auto; }

.ico { width: 1rem; height: 1rem; flex: none; stroke-linecap: round; stroke-linejoin: round; }
.ico-sm { width: 0.8rem; height: 0.8rem; }
.ico-lg { width: 1.5rem; height: 1.5rem; }

/* aspect ratios */
.ratio-4-5 { aspect-ratio: 4 / 5; width: 100%; object-fit: cover; }
.ratio-4-3 { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; }
.ratio-3-4 { aspect-ratio: 3 / 4; width: 100%; object-fit: cover; }
.ratio-16-10 { aspect-ratio: 16 / 10; width: 100%; object-fit: cover; }

/* buttons */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  border-radius: 999px;
  padding: 1rem 2rem;
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  border: 1px solid transparent;
  transition: background-color .3s, color .3s, border-color .3s;
}
.btn .ico { transition: transform .3s; }
.btn:hover .ico { transform: translateX(4px); }
.btn-light { background: var(--ink-foreground); color: var(--ink); }
.btn-light:hover { background: var(--primary); }
.btn-ghost-light { border-color: rgba(244, 240, 232, 0.45); color: var(--ink-foreground); }
.btn-ghost-light:hover { border-color: var(--ink-foreground); }
.btn-outline-gold { border-color: var(--gold-deep); color: var(--gold-deep); padding: 0.875rem 1.75rem; }
.btn-outline-gold:hover { background: var(--gold-deep); color: var(--ink-foreground); }
.btn-ink { background: var(--ink); color: var(--ink-foreground); }
.btn-ink:hover { background: var(--gold-deep); }

.link-gold {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold-deep);
}
.link-gold .ico { transition: transform .3s; }
.link-gold:hover .ico { transform: translateX(4px); }

/* ---------- header ---------- */
.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  background: rgba(251, 248, 243, 0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(224, 216, 201, 0.7);
  transition: background-color .5s, border-color .5s, padding .5s;
}
.site-header.over-hero:not(.is-scrolled) {
  background: linear-gradient(to bottom, rgba(33, 30, 26, 0.55), transparent);
  backdrop-filter: none;
  border-bottom-color: transparent;
}
.header-bar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 2.5rem;
  padding-block: 0.625rem;
  transition: padding .5s;
}
.site-header.over-hero:not(.is-scrolled) .header-bar { padding-block: 1rem; }
.brand { display: inline-flex; min-width: 0; align-items: center; }
.brand-logo {
  height: 3.75rem;
  width: auto;
  flex: none;
  max-width: none;
  filter: drop-shadow(0 2px 3px rgba(58, 53, 46, 0.12));
  transition: height .5s, filter .5s;
}
.site-header.over-hero:not(.is-scrolled) .brand-logo {
  height: 4.75rem;
  filter: brightness(0) invert(0.92) sepia(1) saturate(2) drop-shadow(0 2px 4px rgba(0,0,0,0.25));
}

.desktop-nav { display: none; align-items: center; gap: 0.25rem; }
.nav-list { display: flex; align-items: center; gap: 0.25rem; flex-wrap: nowrap; }
.nav-item { position: relative; }
.nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.78rem;
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--link-strong);
  transition: color .3s;
}
.nav-link::after {
  content: "";
  position: absolute;
  inset: auto 0.75rem 0.25rem 0.75rem;
  height: 1px;
  background: var(--gold-deep);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s;
}
.nav-link:hover, .nav-link.is-active { color: var(--gold-deep); }
.nav-link:hover::after, .nav-link.is-active::after { transform: scaleX(1); }
.nav-link .ico { transition: transform .3s; }
.nav-item:hover .nav-link .ico { transform: translateY(2px); }

.site-header.over-hero:not(.is-scrolled) .nav-link { color: rgba(244, 240, 232, 0.95); }
.site-header.over-hero:not(.is-scrolled) .nav-link:hover,
.site-header.over-hero:not(.is-scrolled) .nav-link.is-active { color: var(--ink-foreground); }
.site-header.over-hero:not(.is-scrolled) .nav-link::after { background: var(--ink-foreground); }

.dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  width: 16rem;
  padding-top: 0.75rem;
  opacity: 0;
  transform: translateY(-0.5rem);
  pointer-events: none;
  transition: opacity .3s, transform .3s;
}
.dropdown-mega { left: 50%; width: min(46rem, 80vw); transform: translate(-50%, -0.5rem); }
.nav-item:hover .dropdown, .nav-item:focus-within .dropdown {
  opacity: 1; pointer-events: auto; transform: translateY(0);
}
.nav-item:hover .dropdown-mega, .nav-item:focus-within .dropdown-mega { transform: translate(-50%, 0); }
.dropdown-inner {
  background: #fdfaf5;
  border: 1px solid var(--border);
  padding: 1.5rem;
  box-shadow: var(--shadow-editorial);
}
.dropdown-inner .eyebrow { margin-bottom: 1rem; }
.dropdown-list.cols-3 { columns: 3; column-gap: 2rem; }
.dropdown-list li { break-inside: avoid; }
.dropdown-list a {
  display: block;
  padding-block: 0.375rem;
  font-size: 0.925rem;
  font-weight: 400;
  color: var(--link-strong);
  transition: color .25s;
}
.dropdown-list a:hover { color: var(--gold-deep); }

.btn-enquire {
  margin-left: 1rem;
  border: 1px solid var(--gold-deep);
  border-radius: 999px;
  padding: 0.625rem 1.5rem;
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold-deep);
  transition: background-color .3s, color .3s, border-color .3s;
}
.btn-enquire:hover { background: var(--gold-deep); color: var(--ink-foreground); }
.site-header.over-hero:not(.is-scrolled) .btn-enquire {
  border-color: rgba(244, 240, 232, 0.5);
  color: var(--ink-foreground);
}
.site-header.over-hero:not(.is-scrolled) .btn-enquire:hover {
  background: rgba(244, 240, 232, 0.12);
  border-color: var(--ink-foreground);
}

.burger {
  display: inline-flex;
  height: 2.75rem;
  width: 2.75rem;
  align-items: center;
  justify-content: center;
}
.site-header.over-hero:not(.is-scrolled) #burger { color: var(--ink-foreground); }

@media (min-width: 1280px) {
  .desktop-nav { display: flex; }
  #burger { display: none; }
}

/* mobile nav */
.mobile-nav {
  position: fixed;
  inset: 0;
  z-index: 60;
  isolation: isolate;
  background-color: #f3ede3;
  background-image:
    radial-gradient(circle at 92% 5%, rgba(198, 167, 107, 0.18), transparent 30rem),
    linear-gradient(145deg, #fbf8f2 0%, #f1eadf 58%, #e8dece 100%);
  color: var(--foreground);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  box-shadow: 0 1.5rem 4rem rgba(33, 30, 26, .22);
  transition: opacity .3s ease, visibility 0s linear .3s;
}
.mobile-nav::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(143,116,66,.08) 1px, transparent 1px);
  background-size: 25vw 100%;
  opacity: .35;
  pointer-events: none;
}
.site-header.is-menu-open { background: transparent !important; border-bottom-color: transparent !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.mobile-nav.is-open { opacity: 1; visibility: visible; pointer-events: auto; transition-delay: 0s; }
#enquire, #enquiry-form { scroll-margin-top: 6rem; }
.mobile-top { display: flex; align-items: center; justify-content: space-between; padding-block: .65rem; border-bottom: 1px solid rgba(143,116,66,.2); }
.mobile-logo { height: 3rem; width: auto; flex: none; max-width: none; filter: drop-shadow(0 2px 3px rgba(58,53,46,.1)); }
.mobile-scroll { height: calc(100dvh - 4.5rem); overflow-y: auto; padding-top: .35rem; padding-bottom: 1.75rem; }
.m-list { max-width: 62rem; }
.m-item { border-bottom: 1px solid rgba(143,116,66,.18); }
.m-row { display: flex; align-items: center; justify-content: space-between; }
.m-row > a { flex: 1; padding-block: .72rem; font-family: var(--font-display); font-size: 1.35rem; color: var(--foreground); }
.m-toggle { padding: .72rem; transition: color .3s; }
.m-parent-toggle { display:flex;align-items:center;justify-content:space-between;width:100%;padding-inline:0;text-align:left;font-family:var(--font-display);font-size:1.35rem;color:var(--foreground); }
.m-parent-toggle .ico { transition:transform .3s; }
.m-item.is-open .m-parent-toggle { color:var(--gold-deep); }
.m-item.is-open .m-parent-toggle .ico { transform: rotate(180deg); }
.m-sub { display: none; padding: 0 0 .7rem .15rem; columns: 1; }
.m-item.is-open { margin-inline: -.85rem; padding-inline: .85rem; background: rgba(255, 253, 249, .96); box-shadow: 0 .75rem 2rem rgba(56, 45, 31, .08); }
.m-item.is-open .m-sub { display: block; }
.m-sub a {
  display: block;
  padding-block: 0.35rem;
  font-size: 0.82rem;
  font-weight: 400;
  color: var(--muted-foreground);
}
.m-sub .m-view-all { color:var(--gold-deep);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:.2rem; }
.site-header .mobile-nav .m-enquire { display: inline-block; margin: 1.15rem 0 0; border-color: var(--gold-deep); color: var(--gold-deep); }
.site-header .mobile-nav .m-enquire:hover { background:var(--gold-deep);border-color:var(--gold-deep);color:var(--ink-foreground); }
@media (min-width: 700px) and (max-width: 1279px) {
  .mobile-nav { left:auto;width:min(34rem,70vw);box-shadow:-2rem 0 5rem rgba(33,30,26,.18); }
  .mobile-nav::after { content:"";position:fixed;inset:0 min(34rem,70vw) 0 0;background:rgba(33,30,26,.32);z-index:-2; }
  .mobile-scroll,.mobile-top { padding-inline:2.5rem; }
  .m-sub { columns:2;column-gap:1.5rem; }
}
@media (min-width: 1280px) { .mobile-nav { display: none; } }

/* ---------- hero ---------- */
.hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: 92svh;
  overflow: hidden;
}
.hero-slide {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  opacity: 0;
  visibility: hidden;
  transition: opacity .8s ease, visibility .8s ease;
}
.hero-slide.is-active { opacity: 1; visibility: visible; }
.hero-slide picture { position: absolute; inset: 0; }
.hero-img {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  object-fit: cover;
  object-position: 50% 42%;
}
.hero-veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(33,30,26,.88), rgba(33,30,26,var(--hero-overlay, .35)) 55%, rgba(33,30,26,.48));
}
.hero-content { position: relative; width: 100%; padding-top: 10rem; padding-bottom: 6rem; }
.hero-dots {
  position: absolute;
  z-index: 3;
  right: clamp(1.25rem, 5vw, 3.5rem);
  bottom: 2rem;
  display: flex;
  gap: .65rem;
}
.hero-dot { width: 2rem; height: 2px; padding: 0; background: rgba(244,240,232,.45); }
.hero-dot.is-active { background: var(--primary); }
@media (max-width: 767px) {
  .hero { min-height: 86svh; }
  .hero-content { padding-top: 8rem; padding-bottom: 5rem; }
  .hero-dots { bottom: 1.25rem; }
}
.hero-title {
  margin-top: 1.5rem;
  max-width: 56rem;
  font-size: clamp(2.6rem, 7.5vw, 6rem);
  line-height: 0.98;
  color: var(--ink-foreground);
}
.hero-em { display: block; font-style: italic; color: var(--primary); }
.hero-sub {
  margin-top: 1.75rem;
  max-width: 36rem;
  font-size: 1rem;
  line-height: 1.7;
  color: rgba(244, 240, 232, 0.75);
}
.hero-actions { margin-top: 2.5rem; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.center-actions { justify-content: center; }
.scroll-row {
  margin-top: 2.75rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  color: rgba(244, 240, 232, 0.55);
}
.scroll-hint {
  display: block;
  height: 2.5rem;
  width: 1px;
  background: rgba(244, 240, 232, 0.4);
  animation: malli-scroll-hint 2.4s ease-in-out infinite;
}

@keyframes malli-kenburns { from { transform: scale(1.06); } to { transform: scale(1.16); } }
.kenburns { animation: malli-kenburns 18s ease-out forwards; }
@keyframes malli-scroll-hint {
  0%, 100% { transform: translateY(0); opacity: .35; }
  50% { transform: translateY(9px); opacity: 1; }
}

/* ---------- typography blocks ---------- */
.h2-lg { margin-top: 1.5rem; font-size: clamp(2rem, 4.4vw, 3.6rem); line-height: 1.05; }
.h2-md { margin-top: 1.25rem; font-size: clamp(1.9rem, 4vw, 3.2rem); line-height: 1.15; }
.h2-sm { margin-top: 1.25rem; font-size: clamp(1.7rem, 3.4vw, 2.6rem); }
.narrow { max-width: 40rem; margin-inline: auto; }
.lede {
  margin-top: 2rem;
  max-width: 32rem;
  font-size: 0.95rem;
  line-height: 2;
  color: var(--link-strong);
}
.center .lede { margin-inline: auto; }
em.gold { font-style: italic; }

.section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
}

/* ---------- intro ---------- */
.intro-grid { display: grid; gap: 3.5rem; }
.intro-media { position: relative; }
.intro-main { object-position: 50% 35%; }
.intro-inset {
  display: none;
  position: absolute;
  bottom: -2.5rem;
  left: -1.5rem;
  width: 13rem;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border: 8px solid var(--background);
}
@media (min-width: 640px) { .intro-inset { display: block; } }
@media (min-width: 1024px) {
  .intro-grid { grid-template-columns: 1.05fr 0.95fr; align-items: center; }
}

/* ---------- celebrations list ---------- */
.celeb-list {
  margin-top: 2.75rem;
  border-top: 1px solid var(--border);
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
@media (min-width: 768px) { .celeb-list { grid-template-columns: repeat(2, 1fr); column-gap: 2.5rem; } }
.celeb-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1.25rem;
  border-bottom: 1px solid var(--border);
  padding-block: 1.5rem;
  transition: background-color .3s;
}
@media (min-width: 640px) { .celeb-row { gap: 2.5rem; padding-inline: 1rem; } }
.celeb-row:hover { background: var(--background); }
.celeb-title {
  display: block;
  font-family: var(--font-display);
  font-size: 1.5rem;
  line-height: 1.15;
  transition: transform .5s;
}
@media (min-width: 640px) { .celeb-title { font-size: 1.875rem; } }
.celeb-row:hover .celeb-title { transform: translateX(8px); }
.celeb-note { display: block; margin-top: 0.25rem; font-size: 0.875rem; color: var(--muted-foreground); }
.celeb-row > .ico { width: 1.25rem; height: 1.25rem; color: var(--muted-foreground); transition: transform .3s, color .3s; }
.celeb-row:hover > .ico { color: var(--gold-deep); transform: translate(4px, -4px); }

/* ---------- signature ---------- */
.signature-grid { display: grid; gap: 2.5rem; }
@media (min-width: 1024px) {
  .signature-grid { grid-template-columns: 7fr 5fr; align-items: center; }
  .signature-card { margin-left: -5rem; background: var(--background); padding: 2.5rem; }
}
.signature-card .btn { margin-top: 2.25rem; }

/* ---------- brand moment ---------- */
.brand-moment { background: var(--ink); color: var(--ink-foreground); padding-block: 5rem; }
@media (min-width: 640px) { .brand-moment { padding-block: 7rem; } }
.pull-quote {
  margin: 2.5rem auto 0;
  max-width: 48rem;
  font-size: clamp(1.7rem, 4.2vw, 3.2rem);
  line-height: 1.2;
  font-style: italic;
}
.brand-moment .eyebrow { margin-top: 2.5rem; }

/* ---------- categories ---------- */
.cat-grid { margin-top: 2.5rem; display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .cat-grid { grid-template-columns: repeat(3, 1fr); } }
.cat-card { position: relative; display: block; overflow: hidden; }
.cat-card img { transition: transform 1.2s cubic-bezier(.22,1,.36,1); }
.cat-card:hover img { transform: scale(1.05); }
.cat-veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(33,30,26,.8), rgba(33,30,26,.1) 55%, transparent);
  transition: opacity .5s;
}
.cat-label {
  position: absolute;
  inset: auto 1.5rem 1.5rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--ink-foreground);
}
.cat-title { font-family: var(--font-display); font-size: 1.5rem; }
.cat-label .ico { width: 1.25rem; height: 1.25rem; opacity: 0; transform: translateX(-8px); transition: all .5s; }
.cat-card:hover .cat-label .ico { opacity: 1; transform: none; }

/* ---------- experience ---------- */
.experience-grid { display: grid; gap: 3.5rem; }
@media (min-width: 1024px) { .experience-grid { grid-template-columns: 0.9fr 1.1fr; } }
.experience-img { margin-top: 2.5rem; }
@media (min-width: 1024px) { .journey-list { padding-top: 2.5rem; } }
.journey-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 1.5rem;
  border-top: 1px solid var(--border);
  padding-block: 2rem;
}
.journey-n { font-family: var(--font-display); font-size: 1.875rem; color: var(--gold-deep); }
.journey-title { font-size: 1.5rem; }
.journey-body { margin-top: 0.5rem; font-size: 0.875rem; line-height: 1.7; color: var(--muted-foreground); }

/* ---------- teasers ---------- */
.teaser-grid { margin-top: 2.5rem; display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 640px) { .teaser-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .teaser-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.teaser { position: relative; display: block; overflow: hidden; aspect-ratio: 4 / 3; background: var(--muted); }
.teaser img { height: 100%; width: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.22,1,.36,1); }
.teaser:hover img { transform: scale(1.05); }
.teaser-veil { position: absolute; inset: 0; background: linear-gradient(to top, rgba(24,20,16,.72), rgba(24,20,16,0) 62%); transition: background-color .5s; }
.teaser-label {
  position: absolute;
  bottom: 1.25rem;
  left: 1.25rem;
  right: 1.25rem;
  display: grid;
  gap: .35rem;
  color: var(--ink-foreground);
  transform: translateY(.2rem);
  transition: transform .5s;
}
.teaser-label small { font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.72); }
.teaser-label strong { font-family: var(--font-display); font-size: clamp(1.4rem,2.4vw,2rem); font-weight: 300; line-height: 1.05; }
.teaser:hover .teaser-label { transform: none; }

/* ---------- testimonial ---------- */
.testimonial-grid { display: grid; gap: 3rem; }
@media (min-width: 1024px) { .testimonial-grid { grid-template-columns: 0.8fr 1.2fr; align-items: center; } }
.testimonial {
  margin-top: 1.75rem;
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3.2vw, 2.6rem);
  line-height: 1.25;
  font-style: italic;
}
.testimonial-by {
  margin-top: 2rem;
  font-size: 0.875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted-foreground);
}

/* ---------- social ---------- */
.social-grid { margin-top: 2.5rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
@media (min-width: 640px) { .social-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .social-grid { grid-template-columns: repeat(6, 1fr); } }
.social-tile { position: relative; display: block; overflow: hidden; aspect-ratio: 1; background: #17130f; }
.social-tile img, .social-tile video { aspect-ratio: 1; width: 100%; height: 100%; object-fit: cover; transition: transform .9s; }
.social-tile:hover img { transform: scale(1.1); }
.social-tile-reel video { display: block; }
.social-reel-cover { display: block; width: 100%; height: 100%; }
.social-reel-cover img { display: block; }
.social-reel-cover::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(18, 13, 9, .28)); pointer-events: none; }
.social-reel-play { position: absolute; top: 50%; left: 50%; z-index: 2; width: 2.75rem; height: 2.75rem; border: 1px solid rgba(255,255,255,.75); border-radius: 50%; background: rgba(24,18,13,.48); transform: translate(-50%,-50%); backdrop-filter: blur(5px); }
.social-reel-play::after { content: ''; position: absolute; top: 50%; left: 53%; border-top: .38rem solid transparent; border-bottom: .38rem solid transparent; border-left: .58rem solid #fff; transform: translate(-50%,-50%); }
.social-reel-link { position: absolute; top: .65rem; right: .65rem; z-index: 2; padding: .35rem .6rem; border-radius: 999px; background: rgba(24, 18, 13, .78); color: #fff; font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; backdrop-filter: blur(6px); }

/* ---------- CTA band ---------- */
.cta-band { position: relative; overflow: hidden; }
.cta-img { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; object-position: 50% 40%; }
.cta-veil { position: absolute; inset: 0; background: rgba(33, 30, 26, 0.78); }
.cta-content { position: relative; padding-block: 5.5rem; text-align: center; color: var(--ink-foreground); }
@media (min-width: 640px) { .cta-content { padding-block: 7.5rem; } }
.cta-title {
  margin: 1.75rem auto 0;
  max-width: 48rem;
  font-size: clamp(2rem, 5vw, 4rem);
  line-height: 1.08;
}

/* ---------- enquiry ---------- */
.enquiry-grid { display: grid; gap: 3rem; align-items: start; }
.enquiry-form { border: 1px solid var(--border); background: rgba(255,255,255,.32); padding: clamp(1.25rem, 3vw, 2.5rem); }
.form-grid { display: grid; gap: 1.25rem; margin-bottom: 1.5rem; }
.enquiry-form label { display: grid; gap: .5rem; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--link-strong); }
.enquiry-form input, .enquiry-form textarea { width: 100%; border: 1px solid var(--border); background: #fbf8f2; padding: .9rem 1rem; font: 300 .95rem/1.5 var(--font-sans); letter-spacing: .01em; color: var(--foreground); }
.enquiry-form textarea { resize: vertical; min-height: 8rem; }
.enquiry-form input:focus, .enquiry-form textarea:focus { border-color: var(--gold-deep); outline: 1px solid var(--gold-deep); }
.enquiry-form small, .form-error { color: #8d332c; text-transform: none; letter-spacing: 0; }
.form-success { margin-bottom: 1.25rem; border-left: 3px solid var(--gold-deep); padding: .85rem 1rem; background: var(--secondary); }
.honeypot { position: absolute !important; left: -9999px !important; }
@media (min-width: 700px) { .form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .form-grid .full { grid-column: 1 / -1; } }
@media (min-width: 1000px) { .enquiry-grid { grid-template-columns: .8fr 1.2fr; } }

/* ---------- portfolio ---------- */
.page-main { padding-top: 5rem; }
.page-title { margin-top: 1.5rem; max-width: 56rem; font-size: clamp(2.4rem, 6.5vw, 5.2rem); line-height: 1.02; }
.portfolio-hero {
  margin-top: 2.75rem;
  display: grid;
  align-items: start;
  gap: 1.25rem;
}
.portfolio-hero img {
  min-width: 0;
  height: auto;
}
@media (min-width: 640px) {
  .portfolio-hero { grid-template-columns: repeat(3, 1fr); }
  .portfolio-hero .hero-wide { grid-column: span 2; }
}

.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  border-block: 1px solid var(--border);
  padding-block: 1.25rem;
}
.filter {
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 0.625rem 1.25rem;
  font-size: 0.68rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--link-strong);
  transition: color .3s, border-color .3s, background-color .3s;
}
.filter:hover { border-color: var(--gold-deep); color: var(--gold-deep); }
.filter.is-active { background: var(--gold-deep); border-color: var(--gold-deep); color: var(--ink-foreground); }

.work-grid { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .work-grid { grid-template-columns: repeat(6, 1fr); } }
.work-card { position: relative; display: block; width: 100%; overflow: hidden; text-align: left; padding: 0; }
.work-card img { transition: transform 1.2s cubic-bezier(.22,1,.36,1); }
.work-card:hover img { transform: scale(1.05); }
.work-veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(33,30,26,.75), transparent 55%);
  opacity: 0;
  transition: opacity .5s;
}
.work-card:hover .work-veil { opacity: 1; }
.work-meta {
  position: absolute;
  inset: auto 1.5rem 1.5rem 1.5rem;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  color: var(--ink-foreground);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .5s, transform .5s;
}
.work-card:hover .work-meta { opacity: 1; transform: none; }
.work-meta .eyebrow { display: block; }
.work-title { display: block; margin-top: 0.5rem; font-family: var(--font-display); font-size: 1.5rem; }
.work-meta .ico { width: 1.25rem; height: 1.25rem; }
.empty { padding-block: 5rem; text-align: center; color: var(--muted-foreground); }

/* ---------- CMS pages ---------- */
.cms-page-hero { padding-bottom: clamp(2rem, 4vw, 4rem); }
.cms-page-grid { display: grid; gap: 2.5rem; align-items: end; }
.cms-page-image { width: 100%; max-height: 34rem; object-fit: cover; }
.cms-copy-section { padding-top: clamp(2.5rem, 4vw, 4.5rem); }
.cms-copy { max-width: 52rem; font-size: 1rem; line-height: 1.85; color: var(--foreground); }
.cms-copy > * + * { margin-top: 1.25rem; }
.cms-copy h2, .cms-copy h3 { margin-top: 2.25rem; font-family: var(--font-display); font-weight: 300; line-height: 1.15; }
.cms-copy h2 { font-size: clamp(2rem, 4vw, 3rem); }
.cms-copy h3 { font-size: clamp(1.5rem, 3vw, 2.1rem); }
.cms-copy ul { list-style: disc; padding-left: 1.25rem; }
@media (min-width: 900px) {
  .cms-page-grid:has(.cms-page-image) { grid-template-columns: .85fr 1.15fr; }
}

.spread { position: relative; overflow: hidden; }
.spread-img { height: 60vh; width: 100%; object-fit: cover; }
.spread-veil { position: absolute; inset: 0; background: rgba(33, 30, 26, 0.45); }
.spread-content { position: absolute; inset: auto 0 2.5rem 0; color: var(--ink-foreground); }
.spread-quote {
  margin-top: 1rem;
  max-width: 36rem;
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3.2vw, 2.6rem);
  line-height: 1.2;
  font-style: italic;
}

/* ---------- lightbox ---------- */
.services-page-hero{padding-bottom:clamp(3rem,6vw,5.5rem)}.services-showcase{padding:clamp(1.25rem,3vw,2.5rem) 0 var(--section-space)}.services-stack{display:grid;gap:clamp(1.25rem,2.5vw,2.5rem)}.service-panel{position:relative;display:grid;overflow:hidden;border-radius:1.1rem;background:linear-gradient(135deg,rgba(255,255,255,.78),rgba(249,244,237,.94));box-shadow:0 18px 55px -45px rgba(58,53,46,.45);border:1px solid rgba(217,208,192,.42)}.service-panel::before,.service-panel::after{content:"";position:absolute;width:12rem;height:12rem;border:1px solid rgba(143,116,66,.1);border-radius:50%;pointer-events:none}.service-panel::before{left:-7rem;bottom:-7rem}.service-panel::after{left:-4rem;bottom:-9rem}.service-panel-content{display:flex;flex-direction:column;justify-content:center;padding:clamp(2rem,5vw,4.75rem);z-index:1}.service-panel-content h2{margin-top:.65rem;font-size:clamp(2.5rem,5vw,4.5rem);line-height:.98}.service-ornament{display:flex;align-items:center;gap:.35rem;width:8rem;margin:1.25rem 0;color:var(--gold-deep);font-size:.75rem}.service-ornament i{display:block;height:1px;flex:1;background:var(--gold-deep)}.service-summary{max-width:36rem;color:#9b4f52;font-size:clamp(1.05rem,1.8vw,1.35rem);line-height:1.55}.service-features{display:grid;gap:.7rem;margin-top:1.75rem}.service-features li{display:flex;align-items:flex-start;gap:.7rem;color:var(--link-strong);font-size:.9rem}.service-features li>span{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;margin-top:.1rem;border:1px solid var(--gold-deep);border-radius:50%;color:var(--gold-deep);font-size:.62rem}.service-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:2rem}.service-actions .text-link{margin-top:0}.service-enquire{border-radius:.3rem;background:linear-gradient(110deg,#a9741f,#ce982e);color:#fff;padding:.9rem 1.5rem}.service-enquire:hover{background:var(--ink)}.service-panel-image{min-height:22rem;overflow:hidden}.service-panel-image img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.22,1,.36,1)}.service-panel-image:hover img{transform:scale(1.035)}
@media(min-width:700px){.service-features{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1.5rem}}
@media(min-width:960px){.service-panel{grid-template-columns:1fr 1.05fr;min-height:37rem}.service-panel-reverse{grid-template-columns:1.05fr 1fr}.service-panel-reverse .service-panel-content{order:2}.service-panel-reverse .service-panel-image{order:1}.service-panel-reverse::before,.service-panel-reverse::after{left:auto;right:-7rem}.service-panel-reverse::after{right:-4rem}.service-panel-image{min-height:100%;padding:1.25rem}.service-panel-image img{border-radius:.8rem}.service-panel-content{padding-inline:clamp(3rem,6vw,6rem)}}
@media(max-width:699px){.service-panel{border-radius:.75rem}.service-panel-content{padding:1.75rem 1.35rem}.service-panel-image{order:-1;min-height:17rem}.service-panel-content h2{font-size:2.35rem}.service-summary{font-size:1rem}.service-actions{align-items:stretch;flex-direction:column}.service-actions .btn,.service-actions .text-link{justify-content:center;text-align:center}.service-features{margin-top:1.35rem}}

/* ---------- lightbox ---------- */
.portfolio-category-grid{display:grid;gap:1rem}.portfolio-category-card{position:relative;display:block;min-height:24rem;overflow:hidden;color:#fff}.portfolio-category-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.22,1,.36,1)}.portfolio-category-card:hover img{transform:scale(1.045)}.portfolio-category-veil{position:absolute;inset:0;background:linear-gradient(to top,rgba(26,22,18,.82),rgba(26,22,18,.04) 65%)}.portfolio-category-copy{position:absolute;inset:auto 1.5rem 1.5rem;display:grid;gap:.55rem}.portfolio-category-copy strong{font-family:var(--font-display);font-size:clamp(2.1rem,4vw,3.5rem);font-weight:300;line-height:1}.portfolio-category-copy>span:last-child{max-width:30rem;font-size:.85rem;line-height:1.6;color:rgba(255,255,255,.78)}
.portfolio-back{display:inline-flex;margin-bottom:1.25rem}.project-card-grid{display:grid;gap:2.5rem 1.25rem}.project-card-image{position:relative;overflow:hidden}.project-card-image img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1s cubic-bezier(.22,1,.36,1)}.project-card-image>span{position:absolute;inset:auto 1rem 1rem auto;background:rgba(251,248,243,.94);padding:.65rem .9rem;font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;opacity:0;transform:translateY(.5rem);transition:.35s}.project-card:hover img{transform:scale(1.04)}.project-card:hover .project-card-image>span{opacity:1;transform:none}.project-card-copy{padding-top:1rem}.project-card-copy h2{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.05;margin:.55rem 0}.project-card-copy time{font-size:.75rem;color:var(--muted-foreground)}.portfolio-pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-top:4rem;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase}.portfolio-pagination a{color:var(--gold-deep);border-bottom:1px solid}.portfolio-pagination span{color:var(--muted-foreground)}
.project-card-image img{aspect-ratio:4/3}
.project-hero{position:relative;height:min(84vh,820px);min-height:520px;color:#fff}.project-hero>img{width:100%;height:100%;object-fit:cover}.project-hero-copy{position:absolute;inset:auto 0 clamp(2.5rem,6vw,5rem)}.project-hero-copy h1{max-width:70rem;font-family:var(--font-display);font-size:clamp(3rem,8vw,7rem);font-weight:300;line-height:.92}.project-date{padding-top:1.5rem;border-top:1px solid var(--border)}.gallery-hint{font-size:.72rem;color:var(--muted-foreground);letter-spacing:.12em;text-transform:uppercase}.project-gallery{display:grid;gap:1rem;margin-top:2.5rem}.project-gallery li{min-width:0}.project-gallery-card{height:100%}.project-gallery-card img{width:100%;height:100%;min-height:18rem;aspect-ratio:4/3;object-fit:cover}.gallery-zoom{position:absolute;right:1rem;bottom:1rem;padding:.6rem .8rem;background:rgba(251,248,243,.92);color:var(--ink);font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;opacity:0;transition:opacity .3s}.project-gallery-card:hover .gallery-zoom{opacity:1}
@media(min-width:640px){.portfolio-category-grid{grid-template-columns:repeat(2,1fr)}.portfolio-category-card:nth-child(3n+1){grid-column:span 2;min-height:34rem}.project-card-grid{grid-template-columns:repeat(2,1fr)}.project-gallery{grid-template-columns:repeat(2,1fr)}.project-gallery li:nth-child(3n+1){grid-row:span 2}.project-gallery li:nth-child(3n+1) img{aspect-ratio:auto}}
@media(min-width:1024px){.portfolio-category-grid{grid-template-columns:repeat(12,1fr)}.portfolio-category-card{grid-column:span 5;min-height:34rem}.portfolio-category-card:nth-child(3n+1){grid-column:span 7}.portfolio-category-card:nth-child(3n+3){grid-column:span 12;min-height:38rem}.project-card-grid{grid-template-columns:repeat(3,1fr);gap:4rem 1.5rem}}

/* ---------- lightbox ---------- */
.editorial-hero{padding:clamp(4rem,8vw,7rem) 0 clamp(2.5rem,5vw,4.5rem);border-bottom:1px solid var(--border)}
.editorial-hero .page-title{max-width:70rem}.editorial-hero em{color:var(--gold-deep);font-weight:300}
.editorial-intro{max-width:43rem;margin-top:1.75rem;color:var(--muted-foreground);font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.75}
.collection-grid{display:grid;gap:clamp(3.5rem,7vw,7rem)}.collection-card{display:grid;gap:1.75rem;align-items:center}.collection-image{overflow:hidden;display:block}.collection-image img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform 1s cubic-bezier(.22,1,.36,1)}.collection-image:hover img{transform:scale(1.035)}.collection-copy{max-width:34rem}.collection-copy h2{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.5rem);font-weight:300;line-height:1.05;margin:.65rem 0 1rem}.collection-copy>p{color:var(--muted-foreground);line-height:1.75}.text-link{display:inline-flex;margin-top:1.5rem;gap:.7rem;color:var(--link-strong);font-size:.72rem;letter-spacing:.17em;text-transform:uppercase;border-bottom:1px solid var(--gold-deep);padding-bottom:.35rem}.collection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:1.5rem}.collection-actions .text-link{margin-top:0}.collection-actions .btn{padding:.75rem 1.25rem}
@media(min-width:800px){.collection-card{grid-template-columns:1.1fr .9fr;gap:clamp(2.5rem,6vw,7rem)}.collection-card:nth-child(even){grid-template-columns:.9fr 1.1fr}.collection-card:nth-child(even) .collection-image{order:2}.collection-featured .collection-image img{aspect-ratio:16/10}}
.detail-hero{position:relative;height:min(78vh,760px);min-height:500px;color:#fff;overflow:hidden}.detail-hero>img{width:100%;height:100%;object-fit:cover}.detail-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(25,20,16,.72),rgba(25,20,16,.08) 65%)}.detail-heading{position:absolute;bottom:clamp(2rem,6vw,5rem);left:0;right:0}.detail-heading h1{font-family:var(--font-display);font-weight:300;font-size:clamp(3rem,8vw,7rem);line-height:.95;max-width:70rem}.detail-intro{display:grid;gap:2.5rem}.detail-intro h2{font-family:var(--font-display);font-weight:300;font-size:clamp(2rem,4vw,3.7rem);line-height:1.12}.feature-grid{display:grid;margin-top:2.5rem;border-top:1px solid var(--border)}.feature-item{padding:2rem 0;border-bottom:1px solid var(--border)}.feature-item span{color:var(--gold-deep);font-size:.72rem;letter-spacing:.15em}.feature-item h3{font-family:var(--font-display);font-size:1.75rem;font-weight:300;margin:.8rem 0}.feature-item p{color:var(--muted-foreground);line-height:1.7}.detail-gallery{display:grid;gap:1rem}.detail-gallery img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
@media(min-width:800px){.detail-intro{grid-template-columns:1fr 1fr;gap:8vw}.feature-grid{grid-template-columns:repeat(3,1fr)}.feature-item{padding:2.5rem;border-right:1px solid var(--border)}.detail-gallery{grid-template-columns:repeat(2,1fr)}.detail-gallery img:first-child{grid-row:span 2;aspect-ratio:auto}}
.story-grid{display:grid;gap:3rem;align-items:center}.story-grid>img{width:100%;max-height:700px;object-fit:cover}.values-grid{display:grid;margin-top:2.5rem;gap:2.5rem}.values-grid span{color:var(--gold-deep);font-size:.72rem}.values-grid h3,.team-card h3{font-family:var(--font-display);font-size:2rem;font-weight:300;margin:.75rem 0}.values-grid p,.team-card p{color:var(--muted-foreground);line-height:1.7}.team-grid{display:grid;gap:2rem;margin-top:3rem}.team-card img{width:100%;aspect-ratio:4/5;object-fit:cover}.team-card>div{padding-top:1.25rem}
@media(min-width:800px){.story-grid{grid-template-columns:1fr 1fr;gap:8vw}.values-grid,.team-grid{grid-template-columns:repeat(3,1fr)}}
.faq-layout{display:grid;gap:3rem}.faq-layout aside h2,.contact-aside h2{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.2rem);font-weight:300;line-height:1.1;margin:.8rem 0}.faq-group+ .faq-group{margin-top:3rem}.faq-item{border-bottom:1px solid var(--border)}.faq-item summary{display:flex;justify-content:space-between;gap:1rem;padding:1.4rem 0;font-family:var(--font-display);font-size:1.5rem;cursor:pointer}.faq-item summary::marker{display:none}.faq-item div{padding:0 2.5rem 1.5rem 0;color:var(--muted-foreground);line-height:1.75}
.gallery-filter-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:.5rem 2rem;margin-bottom:1.25rem}.gallery-filter-head>p:last-child{color:var(--muted-foreground);font-size:.8rem}.gallery-masonry{columns:1;column-gap:1rem}.gallery-entry{display:block;margin-bottom:1rem;break-inside:avoid}.gallery-entry[hidden]{display:none}.gallery-tile{display:block;position:relative;overflow:hidden}.gallery-tile img{width:100%;transition:transform 1s}.gallery-entry:nth-child(3n+2) .gallery-tile img{aspect-ratio:4/5;object-fit:cover}.gallery-tile:hover img{transform:scale(1.04)}.gallery-tile>div{position:absolute;inset:auto 0 0;padding:2rem;color:#fff;background:linear-gradient(transparent,rgba(20,17,14,.75))}.gallery-tile h2{font-family:var(--font-display);font-size:2rem;font-weight:300}
.contact-layout{display:grid;gap:4rem}.contact-aside>p{color:var(--muted-foreground);line-height:1.75}.contact-aside dl{margin-top:2.5rem}.contact-aside dt{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-deep);margin-top:1.3rem}.contact-aside dd{margin-top:.3rem;line-height:1.65}.contact-aside address{font-style:normal}.contact-phone-links{display:flex;flex-direction:column;align-items:flex-start}.contact-aside a{transition:color .25s ease}.contact-aside a:hover{color:var(--gold-deep)}.contact-form label{display:grid;gap:.6rem;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--link-strong)}.contact-form input,.contact-form select,.contact-form textarea{width:100%;border:0;border-bottom:1px solid var(--border);background:transparent;padding:.9rem 0;color:var(--foreground);font:400 .95rem var(--font-body);text-transform:none;letter-spacing:0}.contact-form textarea{border:1px solid var(--border);padding:1rem}.contact-form .btn{margin-top:1.5rem}.form-message{margin-top:1rem;color:var(--gold-deep)}
@media(min-width:700px){.gallery-masonry{columns:2}}@media(min-width:900px){.faq-layout,.contact-layout{grid-template-columns:.65fr 1.35fr;gap:8vw}.faq-layout aside{position:sticky;top:8rem;align-self:start}.gallery-masonry{columns:3}}

/* ---------- lightbox ---------- */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: flex;
  flex-direction: column;
  background: rgba(33, 30, 26, 0.97);
  color: var(--ink-foreground);
  padding: 1rem;
}
@media (min-width: 640px) { .lightbox { padding: 2rem; } }
.lightbox[hidden] { display: none; }
.lightbox-top, .lightbox-bottom { display: flex; align-items: center; justify-content: space-between; }
.lightbox-stage { display: flex; flex: 1; min-height: 0; align-items: center; justify-content: center; padding-block: 1rem; }
.lightbox-stage img { max-height: 100%; max-width: 100%; object-fit: contain; }
.lb-nav {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 0.5rem;
  font-size: 0.7rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  transition: color .3s;
}
.lb-nav:hover { color: var(--primary); }
.lb-count { font-size: 0.7rem; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(244,240,232,.5); }

/* ---------- footer ---------- */
.site-footer { background: var(--ink); color: var(--ink-foreground); }
.footer-grid { display: grid; gap: 3.5rem; padding-block: 5rem; }
@media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .footer-grid { grid-template-columns: 1.3fr 1fr 1fr 1fr; } }
.footer-brand { max-width: 24rem; }
.footer-logo { height: 6rem; width: auto; max-width: none; filter: brightness(0) invert(0.85) sepia(1) saturate(1.5); }
.footer-copy { margin-top: 1.5rem; font-size: 0.875rem; line-height: 1.7; color: rgba(244,240,232,.6); }
.socials { margin-top: 1.75rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }
.social {
  border: 1px solid rgba(244,240,232,.2);
  padding: 0.5rem 1rem;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  transition: color .3s, border-color .3s;
}
.social:hover { border-color: var(--primary); color: var(--primary); }
.foot-list { margin-top: 1.25rem; display: grid; gap: 0.625rem; font-size: 0.875rem; color: var(--link-on-dark); }
.foot-list a { transition: color .3s; }
.foot-list a:hover { color: var(--primary); }
.footer-nav-list a { display: inline-flex; align-items: center; gap: .55rem; }
.footer-nav-list a::before { content: '→'; color: var(--primary); font-size: 1rem; line-height: 1; opacity: .58; transform: translateX(0); transition: opacity .3s ease, transform .3s ease; }
.footer-nav-list a:hover::before, .footer-nav-list a:focus-visible::before { opacity: 1; transform: translateX(.2rem); }
.footer-contact-list { gap: 1.1rem; }
.footer-contact-list li { min-width: 0; }
.footer-contact-label { display: block; margin-bottom: .35rem; color: var(--primary); font-size: .64rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; }
.footer-contact-list address { font-style: normal; line-height: 1.75; }
.footer-contact-list a { overflow-wrap: anywhere; line-height: 1.55; }
.footer-phone-links { display: grid; gap: .2rem; }
.footer-stack { display: grid; gap: 2.5rem; align-content: start; }
.footer-bottom { border-top: 1px solid rgba(244,240,232,.1); }
.footer-bottom-inner {
  display: grid;
  gap: 1rem;
  padding-block: 1.5rem;
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(244, 240, 232, 0.72);
  text-align: center;
}
@media (min-width: 900px) {
  .footer-bottom-inner { grid-template-columns: 1fr auto 1fr; align-items: center; text-align: left; }
}
.legal { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 1.5rem; }
.legal a:hover { color: var(--primary); }
.footer-credit { justify-self: center; }
.footer-credit a { color: var(--primary); transition: color .3s ease; }
.footer-credit a:hover, .footer-credit a:focus-visible { color: var(--ink-foreground); }
@media (min-width: 900px) { .footer-credit { justify-self: end; text-align: right; } }

/* ---------- reveal ---------- */
.service-panel { scroll-margin-top: 6rem; }
.portfolio-category-card[hidden] { display: none; }

/* ---------- launch accessibility and legibility ---------- */
:root { --gold-functional: #73592e; --field-border: #b9ad99; }
body { font-weight: 400; }
:focus-visible { outline: 2px solid var(--gold-functional); outline-offset: 3px; }

.btn {
  min-height: 3rem;
  justify-content: center;
  padding: .9rem 1.8rem;
  font-size: .8125rem;
  font-weight: 500;
  letter-spacing: .13em;
  line-height: 1.2;
}
.btn-light { background: #fffaf1; color: var(--ink); }
.btn-light:hover { background: #d8b66f; color: var(--ink); }
.btn-ghost-light { background: rgba(33,30,26,.55); border-color: rgba(255,250,241,.85); color: #fffaf1; }
.btn-ghost-light:hover { background: #fffaf1; border-color: #fffaf1; color: var(--ink); }
.btn-outline-gold,.package-enquire { border-color: var(--gold-functional); color: var(--ink); background: rgba(255,255,255,.34); }
.btn-outline-gold:hover,.package-enquire:hover { background: var(--gold-functional); border-color: var(--gold-functional); color: #fffaf1; }
.btn-ink { background: var(--ink); color: #fffaf1; }
.btn-ink:hover { background: var(--gold-functional); color: #fff; }
.btn:disabled { cursor: wait; opacity: .68; }

.link-gold,.text-link {
  color: var(--gold-functional);
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .13em;
  line-height: 1.45;
}
.gold { color: var(--gold-functional); }

.nav-link { min-height: 2.75rem; font-size: .82rem; font-weight: 500; letter-spacing: .13em; }
.btn-enquire { display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;padding:.65rem 1.4rem;font-size:.78rem;font-weight:500;letter-spacing:.13em;border-color:var(--gold-functional);color:var(--gold-functional); }
.site-header.over-hero:not(.is-scrolled) { background: linear-gradient(to bottom,rgba(22,18,15,.58),rgba(22,18,15,.12) 72%,transparent); }
.site-header.over-hero:not(.is-scrolled) .btn-enquire { background:rgba(22,18,15,.42);border-color:rgba(255,250,241,.85);color:#fffaf1; }
.dropdown-inner { background:#fffdf9;box-shadow:0 24px 55px -25px rgba(33,30,26,.48); }
.dropdown-list a { min-height:2.5rem;display:flex;align-items:center;color:var(--ink); }

.hero-veil { background:linear-gradient(to top,rgba(24,20,17,.92),rgba(24,20,17,var(--hero-overlay,.58)) 58%,rgba(24,20,17,.62)); }
.hero-sub { color:rgba(255,255,255,.9);font-weight:400; }
.cat-veil,.portfolio-category-veil { background:linear-gradient(to top,rgba(22,18,15,.82),rgba(22,18,15,.08) 68%); }
.gallery-tile>div { background:linear-gradient(transparent,rgba(20,17,14,.84)); }
.teaser-veil { background:linear-gradient(to top,rgba(24,20,16,.82),rgba(24,20,16,0) 68%); }

.filter { min-height:2.75rem;padding:.68rem 1.2rem;font-size:.75rem;font-weight:500;letter-spacing:.12em;border-color:var(--field-border); }
.filter:hover { border-color:var(--gold-functional);color:var(--ink); }
.filter.is-active { background:var(--gold-functional);border-color:var(--gold-functional);color:#fffaf1; }

.enquiry-form label,.contact-form label { font-size:.8rem;font-weight:500;letter-spacing:.1em;color:var(--ink); }
.enquiry-form input,.enquiry-form select,.enquiry-form textarea,.contact-form input,.contact-form select,.contact-form textarea {
  min-height:3.125rem;
  border-color:var(--field-border);
  background:#fffdf9;
  color:var(--ink);
  font:400 1rem/1.5 var(--font-sans);
}
.contact-form input,.contact-form select { padding:.8rem .65rem;border:1px solid var(--field-border); }
.enquiry-form input:focus,.enquiry-form select:focus,.enquiry-form textarea:focus,.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus { outline:2px solid var(--gold-functional);outline-offset:1px;border-color:var(--gold-functional); }
.form-error,.enquiry-form small { color:#7c241e;font-weight:500; }

.m-row>a,.m-parent-toggle { min-height:3rem;font-weight:400; }
.m-sub a { min-height:2.75rem;display:flex;align-items:center;font-size:.9rem;font-weight:500;color:var(--foreground); }
.m-sub .m-view-all { font-size:.76rem;color:var(--gold-functional); }

@media(max-width:639px){
  .filter-bar{flex-wrap:nowrap;overflow-x:auto;padding-bottom:1rem;scrollbar-width:thin}.filter{flex:0 0 auto}.btn{width:100%}.hero-actions{align-items:stretch}.link-gold,.text-link{font-size:.8rem}.site-header.over-hero:not(.is-scrolled){background:linear-gradient(to bottom,rgba(22,18,15,.68),rgba(22,18,15,.08));}
}
.package-enquire {
  border: 1px solid var(--gold-deep);
  background: transparent;
  color: var(--link-strong);
  padding: 0.9rem 1.5rem;
}
.package-enquire:hover { background: var(--gold-deep); color: #fff; }
.venue-meta { display: flex; flex-wrap: wrap; gap: .55rem 1.25rem; margin-top: 1.25rem; color: var(--gold-deep); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.venue-meta span + span::before { content: "·"; margin-right: 1.25rem; }
.about-hero{min-height:min(74vh,760px);display:flex;align-items:flex-end;background-size:cover;background-position:center;color:#fff}.about-hero-inner{padding-top:clamp(8rem,14vw,12rem);padding-bottom:clamp(4rem,8vw,7rem)}.about-hero .page-title{max-width:68rem}.about-hero .editorial-intro{color:rgba(255,255,255,.78)}.about-editorial,.about-vision,.about-why,#meet-the-team{scroll-margin-top:6rem}.about-image{overflow:hidden}.about-image img{width:100%;aspect-ratio:4/5;object-fit:cover}.about-vision-head{max-width:54rem}.vision-grid{display:grid;gap:2rem;margin-top:3rem}.vision-grid article{padding-top:1.5rem;border-top:1px solid var(--border)}.vision-grid article>span,.why-list>li>span{color:var(--gold-deep);font-size:.7rem;letter-spacing:.16em}.vision-grid h3{margin:.8rem 0 1rem;font-family:var(--font-display);font-size:clamp(2rem,4vw,3.2rem);font-weight:300}.vision-image img{width:100%;height:100%;min-height:24rem;object-fit:cover}.section-side-copy{max-width:30rem;color:var(--muted-foreground);line-height:1.7}.why-list{display:grid;margin-top:2.25rem;border-top:1px solid var(--border)}.why-list li{display:grid;grid-template-columns:2.5rem 1fr;gap:1rem;padding:1.3rem 0;border-bottom:1px solid var(--border)}.why-list h3{font-family:var(--font-display);font-size:1.55rem;font-weight:300}.why-list p{margin-top:.35rem;color:var(--muted-foreground);line-height:1.6}@media(min-width:800px){.vision-grid{grid-template-columns:1fr 1fr}.vision-image{grid-column:span 2}.vision-image img{aspect-ratio:16/7}}@media(min-width:1100px){.vision-grid{grid-template-columns:.8fr .8fr 1.4fr;align-items:stretch}.vision-image{grid-column:auto}.vision-image img{aspect-ratio:auto;min-height:30rem}}

/* Keep section CTAs and small metadata aligned with the launch contrast system. */
.package-enquire { border-color:var(--gold-functional);background:rgba(255,255,255,.38);color:var(--ink);font-weight:500; }
.package-enquire:hover { background:var(--gold-functional);border-color:var(--gold-functional);color:#fffaf1; }
.venue-meta { color:var(--gold-functional);font-size:.75rem;font-weight:500;letter-spacing:.1em; }
.about-hero .editorial-intro { color:rgba(255,255,255,.9);font-weight:400; }

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 1s cubic-bezier(.22,1,.36,1), transform 1s cubic-bezier(.22,1,.36,1);
}
.reveal.is-visible { opacity: 1; transform: none; }

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