.journey-review { background: #f8f4e9; color: #342d23; }
.journey-review *, .journey-review *::before, .journey-review *::after { box-sizing: border-box; }
.journey-review [hidden] { display: none !important; }
.journey-page { max-width: 1180px; padding-top: 36px; padding-bottom: 64px; min-height: 58vh; }
.journey-skip { position: absolute; top: -100px; left: 12px; z-index: 200; padding: 12px 18px; background: #fff; color: #5e1f28; }
.journey-skip:focus { top: 12px; }
.journey-review :focus-visible { outline: 3px solid #8a6132; outline-offset: 4px; }
.journey-review h1 { font-weight: 400; font-size: clamp(38px, 4.5vw, 58px); line-height: 1.07; letter-spacing: -.025em; margin: 10px 0 20px; }
.journey-review h2 { font-weight: 400; font-size: 30px; line-height: 1.14; margin: 0 0 16px; }
.journey-review h3 { font-weight: 400; font-size: 23px; line-height: 1.2; margin: 0 0 12px; }
.journey-review p { line-height: 1.55; }
.journey-review button, .journey-review input, .journey-review select, .journey-review textarea { font: inherit; }
.journey-review button { cursor: pointer; }
.journey-review button:disabled { cursor: default; opacity: .6; }
.journey-review .button { min-height: 48px; line-height: 1.35; text-align: center; }
.journey-topline { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px; border-bottom: 1px solid #d9ccaf; padding-bottom: 20px; margin-bottom: 36px; }
.journey-topline a { font: 13px/1.5 Arial, sans-serif; color: #645846; text-underline-offset: 4px; }
/* The site's muted ink (5.9:1 on the paper) at 10 to 12px; #80735e read 4.1:1 (red team RT-40). */
.journey-progress { list-style: none; display: flex; flex-wrap: wrap; gap: 18px; padding: 0; margin: 0; font: 12px/1.6 Arial, sans-serif; color: var(--muted, #685a46); }
.journey-progress li[aria-current] { color: #5e1f28; font-weight: 700; }
.journey-progress span { margin-right: 5px; }
.journey-layout { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(270px, .7fr); gap: clamp(28px, 6vw, 85px); align-items: start; }
.journey-main { min-width: 0; }
.journey-main > .intro { max-width: 700px; }
.journey-review .field { display: block; margin-bottom: 21px; }
.journey-review .field label { display: block; margin-bottom: 8px; font: 600 14px/1.4 Arial, sans-serif; }
.journey-review .field label span { font-weight: 400; color: #716651; }
.journey-review .field input, .journey-review .field select, .journey-review .field textarea { width: 100%; min-width: 0; min-height: 48px; padding: 11px 13px; border: 1px solid #bdb093; border-radius: 2px; background: #fffef9; color: #342d23; font-size: 16px; line-height: 1.5; }
.journey-review .field textarea { min-height: 110px; resize: vertical; }
.journey-review .field input::placeholder, .journey-review .field textarea::placeholder { color: #887c68; opacity: 1; }
.journey-review .grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; }
.journey-review .form-note { font-size: 14px; color: #70634e; max-width: 620px; margin: 20px 0; }
.journey-form { margin-top: 30px; }
.journey-summary { border-top: 3px solid #ad8c51; padding: 28px 28px 24px; background: #f1eadb; }
.journey-summary img { width: 100%; height: 215px; object-fit: contain; mix-blend-mode: multiply; margin: -5px 0 15px; }
.journey-summary .price { font-size: 34px; margin: 12px 0 5px; line-height: 1.15; }
.journey-summary .price span { font: 13px/1.5 Arial, sans-serif; color: #716651; }
.journey-summary .summary-scope { border-top: 1px solid #d6c8aa; padding-top: 18px; }
.journey-summary a { color: #5e1f28; text-underline-offset: 4px; }
.journey-review .quiet-link { display: inline-flex; align-items: center; min-height: 44px; padding: 7px 0; border: none; background: transparent; color: #5e1f28; text-decoration: underline; text-underline-offset: 4px; font-size: 15px; }
.journey-review .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 25px; }
.journey-focus-panel { padding: 24px; border: 1px solid #d7c8a8; margin: 20px 0; background: #fffdf7; }
.journey-focus-panel fieldset { border: none; padding: 0; margin: 0; min-width: 0; }
.journey-focus-panel legend { padding: 0; font-size: 21px; margin-bottom: 18px; }
.journey-check { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.5; padding: 12px 0; cursor: pointer; }
.journey-check input { flex: 0 0 20px; width: 20px; height: 20px; margin: 2px 0 0; accent-color: #5e1f28; }
.journey-focus-panel .journey-roots-life { margin-bottom: 20px; }
.journey-roots-life legend { font: 600 14px/1.4 Arial, sans-serif; margin-bottom: 4px; }
.journey-life-options { display: flex; flex-wrap: wrap; gap: 12px 32px; }
.journey-inline-note { border-left: 3px solid #ad8c51; padding: 12px 17px; background: #f0e8d7; font-size: 14px; }
.journey-optional { border-top: 1px solid #d7c8a8; border-bottom: 1px solid #d7c8a8; padding: 0 0 5px; margin: 22px 0; }
.journey-optional summary { cursor: pointer; padding: 17px 0; min-height: 48px; font-size: 17px; }
.journey-optional > .field { margin-top: 12px; }
.journey-error { color: #8a2534; font: 15px/1.5 Arial, sans-serif; margin-top: 18px; }
.journey-milestones { counter-reset: milestones; list-style: none; padding: 0; margin: 30px 0; }
.journey-milestones li { position: relative; padding: 0 0 23px 47px; margin-bottom: 24px; border-bottom: 1px solid #ddd0b5; }
.journey-milestones li::before { counter-increment: milestones; content: "0" counter(milestones); position: absolute; left: 0; top: 2px; color: #99753e; font: 13px/1.4 Arial, sans-serif; }
.journey-milestones p { margin: 0; }
.journey-choice-header { display: flex; justify-content: space-between; align-items: center; gap: 30px; padding-bottom: 26px; border-bottom: 1px solid #d9ccaf; }
.journey-choice-header img { width: 180px; height: 160px; object-fit: contain; mix-blend-mode: multiply; }
.journey-plan-grid { border: none; padding: 0; margin: 32px 0 22px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.journey-plan-grid legend { font-size: 29px; margin-bottom: 20px; }
.journey-plan-card { min-width: 0; background: #fffdf7; border: 1px solid #cdbb96; padding: 25px; position: relative; cursor: pointer; }
.journey-plan-card.selected { border: 2px solid #5e1f28; padding: 24px; box-shadow: 0 0 0 3px #5e1f2809; }
.journey-plan-name { display: flex; align-items: flex-start; gap: 10px; font: 600 15px/1.4 Arial, sans-serif; }
.journey-plan-name input { width: 19px; height: 19px; accent-color: #5e1f28; margin: 0; flex-shrink: 0; }
.journey-plan-amount { display: block; font-size: 42px; line-height: 1.1; margin: 20px 0; }
.journey-plan-amount small { font: 14px/1.5 Arial, sans-serif; }
.journey-facts { margin: 0; }
.journey-facts div { display: grid; grid-template-columns: 1fr auto; gap: 18px; padding: 9px 0; font: 14px/1.5 Arial,sans-serif; }
.journey-facts dt { color: #70634e; }
.journey-facts dd { margin: 0; text-align: right; font-weight: 600; }
.journey-facts .total { border-top: 1px solid #d5c4a0; margin-top: 8px; padding-top: 14px; }
.journey-facts .total dt, .journey-facts .total dd { color: #342d23; font-weight: 700; }
.journey-schedule { padding: 24px 28px; border: 1px solid #d7c8a8; background: #f2ebdc; }
.journey-schedule h2 { font-size: 25px; }
.journey-family-voices { margin: 24px 0; padding: 25px 28px; border: 1px solid #d7c8a8; border-top: 3px solid #5e1f28; background: #fffdf7; }
.family-voices-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 15px; }
.journey-family-voices .family-voices-heading h2 { font-size: 34px; color: #5e1f28; margin: 0 0 12px; }
.family-voices-heading > span { color: #70634e; font: 600 11px/1.5 Arial,sans-serif; white-space: nowrap; }
.journey-family-voices > p { max-width: 820px; font-size: 17px; line-height: 1.6; }
.family-voices-discovery { margin-bottom: 18px; }
.family-voices-discovery summary { min-height: 44px; display: inline-flex; align-items: center; gap: 12px; color: #5e1f28; font: 700 13px/1.5 Arial,sans-serif; list-style: none; text-decoration: underline; text-decoration-color: #a8842f; text-underline-offset: 4px; cursor: pointer; }
.family-voices-discovery summary::-webkit-details-marker { display: none; }
.family-voices-discovery summary::after { content: '+'; font-size: 20px; text-decoration: none; }
.family-voices-discovery[open] summary::after { content: '−'; }
.family-voices-discovery > div { margin-top: 7px; padding-top: 22px; border-top: 1px solid #d7c8a8; }
.family-voices-discovery h3 { color: #5e1f28; max-width: 660px; font-size: 28px; line-height: 1.2; }
.family-voices-discovery p { max-width: 840px; font-size: 16px; line-height: 1.65; }
.family-voices-discovery .small { font: 13px/1.65 Arial,sans-serif; }
.family-voices-scope { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; margin: 20px 0; }
.family-voices-scope > div { padding-top: 13px; border-top: 1px solid #d7c8a8; }
.family-voices-scope dt { color: #5e1f28; font: 700 13px/1.5 Arial,sans-serif; }
.family-voices-scope dd { margin: 5px 0 0; font: 13px/1.6 Arial,sans-serif; }
.family-voices-choices { min-width: 0; padding: 0; border: 0; margin: 0; }
.family-voices-choices legend { margin-bottom: 10px; color: #70634e; font: 700 12px/1.5 Arial,sans-serif; }
.family-voices-choices > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 11px; }
.family-voices-choice { display: grid; grid-template-columns: 17px minmax(0,1fr) auto; gap: 10px; align-items: start; padding: 14px 11px; border: 1px solid #d7c8a8; cursor: pointer; }
.family-voices-choice input { width: 17px; height: 17px; margin: 2px 0 0; accent-color: #5e1f28; }
.family-voices-choice strong { display: block; font: 700 13px/1.5 Arial,sans-serif; }
.family-voices-choice small { display: block; margin-top: 5px; color: #70634e; font: 12px/1.6 Arial,sans-serif; }
.family-voices-choice > b { grid-column: 2 / -1; color: #5e1f28; font: 600 26px/1.1 Georgia,serif; white-space: nowrap; }
.family-voices-choice.selected { border-color: #5e1f28; background: #f7f1e3; box-shadow: inset 0 0 0 1px #5e1f28; }
.family-voices-choice:has(input:focus-visible) { outline: 3px solid #a8842f; outline-offset: 3px; }
.journey-family-voices .family-voices-fee { margin: 15px 0 0; color: #70634e; font: 12px/1.6 Arial,sans-serif; }
@media (max-width:760px) {
  .journey-family-voices { padding: 23px 20px; }
  .family-voices-choices > div,.family-voices-scope { grid-template-columns: 1fr; }
  .family-voices-choice > b { grid-column: 3; grid-row: 1; font-size: 23px; }
  .family-voices-choice { gap: 9px; padding: 14px 12px; }
  .family-voices-choice small { font-size: 11px; }
  .family-voices-discovery summary { font-size: 12px; }
}
.journey-payment-bottom { display: grid; grid-template-columns: 1fr 1fr; gap: 38px; margin-top: 26px; align-items: start; }
.journey-pay-action { padding: 24px; background: #fffdf7; border: 1px solid #d7c8a8; }
.journey-pay-action .button { width: 100%; margin-top: 20px; }
.journey-pay-action a { color: #5e1f28; }
.checkout-guarantee { padding: 22px; margin: -1px -1px 20px; border: 1px solid #d7c8a8; border-top: 3px solid #ad8c51; background: #f8f4e9; }
.checkout-guarantee .guarantee-eyebrow { margin: 0 0 10px; color: #70551d; font: 700 11px/1.4 Arial, sans-serif; letter-spacing: .13em; text-transform: uppercase; }
.checkout-guarantee h2 { color: #5e1f28; font-size: clamp(27px, 3vw, 32px); line-height: 1.12; margin: 0 0 8px; }
.checkout-guarantee .guarantee-fees { margin: 0 0 17px; color: #5e1f28; font: 600 15px/1.5 Arial, sans-serif; }
.checkout-guarantee p { margin: 0 0 14px; font-size: 16px; line-height: 1.55; }
.checkout-guarantee a { text-underline-offset: 3px; }
.checkout-guarantee .guarantee-note { margin: 0; color: #544632; font-size: 14px; }
.journey-pay-action > .journey-optional { margin: 0 0 8px; }

.journey-result { max-width: 800px; margin: 16px auto 0; }
.journey-result-mark { font: 35px/1 Georgia, serif; color: #8c703f; margin-bottom: 24px; }
.journey-result .panel { margin-top: 28px; padding: 27px; border: 1px solid #d8c8a7; background: #fffdf7; }
.journey-request-summary { white-space: pre-wrap; overflow-wrap: anywhere; }
.journey-result .status-detail { font-size: 21px; }
.journey-review-tools { background: #e8e7e3; border-top: 1px solid #c8c6bf; color: #494c4c; padding: 22px 24px; font: 13px/1.6 Arial, sans-serif; }
.review-tools-inner { max-width: 1124px; margin: 0 auto; }
.journey-review-tools .eyebrow { color: #484c4b; font-size: 11px; }
.journey-review-tools p { margin: 7px 0 12px; max-width: 920px; }
.review-states { display: flex; flex-wrap: wrap; gap: 8px; }
.review-states a, .review-reset { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid #b5b8b5; background: #f8f8f5; padding: 9px 12px; font: 12px/1.4 Arial,sans-serif; color: #373c3a; text-decoration: none; }
.review-states a[aria-current] { background: #3e4845; color: white; }
.review-reset { margin-top: 12px; background: transparent; text-decoration: underline; }
.review-feedback:not(:empty) { margin-top: 16px; border: 1px solid #7d8c84; padding: 15px; background: #fff; }
.booking-layout { display: grid; grid-template-columns: 1.2fr .8fr; gap: 70px; padding: 20px 0; align-items: start; }
.booking-card { padding: 35px; background: #f0e8d7; border-top: 3px solid #ad8c51; }
.booking-card ul { padding-left: 20px; margin-bottom: 24px; }
.booking-card li { margin: 12px 0; line-height: 1.5; }
.booking-card .button { width: 100%; }
.booking-rule { border-top: 1px solid #d3c4a5; padding-top: 22px; margin-top: 28px; }
@media (max-width: 760px) {
  .journey-page { padding: 25px 20px 45px; }
  .journey-topline { margin-bottom: 28px; }
  .journey-progress { gap: 10px 14px; font-size: 11px; }
  .journey-layout, .booking-layout { grid-template-columns: 1fr; gap: 30px; }
  .journey-summary { padding: 24px; }
  .journey-summary img { height: 150px; }
  .journey-review h1 { font-size: 39px; }
  .journey-review h2 { font-size: 27px; }
  .journey-plan-grid, .journey-payment-bottom { grid-template-columns: 1fr; }
  .journey-plan-card { padding: 22px; }
  .journey-plan-card.selected { padding: 21px; }
  .journey-plan-amount { font-size: 38px; }
  .journey-choice-header img { width: 100px; height: 110px; }
  .journey-choice-header { gap: 18px; align-items: flex-start; }
  .journey-choice-header h1 { font-size: 35px; }
  .journey-focus-panel { padding: 20px; }
  .journey-review .grid-2 { grid-template-columns: 1fr; gap: 0; }
  .journey-facts div { gap: 12px; font-size: 13px; }
  .journey-facts dd { max-width: 140px; }
  .journey-schedule, .journey-pay-action, .journey-result .panel, .booking-card { padding: 22px; }
  .journey-review-tools { padding: 22px 20px; }
}
@media (max-width: 360px) {
  .journey-page { padding-left: 16px; padding-right: 16px; }
  .journey-choice-header img { display: none; }
  .journey-review .actions { align-items: stretch; }
  .journey-review .actions .button { width: 100%; }
  .journey-progress { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) { .journey-review *, .journey-review *::before, .journey-review *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }

.journey-copy-note{padding:18px 22px;margin:0 0 24px;border-left:2px solid var(--gold);background:var(--white);font:16px/1.6 var(--body)}

.journey-person{min-width:0}.journey-life-years{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.journey-life-years .field{min-width:0;margin-bottom:10px}.journey-life-years .field label{font-size:12px}.journey-life-years .field label span{display:block}.journey-living{margin:0 0 22px}.journey-life-years input:disabled{background:var(--wash);color:var(--muted)}.journey-scope-advice{padding:20px 22px;margin:20px 0;border-left:3px solid var(--gold);background:var(--wash);font:16px/1.6 var(--body)}.journey-scope-advice>strong{display:block;margin-bottom:8px;color:var(--wine)}.journey-scope-advice p{margin-bottom:12px}.journey-scope-advice p:last-child{margin-bottom:0}.journey-scope-advice .small{margin-top:8px}

/* Festival terms stay visible within the existing private buying journey. */
.festival-notice{margin:0 0 30px;padding:20px 24px;border-left:3px solid var(--gold);background:var(--wash);font-size:16px}.festival-notice .eyebrow{margin-top:0}.festival-agreement{padding:20px;border:1px solid var(--line);margin:22px 0;background:var(--white)}.festival-agreement h2{font:600 27px/1.2 var(--display);color:var(--wine);margin-top:0}.festival-eligibility{padding:16px;border:1px solid var(--line);background:var(--white)}.journey-page button:disabled{opacity:.6;cursor:not-allowed}

/* Optional binding appears only in the final payment step. */
.journey-binding { border: 1px solid #cdbb96; border-left: 4px solid #5e1f28; background: #fffdf7; padding: 24px; margin: 24px 0; }
.journey-binding h2 { margin: 0 0 12px; font-size: 29px; }
.journey-binding .eyebrow { margin-top: 0; }
.journey-binding .journey-check { margin: 8px 0; }
.binding-foil { max-width: 24rem; margin: 14px 0; }
.binding-foil select { width: 100%; padding: 12px; font: inherit; background: #fff; border: 1px solid #cdbb96; border-radius: 3px; }
@media (max-width: 600px) { .journey-binding { padding: 20px; } }

/* A short family form leads directly to the payment review. */
.journey-family-details { border-top: 1px solid var(--line); margin-top: 12px; }
.journey-family-details summary { font: 14px/1.5 var(--ui); color: var(--wine); }
.journey-family-details summary span { color: var(--muted); }
.journey-family-details[open] > summary { margin-bottom: 14px; }
.journey-help-choice { padding: 20px 22px; margin: 22px 0; background: var(--wash); border-left: 3px solid var(--gold); }
.journey-help-choice h2 { font-size: 25px; margin: 0 0 16px; }
.journey-help-choice .journey-check { margin-bottom: 0; padding-bottom: 0; }
.journey-help-choice .small { margin: 12px 0; }
.journey-background > .field { margin-top: 14px; }
.journey-family-review { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; padding: 22px 0; border-bottom: 1px solid var(--line); }
.journey-family-review h2 { font-size: 24px; margin: 0 0 8px; }
.journey-family-review p { margin: 0; }
.journey-service-overview { margin-top: 0; border-top: 0; }
.journey-service-overview .journey-milestones { margin: 12px 0; }
.journey-service-overview h3 { font-size: 23px; }
/* Dan's four book steps are numbered from 0 (October 11, 2026), so that list counts 0 to 3 without the leading zero. */
.journey-milestones-from-zero { counter-reset: milestones -1; }
.journey-milestones-from-zero li::before { content: counter(milestones); }
.journey-field-error { color: #8a2534; font: 14px/1.5 var(--ui); margin: 8px 0 0; }
.journey-field-error[hidden] { display: none; }
.journey-page [aria-invalid="true"] { border-color: #8a2534; outline: 2px solid #8a2534; outline-offset: 2px; }
.journey-page .actions > .journey-error { flex-basis: 100%; margin: 0; }
.journey-page .journey-error:empty { display: none; }
.journey-page .quiet-link { display: inline-flex; align-items: center; min-height: 44px; padding: 7px 0; border: 0; background: transparent; color: var(--wine); text-align: left; text-decoration: underline; text-underline-offset: 4px; font: 14px/1.5 var(--ui); }

/* A required box sits directly above its button. Its message and the cue to press again appear inside the panel. */
.journey-confirm { margin: 24px 0 16px; padding: 14px 18px; border: 1px solid var(--line); border-left: 3px solid var(--gold); background: var(--white); }
.journey-confirm .journey-check { padding: 0; font-size: 16px; }
.journey-confirm .journey-check input { flex: 0 0 24px; width: 24px; height: 24px; margin: 0; }
.journey-confirm .journey-field-error { margin: 10px 0 0 36px; font-weight: 700; font-size: 15px; }
.journey-confirm[data-state="error"] { border-color: #8a2534; border-left-width: 4px; background: #fbefed; }
.journey-confirm[data-state="ready"] { border-left-color: var(--wine); }
.journey-ready-cue { margin: 10px 0 0 36px; font: 600 15px/1.5 var(--ui); color: var(--wine); }
/* Kept rendered while empty, so the status region is already known to screen readers when its text arrives. */
.journey-ready-cue:empty { margin: 0; }
.journey-pay-action .journey-confirm { margin: 18px 0 0; }
/* The alert summary carries a box's message unseen when the box already had focus (Enter on the box). */
.journey-page .journey-error.journey-announce { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.festival-agreement .journey-field-error { margin: 0 0 12px 32px; }

.journey-invitation{margin:18px 0 24px;padding:15px 18px;border:1px solid var(--rule);border-radius:5px;background:var(--paper)}
.journey-invitation summary{cursor:pointer;font:600 14px/1.5 var(--ui)}
.journey-invitation summary span{font-weight:400;margin-left:8px}
.invitation-entry-row{display:flex;align-items:end;flex-wrap:wrap;gap:10px;margin-top:16px}
.invitation-entry-row label{width:100%;font:600 13px/1.5 var(--ui)}
.invitation-entry-row input{width:min(100%,250px);padding:12px;border:1px solid #a39583;border-radius:3px;font:16px/1.3 var(--ui);text-transform:uppercase}
.invitation-entry-row .button{min-height:46px;padding:11px 18px}
/* On review and pay the code row is a small collapsed link at the foot of the price summary (Dan, October 11, 2026:
   "as a small collapsed “Have a promo code?” link inside the price summary"). It takes a link's look and a 44 px tap;
   opened, it keeps the same box, button and message as a repair row elsewhere. */
.journey-schedule > .journey-invitation{margin:10px 0 0;padding:0;border:0;border-radius:0;background:transparent}
/* With a code applied the summary keeps each regular amount struck beside the revised one, and states the revised
   project total, deposit and remaining balance in one line above the code link (Dan, October 11, 2026). */
.journey-facts dd s{margin-right:6px;color:#70634e;font-weight:400}
.journey-code-applied{margin:14px 0 0;padding:12px 14px;border-left:3px solid var(--gold);background:var(--wash);font:14px/1.5 var(--ui)}
.journey-schedule > .journey-invitation summary{display:inline-block;padding:12px 0;font:400 14px/1.5 var(--ui);color:var(--wine);text-decoration:underline;text-underline-offset:4px;list-style:none}
.journey-schedule > .journey-invitation summary::-webkit-details-marker{display:none}
.journey-schedule > .journey-invitation summary span{display:inline-block;text-decoration:none;color:var(--ink,inherit)}
.journey-schedule > .journey-invitation .invitation-entry-row{margin-top:2px}
.journey-schedule > .journey-invitation #invitation-message{margin-top:8px}
.journey-schedule > .journey-invitation .invitation-entry-row .button{width:auto;margin-top:0}

/* October 5 review, recommendation 2: the buy path names its choice and price on step 1, and the family-focus
   step puts the required starting family first, then one help box (call, "not sure" and the guidance switch). */
.journey-selection-line { margin: 0 0 16px; padding: 10px 14px; border-left: 3px solid var(--gold); background: var(--white); font: 15px/1.45 var(--ui); color: var(--ink); }
.journey-selection-line strong { color: var(--wine); }
.journey-selection-line s { color: var(--muted); }
.journey-help-line { margin: 12px 0 0; }
.journey-help-options { display: flex; flex-wrap: wrap; align-items: center; gap: 0 24px; }
.journey-help-options .journey-check { flex: 1 1 280px; }
.journey-help-options .quiet-link { flex: 0 1 auto; }
.journey-book-names .field:last-child { margin-bottom: 0; }
.journey-book-names .journey-name-hint { margin: 12px 0 0; }
.journey-book-help { padding: 14px 18px; margin: 16px 0; }
.journey-book-help > .journey-check { padding: 0; font-weight: 600; }
.journey-book-help > .small { margin: 8px 0 0 32px; }
.journey-book-help .journey-help-options { margin-top: 6px; gap: 0 18px; }
.journey-book-details .journey-person h3 { font-size: 21px; margin-bottom: 10px; }
.journey-book-details > .journey-roots-life { margin: 12px 0; }
.journey-saving-short { margin: 0 0 12px !important; }
@media (max-width: 760px) {
  /* Step 1 keeps its line, the three fields and Continue on a 390 x 844 screen. */
  .journey-topline { padding-bottom: 12px; margin-bottom: 18px; }
  .journey-invitation { margin: 0 0 16px; padding: 0 14px; }
  body[data-step="intro"] .journey-main > .intro { margin-bottom: 14px; }
  body[data-step="intro"] .journey-form, body[data-step="focus"] .journey-form { margin-top: 14px; }
  #intro-form .grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  #intro-form .field { margin-bottom: 12px; }
  #intro-form .form-note { margin: 10px 0 0; font-size: 13px; }
  #intro-form .actions { margin-top: 14px; }
  #draft-saving-note { margin: 0 0 12px; }
}
/* Step 1 draws the code row only to repair a code that cannot be used (October 11, 2026). It sits under Continue
   (Dan, October 6, 2026: "move the promo code below continue"), before the call
   link and the family sign-in line. Later steps keep the row above the step. */
.journey-main > .journey-invitation { margin: 22px 0 0; }
.journey-intro-call { margin: 12px 0 0; }
/* Family sign-in (October 5, 2026): every visitor sees it under step 1, and it says nothing about any address. */
.journey-family-sign-in { margin: 18px 0 0; font: 14px/1.5 var(--ui); color: var(--muted); }
.journey-family-sign-in a { display: inline-flex; align-items: center; min-height: 44px; color: var(--wine); text-underline-offset: 4px; }

/* Phone fit (Dan, October 6, 2026: "address the continue button on phones"). Without a code, step 1's whole Continue
   button sits on the first screen at the heights phones show with their browser bars in place (estimates, not device
   measurements): Safari on every iPhone from the 12 mini to the Pro Max, and Chrome on Android phones 360 x 800 and
   larger. With the code row moved under Continue the same day, a book's Continue also fits a 360 x 740 Android phone
   with button navigation (360 x 612); the iPhone SE (375 x 548 in Safari) still needs a 24 px scroll for a book, and
   the research purchase (no code row) 69 px there and 2 px at 360 x 612. Every line, link, price and disclosure
   stays, and every tap target keeps 44 px. Journey pages only: the header is compact on every journey step so it
   keeps one height between steps; the rest changes step 1 alone. */
@media (max-width: 540px) {
  .journey-live .site-header { padding-top: 8px; padding-bottom: 8px; row-gap: 2px; }
  .journey-live .site-header nav .nav-sign-in { top: 8px; }
  /* Step 1's small label is hidden on phones. On a book it repeats the heading ("A book for your family" over
     "Explore your family book."); on research it reads "Your family, documented" over "Let's begin with you." */
  body.journey-live[data-step="intro"] .journey-main > .eyebrow { display: none; }
  body.journey-live[data-step="intro"] .journey-main > h1 { font-size: min(34px, 8.5vw); line-height: 1.1; margin-bottom: 8px; }
}
@media (max-width: 760px) {
  /* The back link stays where it is; its tap area reaches 44 px tall, above the text and into the gap below it. */
  .journey-live .journey-topline > a { position: relative; }
  .journey-live .journey-topline > a::after { content: ""; position: absolute; left: 0; right: 0; top: -19.5px; bottom: -6px; }
  body.journey-live[data-step="intro"] .journey-page { padding-top: 12px; }
  body.journey-live[data-step="intro"] .journey-topline { row-gap: 6px; padding-bottom: 8px; margin-bottom: 10px; }
  body.journey-live[data-step="intro"] .journey-main > .journey-invitation { margin: 12px 0 0; }
  body.journey-live[data-step="intro"] .journey-invitation + .journey-intro-call { margin-top: 4px; }
  /* A code's notice keeps its type on every step; step 1 only trims the space around it. */
  body.journey-live[data-step="intro"] .festival-notice { margin-bottom: 14px; padding: 10px 14px; }
  body.journey-live[data-step="intro"] .festival-notice .eyebrow { margin-bottom: 4px; }
  body.journey-live[data-step="intro"] .journey-main > .intro { font-size: 17px; line-height: 1.45; margin-bottom: 8px; }
  body.journey-live[data-step="intro"] .journey-form { margin-top: 8px; }
  #intro-form .journey-selection-line { padding: 6px 12px; margin-bottom: 10px; }
  #intro-form .field { margin-bottom: 8px; }
  #intro-form .field label { margin-bottom: 4px; }
  #intro-form .field input { min-height: 44px; padding-top: 9px; padding-bottom: 9px; }
  #intro-form .form-note { margin-top: 4px; }
  #intro-form .actions { margin-top: 12px; }
  #intro-form .actions .button { min-height: 44px; padding-top: 11px; padding-bottom: 11px; }
  #intro-form .festival-eligibility { padding: 10px 12px; }
  #intro-form .festival-eligibility + .form-note { margin: 6px 0 12px; }
}

/* October 8, 2026 (Dan): choose the book or research package on the family step, with a recommendation from the
   year the couple married. One card per scope, like the payment plans; the recommended one is tagged. */
.journey-choice { margin: 4px 0 26px; }
.journey-choice > .field { max-width: 320px; }
.journey-choice-hint { margin: -6px 0 0; color: var(--muted); }
.journey-choice .journey-scope-advice { margin: 16px 0 18px; }
.journey-choice-options { margin: 0; padding: 0; border: 0; display: grid; gap: 10px; min-width: 0; }
.journey-choice-options legend { padding: 0; margin-bottom: 10px; font: 600 15px/1.4 var(--ui); }
.journey-choice-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: start; padding: 16px 18px; background: #fffdf7; border: 1px solid #cdbb96; cursor: pointer; transition: border-color .16s ease-out; }
.journey-choice-card.selected { border: 2px solid #5e1f28; padding: 15px 17px; box-shadow: 0 0 0 3px #5e1f2809; }
.journey-choice-card input { width: 20px; height: 20px; margin: 3px 0 0; accent-color: #5e1f28; }
.journey-choice-card:has(input:focus-visible) { outline: 3px solid var(--gold); outline-offset: 3px; }
.journey-choice-text strong { font: 600 20px/1.3 var(--display); }
.journey-choice-tag { display: inline-block; margin-left: 10px; padding: 2px 8px; vertical-align: 2px; background: var(--wine); color: #fffaf0; font: 600 11px/1.5 var(--ui); letter-spacing: .6px; text-transform: uppercase; }
.journey-choice-tag[hidden] { display: none; }
.journey-choice-detail { display: block; margin-top: 4px; font: 14px/1.5 var(--ui); color: var(--muted); }
.journey-choice-price { font: 600 18px/1.3 var(--display); color: var(--wine); white-space: nowrap; }
.journey-choice + #productChoice-error, #productChoice-error { margin: 8px 0 0; }
.journey-names-title { margin: 8px 0 6px; font-size: 26px; }
.journey-names-example { margin: 0 0 14px; color: var(--muted); }
.journey-loading { margin: 40px 0; font: 17px/1.6 var(--body); color: var(--muted); }
.journey-consent-privacy { white-space: nowrap; }
@media (max-width: 600px) {
  .journey-choice-card { grid-template-columns: auto minmax(0, 1fr); }
  .journey-choice-price { grid-column: 2; }
}
@media (hover: hover) and (pointer: fine) { .journey-choice-card:hover { border-color: #5e1f28; } }
@media (prefers-reduced-motion: reduce) { .journey-choice-card { transition: none; } }

/* "· Optional" reads in its own label's or summary's font, never a second typeface (Dan, October 8, 2026): only
   lighter and muted. Field labels are the UI face, the background summary the body face, the date summaries UI. */
.field label > span, .journey-optional > summary > span, .journey-family-details > summary > span { font: inherit; font-weight: 400; color: var(--muted, #685a46); }
/* Conversation-first flow: one working panel, with three explicit routes. */
.journey-next-options{display:flex;gap:1rem;flex-wrap:wrap;border-bottom:1px solid var(--line,#ddd2c5);margin:0 0 2rem;padding:.5rem 0 1rem}
.journey-next-options button{appearance:none;background:none;border:0;border-bottom:2px solid transparent;padding:.65rem .15rem;min-height:44px;font:inherit;color:var(--ink,#29211f);cursor:pointer}
.journey-next-options button[aria-current]{border-bottom-color:var(--wine,#671f2e);color:var(--wine,#671f2e);font-weight:700}
.journey-next-options button:focus-visible,.journey-time-slot:focus-within{outline:3px solid #997444;outline-offset:4px}
.journey-next-main{max-width:740px;margin:0 auto 3rem}
.journey-next-main h1{margin-bottom:1rem}
.journey-next-main>.field{max-width:30rem;margin:1.25rem 0}
.journey-next-main #next-timezone{appearance:none;width:100%;height:48px;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--wine) 50%),linear-gradient(135deg,var(--wine) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.journey-time-slots{border:0;padding:0;margin:1.5rem 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}
.journey-time-slots legend{font-weight:700;margin-bottom:.7rem}
.journey-time-slot{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem .55rem;min-height:48px;border:1px solid #c9bcab;border-radius:5px;cursor:pointer;background:#fff}
.journey-time-slot.selected{background:#f4eadd;border-color:#671f2e}
.journey-time-slot input{width:auto!important;min-height:0!important;margin:0}
.journey-week{margin:1.5rem 0}
.journey-week-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.65rem}
.journey-week-controls h2{font:600 1.15rem/1.4 var(--ui);text-align:center;margin:0;overflow-wrap:normal}
.journey-week-controls button{min-height:44px;padding:.5rem .2rem;font:.85rem/1.4 var(--ui);white-space:nowrap}
.journey-week-controls button:disabled{color:var(--muted);text-decoration:none;opacity:.45;cursor:default}
.journey-week-controls :focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.journey-week-instruction{font:.85rem/1.55 var(--ui);color:var(--muted);margin:.8rem 0 1rem}
.journey-week-days{border-top:1px solid var(--line)}
.journey-week-day{display:grid;grid-template-columns:125px minmax(0,1fr);gap:1rem;align-items:center;padding:.85rem 0;border-bottom:1px solid var(--line)}
.journey-week-day h3{font:600 .95rem/1.45 var(--ui);margin:0;overflow-wrap:normal}
.journey-week-day h3 span{display:block;font-weight:400;font-size:.85rem;color:var(--muted)}
.journey-week-times{display:flex;gap:.55rem;flex-wrap:wrap;min-width:0}
.journey-week-times .journey-time-slot{font:500 .9rem/1.4 var(--ui);padding:.65rem .7rem;min-width:135px;max-width:100%;white-space:normal}
.journey-week-empty{margin:0;font:.85rem/1.5 var(--ui);color:var(--muted)}
.journey-purchase-options{display:grid;gap:1rem}
.journey-purchase-option{padding:1.5rem;border:1px solid #d6cab9;background:#fff;border-radius:6px}
.journey-purchase-option h2{margin-top:0}
.journey-booking-manage{display:flex;gap:1.5rem;margin-top:2rem}
.journey-next-main .journey-optional{margin:1.25rem 0}
.journey-next-main .journey-optional[open]>summary{margin-bottom:1rem}
@media(max-width:540px){.journey-next-options{gap:.3rem;justify-content:space-between;font-size:.88rem}.journey-time-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-next-main .actions{align-items:stretch}.journey-next-main .button{white-space:normal}}
@media(max-width:540px){.journey-week-controls{grid-template-columns:1fr 1fr;gap:.25rem}.journey-week-controls h2{grid-column:1/-1;grid-row:1;font-size:1.05rem}.journey-week-controls button:first-child{justify-self:start}.journey-week-controls button:last-child{justify-self:end}.journey-week-day{grid-template-columns:100px minmax(0,1fr);gap:.65rem}.journey-week-times .journey-time-slot{flex:1 1 135px;min-width:0;padding:.65rem .45rem;font-size:.85rem}.journey-week-day h3{font-size:.85rem}.journey-week-day h3 span,.journey-week-empty{font-size:.8rem}}

.journey-contact-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:740px;margin:0 auto 1rem;padding:.75rem 0;border-bottom:1px solid var(--line,#d8cdbf);font-size:.9rem;overflow-wrap:anywhere}.journey-contact-summary button{flex-shrink:0}

.journey-next-options .journey-next-secondary:not([aria-current]){color:var(--muted,#756d5f);font-size:.9em;font-weight:400}
/* The thank-you after contact (Dan, October 13, 2026). One column, the open box at its center: a white panel under a
   gold rule, its label in the step's own type and a five-line box drawn open, with Send to Daniel directly beneath. The
   call follows as a secondary button, and the way into the family step is a quiet link at the foot. */
.journey-thanks { max-width: 720px; margin: 8px auto 0; }
/* On a laptop (about 650 px of browser area) the whole box is on the first screen. */
body.journey-live[data-step="thanks"] .journey-topline { margin-bottom: 24px; }
.journey-thanks > .eyebrow { margin-bottom: 8px; }
.journey-thanks > h1 { margin-bottom: 8px; }
.journey-thanks > .intro { margin-bottom: 0; }
.journey-thanks-form { margin-top: 22px; padding: 24px 28px 26px; border: 1px solid var(--line); border-top: 3px solid var(--gold); background: var(--white); }
.journey-thanks-field { margin-bottom: 0; }
.journey-thanks-field label { margin-bottom: 6px; font: 600 19px/1.35 var(--ui); color: var(--ink); }
.journey-thanks-field label > span { white-space: nowrap; }
.journey-thanks-hint { max-width: 60ch; margin: 0 0 14px; font: 15px/1.55 var(--ui); color: var(--muted); }
.journey-thanks-field textarea { display: block; min-height: 148px; padding: 13px 14px; font: 17px/1.55 var(--ui); background: #fff; border-color: #9f927c; }
.journey-thanks-form .journey-error:empty { display: none; }
.journey-thanks-form .journey-error { margin-top: 12px; }
.journey-thanks-form .actions { margin-top: 16px; }
.journey-thanks-call { margin-top: 36px; padding-top: 28px; border-top: 1px solid var(--line); }
.journey-thanks-call h2 { margin: 0 0 14px; font-size: 26px; }
.journey-thanks-call .small { margin: 10px 0 0; color: var(--muted); }
.journey-thanks-onward { margin: 26px 0 0; }
/* The privacy policy's own line where step 1's Continue gave the contact permission: under Send to Daniel, and in place
   of the family step's contact box (October 13, 2026). */
.journey-privacy-line { margin: 10px 0 0; }
.journey-privacy-line .quiet-link { font-size: 14px; }
.journey-thanks > .festival-notice { margin: 26px 0 0; }
/* A note carried on from the thank-you's box, on the family step. */
.journey-carried-note { margin: 22px 0; }
.journey-carried-note .small { margin: 0 0 8px; }
@media (max-width: 760px) {
  .journey-thanks-form { padding: 20px 18px 22px; }
  .journey-thanks-field label { font-size: 18px; }
  .journey-thanks-form .button, .journey-thanks-call .button { width: 100%; }
  /* Phone fit: the whole box, and Send under it, above the fold at the heights phones show with their browser bars in
     place (Safari on a 390 x 844 iPhone shows about 660 px; the iPhone SE about 548 px, which keeps the whole box). The
     box keeps 16 px type, so iOS does not zoom into it. */
  body.journey-live[data-step="thanks"] .journey-page { padding-top: 12px; }
  body.journey-live[data-step="thanks"] .journey-topline { padding-bottom: 8px; margin-bottom: 10px; }
  .journey-thanks > .eyebrow { margin-bottom: 6px; }
  .journey-thanks > h1 { font-size: min(34px, 8.5vw); line-height: 1.1; margin-bottom: 6px; }
  .journey-thanks > .intro { font-size: 17px; line-height: 1.45; }
  .journey-thanks-form { margin-top: 16px; padding: 16px 16px 18px; }
  .journey-thanks-field label { margin-bottom: 4px; font-size: 17px; line-height: 1.3; }
  .journey-thanks-hint { margin-bottom: 10px; font-size: 14px; line-height: 1.45; }
  .journey-thanks-field textarea { min-height: 132px; padding: 10px 12px; font-size: 16px; line-height: 1.5; }
  .journey-thanks-form .actions { margin-top: 12px; }
  .journey-thanks-form .actions .button { min-height: 44px; padding-top: 11px; padding-bottom: 11px; }
  .journey-thanks-call { margin-top: 28px; padding-top: 22px; }
  .journey-thanks-call h2 { font-size: 23px; margin-bottom: 10px; }
}

/* The book's two payments before Review and pay (Dan, October 14, 2026: "Begin with $2,475 - Then $2,475 at printing").
   A narrow column breaks the line only after the hyphen. */
.journey-payments > span { white-space: nowrap; }
.journey-summary .price .journey-payments, .journey-summary .price .journey-payments span { font: inherit; color: inherit; }
.journey-summary .price.price-payments { font-size: 26px; line-height: 1.25; }
.journey-choice-price .journey-payments { display: flex; flex-direction: column; align-items: flex-end; font-size: 16px; line-height: 1.35; }
/* The help-me-choose list's narrow phone column lets each half wrap rather than run past its cell. */
.journey-facts dd .journey-payments > span { white-space: normal; }
