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

/* ===========================================================
   ⌘K SEARCH PALETTE  (js/search.js)
   =========================================================== */
.sk-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 80px 16px 16px;
}
.sk-modal[hidden] { display: none; }

.sk-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(31, 29, 26, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  animation: sk-fade-in 160ms ease-out;
}

.sk-panel {
  position: relative;
  width: 100%;
  max-width: 640px;
  max-height: calc(100vh - 100px);
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e4ded5);
  border-radius: 14px;
  box-shadow: 0 24px 64px -12px rgba(31, 29, 26, 0.32),
              0 8px 24px -8px rgba(31, 29, 26, 0.18);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: sk-pop-in 180ms cubic-bezier(0.16, 1, 0.3, 1);
}

.sk-input-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border, #e4ded5);
}
.sk-icon { color: var(--lavender-700, #6B5B8A); flex-shrink: 0; }
.sk-input-wrap input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font: inherit;
  font-size: 1.05rem;
  color: var(--ink, #2C3E50);
}
.sk-input-wrap input::placeholder { color: var(--ink-soft, #6b635a); }
.sk-close {
  border: 1px solid var(--border, #e4ded5);
  background: var(--surface-alt, #F7F4EF);
  color: var(--ink-soft, #6b635a);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 6px;
  cursor: pointer;
  font-family: inherit;
}
.sk-close:hover { background: var(--border, #e4ded5); }

.sk-results {
  flex: 1;
  overflow-y: auto;
  padding: 8px 8px 12px;
  min-height: 80px;
}
.sk-empty {
  padding: 28px 18px;
  color: var(--ink-soft, #6b635a);
  font-size: 0.95rem;
  text-align: center;
}
.sk-empty mark { background: var(--lavender-100, #E8DEED); color: var(--lavender-900, #3E3355); padding: 0 4px; border-radius: 3px; }

.sk-group { padding: 10px 10px 4px; }
.sk-group-label {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--lavender-700, #6B5B8A);
  padding: 4px 10px 6px;
}

.sk-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-radius: 8px;
  text-decoration: none;
  color: var(--ink, #2C3E50);
  cursor: pointer;
  transition: background 100ms ease;
}
.sk-item:hover, .sk-item.active {
  background: var(--lavender-50, #F5F1F7);
  color: var(--ink, #2C3E50);
}
.sk-item-body { flex: 1; min-width: 0; }
.sk-item-title {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink, #2C3E50);
  margin-bottom: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sk-item-sub {
  font-size: 0.82rem;
  color: var(--ink-soft, #6b635a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sk-item-title mark, .sk-item-sub mark {
  background: rgba(212, 168, 75, 0.32);
  color: inherit;
  font-weight: 700;
  border-radius: 2px;
  padding: 0 2px;
}
.sk-item-type {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--lavender-100, #E8DEED);
  color: var(--lavender-700, #6B5B8A);
  flex-shrink: 0;
}
.sk-item.active .sk-item-type {
  background: var(--lavender-700, #6B5B8A);
  color: #fff;
}

.sk-footer {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  justify-content: center;
  padding: 10px 18px;
  border-top: 1px solid var(--border, #e4ded5);
  background: var(--surface-alt, #F7F4EF);
  font-size: 0.78rem;
  color: var(--ink-soft, #6b635a);
}
.sk-footer kbd {
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e4ded5);
  border-radius: 4px;
  padding: 1px 6px;
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--ink, #2C3E50);
  margin-right: 2px;
}

@keyframes sk-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes sk-pop-in {
  from { opacity: 0; transform: translateY(-8px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 640px) {
  .sk-modal { padding: 16px 12px; }
  .sk-panel { max-height: calc(100vh - 32px); }
}
@media (prefers-reduced-motion: reduce) {
  .sk-backdrop, .sk-panel { animation: none; }
}

/* ===========================================================
   PER-FARM PAGE PHOTO GALLERY
   =========================================================== */
.farm-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}
.farm-gallery-item {
  display: block;
  aspect-ratio: 4 / 3;
  border-radius: 10px;
  overflow: hidden;
  background: var(--surface-alt, #F7F4EF);
  box-shadow: 0 1px 3px rgba(31, 29, 26, 0.06);
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.farm-gallery-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px -6px rgba(31, 29, 26, 0.16);
}
.farm-gallery-item:focus-visible {
  outline: 2px solid var(--lavender-500, #9B7DB8);
  outline-offset: 2px;
}

/* The first photo is the hero — let it span 2 cols on wider viewports
   so the gallery feels editorial rather than uniform. */
@media (min-width: 720px) {
  .farm-gallery > .farm-gallery-item:first-child {
    grid-column: span 2;
    aspect-ratio: 16 / 9;
  }
}

/* ===========================================================
   FARM CARD EXPANDED PANEL  ("More details" toggle on farms.html)
   =========================================================== */
.farm-expanded[hidden] { display: none; }

.farm-expanded .fx-block { margin-bottom: 16px; }
.farm-expanded .fx-block:last-child { margin-bottom: 0; }

.farm-expanded .fx-label {
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--lavender-700, #6B5B8A);
  margin-bottom: 6px;
}

.farm-expanded .fx-callout {
  margin-bottom: 16px;
  padding: 12px 14px;
  border-radius: 6px;
  font-size: 0.92rem;
  line-height: 1.6;
}
.farm-expanded .fx-callout-label {
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 700;
  margin-bottom: 4px;
  display: block;
}

.farm-expanded .fx-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--lavender-700, #6B5B8A);
  text-decoration: none;
  font-weight: 600;
  border-bottom: 1px solid transparent;
  transition: border-color 160ms ease, color 160ms ease;
}
.farm-expanded .fx-link:hover {
  color: var(--lavender-900, #3E3355);
  border-bottom-color: var(--lavender-300, #C4AED0);
}

/* Expand-button chevron rotation when the panel is open */
.farm-expand-btn[aria-expanded="true"] .farm-expand-icon { transform: rotate(180deg); }

/* Subtle hover lift on the farm card itself, layered with existing card styles */
.farm-card {
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.farm-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px -10px rgba(31, 29, 26, 0.18),
              0 4px 10px -4px rgba(31, 29, 26, 0.08);
}

/* ===========================================================
   MAP SIDEBAR — INLINE BADGES (homepage + farms page)
   =========================================================== */
.map-list-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.map-list-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1.4;
}
.map-list-badge.slga {
  background: var(--lavender-100, #E8DEED);
  color: var(--lavender-700, #6B5B8A);
}
.map-list-badge.upick {
  background: rgba(107, 142, 107, 0.14);
  color: #4A6B4A;
}
.map-list-badge.pet {
  background: rgba(212, 168, 75, 0.18);
  color: #8E7428;
}
.map-list-badge.open {
  background: rgba(46, 125, 50, 0.14);
  color: #2E7D32;
}

/* ===========================================================
   HEADER (sh-v3)
   =========================================================== */

/* ===========================================================
   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;
}

/* Dropdown nav (Farms / Festival / Visit / Discover) */
.sh-nav-drop { position: relative; }
.sh-nav-trigger {
  border: none;
  background: transparent;
  cursor: pointer;
  font-family: inherit;
  gap: 4px;
}
.sh-nav-caret {
  margin-left: 2px;
  transition: transform var(--dur-fast) var(--ease-out);
  opacity: 0.7;
}
.sh-nav-drop.is-open .sh-nav-caret { transform: rotate(180deg); opacity: 1; }
.sh-nav-drop.is-open .sh-nav-link  { color: var(--lavender-900); background: var(--lavender-50); }

.sh-drop-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%);
  min-width: 280px;
  background: var(--surface, #fff);
  border: 1px solid var(--border, #e5e2db);
  border-radius: var(--radius-lg, 16px);
  box-shadow: 0 12px 32px rgba(45, 42, 50, 0.12), 0 2px 8px rgba(0,0,0,0.04);
  padding: 8px;
  z-index: 1000;
  animation: shDropIn 0.18s ease-out;
}
.sh-drop-panel[hidden] { display: none; }
@keyframes shDropIn {
  from { opacity: 0; transform: translate(-50%, -6px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}
.sh-drop-item {
  display: block;
  padding: 10px 14px;
  border-radius: var(--radius-md, 12px);
  text-decoration: none;
  color: var(--ink, #2a2520);
  transition: background var(--dur-fast) var(--ease-out);
}
.sh-drop-item:hover,
.sh-drop-item:focus-visible {
  background: var(--lavender-50);
  outline: none;
}
.sh-drop-label {
  display: block;
  font-weight: 600;
  font-size: var(--fs-sm, 0.92rem);
  color: var(--lavender-900);
  line-height: 1.25;
}
.sh-drop-desc {
  display: block;
  font-size: 0.78rem;
  color: var(--ink-muted, #6b635a);
  margin-top: 2px;
  line-height: 1.35;
}

/* Mobile accordion sub-nav */
.sh-m-group { border-bottom: 1px solid var(--border, #e5e2db); }
.sh-m-group[open] .sh-nav-caret { transform: rotate(180deg); }
.sh-m-sumry {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}
.sh-m-sumry::-webkit-details-marker { display: none; }
.sh-m-subwrap {
  padding: 4px 0 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.sh-m-sublink {
  display: block;
  padding: 8px 12px;
  font-size: 0.92rem;
  color: var(--ink-muted, #6b635a);
  text-decoration: none;
  border-radius: var(--radius-md, 12px);
}
.sh-m-sublink:hover,
.sh-m-sublink:focus-visible {
  background: var(--lavender-50);
  color: var(--lavender-900);
}

/* 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 — let the [hidden] HTML attribute control visibility natively.
   Prior `display: none` base rule was sticking even after JS toggled [hidden]
   off, breaking the hamburger menu after the dropdown nav rewrite. */
.sh-mobile {
  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); }
}
/* Mobile: collapse to a single tight CTA card.
   The 5-mode card grid eats too much above-the-fold real estate after the hero;
   the full planner already lives at /itineraries — this becomes the entry point. */
@media (max-width: 600px) {
  .qs-strip { padding: 20px 0 24px; }
  .qs-strip-head {
    display: block;
    text-align: center;
    margin-bottom: 0;
  }
  .qs-strip-head .eyebrow { display: block; margin-bottom: 4px; }
  .qs-strip-title { font-size: 1.4rem; margin-bottom: 14px; }
  .qs-strip-head .btn-g,
  .qs-strip-head .btn-g-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 14px 20px;
    font-size: 1rem;
    font-weight: 700;
    background: var(--lavender-700);
    color: #fff;
    border: 1px solid var(--lavender-700);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-1);
  }
  .qs-strip-head .btn-g::after {
    content: '\2192';
    font-weight: 600;
  }
  .qs-modes { display: none !important; }
}

/* ===========================================================
   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: linear-gradient(180deg, var(--cream) 0%, var(--surface-alt) 100%);
  padding: 64px 0 56px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.section-sponsors .sp-heading {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: var(--fs-xl);
  color: var(--lavender-900);
  margin: 4px 0 0;
}

/* ===========================================================
   SPONSOR WALL (Chamber-style — featured tile + scrolling marquee)
   =========================================================== */
.sw-wrap { display: flex; flex-direction: column; gap: 28px; max-width: 1100px; margin: 0 auto; }

/* Featured (Platinum) headline tile */
.sw-featured {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  background: linear-gradient(135deg, #FFFBF0 0%, #FFF8E8 100%);
  border: 2px solid var(--accent, #D4A84B);
  border-radius: var(--radius-lg);
  padding: 28px 32px;
  text-align: center;
  position: relative;
  box-shadow: 0 4px 18px rgba(212,168,75,0.18);
}
.sw-featured-eyebrow {
  display: inline-block;
  background: var(--accent, #D4A84B);
  color: #fff;
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 5px 14px;
  border-radius: 999px;
  margin-bottom: 12px;
}
.sw-featured-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.6rem, 3vw, 2rem);
  color: var(--lavender-900, #4A3D6B);
  margin: 0 0 6px;
  font-weight: 800;
  line-height: 1.15;
}
.sw-featured-meta { font-size: 0.95rem; color: var(--ink-muted, #6B635A); margin: 0 0 14px; }
.sw-featured-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--accent, #D4A84B);
  font-weight: 700;
  font-size: 0.9rem;
  text-decoration: none;
}
.sw-featured-link:hover { color: #C29A3F; }

/* Scrolling marquee of sponsor tiles */
.sw-marquee-wrap {
  position: relative;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 60px, #000 calc(100% - 60px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 60px, #000 calc(100% - 60px), transparent 100%);
}
.sw-marquee {
  display: flex;
  gap: 16px;
  width: max-content;
  animation: sw-scroll 60s linear infinite;
  padding: 8px 0;
}
.sw-marquee-wrap:hover .sw-marquee { animation-play-state: paused; }
@keyframes sw-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .sw-marquee { animation: none; transform: none; flex-wrap: wrap; justify-content: center; }
  .sw-marquee-wrap { -webkit-mask-image: none; mask-image: none; overflow: visible; }
}

/* Sponsor tile (each clickable card in the marquee) */
.sw-tile {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  width: 200px;
  height: 120px;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--border);
  border-top: 3px solid var(--ink-soft, #999);
  border-radius: var(--radius-md);
  text-decoration: none;
  color: var(--ink, #2A2520);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}
.sw-tile:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.08);
  border-color: var(--lavender-300, #B5A8D0);
}
.sw-tile-tier {
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin-bottom: 8px;
  color: var(--ink-soft, #888);
}
.sw-tile-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.2;
  color: var(--lavender-900, #4A3D6B);
}
.sw-tile-logo {
  max-width: 100%;
  max-height: 64px;
  width: auto;
  height: auto;
  object-fit: contain;
}
.sw-tile-logo + .sw-tile-name { display: none; }

/* Tier-color top border */
.sw-tile.tier-platinum { border-top-color: #D4A84B; }
.sw-tile.tier-gold     { border-top-color: #FFC107; }
.sw-tile.tier-silver   { border-top-color: #9E9E9E; }
.sw-tile.tier-bronze   { border-top-color: #B87333; }
.sw-tile.tier-bud,
.sw-tile.tier-community { border-top-color: var(--lavender-500, #8B7BB5); }

/* Tier color on the tier label */
.sw-tile.tier-platinum .sw-tile-tier { color: #B8862E; }
.sw-tile.tier-gold     .sw-tile-tier { color: #C99B0A; }
.sw-tile.tier-silver   .sw-tile-tier { color: #707070; }
.sw-tile.tier-bronze   .sw-tile-tier { color: #8B5A28; }
.sw-tile.tier-bud      .sw-tile-tier,
.sw-tile.tier-community .sw-tile-tier { color: var(--lavender-700, #6B5BA0); }

/* Footer caption row */
.sw-foot {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 8px;
  font-size: 0.85rem;
  color: var(--ink-muted, #6B635A);
}
.sw-foot a { color: var(--accent, #D4A84B); font-weight: 700; text-decoration: none; }
.sw-foot a:hover { text-decoration: underline; }
.sw-foot .sw-dot { color: var(--border-strong, #C4BEB4); }

@media (max-width: 640px) {
  .sw-tile { width: 170px; height: 110px; }
  .sw-featured { padding: 22px 20px; }
}

/* ===========================================================
   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); }
/* Attraction stops (Hurricane Ridge, Dungeness Spit, downtown, wineries, etc.) — sage green badge. */
.tp-stop-attraction .tp-stop-kind { background: #DCE9D7; color: #2F5A38; }
/* Dining stops — terracotta badge to read as warm/edible, distinct from farms/festival. */
.tp-stop-dining .tp-stop-kind { background: #F4D9C7; color: #8C4A1F; }
.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; }

/* Add-a-farm per day */
.tp-day-add { padding: 10px 14px 14px; border-top: 1px dashed var(--border); background: linear-gradient(180deg, transparent, var(--cream) 40%); }
.tp-day-add-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; background: var(--surface); border: 1px dashed var(--lavender-200);
  border-radius: var(--radius-pill); color: var(--lavender-700); font-weight: 600; font-size: var(--fs-sm);
  cursor: pointer; transition: all var(--dur-fast);
}
.tp-day-add-btn:hover { background: var(--lavender-50); border-color: var(--lavender-500); border-style: solid; color: var(--lavender-900); }
.tp-day-add-btn[aria-expanded="true"] { background: var(--lavender-100); border-style: solid; border-color: var(--lavender-500); }
.tp-day-add-empty { font-size: var(--fs-xs); color: var(--ink-soft); font-style: italic; padding: 2px 0; }

/* Per-day add blocks for attractions + dining stack below the farm one and
   carry kind-specific accent colors so the 3 add buttons read as distinct. */
.tp-day-add + .tp-day-add { padding-top: 8px; border-top: 0; background: none; }
.tp-day-add-btn-attraction { color: #2F5A38; border-color: #C9DCC2; }
.tp-day-add-btn-attraction:hover { background: #EEF6EB; border-color: #6B8C5C; color: #1F3A24; }
.tp-day-add-btn-attraction[aria-expanded="true"] { background: #DCE9D7; border-color: #6B8C5C; color: #1F3A24; }
.tp-day-add-btn-dining { color: #8C4A1F; border-color: #ECCBB1; }
.tp-day-add-btn-dining:hover { background: #FAEEE0; border-color: #B4663A; color: #5D2E10; }
.tp-day-add-btn-dining[aria-expanded="true"] { background: #F4D9C7; border-color: #B4663A; color: #5D2E10; }
/* Lay the three add buttons in a row on wider mobile + desktop, stack on narrow */
@media (min-width: 480px) {
  .tp-day > .tp-day-add { display: inline-block; padding-right: 8px; }
  .tp-day > .tp-day-add + .tp-day-add { display: inline-block; padding-left: 0; }
}
.tp-day-picker {
  margin-top: 10px; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-sm); overflow: hidden;
  animation: tpPickerIn var(--dur-base) var(--ease-out);
}
@keyframes tpPickerIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.tp-day-picker-head {
  padding: 10px 14px; background: var(--lavender-50); border-bottom: 1px solid var(--border);
  font-weight: 700; color: var(--lavender-900); font-size: var(--fs-sm);
}
.tp-day-picker-list { list-style: none; padding: 0; margin: 0; max-height: 280px; overflow-y: auto; }
.tp-day-picker-list li + li { border-top: 1px solid var(--border); }
.tp-day-picker-item {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  width: 100%; padding: 10px 14px; background: transparent; border: 0;
  text-align: left; cursor: pointer; transition: background var(--dur-fast);
}
.tp-day-picker-item:hover { background: var(--lavender-50); }
.tp-day-picker-name { font-weight: 600; color: var(--ink); font-size: var(--fs-sm); }
.tp-day-picker-meta { font-size: var(--fs-xs); color: var(--ink-soft); }
.tp-day-picker-pin {
  display: inline-block; margin-left: 4px; padding: 1px 6px;
  background: var(--gold-500); color: var(--ink); border-radius: var(--radius-pill);
  font-size: 10px; font-weight: 700; letter-spacing: 0.03em;
}

/* Signature experiences + festival sections on Step 5 */
.tp-mustdo-section { margin-bottom: 22px; }
.tp-mustdo-section + .tp-mustdo-section { margin-top: 8px; border-top: 1px solid var(--border); padding-top: 18px; }
.tp-mustdo-section-h {
  font-family: 'Playfair Display', Georgia, serif; font-size: var(--fs-md);
  color: var(--lavender-900); margin: 0 0 6px;
}
.tp-mustdo-hint { font-size: var(--fs-sm); color: var(--ink-soft); margin: 0 0 12px; }

/* Visited/reachable stepper states */
.tp-stepper li.visited { cursor: pointer; }
.tp-stepper li.visited:not(.active):hover { background: var(--lavender-50); color: var(--lavender-900); }
.tp-stepper li:not(.visited):not(.active) { cursor: default; }

.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; }

/* ===========================================================
   PLANNER V3 — STEP 2: FARM PICKER (sleek user-driven menu)
   =========================================================== */
.tp-pick-bar-top {
  display: flex; flex-direction: column; gap: 12px;
  margin-bottom: 20px;
}
.tp-pick-search {
  width: 100%;
  padding: 12px 16px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-md);
  font-size: var(--fs-sm);
  font-family: inherit;
  background: var(--surface);
  color: var(--ink);
  transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}
.tp-pick-search:focus { outline: none; border-color: var(--lavender-500); box-shadow: var(--focus-ring); }
.tp-pick-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.tp-pick-filter {
  padding: 7px 14px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--ink-muted);
  border-radius: var(--radius-pill);
  font-size: var(--fs-xs);
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: all var(--dur-fast);
}
.tp-pick-filter:hover { background: var(--lavender-50); color: var(--lavender-900); border-color: var(--lavender-200); }
.tp-pick-filter.active { background: var(--lavender-700); color: #fff; border-color: var(--lavender-700); }

.tp-pick-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.tp-pick-card {
  position: relative;
  display: flex;
  flex-direction: column;
  text-align: left;
  background: var(--surface);
  border: 2px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  cursor: pointer;
  font-family: inherit;
  padding: 0;
  transition: transform var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast),
              box-shadow var(--dur-fast);
  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.tp-pick-card:hover {
  transform: translateY(-2px);
  border-color: var(--lavender-300);
  box-shadow: 0 8px 20px rgba(45,42,50,0.08);
}
.tp-pick-card.selected {
  border-color: var(--lavender-700);
  box-shadow: 0 4px 16px rgba(123,104,166,0.25);
}
.tp-pick-card.selected::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(123,104,166,0.06) 0%, rgba(212,168,75,0.04) 100%);
  pointer-events: none;
}
.tp-pick-card.is-closed { opacity: 0.7; }

.tp-pick-card-img {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--lavender-50);
}
.tp-pick-card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}
.tp-pick-card:hover .tp-pick-card-img img { transform: scale(1.05); }

.tp-pick-card-pin {
  position: absolute; top: 10px; left: 10px;
  background: var(--gold-500);
  color: var(--ink);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}
.tp-pick-card-closed {
  position: absolute; bottom: 10px; left: 10px;
  background: rgba(183,28,28,0.92);
  color: #fff;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 3px 9px;
  border-radius: var(--radius-pill);
}

.tp-pick-card-body { padding: 12px 14px 14px; }
.tp-pick-card-name {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--lavender-900);
  line-height: 1.2;
  margin-bottom: 4px;
}
.tp-pick-card-meta {
  font-size: var(--fs-xs);
  color: var(--ink-muted);
  line-height: 1.4;
}

.tp-pick-check {
  position: absolute;
  top: 12px; right: 12px;
  width: 28px; height: 28px;
  border-radius: 50%;
  background: rgba(255,255,255,0.95);
  border: 2px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  color: var(--lavender-700);
  transition: all var(--dur-fast);
  z-index: 1;
}
.tp-pick-card.selected .tp-pick-check {
  background: var(--lavender-700);
  border-color: var(--lavender-700);
  color: #fff;
}

/* Bottom action bar on the picker step */
.tp-pick-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  position: sticky;
  bottom: 0;
  background: var(--surface);
  padding: 14px 0;
  border-top: 1px solid var(--border);
  margin-top: 12px;
}
.tp-pick-count-text {
  font-size: var(--fs-sm);
  color: var(--ink-muted);
}
.tp-pick-count-text strong {
  color: var(--lavender-900);
  font-size: 1.15rem;
  font-family: 'Playfair Display', Georgia, serif;
  margin-right: 2px;
}

@media (max-width: 640px) {
  .tp-pick-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
  .tp-pick-card-name { font-size: 0.95rem; }
}

.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; } }
