:root {
  --navy: #123554;
  --navy-deep: #0b2942;
  --navy-soft: #52708a;
  --orange: #ff7b42;
  --orange-dark: #a63f15;
  --cream: #fffaf2;
  --white: #fff;
  --yellow: #ffe6a3;
  --mint: #e7f5ef;
  --line: rgba(18, 53, 84, 0.14);
  --shadow: 0 18px 48px rgba(18, 53, 84, 0.09);
}
* { box-sizing: border-box; }
html { max-width: 100%; overflow-x: hidden; scroll-behavior: smooth; }
body { max-width: 100%; margin: 0; overflow-x: hidden; color: var(--navy); background: var(--cream); font: 16px/1.55 Inter, ui-sans-serif, system-ui, sans-serif; }
button, input, select, textarea { font: inherit; }
a { color: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible, textarea:focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.container { width: min(calc(100% - 36px), 1180px); margin-inline: auto; }
.site-header { position: sticky; top: 0; z-index: 20; padding: 18px 0; border-bottom: 1px solid var(--line); background: rgba(255, 250, 242, 0.94); backdrop-filter: blur(12px); }
.nav, .footer-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font-size: 1.3rem; font-weight: 850; }
.brand-mark { width: 44px; height: 44px; flex: 0 0 44px; object-fit: contain; }
.brand-wordmark { line-height: 1; }
.back-link { font-weight: 750; text-underline-offset: 4px; }
.secondary-button { min-height: 42px; padding: 0 16px; border: 1px solid var(--line); border-radius: 12px; color: var(--navy); background: white; cursor: pointer; font-weight: 850; }
.nav-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px 18px; }
.admin-page { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; padding-top: 64px; padding-bottom: 90px; }
.admin-invite-card { max-width: 720px; }
.admin-dashboard, .dashboard-periods > section, .provider-demand { min-width: 0; }
.admin-dashboard { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.section-heading h2, .provider-demand h3 { margin: 0; }
.milestone-card { display: grid; gap: 14px; padding: 24px; border-radius: 22px; background: var(--mint); }
.milestone-card div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 20px; }
.milestone-card progress { width: 100%; height: 14px; accent-color: var(--orange); }
.dashboard-periods { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; }
.metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.metric-grid article { display: grid; min-width: 0; gap: 4px; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: white; }
.metric-grid strong { color: var(--navy); font-size: 1.35rem; }
.metric-grid span { color: var(--navy-soft); font-size: .84rem; }
.dashboard-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 18px; background: white; }
.dashboard-table-wrap table { width: 100%; border-collapse: collapse; }
.dashboard-table-wrap th, .dashboard-table-wrap td { padding: 13px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.dashboard-table-wrap th:first-child, .dashboard-table-wrap td:first-child { min-width: 220px; white-space: normal; }
.coverage-dashboard { display: grid; gap: 24px; padding: clamp(20px, 4vw, 34px); border: 1px solid var(--line); border-radius: 24px; background: rgba(255, 255, 255, .55); }
.coverage-dashboard h3 { margin: 0 0 12px; }
.coverage-metric-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.coverage-target-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.coverage-target-grid article { display: grid; gap: 8px; padding: 16px; border-radius: 15px; background: white; }
.coverage-target-grid span { color: var(--navy-soft); font-size: .88rem; }
.coverage-target-grid progress { width: 100%; accent-color: var(--orange); }
.provider-discovery-card { padding: clamp(20px, 4vw, 30px); box-shadow: none; }
.provider-discovery-card form { display: grid; gap: 18px; }
.provider-discovery-card .secondary-button { justify-self: start; }
.venue-discovery-dashboard { display: grid; gap: 22px; padding-top: 22px; border-top: 1px solid var(--line); }
.venue-discovery-dashboard > div > p:last-child { max-width: 74ch; color: var(--navy-soft); }
#venue-candidate-body td:nth-child(3) { min-width: 150px; text-transform: capitalize; }
.link-button { padding: 0; border: 0; color: inherit; background: transparent; font: inherit; font-weight: 750; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.hero { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); gap: 60px; align-items: end; padding: 68px 0 48px; }
.eyebrow, .step-label { margin: 0 0 12px; color: var(--orange-dark); font-size: .82rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.hero h1 { max-width: 820px; margin: 0 0 18px; font-size: clamp(2.85rem, 4.7vw, 4.35rem); line-height: 1; letter-spacing: -.06em; text-wrap: balance; }
.hero-copy > p:last-child { max-width: 760px; margin: 0; color: var(--navy-soft); font-size: 1.1rem; line-height: 1.58; }
.hero-note { display: flex; gap: 14px; padding: 22px; border-radius: 22px; background: var(--yellow); transform: rotate(1.5deg); box-shadow: var(--shadow); }
.hero-note p { margin: 0; }
.spark { display: grid; flex: 0 0 34px; height: 34px; place-items: center; border-radius: 11px; color: var(--navy); background: var(--orange); }
.profile-shell { display: grid; gap: 24px; padding-bottom: 90px; }
.form-card { padding: clamp(24px, 5vw, 46px); border: 1px solid var(--line); border-radius: 30px; background: white; box-shadow: var(--shadow); }
.filter-form-heading { display: grid; gap: 6px; margin-bottom: 28px; }
.filter-form-heading h2 { margin: 0; font-size: clamp(1.45rem, 2.8vw, 1.9rem); }
.filter-form-heading p { max-width: 680px; margin: 0; color: var(--navy-soft); }
#children { display: grid; gap: 0; }
.child-card { display: grid; gap: 26px; padding: 6px 0 34px; }
.child-card + .child-card { padding-top: 38px; border-top: 1px solid var(--line); }
.child-card:last-child { padding-bottom: 6px; }
.child-card h2 { margin: 0; }
.child-card [data-remove] { justify-self: start; margin-top: 2px; }
.step-heading { display: flex; gap: 18px; align-items: flex-start; margin-bottom: 28px; }
.step-heading > div, .hero-copy, .results-heading > div { min-width: 0; }
.step-number { display: grid; flex: 0 0 48px; height: 48px; place-items: center; border-radius: 15px; color: white; background: var(--navy); font-size: 1.1rem; font-weight: 900; }
.step-label { margin-bottom: 6px; }
h2 { margin: 0; font-size: clamp(1.55rem, 3.2vw, 2.3rem); line-height: 1.1; letter-spacing: -.04em; text-wrap: balance; }
.helper { margin: -8px 0 20px 66px; color: var(--navy-soft); }
.field-grid { display: grid; gap: 18px; }
.child-fields { grid-template-columns: 2fr 1fr; }
.constraints-grid { grid-template-columns: repeat(3, 1fr); }
label { display: grid; gap: 8px; color: var(--navy); font-weight: 800; }
.field-label { color: var(--navy); font-weight: 800; }
.field-note { color: var(--navy-soft); font-size: .78rem; font-weight: 500; }
input, select, textarea { width: 100%; border: 1px solid var(--line); border-radius: 14px; color: var(--navy); background: #fffefa; }
input, select { min-height: 52px; padding: 0 15px; }
textarea { padding: 15px; resize: vertical; }
.multi-select-field { position: relative; display: grid; min-width: 0; gap: 8px; }
.multi-select-control { position: relative; min-width: 0; }
.multi-select-control summary { display: flex; min-height: 52px; align-items: center; justify-content: space-between; gap: 12px; padding: 0 15px; border: 1px solid var(--line); border-radius: 14px; color: var(--navy); background: #fffefa; cursor: pointer; font-weight: 750; list-style: none; }
.multi-select-control summary > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.multi-select-control summary::-webkit-details-marker { display: none; }
.multi-select-control[open] summary { border-color: var(--orange); border-radius: 14px 14px 0 0; }
.multi-select-control fieldset { position: absolute; z-index: 12; top: calc(100% - 1px); left: 0; display: grid; width: 100%; min-width: 230px; gap: 2px; margin: 0; padding: 9px; border: 1px solid var(--orange); border-radius: 0 0 14px 14px; background: white; box-shadow: var(--shadow); }
.multi-select-control fieldset label { display: flex; width: 100%; align-items: center; gap: 10px; padding: 9px 8px; border-radius: 9px; cursor: pointer; font-size: .9rem; }
.multi-select-control fieldset label:hover { background: var(--cream); }
.multi-select-control input[type="checkbox"] { width: 18px; height: 18px; min-height: 18px; flex: 0 0 18px; margin: 0; padding: 0; accent-color: var(--orange); }
.multi-select-clear { justify-self: start; margin: 5px 8px 3px; padding: 2px 0; border: 0; color: var(--navy-soft); background: transparent; cursor: pointer; font-size: .78rem; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.example-textarea { font-weight: 400; }
.example-textarea::placeholder { color: rgba(82, 112, 138, .68); font-weight: 400; }
.chip-list { display: flex; flex-wrap: wrap; gap: 10px; }
.interest-picker { display: grid; gap: 9px; }
.interest-picker > .field-note { margin: 0 0 7px; font-size: .84rem; line-height: 1.55; }
.interest-combobox { position: relative; z-index: 4; width: min(100%, 590px); }
.interest-search { position: relative; display: block; width: 100%; color: var(--navy-soft); font-size: .82rem; font-weight: 750; }
.interest-search .interest-search-icon { position: absolute; z-index: 1; top: 50%; left: 15px; display: grid; width: 22px; height: 22px; place-items: center; transform: translateY(-50%); color: var(--navy-soft); font-size: 1.25rem; line-height: 1; pointer-events: none; }
.interest-search input { min-height: 50px; padding: 0 44px; border-color: #c8d4de; background: white; }
.interest-search input:focus { border-color: var(--orange); outline: 3px solid rgba(255, 123, 66, .14); }
.interest-suggestions { position: absolute; z-index: 15; top: calc(100% + 7px); left: 0; overflow-y: auto; width: 100%; max-height: 290px; padding: 7px; border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 18px 42px rgba(18, 53, 84, .16); }
.interest-suggestions[hidden] { display: none; }
.interest-suggestion { display: flex; width: 100%; min-height: 48px; align-items: center; justify-content: space-between; gap: 16px; padding: 9px 11px; border: 0; border-radius: 10px; color: var(--navy); background: transparent; cursor: pointer; text-align: left; }
.interest-suggestion:hover, .interest-suggestion.is-active { background: var(--cream); }
.interest-suggestion:disabled { cursor: default; opacity: .65; }
.interest-suggestion span { font-weight: 850; }
.interest-suggestion small { color: var(--navy-soft); font-size: .7rem; font-weight: 700; text-transform: capitalize; }
.interest-create-option span { color: #a5411a; }
.interest-suggestion-empty { margin: 0; padding: 10px 11px; color: var(--navy-soft); font-size: .84rem; }
.interest-section { display: grid; gap: 11px; padding: 18px 0 19px; }
.interest-section + .interest-section { border-top: 1px solid var(--line); }
.interest-section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; }
.interest-section-heading h3 { margin: 0; font-size: .92rem; }
.interest-section-heading small { color: var(--navy-soft); font-size: .7rem; font-weight: 750; }
.selected-interest-list, .popular-interest-list { display: flex; flex-wrap: wrap; gap: 9px; }
.selected-interest-chip { display: inline-flex; min-height: 38px; align-items: center; gap: 8px; padding: 6px 7px 6px 14px; border: 1px solid var(--navy); border-radius: 999px; color: white; background: var(--navy); font-size: .86rem; font-weight: 800; }
.selected-interest-chip button { display: grid; width: 25px; height: 25px; place-items: center; padding: 0; border: 0; border-radius: 50%; color: white; background: rgba(255, 255, 255, .16); cursor: pointer; font: inherit; font-size: 1.05rem; line-height: 1; }
.selected-interest-chip button:hover, .selected-interest-chip button:focus-visible { background: var(--orange); outline: none; }
.selected-interest-empty { margin: 0; color: var(--navy-soft); font-size: .84rem; }
.popular-interest-chip { min-height: 38px; padding: 7px 13px; border: 1px solid #cbd6df; border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font: inherit; font-size: .82rem; font-weight: 780; transition: border-color .15s ease, background .15s ease, transform .15s ease; }
.popular-interest-chip:hover, .popular-interest-chip:focus-visible { border-color: var(--orange); background: #fff8f3; transform: translateY(-1px); outline: none; }
.interest-empty { margin: 0; color: var(--navy-soft); font-size: .88rem; }
.interest-chip, .extracted-chip { min-height: 42px; padding: 8px 15px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font-weight: 800; transition: transform .15s ease, background .15s ease, color .15s ease; }
.interest-chip:hover, .extracted-chip:hover { transform: translateY(-2px); }
.interest-chip[aria-pressed="true"] { border-color: var(--orange); color: var(--navy); background: var(--orange); }
.extraction-box { margin-top: 20px; padding: 20px; border-radius: 18px; background: var(--mint); }
.extraction-box > p { display: flex; justify-content: space-between; gap: 12px; margin: 0 0 14px; }
.local-label { color: #397665; font-size: .78rem; font-weight: 850; text-transform: uppercase; }
.extracted-chip { border-color: rgba(57, 118, 101, .22); background: white; }
.extracted-chip span { margin-left: 7px; color: var(--navy-soft); }
.no-extractions { margin: 0; color: var(--navy-soft); }
.primary-button, .view-button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 52px; border: 0; border-radius: 15px; color: var(--navy); background: var(--orange); cursor: pointer; font-weight: 900; box-shadow: 0 12px 28px rgba(255, 123, 66, .22); }
.primary-button { margin: 28px 0 0 66px; padding: 0 24px; }
.primary-button:disabled { cursor: wait; opacity: .65; }
.save-status { display: inline-block; margin: 0 0 0 14px; color: var(--navy-soft); font-weight: 700; }
.save-status.error { color: #a63f15; }
.results-section { padding: 88px 0 104px; background: var(--navy); color: white; scroll-margin-top: 86px; }
.results-heading { display: flex; justify-content: space-between; gap: 24px; align-items: end; margin-bottom: 36px; }
.results-heading .eyebrow { color: #ffae88; }
.results-summary { max-width: 350px; margin: 0; color: rgba(255,255,255,.7); text-align: right; }
.status { padding: 22px; border: 1px solid rgba(255,255,255,.2); border-radius: 18px; background: rgba(255,255,255,.08); }
.status.error { border-color: #ffae88; }
.recommendation-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; }
.recommendation-card { display: flex; flex-direction: column; overflow: hidden; border-radius: 25px; color: var(--navy); background: white; box-shadow: 0 20px 50px rgba(0,0,0,.16); }
.card-top { display: flex; justify-content: space-between; gap: 20px; padding: 24px 24px 18px; }
.demo-badge { display: inline-block; margin-bottom: 10px; padding: 5px 9px; border-radius: 999px; color: #a63f15; background: #fff0e8; font-size: .7rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.verified-badge { color: #23634f; background: var(--mint); }
.road-trip-badge { margin-left: 6px; color: #714d00; background: var(--yellow); }
.source-warning { padding: 12px 14px; border-radius: 12px; color: #795a13; background: #fff4cf; }
.recommendation-card h3 { margin: 0; font-size: 1.45rem; line-height: 1.15; letter-spacing: -.025em; }
.match-score { display: grid; flex: 0 0 72px; height: 72px; place-items: center; border-radius: 50%; color: var(--navy); background: var(--orange); font-size: 1.2rem; font-weight: 950; box-shadow: 0 8px 18px rgba(255,123,66,.25); }
.why-box { margin: 0 24px 18px; padding: 16px; border-radius: 16px; background: var(--cream); }
.why-box strong { display: block; margin-bottom: 5px; }
.why-box p { margin: 0; color: var(--navy-soft); }
.match-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 24px 18px; }
.match-chips span { padding: 5px 9px; border-radius: 999px; color: #397665; background: var(--mint); font-size: .76rem; font-weight: 850; }
.facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; margin: auto 24px 20px; overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: var(--line); }
.fact { padding: 10px 12px; background: white; }
.fact small { display: block; color: var(--navy-soft); font-size: .7rem; font-weight: 800; text-transform: uppercase; }
.fact strong { font-size: .9rem; }
.card-description { margin: 0 24px 20px; color: var(--navy-soft); }
.card-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 24px 24px; border-top: 1px solid var(--line); }
.view-button { min-height: 44px; padding: 0 18px; }
.score-note { color: var(--navy-soft); font-size: .74rem; font-weight: 750; }
.score-details { margin: -4px 24px 22px; padding: 15px; border-radius: 14px; background: #f3f6f8; color: var(--navy-soft); font-size: .86rem; }
footer { padding: 34px 0; border-top: 1px solid var(--line); color: var(--navy-soft); }
.results-hero { padding: 68px 0 48px; }
.results-hero h1 { margin: 0 0 16px; font-size: clamp(2.6rem, 5.4vw, 4.4rem); line-height: 1; letter-spacing: -.06em; text-wrap: balance; }
.results-hero > p:not(.eyebrow) { max-width: 760px; color: var(--navy-soft); font-size: 1.08rem; line-height: 1.58; }
.child-selector-fieldset { margin: 0 0 28px; padding: 0; border: 0; }
.child-selector-fieldset legend { margin-bottom: 12px; padding: 0; font-size: 1.05rem; font-weight: 850; }
.child-selector-list { display: flex; flex-wrap: wrap; gap: 10px; }
.child-option { display: inline-flex; width: auto; align-items: center; gap: 9px; padding: 10px 15px; border: 1px solid var(--line); border-radius: 999px; background: #fffefa; cursor: pointer; }
.child-option:has(input:checked) { border-color: var(--orange); background: #fff0e8; }
.child-option input { width: 18px; height: 18px; min-height: 18px; margin: 0; padding: 0; accent-color: var(--orange); }
.child-selector-action { margin-top: 13px; }
.summary-pills { display: flex; flex-wrap: wrap; gap: 9px; margin: 24px 0 18px; }
.active-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 18px; }
.active-filter-bar > strong { font-size: .82rem; }
.active-filter-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.active-filter-chip { display: inline-flex; min-height: 34px; align-items: center; gap: 7px; padding: 5px 10px; border: 1px solid rgba(57, 118, 101, .24); border-radius: 999px; color: #276958; background: var(--mint); cursor: pointer; font-size: .78rem; font-weight: 800; }
.active-filter-chip::after { content: "×"; font-size: 1rem; line-height: 1; }
.relaxation-notice { margin-top: 18px; padding: 14px 16px; border: 1px solid rgba(113, 77, 0, .18); border-radius: 14px; color: #61470c; background: #fff4cf; font-size: .9rem; }
.recommendation-filter { padding: 8px 13px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font-weight: 800; }
.recommendation-filter[aria-pressed="true"] { border-color: var(--navy); color: white; background: var(--navy); }
.itinerary-section { padding: 54px 0 80px; background: var(--navy); }
.demo-notice { margin: 0 0 26px; padding: 16px 18px; border-radius: 15px; color: var(--navy); background: var(--yellow); }
.itinerary-list { display: grid; gap: 18px; }
.itinerary-stop { display: grid; grid-template-columns: minmax(280px, 320px) minmax(0, 1fr); gap: 28px; padding: 26px; border-radius: 24px; background: white; color: var(--navy); }
.event-card { align-items: start; }
.visit-rail { display: grid; min-width: 0; gap: 12px; align-content: start; }
.event-media { position: relative; width: 100%; min-height: 118px; overflow: hidden; border-radius: 18px; background: #fbf7ee; }
.event-media[data-theme="stories"], .event-media[data-theme="food"] { background: #fff8e9; }
.event-media[data-theme="making"], .event-media[data-theme="community"] { background: #f5f8ea; }
.event-media[data-theme="science"], .event-media[data-theme="space"], .event-media[data-theme="games"] { background: #eef6f5; }
.event-media[data-theme="dinosaurs"], .event-media[data-theme="nature"], .event-media[data-theme="discovery"] { background: #f1f7e9; }
.event-media[data-theme="racing"], .event-media[data-theme="shows"] { background: #fff3ec; }
.event-media::after { position: absolute; right: -18px; bottom: -34px; width: 112px; height: 112px; border: 18px solid rgba(255,255,255,.32); border-radius: 50%; content: ""; pointer-events: none; }
.event-media.has-image-candidate { min-height: 0; aspect-ratio: 4 / 3; }
.event-media.has-scene { min-height: 0; aspect-ratio: 4 / 3; }
.event-media.has-image::after, .event-media.has-scene::after { display: none; }
.event-media-fallback { position: relative; z-index: 1; display: grid; min-height: 118px; place-content: center; gap: 5px; padding: 20px; text-align: center; }
.event-media-icon { font-size: 2.35rem; filter: drop-shadow(0 3px 0 rgba(255,255,255,.45)); }
.event-media-fallback strong { font-size: 1.1rem; }
.event-media-fallback small { color: var(--navy-soft); font-weight: 750; }
.event-media.has-scene .event-media-fallback { opacity: 0; }
.event-scene-image, .event-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0; transition: opacity .2s ease; }
.event-scene-image { z-index: 2; }
.event-image { z-index: 3; }
.event-media.has-scene .event-scene-image { opacity: 1; }
.event-media.has-image .event-image { opacity: 1; }
.where-panel { display: grid; min-width: 0; gap: 6px; padding: 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--cream); color: var(--navy-soft); }
.where-eyebrow { color: var(--navy-soft); font-size: .68rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.where-venue { color: var(--navy); font-size: .95rem; line-height: 1.3; overflow-wrap: anywhere; }
.where-address { font-size: .82rem; line-height: 1.45; overflow-wrap: anywhere; }
.where-drive { display: grid; grid-template-columns: auto 1fr; gap: 2px 7px; align-items: baseline; margin-top: 4px; color: var(--navy); font-size: .8rem; font-weight: 750; }
.where-drive small { grid-column: 2; color: var(--navy-soft); font-size: .68rem; font-weight: 650; }
.where-drive .drive-estimate-attribution { color: #5e5e5e; font-family: Arial, Helvetica, sans-serif; font-size: .75rem; font-style: normal; font-weight: 400; letter-spacing: normal; white-space: nowrap; }
.where-drive .GMP-attribution { color: #5e5e5e; font: inherit; letter-spacing: normal; white-space: nowrap; }
.where-icon { color: var(--coral); }
.where-map-link { justify-self: start; margin-top: 4px; color: var(--navy); font-size: .82rem; font-weight: 850; text-underline-offset: 3px; }
.event-card .stop-body { min-width: 0; }
.event-card .stop-heading { display: block; }
.event-card .stop-heading h2 { margin: 10px 0 0; overflow-wrap: anywhere; font-size: clamp(1.65rem, 3.4vw, 2.7rem); line-height: 1.02; }
.verified-badge { color: #276958; background: var(--mint); }
.event-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 20px 0; }
.event-fact { padding: 11px 12px; border-radius: 12px; background: #f2f5f7; }
.event-fact-label { display: block; margin-bottom: 3px; color: var(--navy-soft); font-size: .7rem; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; }
.event-fact strong { display: block; overflow-wrap: anywhere; font-size: .9rem; }
.event-interest-chips { margin-top: 0 !important; }
.event-warning { margin: 14px 0; padding: 12px 14px; border-radius: 12px; color: var(--navy); background: var(--cream); font-size: .88rem; }
.event-source-link { display: inline-flex; margin-top: 8px; }
.feedback-reason { position: relative; flex: 0 0 auto; align-self: flex-start; }
.feedback-summary { display: inline-flex; align-items: center; gap: 6px; list-style: none; white-space: nowrap; }
.feedback-summary::-webkit-details-marker { display: none; }
.feedback-summary::after { content: "+"; font-size: .9rem; line-height: 1; }
.feedback-reason[open] > .feedback-summary { border-color: var(--orange); background: #fff0e8; }
.feedback-reason[open] > .feedback-summary::after { content: "−"; }
.feedback-menu { position: absolute; z-index: 5; top: calc(100% + 7px); left: 0; display: grid; width: min(300px, calc(100vw - 48px)); gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: white; box-shadow: var(--shadow); }
.feedback-report .feedback-menu { right: 0; left: auto; }
.feedback-menu select { min-height: 42px; }
.feedback-submit { min-height: 40px; padding: 0 14px; border: 0; border-radius: 10px; color: white; background: var(--navy); cursor: pointer; font-weight: 850; }
.settings-form, .newsletter-consent { display: grid; gap: 20px; }
.settings-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.settings-preferred-days { grid-column: 1 / -1; min-width: 0; margin: 0; padding: 16px 18px 18px; border: 1px solid var(--line); border-radius: 14px; }
.settings-preferred-days > div { display: flex; flex-wrap: wrap; gap: 12px 22px; padding-top: 5px; }
.settings-preferred-days label, .newsletter-opt-in { display: inline-flex; width: auto; align-items: center; gap: 9px; }
.settings-form input[type="checkbox"] { width: 18px; height: 18px; min-height: 18px; margin: 0; padding: 0; accent-color: var(--orange); }
.newsletter-consent { margin: 12px 0; padding: 22px; border-radius: 18px; background: var(--cream); }
.newsletter-consent .helper { margin: 0; }
.newsletter-preview-card { margin-bottom: 16px; }
.recommendation-feedback { display: grid; gap: 10px; margin-top: 18px; padding-top: 17px; border-top: 1px solid var(--line); }
.recommendation-feedback-options { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 7px; }
.feedback-option { padding: 7px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font-size: .75rem; font-weight: 800; }
.feedback-option:hover, .feedback-option[aria-pressed="true"] { border-color: var(--orange); background: #fff0e8; }
.feedback-option:disabled { cursor: default; opacity: .65; }
.recommendation-feedback-status { min-height: 1.2em; margin: 0; color: var(--navy-soft); font-size: .78rem; }
.stop-time { padding-top: 5px; }
.stop-time strong, .stop-time span { display: block; }
.stop-time span { color: var(--navy-soft); font-size: .85rem; }
.stop-heading { display: grid; grid-template-columns: 1fr auto; gap: 8px 18px; align-items: center; }
.stop-heading .demo-badge { justify-self: start; }
.stop-heading h2 { grid-column: 1; }
.stop-heading .match-score { grid-column: 2; grid-row: 1 / span 2; }
.match-score.small { width: 62px; height: 62px; font-size: 1rem; }
.stop-description { color: var(--navy-soft); }
.close-match-note { margin: 14px 0 0; padding: 10px 12px; border-radius: 11px; color: #61470c; background: #fff4cf; font-size: .82rem; font-weight: 700; }
.stop-body .match-chips { margin: 0 0 15px; }
.stop-facts { display: flex; flex-wrap: wrap; gap: 8px; }
.stop-facts span { padding: 6px 9px; border-radius: 9px; background: #f2f5f7; font-size: .82rem; font-weight: 750; }
.why-line { margin: 16px 0 0; font-weight: 750; }
.alternatives-section { padding: 78px 0; }
.results-heading.light { color: var(--navy); }
.alternative-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.alternative-card { padding: 22px; border: 1px solid var(--line); border-radius: 20px; background: white; box-shadow: var(--shadow); }
.alternative-card h3 { margin: 4px 0 12px; }
.alternative-card p { color: var(--navy-soft); }
[hidden] { display: none !important; }
@media (max-width: 850px) {
  .hero { grid-template-columns: minmax(0, 1fr); gap: 30px; }
  .hero-note { max-width: 560px; }
  .constraints-grid { grid-template-columns: repeat(2, 1fr); }
  .recommendation-grid { grid-template-columns: 1fr; }
  .alternative-grid { grid-template-columns: 1fr; }
  .itinerary-stop { grid-template-columns: minmax(240px, 280px) minmax(0, 1fr); }
  .coverage-metric-grid, .coverage-target-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .dashboard-periods { grid-template-columns: 1fr; }
  .itinerary-stop { grid-template-columns: minmax(0, 1fr); }
  .event-media.has-image-candidate, .event-media.has-scene { min-height: 0; aspect-ratio: 16 / 9; }
  .event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 580px) {
  .metric-grid { grid-template-columns: 1fr; }
  .coverage-metric-grid, .coverage-target-grid { grid-template-columns: 1fr; }
  .section-heading { align-items: flex-start; flex-direction: column; }
  .hero { padding-top: 46px; }
  .hero h1 { font-size: clamp(2.35rem, 11vw, 2.95rem); overflow-wrap: break-word; }
  .hero-note { transform: none; }
  .nav { gap: 12px; }
  .authenticated-nav .brand-wordmark { display: none; }
  .back-link { font-size: .82rem; white-space: nowrap; }
  .form-card { border-radius: 22px; }
  .step-heading { gap: 12px; }
  .step-number { flex-basis: 42px; height: 42px; }
  .helper, .primary-button { margin-left: 0; }
  .save-status { display: block; margin: 12px 0 0; }
  .child-fields, .constraints-grid { grid-template-columns: 1fr; }
  .settings-grid { grid-template-columns: 1fr; }
  .interest-search { display: grid; width: 100%; gap: 6px; }
  .results-heading { align-items: flex-start; flex-direction: column; }
  .results-summary { text-align: left; }
  .card-top, .card-actions { padding-inline: 19px; }
  .why-box, .match-chips, .facts, .card-description, .score-details { margin-inline: 19px; }
  .footer-row { align-items: flex-start; flex-direction: column; }
  .event-facts { grid-template-columns: 1fr; }
  .feedback-reason[open] { flex-basis: 100%; }
  .feedback-menu, .feedback-report .feedback-menu { position: static; width: 100%; margin-top: 7px; }
  .stop-time { display: flex; gap: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .interest-chip, .extracted-chip { transition: none; }
  .interest-chip:hover, .extracted-chip:hover { transform: none; }
}

/* Premium Results controls */
.outing-planner#planning-form {
  display: grid;
  width: min(100%, 1000px);
  gap: 26px;
  margin: 0 auto 34px;
  padding: clamp(22px, 3.5vw, 34px);
  border: 1px solid rgba(18, 53, 84, .11);
  border-radius: 26px;
  background: rgba(255, 255, 255, .82);
  box-shadow: 0 14px 40px rgba(18, 53, 84, .065);
}
.outing-primary-section { display: grid; gap: 14px; margin: 0; padding: 0; border: 0; }
.outing-primary-section + .outing-primary-section { padding-top: 24px; border-top: 1px solid var(--line); }
.outing-primary-section > legend, .outing-primary-section > h2 { margin: 0; padding: 0; color: var(--navy); font-size: 1.2rem; font-weight: 900; letter-spacing: -.025em; }
.outing-planner .child-selector-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.outing-planner .planning-child-card { display: grid; min-width: 0; min-height: 72px; align-items: center; padding: 13px 15px; overflow: hidden; appearance: none; border: 1px solid rgba(18, 53, 84, .16); border-radius: 16px; color: var(--navy); background: #fff; box-shadow: 0 1px 3px rgba(18, 53, 84, .025); font: inherit; text-align: left; cursor: pointer; transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease; }
.outing-planner .planning-child-card:hover { border-color: rgba(18, 53, 84, .38); box-shadow: 0 7px 18px rgba(18, 53, 84, .07); transform: translateY(-1px); }
.outing-planner .planning-child-card:active { transform: scale(.99); }
.outing-planner .planning-child-card[aria-pressed="true"] { border: 2px solid var(--navy); background: #fff; box-shadow: 0 8px 20px rgba(18, 53, 84, .09); }
.outing-planner .planning-child-card[aria-pressed="true"] .planning-child-heading { font-weight: 850; }
.outing-planner .planning-child-card:focus-visible { outline: 3px solid rgba(18, 53, 84, .22); outline-offset: 3px; }
.outing-planner .planning-child-heading { display: inline-flex; align-items: baseline; color: var(--navy); font-size: .91rem; font-weight: 750; white-space: nowrap; }
.outing-planner .planning-child-interests { display: flex; min-width: 0; align-items: baseline; gap: .3em; overflow: hidden; overflow-wrap: normal; line-height: 1.35; white-space: nowrap; }
.outing-planner .date-quick-options { display: flex; min-width: 0; flex-wrap: wrap; gap: 10px; }
.outing-planner .date-option {
  display: inline-flex;
  width: auto;
  min-width: 0;
  min-height: 52px;
  align-items: center;
  justify-content: center;
  padding: 0 20px;
  appearance: none;
  border: 1px solid rgba(18, 53, 84, .16);
  border-radius: 14px;
  color: var(--navy);
  background: #fff;
  box-shadow: none;
  font: inherit;
  font-size: .88rem;
  font-weight: 780;
  line-height: 1.2;
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}
.outing-planner .date-option:hover {
  border-color: rgba(18, 53, 84, .4);
  color: var(--navy);
  background: #fff;
  box-shadow: 0 7px 18px rgba(18, 53, 84, .07);
  transform: translateY(-1px);
}
.outing-planner .date-option:active { color: var(--navy); background: #fff; transform: scale(.99); }
.outing-planner .date-option[aria-pressed="true"] {
  border: 2px solid var(--navy);
  color: var(--navy);
  background: #fff;
  box-shadow: 0 8px 20px rgba(18, 53, 84, .09);
  font-weight: 850;
}
.outing-planner .date-option:focus-visible { outline: 3px solid rgba(18, 53, 84, .22); outline-offset: 3px; }
.planning-child-interest-list { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planning-child-third-interest { flex: none; white-space: nowrap; }
.planning-child-more { flex: none; margin: 0; white-space: nowrap; }
.planning-child-more-narrow { display: none; }

@media (max-width: 900px) {
  .outing-planner .child-selector-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .outing-planner .planning-child-third-interest, .outing-planner .planning-child-more-wide { display: none; }
  .outing-planner .planning-child-more-narrow { display: inline; }
}
@media (max-width: 580px) {
  .outing-planner .date-quick-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .outing-planner .date-option { width: 100%; padding-inline: 12px; }
  .outing-planner .date-option:last-child { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
  .outing-planner .date-option { transition: none; }
  .outing-planner .date-option:hover { transform: none; }
}
.outing-actions { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding-top: 22px; border-top: 1px solid var(--line); }
.outing-preference-summary { display: grid; min-width: 0; gap: 2px; }
.outing-preference-summary span { color: #2b6c58; font-size: .78rem; font-weight: 850; }
.outing-preference-summary strong { color: var(--navy-soft); font-size: .86rem; }
.outing-buttons { display: flex; align-items: center; gap: 10px; }
.outing-buttons .primary-button, .outing-buttons .secondary-button { min-height: 48px; margin: 0; }
.more-options-button { padding-inline: 18px; }
.results-filter-bar {
  display: flex;
  width: min(100%, 900px);
  align-items: stretch;
  justify-content: space-between;
  gap: 12px;
  margin: 0 auto 34px;
}
.results-filter-summary {
  display: grid;
  min-width: 0;
  flex: 1 1 auto;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  min-height: 66px;
  padding: 10px 17px;
  border: 1px solid rgba(18, 53, 84, .16);
  border-radius: 18px;
  color: var(--navy);
  background: #fff;
  box-shadow: 0 4px 14px rgba(18, 53, 84, .05);
  cursor: pointer;
  text-align: left;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}
.results-filter-summary:hover { border-color: rgba(18, 53, 84, .32); box-shadow: 0 9px 24px rgba(18, 53, 84, .1); transform: translateY(-2px); }
.results-filter-summary:active { background: #f8faf9; box-shadow: 0 3px 10px rgba(18, 53, 84, .08); transform: scale(.99); }
.filter-summary-icon { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 11px; background: var(--mint); font-size: 1.15rem; }
.filter-summary-copy { display: grid; min-width: 0; gap: 1px; }
.filter-summary-copy strong { font-size: .9rem; }
.filter-summary-copy > span { overflow: hidden; color: var(--navy-soft); font-size: .78rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.filter-summary-chevron { color: var(--navy-soft); font-size: 1.15rem; }
.results-filter-bar > .results-submit { flex: 0 0 auto; min-width: 170px; margin: 0; }

.results-filter-dialog {
  width: min(calc(100% - 32px), 720px);
  height: fit-content;
  max-height: min(88vh, 620px);
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 26px;
  color: var(--navy);
  background: #fff;
  box-shadow: 0 30px 90px rgba(11, 41, 66, .3);
}
.results-filter-dialog::backdrop { background: rgba(11, 29, 43, .54); backdrop-filter: blur(3px); }
.results-filter-dialog .override-dialog-form { display: grid; width: 100%; max-height: min(88vh, 620px); grid-template-rows: auto minmax(0, 1fr) auto; margin: 0; padding: 0; }
.filter-dialog-header { position: relative; display: grid; min-height: 76px; place-items: center; padding: 20px 64px; border-bottom: 1px solid var(--line); }
.filter-dialog-header h2 { margin: 0; font-size: 1.2rem; letter-spacing: -.02em; }
.filter-dialog-header .dialog-close { top: 18px; right: 20px; transition: transform 160ms ease, background-color 160ms ease; }
.filter-dialog-header .dialog-close:hover { background: #edf3f1; transform: scale(1.06); }
.filter-dialog-body { overflow-y: auto; overscroll-behavior: contain; padding: 0 32px; }
.filter-dialog-section { display: grid; gap: 16px; margin: 0; padding: 28px 0; border: 0; border-bottom: 1px solid var(--line); }
.filter-dialog-section:last-child { border-bottom: 0; }
.filter-dialog-section > legend, .filter-dialog-section > h3, .filter-accessibility h3 { margin: 0; padding: 0; font-size: 1.22rem; font-weight: 900; letter-spacing: -.025em; }
.filter-dialog-section > p, .filter-accessibility p { margin: -10px 0 0; color: var(--navy-soft); font-size: .85rem; }
.filter-dialog-footer { display: flex; min-height: 78px; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 26px; border-top: 1px solid var(--line); background: rgba(255, 255, 255, .97); box-shadow: 0 -8px 25px rgba(18, 53, 84, .05); }
.filter-dialog-footer .link-button { min-height: 40px; padding: 0 6px; }
.filter-dialog-footer .primary-button { min-width: 210px; margin: 0; }

.filter-control-grid { display: grid; gap: 24px; }
.filter-choice-group { display: grid; gap: 10px; margin: 0; padding: 0; border: 0; }
.filter-choice-group > legend { margin-bottom: 8px; font-size: .88rem; font-weight: 900; }
.filter-choice-group > legend small { margin-left: 7px; color: var(--navy-soft); font-size: .72rem; font-weight: 700; }
.reset-overrides { width: fit-content; min-height: 38px; padding: 0; }
.filter-chip-list, .date-quick-options { display: flex; flex-wrap: wrap; gap: 8px; }
.filter-chip-list label { position: relative; display: inline-flex; width: auto; cursor: pointer; }
.filter-chip-list input { position: absolute; width: 1px; height: 1px; min-height: 1px; opacity: 0; pointer-events: none; }
.filter-chip-list span, .date-option, .recommendation-filter {
  display: inline-flex;
  min-height: 40px;
  align-items: center;
  justify-content: center;
  padding: 7px 13px;
  border: 1px solid rgba(18, 53, 84, .13);
  border-radius: 999px;
  color: #34536a;
  background: #fff;
  box-shadow: 0 1px 2px rgba(18, 53, 84, .03);
  font-size: .82rem;
  font-weight: 800;
  transition: transform 170ms ease, border-color 170ms ease, background-color 170ms ease, box-shadow 170ms ease;
}
.filter-chip-list label:hover span, .date-option:hover, .recommendation-filter:hover { border-color: rgba(18, 53, 84, .3); box-shadow: 0 5px 13px rgba(18, 53, 84, .09); transform: translateY(-1px); }
.filter-chip-list label:active span, .date-option:active, .recommendation-filter:active { background: #edf4f1; transform: scale(.97); }
.filter-chip-list input:checked + span, .date-option[aria-pressed="true"], .recommendation-filter[aria-pressed="true"] { border-color: rgba(39, 105, 88, .22); color: #174b3c; background: #e8f5ef; box-shadow: inset 0 0 0 1px rgba(39, 105, 88, .05); }
.filter-chip-list input:focus-visible + span { outline: 3px solid var(--orange); outline-offset: 3px; }

.compact-save-action.icon-only-action { display: grid; width: 42px; min-width: 42px; height: 42px; padding: 0; place-items: center; border: 0; border-radius: 50%; color: #a52f49; background: transparent; box-shadow: none; }
.compact-save-action.icon-only-action .action-icon { font-family: Arial, sans-serif; font-size: 1.9rem; line-height: 1; transition: transform 170ms ease, color 170ms ease; }
.compact-save-action.icon-only-action:hover { background: #fff3f6; transform: none; }
.compact-save-action.icon-only-action:hover .action-icon { transform: scale(1.12); }
.compact-save-action.icon-only-action:active .action-icon { transform: scale(.94); }
.compact-save-action.icon-only-action.is-active { border: 0; color: #b72848; background: transparent; }
.top-recommendation-card { box-shadow: inset 4px 0 0 #4d927e, 0 18px 42px rgba(18, 53, 84, .11); }
.compact-recommendation-card .recommendation-why { padding-top: 2px; }
.compact-recommendation-card .recommendation-why h3 { font-size: .82rem; }
.recommendation-primary-reason { font-size: .92rem; line-height: 1.46; }

@media (max-width: 720px) {
  .outing-planner#planning-form { width: 100%; gap: 22px; padding: 20px 16px; border-radius: 22px; }
  .outing-planner .child-selector-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .outing-actions { align-items: stretch; flex-direction: column; }
  .outing-buttons { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
  .outing-buttons > * { width: 100%; }
  .results-filter-bar { align-items: stretch; flex-direction: column; margin-bottom: 26px; }
  .results-filter-bar > .results-submit { width: 100%; min-height: 48px; }
  .results-filter-dialog { width: 100%; max-width: none; max-height: 100dvh; margin: auto 0 0; border-radius: 24px 24px 0 0; }
  .results-filter-dialog .override-dialog-form { max-height: 100dvh; }
  .filter-dialog-body { padding: 0 20px; }
  .filter-dialog-footer { padding-inline: 20px; }
  .filter-dialog-footer .primary-button { min-width: 0; }
}

@media (max-width: 520px) {
  .outing-planner .child-selector-list { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .results-filter-summary, .outing-planner .planning-child-card, .filter-chip-list span, .date-option,
  .recommendation-filter, .compact-save-action.icon-only-action .action-icon { transition: none; }
  .results-filter-summary:hover, .outing-planner .planning-child-card:hover, .filter-chip-list label:hover span,
  .date-option:hover, .recommendation-filter:hover { transform: none; }
}

/* Family settings refinement */
.settings-page {
  width: min(calc(100% - 36px), 900px);
  padding-bottom: 88px;
}
.settings-hero {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  padding: 58px 0 34px;
}
.settings-hero .hero-copy > p:last-child { max-width: 820px; }
.settings-form {
  display: block;
  padding: clamp(28px, 4.5vw, 48px);
}
.settings-section {
  display: grid;
  gap: 24px;
}
.settings-section + .settings-section {
  margin-top: 40px;
  padding-top: 38px;
  border-top: 1px solid var(--line);
}
.settings-section-heading {
  display: grid;
  gap: 7px;
}
.settings-section-heading h2 {
  font-size: clamp(1.55rem, 2.8vw, 2rem);
  letter-spacing: -.035em;
}
.settings-section-heading > p:last-child {
  max-width: 640px;
  margin: 0;
  color: var(--navy-soft);
}
.section-kicker {
  margin: 0;
  color: var(--orange-dark);
  font-size: .74rem;
  font-weight: 900;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.settings-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.settings-form label { gap: 8px; }
.field-label { font-size: .95rem; }
.field-note {
  display: block;
  margin-top: -2px;
  color: var(--navy-soft);
  font-size: .82rem;
  font-weight: 550;
  line-height: 1.4;
}
.settings-form input,
.settings-form select {
  min-height: 54px;
  background: #fffefa;
  transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.settings-form input:hover,
.settings-form select:hover { border-color: rgba(18, 53, 84, .34); }
.settings-form input:focus,
.settings-form select:focus { border-color: var(--orange); box-shadow: 0 0 0 4px rgba(255, 123, 66, .13); outline: none; }
.settings-fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.settings-fieldset legend {
  margin: 0 0 8px;
  padding: 0;
  color: var(--navy);
  font-size: .95rem;
  font-weight: 850;
}
.settings-fieldset > .field-note { margin: 0 0 12px; }
.settings-preferred-days { grid-column: 1 / -1; }
.choice-list { display: flex; flex-wrap: wrap; gap: 10px; }
.settings-choice {
  position: relative;
  display: inline-flex !important;
  width: auto !important;
  min-height: 46px;
  align-items: center;
  cursor: pointer;
  font-weight: 800;
}
.settings-choice input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.settings-choice > span {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  padding: 0 17px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--navy);
  background: white;
  transition: border-color .18s ease, background-color .18s ease, color .18s ease, transform .18s ease;
}
.settings-choice:hover > span { transform: translateY(-1px); border-color: rgba(18, 53, 84, .35); }
.settings-choice:has(input:checked) > span { border-color: var(--orange); color: #8e3d1d; background: #fff0e8; }
.settings-choice:has(input:focus-visible) > span { outline: 3px solid var(--navy); outline-offset: 3px; }
.settings-form .newsletter-consent {
  margin: 40px 0 0;
  padding: 32px;
  border: 1px solid rgba(18, 53, 84, .1);
  border-radius: 22px;
  background: var(--cream);
}
.newsletter-toggle {
  position: relative;
  display: flex !important;
  min-height: 56px;
  align-items: center;
  gap: 14px;
  width: 100% !important;
  padding: 4px 0;
  cursor: pointer;
}
.newsletter-toggle > span:last-child { display: grid; gap: 2px; }
.newsletter-toggle strong { font-size: 1rem; }
.newsletter-toggle small { color: var(--navy-soft); font-size: .82rem; font-weight: 550; }
.newsletter-toggle input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}
.toggle-switch {
  position: relative;
  display: inline-flex;
  flex: 0 0 52px;
  width: 52px;
  height: 30px;
  align-items: center;
  padding: 3px;
  border-radius: 999px;
  background: rgba(18, 53, 84, .2);
  transition: background-color .18s ease, box-shadow .18s ease;
}
.toggle-switch > span {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: white;
  box-shadow: 0 2px 6px rgba(18, 53, 84, .16);
  transition: transform .18s ease;
}
.newsletter-toggle input:checked + .toggle-switch { background: var(--orange); }
.newsletter-toggle input:checked + .toggle-switch > span { transform: translateX(22px); }
.newsletter-toggle:has(input:focus-visible) .toggle-switch { outline: 3px solid var(--navy); outline-offset: 3px; }
.newsletter-fields { display: grid; max-width: 320px; gap: 8px; }
.newsletter-fields[hidden] { display: none; }
.settings-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 36px;
  padding-top: 28px;
  border-top: 1px solid var(--line);
}
.settings-form .primary-button {
  min-width: 190px;
  margin: 0;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.settings-form .primary-button:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 16px 30px rgba(255, 123, 66, .26); }
.settings-form .primary-button:active:not(:disabled) { transform: translateY(0); }
.settings-form .primary-button.is-loading::before {
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, .45);
  border-top-color: white;
  border-radius: 50%;
  animation: settings-spin .7s linear infinite;
  content: "";
}
.settings-form .save-status { min-height: 1.5em; margin: 0; }
.settings-form .save-status.error { color: #a63f15; }
@keyframes settings-spin { to { transform: rotate(360deg); } }
.settings-toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 30;
  max-width: min(360px, calc(100vw - 48px));
  gap: 3px;
  padding: 15px 18px;
  border: 1px solid rgba(57, 118, 101, .2);
  border-radius: 16px;
  color: #205d4b;
  background: var(--mint);
  box-shadow: 0 14px 32px rgba(18, 53, 84, .14);
}
.settings-toast:not([hidden]) { display: grid; animation: settings-toast-in .2s ease both; }
.settings-toast span { font-size: .85rem; }
@keyframes settings-toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.settings-nav-active { color: var(--orange-dark); text-decoration-thickness: 2px; }
@media (max-width: 680px) {
  .settings-page { width: min(calc(100% - 28px), 900px); }
  .settings-hero { padding-top: 44px; }
  .settings-grid { grid-template-columns: 1fr; }
  .settings-form .newsletter-consent { padding: 24px 20px; }
  .settings-actions { align-items: stretch; flex-direction: column; }
  .settings-form .primary-button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .settings-form input, .settings-form select, .settings-choice > span, .toggle-switch, .toggle-switch > span, .settings-form .primary-button { transition: none; }
  .settings-form .primary-button.is-loading::before, .settings-toast:not([hidden]) { animation: none; }
  .settings-choice:hover > span, .settings-form .primary-button:hover:not(:disabled) { transform: none; }
}

/* Family settings final polish */
.settings-page { padding-bottom: 64px; }
.family-settings-page { width: min(calc(100% - 36px), 1000px); }
.family-settings-page .settings-section { scroll-margin-top: 100px; }
.family-settings-page .child-profile-actions { padding-inline: 0; border-radius: 0; background: transparent; }
.settings-hero { padding: 44px 0 28px; }
.settings-form {
  padding: clamp(24px, 3.5vw, 38px);
  border-color: rgba(18, 53, 84, .12);
  box-shadow: 0 10px 32px rgba(18, 53, 84, .07);
}
.settings-section { gap: 18px; }
.settings-section + .settings-section { margin-top: 28px; padding-top: 28px; }
.settings-section-heading { gap: 4px; }
.settings-grid { gap: 18px; }
.settings-form input, .settings-form select { min-height: 52px; }
.settings-choice, .settings-choice > span { min-height: 44px; }
.settings-choice > span { padding-inline: 16px; }
.settings-form .newsletter-consent {
  margin-top: 28px;
  padding: 24px;
  box-shadow: 0 8px 24px rgba(18, 53, 84, .05);
}
.newsletter-toggle {
  justify-content: space-between;
  width: auto !important;
  min-width: min(100%, 270px);
  min-height: 46px;
  gap: 18px;
  padding: 0;
}
.newsletter-toggle .newsletter-toggle-copy { display: grid; gap: 2px; }
.newsletter-toggle .newsletter-toggle-copy small { color: var(--navy-soft); }
.newsletter-toggle .toggle-switch { display: inline-flex; }
.newsletter-toggle > span:last-child { display: inline-flex; gap: 0; }
.newsletter-toggle input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.newsletter-toggle:has(input:focus-visible) .toggle-switch { outline: 3px solid var(--navy); outline-offset: 3px; }
.newsletter-fields { gap: 16px; }
.settings-actions { margin-top: 28px; padding-top: 24px; }
.settings-action-note { margin: 5px 0 0; color: var(--navy-soft); font-size: .82rem; }
.settings-error-card {
  display: flex;
  gap: 18px;
  align-items: flex-start;
  margin: 0 0 44px;
  padding: 28px;
  border: 1px solid rgba(217, 87, 32, .2);
  border-radius: 22px;
  background: #fff4ed;
  box-shadow: 0 8px 24px rgba(18, 53, 84, .05);
}
.settings-error-icon {
  display: grid;
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 50%;
  color: white;
  background: var(--orange-dark);
  font-weight: 900;
}
.settings-error-card h2 { margin: 0 0 6px; font-size: 1.35rem; }
.settings-error-card p { margin: 0 0 18px; color: var(--navy-soft); }
.settings-error-card .primary-button { min-height: 46px; margin: 0; }
@media (max-width: 680px) {
  .family-settings-page { width: min(calc(100% - 28px), 1000px); }
  .newsletter-toggle { width: 100% !important; min-width: 0; }
  .settings-form .newsletter-consent { padding: 20px; }
  .settings-action-note { text-align: center; }
  .settings-error-card { margin-bottom: 32px; padding: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .settings-form .primary-button, .settings-choice > span { transition: none; }
}

/* Focused activity planning */
.planning-hero { grid-template-columns: minmax(0, 1fr); padding: 46px 0 28px; }
.planning-hero .hero-copy > p:last-child { max-width: 700px; }
#planning-form { width: min(100%, 900px); margin-inline: auto; padding: clamp(24px, 4vw, 38px); }
.planning-step { margin: 27px 0 0; padding: 26px 0 0; border: 0; border-top: 1px solid var(--line); }
.child-selector-fieldset.planning-step { margin-top: 27px; padding-top: 26px; border-top: 1px solid var(--line); }
.planning-step-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.planning-step-heading > div { display: block; min-width: 0; }
.planning-step-heading h3 { margin: 1px 0 3px; font-size: 1.2rem; line-height: 1.2; }
.planning-step-heading p { margin: 0; color: var(--navy-soft); font-size: .9rem; }
.planning-step-heading > a { flex: 0 0 auto; padding-top: 5px; color: var(--navy); font-size: .86rem; font-weight: 850; text-underline-offset: 3px; }
.child-selector-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.planning-child-card { position: relative; display: grid; min-width: 0; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: #fffefa; transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease; }
.planning-child-copy { display: grid; min-width: 0; gap: 4px; }
.planning-child-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 5px 12px; }
.planning-child-heading strong { font-size: 1rem; }
.planning-child-interests { overflow-wrap: anywhere; color: var(--navy-soft); font-size: .82rem; font-weight: 650; line-height: 1.45; }
.planning-child-interest-icon { margin-right: 5px; font-size: .76rem; }
.planning-child-interests small { color: var(--orange-dark); font-size: inherit; font-weight: 850; }
.child-selector-action { margin: 12px 0 0; }
.date-quick-options { display: flex; flex-wrap: wrap; gap: 9px; }
.date-option { min-height: 44px; padding: 0 15px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: #fffefa; cursor: pointer; font-weight: 820; }
.date-option:hover { border-color: rgba(255, 123, 66, .6); background: #fff8f3; }
.date-option[aria-pressed="true"] { border-color: var(--orange); color: #8d3817; background: #fff0e8; box-shadow: inset 0 0 0 1px rgba(255, 123, 66, .2); }
.custom-date-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 16px; padding: 17px; border-radius: 16px; background: var(--cream); }
.custom-date-panel:not([hidden]) { display: grid; }
.custom-date-panel label { font-size: .86rem; }
.custom-date-panel label small { color: var(--navy-soft); font-weight: 600; }
.date-selection-status { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 20px; margin-top: 11px; }
.date-selection-status p { margin: 0; color: var(--navy-soft); font-size: .8rem; }
.date-selection-status .link-button { color: var(--navy-soft); font-size: .78rem; }
.planning-preferences { margin-top: 27px; padding: 20px; border: 1px solid rgba(57, 118, 101, .18); border-radius: 18px; background: var(--mint); }
.planning-preferences-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; }
.planning-preferences-heading h3 { margin: 0; font-size: 1rem; }
.planning-preferences-heading a { flex: 0 0 auto; font-size: .82rem; font-weight: 850; text-underline-offset: 3px; }
.preference-summary-list { display: flex; flex-wrap: wrap; gap: 9px 18px; margin-top: 12px; }
.preference-summary-item { display: inline-flex; align-items: center; gap: 5px; color: var(--navy-soft); font-size: .84rem; }
.preference-summary-item strong { color: var(--navy); }
.planning-submit { display: flex; justify-content: flex-end; margin-top: 24px; }
.planning-submit .primary-button { min-width: 220px; margin: 0; }
.activity-query-step { display: grid; gap: 12px; margin-top: 0; padding-top: 0; border-top: 0; }
.activity-query-label { display: block; }
.activity-query-label input {
  width: 100%; min-height: 52px; border: 1px solid var(--line); border-radius: 14px;
  padding: 0 16px; font: inherit; color: var(--navy); background: #fff;
}
.activity-query-label input:focus { outline: 3px solid rgba(246, 123, 72, .2); border-color: var(--orange); }
.query-examples { display: flex; flex-wrap: wrap; gap: 8px; }
.query-examples button {
  border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--navy-soft);
  padding: 7px 11px; font: inherit; font-size: .86rem; cursor: pointer;
}
.query-examples button:hover, .query-examples button:focus-visible { border-color: var(--orange); color: var(--navy); }
.companion-reason { margin: 14px 0; padding: 12px 14px; border-radius: 13px; color: #276958; background: var(--mint); font-size: .86rem; font-weight: 750; }
.accessibility-uncertainty { margin: 0 0 14px; padding: 11px 13px; border: 1px solid rgba(18, 53, 84, .12); border-radius: 12px; color: var(--navy-soft); background: var(--cream); font-size: .82rem; font-weight: 750; }
.adventure-action[aria-pressed="true"] { border-color: #77b8a5; color: #276958; background: var(--mint); }

/* Persistent child profiles */
.children-page { width: min(calc(100% - 36px), 1000px); }
.children-hero { grid-template-columns: minmax(0, 1fr); padding-bottom: 32px; }
.children-hero .hero-copy > p:last-child { max-width: 760px; }
.profile-list-heading { display: grid; gap: 7px; }
.profile-list-title-row { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.profile-list-title-row h2 { margin: 0; }
.profile-list-title-row .secondary-button { flex: 0 0 auto; }
.profile-list-title-row .secondary-button span { margin-right: 3px; font-size: 1.05rem; }
.profile-list-heading p { margin: 0; color: var(--navy-soft); }
.child-profile-list { display: grid; gap: 13px; }
.child-profile-editor { scroll-margin-top: 100px; overflow: hidden; border: 1px solid var(--line); border-radius: 20px; background: white; box-shadow: 0 8px 24px rgba(18, 53, 84, .05); }
.child-profile-summary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; min-height: 74px; padding: 12px 20px; cursor: pointer; list-style: none; }
.child-profile-summary::-webkit-details-marker { display: none; }
.child-profile-summary:hover { background: #fffdfa; }
.child-profile-avatar { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 15px; font-size: 1.05rem; font-weight: 900; }
.child-profile-avatar.avatar-green { color: #276958; background: #e1f4ec; }
.child-profile-avatar.avatar-blue { color: #245f83; background: #e3f1fb; }
.child-profile-avatar.avatar-orange { color: #9d421c; background: #fff0e8; }
.child-profile-avatar.avatar-purple { color: #68518a; background: #eee8f8; }
.child-profile-summary-copy { display: grid; min-width: 0; gap: 2px; }
.child-profile-summary-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 1.05rem; }
.child-profile-summary-copy small { color: var(--navy-soft); font-size: .8rem; font-weight: 700; }
.child-profile-chevron { display: grid; width: 18px; height: 18px; place-items: center; color: #52708a; }
.child-profile-chevron-icon { display: block; width: 18px; height: 18px; transform-origin: center; transition: transform .18s ease-out; }
.child-profile-editor[open] .child-profile-chevron-icon { transform: rotate(180deg); }
.child-profile-fields { display: grid; gap: 24px; padding: 24px 24px 28px 80px; border-top: 1px solid var(--line); }
.child-profile-form-actions { display: grid; justify-items: start; gap: 20px; }
.child-profile-save { min-width: 150px; margin: 0; }
.child-profile-danger { width: 100%; padding-top: 18px; border-top: 1px solid var(--line); }
.remove-child-button { color: #9d421c; }
.child-profile-actions { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 24px; border-radius: 20px; }
.child-profile-actions p { margin: 0; }
.child-profile-actions #save-status { color: var(--navy-soft); font-size: .82rem; font-weight: 700; }
.child-profile-actions > div:last-child { display: flex; align-items: center; gap: 20px; }
.child-profile-actions .primary-button { margin: 0; }

/* Family adventure companion */
.adventure-page { width: min(calc(100% - 36px), 1040px); padding-bottom: 90px; }
.adventure-hero { grid-template-columns: minmax(0, 1fr); padding-bottom: 34px; }
.adventure-hero .hero-copy > p:last-child { max-width: 720px; }
.adventure-loading { padding: 30px; text-align: center; color: var(--navy-soft); }
.adventure-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.adventure-summary article { display: grid; gap: 3px; padding: 22px; border: 1px solid var(--line); border-radius: 18px; background: white; box-shadow: 0 8px 24px rgba(18, 53, 84, .05); }
.adventure-summary strong { color: var(--navy); font-size: 2rem; line-height: 1; }
.adventure-summary span { color: var(--navy-soft); font-size: .82rem; font-weight: 750; }
.adventure-empty { display: flex; align-items: center; gap: 24px; margin-top: 18px; padding: 30px; }
.adventure-empty-icon { display: grid; flex: 0 0 74px; height: 74px; place-items: center; border-radius: 22px; color: #8a5a00; background: var(--yellow); font-size: 2rem; }
.adventure-empty h2 { margin: 0 0 8px; }
.adventure-empty p:not(.eyebrow) { max-width: 660px; margin: 0; color: var(--navy-soft); }
.adventure-empty .primary-button { margin: 20px 0 0; }
.adventure-section { margin-top: 58px; }
.adventure-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.adventure-section-heading h2 { margin: 0 0 6px; }
.adventure-section-heading p:not(.eyebrow) { max-width: 650px; margin: 0; color: var(--navy-soft); }
.adventure-section-heading > a { flex: 0 0 auto; font-weight: 850; text-underline-offset: 3px; }
.upcoming-adventure-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.upcoming-adventure-card { display: grid; gap: 9px; padding: 22px; border: 1px solid var(--line); border-radius: 20px; background: white; box-shadow: 0 8px 24px rgba(18, 53, 84, .05); }
.upcoming-adventure-card h3, .upcoming-adventure-card p { margin: 0; }
.upcoming-adventure-card p { color: var(--navy-soft); font-size: .86rem; }
.adventure-status-pill { justify-self: start; padding: 5px 9px; border-radius: 999px; color: #276958; background: var(--mint); font-size: .7rem; font-weight: 900; text-transform: uppercase; }
.text-link { justify-self: start; margin-top: 3px; font-size: .82rem; font-weight: 850; text-underline-offset: 3px; }
.earned-badge-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.earned-badge-card { display: grid; min-width: 0; gap: 5px; padding: 18px; border: 1px solid rgba(113, 77, 0, .16); border-radius: 18px; background: #fff8e5; }
.earned-badge-icon { display: grid; width: 38px; height: 38px; place-items: center; margin-bottom: 5px; border-radius: 12px; color: #714d00; background: var(--yellow); font-weight: 900; }
.earned-badge-card strong { overflow-wrap: anywhere; }
.earned-badge-card small { color: #795a13; font-size: .72rem; font-weight: 750; }
.adventure-muted-note { grid-column: 1 / -1; margin: 0; padding: 22px; border: 1px dashed var(--line); border-radius: 16px; color: var(--navy-soft); }
.progress-panel { margin-top: 18px; padding: 22px; border: 1px solid var(--line); border-radius: 20px; background: white; }
.progress-panel h3 { margin: 0 0 15px; font-size: 1rem; }
.badge-progress-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 24px; }
.badge-progress-item { display: flex; min-width: 0; align-items: center; gap: 12px; }
.badge-mini-icon { display: grid; flex: 0 0 38px; height: 38px; place-items: center; border-radius: 12px; color: #276958; background: var(--mint); font-size: .82rem; font-weight: 900; }
.badge-progress-copy { display: grid; min-width: 0; flex: 1; gap: 5px; }
.badge-progress-top { display: flex; justify-content: space-between; gap: 10px; font-size: .82rem; }
.badge-progress-top span { color: var(--navy-soft); font-size: .75rem; font-weight: 750; }
.badge-progress-copy progress, .collection-card progress { width: 100%; height: 8px; accent-color: var(--orange); }
.badge-progress-copy small { color: var(--navy-soft); font-size: .68rem; }
.collection-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.collection-card { display: grid; gap: 13px; padding: 24px; border: 1px solid var(--line); border-radius: 22px; background: white; box-shadow: 0 8px 24px rgba(18, 53, 84, .05); }
.collection-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.collection-heading > div { display: flex; align-items: center; gap: 9px; }
.collection-icon { font-size: 1.2rem; }
.collection-count { padding: 5px 9px; border-radius: 999px; color: var(--navy-soft); background: #f2f5f7; font-size: .72rem; font-weight: 850; }
.collection-card > p { margin: 0; color: var(--navy-soft); font-size: .86rem; }
.collection-requirements { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; padding: 0; list-style: none; }
.collection-requirements li { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; border-radius: 999px; color: var(--navy-soft); background: #f2f5f7; font-size: .72rem; font-weight: 750; }
.collection-requirements li.is-complete { color: #276958; background: var(--mint); }
.adventure-timeline { display: grid; gap: 13px; }
.history-card { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; padding: 22px; border: 1px solid var(--line); border-radius: 20px; background: white; }
.history-marker { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; color: white; background: #4f987f; font-weight: 900; }
.history-card-body { display: grid; min-width: 0; gap: 12px; }
.history-card-heading, .history-card-footer { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.history-card-heading h3 { margin: 0; font-size: 1.1rem; }
.history-card-heading time { flex: 0 0 auto; color: var(--navy-soft); font-size: .8rem; font-weight: 750; }
.history-card-footer p { margin: 0; color: var(--navy-soft); font-size: .85rem; }
.history-favorite { flex: 0 0 auto; padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font-size: .75rem; font-weight: 850; }
.history-favorite.is-favorite { border-color: rgba(217, 87, 32, .22); color: #a63f15; background: #fff0e8; }
.history-item-status { min-height: 1em; margin: 0; color: #a63f15; font-size: .75rem; }

/* Complete-adventure dialog */
.complete-adventure-dialog { width: min(calc(100% - 32px), 540px); max-height: min(90vh, 760px); padding: 0; overflow: auto; border: 0; border-radius: 24px; color: var(--navy); background: white; box-shadow: 0 28px 80px rgba(11, 41, 66, .28); }
.complete-adventure-dialog::backdrop { background: rgba(11, 41, 66, .48); backdrop-filter: blur(3px); }
.complete-adventure-dialog form { position: relative; display: grid; gap: 18px; padding: 30px; }
.complete-adventure-dialog h2, .complete-adventure-dialog p { margin: 0; }
#complete-adventure-name { margin-top: -10px; color: var(--navy-soft); }
.complete-adventure-dialog fieldset { margin: 0; padding: 0; border: 0; }
.complete-adventure-dialog legend { margin-bottom: 9px; font-weight: 850; }
.completion-child-list { display: flex; flex-wrap: wrap; gap: 8px; }
.completion-child-option, .completion-favorite { display: inline-flex; width: auto; align-items: center; gap: 8px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 999px; cursor: pointer; font-size: .86rem; }
.completion-child-option:has(input:checked), .completion-favorite:has(input:checked) { border-color: var(--orange); background: #fff0e8; }
.completion-child-option input, .completion-favorite input { width: 18px; height: 18px; min-height: 18px; margin: 0; padding: 0; accent-color: var(--orange); }
.completion-rating { display: grid; gap: 7px; }
.completion-rating select { width: 100%; min-height: 44px; border: 1px solid var(--line); border-radius: 10px; padding: 0 10px; font: inherit; background: #fff; }
.complete-adventure-dialog .primary-button { width: 100%; margin: 0; }
.complete-adventure-dialog .save-status { min-height: 1.2em; margin: 0; color: #a63f15; font-size: .82rem; }
.dialog-close { position: absolute; top: 16px; right: 16px; display: grid; width: 38px; height: 38px; place-items: center; border: 0; border-radius: 50%; color: var(--navy); background: var(--cream); cursor: pointer; font-size: 1.4rem; }

@media (max-width: 760px) {
  .earned-badge-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .badge-progress-list, .collection-grid { grid-template-columns: 1fr; }
}
@media (max-width: 580px) {
  .child-selector-list, .custom-date-panel, .adventure-summary, .upcoming-adventure-grid { grid-template-columns: 1fr; }
  .adventure-section-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
  .date-quick-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .date-option:last-child { grid-column: 1 / -1; }
  .planning-preferences-heading { align-items: flex-start; flex-direction: column; gap: 7px; }
  .preference-summary-list { display: grid; gap: 7px; }
  .planning-submit { align-items: stretch; flex-direction: column; }
  .planning-submit .primary-button { width: 100%; }
  .child-profile-summary { padding-inline: 16px; }
  .child-profile-fields { padding: 22px 16px 24px; }
  .child-profile-save { width: 100%; }
  .child-profile-actions { align-items: stretch; flex-direction: column; }
  .child-profile-actions > div:last-child { align-items: stretch; flex-direction: column-reverse; gap: 12px; }
  .child-profile-actions .primary-button { width: 100%; }
  .adventure-empty { align-items: flex-start; flex-direction: column; }
  .history-card-heading, .history-card-footer { align-items: flex-start; flex-direction: column; gap: 8px; }
  .complete-adventure-dialog form { padding: 26px 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .planning-child-card, .child-profile-chevron-icon { transition: none; }
}

/* Family Adventures journal */
.adventure-page { width: min(calc(100% - 36px), 1120px); }
.adventure-hero { position: relative; overflow: hidden; border-radius: 0 0 36px 36px; }
.adventure-hero::after { content: "✦"; position: absolute; right: 5%; bottom: 22px; color: rgba(217, 87, 32, .16); font-size: clamp(5rem, 12vw, 9rem); transform: rotate(12deg); }
.adventure-summary article { min-height: 94px; align-content: center; padding: 17px 20px; border-color: rgba(113, 77, 0, .14); background: linear-gradient(145deg, #fff, #fffaf0); }
.adventure-summary strong { max-width: 240px; font-family: inherit; font-size: 1.65rem; line-height: 1; }
.adventure-summary small { margin-top: 5px; color: #728494; font-size: .72rem; line-height: 1.35; }
.summary-empty-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 20px 22px; border: 1px solid rgba(57, 118, 101, .17); border-radius: 18px; background: linear-gradient(145deg, #f5fcf9, #fffdf8); }
.summary-empty-cta[hidden] { display: none; }
.summary-empty-cta h2 { margin: 0 0 4px; font-size: 1.05rem; }
.summary-empty-cta p { margin: 0; color: var(--navy-soft); font-size: .84rem; }
.summary-empty-cta .primary-button { flex: 0 0 auto; margin: 0; }
.adventure-section { scroll-margin-top: 100px; }
.adventure-section-note { margin: -8px 0 20px; color: var(--navy-soft); font-weight: 750; }

.memory-card-grid { display: grid; gap: 20px; }
.memory-card { position: relative; display: grid; gap: 10px; padding: 26px; overflow: hidden; border: 1px solid rgba(113, 77, 0, .17); border-radius: 24px; background: linear-gradient(145deg, #fffdf8, #fff); box-shadow: 0 12px 32px rgba(18, 53, 84, .07); }
.memory-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 6px; background: linear-gradient(var(--orange), var(--yellow)); }
.memory-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.memory-card-heading h3 { margin: 3px 0 0; font-family: Georgia, serif; font-size: 1.35rem; }
.memory-card-heading time { flex: 0 0 auto; color: var(--navy-soft); font-size: .8rem; font-weight: 800; }
.memory-kicker { color: #9d421c; font-size: .7rem; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.memory-rating-label { margin: 2px 0 0; color: #9b6511; font-weight: 850; }
.memory-attendees { margin: 0; color: var(--navy-soft); font-size: .86rem; }
.memory-review-form { display: grid; gap: 14px; margin-top: 8px; padding-top: 18px; border-top: 1px dashed rgba(113, 77, 0, .2); }
.memory-review-form > label:first-of-type { display: grid; gap: 7px; font-size: .85rem; font-weight: 850; }
.memory-review-form textarea { width: 100%; min-height: 84px; resize: vertical; border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; color: var(--navy); font: inherit; background: white; }
.memory-review-form textarea:focus { outline: 3px solid rgba(217, 87, 32, .15); border-color: var(--orange); }
.review-counter { justify-self: end; color: var(--navy-soft); font-size: .7rem; }
.memory-rating-picker { display: flex; gap: 4px; }
.memory-rating-picker button { padding: 0; border: 0; color: #c4c8cb; background: transparent; cursor: pointer; font-size: 1.65rem; line-height: 1; }
.memory-rating-picker button.is-selected { color: #f2ac22; }
.review-share-option { display: flex; align-items: flex-start; gap: 9px; color: var(--navy); font-size: .84rem; font-weight: 780; }
.review-share-option input, .review-identity input { width: 18px; height: 18px; min-height: 18px; margin: 0; accent-color: var(--orange); }
.review-identity { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: 14px; background: #fffaf0; }
.review-identity legend { padding: 0 5px; font-size: .78rem; font-weight: 900; }
.review-identity label { display: flex; align-items: center; gap: 6px; font-size: .82rem; font-weight: 800; }
.review-identity small { flex-basis: 100%; color: var(--navy-soft); font-size: .72rem; line-height: 1.45; }
.memory-card-actions { display: flex; align-items: center; gap: 18px; }
.memory-card-actions .secondary-button { margin: 0; }

.collectible-badge-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 22px 14px; }
.collectible-badge { display: grid; min-width: 0; justify-items: center; gap: 7px; text-align: center; }
.collectible-badge strong { font-size: .84rem; overflow-wrap: anywhere; }
.collectible-badge small { color: var(--navy-soft); font-size: .69rem; font-weight: 750; }
.badge-select { padding: 3px 5px; border: 0; color: var(--navy-soft); background: transparent; cursor: pointer; font-size: .68rem; font-weight: 800; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; }
.badge-select:hover { text-decoration-color: currentColor; }
.badge-select:focus-visible, .badge-toggle:focus-visible { outline: 3px solid rgba(217, 87, 32, .22); outline-offset: 2px; }
.badge-detail { display: flex; align-items: baseline; gap: 10px; margin-top: 18px; padding: 13px 16px; border: 1px solid rgba(113, 77, 0, .16); border-radius: 14px; background: #fffaf0; }
.badge-detail[hidden] { display: none; }
.badge-detail strong { flex: 0 0 auto; font-size: .82rem; }
.badge-detail p { margin: 0; color: var(--navy-soft); font-size: .78rem; }
.badge-toggle { display: block; margin: 22px auto 0; padding: 9px 14px; border: 1px solid var(--line); border-radius: 999px; color: var(--navy); background: white; cursor: pointer; font-weight: 850; }
.badge-toggle:hover { border-color: rgba(18, 53, 84, .35); }
.badge-patch { position: relative; display: grid; width: 84px; height: 84px; place-items: center; border: 5px solid #fff4c4; border-radius: 50%; color: #714d00; background: linear-gradient(145deg, #ffdf66, #f5a623); box-shadow: 0 5px 0 #c77c16, 0 10px 20px rgba(113, 77, 0, .16); }
.badge-patch-1, .badge-patch-4 { border-radius: 22px 22px 40px 40px; background: linear-gradient(145deg, #b8ebd8, #4f987f); box-shadow: 0 5px 0 #32735e, 0 10px 20px rgba(39, 105, 88, .15); }
.badge-patch-2 { background: linear-gradient(145deg, #ffd4be, #e86f38); box-shadow: 0 5px 0 #ae4721, 0 10px 20px rgba(166, 63, 21, .15); }
.badge-patch-3 { background: linear-gradient(145deg, #d7eaf7, #68a8cf); box-shadow: 0 5px 0 #397b9f, 0 10px 20px rgba(36, 95, 131, .15); }
.badge-art { font-size: 2rem; filter: saturate(1.15); }
.badge-lock { position: absolute; right: -5px; bottom: -4px; display: grid; width: 24px; height: 24px; place-items: center; border: 2px solid white; border-radius: 50%; color: white; background: #276958; font-size: .68rem; }
.collectible-badge.is-locked .badge-patch { filter: grayscale(1); opacity: .48; box-shadow: 0 4px 0 #9aa3a8, 0 8px 16px rgba(18, 53, 84, .08); }
.collectible-badge.is-locked .badge-lock { filter: none; opacity: 1; background: #66727a; }
.collectible-badge.is-earned .badge-patch { animation: badge-arrival .7s cubic-bezier(.2, .9, .2, 1.2) both; }
@keyframes badge-arrival { from { opacity: 0; transform: scale(.7) rotate(-7deg); } to { opacity: 1; transform: scale(1) rotate(0); } }

.passport-card { position: relative; overflow: hidden; border: 2px solid #d8cfae; background: #fffdf5; box-shadow: 0 8px 0 #eee5c9, 0 16px 28px rgba(18, 53, 84, .06); }
.passport-card::after { content: "CHUDOLY"; position: absolute; right: -12px; bottom: 10px; color: rgba(113, 77, 0, .055); font-family: Georgia, serif; font-size: 2.3rem; font-weight: 900; transform: rotate(-8deg); }
.passport-stamps { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.passport-stamps li { display: flex; align-items: center; gap: 9px; color: var(--navy-soft); font-size: .78rem; font-weight: 760; }
.passport-stamp { display: grid; flex: 0 0 30px; height: 30px; place-items: center; border: 2px dashed #aab2b6; border-radius: 50%; color: #8b959b; }
.passport-stamps li.is-complete { color: #276958; }
.passport-stamps li.is-complete .passport-stamp { border-style: solid; border-color: #4f987f; color: white; background: #4f987f; transform: rotate(-8deg); }

.adventure-timeline { position: relative; display: grid; gap: 0; padding-left: 28px; }
.adventure-timeline::before { content: ""; position: absolute; left: 10px; top: 40px; bottom: 15px; width: 2px; background: #d9cda9; }
.timeline-month { margin: 26px 0 12px -28px; color: #714d00; font-family: Georgia, serif; font-size: 1.2rem; }
.timeline-month:first-child { margin-top: 0; }
.timeline-memory { position: relative; padding: 4px 0 20px 16px; border-bottom: 1px solid rgba(113, 77, 0, .13); }
.timeline-dot { position: absolute; left: -23px; top: 8px; width: 12px; height: 12px; border: 3px solid #fff8e5; border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 2px var(--orange); }
.timeline-memory h4 { margin: 0 0 6px; font-size: 1rem; }
.timeline-memory p { margin: 3px 0 0; }
.timeline-rating { color: #9b6511; font-size: .82rem; font-weight: 820; }
.timeline-location { color: var(--navy-soft); font-size: .78rem; }
.timeline-review { max-width: 650px; color: var(--navy); font-family: Georgia, serif; font-size: .88rem; font-style: italic; }

.map-statistics { display: grid; grid-template-columns: repeat(3, minmax(0, 150px)); gap: 8px; margin-bottom: 14px; }
.map-statistics article { display: grid; gap: 2px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.map-statistics strong { font-size: 1.35rem; }
.map-statistics span { color: var(--navy-soft); font-size: .67rem; font-weight: 800; }
.adventure-map-shell { position: relative; min-height: 460px; overflow: hidden; border: 1px solid rgba(36, 95, 131, .16); border-radius: 26px; background: #eaf7fb; box-shadow: 0 16px 38px rgba(18, 53, 84, .09); }
.adventure-map { position: absolute; inset: 0; overflow: hidden; background: #e4eee8; }
.adventure-map iframe { width: 100%; height: 100%; border: 0; }
.map-loading { display: grid; height: 100%; place-items: center; color: var(--navy-soft); font-size: .82rem; font-weight: 800; }
.chudoly-map-marker { display: grid; width: 44px; height: 44px; place-items: center; padding: 3px; border: 3px solid white; border-radius: 50% 50% 50% 12px; background: var(--yellow); box-shadow: 0 6px 16px rgba(18, 53, 84, .28); cursor: pointer; transform: rotate(-35deg); }
.chudoly-map-marker img { width: 32px; height: 32px; object-fit: contain; transform: rotate(35deg); }
.chudoly-map-marker:focus-visible { outline: 4px solid rgba(217, 87, 32, .3); outline-offset: 2px; }
.map-overlay-card, .map-popover { position: absolute; z-index: 5; right: 18px; bottom: 18px; width: min(calc(100% - 36px), 330px); padding: 18px; border: 1px solid rgba(113, 77, 0, .15); border-radius: 18px; background: rgba(255, 253, 248, .96); box-shadow: 0 12px 30px rgba(18, 53, 84, .18); backdrop-filter: blur(8px); }
.map-overlay-card[hidden], .map-popover[hidden] { display: none; }
.map-overlay-card strong, .map-popover strong { font-family: Georgia, serif; font-size: 1rem; }
.map-overlay-card p, .map-popover p { margin: 7px 0; color: var(--navy-soft); font-size: .78rem; line-height: 1.45; }
.map-overlay-card a { font-size: .78rem; font-weight: 850; text-underline-offset: 3px; }
.map-popover strong { font-family: Georgia, serif; }
.map-popover p { margin: 7px 0; color: var(--navy-soft); font-size: .78rem; line-height: 1.45; }
.map-review { font-family: Georgia, serif; font-style: italic; }
.map-popover-actions { display: flex; flex-wrap: wrap; gap: 10px 16px; margin-top: 12px; }
.map-external-link { color: var(--navy-soft); }
.public-family-reviews { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }
.public-review-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.public-review-card { display: grid; gap: 6px; padding: 16px; border: 1px solid rgba(113, 77, 0, .14); border-radius: 16px; background: #fffaf0; }
.public-review-card strong { font-size: .86rem; }
.public-review-stars { color: #9b6511; font-size: .82rem; font-weight: 850; }
.public-review-card p { margin: 0; color: var(--navy-soft); font-family: Georgia, serif; font-size: .82rem; line-height: 1.5; }

@media (max-width: 880px) {
  .collectible-badge-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .map-statistics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .summary-empty-cta { align-items: flex-start; flex-direction: column; gap: 14px; }
  .summary-empty-cta .primary-button { width: 100%; }
  .collectible-badge-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 8px; }
  .badge-patch { width: 72px; height: 72px; }
  .badge-detail { align-items: flex-start; flex-direction: column; gap: 4px; }
  .passport-stamps { grid-template-columns: 1fr; }
  .adventure-map-shell { min-height: 390px; }
  .map-overlay-card, .map-popover { right: 12px; bottom: 12px; width: calc(100% - 24px); }
  .memory-card { padding: 22px 18px; }
  .memory-card-heading { flex-direction: column; gap: 7px; }
  .memory-card-actions { align-items: flex-start; flex-direction: column; }
  .public-review-list { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  .collectible-badge.is-earned .badge-patch { animation: none; }
}

/* Personalized recommendation results */
#status:empty { display: none; }
.results-conversational-summary {
  display: grid;
  gap: 5px;
  margin: 38px 0 14px;
  padding: 18px 20px;
  border: 1px solid rgba(57, 118, 101, .18);
  border-radius: 18px;
  background: var(--mint);
}
.results-conversational-summary h2, .results-conversational-summary p { margin: 0; }
.results-conversational-summary h2 { font-size: 1.05rem; }
.results-conversational-summary p { max-width: 820px; color: var(--navy-soft); font-size: .9rem; }
.results-status-message {
  margin: 30px 0 14px;
  padding: 15px 17px;
  border: 1px solid var(--line);
  border-radius: 15px;
  color: var(--navy-soft);
  background: white;
  font-size: .9rem;
  font-weight: 700;
}
.results-status-message.error { border-color: rgba(217, 87, 32, .35); color: #9d421c; background: #fff4ed; }
.recommendation-filters {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  margin: 0 0 22px;
  padding: 4px 2px 7px;
  overflow-x: auto;
  scrollbar-width: none;
}
.recommendation-filters::-webkit-scrollbar { display: none; }
.recommendation-filter {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 0 15px;
  border-color: rgba(18, 53, 84, .12);
  background: rgba(255, 255, 255, .75);
  white-space: nowrap;
}
.recommendation-filter:hover { border-color: rgba(18, 53, 84, .35); }
.recommendation-filter[aria-pressed="true"] {
  border-color: var(--navy);
  background: var(--navy);
  box-shadow: 0 7px 18px rgba(18, 53, 84, .14);
}
.itinerary-list { gap: 22px; }
.itinerary-stop.event-card {
  width: 100%;
  min-width: 0;
  grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
  grid-template-areas:
    "rail body"
    "rail details";
  gap: 24px 32px;
  padding: 28px;
  border: 1px solid rgba(18, 53, 84, .1);
  border-radius: 26px;
  box-shadow: 0 16px 44px rgba(18, 53, 84, .08);
}
.event-card .stop-body { grid-area: body; }
.event-card .visit-rail { grid-area: rail; }
.event-card .stop-details { grid-area: details; }
.event-card .stop-heading { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.event-card .stop-heading h2 {
  margin: 0;
  font-size: clamp(1.8rem, 3.5vw, 2.75rem);
  line-height: 1.04;
  letter-spacing: -.045em;
}
.activity-match-row { display: flex; grid-column: 1; flex-wrap: wrap; align-items: center; gap: 7px; }
.family-match-indicator,
.distance-category {
  display: inline-flex;
  min-height: 28px;
  align-items: center;
  padding: 4px 9px;
  border-radius: 999px;
  color: #276958;
  background: var(--mint);
  font-size: .72rem;
  font-weight: 850;
  overflow-wrap: anywhere;
}
.distance-category { color: #714d00; background: #fff0bf; }
.recommendation-why {
  min-width: 0;
  margin-top: 18px;
  padding: 18px;
  border: 1px solid rgba(57, 118, 101, .15);
  border-radius: 18px;
  background: #f4faf7;
}
.recommendation-why h3 { margin: 0 0 13px; font-size: 1.02rem; letter-spacing: -.015em; }
.recommendation-reasons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.recommendation-reasons li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; align-items: start; color: var(--navy); font-size: .84rem; line-height: 1.42; }
.recommendation-check { color: #3f8b72; font-weight: 950; }
.event-facts {
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
  gap: 8px;
  margin: 18px 0 0;
}
.event-fact { min-height: 68px; padding: 11px 12px; border: 1px solid rgba(18, 53, 84, .07); background: #f4f6f7; }
.event-fact strong { font-size: .84rem; line-height: 1.32; }
.visit-rail { gap: 12px; }
.mini-map {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border: 1px solid rgba(18, 53, 84, .12);
  border-radius: 18px;
  background: #edf1ed;
  text-decoration: none;
}
.mini-map svg { display: block; width: 100%; height: 100%; }
.mini-map:hover .map-pin { transform: translate(160px, 108px); }
.mini-map:focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; }
.map-ground { fill: #eef1ed; }
.map-block { fill: #e2e6e2; stroke: #d9deda; stroke-width: 1; }
.map-block-two { fill: #e8e6df; }
.map-park { fill: #d9e7d7; }
.map-road-casing { fill: none; stroke: #d6d9d6; stroke-width: 28; stroke-linecap: round; }
.map-road { fill: none; stroke: #faf9f5; stroke-width: 22; stroke-linecap: round; }
.map-road-secondary.map-road-casing { stroke-width: 20; }
.map-road-secondary.map-road { stroke-width: 15; }
.map-small-road { fill: none; stroke: #faf9f5; stroke-width: 10; stroke-linecap: round; }
.map-street-label { fill: #7a8783; font-size: 9px; font-weight: 700; letter-spacing: .03em; }
.map-venue-label { fill: #536b68; font-size: 9px; font-weight: 800; paint-order: stroke; stroke: #eef1ed; stroke-width: 3px; stroke-linejoin: round; }
.map-landmark-label { fill: #607e64; font-size: 8px; font-weight: 750; paint-order: stroke; stroke: #d9e7d7; stroke-width: 3px; stroke-linejoin: round; }
.map-pin { color: white; transition: transform .18s ease; }
.map-pin path { fill: var(--orange); stroke: white; stroke-width: 3; }
.map-pin circle { fill: white; }
.map-pin image { pointer-events: none; }
.map-pin-shadow { fill: rgba(18, 53, 84, .2); }
.mini-map-label {
  position: absolute;
  top: 10px;
  left: 10px;
  padding: 4px 7px;
  border: 1px solid rgba(18, 53, 84, .09);
  border-radius: 8px;
  color: var(--navy-soft);
  background: rgba(255, 255, 255, .88);
  font-size: .62rem;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.where-panel { gap: 7px; padding: 17px; background: #fafbf8; }
.where-eyebrow { letter-spacing: .12em; }
.where-venue { font-size: 1rem; }
.where-address { display: grid; gap: 1px; }
.where-drive { margin-top: 7px; font-size: .82rem; }
.where-map-link { margin-top: 6px; text-decoration: none; }
.where-map-link:hover { text-decoration: underline; }
.stop-details { display: grid; min-width: 0; gap: 18px; }
.content-label {
  display: block;
  margin-bottom: 7px;
  color: var(--navy-soft);
  font-size: .67rem;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.activity-description .stop-description { max-width: 760px; margin: 0; font-size: .92rem; line-height: 1.55; }
.activity-tags .match-chips { margin: 0; }
.activity-tags .match-chips span { padding: 6px 10px; color: #345f54; background: #edf6f2; font-size: .73rem; }
.family-extra-list { margin: 8px 0 0; color: #48627c; line-height: 1.5; }
.road-trip-summary { margin: 14px 0 0; padding: 14px 16px; border: 1px solid #ead8a1; border-radius: 14px; background: #fff8df; }
.road-trip-summary strong { color: #714d00; }
.road-trip-summary p { margin: 6px 0 0; color: #5f5540; line-height: 1.5; }
.event-warning { margin: 0; }
.official-source { padding-top: 2px; }
.official-source-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.verified-source { color: #397665; font-size: .75rem; font-weight: 800; }
.event-source-link {
  min-height: 44px;
  margin: 0;
  padding: 0 17px;
  border: 1px solid var(--navy);
  border-radius: 13px;
  color: white;
  background: var(--navy);
  box-shadow: 0 7px 18px rgba(18, 53, 84, .14);
  text-decoration: none;
}
.event-source-link:hover { background: var(--navy-deep); }
.recommendation-feedback { gap: 13px; margin-top: 2px; padding-top: 19px; }
.recommendation-feedback h3 { margin: 0; font-size: 1.05rem; }
.activity-action-groups { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(180px, 1fr); gap: 16px 24px; }
.activity-action-group { display: grid; min-width: 0; gap: 7px; align-content: start; }
.activity-action-label { color: var(--navy-soft); font-size: .67rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.recommendation-feedback-options { gap: 7px; }
.feedback-option { display: inline-flex; min-height: 36px; align-items: center; gap: 6px; padding: 6px 10px; }
.action-icon { display: inline-grid; min-width: 16px; place-items: center; color: var(--orange-dark); font-size: .9rem; }
.feedback-option.is-active {
  border-color: #77b8a5;
  color: #276958;
  background: var(--mint);
  box-shadow: inset 0 0 0 1px rgba(57, 118, 101, .08);
}
.feedback-option.is-hidden-state {
  border-color: rgba(18, 53, 84, .2);
  color: var(--navy);
  background: #eef1f3;
}
.feedback-option.is-active .action-icon { color: #397665; }
.feedback-option.is-active:disabled { opacity: 1; }
.feedback-summary[aria-disabled="true"] { cursor: default; }
.feedback-summary[aria-disabled="true"]::after { display: none; }
.feedback-summary::after { margin-left: 1px; }
.recommendation-feedback-status:empty { min-height: 0; }
.results-empty-state { display: grid; gap: 4px; padding: 30px; border: 1px dashed var(--line); border-radius: 20px; background: rgba(255,255,255,.55); }
.results-empty-state span { color: var(--navy-soft); }

@media (max-width: 850px) {
  .itinerary-stop.event-card { grid-template-columns: minmax(230px, 260px) minmax(0, 1fr); gap: 22px; padding: 24px; }
  .recommendation-reasons { grid-template-columns: 1fr; }
  .activity-action-groups { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .itinerary-stop.event-card {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "body"
      "rail"
      "details";
    gap: 22px;
  }
  .mini-map { aspect-ratio: 16 / 9; }
  .event-card .stop-heading { grid-template-columns: minmax(0, 1fr); }
  .activity-match-row { grid-column: 1; }
  .family-match-indicator, .distance-category { justify-self: start; max-width: 100%; }
  .event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 580px) {
  .results-conversational-summary { margin-top: 30px; padding: 16px; }
  .itinerary-stop.event-card { padding: 20px; border-radius: 22px; }
  .event-card .stop-heading h2 { font-size: clamp(1.7rem, 9vw, 2.2rem); }
  .recommendation-why { padding: 16px; }
  .event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .event-fact { min-height: 64px; }
  .official-source-row { align-items: stretch; flex-direction: column; }
  .event-source-link { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .map-pin { transition: none; }
  .mini-map:hover .map-pin { transform: translate(160px, 112px); }
}

/* Activity-detail presentation */
.itinerary-stop.event-card.activity-detail-card {
  grid-template-columns: minmax(300px, 42%) minmax(0, 1fr);
  grid-template-areas:
    "media hero"
    "why why"
    "facts facts"
    "guidance guidance"
    "details details";
  gap: 22px 32px;
}
.activity-hero-media { grid-area: media; min-width: 0; align-self: start; }
.activity-image-figure { position: relative; width: 100%; aspect-ratio: 4 / 3; margin: 0; overflow: hidden; border-radius: 20px; background: #f0f4ee; }
.activity-image { display: block; width: 100%; height: 100%; object-fit: cover; }
.activity-image-figure figcaption { position: absolute; right: 10px; bottom: 10px; max-width: calc(100% - 20px); padding: 5px 8px; border-radius: 8px; color: #fff; background: rgba(18, 53, 84, .82); font-size: .68rem; line-height: 1.3; }
.activity-image-figure figcaption a { color: inherit; text-decoration-color: rgba(255,255,255,.65); }
.activity-hero-media .mini-map { aspect-ratio: 4 / 3; border-radius: 20px; }
.activity-detail-hero { display: grid; grid-area: hero; min-width: 0; gap: 10px; align-content: center; }
.activity-detail-hero .stop-heading { display: flex; flex-direction: column; gap: 10px; }
.activity-detail-hero .activity-match-row { order: -1; }
.activity-detail-hero .stop-heading h2 { margin: 0; font-size: clamp(2rem, 4vw, 3.2rem); line-height: 1.01; letter-spacing: -.05em; }
.activity-hero-schedule, .activity-hero-essentials { margin: 0; color: var(--navy); font-size: .98rem; font-weight: 800; line-height: 1.45; }
.activity-hero-essentials { color: var(--navy-soft); font-weight: 700; }
.detail-actions-wrap { display: grid; gap: 6px; margin-top: 8px; }
.detail-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.detail-action-primary, .detail-action-secondary {
  display: inline-flex; min-height: 44px; align-items: center; justify-content: center; padding: 0 15px; border: 1px solid var(--navy); border-radius: 12px;
  color: var(--navy); background: #fff; cursor: pointer; font: inherit; font-size: .78rem; font-weight: 850; text-decoration: none;
}
.detail-action-primary { color: #fff; background: var(--navy); }
.detail-action-primary:hover { background: var(--navy-deep); }
.detail-action-secondary:hover { background: #eef3f4; }
.detail-action-primary:focus-visible, .detail-action-secondary:focus-visible, .detail-disclosure:focus-visible { outline: 3px solid var(--orange); outline-offset: 3px; }
.detail-action-status { min-height: 1em; margin: 0; color: var(--navy-soft); font-size: .75rem; }
.activity-detail-card > .recommendation-why { grid-area: why; margin: 0; padding: 20px 22px; }
.activity-detail-card > .recommendation-why .recommendation-reasons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.recommendation-reasons-extra { margin-top: 9px; }
.detail-disclosure { width: auto; min-height: 34px; margin-top: 10px; padding: 4px 9px; border: 1px solid rgba(18, 53, 84, .18); border-radius: 10px; color: var(--navy); background: transparent; cursor: pointer; font: inherit; font-size: .75rem; font-weight: 850; }
.detail-disclosure[aria-expanded="true"] { background: #eef3f4; }
.activity-detail-card > .event-facts { display: grid; grid-area: facts; grid-template-columns: 2.1fr repeat(3, minmax(110px, 1fr)); gap: 0; margin: 0; overflow: hidden; border: 1px solid rgba(18, 53, 84, .12); border-radius: 16px; }
.activity-detail-card > .event-facts .event-fact { min-height: 0; padding: 13px 15px; border: 0; border-right: 1px solid rgba(18, 53, 84, .1); border-radius: 0; background: #f7f8f7; }
.activity-detail-card > .event-facts .event-fact:last-child { border-right: 0; }
.activity-detail-card > .event-facts .event-fact strong { font-size: .82rem; }
.attendance-guidance { display: flex; grid-area: guidance; flex-wrap: wrap; gap: 8px 18px; margin-top: -10px; color: var(--navy-soft); font-size: .82rem; }
.attendance-guidance strong { color: var(--navy); }
.activity-detail-card > .stop-details { display: grid; grid-area: details; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 28px; }
.activity-description, .activity-detail-card .recommendation-feedback { grid-column: 1 / -1; }
.detail-section-heading { margin: 0 0 7px; color: var(--navy); font-size: .95rem; letter-spacing: -.01em; }
.activity-description .stop-description { max-width: 900px; font-size: .95rem; }
.activity-tags .match-chips { display: inline-flex; margin: 0; vertical-align: middle; }
.activity-tags .detail-disclosure { margin: 0 0 0 7px; border-radius: 999px; }
.extra-tags { margin-top: 8px !important; }
.detail-location { padding: 16px 18px; background: #fafbf8; }
.detail-location .where-map-link { min-height: 38px; margin-top: 7px; }
.official-source { align-self: center; padding: 4px 0; }
.source-information, .source-last-checked { margin: 0; color: var(--navy-soft); font-size: .78rem; line-height: 1.5; }
.source-information a { color: var(--navy); font-weight: 800; text-underline-offset: 2px; }
.activity-detail-card .recommendation-feedback { margin-top: 4px; }

@media (max-width: 850px) {
  .itinerary-stop.event-card.activity-detail-card { grid-template-columns: minmax(250px, 40%) minmax(0, 1fr); }
  .activity-detail-card > .event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-detail-card > .event-facts .event-fact:nth-child(2) { border-right: 0; }
  .activity-detail-card > .event-facts .event-fact:nth-child(-n+2) { border-bottom: 1px solid rgba(18, 53, 84, .1); }
}
@media (max-width: 720px) {
  .itinerary-stop.event-card.activity-detail-card {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "media" "hero" "why" "facts" "guidance" "details";
  }
  .activity-image-figure, .activity-hero-media .mini-map { aspect-ratio: 16 / 9; }
  .activity-detail-card > .recommendation-why .recommendation-reasons { grid-template-columns: 1fr; }
  .activity-detail-card > .stop-details { grid-template-columns: minmax(0, 1fr); }
  .activity-description, .activity-detail-card .recommendation-feedback { grid-column: 1; }
}
@media (max-width: 580px) {
  .itinerary-stop.event-card.activity-detail-card { padding: 0 0 20px; overflow: hidden; }
  .activity-detail-card > :not(.activity-hero-media) { margin-right: 18px; margin-left: 18px; }
  .activity-image-figure, .activity-hero-media .mini-map { border: 0; border-radius: 0; }
  .activity-detail-hero .stop-heading h2 { font-size: clamp(1.9rem, 9vw, 2.45rem); }
  .detail-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .detail-action-primary { grid-column: 1 / -1; }
  .activity-detail-card > .recommendation-why { padding: 16px; }
  .activity-detail-card > .event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-detail-card > .event-facts .event-fact { min-height: 72px; }
}
/* One unified, explainable recommendation surface. */
.recommendation-surface { margin: 0 0 32px; padding: clamp(22px, 4vw, 38px); border: 1px solid rgba(18, 53, 84, .12); border-radius: 26px; background: linear-gradient(145deg, #fffaf0, #fff 55%, #edf8f3); box-shadow: 0 18px 50px rgba(18, 53, 84, .08); }
.recommendation-surface .results-conversational-summary { margin: 0 0 16px; padding: 0; border: 0; border-radius: 0; background: transparent; }
.recommendation-surface .results-conversational-summary h2 { font-size: clamp(1.65rem, 3vw, 2.35rem); line-height: 1.1; letter-spacing: -.04em; }
.recommendation-surface .recommendation-filters { margin-bottom: 18px; }
.itinerary-stop.event-card.activity-detail-card.compact-recommendation-card {
  display: grid;
  width: 100%;
  grid-template-columns: 156px minmax(0, 1fr);
  min-height: 260px;
  align-items: start;
  gap: 20px;
  padding: 20px;
  border: 0;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 12px 36px rgba(18, 53, 84, .09);
  box-sizing: border-box;
}
@media (max-width: 700px) {
  .recommendation-surface { margin-inline: -2px; padding: 20px 14px; border-radius: 22px; }
}

/* Compact recommendation feed with progressive disclosure. */
.itinerary-list { gap: 16px; }
.itinerary-stop.event-card.activity-detail-card.compact-recommendation-card {
  grid-template-areas: "media content";
  transition: box-shadow 200ms ease, transform 200ms ease;
}
.itinerary-stop.event-card.activity-detail-card.compact-recommendation-card:hover { box-shadow: 0 16px 38px rgba(18, 53, 84, .11); transform: translateY(-1px); }
.compact-recommendation-card > .activity-hero-media {
  grid-area: media;
  width: 156px;
  height: 156px;
  align-self: start;
}
.compact-recommendation-card .activity-image-figure,
.compact-recommendation-card .activity-hero-media .mini-map {
  width: 156px;
  height: 156px;
  min-height: 0;
  aspect-ratio: 1;
  border: 0;
  border-radius: 16px;
}
.compact-recommendation-card .activity-image { object-fit: cover; }
.compact-recommendation-card .activity-image-figure figcaption { display: none; }
@media (min-width: 721px) {
  .itinerary-stop.event-card.activity-detail-card.compact-recommendation-card.top-recommendation-card {
    grid-template-columns: 172px minmax(0, 1fr);
    padding: 24px;
    box-shadow: inset 3px 0 #77b8a5, 0 16px 40px rgba(18, 53, 84, .11);
  }
  .top-recommendation-card > .activity-hero-media,
  .top-recommendation-card .activity-image-figure,
  .top-recommendation-card .activity-hero-media .mini-map { width: 172px; height: 172px; }
}
.compact-card-content {
  display: grid;
  grid-area: content;
  grid-template-columns: minmax(270px, 1.2fr) minmax(230px, .8fr);
  min-width: 0;
  align-content: start;
  gap: 14px 28px;
  padding: 0;
}
.compact-card-heading { display: grid; min-width: 0; gap: 6px; }
.compact-card-heading h2 {
  margin: 0;
  font-size: clamp(1.45rem, 2.4vw, 2rem);
  line-height: 1.08;
  letter-spacing: -.04em;
}
.compact-card-heading .family-match-indicator {
  width: fit-content;
  max-width: 100%;
  padding: 5px 10px;
  font-size: .76rem;
}
.compact-card-heading .activity-hero-schedule {
  font-size: .88rem;
}
.compact-card-heading .activity-hero-essentials {
  color: #3f5d74;
  font-size: .82rem;
  font-weight: 800;
}
.compact-venue { display: flex; align-items: center; gap: 4px; margin: -2px 0 0; color: var(--navy-soft); font-size: .78rem; font-weight: 700; }
.compact-source-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-top: 2px; }
.source-trust-badge { display: inline-flex; width: fit-content; color: #527064; font-size: .68rem; font-weight: 750; }
.source-trust-badge[hidden] { display: none; }
.compact-source-row .official-source-link { order: -1; font-size: .8rem; }
.compact-card-story { display: grid; align-self: start; gap: 10px; min-width: 0; }
.program-card-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.program-card-badge { display: inline-flex; width: fit-content; min-height: 27px; align-items: center; padding: 4px 9px; border-radius: 999px; color: #81410e; background: #ffedc9; font-size: .72rem; font-weight: 850; }
.program-quick-facts { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 14px; padding: 2px 0; }
.program-quick-fact { display: inline-flex; width: fit-content; min-height: 20px; align-items: center; gap: 4px; padding: 0; border: 0; border-radius: 0; color: #526b7d; background: transparent; font-size: .74rem; font-weight: 720; line-height: 1.3; }
.metadata-icon { width: 15px; height: 15px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.compact-recommendation-card .recommendation-why {
  align-self: start;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.compact-recommendation-card .recommendation-why h3 { margin-bottom: 8px; font-size: .88rem; }
.recommendation-primary-reason { margin: 0 0 7px; color: var(--navy); font-size: .95rem; font-weight: 850; line-height: 1.4; }
.recommendation-context-sentence { margin: 0; color: #4c6679; font-size: .79rem; font-weight: 650; line-height: 1.42; }
.recommendation-comparison { display: grid; gap: 3px; margin: 9px 0 0; color: #315e70; font-size: .78rem; font-weight: 720; line-height: 1.42; }
.recommendation-comparison > span { color: #55707f; font-size: .7rem; font-weight: 850; }
.recommendation-comparison > p { margin: 0; }
.recommendation-reason-icon { margin-right: 7px; }
.compact-recommendation-card .recommendation-reasons {
  grid-template-columns: 1fr;
  gap: 5px;
}
.compact-recommendation-card .recommendation-reasons li { font-size: .79rem; line-height: 1.36; }
.compact-card-footer {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid rgba(18, 53, 84, .1);
}
.program-session-selector { display: grid; grid-column: 1 / -1; border-top: 1px solid rgba(18, 53, 84, .07); }
.program-session-disclosure {
  display: flex;
  width: 100%;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 2px;
  border: 0;
  color: var(--navy);
  background: transparent;
  cursor: pointer;
  font: inherit;
  text-align: left;
}
.program-session-disclosure:hover .program-session-action { text-decoration: underline; text-underline-offset: 3px; }
.program-session-disclosure:focus-visible { border-radius: 5px; outline: 3px solid var(--orange); outline-offset: 2px; }
.program-session-summary { min-width: 0; color: #405d72; font-size: .82rem; font-weight: 800; }
.program-session-action { flex: 0 0 auto; color: var(--navy); font-size: .8rem; font-weight: 900; }
.program-session-heading { margin: 0; color: var(--navy); font-size: .86rem; font-weight: 900; letter-spacing: -.01em; }
.program-session-choice:focus-within { outline: 3px solid var(--orange); outline-offset: 2px; }
.program-session-groups { display: grid; gap: 10px; padding: 11px 2px 13px; animation: session-disclosure-reveal 190ms ease-out; }
.program-session-groups[hidden] { display: none; }
.program-venue-sessions { display: grid; gap: 5px; }
.program-venue-sessions h4 { margin: 0; color: var(--navy); font-size: .82rem; font-weight: 900; letter-spacing: -.01em; }
.program-session-choices { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.program-session-choice {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  width: max-content;
  max-width: 100%;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 7px 10px;
  border: 1px solid rgba(18, 53, 84, .2);
  border-radius: 999px;
  color: #294b63;
  background: #fff;
  box-shadow: 0 1px 2px rgba(18, 53, 84, .05);
  cursor: pointer;
  font-size: .78rem;
  font-weight: 800;
  line-height: 1.2;
  white-space: normal;
  transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease, background-color 140ms ease;
}
.program-session-choice:hover { border-color: #3f7d6a; color: #174b3c; background: #f7fbf9; box-shadow: 0 3px 9px rgba(18, 53, 84, .11); transform: translateY(-1px); }
.program-session-choice:active { box-shadow: 0 1px 3px rgba(18, 53, 84, .08); transform: translateY(0); }
.program-session-choice:has(input:checked) { border-color: #2b6c58; color: #174b3c; background: #fff; box-shadow: none; }
.program-session-choice:has(input:checked)::before { content: "✓"; color: #174b3c; font-weight: 950; }
.program-session-choice input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.compact-card-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.compact-card-actions .detail-action-primary,
.compact-card-actions .detail-action-secondary { min-height: 40px; padding-inline: 15px; transition: background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.compact-card-actions button:active { transform: scale(.98); }
.compact-card-actions > * { align-self: center; }
.compact-save-action .action-icon { color: #b73850; }
.compact-save-action.is-active { border-color: #b73850; color: #8f2940; background: #fff8fa; box-shadow: none; }
.compact-card-footer > .detail-action-status { flex: 1 0 100%; min-height: 0; }
.recommendation-more-details-body {
  display: grid;
  flex: 1 0 100%;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  padding-top: 16px;
  animation: recommendation-reveal 190ms ease-out;
}
.recommendation-more-details-body[hidden] { display: none; }
.recommendation-more-details-body .activity-description,
.recommendation-more-details-body .recommendation-feedback,
.recommendation-more-details-body .detail-action-status { grid-column: 1 / -1; }
.recommendation-details-grid {
  display: grid;
  grid-template-columns: 132px minmax(280px, 1fr) minmax(220px, 320px);
  align-items: start;
  gap: 24px;
}
.recommendation-more-details-body .detail-location {
  display: contents;
  padding: 0;
  border: 0;
  background: transparent;
}
.detail-location .mini-map { width: 132px; aspect-ratio: 16 / 10; border-radius: 12px; }
.location-copy { display: grid; gap: 6px; min-width: 0; }
.location-venue-heading { margin: 0; font-size: .95rem; line-height: 1.35; letter-spacing: -.01em; }
.detail-location .where-address { color: var(--navy-soft); font-size: .84rem; line-height: 1.45; }
.detail-location .where-map-link { display: inline-flex; width: fit-content; min-height: 32px; align-items: center; margin-top: 2px; color: var(--navy); font-size: .84rem; font-weight: 850; text-decoration: underline; text-underline-offset: 3px; }
.recommendation-details-grid > .official-source { display: grid; min-width: 0; align-self: start; align-content: start; gap: 6px; padding: 0; }
.recommendation-details-grid > .official-source .detail-section-heading { margin: 0; font-size: .8rem; }
.official-source-link { width: fit-content; color: var(--navy); font-size: .86rem; font-weight: 800; white-space: nowrap; text-decoration: underline; text-underline-offset: 3px; }
.official-source-link:hover { color: var(--navy-deep); }
.official-source-link:focus-visible { border-radius: 3px; outline: 3px solid var(--orange); outline-offset: 3px; }
.more-like-this { display: grid; grid-column: 1 / -1; gap: 8px; }
.more-like-this-links { display: flex; flex-wrap: wrap; gap: 7px; }
.more-like-this-link { display: inline-flex; min-height: 38px; align-items: center; padding: 7px 10px; border: 1px solid rgba(18, 53, 84, .14); border-radius: 10px; color: var(--navy); background: #fff; font-size: .8rem; font-weight: 800; text-decoration: none; }
.more-like-this-link:hover { border-color: rgba(18, 53, 84, .35); background: #f8faf8; }
.more-like-this-link:focus-visible { outline: 3px solid var(--orange); outline-offset: 2px; }
@keyframes recommendation-reveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
@keyframes session-disclosure-reveal { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: translateY(0); } }

@media (max-width: 960px) {
  .recommendation-details-grid { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .recommendation-details-grid .mini-map { width: min(100%, 420px); }
  .official-source-link { white-space: normal; }
}

@media (max-width: 720px) {
  .itinerary-stop.event-card.activity-detail-card.compact-recommendation-card {
    grid-template-columns: 104px minmax(0, 1fr);
    grid-template-areas: none;
    min-height: 0;
    gap: 12px 14px;
    padding: 14px;
  }
  .compact-recommendation-card > .activity-hero-media,
  .compact-recommendation-card .activity-image-figure,
  .compact-recommendation-card .activity-hero-media .mini-map {
    width: 104px;
    height: 104px;
    min-height: 0;
    aspect-ratio: 1;
    border-radius: 14px;
  }
  .compact-recommendation-card > .activity-hero-media { grid-column: 1; grid-row: 1; }
  .compact-card-content { display: contents; }
  .compact-card-heading { grid-column: 2; grid-row: 1; }
  .compact-recommendation-card .recommendation-why { grid-column: 1 / -1; }
  .compact-card-story { grid-column: 1 / -1; }
  .program-quick-facts { gap: 5px; }
  .compact-card-heading h2 { font-size: clamp(1.3rem, 5.8vw, 1.7rem); }
  .compact-card-heading .family-match-indicator { font-size: .68rem; }
  .compact-card-footer { grid-column: 1 / -1; align-items: center; }
  .recommendation-more-details-body > * { grid-column: 1; }
  .recommendation-details-grid .mini-map { width: 100%; }
}

@media (max-width: 430px) {
  .container { width: min(calc(100% - 24px), 1180px); }
  .compact-card-actions { display: grid; width: 100%; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); }
  .compact-card-actions .detail-action-primary,
  .compact-card-actions .detail-action-secondary { width: 100%; grid-column: auto; padding-inline: 10px; }
  .compact-save-action { border: 1px solid rgba(18, 53, 84, .24); color: var(--navy); background: #fff; box-shadow: none; }
  .expanded-card-actions { display: grid; }
  .expanded-card-actions > * { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .itinerary-stop.event-card.activity-detail-card.compact-recommendation-card,
  .program-session-choice,
  .program-session-groups,
  .compact-card-actions .detail-action-primary,
  .compact-card-actions .detail-action-secondary,
  .recommendation-more-details-body { animation: none; transition: none; }
}

/* Final premium interaction overrides live last so older feed rules cannot flatten them. */
.recommendation-filter {
  border: 1px solid rgba(18, 53, 84, .14);
  color: #38576d;
  background: rgba(255, 255, 255, .84);
  box-shadow: 0 1px 2px rgba(18, 53, 84, .04);
  transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}
.recommendation-filter:hover { border-color: rgba(39, 105, 88, .34); background: #f8fcfa; transform: translateY(-1px); }
.recommendation-filter:active { transform: translateY(0) scale(.98); }
.recommendation-filter[aria-pressed="true"] {
  border-color: rgba(39, 105, 88, .28);
  color: #174b3c;
  background: #e8f5ef;
  box-shadow: inset 0 0 0 1px rgba(39, 105, 88, .04), 0 3px 10px rgba(18, 53, 84, .06);
}
.compact-card-actions .compact-save-action.icon-only-action {
  width: 44px;
  min-width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid rgba(18, 53, 84, .12);
  border-radius: 999px;
  color: #a82d4c;
  background: transparent;
  box-shadow: none;
}
.compact-card-actions .compact-save-action.icon-only-action .heart-icon { width: 21px; height: 21px; fill: transparent; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: fill 170ms ease, transform 170ms ease, color 170ms ease; }
.compact-card-actions .compact-save-action.icon-only-action:hover { color: #8f2940; background: #fff1f5; transform: translateY(-1px) scale(1.04); }
.compact-card-actions .compact-save-action.icon-only-action:hover .heart-icon { transform: scale(1.08); }
.compact-card-actions .compact-save-action.icon-only-action:active { transform: scale(.94); }
.compact-card-actions .compact-save-action.icon-only-action.is-active { border-color: rgba(182, 37, 76, .16); color: #b6254c; background: #fff1f5; }
.compact-card-actions .compact-save-action.icon-only-action.is-active .heart-icon { fill: currentColor; }

@media (max-width: 430px) {
  .compact-card-actions { grid-template-columns: minmax(0, 1fr) 44px; }
  .compact-card-actions .compact-save-action.icon-only-action { width: 44px; }
}
