:root {
  --electric-purple: #a020f0;
  --electric-green: #39ff14;
  --deep-purple: #2b0037;
  --charcoal: #171a20;
  --charcoal-2: #0d0f14;
  --soft-white: #f8fafc;
  --ink: #202126;
  --muted: #68717e;
  --line: rgba(23, 26, 32, 0.14);
  --wedding-ivory: #f7f1e8;
  --wedding-white: #fffcf8;
  --wedding-plum: #71445e;
  --wedding-sage: #7f9a78;
  --wedding-olive: #7b8364;
  --wedding-champagne: #b89b63;
  --wedding-charcoal: #282326;
  --font-display: "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --font-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-serif: Iowan Old Style, Baskerville, "Times New Roman", serif;
  --content: 1200px;
  --narrow: 780px;
  --radius: 1.35rem;
  --shadow: 0 24px 70px rgba(4, 6, 10, 0.2);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--soft-white); font-family: var(--font-body); line-height: 1.6; text-rendering: optimizeLegibility; }
img, video { display: block; max-width: 100%; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid var(--electric-green); outline-offset: 4px; }
::selection { color: var(--charcoal); background: var(--electric-green); }
.skip-link { position: fixed; z-index: 1000; top: .75rem; left: .75rem; padding: .7rem 1rem; color: #fff; background: var(--charcoal); border-radius: 999px; transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }

.site-header { position: sticky; z-index: 50; top: 0; color: #fff; background: rgba(9,10,15,.94); border-bottom: 1px solid rgba(255,255,255,.1); backdrop-filter: blur(18px); }
.nav-shell, .social-shell { width: min(calc(100% - 2rem), var(--content)); margin-inline: auto; }
.nav-shell { min-height: 70px; display: flex; align-items: center; gap: 1.25rem; }
.brand { display: inline-flex; flex: 0 0 auto; flex-direction: column; line-height: 1; text-decoration: none; }
.brand strong { font-family: var(--font-display); font-size: 1.28rem; font-weight: 900; letter-spacing: .12em; }
.brand span { margin-top: .32rem; color: var(--electric-green); font-size: .59rem; font-weight: 850; letter-spacing: .29em; }
.nav-toggle { display: none; margin-left: auto; padding: .62rem .9rem; color: #fff; background: transparent; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; }
.primary-nav { margin-left: auto; }
.nav-list { display: flex; align-items: center; gap: .12rem; padding: 0; margin: 0; list-style: none; }
.nav-list a { display: block; padding: .52rem .63rem; color: rgba(255,255,255,.78); border-radius: 999px; font-size: .78rem; font-weight: 780; text-decoration: none; }
.nav-list a:hover, .nav-list a[aria-current="page"] { color: #fff; background: rgba(255,255,255,.1); }
.nav-list .nav-cta { color: var(--charcoal); background: var(--electric-green); }
.nav-list .nav-cta:hover { color: var(--charcoal); background: #75ff5d; }
.header-socialbar { border-top: 1px solid rgba(255,255,255,.07); }
.social-shell { min-height: 34px; display: flex; align-items: center; justify-content: flex-end; gap: .85rem; overflow-x: auto; scrollbar-width: none; }
.social-shell::-webkit-scrollbar { display: none; }
.social-label { color: rgba(255,255,255,.42); font-size: .64rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.social-quick { display: flex; align-items: center; gap: .2rem; white-space: nowrap; }
.social-quick a, .social-quick span { padding: .2rem .45rem; color: rgba(255,255,255,.76); font-size: .67rem; font-weight: 800; text-decoration: none; }
.social-quick a:hover { color: var(--electric-green); }
.social-quick .social-pending { color: rgba(255,255,255,.34); cursor: help; }

.container { width: min(calc(100% - 2rem), var(--content)); margin-inline: auto; }
.narrow { width: min(calc(100% - 2rem), var(--narrow)); margin-inline: auto; }
.section { padding: clamp(4.2rem,8vw,7rem) 0; }
.section-sm { padding: clamp(3rem,5vw,4.6rem) 0; }
.section-dark { color: #fff; background: var(--charcoal-2); }
.wedding-panel { background: var(--wedding-ivory); }
.events-dark-panel { color: #fff; background: #242830; }
.events-faq-panel { background: #e9edf2; }
.feature-stack { grid-template-columns: 1fr; }
.section-ampt { position: relative; overflow: hidden; color: #fff; background: radial-gradient(circle at 12% 20%,rgba(160,32,240,.25),transparent 33%), radial-gradient(circle at 90% 70%,rgba(57,255,20,.12),transparent 30%), linear-gradient(140deg,#090a0f 0%,#180721 55%,#0d1711 100%); }
.section-ampt::before { content: ""; position: absolute; inset: 1.25rem; pointer-events: none; border: 1px solid transparent; border-radius: 2rem; background: linear-gradient(130deg,rgba(160,32,240,.62),rgba(57,255,20,.45)) border-box; mask: linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0); mask-composite: exclude; opacity: .45; }
.eyebrow { margin: 0 0 .8rem; color: var(--electric-purple); font-size: .74rem; font-weight: 900; letter-spacing: .21em; text-transform: uppercase; }
.section-dark .eyebrow, .section-ampt .eyebrow, .theme-party .eyebrow, .theme-lessons .eyebrow { color: var(--electric-green); }
.theme-wedding .eyebrow { color: var(--wedding-plum); }
.theme-events .eyebrow { color: var(--electric-purple); }
h1, h2, h3 { margin: 0; line-height: 1.05; text-wrap: balance; }
h1, h2 { letter-spacing: -.04em; }
h1 { font-size: clamp(3.3rem,7.5vw,7.2rem); }
h2 { font-size: clamp(2.25rem,5vw,4.5rem); }
h3 { font-size: clamp(1.2rem,2vw,1.65rem); }
p { margin: 0; }
.lede { max-width: 730px; margin-top: 1.25rem; font-size: clamp(1.08rem,2vw,1.35rem); line-height: 1.55; }
.muted { color: var(--muted); }
.section-heading { display: grid; gap: 1rem; margin-bottom: 2.4rem; }
.section-heading p { max-width: 710px; color: var(--muted); font-size: 1.06rem; }
.section-dark .section-heading p, .section-ampt .section-heading p, .theme-party .section-heading p, .theme-lessons .section-heading p { color: rgba(255,255,255,.7); }

.button-row { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.8rem; }
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: .72rem 1.15rem; color: #fff; background: var(--charcoal); border: 1px solid var(--charcoal); border-radius: 999px; font-weight: 850; text-decoration: none; transition: transform 180ms ease,box-shadow 180ms ease,background 180ms ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(5,7,10,.2); }
.button--electric { color: var(--charcoal); background: var(--electric-green); border-color: var(--electric-green); }
.button--purple { background: var(--electric-purple); border-color: var(--electric-purple); }
.button--ghost { color: inherit; background: transparent; border-color: currentColor; }
.button--light { color: var(--charcoal); background: #fff; border-color: #fff; }
.text-link { font-weight: 850; text-underline-offset: .25em; }

.hero-home { position: relative; overflow: hidden; color: #fff; background: radial-gradient(circle at 15% 25%,rgba(160,32,240,.34),transparent 34%), radial-gradient(circle at 82% 74%,rgba(57,255,20,.15),transparent 28%), linear-gradient(135deg,#08090d 0%,#210728 57%,#0b1710 100%); }
.hero-home::after { content: ""; position: absolute; inset: auto -12vw -28vw auto; width: 60vw; height: 60vw; border: 2px solid rgba(57,255,20,.32); border-radius: 50%; box-shadow: 0 0 90px rgba(57,255,20,.12); }
.hero-home .container { position: relative; z-index: 1; min-height: clamp(520px,67vw,720px); display: grid; grid-template-columns: minmax(0,1.08fr) minmax(340px,.92fr); gap: clamp(2rem,6vw,5rem); align-items: center; padding-block: clamp(3.5rem,7vw,6.5rem); }
.hero-home .hero-copy { max-width: 760px; }
.hero-home h1 { font-family: var(--font-display); font-weight: 900; letter-spacing: -.045em; text-transform: uppercase; }
.hero-home .lede { color: rgba(255,255,255,.78); }
.accent-word { color: transparent; background: linear-gradient(90deg,var(--electric-purple),#d785ff 44%,var(--electric-green)); background-clip: text; }
.hero-visual { position: relative; min-height: 510px; padding: 6px; overflow: hidden; background: linear-gradient(145deg,var(--electric-purple),var(--electric-green)); border-radius: 2rem; box-shadow: 0 0 75px rgba(160,32,240,.25); }
.hero-visual::after { content: "UOW LAW BALL · REAL EVENT"; position: absolute; right: 1.1rem; bottom: 1.1rem; padding: .42rem .65rem; color: rgba(255,255,255,.78); background: rgba(7,8,12,.66); border: 1px solid rgba(255,255,255,.16); border-radius: 999px; font-size: .58rem; font-weight: 850; letter-spacing: .16em; }
.hero-visual img { position: absolute; inset: 6px; width: calc(100% - 12px); height: calc(100% - 12px); object-fit: cover; object-position: 50% 50%; border-radius: calc(2rem - 5px); }
.hero-visual .hero-scrim { position: absolute; inset: 6px; background: linear-gradient(180deg,transparent 45%,rgba(7,8,12,.5)); border-radius: calc(2rem - 5px); }

.occasion-section { position: relative; color: #fff; background: #08090d; padding: clamp(3.4rem,6vw,5.2rem) 0 clamp(4.4rem,7vw,6.5rem); }
.occasion-intro { margin-bottom: 1.8rem; }
.occasion-intro h2 { font-family: var(--font-display); font-size: clamp(2.2rem,5vw,4.5rem); letter-spacing: .02em; text-transform: uppercase; }
.journey-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.journey-card { position: relative; isolation: isolate; min-height: 310px; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; padding: 1.35rem; color: #fff; background: #1b1e25 center/cover; border: 1px solid rgba(255,255,255,.16); border-radius: 1.35rem; text-decoration: none; box-shadow: 0 18px 50px rgba(0,0,0,.25); transition: transform 180ms ease,box-shadow 180ms ease; }
.journey-card::before { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg,rgba(8,9,13,.05) 18%,rgba(8,9,13,.94) 100%); }
.journey-card::after { content: ""; position: absolute; z-index: 1; top: .7rem; right: .7rem; width: 32px; height: 32px; border-top: 2px solid var(--electric-green); border-right: 2px solid var(--electric-purple); }
.journey-card:hover { transform: translateY(-6px); box-shadow: 0 26px 70px rgba(0,0,0,.34); }
.journey-card .journey-no { margin-bottom: auto; color: rgba(255,255,255,.7); font-size: .68rem; font-weight: 900; letter-spacing: .17em; }
.journey-card strong { font-size: clamp(1.25rem,2.1vw,1.75rem); line-height: 1.08; text-transform: uppercase; }
.journey-card span:last-child { margin-top: .7rem; color: var(--electric-green); font-size: .73rem; font-weight: 850; letter-spacing: .11em; text-transform: uppercase; }
.journey-card--wedding { background-image: url("../images/wedding-card-caitlin-jonathan.jpg"); background-position: 50% 50%; }
.journey-card--wedding::after { border-color: var(--wedding-champagne); }
.journey-card--wedding span:last-child { color: var(--wedding-ivory); }
.journey-card--party { background-image: url("../images/party-hero.jpg"); border-color: rgba(57,255,20,.7); }
.journey-card--events { background-image: url("../images/corporate-event.jpg"); }
.journey-card--lessons { background-image: linear-gradient(rgba(43,0,55,.2),rgba(14,16,20,.48)),url("../images/lesson-young-dj-smiling.jpg"); background-position: 42% 50%; border-color: rgba(160,32,240,.8); }

.service-hero { padding: clamp(4.5rem,8vw,7.5rem) 0; }
.service-hero .container { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,.72fr); gap: clamp(2rem,6vw,5rem); align-items: center; }
.service-hero h1 { max-width: 800px; }
.service-hero .hero-copy { max-width: 830px; }
.service-hero .hero-copy .lede { color: inherit; opacity: .78; }
.hero-side { min-height: 520px; }
.theme-wedding, .theme-wedding body { color: var(--wedding-charcoal); background: var(--wedding-white); }
.theme-wedding .service-hero { background: radial-gradient(circle at 84% 20%,rgba(184,155,99,.2),transparent 32%),linear-gradient(145deg,var(--wedding-ivory),var(--wedding-white)); }
.theme-wedding h1, .theme-wedding h2 { font-family: var(--font-serif); font-weight: 500; }
.theme-party, .theme-party body { color: #fff; background: var(--charcoal-2); }
.theme-party .service-hero { background: radial-gradient(circle at 14% 28%,rgba(160,32,240,.38),transparent 34%),radial-gradient(circle at 88% 70%,rgba(57,255,20,.17),transparent 30%),var(--charcoal); }
.theme-events, .theme-events body { color: var(--ink); background: var(--soft-white); }
.theme-events .service-hero { background: linear-gradient(135deg,#171a20 0%,#30353d 40%,#f8fafc 100%); }
.theme-events .service-hero { padding-block: clamp(3.5rem,6vw,5.5rem); }
.theme-events .service-hero h1 { font-size: clamp(3rem,4.5vw,4.1rem); text-wrap: pretty; }
.theme-events .service-hero .hero-copy { padding: clamp(1.4rem,4vw,2.2rem); color: #fff; background: rgba(23,26,32,.82); border: 1px solid rgba(255,255,255,.14); border-radius: var(--radius); backdrop-filter: blur(9px); }
.theme-lessons, .theme-lessons body { color: #fff; background: var(--charcoal-2); }
.theme-lessons .service-hero { background: radial-gradient(circle at 18% 30%,rgba(160,32,240,.34),transparent 36%),radial-gradient(circle at 85% 72%,rgba(57,255,20,.15),transparent 30%),linear-gradient(140deg,#101216,var(--deep-purple)); }

.split { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr); gap: clamp(2rem,6vw,5rem); align-items: center; }
.split--reverse > :first-child { order: 2; }
.copy-stack { display: grid; gap: 1.2rem; }
.copy-stack p { color: var(--muted); }
.section-dark .copy-stack p, .theme-party .copy-stack p, .theme-lessons .copy-stack p { color: rgba(255,255,255,.7); }
.media-frame { position: relative; min-height: 470px; overflow: hidden; border-radius: var(--radius); box-shadow: var(--shadow); }
.media-frame img, .media-frame video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.media-frame--wedding { padding: 6px; background: linear-gradient(135deg,var(--wedding-plum),var(--wedding-champagne),var(--wedding-sage)); }
.media-frame--wedding img, .media-frame--wedding video { inset: 6px; width: calc(100% - 12px); height: calc(100% - 12px); border-radius: calc(var(--radius) - 5px); }
.media-frame--party { border: 5px solid var(--electric-green); box-shadow: 0 0 0 2px var(--electric-purple),var(--shadow); }
.media-frame--events { border: 3px solid var(--electric-purple); box-shadow: 0 0 0 1px var(--electric-green),var(--shadow); }
.media-frame--lessons { border: 3px solid var(--electric-purple); box-shadow: 0 0 38px rgba(160,32,240,.24); }
.media-caption { position: absolute; z-index: 2; right: 1rem; bottom: 1rem; left: 1rem; padding: .8rem 1rem; color: #fff; background: rgba(16,18,23,.78); border: 1px solid rgba(255,255,255,.12); border-radius: .8rem; backdrop-filter: blur(10px); font-size: .84rem; }

.feature-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; }
.feature { padding: 1.5rem; background: #fff; border: 1px solid var(--line); border-radius: 1rem; }
.feature .number { display: block; margin-bottom: 1.05rem; color: var(--electric-purple); font-size: .72rem; font-weight: 900; letter-spacing: .17em; }
.feature p { margin-top: .7rem; color: var(--muted); }
.theme-party .feature, .theme-lessons .feature { background: rgba(255,255,255,.055); border-color: rgba(255,255,255,.15); }
.theme-party .feature p, .theme-lessons .feature p { color: rgba(255,255,255,.7); }
.events-dark-panel .copy-stack p { color: rgba(255,255,255,.72); }
.theme-party .feature .number, .theme-lessons .feature .number { color: var(--electric-green); }

.journey-switcher { padding: 1.35rem 0; }
.journey-switcher--dark { color: #fff; background: #0a0c11; }
.journey-switcher--light { background: var(--wedding-ivory); border-block: 1px solid rgba(113,68,94,.15); }
.journey-switcher__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .85rem; }
.journey-switcher__head p { font-size: .7rem; font-weight: 900; letter-spacing: .18em; text-transform: uppercase; }
.journey-switcher__head a { font-size: .78rem; font-weight: 800; }
.journey-switcher__grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .7rem; }
.journey-mini { position: relative; min-height: 88px; display: flex; align-items: flex-end; overflow: hidden; padding: .95rem; color: #fff; background: #20242c center/cover; border: 1px solid rgba(255,255,255,.2); border-radius: .85rem; font-size: .83rem; font-weight: 900; line-height: 1.15; text-decoration: none; text-transform: uppercase; }
.journey-mini::before { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg,rgba(8,9,13,.92),rgba(8,9,13,.25)); }
.journey-mini span { position: relative; }
.journey-mini--wedding { background-image: url("../images/wedding-jc-24.jpg"); background-position: 50% 55%; }
.journey-mini--party { background-image: url("../images/party-hero.jpg"); }
.journey-mini--events { background-image: url("../images/corporate-disability-trust-room.jpg"); background-position: 50% 58%; }
.journey-mini--lessons { background-image: url("../images/corporate-disability-trust-decks.jpg"); background-position: 50% 62%; }

.media-gallery { display: grid; grid-template-columns: 1.35fr .85fr .85fr; grid-auto-rows: 255px; gap: 1rem; }
.media-tile { position: relative; min-width: 0; overflow: hidden; margin: 0; background: #1a1d24; border-radius: 1.05rem; }
.media-tile:first-child { grid-row: span 2; }
.media-tile img, .media-tile video { width: 100%; height: 100%; object-fit: cover; }
.media-tile figcaption { position: absolute; right: .75rem; bottom: .75rem; left: .75rem; padding: .62rem .72rem; color: #fff; background: rgba(11,13,18,.72); border-radius: .65rem; backdrop-filter: blur(8px); font-size: .75rem; }
.media-placeholder { min-height: 100%; display: grid; place-items: center; padding: 1.25rem; color: rgba(255,255,255,.74); background: linear-gradient(135deg,rgba(160,32,240,.23),rgba(57,255,20,.08)),repeating-linear-gradient(135deg,#161922 0,#161922 12px,#1d2029 12px,#1d2029 24px); border: 1px dashed rgba(255,255,255,.35); border-radius: 1.05rem; text-align: center; }
.media-placeholder strong { display: block; color: #fff; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; }
.media-placeholder span { display: block; margin-top: .45rem; font-size: .75rem; }
.theme-wedding .media-placeholder { color: var(--wedding-plum); background: repeating-linear-gradient(135deg,#eee5da 0,#eee5da 12px,#f8f2e9 12px,#f8f2e9 24px); border-color: rgba(113,68,94,.4); }
.theme-wedding .media-placeholder strong { color: var(--wedding-plum); }

.real-wedding-story { margin-top: 2rem; padding: clamp(1rem,3vw,2rem); background: linear-gradient(145deg,#fff,var(--wedding-ivory)); border: 1px solid rgba(113,68,94,.15); border-radius: var(--radius); box-shadow: 0 20px 60px rgba(35,31,34,.08); }
.real-wedding-story__lead { display: grid; grid-template-columns: minmax(280px,.8fr) minmax(0,1.2fr); gap: clamp(1.5rem,5vw,4rem); align-items: center; }
.story-portrait { position: relative; min-height: 520px; overflow: hidden; margin: 0; border-radius: 1.2rem; }
.story-portrait img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; }
.story-portrait figcaption { position: absolute; right: .8rem; bottom: .8rem; left: .8rem; padding: .72rem .85rem; color: #fff; background: rgba(35,31,34,.74); border-radius: .7rem; font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; backdrop-filter: blur(8px); }
.story-copy h3, .wedding-story-photo h3 { font-family: var(--font-serif); font-size: clamp(1.8rem,3.2vw,3rem); font-weight: 500; line-height: 1.08; }
.story-moments { display: grid; gap: .75rem; margin: .25rem 0 0; padding: 0; list-style: none; }
.story-moments li { display: grid; grid-template-columns: 105px 1fr; gap: .8rem; padding-top: .75rem; border-top: 1px solid rgba(113,68,94,.16); }
.story-moments strong { color: var(--wedding-plum); }
.story-moments span { color: var(--muted); }
.wedding-video-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; margin-top: clamp(1.5rem,4vw,3rem); }
.wedding-video-card { overflow: hidden; background: #fff; border: 1px solid rgba(113,68,94,.16); border-radius: 1rem; }
.youtube-shell { aspect-ratio: 9/16; overflow: hidden; background: #17131a; }
.youtube-preview { position: relative; width: 100%; height: 100%; display: grid; place-items: center; overflow: hidden; padding: 0; color: #fff; background: #17131a; border: 0; cursor: pointer; }
.youtube-preview img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.youtube-preview__shade { position: absolute; inset: 0; background: linear-gradient(180deg,rgba(25,18,23,.08),rgba(25,18,23,.72)); }
.youtube-preview__play { position: relative; width: 64px; height: 64px; display: grid; place-items: center; padding-left: .2rem; background: var(--wedding-plum); border: 2px solid rgba(255,255,255,.88); border-radius: 50%; box-shadow: 0 12px 30px rgba(0,0,0,.28); font-size: 1.25rem; transition: transform 180ms ease,background 180ms ease; }
.youtube-preview:hover .youtube-preview__play, .youtube-preview:focus-visible .youtube-preview__play { transform: scale(1.08); background: var(--electric-purple); }
.youtube-preview__label { position: absolute; right: .9rem; bottom: .9rem; left: .9rem; font-size: .73rem; font-weight: 850; letter-spacing: .08em; text-align: left; text-transform: uppercase; }
.youtube-embed { width: 100%; height: 100%; border: 0; }
.party-video-hero .youtube-shell { position: absolute; inset: 0; aspect-ratio: auto; }
.party-video-hero .youtube-preview__play { background: var(--electric-purple); }
.party-video-hero .youtube-preview__label { bottom: 6.8rem; text-align: center; }
.wedding-video-copy { display: grid; gap: .45rem; padding: 1rem; }
.wedding-video-copy > span { color: var(--wedding-plum); font-size: .66rem; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.wedding-video-copy h4 { font-size: 1.05rem; }
.wedding-video-copy p { color: var(--muted); font-size: .84rem; }
.wedding-video-copy a { color: var(--wedding-plum); font-size: .78rem; font-weight: 850; }
.wedding-story-photo { display: grid; grid-template-columns: minmax(250px,.7fr) minmax(0,1.3fr); gap: clamp(1.5rem,5vw,4rem); align-items: center; margin-top: clamp(1.5rem,4vw,3rem); padding-top: clamp(1.5rem,4vw,3rem); border-top: 1px solid rgba(113,68,94,.16); }
.wedding-story-photo figure { position: relative; min-height: 420px; overflow: hidden; margin: 0; border-radius: 1rem; }
.wedding-story-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.wedding-story-photo figcaption { position: absolute; right: .7rem; bottom: .7rem; left: .7rem; padding: .65rem .75rem; color: #fff; background: rgba(35,31,34,.74); border-radius: .65rem; font-size: .75rem; }
.wedding-story-photo p:last-child { margin-top: 1rem; color: var(--muted); }
.more-wedding-moments { margin-top: clamp(2rem,5vw,4rem); }
.wedding-moment-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; margin-top: 1rem; }
.wedding-moment-grid figure { position: relative; min-height: 330px; overflow: hidden; margin: 0; border-radius: 1rem; }
.wedding-moment-grid img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.wedding-moment-grid figcaption { position: absolute; right: .7rem; bottom: .7rem; left: .7rem; padding: .65rem .75rem; color: #fff; background: rgba(35,31,34,.76); border-radius: .65rem; font-size: .75rem; backdrop-filter: blur(7px); }
.wedding-gallery-more { margin-top: 1.25rem; background: #fff; border: 1px solid rgba(113,68,94,.18); border-radius: 1rem; }
.wedding-gallery-more > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.2rem; color: var(--wedding-plum); cursor: pointer; font-weight: 850; list-style-position: inside; }
.wedding-gallery-more > summary small { color: var(--muted); font-weight: 650; text-align: right; }
.client-gallery { columns: 3 260px; column-gap: 1rem; padding: 0 1rem 1rem; }
.client-gallery figure { position: relative; break-inside: avoid; overflow: hidden; margin: 0 0 1rem; background: var(--wedding-ivory); border-radius: .9rem; }
.client-gallery img { width: 100%; height: auto; display: block; }
.client-gallery figcaption { padding: .7rem .8rem; color: var(--muted); font-size: .75rem; }

.law-ball-lead { overflow: hidden; margin: clamp(1.5rem,4vw,3rem) 0 1rem; background: #11141a; border: 2px solid var(--electric-purple); border-radius: var(--radius); }
.law-ball-lead img { width: 100%; height: auto; display: block; }
.law-ball-lead figcaption { padding: .85rem 1rem; color: rgba(255,255,255,.82); font-size: .78rem; }
.law-ball-moment-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; }
.law-ball-moment-grid figure { overflow: hidden; margin: 0; background: #11141a; border-radius: 1rem; }
.law-ball-moment-grid img { width: 100%; aspect-ratio: 3/2; display: block; object-fit: cover; }
.law-ball-moment-grid figcaption { padding: .72rem .82rem; color: rgba(255,255,255,.78); font-size: .75rem; }
.event-gallery-more { margin-top: 1.25rem; overflow: hidden; background: #14171e; border: 1px solid rgba(160,32,240,.48); border-radius: 1rem; }
.event-gallery-more > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.2rem; color: #fff; cursor: pointer; font-weight: 850; list-style-position: inside; }
.event-gallery-more > summary small { color: rgba(255,255,255,.64); font-weight: 650; text-align: right; }
.event-gallery-grid { columns: 3 280px; column-gap: 1rem; padding: 0 1rem 1rem; }
.event-gallery-grid figure { break-inside: avoid; overflow: hidden; margin: 0 0 1rem; background: #0e1015; border-radius: .9rem; }
.event-gallery-grid img { width: 100%; height: auto; display: block; }
.event-gallery-grid figcaption { padding: .7rem .8rem; color: rgba(255,255,255,.7); font-size: .75rem; }
.manly-christmas-case { background: radial-gradient(circle at 12% 8%, rgba(48,255,24,.09), transparent 30%), radial-gradient(circle at 88% 88%, rgba(180,22,70,.12), transparent 34%), #0d0f14; }
.manly-christmas-case .button-row { margin-top: 1.5rem; }

.statement { color: #fff; background: var(--charcoal); }
.statement-grid { display: grid; grid-template-columns: .7fr 1.3fr; gap: 2rem; align-items: start; }
.statement blockquote { margin: 0; font-size: clamp(1.7rem,4vw,3.5rem); font-weight: 750; line-height: 1.12; letter-spacing: -.03em; }
.statement blockquote em { color: var(--electric-green); font-style: normal; }
.faq-list { display: grid; gap: .8rem; }
.faq-list details { padding: 1.1rem 1.2rem; color: var(--ink); background: rgba(255,255,255,.86); border: 1px solid var(--line); border-radius: .9rem; }
.faq-list summary { cursor: pointer; font-weight: 850; }
.faq-list details p { padding-top: .8rem; color: var(--muted); }

.lesson-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; }
.lesson-card { color: var(--ink); background: #fff; border: 1px solid rgba(160,32,240,.28); border-radius: 1rem; overflow: hidden; }
.lesson-card[open] { border-color: var(--electric-purple); box-shadow: 0 16px 38px rgba(0,0,0,.2); }
.lesson-card summary { min-height: 220px; display: flex; flex-direction: column; padding: 1.35rem; cursor: pointer; list-style: none; }
.lesson-card summary::-webkit-details-marker { display: none; }
.lesson-card .tag { align-self: flex-start; }
.lesson-card h3 { margin-top: 1rem; }
.lesson-card .price { display: block; margin: .55rem 0; font-size: 1.45rem; font-weight: 900; }
.lesson-card .lesson-summary { color: var(--muted); font-size: .92rem; }
.lesson-more { margin-top: auto; padding-top: 1rem; color: var(--electric-purple); font-size: .72rem; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.lesson-details { padding: 0 1.35rem 1.35rem; border-top: 1px solid var(--line); }
.lesson-details p, .lesson-details ul { color: var(--muted); }
.lesson-details p { padding-top: 1rem; }
.lesson-details ul { margin: .7rem 0 0; padding-left: 1.2rem; }
.tag { display: inline-block; padding: .25rem .55rem; color: var(--charcoal); background: var(--electric-green); border-radius: 999px; font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }

.music-deck { color: #fff; background: linear-gradient(135deg,var(--deep-purple),#0d0f14 62%,#102016); border: 1px solid rgba(160,32,240,.52); border-radius: var(--radius); box-shadow: 0 22px 70px rgba(8,9,13,.3); }
.music-deck__header { display: flex; align-items: end; justify-content: space-between; gap: 2rem; padding: 1.5rem; }
.music-deck__header p { max-width: 570px; color: rgba(255,255,255,.68); }
.mix-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: rgba(255,255,255,.12); border-top: 1px solid rgba(255,255,255,.12); }
.mix-card { min-width: 0; padding: 1.25rem; background: rgba(10,11,16,.88); border-top: 3px solid rgba(160,32,240,.72); }
.mix-card:nth-child(2) { border-top-color: rgba(57,255,20,.72); }
.mix-card:nth-child(3) { border-top-color: rgba(160,32,240,.72); }
.mix-card--featured { background: linear-gradient(155deg,rgba(160,32,240,.2),rgba(10,11,16,.94) 45%,rgba(57,255,20,.08)); }
.mix-art { aspect-ratio: 1; display: flex; flex-direction: column; justify-content: space-between; padding: 1.1rem; overflow: hidden; background: radial-gradient(circle at 80% 25%,rgba(57,255,20,.7),transparent 28%),linear-gradient(145deg,var(--electric-purple),var(--deep-purple) 55%,#101b14); border: 1px solid rgba(255,255,255,.24); border-radius: .9rem; }
.mix-card:nth-child(2) .mix-art { background: linear-gradient(160deg,#141820,#3a414c 58%,#f8fafc); }
.mix-card:nth-child(3) .mix-art { background: radial-gradient(circle at 20% 70%,rgba(160,32,240,.8),transparent 30%),linear-gradient(130deg,#101216,#0b3713); }
.mix-art span { font-size: .65rem; font-weight: 900; letter-spacing: .17em; text-transform: uppercase; }
.mix-art strong { font-size: clamp(1.1rem,2vw,1.55rem); line-height: 1.05; text-transform: uppercase; }
.mix-art--cover { display: block; padding: 0; background: #0f1117; }
.mix-art--cover img { width: 100%; height: 100%; display: block; object-fit: cover; }
.mix-card h3 { margin-top: 1rem; font-size: 1rem; }
.mix-card p { margin-top: .4rem; color: rgba(255,255,255,.62); font-size: .82rem; }
.mix-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .9rem; }
.mix-actions .button { min-height: 40px; padding: .55rem .85rem; font-size: .78rem; }
.mixcloud-embed { width: 100%; min-height: 120px; margin: 1rem 0 0; border: 0; border-radius: .8rem; }

.learning-gallery { display: grid; grid-template-columns: repeat(3,1fr); grid-auto-flow: dense; gap: 1rem; }
.learning-photo { position: relative; min-height: 330px; overflow: hidden; margin: 0; background: #14171d; border: 1px solid rgba(160,32,240,.48); border-radius: 1rem; }
.learning-photo--wide { grid-column: span 2; }
.learning-photo--portrait { min-height: 410px; }
.learning-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.learning-photo figcaption { position: absolute; right: .7rem; bottom: .7rem; left: .7rem; padding: .65rem .75rem; color: #fff; background: rgba(8,9,13,.76); border: 1px solid rgba(255,255,255,.1); border-radius: .65rem; font-size: .75rem; backdrop-filter: blur(8px); }

.builder-preview { color: #fff; background: #0c0e13; border: 1px solid rgba(255,255,255,.12); border-radius: var(--radius); overflow: hidden; }
.builder-preview__top { padding: clamp(1.5rem,4vw,2.5rem); background: radial-gradient(circle at 90% 10%,rgba(160,32,240,.3),transparent 34%); }
.builder-preview__top p { max-width: 690px; margin-top: .8rem; color: rgba(255,255,255,.68); }
.builder-steps { display: grid; grid-template-columns: repeat(6,1fr); gap: 1px; background: rgba(255,255,255,.1); }
.builder-step { min-height: 110px; padding: 1rem; background: #12151b; }
.builder-step span { display: block; color: var(--electric-green); font-size: .66rem; font-weight: 900; letter-spacing: .13em; }
.builder-step strong { display: block; margin-top: .6rem; font-size: .88rem; line-height: 1.2; }
.builder-options { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; padding: 1.5rem; }
.builder-option { min-height: 180px; display: grid; place-items: center; padding: 1.25rem; text-align: center; background: linear-gradient(140deg,rgba(160,32,240,.16),rgba(57,255,20,.05)); border: 1px dashed rgba(255,255,255,.3); border-radius: .9rem; }
.builder-option small { display: block; margin-top: .5rem; color: rgba(255,255,255,.58); }
.builder-note { padding: 0 1.5rem 1.5rem; color: rgba(255,255,255,.55); font-size: .8rem; }

.cta-band { position: relative; overflow: hidden; color: #fff; background: linear-gradient(120deg,var(--deep-purple),#101216); }
.cta-band::after { content: ""; position: absolute; top: -80%; right: -8%; width: 460px; height: 460px; border: 2px solid var(--electric-green); border-radius: 50%; opacity: .35; }
.cta-band .container { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.cta-band p { max-width: 650px; margin-top: .8rem; color: rgba(255,255,255,.74); }
.theme-wedding .cta-band { background: linear-gradient(120deg,var(--wedding-plum),var(--wedding-charcoal)); }
.theme-wedding .cta-band::after { border-color: var(--wedding-champagne); }

.form-page { color: #fff; background: radial-gradient(circle at 15% 20%,rgba(160,32,240,.25),transparent 32%),linear-gradient(140deg,#0b0d12,#1e0726); }
.form-shell { display: grid; grid-template-columns: minmax(0,.7fr) minmax(0,1.3fr); gap: clamp(2rem,5vw,4.5rem); align-items: start; }
.contact-card { padding: 1.5rem; color: #fff; background: rgba(255,255,255,.06); border: 1px solid rgba(160,32,240,.45); border-radius: var(--radius); }
.contact-card a { display: block; margin-top: .55rem; font-weight: 800; }
.contact-card p + p { margin-top: 1.3rem; }
.preview-note { padding: 1rem 1.1rem; margin-bottom: 1.4rem; color: #412800; background: #fff2cd; border: 1px solid #e7c46a; border-radius: .85rem; }
.enquiry-form { display: grid; gap: 1rem; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.field { display: grid; gap: .38rem; }
.field label { font-weight: 800; }
.field small { color: rgba(255,255,255,.6); }
.field input, .field select, .field textarea { width: 100%; padding: .8rem .9rem; color: var(--ink); background: #fff; border: 1px solid #aeb4bd; border-radius: .65rem; }
.field textarea { min-height: 140px; resize: vertical; }
.field input[aria-invalid="true"], .field select[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: #d33155; box-shadow: 0 0 0 2px rgba(211,49,85,.16); }
.field-error { min-height: 1.2em; color: #ff9caf; font-size: .82rem; }
.honey-field { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.form-status { display: none; padding: 1rem 1.1rem; border-radius: .8rem; }
.form-status.is-visible { display: block; }
.form-status--error { color: #700015; background: #ffe8ed; border: 1px solid #efa3b2; }

.site-footer { color: rgba(255,255,255,.72); background: #08090d; }
.footer-grid { display: grid; grid-template-columns: 1fr auto auto; gap: 3rem; padding: 3.5rem 0; align-items: start; }
.footer-grid h2 { color: #fff; font-family: var(--font-display); font-size: 1.25rem; letter-spacing: .1em; }
.footer-grid p { max-width: 420px; }
.footer-links { display: grid; gap: .45rem; }
.footer-links a { text-decoration: none; }
.footer-links a:hover { color: var(--electric-green); }
.footer-bottom { padding: 1rem 0 1.5rem; border-top: 1px solid rgba(255,255,255,.1); font-size: .8rem; }
.prose { display: grid; gap: 1.1rem; }
.prose ul { margin: 0; padding-left: 1.2rem; }

@media (max-width: 1040px) {
  .nav-toggle { display: inline-flex; }
  .primary-nav { position: absolute; inset: 70px 0 auto; display: none; padding: .8rem 1rem 1rem; background: #0a0c11; border-bottom: 1px solid rgba(255,255,255,.12); }
  .primary-nav.is-open { display: block; }
  .nav-list { align-items: stretch; flex-direction: column; }
  .nav-list a { padding: .75rem .85rem; }
  .journey-grid { grid-template-columns: repeat(2,1fr); }
  .hero-home .container, .service-hero .container, .split, .form-shell { grid-template-columns: 1fr; }
  .hero-home .container { padding-bottom: 4.2rem; }
  .hero-visual { min-height: 460px; }
  .split--reverse > :first-child { order: 0; }
  .service-hero .hero-side { min-height: 440px; }
  .feature-grid, .lesson-grid { grid-template-columns: repeat(2,1fr); }
  .statement-grid { grid-template-columns: 1fr; }
  .media-gallery { grid-template-columns: 1fr 1fr; }
  .media-tile:first-child { grid-column: 1/-1; grid-row: auto; }
  .builder-steps { grid-template-columns: repeat(3,1fr); }
  .real-wedding-story__lead { grid-template-columns: minmax(260px,.9fr) minmax(0,1.1fr); }
  .learning-gallery { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 700px) {
  .container, .narrow, .nav-shell, .social-shell { width: min(calc(100% - 1.25rem),var(--content)); }
  .nav-shell { min-height: 66px; }
  .primary-nav { top: 66px; }
  .brand strong { font-size: 1.02rem; }
  .social-shell { justify-content: flex-start; }
  .social-label { display: none; }
  .hero-home .container { min-height: auto; padding-block: 3.5rem; }
  .hero-home h1 { font-size: clamp(3.4rem,17vw,5.4rem); }
  .hero-visual { min-height: 380px; }
  .journey-grid, .feature-grid, .lesson-grid, .field-grid, .builder-options { grid-template-columns: 1fr; }
  .journey-card { min-height: 245px; }
  .journey-switcher__grid { grid-template-columns: 1fr; }
  .journey-mini { min-height: 76px; }
  .service-hero .hero-side, .media-frame { min-height: 380px; }
  .media-gallery { grid-template-columns: 1fr; grid-auto-rows: 270px; }
  .media-tile:first-child { grid-column: auto; }
  .music-deck__header, .cta-band .container { align-items: flex-start; flex-direction: column; }
  .mix-grid { grid-template-columns: 1fr; }
  .builder-steps { grid-template-columns: repeat(2,1fr); }
  .builder-step { min-height: 96px; }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }
  .real-wedding-story__lead, .wedding-story-photo { grid-template-columns: 1fr; }
  .story-portrait, .wedding-story-photo figure { min-height: 420px; }
  .wedding-video-grid, .wedding-moment-grid { grid-template-columns: 1fr; }
  .law-ball-moment-grid { grid-template-columns: 1fr; }
  .youtube-shell { aspect-ratio: 9/13; }
  .story-moments li { grid-template-columns: 1fr; gap: .2rem; }
  .learning-gallery { grid-template-columns: 1fr; }
  .learning-photo--wide { grid-column: auto; }
  .learning-photo, .learning-photo--portrait { min-height: 340px; }
  .wedding-gallery-more > summary { align-items: flex-start; flex-direction: column; }
  .wedding-gallery-more > summary small { text-align: left; }
  .event-gallery-more > summary { align-items: flex-start; flex-direction: column; }
  .event-gallery-more > summary small { text-align: left; }
}

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