/* components.css — sticky nav + footer v3 styles.
   Loads AFTER tokens.css and site.css so it wins on specificity. */

/* ===========================================================
   HEADER (sh-v3)
   =========================================================== */
.site-header.sh-v3 {
  position: sticky;
  top: 0;
  z-index: 900;
  background: rgba(255,255,255,0.92);
  backdrop-filter: saturate(140%) blur(10px);
  -webkit-backdrop-filter: saturate(140%) blur(10px);
  border-bottom: 1px solid var(--border);
  transition: box-shadow var(--dur-base) var(--ease-out),
              background var(--dur-base) var(--ease-out);
}
.site-header.sh-v3.scrolled {
  box-shadow: var(--shadow-1);
  background: rgba(255,255,255,0.98);
}
.site-header.sh-v3.scrolled .sh-strip { display: none; }
.site-header.sh-v3.scrolled .sh-main-inner { min-height: var(--header-h-slim); }
.site-header.sh-v3.scrolled .sh-brand-sub { display: none; }

/* Top strip (dates + weather + trip) */
.sh-strip {
  background: var(--lavender-900);
  color: #fff;
  font-size: var(--fs-xs);
  letter-spacing: 0.02em;
}
.sh-strip-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 32px;
  gap: 16px;
}
.sh-strip-dates { font-weight: 600; }
.sh-strip-right {
  display: flex;
  align-items: center;
  gap: 16px;
}
.sh-strip-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  position: relative;
}
.sh-strip-link:hover { color: var(--lavender-200); }
.sh-weather {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  opacity: 0.9;
}
.sh-trip-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--gold-500);
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: var(--radius-pill);
  margin-left: 4px;
}

/* Main nav row */
.sh-main-inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 24px;
  min-height: var(--header-h);
  transition: min-height var(--dur-base) var(--ease-out);
}

/* Brand */
.sh-brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--ink);
}
.sh-brand-mark {
  display: inline-flex;
  width: 36px;
  height: 36px;
  align-items: center;
  justify-content: center;
  background: var(--lavender-50);
  border-radius: 10px;
  flex-shrink: 0;
}
.sh-brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.sh-brand-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--lavender-900);
  letter-spacing: -0.01em;
}
.sh-brand-sub {
  font-size: 0.72rem;
  color: var(--ink-soft);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
}

/* Desktop nav */
.sh-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  flex-wrap: wrap;
}
.sh-nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 8px 12px;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--ink-muted);
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: color var(--dur-fast) var(--ease-out),
              background var(--dur-fast) var(--ease-out);
}
.sh-nav-link:hover { color: var(--lavender-900); background: var(--lavender-50); }
.sh-nav-link.active { color: var(--lavender-900); }
.sh-nav-link.active::after {
  content: '';
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 1px;
  height: 2px;
  background: var(--lavender-700);
  border-radius: 2px;
}

/* Actions */
.sh-actions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.sh-iconbtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--ink-muted);
  cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out);
}
.sh-iconbtn:hover {
  background: var(--surface-alt);
  color: var(--lavender-900);
  border-color: var(--border-strong);
}
.sh-plan-cta { white-space: nowrap; }
.sh-app-cta { white-space: nowrap; }

/* Mobile menu toggle — hidden on desktop */
.sh-mobile-toggle { display: none; }

/* Mobile sheet */
.sh-mobile {
  display: none;
  border-top: 1px solid var(--border);
  background: var(--surface);
  animation: sh-slide-down 200ms var(--ease-out);
}
.sh-mobile[hidden] { display: none !important; }
.sh-mobile-inner {
  padding: 16px 0 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sh-m-nav { display: flex; flex-direction: column; }
.sh-m-link {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 4px;
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
}
.sh-m-link.active { color: var(--lavender-900); }
.sh-m-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  background: var(--lavender-700);
  border-radius: 50%;
}
.sh-m-ctas {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sh-m-ctas .btn-g { width: 100%; }
.sh-m-meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: var(--fs-xs);
  color: var(--ink-soft);
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

@keyframes sh-slide-down {
  from { transform: translateY(-8px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}

/* Search dialog */
dialog.sh-search {
  width: min(640px, 92vw);
  max-width: 92vw;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-2);
  background: var(--surface);
  top: 18vh;
}
dialog.sh-search::backdrop {
  background: rgba(31,29,26,0.45);
  backdrop-filter: blur(2px);
}
.sh-search-form {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 14px;
  border-bottom: 1px solid var(--border);
}
.sh-search-ic { color: var(--ink-soft); display: inline-flex; }
.sh-search-form input[type="search"] {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-size: var(--fs-md);
  color: var(--ink);
  padding: 6px 4px;
}
.sh-search-results {
  max-height: 60vh;
  overflow-y: auto;
  padding: 8px 10px 14px;
}
.sh-search-hint {
  color: var(--ink-soft);
  font-size: var(--fs-sm);
  margin: 10px 8px;
}
.sh-search-hint kbd {
  display: inline-block;
  padding: 1px 6px;
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: 4px;
  font-family: inherit;
  font-size: 0.85em;
}
.sh-search-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.sh-search-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: var(--radius-md);
  text-decoration: none;
  color: var(--ink);
  transition: background var(--dur-fast) var(--ease-out);
}
.sh-search-item:hover,
.sh-search-item:focus {
  background: var(--lavender-50);
  outline: none;
}
.sh-search-kind {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--lavender-700);
  min-width: 52px;
}
.sh-search-title { font-weight: 600; }

/* Responsive header */
@media (max-width: 980px) {
  .sh-nav { display: none; }
  .sh-mobile-toggle { display: inline-flex; }
  .sh-app-cta { display: none; }
  .sh-brand-sub { display: none; }
  .sh-main-inner { grid-template-columns: 1fr auto; gap: 12px; }
  .sh-hide-md { display: none; }
}
@media (max-width: 540px) {
  .sh-hide-sm { display: none; }
  .sh-strip-inner { min-height: 28px; font-size: 11px; }
  .sh-plan-cta { padding: 8px 12px; font-size: var(--fs-sm); min-height: 36px; }
}

/* Prevent background scroll when mobile menu is open */
body.sh-mobile-open { overflow: hidden; }

/* ===========================================================
   FOOTER (sf-v3)
   =========================================================== */
.site-footer.sf-v3 {
  background: var(--cream);
  color: var(--ink-muted);
  padding: 56px 0 24px;
  border-top: 1px solid var(--border);
  margin-top: 64px;
}
.sf-inner {
  display: flex;
  flex-direction: column;
  gap: 40px;
}
.sf-top {
  display: grid;
  grid-template-columns: minmax(260px, 1.1fr) 3fr;
  gap: 48px;
  align-items: start;
}
.sf-brand-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--ink);
  margin-bottom: 10px;
}
.sf-brand-mark {
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--lavender-50);
  border-radius: 10px;
}
.sf-brand-text strong {
  display: block;
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.1rem;
  color: var(--lavender-900);
  line-height: 1.2;
}
.sf-brand-text span {
  display: block;
  font-size: 0.78rem;
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}
.sf-brand-blurb {
  font-size: var(--fs-sm);
  line-height: 1.55;
  margin: 10px 0 14px;
  max-width: 44ch;
}
.sf-address {
  font-style: normal;
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--ink-muted);
}
.sf-address a { color: var(--lavender-700); text-decoration: none; font-weight: 600; }
.sf-address a:hover { text-decoration: underline; }

.sf-cols {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 24px;
}
.sf-col h4 {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--lavender-900);
  margin: 0 0 12px;
}
.sf-col a {
  display: block;
  font-size: var(--fs-sm);
  color: var(--ink-muted);
  text-decoration: none;
  padding: 4px 0;
  transition: color var(--dur-fast) var(--ease-out);
}
.sf-col a:hover { color: var(--lavender-900); }
.sf-col .sf-dim {
  display: block;
  font-size: var(--fs-sm);
  color: var(--ink-soft);
  padding: 4px 0;
}

.sf-newsletter {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  align-items: center;
  gap: 20px;
  padding: 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}
.sf-newsletter-text h4 {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.3rem;
  color: var(--lavender-900);
  margin: 0 0 4px;
}
.sf-newsletter-text p { margin: 0; font-size: var(--fs-sm); color: var(--ink-muted); }
.sf-newsletter-form {
  display: flex;
  gap: 8px;
}
.sf-newsletter-form input[type="email"] {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  font-size: var(--fs-sm);
  background: var(--surface);
  color: var(--ink);
}
.sf-newsletter-form input[type="email"]:focus {
  outline: none;
  border-color: var(--lavender-500);
  box-shadow: var(--focus-ring);
}
.sf-newsletter-ok { color: var(--sage-700); margin: 8px 0 0; font-weight: 600; }

.sf-a11y {
  padding: 20px 0 0;
  border-top: 1px solid var(--border);
}
.sf-a11y h4 {
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--lavender-900);
  margin: 0 0 12px;
}
.sf-a11y-toggles {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}
.sf-a11y-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: var(--fs-sm);
  color: var(--ink-muted);
}
.sf-a11y-toggle input[type="checkbox"] { accent-color: var(--lavender-700); width: 16px; height: 16px; }
.sf-a11y-note {
  font-size: var(--fs-xs);
  color: var(--ink-soft);
  margin: 8px 0 0;
}

.sf-bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
  font-size: var(--fs-xs);
  color: var(--ink-soft);
}
.sf-bottom p { margin: 0; }
.sf-legal { display: inline-flex; gap: 16px; flex-wrap: wrap; }
.sf-legal a { color: var(--ink-soft); text-decoration: none; }
.sf-legal a:hover { color: var(--lavender-900); text-decoration: underline; }

/* Responsive footer */
@media (max-width: 1024px) {
  .sf-cols { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 900px) {
  .sf-top { grid-template-columns: 1fr; gap: 32px; }
}
@media (max-width: 640px) {
  .sf-cols { grid-template-columns: repeat(2, 1fr); gap: 20px; }
  .sf-newsletter { grid-template-columns: 1fr; }
  .site-footer.sf-v3 { padding: 40px 0 20px; }
}

/* ===========================================================
   QUICK-START TRIP MODE STRIP (homepage)
   =========================================================== */
.qs-strip {
  background: var(--cream);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 32px 0 40px;
  margin: 0;
}
.qs-strip-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.qs-strip-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: var(--fs-xl);
  color: var(--lavender-900);
  margin: 4px 0 0;
  line-height: 1.15;
}
.qs-modes {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 12px;
}
.qs-mode { display: flex; }
.qs-mode-link {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  text-decoration: none;
  color: var(--ink);
  box-shadow: var(--shadow-1);
  transition: transform var(--dur-fast) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}
.qs-mode-link:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-2);
  border-color: var(--lavender-300);
}
.qs-mode-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--lavender-50);
  color: var(--lavender-700);
  border-radius: 10px;
  flex-shrink: 0;
}
.qs-mode-text { flex: 1; display: flex; flex-direction: column; line-height: 1.25; }
.qs-mode-label { font-weight: 700; font-size: var(--fs-sm); color: var(--ink); }
.qs-mode-sub { font-size: var(--fs-xs); color: var(--ink-soft); margin-top: 2px; }
.qs-mode-go { color: var(--lavender-700); flex-shrink: 0; }

@media (max-width: 1024px) {
  .qs-modes { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 720px) {
  .qs-modes { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .qs-modes { grid-template-columns: 1fr; }
  .qs-strip { padding: 24px 0 28px; }
}

/* ===========================================================
   VISIT INFO PREVIEW (homepage)
   =========================================================== */
.vi-preview { background: var(--surface); padding-top: 56px; padding-bottom: 56px; }
.vi-head { text-align: center; margin-bottom: 28px; }
.vi-head h2 {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: var(--fs-2xl);
  color: var(--lavender-900);
  margin: 6px 0 8px;
  line-height: 1.15;
}
.vi-head p { color: var(--ink-muted); font-size: var(--fs-md); max-width: 60ch; margin: 0 auto; }
.vi-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}
.vi-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  text-decoration: none;
  color: var(--ink);
}
.vi-card h3 {
  font-size: var(--fs-md);
  font-weight: 700;
  color: var(--lavender-900);
  margin: 6px 0 0;
  line-height: 1.25;
}
.vi-card p { margin: 0; font-size: var(--fs-sm); color: var(--ink-muted); line-height: 1.5; }
.vi-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: var(--lavender-50);
  color: var(--lavender-700);
  border-radius: 12px;
}
.vi-cta { text-align: center; margin-top: 28px; }

@media (max-width: 900px) {
  .vi-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
  .vi-grid { grid-template-columns: 1fr; }
}

.trip-summary-card {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  margin: 16px 0;
  background: linear-gradient(135deg, rgba(155,125,184,0.08), rgba(196,163,74,0.08));
  border: 1px solid var(--lavender-200);
  border-radius: var(--radius-lg);
  flex-wrap: wrap;
}
.trip-summary-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: var(--lavender-50);
  color: var(--lavender-700);
  border-radius: 10px;
  flex-shrink: 0;
}
.trip-summary-text { flex: 1; min-width: 180px; }
.trip-summary-title { font-weight: 700; color: var(--ink); font-size: var(--fs-base); }
.trip-summary-sub { font-size: var(--fs-sm); color: var(--ink-muted); margin-top: 2px; }

.find-me-btn {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 1000;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.25);
}

.section-sponsors { background: var(--surface-alt); padding: 48px 0; }
.section-sponsors .sp-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: var(--fs-xl);
  color: var(--lavender-900);
  margin: 4px 0 0;
}

/* ===========================================================
   TRIP PLANNER (tp-*)
   =========================================================== */
.tp-header { padding: 48px 0 24px; background: var(--cream); }
.tp-title { font-family: 'Playfair Display', Georgia, serif; font-size: var(--fs-3xl); color: var(--lavender-900); margin: 4px 0 12px; line-height: 1.1; }
.tp-sub { font-size: var(--fs-md); color: var(--ink-muted); max-width: 64ch; }

.tp-stepper-wrap { background: var(--surface); border-bottom: 1px solid var(--border); position: sticky; top: var(--header-h); z-index: 50; }
.tp-stepper { display: flex; gap: 0; list-style: none; padding: 14px 0; margin: 0; overflow-x: auto; }
.tp-stepper li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  color: var(--ink-soft);
  font-size: var(--fs-sm);
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--dur-fast), color var(--dur-fast);
}
.tp-stepper li + li::before { content: ''; width: 14px; height: 1px; background: var(--border); margin-right: 4px; }
.tp-stepper li .tp-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--surface-alt);
  color: var(--ink-soft);
  font-size: 12px;
}
.tp-stepper li.done { color: var(--lavender-700); }
.tp-stepper li.done .tp-step-num { background: var(--lavender-100); color: var(--lavender-700); }
.tp-stepper li.active { background: var(--lavender-50); color: var(--lavender-900); }
.tp-stepper li.active .tp-step-num { background: var(--lavender-700); color: #fff; }

.tp-body { padding: 32px 0 80px; background: var(--cream-2); min-height: 60vh; }
.tp-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 28px; align-items: start; }
.tp-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 28px; box-shadow: var(--shadow-1); }
.tp-step-h { font-family: 'Playfair Display', Georgia, serif; font-size: var(--fs-xl); color: var(--lavender-900); margin: 0 0 6px; line-height: 1.2; }
.tp-step-p { color: var(--ink-muted); margin: 0 0 20px; font-size: var(--fs-sm); }

.tp-modes {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px;
  margin-bottom: 24px;
}
.tp-mode-card {
  display: flex; flex-direction: column; gap: 6px;
  padding: 16px; text-align: left;
  background: var(--surface); border: 1.5px solid var(--border); border-radius: var(--radius-md);
  cursor: pointer; font-family: inherit;
  transition: border-color var(--dur-fast), background var(--dur-fast), box-shadow var(--dur-base);
}
.tp-mode-card:hover { border-color: var(--lavender-300); background: var(--lavender-50); }
.tp-mode-card.active { border-color: var(--lavender-700); background: var(--lavender-50); box-shadow: var(--shadow-1); }
.tp-mode-ic { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; background: var(--lavender-100); color: var(--lavender-700); border-radius: 8px; }
.tp-mode-label { font-weight: 700; color: var(--ink); }
.tp-mode-sub { font-size: var(--fs-xs); color: var(--ink-soft); }

.tp-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.tp-field { display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-muted); }
.tp-field input[type="date"] {
  padding: 10px 12px; border: 1px solid var(--border-strong); border-radius: var(--radius-md);
  font-size: var(--fs-sm); font-family: inherit; background: var(--surface); color: var(--ink);
}
.tp-field input[type="date"]:focus { outline: none; border-color: var(--lavender-500); box-shadow: var(--focus-ring); }
.tp-hint { font-size: var(--fs-sm); color: var(--ink-soft); margin: 8px 0 20px; }

.tp-fieldset { border: none; padding: 0; margin: 0 0 24px; }
.tp-fieldset legend { font-weight: 700; color: var(--ink); font-size: var(--fs-sm); padding: 0; margin-bottom: 10px; }
.tp-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tp-chips button {
  padding: 8px 14px; border-radius: var(--radius-pill);
  background: var(--surface); border: 1px solid var(--border);
  color: var(--ink-muted); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; font-family: inherit;
  transition: all var(--dur-fast);
}
.tp-chips button:hover { background: var(--lavender-50); border-color: var(--lavender-300); color: var(--lavender-900); }
.tp-chips button.active { background: var(--lavender-700); color: #fff; border-color: var(--lavender-700); }

.tp-mustdos { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.tp-mustdo {
  display: flex; align-items: flex-start; gap: 12px; padding: 14px;
  border: 1px solid var(--border); border-radius: var(--radius-md); cursor: pointer;
  transition: background var(--dur-fast), border-color var(--dur-fast);
}
.tp-mustdo:hover { background: var(--lavender-50); border-color: var(--lavender-200); }
.tp-mustdo input { margin-top: 3px; accent-color: var(--lavender-700); }
.tp-mustdo-body { display: flex; flex-direction: column; gap: 2px; }
.tp-mustdo-title { font-weight: 600; color: var(--ink); }
.tp-mustdo-meta { font-size: var(--fs-xs); color: var(--ink-soft); }

.tp-nav { display: flex; justify-content: space-between; gap: 12px; padding-top: 20px; border-top: 1px solid var(--border); margin-top: 24px; }
.tp-nav button { min-width: 140px; }

.tp-itin { display: flex; flex-direction: column; gap: 20px; }
.tp-day { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.tp-day-head { display: flex; align-items: baseline; justify-content: space-between; padding: 14px 18px; background: var(--lavender-50); border-bottom: 1px solid var(--border); }
.tp-day-head h3 { font-family: 'Playfair Display', Georgia, serif; font-size: var(--fs-md); margin: 0; color: var(--lavender-900); }
.tp-day-count { font-size: var(--fs-xs); color: var(--ink-soft); font-weight: 600; }
.tp-day-stops { list-style: none; padding: 0; margin: 0; }
.tp-stop { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--border); }
.tp-stop:last-child { border-bottom: 0; }
.tp-stop-kind {
  flex-shrink: 0; padding: 2px 8px; border-radius: var(--radius-pill);
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em;
  background: var(--surface-alt); color: var(--ink-soft);
}
.tp-stop-festival .tp-stop-kind { background: var(--gold-500); color: var(--ink); }
.tp-stop-body { flex: 1; min-width: 0; }
.tp-stop-title { font-weight: 700; color: var(--ink); line-height: 1.3; }
.tp-stop-meta { font-size: var(--fs-xs); color: var(--ink-soft); margin-top: 2px; }
.tp-stop-desc { font-size: var(--fs-sm); color: var(--ink-muted); margin-top: 6px; }
.tp-stop-actions { display: inline-flex; gap: 4px; flex-shrink: 0; }
.tp-icon-btn {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--border); border-radius: 6px;
  color: var(--ink-soft); cursor: pointer;
  transition: background var(--dur-fast), color var(--dur-fast);
}
.tp-icon-btn:hover { background: var(--surface-alt); color: var(--ink); }
.tp-icon-btn.tp-remove:hover { background: #fcebeb; color: #a94444; border-color: #f0c8c8; }

.tp-exports { margin-top: 28px; padding: 20px; background: var(--cream); border-radius: var(--radius-md); border: 1px solid var(--border); }
.tp-exports h3 { font-size: var(--fs-md); margin: 0 0 12px; color: var(--lavender-900); }
.tp-export-row { display: flex; flex-wrap: wrap; gap: 8px; }
.tp-exports-hint { margin: 10px 0 0; font-size: var(--fs-sm); color: var(--sage-700); }
.tp-empty { color: var(--ink-soft); text-align: center; padding: 40px 20px; }

.tp-summary { position: sticky; top: calc(var(--header-h) + 88px); }
.tp-summary-card {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 20px; margin-bottom: 16px;
}
.tp-summary-card h3 { font-family: 'Playfair Display', Georgia, serif; font-size: var(--fs-md); color: var(--lavender-900); margin: 0 0 12px; }
.tp-summary-card dl { display: grid; grid-template-columns: 90px 1fr; gap: 6px 12px; font-size: var(--fs-sm); margin: 0 0 10px; }
.tp-summary-card dt { color: var(--ink-soft); font-weight: 600; }
.tp-summary-card dd { margin: 0; color: var(--ink); word-wrap: break-word; }
.tp-summary-hint { font-size: var(--fs-xs); color: var(--ink-soft); margin: 8px 0 0; line-height: 1.4; }
.tp-summary-app p { font-size: var(--fs-sm); color: var(--ink-muted); margin: 0 0 12px; }

@media (max-width: 900px) {
  .tp-layout { grid-template-columns: 1fr; }
  .tp-summary { position: static; }
  .tp-stepper-wrap { position: static; }
}
@media (max-width: 540px) {
  .tp-card { padding: 20px; }
  .tp-row { grid-template-columns: 1fr; }
}

/* Print */
@media print {
  .tp-header, .tp-stepper-wrap, .tp-summary, .tp-nav, .tp-exports, .tp-stop-actions, .site-header, .site-footer { display: none !important; }
  .tp-body { background: #fff; padding: 0; }
  .tp-card { border: none; box-shadow: none; padding: 0; }
  .tp-day { break-inside: avoid; page-break-inside: avoid; }
  .tp-step[hidden] { display: none !important; }
  .tp-step[data-step="6"] { display: block !important; }
}

/* Small helper used by page components */
.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;
}

/* ================================================
   Visit page — direction cards, guide, next-steps
   ================================================ */

/* Direction card icons (replacing emoji) */
.direction-card h4 { display: flex; align-items: center; gap: 10px; }
.direction-card .dir-ic { display: inline-flex; color: var(--lavender-600); }
.direction-card .dir-ic svg { display: block; }

/* Highlight-box inline header icons */
.highlight-box h4 { display: flex; align-items: center; gap: 10px; }
.highlight-box .hb-ic {
  display: inline-flex;
  color: var(--lavender-600, #7b68a6);
  flex-shrink: 0;
}
.highlight-box .hb-ic svg { display: block; }

/* Info-card icon normalization (when using data-ic) */
.info-card .icon[data-ic] {
  display: inline-flex;
  align-items: center; justify-content: center;
  width: 44px; height: 44px;
  background: var(--lavender-50, #f5f1fa);
  border-radius: 12px;
  margin-bottom: .5rem;
}
.info-card .icon[data-ic] svg { width: 22px; height: 22px; }

/* Trail card route icon */
.trail-card-ic {
  display: inline-flex;
  align-items: center; justify-content: center;
  width: 60px; height: 60px;
  border-radius: 50%;
  background: var(--lavender-50, #f5f1fa);
  margin: 0 auto;
}
.trail-card-ic svg { display: block; }

/* Season-callout: layout icon + text cleanly */
.season-callout { display: flex; align-items: center; gap: 14px; }

/* Visitor Guide section */
.guide-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: var(--space-lg);
  align-items: start;
  margin-top: var(--space-md);
}
@media (max-width: 900px) {
  .guide-grid { grid-template-columns: 1fr; }
}

.guide-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-md);
  padding: var(--space-lg);
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e5e0ec);
  border-radius: var(--radius-xl, 18px);
  box-shadow: 0 8px 20px rgba(76,50,120,.06);
}
.guide-card .guide-ic {
  width: 56px; height: 56px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--lavender-50, #f5f1fa);
  color: var(--lavender-700, #5a4a7a);
  border-radius: 14px;
  flex-shrink: 0;
}
.guide-card h4 { margin: 0 0 .4rem; font-size: 1.25rem; color: var(--text, #2a2440); }
.guide-card p { color: var(--text-secondary, #5e5770); margin: 0 0 var(--space-md); }
.guide-card .guide-actions {
  display: flex; flex-wrap: wrap; gap: 10px;
  margin-bottom: var(--space-sm);
}
.guide-card .guide-actions .btn-ic {
  display: inline-flex; margin-right: 8px; vertical-align: -3px;
}
.guide-card .guide-note {
  font-size: .85rem;
  color: var(--text-light, #7b7590);
  margin: 0;
}

.guide-pack {
  padding: var(--space-lg);
  background: var(--lavender-50, #f5f1fa);
  border: 1px solid var(--lavender-200, #ddd1f0);
  border-radius: var(--radius-xl, 18px);
}
.guide-pack h4 {
  display: flex; align-items: center; gap: 10px;
  margin: 0 0 var(--space-sm);
  font-size: 1.05rem;
  color: var(--lavender-800, #3f3559);
}
.guide-pack .pack-ic { display: inline-flex; color: var(--lavender-600, #7b68a6); }
.guide-pack ul { list-style: none; margin: 0; padding: 0; }
.guide-pack li {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 8px 0;
  color: var(--text-secondary, #5e5770);
  border-bottom: 1px dashed rgba(123,104,166,.15);
  font-size: .95rem;
  line-height: 1.35;
}
.guide-pack li:last-child { border-bottom: 0; }
.guide-pack .pack-chk {
  flex-shrink: 0;
  display: inline-flex;
  margin-top: 2px;
  width: 18px; height: 18px;
  align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--lavender-600, #7b68a6);
  color: #fff;
}
.guide-pack .pack-chk svg { width: 12px; height: 12px; }

/* Ready-to-plan next-steps cards */
.visit-nextsteps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--space-sm);
}
.vns-card {
  display: flex; align-items: center; gap: 14px;
  padding: 16px 20px;
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e5e0ec);
  border-radius: var(--radius-lg, 14px);
  text-decoration: none;
  color: inherit;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.vns-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(76,50,120,.08);
  border-color: var(--lavender-300, #c9b8e8);
}
.vns-card .vns-ic {
  flex-shrink: 0;
  width: 42px; height: 42px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 12px;
  background: var(--lavender-50, #f5f1fa);
  color: var(--lavender-700, #5a4a7a);
}
.vns-card .vns-title { font-weight: 700; color: var(--text, #2a2440); }
.vns-card .vns-sub { font-size: .85rem; color: var(--text-light, #7b7590); }

/* Print — hide non-essential, keep visitor guide */
@media print {
  .site-header, .site-footer, nav, .visual-break,
  #venue-map, #trail-map-container, #app-banner-slot,
  .section-alt:not(#guide),
  .section:has(.faq-item) { display: none !important; }
  body { background: #fff !important; }
}

/* ================================================
   App Page (app.html)
   ================================================ */

.app-hero {
  position: relative;
  padding: clamp(72px, 10vw, 120px) 0 clamp(48px, 8vw, 80px);
  background: linear-gradient(180deg, var(--lavender-50, #f5f1fa) 0%, #fff 100%);
  overflow: hidden;
}
.app-hero-bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(closest-side at 20% 20%, rgba(123,104,166,.15), transparent 60%),
    radial-gradient(closest-side at 80% 30%, rgba(199,140,220,.12), transparent 60%),
    radial-gradient(closest-side at 50% 90%, rgba(212,168,75,.08), transparent 60%);
  pointer-events: none;
}
.app-hero-overlay { display: none; }
.app-hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
@media (max-width: 920px) {
  .app-hero-grid { grid-template-columns: 1fr; }
}
.app-hero-copy h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.25rem, 4.6vw, 3.6rem);
  line-height: 1.1;
  color: var(--lavender-900, #2e2744);
  margin: .5rem 0 1rem;
}
.app-hero-copy p {
  font-size: clamp(1.05rem, 1.4vw, 1.2rem);
  color: var(--text-secondary, #5e5770);
  max-width: 52ch;
  margin-bottom: 1.5rem;
}
.app-hero-cta {
  display: flex; align-items: center; gap: 18px;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}
.app-android-note {
  font-size: .95rem; color: var(--text-light, #7b7590);
}

.app-store-btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 12px 22px;
  background: #111;
  color: #fff;
  border-radius: 14px;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
  box-shadow: 0 6px 16px rgba(0,0,0,.15);
}
.app-store-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(0,0,0,.22); }
.app-store-btn .as-label { display: inline-flex; flex-direction: column; line-height: 1.1; text-align: left; }
.app-store-btn .as-sub  { font-size: .72rem; opacity: .85; letter-spacing: .02em; }
.app-store-btn .as-main { font-size: 1.15rem; font-weight: 700; letter-spacing: -.01em; }
.app-store-btn-lg { padding: 14px 26px; }
.app-store-btn-lg .as-main { font-size: 1.3rem; }

.app-rating {
  list-style: none; margin: 0; padding: 0;
  display: flex; gap: 22px; flex-wrap: wrap;
  color: var(--text-secondary, #5e5770);
  font-size: .95rem;
}
.app-rating li { display: flex; align-items: center; gap: 6px; }
.app-rating .stars { color: #e0a500; letter-spacing: .05em; }
.app-rating strong { color: var(--lavender-800, #3f3559); font-size: 1.1rem; }

/* Phone mockup */
.app-hero-phone { display: flex; justify-content: center; }
.phone-frame {
  width: 280px; height: 560px;
  background: #111;
  border-radius: 48px;
  padding: 14px;
  box-shadow: 0 30px 60px rgba(76,50,120,.28), 0 0 0 2px rgba(255,255,255,.05) inset;
  position: relative;
  transform: rotate(-2deg);
}
@media (max-width: 920px) { .phone-frame { transform: none; } }
.phone-notch {
  position: absolute; top: 14px; left: 50%;
  width: 110px; height: 26px;
  background: #111;
  border-radius: 0 0 14px 14px;
  transform: translateX(-50%);
  z-index: 2;
}
.phone-screen {
  width: 100%; height: 100%;
  background: linear-gradient(180deg, var(--lavender-50, #f5f1fa) 0%, #fff 100%);
  border-radius: 36px;
  overflow: hidden;
  display: flex; flex-direction: column;
  position: relative;
}
.phone-status {
  text-align: right;
  padding: 14px 20px 6px;
  font-size: .72rem; font-weight: 600;
  color: var(--lavender-800, #3f3559);
}
.phone-app-head {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 0 16px 10px;
}
.phone-app-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.05rem;
  color: var(--lavender-900, #2e2744);
  font-weight: 700;
}
.phone-app-ct {
  font-size: .72rem; color: var(--text-light, #7b7590);
}
.phone-hero {
  margin: 0 14px 12px;
  padding: 14px 14px 12px;
  background: linear-gradient(135deg, var(--lavender-600, #7b68a6), var(--lavender-700, #5a4a7a));
  color: #fff; border-radius: 16px;
}
.phone-hero-label { font-size: .62rem; letter-spacing: .1em; opacity: .85; }
.phone-hero-title { font-family: 'Playfair Display', serif; font-size: 1.3rem; font-weight: 700; margin-top: 2px; }
.phone-hero-sub { font-size: .75rem; opacity: .9; }
.phone-row {
  display: flex; gap: 6px; padding: 0 14px 10px;
  overflow: hidden;
}
.phone-chip {
  padding: 5px 10px;
  background: #fff;
  border: 1px solid var(--border, #e5e0ec);
  border-radius: 999px;
  font-size: .7rem;
  color: var(--text-secondary, #5e5770);
}
.phone-chip-active {
  background: var(--lavender-700, #5a4a7a); color: #fff; border-color: transparent;
}
.phone-map {
  margin: 0 14px 10px;
  position: relative;
  height: 170px;
  background:
    linear-gradient(135deg, #e8f2e3 0%, #dfeed8 100%);
  border-radius: 14px;
  overflow: hidden;
}
.phone-map::before {
  content: ""; position: absolute; inset: 0;
  background:
    repeating-linear-gradient(0deg, transparent 0 28px, rgba(107,142,107,.15) 28px 29px),
    repeating-linear-gradient(90deg, transparent 0 28px, rgba(107,142,107,.1) 28px 29px);
}
.phone-pin {
  position: absolute;
  width: 14px; height: 14px;
  background: var(--lavender-600, #7b68a6);
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 2px 4px rgba(0,0,0,.2);
}
.phone-pin-1 { top: 20%; left: 30%; }
.phone-pin-2 { top: 45%; left: 55%; background: var(--gold-500, #d4a84b); }
.phone-pin-3 { top: 70%; left: 25%; }
.phone-pin-4 { top: 35%; left: 80%; }
.phone-route {
  position: absolute; inset: 0;
  background:
    linear-gradient(115deg, transparent 28%, rgba(123,104,166,.6) 28%, rgba(123,104,166,.6) 30%, transparent 30%),
    linear-gradient(45deg, transparent 45%, rgba(123,104,166,.5) 45%, rgba(123,104,166,.5) 47%, transparent 47%);
  opacity: .5;
  pointer-events: none;
}
.phone-card {
  margin: 0 14px 10px;
  background: #fff;
  border: 1px solid var(--border, #e5e0ec);
  border-radius: 12px;
  padding: 10px 12px;
  box-shadow: 0 4px 10px rgba(76,50,120,.06);
}
.phone-card-title { font-size: .85rem; font-weight: 700; color: var(--lavender-900, #2e2744); }
.phone-card-sub { font-size: .7rem; color: var(--text-light, #7b7590); margin-top: 2px; }
.phone-tabbar {
  margin-top: auto;
  display: grid; grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--border, #e5e0ec);
  padding: 10px 0 16px;
  background: #fff;
}
.phone-tab {
  display: flex; justify-content: center;
  color: var(--text-light, #7b7590);
}
.phone-tab.active { color: var(--lavender-700, #5a4a7a); }

/* Feature grid */
.app-features {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
  margin-top: var(--space-md);
}
@media (max-width: 900px) { .app-features { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .app-features { grid-template-columns: 1fr; } }
.app-feat {
  padding: var(--space-lg);
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e5e0ec);
  border-radius: var(--radius-xl, 18px);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.app-feat:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(76,50,120,.08);
  border-color: var(--lavender-200, #ddd1f0);
}
.app-feat .app-feat-ic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 48px; height: 48px;
  background: var(--lavender-50, #f5f1fa);
  color: var(--lavender-700, #5a4a7a);
  border-radius: 14px;
  margin-bottom: .75rem;
}
.app-feat h4 { margin: 0 0 .4rem; font-size: 1.1rem; color: var(--lavender-900, #2e2744); }
.app-feat p  { margin: 0; color: var(--text-secondary, #5e5770); font-size: .95rem; line-height: 1.45; }

/* Steps */
.app-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
  margin-top: var(--space-md);
}
@media (max-width: 760px) { .app-steps { grid-template-columns: 1fr; } }
.app-step {
  position: relative;
  padding: var(--space-lg);
  background: var(--surface, #fff);
  border-radius: var(--radius-xl, 18px);
  border: 1px solid var(--border, #e5e0ec);
}
.app-step-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  background: var(--lavender-700, #5a4a7a);
  color: #fff;
  font-weight: 700;
  border-radius: 50%;
  margin-bottom: .75rem;
}
.app-step h4 { margin: 0 0 .3rem; color: var(--lavender-900, #2e2744); }
.app-step p  { margin: 0; color: var(--text-secondary, #5e5770); font-size: .95rem; }

/* Screenshots */
.app-shots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
  margin-top: var(--space-md);
}
@media (max-width: 760px) { .app-shots { grid-template-columns: 1fr; } }
.app-shot { margin: 0; text-align: center; }
.app-shot-frame {
  aspect-ratio: 9 / 16;
  max-width: 260px;
  margin: 0 auto;
  border-radius: 28px;
  border: 10px solid #111;
  background: var(--lavender-50, #f5f1fa);
  position: relative;
  overflow: hidden;
  box-shadow: 0 16px 36px rgba(76,50,120,.18);
}
.app-shot-map  {
  background:
    linear-gradient(180deg, #7b68a6 0 52px, #f5f1fa 52px 100%),
    repeating-linear-gradient(0deg, transparent 0 28px, rgba(107,142,107,.2) 28px 29px);
  background-size: 100% 100%, 100% 100%;
}
.app-shot-map::after {
  content: "20+ farms on one map";
  position: absolute; bottom: 14px; left: 14px; right: 14px;
  background: #fff; padding: 10px 12px;
  border-radius: 10px;
  color: var(--lavender-900, #2e2744);
  font-size: .85rem; font-weight: 600;
  box-shadow: 0 4px 10px rgba(0,0,0,.1);
}
.app-shot-sched {
  background:
    linear-gradient(180deg, #7b68a6 0 52px, #f5f1fa 52px 100%);
}
.app-shot-sched::after {
  content: "Fri · Sat · Sun schedule";
  position: absolute; top: 70px; left: 14px; right: 14px;
  background: #fff; padding: 10px 12px;
  border-radius: 10px;
  color: var(--lavender-900, #2e2744);
  font-size: .85rem; font-weight: 600;
  box-shadow: 0 4px 10px rgba(0,0,0,.05);
}
.app-shot-pass {
  background:
    linear-gradient(180deg, #5a4a7a 0 52px, #f5f1fa 52px 100%);
}
.app-shot-pass::after {
  content: "Collect stamps at every farm";
  position: absolute; bottom: 14px; left: 14px; right: 14px;
  background: var(--gold-500, #d4a84b); padding: 10px 12px;
  border-radius: 10px;
  color: #3a2b08;
  font-size: .85rem; font-weight: 600;
}
.app-shot figcaption {
  margin-top: .75rem;
  color: var(--text-secondary, #5e5770);
  font-size: .9rem;
}

/* Final CTA */
.app-cta-section { background: var(--lavender-50, #f5f1fa); }
.app-cta {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: var(--space-lg);
  padding: clamp(24px, 4vw, 48px);
  background: linear-gradient(135deg, #fff 0%, #fff 60%, var(--lavender-100, #ebe2f5) 100%);
  border-radius: var(--radius-xl, 18px);
  border: 1px solid var(--border, #e5e0ec);
  box-shadow: 0 20px 40px rgba(76,50,120,.08);
  align-items: center;
}
@media (max-width: 820px) { .app-cta { grid-template-columns: 1fr; } }
.app-cta h2 { margin: .4rem 0 .6rem; color: var(--lavender-900, #2e2744); font-family: 'Playfair Display', serif; }
.app-cta p  { color: var(--text-secondary, #5e5770); margin: 0; }
.app-cta-actions {
  display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
  justify-content: flex-end;
}
@media (max-width: 820px) { .app-cta-actions { justify-content: flex-start; } }
