/* Seasonal component tokens preserve semantic theme tokens and map rendering. */
[data-season="none"] {
    --season-accent: #1f86c6;
    --season-wash: #eaf6fc;
    --season-pill-bg: #eaf6fc;
    --season-pill-fg: #125f8e;
}
[data-season="winter"] {
    --season-soft: #dcecf8;
    --season-accent: #1e7bb8;
    --season-wash: #f0f7fc;
    --season-pill-bg: #e3f0fa;
    --season-pill-fg: #155b8a;
}
[data-season="spring"] {
    --season-soft: #dcf1e6;
    --season-accent: #2d9c75;
    --season-wash: #f1f9f5;
    --season-pill-bg: #e3f4ec;
    --season-pill-fg: #1d6b50;
}
[data-season="summer"] {
    --season-soft: #fbe3cf;
    --season-accent: #d0621c;
    --season-wash: #fdf7ed;
    --season-pill-bg: #fceadb;
    --season-pill-fg: #9a4611;
}
[data-season="autumn"] {
    --season-soft: #f3dfd2;
    --season-accent: #b3542e;
    --season-wash: #faf3eb;
    --season-pill-bg: #f6e6dc;
    --season-pill-fg: #8a3d1d;
}
[data-season] .season-pill {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    max-width: 100%;
    vertical-align: middle;
    font-size: .8125rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
}
[data-season] .season-pill svg { flex: 0 0 auto; }
[data-season] .season-pill-known {
    background: var(--season-pill-bg);
    color: var(--season-pill-fg);
    padding: .25rem .625rem;
    border-radius: 999px;
}
.trip-card-grid .trip-list-row[data-season] { border-top: 4px solid var(--season-accent); }
.trip-card-grid .trip-list-row[data-season] .trip-list-copy {
    background-image: radial-gradient(ellipse at top left, color-mix(in srgb, var(--season-accent) 8%, transparent), transparent 70%);
}
.trip-card-grid .trip-list-row[data-season]:hover {
    box-shadow: 0 6px 18px color-mix(in srgb, var(--season-accent) 16%, transparent);
}
:is(.trip-details-page, .trip-edit-page, .journey-planner-page) #main-content[data-season] { border-top: 4px solid var(--season-accent); }
:is(.trip-details-page, .trip-edit-page) [data-season] .trip-details-summary::before,
.trip-edit-page [data-season] .trip-season-heading {
    background-image: radial-gradient(ellipse at top left, color-mix(in srgb, var(--season-accent) 8%, transparent), transparent 75%);
}
:is(.trip-details-page, .trip-edit-page) [data-season] .details-stat:has(.season-pill) { min-inline-size: min(100%, 10em); }
:is(.trip-details-page, .trip-edit-page) [data-season] .trip-details-summary {
    box-shadow: 0 5px 14px color-mix(in srgb, var(--season-accent) 10%, transparent);
}
.trip-edit-page [data-season] .trip-season-heading { padding-block: .75rem; }
.trip-edit-page [data-season] .edit-region > summary::after {
    content: "";
    position: absolute;
    inset-inline: 1rem;
    bottom: 0;
    height: 1px;
    background: var(--season-accent);
    pointer-events: none;
}
.trip-details-page [data-season] .daily-itinerary .city-stop,
.trip-edit-page [data-season] #planning .city-stop { border-inline-start: 3px solid var(--season-accent); }
/* Body figures and resting day fills are neutral; saved-season edges/hover remain. */
.trip-details-page [data-season] .season-temperature { color: var(--foreground); }

/* Rounded trip actions follow saved seasons; shared navigation, destructive actions,
   phase state and the week pager retain their existing semantics. */
:is(.trip-list-row, .trip-details-page #main-content, .trip-edit-page #main-content)[data-season]:not([data-season="none"])
:is(.btn-primary, .trip-view-floating):not(:where(.journey-week-nav *, .alert *)) {
    --shadow-soft: 0 16px 0 -8px color-mix(in srgb, var(--season-pill-fg) 18%, transparent), 0 22px 45px -22px color-mix(in srgb, var(--season-pill-fg) 55%, transparent);
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--season-pill-fg);
    --bs-btn-border-color: var(--season-pill-fg);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: color-mix(in srgb, var(--season-pill-fg) 85%, #000);
    --bs-btn-hover-border-color: var(--bs-btn-hover-bg);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--bs-btn-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-hover-bg);
}
:is(.trip-list-row, .trip-details-page #main-content, .trip-edit-page #main-content)[data-season]:not([data-season="none"])
:is(.btn-secondary, .btn-outline-primary, .btn-outline-secondary):not(:where(.journey-week-nav *, .alert *)) {
    --bs-btn-color: var(--season-pill-fg);
    --bs-btn-bg: var(--season-pill-bg);
    --bs-btn-border-color: transparent;
    --bs-btn-hover-color: var(--season-pill-fg);
    --bs-btn-hover-bg: color-mix(in srgb, var(--season-pill-bg) 92%, var(--season-pill-fg));
    --bs-btn-hover-border-color: var(--season-pill-fg);
    --bs-btn-active-color: var(--season-pill-fg);
    --bs-btn-active-bg: var(--bs-btn-hover-bg);
    --bs-btn-active-border-color: var(--season-pill-fg);
}
.trip-edit-page #main-content[data-season]:not([data-season="none"]) .trip-view-floating {
    box-shadow: 0 3px 10px color-mix(in srgb, var(--season-pill-fg) 18%, transparent);
    --bs-btn-border-color: var(--card);
    --bs-btn-hover-border-color: var(--card);
    --bs-btn-active-border-color: var(--card);
}

/* Explicit consumers avoid recolouring alerts, neutral fields and route tokens.
   Resolve derived tokens here, where the saved-season palette is defined. */
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"]) {
    --season-link: var(--season-pill-fg);
    --season-link-hover: color-mix(in srgb, var(--season-pill-fg) 85%, #000);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season] .nav-pills {
    --bs-nav-pills-link-active-bg: var(--primary);
    --bs-nav-pills-link-active-color: #fff;
    --bs-nav-link-color: var(--primary);
    --bs-nav-link-hover-color: var(--primary-hover);
}
/* Bootstrap suppresses button outlines; provide a real offset ring, including
   the unknown-season fallback, rather than only changing outline-color. */
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]
:is(.btn, .nav-link):focus-visible:not(:where(.alert *, .dropdown-menu *, .btn-danger, .btn-outline-danger)) {
    outline: 2px solid var(--season-link, var(--ring));
    outline-offset: 2px;
    box-shadow: none;
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"]) .nav-pills {
    --bs-nav-pills-link-active-bg: var(--season-link);
    --bs-nav-link-color: var(--season-link);
    --bs-nav-link-hover-color: var(--season-link-hover);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(a:not(.btn, .nav-link, .dropdown-item), .details-summary-link, .day-type-icon, .plan-help > summary, .calendar-more):not(:where(.alert *, .dropdown-menu *, .workflow-icon)) {
    color: var(--season-link);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(a:not(.btn, .nav-link, .dropdown-item), .details-summary-link, .plan-help > summary, .calendar-more):hover:not(:where(.alert *, .dropdown-menu *, .workflow-icon)) {
    color: var(--season-link-hover);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(.stop-toggle, .stop-number, .calendar-weekdays, .calendar-bar, .agenda-entry) {
    background-color: var(--season-soft);
    color: var(--foreground);
}
/* Expanded day numbers keep their existing state highlight. */
.trip-details-page #main-content[data-season]:not([data-season="none"]) .daily-itinerary [aria-expanded="true"] .stop-number {
    background-color: var(--accent);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"]) .calendar-bar {
    border-left-color: var(--season-link);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(.calendar-date, .calendar-bar, .agenda-entry):hover {
    background-color: var(--season-wash);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"]) .calendar-date.is-today {
    color: var(--season-link);
    box-shadow: inset 0 0 0 2px var(--season-link);
}
.trip-details-page #main-content[data-season]:not([data-season="none"]) .journey-week-nav .btn:not(:disabled, .disabled) {
    color: var(--season-link);
}
.trip-details-page #main-content[data-season]:not([data-season="none"]) .journey-week-nav .btn:not(:disabled, .disabled):is(:hover, :active) {
    color: var(--season-link-hover);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:focus-visible:not(:where(.alert *, .dropdown-menu *, .workflow-icon, .btn-danger, .btn-outline-danger)) {
    outline-color: var(--season-link);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(.form-control, .form-select):focus:not(:where(.alert *)) {
    border-color: var(--season-link);
    outline-color: var(--season-link);
}
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
.btn:not(:where(.alert *, .btn-danger, .btn-outline-danger)) {
    --bs-btn-focus-box-shadow: none;
}

/* Disclosure hover fills use the saved season without changing expansion state. */
:is(.trip-edit-page, .trip-details-page) #main-content[data-season]:not([data-season="none"])
:is(.edit-region > summary:hover, .segment-summary-wrap:hover),
.trip-details-page #main-content[data-season]:not([data-season="none"]) .city-stop > .itinerary-toggle:hover {
    background-color: var(--season-wash);
}

/* The full-page cyan/cream gradient is retired on Web surfaces. */
.web-page { background: #f7f7f7; }
.trip-details-page .details-map-card,
.trip-details-page .details-map-card .trip-map-display,
.trip-details-page .itinerary-empty { background: var(--card); }
.trip-details-page .details-section-heading .eyebrow,
.trip-details-page .daily-itinerary .journey-plan-label,
:is(.trip-details-page, .trip-edit-page) .details-trip-title h1 { color: var(--foreground); }
.trip-details-page .day-entry, .trip-details-page .day-context { border-left-color: var(--border); }
:is(.trip-details-page, .trip-edit-page) [data-season] .trip-details-summary::before,
.trip-edit-page [data-season] .trip-season-heading {
    background-size: 100% 240px;
    background-repeat: no-repeat;
}

/* Finance views share the trip palette, preserving destructive and validation colours. */
.trip-edit-page #main-content[data-season]:not([data-season="none"])
:is(#budget-expenses, #booking-overview) .table thead th,
.trip-edit-page #main-content[data-season]:not([data-season="none"])
:is(#booking-editor, #meal-adjustments, #budget-expenses .modal, #budget-workspace ~ #trip-editor-dialog) .modal-header {
    background-color: var(--season-wash);
}
.trip-edit-page #main-content[data-season]:not([data-season="none"])
:is(#budget-expenses, #booking-overview) .dropdown-menu {
    --bs-dropdown-link-hover-bg: var(--season-wash);
    --bs-dropdown-link-active-bg: var(--season-pill-fg);
    border-color: var(--season-accent);
}
