/* Complete seasonal palettes. Classic retains the original Vice City colours. */
:root[data-season=halloween]{--season-bg:#0e0715;--season-panel:#1d1027;--season-raised:#2c1734;--season-sky:#0c081b;--season-mid:#361343;--season-horizon:#9c411d;--season-accent:#ff9d3d;--season-secondary:#a78bfa;--season-soft:#ffe0b0;--season-text:#fff5e7;--season-muted:#c4b0cf;--season-border:#59334c;--season-on-accent:#231008}
:root[data-season=autumn]{--season-bg:#170e0a;--season-panel:#2d1b11;--season-raised:#46281a;--season-sky:#34160e;--season-mid:#925028;--season-horizon:#d39a44;--season-accent:#efb86b;--season-secondary:#c67c43;--season-soft:#ffe5b6;--season-text:#fff5e6;--season-muted:#c9b499;--season-border:#674530;--season-on-accent:#291407}
:root[data-season=winter]{--season-bg:#071420;--season-panel:#102838;--season-raised:#19394c;--season-sky:#061d35;--season-mid:#24677d;--season-horizon:#83bdc8;--season-accent:#91d6fa;--season-secondary:#b4c7ff;--season-soft:#e1f6ff;--season-text:#f1faff;--season-muted:#aac7d7;--season-border:#355c71;--season-on-accent:#072237}
:root[data-season=spring]{--season-bg:#0b1c16;--season-panel:#153428;--season-raised:#234b37;--season-sky:#12372b;--season-mid:#3a7656;--season-horizon:#a1b47c;--season-accent:#cfdf94;--season-secondary:#f2b3cb;--season-soft:#edf3cd;--season-text:#f4f9e9;--season-muted:#b8cdb8;--season-border:#466b50;--season-on-accent:#18351e}
:root[data-season=summer]{--season-bg:#031f26;--season-panel:#083743;--season-raised:#0d4b58;--season-sky:#03465b;--season-mid:#087c92;--season-horizon:#e2bf72;--season-accent:#ffd477;--season-secondary:#69e3dc;--season-soft:#fff1c6;--season-text:#eefdfa;--season-muted:#abd2d2;--season-border:#387480;--season-on-accent:#0a343a}
:root[data-season=holiday]{--season-bg:#07170f;--season-panel:#102d1d;--season-raised:#21402b;--season-sky:#061d15;--season-mid:#174333;--season-horizon:#82352f;--season-accent:#efcc82;--season-secondary:#d58488;--season-soft:#fff0c4;--season-text:#faffee;--season-muted:#b9cbbb;--season-border:#486343;--season-on-accent:#1b2c19}
:root[data-season=newyear]{--season-bg:#0b0d16;--season-panel:#171d2b;--season-raised:#253145;--season-sky:#101625;--season-mid:#344563;--season-horizon:#71663f;--season-accent:#f3d69c;--season-secondary:#b9c7e5;--season-soft:#fff2d2;--season-text:#fff8e7;--season-muted:#aebbd2;--season-border:#4a5265;--season-on-accent:#1c2030}
:root[data-season]:not([data-season=classic]){--ink:var(--season-bg);--white:var(--season-text);--pink:var(--season-accent);--soft:var(--season-muted);--border:var(--season-border);--season-tint:color-mix(in srgb,var(--season-accent) 15%,transparent);--season-glow:color-mix(in srgb,var(--season-secondary) 19%,transparent);color-scheme:dark;accent-color:var(--season-accent)}

/* Rebuild the sky with the seasonal palette; the original photo supplies only texture. */
:root[data-season]:not([data-season=classic]) .scene{background:linear-gradient(180deg,var(--season-sky),var(--season-mid) 34%,var(--season-horizon) 55%,var(--season-bg) 100%);filter:none;isolation:isolate}
:root[data-season]:not([data-season=classic]) .scene:before{content:'';position:absolute;inset:0;background:url('/assets/vice-sunset-hd-v2.png') center 46%/cover no-repeat;filter:grayscale(1) contrast(1.6);mix-blend-mode:multiply;opacity:.75;z-index:0}
:root[data-season]:not([data-season=classic]) .scene:after{background:linear-gradient(180deg,transparent 35%,color-mix(in srgb,var(--season-bg) 40%,transparent) 66%,var(--season-bg) 100%);z-index:1}
:root[data-season]:not([data-season=classic]) .creator-strip{background:var(--season-bg);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(.header,.season-toolbar,.footer,.audience,.community-section,.music-screen,.spoiler-content,.gallery-dialog header,.gallery-dialog footer,.community-map-dialog header,.community-map-dialog footer,.map-view-toolbar){border-color:var(--season-border)}

/* Countdown, progress and shared sections. */
:root[data-season]:not([data-season=classic]) :is(.hero .eyebrow,.hero-subtitle,.remaining-title,.number,.creator-credit strong,.visitor-info summary strong,.city,.country-count,.countdown-total strong,.guide-feature h3,.preorder-platforms,.tube-vi){color:var(--season-text)}
:root[data-season]:not([data-season=classic]) .unit-label{color:var(--season-soft)!important}
:root[data-season]:not([data-season=classic]) .unit:before{background:linear-gradient(145deg,var(--season-accent),var(--season-border) 55%,var(--season-secondary))}
:root[data-season]:not([data-season=classic]) .unit:after,:root[data-season]:not([data-season=classic]) .unit:not(:last-child):after{background:var(--season-panel)}
:root[data-season]:not([data-season=classic]) .seconds:after{background:var(--season-raised)!important}
:root[data-season]:not([data-season=classic]) :is(.seconds .number,.close-message strong,.release-panel h2 em,.wait-progress-heading strong,.tube-numbers strong){color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) :is(.wait-progress,.countdown-total,.local-reference){background:var(--season-panel);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) .wait-progress-track{background:var(--season-raised)}
:root[data-season]:not([data-season=classic]) .wait-progress-track>span{background:linear-gradient(90deg,var(--season-secondary),var(--season-accent),var(--season-soft))}
:root[data-season]:not([data-season=classic]) :is(.hero .eyebrow>span:first-child,.live-dot){background:var(--season-accent);box-shadow:0 0 12px var(--season-tint)}
:root[data-season]:not([data-season=classic]) :is(.world-section,.release-panel){background:linear-gradient(135deg,var(--season-panel),var(--season-bg));border-color:var(--season-border)}

/* Cards, visitors, gallery, stores, forms, and dialogs use the same surface system. */
:root[data-season]:not([data-season=classic]) :is(.music-card,.tube-panel,.preorder-section){background:radial-gradient(ellipse at 0 0,var(--season-glow),transparent 60%),var(--season-panel);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(.guide-feature,.screenshot-card,.screenshot-card>span,.region-detail,.protagonists article,.country-row,.spoiler-card,.visitor-explainer,.community-map-card,.community-map-open>span,.community-map-card figcaption,.preorder-link-fallback){background:var(--season-panel);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(dialog:not(.launch-dialog),.gallery-dialog .lightbox-picture,.map-viewport){background:var(--season-bg);color:var(--season-text);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(input,textarea,select,.gallery-search input,.spoiler-form input,.spoiler-form textarea,dialog input,.preorder-link-fallback input,.radio-picker select,.theme-picker select,.local-reference select){background:var(--season-panel);border-color:var(--season-border);color:var(--season-text)}
:root[data-season]:not([data-season=classic]) select option{background:var(--season-panel);color:var(--season-text)}
:root[data-season]:not([data-season=classic]) :is(.language select,.secondary,.preorder-copy,.gallery-filters button,.region-tabs button,.gallery-dialog button,.spoiler-close){background:transparent;color:var(--season-soft);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(.music-actions button,.preorder-store,.gallery-more button,.community-map-dialog button){background:var(--season-raised);color:var(--season-soft);border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(.primary,.community-button,.preorder-button,.preorder-store-featured,.release-replay,.music-actions button[aria-pressed=true],.gallery-filters button[aria-pressed=true],.toast){background:var(--season-accent);color:var(--season-on-accent);border-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) :is(.primary,.community-button,.preorder-button,.preorder-store-featured,.release-replay):hover{background:var(--season-soft);border-color:var(--season-soft)}
:root[data-season]:not([data-season=classic]) :is(.preorder-store:not(.preorder-store-featured),.secondary,.preorder-copy,.gallery-more button):hover{background:var(--season-raised);border-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) .preorder-store-featured small{color:var(--season-on-accent)}
:root[data-season]:not([data-season=classic]) .region-tabs button[aria-pressed=true]{background:var(--season-raised);color:var(--season-accent);border-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) .preorder-section:target{border-color:var(--season-accent);box-shadow:0 0 0 3px var(--season-tint)}
:root[data-season]:not([data-season=classic]) .preorder-opening-note{border-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) :is(.visitor-vessel,.visitor-vessel:before,.visitor-vessel:after){border-color:var(--season-muted)}
:root[data-season]:not([data-season=classic]) :is(.visitor-vessel:before,.visitor-vessel:after){background:linear-gradient(90deg,var(--season-panel),var(--season-border),var(--season-panel))}
:root[data-season]:not([data-season=classic]) .tube-fill{background:linear-gradient(0deg,var(--season-secondary),var(--season-accent),var(--season-soft))}
:root[data-season]:not([data-season=classic]) .tube-fill:before{background:var(--season-text)}
:root[data-season]:not([data-season=classic]) .tube-marks span:before{background:var(--season-muted)}

/* Copy, metadata and highlights remain readable in every palette. */
:root[data-season]:not([data-season=classic]) :is(.creator-credit,.visitor-info summary,.visitor-goal,.theme-picker,.counter-meta,.time-note,.scroll-cue,.clock-top,.clock-date,.local-reference,.world-live,.section-intro,.footer p,.footer-end,.faqs p,.album-name,.music-artist span,.music-actions p,.music-footnote,.radio-picker>span,.radio-note,.community-header p,.tube-marks,.tube-numbers>span,.tube-numbers small,.tube-note,.tube-caption,.spoiler-meta,.spoiler-tag,.spoiler-list-status,.community-footer,.audience-intro,.audience-note,.country-empty,.guide-verified,.guide-feature-copy>span,.guide-feature p,.guide-facts dt,.gallery-toolbar>span,.guide-note,.map-disclaimer,.region-detail-copy>span,.region-detail p,.region-tabs button>span,.map-status p,.protagonists p,.cast-grid p,.gallery-dialog header>span,.gallery-intro,.gallery-search>span,.preorder-section p,.preorder-store small,.map-view-toolbar>span,.community-map-card figcaption,.community-map-dialog footer p,.visitor-explainer p+p,#wait-progress-basis){color:var(--season-muted)}
:root[data-season]:not([data-season=classic]) :is(.countdown-readable,.platforms,.wait-progress-heading>span,.wait-progress-details,.close-message span,.local-reference strong,.music-artist,.music-actions a,.tube-copy h3,.tube-percent-line,.spoiler-content p,.spoiler-form>label,dialog p,.guide-nav,.visitor-explainer p,.preorder-link-fallback label>span,.preorder-copy-status){color:var(--season-soft)}
:root[data-season]:not([data-season=classic]) :is(.eyebrow,.creator-star,.spark,.official-link,.faqs p a,.radio-source,.community-kicker,.spoiler-card summary,.spoiler-content a,.spoiler-form-status,.audience-total,.country-code,.guide-link,.screenshot-card b,.guide-label,.cast-grid article>span,.community-map-open>span,.community-map-dialog header p,.map-zoom-controls output){color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) :is(.guide-label,.spoiler-consent input){border-color:var(--season-border);accent-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) .protagonists article span{color:var(--season-border)}
:root[data-season]:not([data-season=classic]) :is(button,a,summary,select,input,textarea):focus-visible{outline-color:var(--season-accent)}
:root[data-season]:not([data-season=classic]) ::selection{background:var(--season-accent);color:var(--season-on-accent)}
:root[data-season]:not([data-season=classic]) :is(.capture-credit,.capture-copy){border-color:var(--season-border)}
:root[data-season]:not([data-season=classic]) .capture-credit{background:var(--season-panel)}
:root[data-season]:not([data-season=classic]) .capture-copy>span{color:var(--season-muted)}
:root[data-season]:not([data-season=classic]) .capture-credit>.arrow-icon{color:var(--season-accent)}
