.campaign-page {
  --campaign-magenta: #b32a8c;
  --campaign-magenta-dark: #8d1f70;
  --campaign-green: #84987b;
  --campaign-blue: #004c98;
  --campaign-yellow: #ffaf41;
  --campaign-gray: #858585;
  --campaign-bg: #f8f6f2;
  --campaign-ink: #1e1e1e;
  background: var(--campaign-bg);
  color: var(--campaign-ink);
}

.campaign-page :focus-visible { outline: 3px solid var(--campaign-blue); outline-offset: 3px; }
.campaign-shell { width: min(1120px, calc(100% - 32px)); margin-inline: auto; }
.campaign-section { padding: clamp(64px, 9vw, 112px) 0; scroll-margin-top: 108px; }
.campaign-section p + p { margin-top: 1rem; }
.campaign-section h2 { font-size: clamp(2.25rem, 6vw, 4.5rem); line-height: 1.03; }
.campaign-section h3 { font-size: clamp(1.35rem, 3vw, 1.9rem); line-height: 1.15; }
.campaign-section-head { max-width: 800px; margin-bottom: 40px; }
.campaign-section-head > p { max-width: 680px; margin-top: 18px; font-size: 1.05rem; }
.campaign-eyebrow { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 16px; color: var(--campaign-magenta-dark); font-size: .76rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.campaign-eyebrow::before { content: ""; width: 34px; height: 2px; background: currentColor; }
.campaign-site-header .nav-wrap { width: min(1320px, calc(100% - 32px)); }
.campaign-site-header .site-nav { gap: 13px; font-size: .71rem; }
.campaign-menu-link { display: inline-flex; align-items: center; gap: 5px; }
.campaign-menu-link small { padding: 2px 5px; border-radius: 999px; background: var(--campaign-magenta); color: #fff; font-size: .53rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }

.campaign-hero { position: relative; overflow: hidden; padding: clamp(56px, 9vw, 110px) 0; background: #fff6fc; }
.campaign-hero::before { content: ""; position: absolute; right: -8%; bottom: -90px; width: 48%; height: 190px; border: 3px dashed rgba(179,42,140,.22); border-color: rgba(179,42,140,.22) transparent transparent; border-radius: 50%; transform: rotate(-8deg); }
.campaign-hero-grid { display: grid; grid-template-columns: 1fr; align-items: center; gap: clamp(36px, 6vw, 64px); }
.campaign-hero-copy { position: relative; z-index: 1; max-width: 820px; }
.campaign-hero h1 { max-width: 680px; margin: 0; color: var(--campaign-magenta); font-size: clamp(3rem, 7vw, 6.4rem); line-height: .91; }
.campaign-subtitle { max-width: 600px; margin: 24px 0 18px !important; font-family: var(--serif); font-size: clamp(1.55rem, 3.5vw, 2.65rem); line-height: 1.1; }
.campaign-hero-copy > p:not(.campaign-subtitle,.campaign-age-note) { max-width: 660px; }
.campaign-age-note { max-width: 640px; margin-top: 18px !important; padding-left: 14px; border-left: 3px solid var(--campaign-yellow); font-size: .92rem; font-weight: 700; }
.campaign-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.campaign-page .btn { min-height: 48px; padding: 12px 20px; border-radius: 999px; font-weight: 800; }
.campaign-btn-primary { background: var(--campaign-magenta); color: #fff; }
.campaign-btn-primary:hover { background: var(--campaign-magenta-dark); }
.campaign-btn-secondary { border: 1px solid var(--campaign-magenta); color: var(--campaign-magenta-dark); background: transparent; }
.campaign-placeholder { min-height: 280px; display: grid; place-content: center; gap: 6px; padding: 24px; border: 2px dashed rgba(179,42,140,.45); border-radius: 24px; background: repeating-linear-gradient(135deg, #fff 0 16px, #fff6fc 16px 32px); color: var(--campaign-magenta-dark); text-align: center; }
.campaign-placeholder span { font-size: .7rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.campaign-placeholder strong { font-family: var(--serif); font-size: 1.45rem; }
.campaign-placeholder small { color: var(--campaign-gray); }
.campaign-placeholder-art { aspect-ratio: 4 / 5; min-height: 0; transform: rotate(1.5deg); box-shadow: 18px 18px 0 rgba(132,152,123,.22); }
.campaign-main-art { width: 100%; height: auto; border-radius: 24px; box-shadow: 18px 18px 0 rgba(132,152,123,.22); }

.campaign-jump-nav { position: sticky; top: 76px; z-index: 40; overflow-x: auto; border-block: 1px solid var(--vi-line); background: rgba(248,246,242,.95); backdrop-filter: blur(12px); }
.campaign-jump-nav { scrollbar-width: none; }
.campaign-jump-nav::-webkit-scrollbar { display: none; }
.campaign-jump-nav .campaign-shell { display: flex; gap: 20px; padding-block: 12px; white-space: nowrap; }
.campaign-jump-nav a { padding: 5px 0; color: var(--vi-graphite); font-size: .78rem; font-weight: 700; }
.campaign-jump-nav a:hover { color: var(--campaign-magenta-dark); }
.campaign-quick { padding: 34px 0 46px; background: var(--campaign-magenta); color: #fff; }
.campaign-grid-four { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: rgba(255,255,255,.25); }
.campaign-grid-four article { min-height: 150px; display: flex; flex-direction: column; justify-content: space-between; gap: 20px; padding: 24px; background: var(--campaign-magenta); }
.campaign-grid-four span { font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.campaign-grid-four strong { font-family: var(--serif); font-size: 1.4rem; line-height: 1.15; }
.campaign-caption { margin-top: 16px !important; font-size: .82rem; text-align: center; }

.campaign-story { background: #fff; }
.campaign-story-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(40px, 8vw, 100px); align-items: start; }
.campaign-story-copy { max-width: 760px; }
.campaign-story-copy blockquote { margin: 34px 0 0; padding: 22px 0 22px 24px; border-left: 4px solid var(--campaign-magenta); font-family: var(--serif); font-size: clamp(1.4rem, 3vw, 2.1rem); line-height: 1.2; }
.campaign-story-photo { margin: 0; }
.campaign-story-photo img { width: 100%; min-height: 560px; border-radius: 24px; object-fit: cover; object-position: center; }
.campaign-story-photo figcaption { margin-top: 10px; color: var(--campaign-muted, #746e6a); font-size: .78rem; font-weight: 700; }
.campaign-time-photos { display: grid; grid-template-columns: 1fr 36px 1fr; align-items: center; }
.campaign-time-photos .campaign-placeholder { min-height: 340px; }
.campaign-time-photos figure { margin: 0; }
.campaign-time-photos img { width: 100%; aspect-ratio: 4 / 5; border-radius: 20px; object-fit: cover; }
.campaign-time-photos figcaption, .campaign-memory-wide figcaption { margin-top: 10px; color: var(--campaign-muted, #746e6a); font-size: .78rem; font-weight: 700; }
.campaign-time-line { color: var(--campaign-magenta); font-size: 1.4rem; text-align: center; }
.campaign-memory-wide { margin: 56px 0 0; }
.campaign-memory-wide img { width: 100%; max-height: 520px; border-radius: 24px; object-fit: cover; }
.campaign-soft { background: #f1eee8; }
.campaign-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin: 0 0 28px; padding: 0; list-style: none; }
.campaign-steps li { min-height: 260px; padding: 26px; border-top: 4px solid var(--campaign-magenta); background: #fff; }
.campaign-steps li > span { display: block; margin-bottom: 42px; color: var(--campaign-magenta); font-family: var(--serif); font-size: 3rem; }
.campaign-steps p { margin-top: 14px; }
.campaign-notice, .campaign-callout { margin-top: 22px; padding: 22px 24px; border: 1px solid #dccfbd; background: var(--vi-cream); }
.campaign-notice > strong:first-child { color: var(--campaign-magenta-dark); text-transform: uppercase; font-size: .75rem; letter-spacing: .1em; }
.campaign-callout { border-left: 5px solid var(--campaign-yellow); font-family: var(--serif); font-size: 1.25rem; }
.campaign-callout-strong { border-color: var(--campaign-magenta); background: #fff6fc; }
.campaign-equation { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: stretch; gap: 12px; margin-bottom: 42px; }
.campaign-equation > div { display: grid; align-content: center; gap: 8px; min-height: 170px; padding: 24px; border: 1px solid var(--vi-line); background: #fff; text-align: center; }
.campaign-equation > b { align-self: center; color: var(--campaign-magenta); font-size: 2rem; }
.campaign-equation strong { font-family: var(--serif); font-size: 1.35rem; }
.campaign-equation span { color: var(--campaign-magenta-dark); font-weight: 800; }
.campaign-equation .campaign-equation-total { background: var(--campaign-magenta); color: #fff; }
.campaign-equation .campaign-equation-total span { color: #fff; }
.campaign-two-columns { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 6vw, 72px); }
.campaign-check-list, .campaign-excluded ul { display: grid; gap: 10px; margin: 20px 0 0; padding: 0; list-style: none; }
.campaign-check-list li, .campaign-excluded li { position: relative; padding-left: 26px; }
.campaign-check-list li::before { content: "✓"; position: absolute; left: 0; color: var(--campaign-green); font-weight: 900; }
.campaign-excluded li::before { content: "—"; position: absolute; left: 0; color: var(--campaign-magenta); font-weight: 900; }
.campaign-definition { padding: 30px; border-radius: 24px; background: var(--vi-sage-soft); }
.campaign-definition p { margin-top: 16px; }

.campaign-prize { background: var(--campaign-blue); color: #fff; }
.campaign-prize .campaign-eyebrow { color: #fff; }
.campaign-prize-facts { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 34px; }
.campaign-bahamas-photo { margin: 0 0 34px; }
.campaign-bahamas-photo img { width: 100%; max-height: 520px; border-radius: 24px; object-fit: cover; }
.campaign-prize-facts span { padding: 8px 13px; border: 1px solid rgba(255,255,255,.45); border-radius: 999px; font-size: .82rem; }
.campaign-route { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; align-items: center; gap: 14px; padding: 30px; border-block: 1px dashed rgba(255,255,255,.55); font-family: var(--serif); font-size: clamp(1.25rem, 3vw, 2rem); text-align: center; }
.campaign-route b { color: var(--campaign-yellow); }
.campaign-itinerary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 28px; }
.campaign-itinerary article { padding: 22px; background: rgba(255,255,255,.1); }
.campaign-itinerary time { color: var(--campaign-yellow); font-weight: 800; }
.campaign-itinerary h3 { margin-top: 10px; font-size: 1.25rem; }
.campaign-itinerary p { margin-top: 12px; font-size: .9rem; }
.campaign-prize .campaign-callout, .campaign-prize .campaign-notice { color: var(--campaign-ink); }
.campaign-inclusions { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 26px; }
.campaign-inclusions article { padding: 30px; background: #fff; color: var(--campaign-ink); }
.campaign-highlight { margin-top: 18px !important; color: var(--campaign-blue); font-weight: 800; }
.campaign-j1 { background: var(--vi-sage-soft); }
.campaign-j1 h2 { margin-bottom: 22px; }
.campaign-j1-card { align-self: start; padding: clamp(28px, 5vw, 50px); border-radius: 28px; background: #fff; box-shadow: 0 20px 50px rgba(54,48,45,.08); }
.campaign-j1-card strong { color: var(--campaign-magenta-dark); font-family: var(--serif); font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.2; }
.campaign-j1-card p { margin-top: 18px; }
.campaign-timeline { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px 18px; margin: 0; padding: 0; list-style: none; }
.campaign-timeline::before { content: ""; position: absolute; top: 9px; left: 0; right: 0; border-top: 2px dashed rgba(179,42,140,.35); }
.campaign-timeline li { position: relative; padding: 34px 18px 20px; border: 1px solid var(--vi-line); background: #fff; }
.campaign-timeline li::before { content: ""; position: absolute; top: 3px; left: 18px; width: 13px; height: 13px; border: 3px solid var(--campaign-bg); border-radius: 50%; background: var(--campaign-magenta); }
.campaign-timeline time, .campaign-timeline strong { color: var(--campaign-magenta-dark); font-weight: 900; }
.campaign-timeline p { margin-top: 8px; }

.campaign-regulation-section { background: #fff; }
.campaign-updated { font-size: .88rem !important; }
.campaign-print-button { margin-top: 20px; border: 0; font: inherit; cursor: pointer; }
.campaign-regulation-toc { max-width: 820px; margin-bottom: 34px; border: 1px solid var(--vi-line); background: var(--campaign-bg); }
.campaign-regulation-toc summary { min-height: 52px; padding: 14px 18px; cursor: pointer; font-weight: 800; }
.campaign-regulation-toc nav { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 24px; padding: 0 18px 20px; }
.campaign-regulation-toc a { color: var(--campaign-blue); text-decoration: underline; text-underline-offset: 3px; }
.campaign-regulation { max-width: 820px; padding-top: 20px; border-top: 1px solid var(--vi-line); }
.campaign-regulation h2 { margin-bottom: 6px; font-size: clamp(2rem, 5vw, 3.3rem); }
.campaign-regulation .regulation-subtitle { margin: 0 0 32px; font-family: var(--serif); font-size: 1.5rem; }
.campaign-regulation h3 { margin: 52px 0 20px; padding-top: 12px; border-top: 2px solid var(--campaign-magenta); }
.campaign-regulation p { margin: 0 0 12px; }
.campaign-regulation .letter-list { margin: 0 0 18px; padding-left: 28px; list-style-type: lower-alpha; }
.campaign-faq-section { background: #f1eee8; }
.campaign-faq { max-width: 900px; }
.campaign-faq-item { border-bottom: 1px solid #cfc3b8; }
.campaign-faq-item summary { min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 4px; cursor: pointer; font-weight: 800; list-style: none; }
.campaign-faq-item summary::-webkit-details-marker { display: none; }
.campaign-faq-item summary span:last-child { color: var(--campaign-magenta); font-size: 1.6rem; }
.campaign-faq-item[open] summary span:last-child { transform: rotate(45deg); }
.campaign-faq-answer { padding: 0 40px 22px 4px; }
.campaign-community { background: #fff6fc; }
.campaign-community-grid { display: grid; grid-template-columns: 1.2fr .8fr; align-items: center; gap: clamp(40px, 8vw, 100px); }
.campaign-community h2 { margin-bottom: 18px; }
.campaign-qr-wrap { max-width: 320px; justify-self: center; text-align: center; }
.campaign-placeholder-qr { min-height: 0; aspect-ratio: 1; border-radius: 12px; }
.campaign-qr-code { width: min(100%, 300px); height: auto; margin-inline: auto; border: 12px solid #fff; border-radius: 12px; box-shadow: 0 16px 40px rgba(54,48,45,.12); }
.campaign-qr-wrap > p { margin-top: 12px; font-size: .84rem; }
.campaign-final-cta { padding: clamp(70px, 10vw, 120px) 0; background: var(--campaign-magenta); color: #fff; text-align: center; }
.campaign-final-cta .campaign-eyebrow { color: #fff; }
.campaign-final-cta h2 { font-family: var(--serif); font-size: clamp(2.5rem, 6vw, 5rem); line-height: 1; }
.campaign-final-cta p { max-width: 680px; margin: 20px auto 28px; }
.campaign-btn-light { background: #fff; color: var(--campaign-magenta-dark); }
.campaign-legal-note { padding: 24px max(16px, calc((100% - 1120px) / 2)); background: #2b2725; color: #fff; font-size: .86rem; }
.campaign-footer .footer-social { display: grid; gap: 6px; font-size: .8rem; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

@media (max-width: 1020px) {
  .campaign-site-header .site-nav { font-size: .76rem; }
  .campaign-hero-grid, .campaign-story-grid { grid-template-columns: 1fr; }
  .campaign-placeholder-art, .campaign-main-art { max-width: 720px; width: 100%; justify-self: center; }
  .campaign-grid-four, .campaign-itinerary, .campaign-timeline { grid-template-columns: repeat(2, 1fr); }
  .campaign-steps { grid-template-columns: 1fr; }
  .campaign-steps li { min-height: 0; }
  .campaign-steps li > span { margin-bottom: 20px; }
}

@media (max-width: 760px) {
  .campaign-shell { width: min(100% - 24px, 1120px); }
  .campaign-section { padding: 64px 0; }
  .campaign-jump-nav { top: 68px; }
  .campaign-jump-nav .campaign-shell { width: max-content; padding-inline: 12px; }
  .campaign-hero { padding-top: 42px; }
  .campaign-hero-grid, .campaign-two-columns, .campaign-inclusions, .campaign-community-grid { grid-template-columns: 1fr; }
  .campaign-hero h1 { font-size: clamp(3rem, 15vw, 4.8rem); }
  .campaign-main-art { border-radius: 14px; box-shadow: 10px 10px 0 rgba(132,152,123,.22); }
  .campaign-grid-four { grid-template-columns: 1fr; }
  .campaign-grid-four article { min-height: 118px; }
  .campaign-time-photos { grid-template-columns: 1fr; gap: 12px; }
  .campaign-story-photo img { min-height: 0; aspect-ratio: 4 / 5; object-position: 42% center; }
  .campaign-time-photos .campaign-placeholder { min-height: 280px; }
  .campaign-time-line { transform: rotate(90deg); }
  .campaign-equation { grid-template-columns: 1fr; }
  .campaign-equation > b { justify-self: center; }
  .campaign-route { grid-template-columns: 1fr; }
  .campaign-route b { transform: rotate(90deg); }
  .campaign-itinerary, .campaign-timeline { grid-template-columns: 1fr; }
  .campaign-timeline::before { top: 0; bottom: 0; left: 7px; right: auto; border-top: 0; border-left: 2px dashed rgba(179,42,140,.35); }
  .campaign-timeline li { margin-left: 18px; }
  .campaign-timeline li::before { top: 22px; left: -28px; }
  .campaign-regulation-toc nav { grid-template-columns: 1fr; }
  .campaign-regulation { font-size: .96rem; overflow-wrap: anywhere; }
  .campaign-actions { flex-direction: column; align-items: stretch; }
  .campaign-actions .btn { width: 100%; }
}

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

@media print {
  @page { margin: 18mm; }
  body.campaign-page { background: #fff !important; color: #000 !important; font-family: Georgia, serif; font-size: 11pt; }
  .campaign-site-header, .campaign-jump-nav, .campaign-page main > section:not(.campaign-regulation-section), .campaign-faq-section, .campaign-footer, .campaign-legal-note, .campaign-print-button, .campaign-regulation-toc, .campaign-section-head > span, .campaign-section-head > p:first-of-type { display: none !important; }
  .campaign-regulation-section { display: block !important; padding: 0 !important; }
  .campaign-regulation-section .campaign-shell { width: 100%; }
  .campaign-regulation-section .campaign-section-head { display: block; margin-bottom: 24px; }
  .campaign-regulation-section h2 { color: #000; font-size: 22pt; }
  .campaign-updated { display: block !important; }
  .campaign-regulation { max-width: none; border: 0; }
  .campaign-regulation h2 { font-size: 20pt; }
  .campaign-regulation h3 { break-after: avoid; border-color: #000; font-size: 15pt; }
  .campaign-regulation p, .campaign-regulation li { orphans: 3; widows: 3; }
}
