*, *::before, *::after { box-sizing: border-box; }
html { margin: 0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
body { margin: 0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; }
:root {
  --font-family-body: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-family-heading: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}
.site-main { width: 100%; }

/* Keep the final content block visually separate from the shared footer. */
.site-main + .footer-wrapper {
  display: block;
  width: 100%;
  align-self: stretch;
  box-sizing: border-box;
  padding-top: clamp(var(--spacing-md), 2vw, var(--spacing-lg));
  background: var(--color-surface);
}

.site-skip-link {
  position: fixed; top: -4rem; left: 1rem; z-index: 5000; padding: .7rem 1rem;
  background: var(--color-primary); color: #fff; border-radius: 0 0 .5rem .5rem;
}
.site-skip-link:focus { top: 0; }
.plain-contact { cursor: default; }
.navigation-hamburger, .navigation-close { border: 0; background: transparent; }
.navigation-mobile-overlay[aria-hidden="false"] { display: flex; }
body.nav-open { overflow: hidden; }
.events-bento-card[hidden], .results-tab-panel[hidden], .cookie-banner[hidden] { display: none !important; }
.results-news-panel { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--spacing-lg); margin-top: var(--spacing-xl); }
.results-tab[role="tab"] { cursor: pointer; }
.results-tab[aria-selected="true"] { font-weight: 700; }

.subpage-main { background: var(--color-surface); color: var(--color-on-surface); }
.subpage-hero { background: var(--color-primary); color: var(--color-on-primary); padding: clamp(5rem,10vw,8rem) var(--spacing-3xl) clamp(3.5rem,7vw,6rem); position: relative; overflow: hidden; }
.subpage-hero::after { content:""; position:absolute; inset:0; pointer-events:none; opacity:.12; background-image:linear-gradient(90deg,transparent 49.5%,rgba(255,255,255,.45) 50%,transparent 50.5%); background-size:4rem 100%; }
.subpage-hero-inner { width: min(72rem,100%); min-width:0; margin:0 auto; position:relative; z-index:1; }
.subpage-eyebrow { display:block; color: var(--color-accent); font-size:.78rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; margin-bottom:1rem; }
.subpage-hero h1 { max-width: 900px; font-size: clamp(2.5rem,7vw,5.4rem); line-height:.98; letter-spacing:-.04em; text-transform:uppercase; }
.subpage-hero p { max-width: 760px; margin-top:1.4rem; font-size:clamp(1rem,2vw,1.25rem); color:rgba(255,255,255,.8); }
.subpage-section { padding: clamp(3.5rem,7vw,6rem) var(--spacing-3xl); }
.subpage-container { width:min(72rem,100%); margin:0 auto; }
.subpage-container > .section-title:first-child, .subpage-container > h2:first-child { margin-top:0; }
.content-copy { display:grid; gap:1rem; }
.section-lead { max-width:760px; margin:.85rem 0 2rem; color:var(--color-on-surface-secondary); font-size:clamp(1rem,1.6vw,1.15rem); line-height:1.7; }
.subpage-dark .section-lead { color:rgba(255,255,255,.76); }
.prose-grid { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(18rem,.8fr); gap:clamp(2rem,5vw,5rem); align-items:start; }
.prose-grid p, .legal-copy p, .legal-copy li, .event-detail-card p, .faq-list p { line-height:1.72; }
.prose-grid .section-title, .subpage-dark .section-title { margin-bottom:1rem; }
.subpage-dark { background: var(--color-primary); color: var(--color-on-primary); }
.info-card-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; margin-top:2rem; }
.info-card-grid article { border:1px solid rgba(255,255,255,.18); padding:1.4rem; min-height:12rem; }
.info-card-grid h3 { color:var(--color-accent); text-transform:uppercase; margin-bottom:.8rem; }
.process-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.process-step { padding:clamp(1.3rem,3vw,2rem); border:1px solid var(--color-outline); background:#fff; }
.process-step-number { display:block; margin-bottom:1.2rem; color:var(--color-accent); font-size:.78rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.process-step h3 { margin-bottom:.7rem; text-transform:uppercase; }
.process-step p { color:var(--color-on-surface-secondary); line-height:1.65; }
.detail-list { display:grid; gap:.8rem; margin:1.25rem 0 0; padding:0; list-style:none; }
.detail-list li { position:relative; padding-left:1.25rem; line-height:1.65; }
.detail-list li::before { content:""; position:absolute; top:.7em; left:0; width:.42rem; height:.42rem; border-radius:50%; background:var(--color-accent); }
.subpage-cta { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding:clamp(1.5rem,4vw,2.5rem); background:var(--color-surface-tint); border-left:4px solid var(--color-accent); }
.subpage-cta-copy { max-width:720px; }
.subpage-cta h2 { margin-bottom:.55rem; text-transform:uppercase; }
.subpage-cta p { color:var(--color-on-surface-secondary); line-height:1.65; }
.subpage-cta .btn { flex:none; }
.faq-group + .faq-group { margin-top:2.5rem; }
.faq-group-title { margin-bottom:1rem; font-size:clamp(1.25rem,2.5vw,1.7rem); text-transform:uppercase; }
.support-callout { padding:clamp(1.5rem,4vw,2.5rem); background:var(--color-primary); color:#fff; }
.support-callout h2 { margin-bottom:.75rem; text-transform:uppercase; }
.support-callout p { max-width:820px; line-height:1.7; color:rgba(255,255,255,.8); }
.support-callout strong { color:var(--color-accent); }
.support-callout a { color:#fff; text-decoration:underline; text-underline-offset:.2em; }
.contact-layout { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2rem,6vw,6rem); align-items:start; }
.contact-card { margin-top:1.5rem; display:grid; gap:.55rem; padding:1.5rem; border-left:4px solid var(--color-accent); background:var(--color-surface-tint); font-style:normal; overflow-wrap:anywhere; }
.contact-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; padding:clamp(1.2rem,3vw,2rem); background:#fff; border:1px solid var(--color-outline); box-shadow:var(--shadow-level-1); }
.form-field { display:grid; gap:.45rem; }
.form-field-wide { grid-column:1/-1; }
.form-field label { font-weight:700; font-size:.9rem; }
.form-field input,.form-field select,.form-field textarea { width:100%; border:1px solid var(--color-outline); background:#fff; color:var(--color-on-surface); padding:.78rem .9rem; border-radius:.35rem; min-height:46px; }
.form-field textarea { resize:vertical; }
.form-field input:focus,.form-field select:focus,.form-field textarea:focus { outline:2px solid var(--color-accent); outline-offset:2px; }
.form-status { min-height:1.5rem; margin-top:.7rem; font-weight:600; }
.form-status.success { color:#245b38; }
.form-status.error { color:#8a2525; }
.legal-copy { width:100%; max-width:860px; min-width:0; overflow-wrap:anywhere; }
.legal-copy h2 { margin:2.4rem 0 .75rem; font-size:clamp(1.35rem,3vw,2rem); text-transform:uppercase; }
.legal-copy ul { padding-left:1.25rem; display:grid; gap:.6rem; }
.legal-copy a { color:var(--color-accent); text-decoration:underline; text-underline-offset:.18em; }
.legal-intro { margin:1.25rem 0 2rem; padding:1.25rem 1.4rem; border-left:4px solid var(--color-accent); background:var(--color-surface-tint); line-height:1.7; }
.policy-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:1.5rem 0 2.5rem; }
.policy-fact { padding:1.2rem; border:1px solid var(--color-outline); background:#fff; }
.policy-fact strong { display:block; margin-bottom:.45rem; text-transform:uppercase; }
.policy-fact span { color:var(--color-on-surface-secondary); line-height:1.55; }
.storage-record { margin:1rem 0; padding:1.25rem; border:1px solid var(--color-outline); background:#fff; }
.storage-record dl { display:grid; grid-template-columns:minmax(8rem,.35fr) 1fr; gap:.65rem 1rem; margin:0; }
.storage-record dt { font-weight:750; }
.storage-record dd { margin:0; color:var(--color-on-surface-secondary); overflow-wrap:anywhere; }
.faq-list { max-width:900px; display:grid; gap:.75rem; }
.faq-list details { border:1px solid var(--color-outline); background:#fff; padding:0 1.2rem; }
.faq-list summary { cursor:pointer; list-style:none; padding:1.15rem 2.2rem 1.15rem 0; font-weight:750; position:relative; }
.faq-list summary::after { content:"+"; position:absolute; right:0; top:1rem; color:var(--color-accent); font-size:1.4rem; }
.faq-list details[open] summary::after { content:"–"; }
.faq-list p { padding:0 0 1.2rem; color:var(--color-on-surface-secondary); }
.event-detail-list { display:grid; gap:1.5rem; }
.event-detail-card { border:1px solid var(--color-outline); padding:clamp(1.3rem,3vw,2.2rem); background:#fff; scroll-margin-top:6rem; }
.event-detail-card h2 { font-size:clamp(1.7rem,4vw,2.5rem); text-transform:uppercase; }
.event-detail-card h3 { margin-top:1.4rem; text-transform:uppercase; }
.event-meta { color:var(--color-accent); font-weight:700; margin:.45rem 0 1rem; }
.schedule-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.schedule-cards div { display:grid; gap:.35rem; padding:1rem; background:var(--color-surface-tint); }
.event-note { padding:1.2rem 1.4rem; border-left:4px solid var(--color-accent); background:var(--color-primary); color:#fff; }
.cookie-banner { position:fixed; z-index:3000; left:1rem; right:1rem; bottom:1rem; margin:auto; max-width:72rem; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1rem 1.2rem; background:#fff; color:var(--color-on-surface); border:1px solid var(--color-outline); box-shadow:0 18px 50px rgba(0,0,0,.22); }
.cookie-banner p { margin-top:.25rem; max-width:650px; }
.cookie-actions { display:flex; flex-wrap:wrap; gap:.5rem; justify-content:flex-end; }
.cookie-actions .btn { min-height:2.65rem; font-size:.8rem; }
.cookie-dialog { border:0; padding:0; max-width:min(560px,calc(100vw - 2rem)); background:transparent; }
.cookie-dialog::backdrop { background:rgba(0,0,0,.55); }
.cookie-dialog-card { padding:1.6rem; background:var(--color-surface); color:var(--color-on-surface); border:1px solid var(--color-outline); box-shadow:var(--shadow-level-3); }
.cookie-dialog-card .section-title { margin-bottom:.8rem; }
.cookie-dialog-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1.2rem; }

@media (max-width: 991px) {
  .info-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .policy-facts { grid-template-columns:1fr; }
  .process-grid { grid-template-columns:1fr; }
  .prose-grid,.contact-layout { grid-template-columns:1fr; }
  .results-news-panel { grid-template-columns:1fr; }
}
@media (max-width: 767px) {
  .subpage-hero,.subpage-section { padding-left:1.25rem; padding-right:1.25rem; }
  .subpage-hero { padding-top:4.5rem; }
  .subpage-hero h1 { max-width:100%; font-size:clamp(2.1rem,11vw,3.35rem); white-space:normal; overflow-wrap:anywhere; }
  .subpage-hero p { max-width:100%; overflow-wrap:anywhere; }
  .info-card-grid,.schedule-cards,.contact-form { grid-template-columns:1fr; }
  .subpage-cta { align-items:flex-start; flex-direction:column; }
  .subpage-cta .btn { width:100%; }
  .form-field-wide { grid-column:auto; }
  .cookie-banner { flex-direction:column; align-items:stretch; left:.5rem; right:.5rem; bottom:.5rem; }
  .cookie-actions { justify-content:stretch; }
  .cookie-actions .btn { width:100%; }
  .rivellian-footer-contact-text,[data-email],[data-address] { overflow-wrap:anywhere; }
  .storage-record dl { grid-template-columns:1fr; gap:.2rem; }
  .storage-record dd + dt { margin-top:.7rem; }
}

/* Header breakpoint hardening */
@media (max-width: 1100px) {
  .navigation-desktop-links { display: none !important; }
  .navigation-hamburger { display: flex !important; }
}
@media (min-width: 1101px) {
  .navigation-desktop-links { display: flex !important; }
  .navigation-hamburger { display: none !important; }
}
@media (max-width: 480px) {
  .navigation-container { padding-left: 1rem; padding-right: 1rem; }
  .navigation-bar { gap: .5rem; }
  .navigation-actions { gap: .5rem; }
  .logo-lockup { gap: .4rem; }
  .logo-text { font-size: 1rem; }
  .logo-glyph-container { width: 24px; height: 24px; }
}

/* Mobile geometry fixes for the generated home sections */
.tour-experience-inner,
.upcoming-stops-inner,
.tour-roadmap-inner,
.final-cta-inner { width: 100%; }
.upcoming-stops-gallery { width: 100%; max-width: 100%; box-sizing: border-box; }
@media (max-width: 479px) {
  .upcoming-stops-gallery { padding-left: 1rem; padding-right: 1rem; }
  .stop-tile { flex: 0 0 calc(100vw - 2rem) !important; }
}
@media (max-width: 479px) {
  .home-hero-actions { width: 100%; min-width: 0; }
  .home-hero-actions a { display: block; width: 100%; }
  .home-hero-actions .btn,
  .tour-roadmap .btn { width: 100%; max-width: 100%; white-space: normal; }
}

/* Final mobile visual QA fixes */
@media (max-width: 767px) {
  .homepage-thq-home-hero-bottom-rail-elm,
  .homepage-thq-tour-experience-grid-elm {
    grid-template-columns: 1fr !important;
  }
  .homepage-thq-home-hero-bottom-rail-elm { gap: 1.25rem; }
}
@media (max-width: 480px) {
  .subpage-hero h1.subpage-long-title {
    font-size: clamp(1.5rem, 7.5vw, 2.25rem);
    overflow-wrap: normal;
  }
}
