/* ============================================================
   Oneness page — the deep side of the brand.
   Loads AFTER main.css. Wine-black base + wine accent.
   Adapted from design-system oneness/oneness.css with the
   committed variants baked in: full-bleed video band, cards
   testimonials, veil hero-legibility panel.
   (Original with all variants: reference/design-drop/oneness/)
   ============================================================ */

/* ---------- palette: wine-black, tonally distinct from home ---------- */
body.page-oneness {
  --bg:        rgb(26, 10, 11);
  --bg-deep:   rgb(18, 7, 8);
  --wine:      rgb(133, 66, 72);   /* large type / decorative only */
  --wine-soft: rgb(189, 124, 130); /* labels & kickers — AA on wine-black */
  background: var(--bg);
}
body.page-oneness main a:not(.btn) { color: var(--wine-soft); }
body.page-oneness main a:not(.btn):hover { opacity: .75; }

.o-eyebrow { letter-spacing: .16em; text-transform: uppercase; color: var(--wine-soft); }

/* ---------- hero (reuses .hero bones from main.css) ---------- */
.page-oneness .hero__media img { filter: brightness(.62) contrast(1.05); }
.o-hero__body { max-width: 580px; color: var(--cream); opacity: .92; }
.o-hero__body a { color: inherit; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(189, 124, 130, .85); }
.o-hero__body a:hover { text-decoration-color: var(--cream); }
.o-hero__price {
  font-family: var(--font-serif-2);
  font-size: 17px; line-height: 1.5;
  color: var(--cream); opacity: .75;
  max-width: 46ch;
}
/* this page's hero frame holds an image at every width below 1440
   (main.css hides the frame img under 810 in favour of a video slot) */
.page-oneness .hero__media-frame img { display: block !important; }

/* hero legibility (>=1024, where the text sits on the photograph):
   the veil — a blurred wine-glass panel behind the whole text block */
@media (min-width: 1024px) {
  .o-hero__body, .o-hero__price { opacity: 1; text-shadow: 0 1px 18px rgba(10, 3, 4, .55); }
  .o-hero__price { opacity: .95; }
  .page-oneness .hero__content {
    background: rgba(26, 10, 11, .42);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
    border-radius: 28px;
    padding: 52px 64px;
  }
}

/* ---------- shared bones ---------- */
.o-section { padding: 112px 24px; }
.o-section__head { max-width: 680px; margin: 0 auto 56px; display: flex; flex-direction: column; gap: 16px; text-align: center; align-items: center; }
.o-section__head--left { text-align: left; align-items: flex-start; margin-left: 0; margin-right: 0; }

/* ---------- the two couples — always equals (design pass scale-down reverted
   2026-08-19: it was sized against the narrow preview pane) ---------- */
.o-couples { max-width: 1038px; margin: 0 auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 48px 40px; }
.o-couple { width: 499px; max-width: 100%; display: flex; flex-direction: column; gap: 18px; text-align: center; align-items: center; }
.o-couple h3 { max-width: 380px; }
.o-couple p { max-width: 449px; color: var(--cream); opacity: .88; }
/* spec tile for August-shoot photography */
.o-photo {
  width: 100%; height: 300px;
  border-radius: var(--radius-card);
  background: var(--bg-deep);
  box-shadow: inset 0 0 0 1px rgba(133, 66, 72, .45);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; padding: 36px 44px; text-align: center;
  color: var(--muted);
}
.o-photo .ui-label { letter-spacing: .14em; text-transform: uppercase; color: var(--wine-soft); }
.o-photo--filled { padding: 0; overflow: hidden; }
.o-photo__img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; filter: grayscale(1) contrast(1.05) brightness(.92); }
.o-photo__spec { font-family: var(--font-serif); font-style: italic; font-size: 17px; line-height: 1.5; max-width: 32ch; margin: 0; color: var(--cream); opacity: .8; }

/* ---------- testimonials (cards + quote row) ----------
   deepened + wine-cast (2026-08-18): with the video band gone this must
   read clearly darker than the thresholds section that follows */
.o-testimonials { background: rgb(19, 8, 9); border-bottom: 1px solid rgba(133, 66, 72, .35); }
.o-tcards { max-width: 1152px; margin: 0 auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 32px 24px; }
.o-tcard {
  width: 358px; max-width: 100%;
  background: rgba(236, 231, 217, .04);
  border: 1px solid rgba(236, 231, 217, .1);
  border-radius: 24px;
  padding: 36px 32px;
  display: flex; flex-direction: column; gap: 18px;
}
.o-tcard blockquote { margin: 0; font-size: 21px; line-height: 1.5; letter-spacing: -0.01em; color: var(--cream); }
.o-attr { font-family: var(--font-ui); font-size: 14px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--wine-soft); }
/* quote row — a running line of shorter fragments */
.o-quote-row { max-width: 880px; margin: 72px auto 0; display: flex; flex-direction: column; gap: 28px; }
.o-quote-row figure { margin: 0; display: flex; flex-direction: column; gap: 8px; text-align: center; }
.o-quote-row blockquote { margin: 0; font-family: var(--font-serif); font-style: italic; font-size: 24px; line-height: 1.4; letter-spacing: -0.01em; color: var(--cream); opacity: .92; }

/* ---------- THE video (full-bleed band; real video pending August shoot) ---------- */
.o-video { padding: 0; }
.o-video__band { position: relative; height: min(calc(72vh / var(--page-zoom)), 720px); overflow: hidden; }
.o-video__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.85); }
.o-video__band::after {
  content: ""; position: absolute; inset: 0;
  background: url(/assets/images/mKzlc8S1Kna4LIqSfgJsGwOwRY.8490c1e1.png) repeat left top / 30px auto;
  opacity: .14; pointer-events: none;
}
.o-video__content {
  position: absolute; inset: 0; z-index: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px;
  text-align: center; padding: 24px;
}
/* play affordance — unused until the real video lands */
.o-video__play {
  width: 64px; height: 64px; border-radius: 50%;
  border: 1px solid rgba(236, 231, 217, .6);
  background: rgba(26, 10, 11, .35);
  display: flex; align-items: center; justify-content: center;
  color: var(--cream); cursor: pointer;
  transition: background .25s ease;
}
.o-video__play:hover { background: rgba(26, 10, 11, .6); }
.o-video__play svg { width: 18px; height: 18px; margin-left: 3px; }
.o-video__line { font-family: var(--font-serif); font-style: italic; font-size: 20px; color: var(--cream); margin: 0; text-shadow: 0 1px 24px rgba(0, 0, 0, .5); }

/* ---------- eight thresholds — the itinerary ---------- */
.o-thresholds { position: relative; max-width: 720px; margin: 0 auto; }
.o-thresholds::before { content: ""; position: absolute; left: 50%; top: 6px; bottom: 6px; width: 1px; background: rgba(133, 66, 72, .55); }
.o-threshold { position: relative; width: calc(50% - 44px); padding: 6px 0 40px; display: flex; flex-direction: column; gap: 6px; }
.o-threshold:nth-child(odd) { margin-left: auto; text-align: left; }
.o-threshold:nth-child(even) { margin-right: auto; text-align: right; align-items: flex-end; }
.o-threshold::before { content: ""; position: absolute; top: 14px; width: 7px; height: 7px; transform: rotate(45deg); background: var(--gold); }
.o-threshold:nth-child(odd)::before { left: -48px; }
.o-threshold:nth-child(even)::before { right: -48px; }
.o-threshold__num { font-family: var(--font-ui); font-size: 12px; font-weight: 500; letter-spacing: .18em; color: var(--wine-soft); }
.o-threshold h3 { font-family: var(--font-display); font-size: 28px; font-weight: 400; letter-spacing: -0.03em; line-height: 1.15; margin: 0; }
.o-threshold p { margin: 0; font-family: var(--font-serif); font-style: italic; font-size: 19px; line-height: 1.5; color: var(--cream); opacity: .8; max-width: 30ch; }

/* ---------- how to begin — marquee movements (variant F, ruled 2026-08-18) ---------- */
.o-how { background: var(--bg-deep); }
.o-steps { max-width: 720px; margin: 0 auto; display: flex; flex-direction: column; }
.o-step { display: flex; flex-direction: column; gap: 12px; padding: 0 0 48px; }
.o-step:last-of-type { padding-bottom: 0; }
.o-step__marquee { display: flex; align-items: baseline; gap: 16px; }
.o-step__num { font-family: var(--font-serif); font-style: italic; font-size: 17px; color: var(--gold); flex: none; }
.o-step .heading-3 em { color: var(--wine-soft); }
.o-step__sub { display: grid; grid-template-columns: 33px 1fr; gap: 16px; }
.o-step__rule { height: 1px; background: rgba(204, 176, 116, .5); align-self: center; }
.o-step .body-copy { color: var(--cream); opacity: .85; max-width: 56ch; margin: 0; }

/* prose bands: what-this-is · handed-this-page · why-it-works (v3.1, added
   2026-08-07 after the design snapshot) — NEEDS DESIGN PASS */
.o-prose__body { max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: 22px; }
.o-prose__body .body-copy { color: var(--cream); opacity: .88; }
/* what-this-is — "marquee lead" (picked 2026-08-19): deep ground, left-set head
   with wine rule off the title, wine italic lead + gold marquee-dash second para */
.o-what { background: var(--bg-deep); }
.o-what .o-section__head { max-width: 880px; text-align: left; align-items: flex-start; }
.o-what .o-section__head .display-2 { display: flex; align-items: center; gap: 28px; width: 100%; }
.o-what .o-section__head .display-2::after { content: ""; flex: 1; height: 1px; background: rgba(133,66,72,.5); }
.o-what .o-prose__body { max-width: 880px; gap: 30px; }
.o-what .o-prose__body .body-copy:first-child { font-family: var(--font-serif); font-style: italic; font-size: 23px; line-height: 1.55; color: var(--wine-soft); opacity: 1; max-width: 34em; }
.o-what .o-prose__body .body-copy:last-child { display: grid; grid-template-columns: 33px 1fr; gap: 16px; max-width: 40em; }
.o-what .o-prose__body .body-copy:last-child::before { content: ""; height: 1px; background: rgba(204,176,116,.5); align-self: center; margin-top: .1em; }

/* handed-this-page — "marginal address" (picked 2026-08-19): header in a left
   rail under a wine rule, numbered plates (wine italic 1./2., second staggered)
   beside it. Page ground — distinct from the deep bands either side. */
.o-handed__grid { max-width: 1020px; margin: 0 auto; display: grid; grid-template-columns: 300px 1fr; gap: clamp(44px, 5vw, 88px); align-items: start; }
.o-handed__rail { display: flex; flex-direction: column; gap: 26px; text-align: left; padding-top: 20px; border-top: 1px solid rgba(133,66,72,.5); }
.o-handed__rail .o-eyebrow { line-height: 1.9; }
.o-handed__rail .display-2 { font-size: clamp(32px, 3vw, 42px); }
.o-handed__rail .display-2 em { font-style: italic; color: var(--wine-soft); }
.o-handed .o-prose__body { max-width: none; margin: 0; gap: 56px; }
.o-handed .o-thing { display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: start; max-width: 620px; }
.o-handed .o-thing__num { font-family: "TT Ramillas Trl Variable Italic Variable Regular", serif; font-style: italic; font-size: 64px; line-height: .8; color: var(--wine); flex: none; min-width: 44px; text-align: right; }
.o-handed .o-thing .body-copy { margin: 0; font-size: 19px; line-height: 1.7; }
.o-handed .o-thing--2 { align-self: flex-end; }
.o-handed .o-prose__body .body-copy em { color: var(--wine-soft); }

/* honeypot — off-canvas, never display:none (bots skip those). Re-added on
   merge: the design snapshot predated the forms wiring. */
.o-hp { position: absolute; transform: scale(0); }

/* dignity line under the three movements (v2 ruling; marquee layout 2026-08-18) */
.o-dignity { max-width: 720px; margin: 64px auto 0; border-top: 1px solid rgba(133, 66, 72, .4); padding-top: 40px; display: grid; grid-template-columns: 1fr 1fr; gap: 44px; align-items: start; }
.o-dignity__lead { font-family: var(--font-serif); font-style: italic; font-size: 21px; line-height: 1.4; color: var(--wine-soft); margin: 0; }
.o-dignity .body-copy { color: var(--cream); opacity: .8; font-size: 17px; margin: 0; }

/* ---------- what the invitation includes — the arc (variant A, ruled 2026-08-18) ---------- */
.o-inv { max-width: 920px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr 1fr; }
.o-inv__col { padding: 0 36px; display: flex; flex-direction: column; gap: 20px; border-left: 1px solid rgba(133, 66, 72, .4); }
.o-inv__col:first-child { border-left: none; padding-left: 0; }
.o-inv__col:last-child { padding-right: 0; }
.o-inv__kicker { display: flex; align-items: center; gap: 12px; margin: 0 0 10px; }
.o-inv__dia { width: 7px; height: 7px; transform: rotate(45deg); background: var(--gold); flex: none; }
.o-inv__kicker span:last-child { font-family: var(--font-ui); font-size: 12px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--gold); }
.o-inv__phase { font-family: var(--font-display); font-size: 23px; font-weight: 400; letter-spacing: -0.02em; line-height: 1.2; margin: 0; }
.o-inv__item { display: flex; flex-direction: column; gap: 4px; }
.o-inv__lead { font-family: var(--font-serif); font-weight: 400; font-size: 18px; line-height: 1.4; margin: 0; color: var(--cream); }
.o-inv__detail { font-family: var(--font-serif); font-style: italic; font-size: 15px; line-height: 1.5; color: var(--wine-soft); margin: 0; }
.o-includes__note { max-width: 640px; margin: 80px auto 0; text-align: center; color: var(--cream); opacity: .7; font-size: 17px; }

/* ---------- bridge — a glimpse of the parchment door it leads to ---------- */
.o-bridge { text-align: center; background: rgb(236, 231, 217); color: rgb(42, 28, 23); }
.o-bridge .body-copy { max-width: 560px; margin: 0 auto 32px; color: rgb(42, 28, 23); opacity: .92; }
.o-bridge .btn { background: rgb(42, 28, 23); color: rgb(236, 231, 217); }
.o-bridge .tagline { margin-top: 20px; opacity: .65; color: rgb(42, 28, 23); }

/* ---------- request form — darkest ground, matching the testimonials ---------- */
.o-request { background: rgb(19, 8, 9); border-top: 1px solid rgba(133, 66, 72, .35); border-bottom: 1px solid rgba(133, 66, 72, .35); }
.o-form { max-width: 560px; margin: 0 auto; display: flex; flex-direction: column; gap: 22px; }
.o-field { display: flex; flex-direction: column; gap: 8px; }
.o-field label { font-family: var(--font-ui); font-size: 14px; font-weight: 500; color: var(--cream); opacity: .85; }
.o-field label em { font-style: italic; font-family: var(--font-serif); opacity: .7; }
.o-field input, .o-field textarea {
  background: rgba(236, 231, 217, .05);
  border: 1px solid rgba(236, 231, 217, .22);
  border-radius: 8px;
  padding: 14px 16px;
  color: var(--cream);
  font-family: var(--font-serif); font-size: 18px; line-height: 1.4;
}
.o-field input:focus, .o-field textarea:focus { outline: none; border-color: rgba(236, 231, 217, .55); }
.o-field textarea { min-height: 120px; resize: vertical; }
.o-form .btn { align-self: flex-start; padding: 14px 22px; }
.o-form__micro { font-family: var(--font-serif-2); font-size: 17px; color: var(--cream); opacity: .65; margin: 0; }
/* success state — inline swap, calm and personal */
.o-form, .o-success { transition: opacity .5s ease; }
.o-success { display: none; opacity: 0; max-width: 560px; margin: 0 auto; text-align: left; }
.o-success p { margin: 0 0 14px; }
.o-success .tagline { font-size: 20px; }
.o-request.is-sent .o-form { display: none; }
.o-request.is-sent .o-success { display: block; opacity: 1; }

/* ---------- FAQ (dark) ---------- */
.o-faq { max-width: 680px; margin: 0 auto; }
.o-faq details { border-top: 1px solid rgba(236, 231, 217, .12); }
.o-faq details:last-of-type { border-bottom: 1px solid rgba(236, 231, 217, .12); }
.o-faq summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: baseline; justify-content: space-between; gap: 24px;
  padding: 24px 0;
  font-family: var(--font-serif); font-size: 22px; font-weight: 400; letter-spacing: -0.01em;
  color: var(--cream);
}
.o-faq summary::-webkit-details-marker { display: none; }
.o-faq summary::after { content: "+"; font-family: var(--font-ui); font-weight: 400; font-size: 22px; color: var(--wine-soft); flex: none; }
.o-faq details[open] summary::after { content: "\2212"; }
.o-faq details p { padding: 0 0 26px; margin: 0; color: var(--cream); opacity: .82; max-width: 58ch; }

/* ---------- closing ---------- */
.o-close { text-align: center; padding: 136px 24px 160px; }
.o-close__inner { max-width: 780px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 36px; }
.o-close blockquote { margin: 0; }

/* ---------- scroll-reveal (thresholds) ---------- */
html.sr-anim [data-sreveal] { opacity: .001; transform: translateY(18px); transition: opacity .8s cubic-bezier(.21,.6,.35,1), transform .8s cubic-bezier(.21,.6,.35,1); }
html.sr-anim [data-sreveal].is-in { opacity: 1; transform: none; }


/* ---------- responsive ---------- */
@media (max-width: 809.98px) {
  .o-section { padding: 84px 24px; }
  .o-what .o-section__head .display-2::after { content: none; }
  .o-what .o-prose__body .body-copy:first-child { font-size: 21px; }
  .o-handed__grid { display: flex; flex-direction: column; gap: 44px; }
  .o-handed__rail .o-eyebrow br { display: none; }
  .o-handed .o-thing--2 { align-self: flex-start; }
  .o-handed .o-thing__num { font-size: 48px; min-width: 34px; }
  .o-dignity { grid-template-columns: 1fr; gap: 18px; }
  .o-inv { grid-template-columns: 1fr; gap: 48px; }
  .o-inv__col { border-left: none; padding: 0; }
  .o-includes__note { margin-top: 56px; }
  .o-photo { height: 260px; }
  .o-threshold { width: calc(50% - 22px); padding-bottom: 34px; }
  .o-threshold:nth-child(odd)::before { left: -27px; }
  .o-threshold:nth-child(even)::before { right: -27px; }
  .o-threshold h3 { font-size: 23px; }
  .o-threshold p { font-size: 17px; }
  .o-threshold__num { font-size: 11px; }
  .o-video__band { height: calc(62vh / var(--page-zoom)); }
  .o-close { padding: 100px 24px 120px; }
}
