/* ReRoot global Ashlar-inspired design and contrast system. */
:root {
  --rr-forest: #17372f;
  --rr-forest-soft: #24483f;
  --rr-ink: #1f2926;
  --rr-muted: #59615c;
  --rr-paper: #fbfaf7;
  --rr-cream: #f4f1eb;
  --rr-stone: #e7e1d8;
  --rr-sage: #dde4dd;
  --rr-bronze: #76583c;
  --rr-line: #c8c0b5;
  --rr-white: #ffffff;
  --rr-danger: #8a2f2f;
  --rr-radius: 18px;
  --rr-shadow: 0 18px 50px rgba(31, 41, 38, .08);
}

html { scroll-behavior: smooth; }
body {
  background: var(--rr-paper) !important;
  color: var(--rr-ink) !important;
  font-family: Inter, Arial, sans-serif !important;
}
main { background: var(--rr-paper); }
h1, h2, h3, .page-title, .section-title, .hero-title {
  color: var(--rr-forest) !important;
  font-family: "Cormorant Garamond", Georgia, serif !important;
  font-weight: 500 !important;
  letter-spacing: -.025em;
}
p, li, label, small, .muted, .section-lead, .page-subtitle { color: var(--rr-muted); }
a { color: var(--rr-forest); text-underline-offset: 4px; }
hr { border-color: var(--rr-line) !important; }

.content-wrap, .page-shell, .container, .section-inner, .auth-shell, .legal-shell {
  width: min(1180px, calc(100% - 40px));
  margin-inline: auto;
}
.rr-section, section:not(.mag-hero):not(.mag-life):not(.mag-final) { background-color: var(--rr-paper); }
.bg-alt, .section-alt, .soft-panel { background: var(--rr-cream) !important; }

.site-header-v1 {
  background: rgba(251, 250, 247, .97) !important;
  border-bottom: 1px solid var(--rr-line) !important;
  box-shadow: none !important;
}
.site-header-v1 .logo-wordmark,
.site-header-v1 .site-nav-desktop a,
.site-header-v1 .nav-auth-link,
.site-header-v1 .menu-btn { color: var(--rr-forest) !important; }
.site-header-v1 .site-nav-desktop a:hover,
.site-header-v1 .site-nav-desktop a:focus-visible,
.site-header-v1 .site-nav-desktop a.active {
  background: var(--rr-cream) !important;
  color: var(--rr-forest) !important;
}
.rr-mobile-panel { background: var(--rr-forest) !important; color: var(--rr-paper) !important; }
.rr-mobile-panel a, .rr-mobile-panel button, .rr-mobile-brand { color: var(--rr-paper) !important; }

.btn-primary, .nav-cta-btn, .mag-button--ink, button[type="submit"]:not(.btn-secondary) {
  background: var(--rr-forest) !important;
  border: 1px solid var(--rr-forest) !important;
  color: var(--rr-white) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
}
.btn-primary:hover, .nav-cta-btn:hover, .mag-button--ink:hover, button[type="submit"]:not(.btn-secondary):hover {
  background: #0f2b25 !important;
  border-color: #0f2b25 !important;
  color: var(--rr-white) !important;
}
.btn-secondary, .mag-button--cream, .mag-button--light, .button-secondary {
  background: var(--rr-paper) !important;
  border: 1px solid var(--rr-forest) !important;
  color: var(--rr-forest) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
}
.btn-secondary:hover, .mag-button--cream:hover, .mag-button--light:hover, .button-secondary:hover {
  background: var(--rr-forest) !important;
  color: var(--rr-white) !important;
}

.rr-card, .card, .panel, .result-card, .city-card, .favorite-card, .plan-card,
.auth-card, .account-card, .legal-card, .compare-card, .calculator-card,
[class*="-card"]:not(.home-city-showcase-card__media) {
  background: var(--rr-white) !important;
  border: 1px solid var(--rr-line) !important;
  border-radius: var(--rr-radius) !important;
  box-shadow: var(--rr-shadow) !important;
  color: var(--rr-ink) !important;
}
.rr-card h1, .rr-card h2, .rr-card h3,
.card h1, .card h2, .card h3,
.panel h1, .panel h2, .panel h3,
[class*="-card"] h1, [class*="-card"] h2, [class*="-card"] h3 { color: var(--rr-forest) !important; }
.rr-card p, .card p, .panel p, [class*="-card"] p { color: var(--rr-muted) !important; }
.price-badge, .badge, .pill, .tag, .status-pill {
  background: var(--rr-sage) !important;
  border: 1px solid #b8c5ba !important;
  color: var(--rr-forest) !important;
}
.home-plan-teaser--featured, .mag-plan--featured, .plan-card.featured {
  background: var(--rr-sage) !important;
  border-color: #aebcaf !important;
}

input, select, textarea {
  background: var(--rr-white) !important;
  border: 1px solid #81786e !important;
  border-radius: 12px !important;
  color: var(--rr-ink) !important;
  box-shadow: none !important;
}
input::placeholder, textarea::placeholder { color: #5f6762 !important; opacity: 1; }
label, legend { color: var(--rr-ink) !important; font-weight: 600; }
fieldset { border-color: var(--rr-line) !important; }

table { background: var(--rr-white) !important; color: var(--rr-ink) !important; border-color: var(--rr-line) !important; }
th { background: var(--rr-forest) !important; color: var(--rr-white) !important; }
td { background: var(--rr-white) !important; color: var(--rr-ink) !important; border-color: var(--rr-line) !important; }
tr:nth-child(even) td { background: var(--rr-cream) !important; }

.site-footer-v1, .mag-hero, .mag-life, .mag-final, .dark-section, .hero-dark {
  background: var(--rr-forest) !important;
  color: var(--rr-paper) !important;
}
.site-footer-v1 h1, .site-footer-v1 h2, .site-footer-v1 h3, .site-footer-v1 p, .site-footer-v1 a,
.mag-hero h1, .mag-hero p, .mag-hero a:not(.mag-button--light),
.mag-life h2, .mag-life p, .mag-life strong,
.mag-final h2, .mag-final p, .mag-final a:not(.mag-button--light),
.dark-section h1, .dark-section h2, .dark-section h3, .dark-section p, .dark-section a { color: var(--rr-paper) !important; }

.bg-alt, .mag-ask, .mag-destinations, .mag-compare, .mag-assessment, .mag-membership,
.destination__caption, .mag-hero__figure figcaption { color: var(--rr-ink) !important; }
.bg-alt h1, .bg-alt h2, .bg-alt h3,
.mag-ask h2, .mag-destinations h2, .mag-destinations h3,
.mag-compare h2, .mag-assessment h2, .mag-membership h2, .mag-membership h3 { color: var(--rr-forest) !important; }
.bg-alt p, .mag-ask p, .mag-destinations p, .mag-compare p,
.mag-assessment p, .mag-membership p, .destination__caption span,
.mag-hero__figure figcaption { color: var(--rr-muted) !important; }

.section-kicker, .eyebrow, .mag-label, .mag-plan-label, .destination__caption p {
  color: var(--rr-bronze) !important;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.alert, .notice, .info-box { background: var(--rr-cream) !important; border: 1px solid var(--rr-line) !important; color: var(--rr-ink) !important; }
.error, .error-message, [data-state="error"] { color: var(--rr-danger) !important; }

/* Account and authentication: explicit high-contrast rules. */
.account-page,
.account-page main,
.account-page .home-section,
.account-page .content-wrap { background: var(--rr-paper) !important; color: var(--rr-ink) !important; }
.account-page .account-card {
  background: var(--rr-white) !important;
  color: var(--rr-ink) !important;
  border: 1px solid var(--rr-line) !important;
}
.account-page .account-card p,
.account-page .account-empty-note,
.account-page .account-status,
.account-page .home-disclaimer-line,
.account-page .account-delete-intro,
.account-page .account-delete-note,
.account-page .account-delete-signin-note { color: var(--rr-muted) !important; }
.account-page .account-card h1,
.account-page .account-card h2,
.account-page .account-card h3,
.account-page .account-card strong { color: var(--rr-forest) !important; }
.account-page .auth-tabs {
  background: var(--rr-cream) !important;
  border: 1px solid var(--rr-line) !important;
  border-radius: 14px !important;
  padding: 6px !important;
}
.account-page .auth-tab {
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--rr-forest) !important;
  font-weight: 600 !important;
}
.account-page .auth-tab.is-active,
.account-page .auth-tab[aria-selected="true"] {
  background: var(--rr-forest) !important;
  border-color: var(--rr-forest) !important;
  color: var(--rr-white) !important;
}
.account-page .auth-tab:hover:not(.is-active) {
  background: var(--rr-stone) !important;
  color: var(--rr-forest) !important;
}
.account-page .account-form label { color: var(--rr-ink) !important; }
.account-page .account-form input {
  background: var(--rr-white) !important;
  color: var(--rr-ink) !important;
  border-color: #81786e !important;
}
.account-page .account-form input::placeholder { color: #5f6762 !important; }
.account-page .account-form .btn-primary {
  background: var(--rr-forest) !important;
  color: var(--rr-white) !important;
  border-color: var(--rr-forest) !important;
}
.account-page .account-delete-modal-panel {
  background: var(--rr-white) !important;
  color: var(--rr-ink) !important;
}
.account-page .account-delete-modal-panel p,
.account-page .account-delete-modal-panel label { color: var(--rr-muted) !important; }
.account-page .account-delete-modal-panel h2,
.account-page .account-delete-modal-panel strong { color: var(--rr-forest) !important; }

/* Never allow inherited white text on known light surfaces. */
.account-page .account-card *,
.account-page .auth-panel *,
.account-page .account-form * { text-shadow: none !important; }

 a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--rr-bronze) !important;
  outline-offset: 3px;
}

@media (max-width: 768px) {
  .content-wrap, .page-shell, .container, .section-inner, .auth-shell, .legal-shell { width: min(100% - 28px, 1180px); }
  .rr-card, .card, .panel, .result-card, .city-card, .favorite-card, .plan-card,
  .auth-card, .account-card, .legal-card, .compare-card, .calculator-card,
  [class*="-card"] { border-radius: 14px !important; }
  table { display: block; overflow-x: auto; }
}

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

@media (forced-colors: active) {
  .btn-primary, .btn-secondary, .nav-cta-btn, .mag-button { border: 2px solid ButtonText !important; }
}

/* Account page architectural refresh */
body.account-page {
  --account-ink: #1c2834;
  --account-muted: #667381;
  --account-paper: #f3eee7;
  --account-card: #fffaf4;
  --account-stone: #e9e1d7;
  --account-line: rgba(28, 40, 52, .14);
  --account-navy: #26384a;
  background: var(--account-paper) !important;
  color: var(--account-ink) !important;
}

body.account-page .account-main,
body.account-page .home-section,
body.account-page .content-wrap {
  background: transparent !important;
}

body.account-page .account-main {
  position: relative;
  width: min(100% - 64px, 1280px) !important;
  max-width: 1280px !important;
  margin: 0 auto !important;
  padding: 48px 0 88px !important;
}

body.account-page .account-main::before {
  content: "";
  display: block;
  min-height: 300px;
  margin: 0 0 34px;
  background:
    linear-gradient(90deg, rgba(38, 56, 74, .9) 0%, rgba(38, 56, 74, .62) 40%, rgba(38, 56, 74, .08) 76%),
    url("../images/Lisbon.jpg") center/cover no-repeat;
}

body.account-page .account-main::after {
  content: "Your account";
  position: absolute;
  top: 126px;
  left: 46px;
  color: #fff;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: clamp(3.8rem, 6vw, 6.2rem);
  font-weight: 500;
  line-height: .9;
  letter-spacing: -.05em;
  pointer-events: none;
}

body.account-page .content-wrap {
  width: 100% !important;
  max-width: none !important;
}

body.account-page .account-card,
body.account-page .account-entitlement-card,
body.account-page .account-premium-tools {
  margin: 0 0 24px !important;
  padding: clamp(24px, 3vw, 38px) !important;
  border: 1px solid var(--account-line) !important;
  border-radius: 0 !important;
  background: var(--account-card) !important;
  box-shadow: none !important;
}

body.account-page #account-signed-out {
  width: min(100%, 760px) !important;
  margin: -90px 0 36px auto !important;
  position: relative;
  z-index: 2;
  background: #fff !important;
}

body.account-page #account-signed-in {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr);
  gap: 24px;
}

body.account-page #account-signed-in[hidden] {
  display: none !important;
}

body.account-page #account-signed-in > .account-welcome,
body.account-page #account-signed-in > .account-plan-line,
body.account-page #account-signed-in > .account-actions,
body.account-page #account-signed-in > .account-status,
body.account-page #account-signed-in > #account-purchase-state,
body.account-page #account-signed-in > .account-saved-section {
  grid-column: 1 / -1;
}

body.account-page .account-welcome {
  margin: 0 !important;
  padding: 24px 28px !important;
  background: var(--account-navy) !important;
  color: #fff !important;
  font-size: 1rem;
}

body.account-page .account-welcome span,
body.account-page .account-welcome strong {
  color: #fff !important;
}

body.account-page .account-plan-line {
  margin: -24px 0 0 !important;
  padding: 0 28px 22px !important;
  background: var(--account-navy) !important;
  color: #dfe7ed !important;
}

body.account-page .nav-plan-pill {
  background: #d8c4b0 !important;
  border-color: #d8c4b0 !important;
  color: #26384a !important;
}

body.account-page .auth-tabs {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  border: 1px solid var(--account-line) !important;
  border-radius: 0 !important;
  background: var(--account-line) !important;
}

body.account-page .auth-tab {
  min-height: 48px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--account-stone) !important;
  color: var(--account-ink) !important;
}

body.account-page .auth-tab.is-active,
body.account-page .auth-tab[aria-selected="true"] {
  background: var(--account-navy) !important;
  color: #fff !important;
}

body.account-page .auth-panel {
  padding-top: 24px;
}

body.account-page .account-form {
  display: grid !important;
  gap: 12px !important;
}

body.account-page .account-form input {
  min-height: 48px !important;
  padding: 11px 12px !important;
  border: 1px solid rgba(28, 40, 52, .24) !important;
  border-radius: 0 !important;
  background: #fff !important;
}

body.account-page .btn-primary,
body.account-page .btn-secondary,
body.account-page .btn-ghost,
body.account-page button[type="submit"] {
  min-height: 46px !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

body.account-page .btn-primary,
body.account-page button[type="submit"] {
  background: var(--account-navy) !important;
  border-color: var(--account-navy) !important;
  color: #fff !important;
}

body.account-page .btn-secondary,
body.account-page .btn-ghost {
  background: transparent !important;
  border-color: rgba(28, 40, 52, .28) !important;
  color: var(--account-ink) !important;
}

body.account-page .account-tools-list {
  display: grid;
  gap: 0;
  margin: 18px 0 22px !important;
  padding: 0 !important;
  list-style: none !important;
  border-top: 1px solid var(--account-line);
}

body.account-page .account-tools-list li {
  padding: 12px 0 !important;
  border-bottom: 1px solid var(--account-line);
  color: var(--account-muted) !important;
}

body.account-page .account-tools-list strong {
  color: var(--account-ink) !important;
}

body.account-page .cta-button-group,
body.account-page .account-actions {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
}

body.account-page .account-delete-card {
  margin-top: 36px !important;
  background: #efe5da !important;
  border-left: 3px solid #8a4a3c !important;
}

body.account-page .account-export-card {
  background: #e9e1d7 !important;
}

body.account-page .account-saved-section {
  margin-top: 0 !important;
}

body.account-page .account-delete-modal-panel {
  border-radius: 0 !important;
  background: #fffaf4 !important;
  box-shadow: 0 24px 70px rgba(28, 40, 52, .22) !important;
}

@media (max-width: 900px) {
  body.account-page .account-main {
    width: calc(100% - 36px) !important;
  }

  body.account-page #account-signed-in {
    grid-template-columns: 1fr;
  }

  body.account-page #account-signed-in > * {
    grid-column: 1 !important;
  }

  body.account-page #account-signed-out {
    width: calc(100% - 36px) !important;
    margin: -64px auto 32px !important;
  }
}

@media (max-width: 640px) {
  body.account-page .account-main {
    width: calc(100% - 24px) !important;
    padding: 24px 0 60px !important;
  }

  body.account-page .account-main::before {
    min-height: 230px;
    margin-bottom: 22px;
  }

  body.account-page .account-main::after {
    top: 90px;
    left: 22px;
    font-size: clamp(3.2rem, 16vw, 4.7rem);
  }

  body.account-page #account-signed-out {
    width: 100% !important;
    margin: -42px 0 28px !important;
  }

  body.account-page .account-card,
  body.account-page .account-entitlement-card,
  body.account-page .account-premium-tools {
    padding: 20px !important;
  }

  body.account-page .auth-tabs {
    grid-template-columns: 1fr !important;
  }

  body.account-page .cta-button-group,
  body.account-page .account-actions {
    display: grid !important;
  }

  body.account-page .cta-button-group > *,
  body.account-page .account-actions > * {
    width: 100% !important;
  }
}
