/* ================================================================
   themes/thanksgiving.css — seasonal palette

   Overrides only. Anything not restated here keeps the value
   themes/default.css put on :root, which is why status colours that
   must not go seasonal (danger, validation, allergen severity) are
   deliberately absent from this file.

   Loaded after default.css; [data-theme="thanksgiving"] and :root carry
   the same specificity, so source order decides and this wins.
   ================================================================ */

[data-theme="thanksgiving"] {
    /* ── Primitive palette ───────────────────────────────────────── */
    --palette-cream:       #FBF6DC;
    --palette-white:       #FFFFFF;

    --palette-blackberry:  #57123F;
    --palette-razzleberry: #9B4168;
    --palette-plum:        #8C718B;

    --palette-cajun:       #AE4325;
    --palette-orange:      #F5721F;
    --palette-tangerine:   #F37350;
    --palette-pumpkin:     #FF8605;

    --palette-dijon:       #D4A833;
    --palette-honey:       #EFBC40;
    --palette-curry:       #FFC031;
    --palette-daffodil:    #FFD45E;
    --palette-saffron:     #F6D37D;

    --palette-moss:        #74752D;
    --palette-artichoke:   #70785A;
    --palette-garden:      #648D59;
    --palette-olive:       #8E9E43;
    --palette-wasabi:      #92A95C;

    --palette-espresso:    #594138;
    --palette-chocolate:   #704E4A;
    --palette-suede:       #877654;
    --palette-kraft:       #BD914D;
    --palette-taupe:       #9D9584;
    --palette-crumb:       #B5A98D;
    --palette-sand:        #B9B3A1;

    /* Darkened members of the same families. The pastels above are
       surfaces and highlights; text and 3:1 UI edges need these. */
    --palette-blackberry-deep: #3E0E2C;
    --palette-blackberry-mid:  #74234E;
    --palette-cajun-deep:      #94371E;
    --palette-garden-deep:     #4A6E42;
    --palette-garden-deeper:   #3F6B3B;
    --palette-plum-deep:       #6E5670;
    --palette-taupe-deep:      #6F675A;
    --palette-taupe-mid:       #78705F;
    --palette-taupe-soft:      #8D8574;
    --palette-espresso-deep:   #43302A;
    --palette-espresso-lift:   #6B4F44;
    --palette-linen:           #FFFCF4;
    --palette-whisper:         #FFFDF8;
    /* The ground. Cream at #FBF6DC carries 31 points of red-over-blue, which
       reads as custard once it covers a whole viewport instead of a band —
       worst on short pages (blog index, empty My Events) that are mostly
       ground. This halves the cast at identical contrast, and cream stays
       on as an accent. */
    --palette-paper:           #FAF6EC;
    --palette-vanilla-deep:    #F7F1DF;
    --palette-saffron-soft:    #F9E3AC;
    --palette-honey-soft:      #EDD9A4;
    /* Glyph-weight members of the harvest families. Pumpkin and curry are
       fills and ornament only — as ink they measure 2.2:1 and 1.5:1 on a
       near-white card, so anything carrying a shape uses these instead. */
    --palette-pumpkin-deep:    #BE4A15;
    --palette-amber-deep:      #8A6512;
    --palette-parchment:       #F4EDD4;
    --palette-parchment-deep:  #E9DFC0;
    --palette-parchment-edge:  #E3D8B8;

    /* ── Page & surfaces ─────────────────────────────────────────── */
    --body-bg:        var(--palette-paper);
    --body-text:      var(--palette-espresso);
    /* Same value as the canvas on purpose. These were a half-step apart, and
       on any page shorter than the viewport the join between the content
       column and the canvas below it read as a rendering seam rather than as
       two bands. Lift now comes from --surface-bg, not from tinting the
       ground twice. */
    --page-bg:        var(--palette-paper);
    /* Whisper white, not pure white: a cold white on cream reads as an
       unstyled page. This is the lifted surface — nav, cards, panels — and
       the hero deliberately does NOT take it (see --hero-bg), so the nav has
       something to lift off. --surface-raised stays pure white. */
    --surface-bg:     var(--palette-whisper);
    --surface-raised: var(--palette-white);
    --surface-muted:  var(--palette-parchment-deep);
    --surface-sunken: var(--palette-parchment);

    --surface-inverse:       var(--palette-espresso);
    --surface-inverse-deep:  var(--palette-espresso-deep);
    --surface-inverse-hover: var(--palette-espresso-lift);
    --surface-inverse-text:  var(--palette-white);

    /* ── Section rhythm ──────────────────────────────────────────────
       light → warm → light → dark → light → gold, so the page reads as a
       sequence rather than one long field of beige. The hero drops to the
       cream ground so the whisper-white nav reads as a bar above it. */
    --hero-bg:          var(--palette-paper);
    --band-bg:          var(--palette-saffron-soft);
    --band-border:      var(--palette-honey-soft);
    --band-text-muted:  var(--palette-chocolate);
    --section-alt-bg:   var(--palette-whisper);
    --section-dark-bg:  var(--palette-espresso);
    /* A shade warmer than the section it sits on, or the card and the
       band behind it are the same colour and only the border reads. */
    --card-fill:        #FBF5E4;
    --card-fill-border: var(--palette-crumb);
    --btn-secondary-fill:       var(--palette-saffron);
    --btn-secondary-fill-hover: var(--palette-daffodil);

    --scrim-rgb: 89, 65, 56;

    --fill-neutral:     rgba(135, 118, 84, 0.10);
    --chip-inactive-bg: rgba(181, 169, 141, 0.45);
    --card-border:      rgba(189, 145, 77, 0.35);
    --outline-danger:   rgba(174, 67, 37, 0.35);
    --outline-accent:   rgba(212, 168, 51, 0.45);

    --hero-fallback-from: var(--palette-saffron);
    --hero-fallback-mid:  var(--palette-kraft);
    --hero-fallback-to:   var(--palette-suede);

    /* Warm, but only just: at the 0.6 alpha the step and footer copy use,
       a creamier triple drops under 4.5:1 on espresso. This lands at 4.52. */
    --on-inverse-rgb: 255, 253, 248;
    --on-inverse-warm-rgb: 251, 246, 220;
    --link-on-inverse-hover: var(--palette-curry);
    --footer-brand-hover:    var(--link-on-inverse-hover);
    /* Blackberry on espresso is 1.6:1 — the brand colour is darker than the
       dark band, so the label takes gold instead (6.6:1). */
    --label-on-inverse: var(--palette-daffodil);

    /* ── Gate pages ──────────────────────────────────────────────── */
    --gate-bg:            #1B0A14;
    --gate-surface:       #2A1020;
    --gate-surface-hover: #35162A;
    --gate-field-bg:      #150711;
    --gate-text:          var(--palette-cream);
    --gate-text-mid:      #C9AFA8;
    --gate-text-muted:    #A98D93;
    --gate-text-faint:    #6E4E5E;
    --gate-placeholder:   #5B3C4C;
    --gate-accent:        var(--palette-curry);
    --gate-accent-text:   var(--palette-espresso-deep);
    --gate-success:       #7FB86A;
    --gate-success-rgb:   127, 184, 106;

    /* ── Text ────────────────────────────────────────────────────── */
    --text-primary:   var(--palette-espresso);
    --text-secondary: var(--palette-chocolate);
    --text-subtle:    var(--palette-taupe-deep);
    --text-muted:     var(--palette-taupe-mid);
    --text-faint:     var(--palette-taupe-soft);
    --text-inverse:   var(--palette-white);
    --text-on-brand:  var(--palette-white);
    --text-on-accent: var(--palette-white);

    --text-neutral:       var(--palette-taupe-deep);
    --text-neutral-faint: var(--palette-taupe-soft);
    --border-neutral:     var(--palette-crumb);

    /* ── Borders ─────────────────────────────────────────────────── */
    --border-subtle:  #DCCFA8;
    --border-default: var(--palette-crumb);
    --border-strong:  var(--palette-taupe-soft);
    --divider:        var(--palette-parchment-edge);

    /* ── Brand ───────────────────────────────────────────────────── */
    --brand-primary:        var(--palette-blackberry);
    --brand-primary-rgb:    87, 18, 63;
    --brand-primary-hover:  var(--palette-razzleberry);
    --brand-primary-active: var(--palette-blackberry-mid);
    --brand-primary-deep:   var(--palette-blackberry-deep);
    --brand-primary-shade:  var(--palette-blackberry-deep);
    --brand-primary-tint:   var(--palette-plum);
    --brand-on-inverse:       var(--palette-daffodil);
    --brand-on-inverse-hover: var(--palette-curry);

    --brand-secondary:        var(--palette-garden-deep);
    --brand-secondary-rgb:    100, 141, 89;
    --brand-secondary-subtle: rgba(var(--brand-secondary-rgb), 0.14);

    --brand-tertiary: var(--palette-plum-deep);

    /* ── Accents ─────────────────────────────────────────────────────
       Cajun does double duty — it is the only warm colour in the palette
       that clears 4.5:1 both as ink on cream (5.3) and as a fill under
       white (5.8). Pumpkin and curry stay decorative: white on pumpkin is
       2.4:1, so neither may carry small text either way round. */
    --accent-primary:        var(--palette-cajun);
    --accent-primary-rgb:    174, 67, 37;
    --accent-primary-hover:  var(--palette-cajun-deep);
    --accent-primary-subtle: rgba(var(--accent-primary-rgb), 0.12);
    --accent-secondary:      var(--palette-pumpkin);
    --accent-secondary-rgb:  255, 134, 5;
    --accent-secondary-light: var(--palette-saffron);

    /* Decorative roles, each with a job: harvest carries the feature icons
       and the hero badge, gold the warm ornament, tertiary the plum notes.
       All three are glyph-weight, so all three clear 3:1 on their own wash. */
    --accent-harvest:        var(--palette-pumpkin-deep);
    --accent-harvest-rgb:    190, 74, 21;
    --accent-harvest-subtle: rgba(var(--accent-harvest-rgb), 0.10);
    --accent-gold:           var(--palette-amber-deep);
    --accent-gold-rgb:       138, 101, 18;
    --accent-tertiary:       var(--palette-plum-deep);
    --accent-tertiary-rgb:   110, 86, 112;

    /* ── Actions ─────────────────────────────────────────────────── */
    --action-secondary-bg:     transparent;
    --action-secondary-text:   var(--text-secondary);
    --action-secondary-border: var(--border-default);
    --action-secondary-hover:  var(--surface-muted);

    --action-neutral-bg:   var(--palette-moss);
    --action-neutral-text: var(--palette-white);

    --action-disabled-bg:     var(--palette-parchment-deep);
    --action-disabled-text:   var(--palette-taupe-soft);
    --action-disabled-border: var(--palette-crumb);

    /* --action-danger-* is intentionally NOT overridden: a delete button
       that turns seasonal stops reading as a delete button. Same for
       --status-danger-*, --severity-*, --form-error-text and the
       Bootstrap .is-invalid / .is-valid colours. */

    /* ── Status ──────────────────────────────────────────────────────
       Hue stays with the meaning; only the tint warms. */
    --status-success-fg:     var(--palette-garden-deeper);
    --status-success-solid:  var(--palette-garden);
    --status-success-rgb:    100, 141, 89;

    --status-warning-fg:     #7A5A10;
    --status-warning-solid:  var(--palette-dijon);
    --status-warning-rgb:    212, 168, 51;

    --status-caution-fg:     #9A5410;
    --status-caution-rgb:    245, 150, 40;

    --status-neutral-fg:     var(--palette-taupe-deep);
    --status-neutral-bg:     rgba(157, 149, 132, 0.16);
    --status-neutral-border: var(--border-subtle);

    --status-warning-wash:      #FDF1D6;
    --status-warning-wash-deep: #F6DCA6;
    --status-warning-icon:      var(--palette-cajun);
    --status-info-wash:         #EDF0E4;
    --status-info-wash-deep:    #DCE3CB;

    --flag-proposed-fg: var(--palette-plum-deep);
    --flag-proposed-bg: rgba(110, 86, 112, 0.14);
    --flag-off-fg:      var(--palette-cajun-deep);
    --flag-off-bg:      rgba(148, 55, 30, 0.10);

    --notice-warn-bg:       #FDF4DC;
    --notice-warn-border:   #EDD9A4;
    --notice-warn-icon:     #7A5A10;
    --notice-urgent-bg:     #F9EAF0;
    --notice-urgent-border: #E3C2D2;

    --badge-new-bg:     #F1E9F2;
    --badge-new-border: #D7C3D8;
    --badge-new-text:   var(--palette-plum-deep);

    --toggle-track-off: var(--palette-crumb);

    --sponsored-accent:       var(--palette-garden-deeper);
    --media-placeholder-bg:   var(--palette-parchment);
    --media-placeholder-icon: var(--palette-crumb);
    --skeleton-base:  #EFE7D2;
    --skeleton-shine: #F8F2E2;

    --highlight-bg:   var(--palette-daffodil);
    --highlight-text: var(--palette-espresso);

    --preview-bar-bg:   var(--palette-curry);
    --preview-bar-text: var(--palette-espresso-deep);

    /* ── Long-form reading surfaces ──────────────────────────────── */
    --editorial-bg:          var(--palette-paper);
    --editorial-surface:     var(--palette-white);
    --editorial-surface-alt: #F5EEDC;
    --editorial-fill:        #EFE7D2;
    --editorial-fill-alt:    #E8DFC6;
    --editorial-border:      #DDD2B4;
    --editorial-border-soft: #E6DCC2;
    --editorial-border-dash: #E6DCC2;
    --editorial-hover-fill:  #E5DBC0;
    --editorial-ghost-bg:    #F3ECDA;
    --editorial-media-bg:    #F1E9D6;
    --editorial-rule:        var(--palette-crumb);
    /* White, so the prose separates from the paper ground. The bottom padding
       comes with it — without one the surface stops flush against the last
       paragraph and reads as a crop rather than a card. */
    --editorial-article-bg:     var(--editorial-surface);
    --editorial-article-radius: 14px;
    --editorial-article-pad-b:  32px;
    --editorial-text:        var(--palette-espresso);
    --editorial-text-strong: var(--palette-espresso-deep);
    --editorial-text-soft:   var(--palette-chocolate);
    --editorial-text-mid:    var(--palette-taupe-deep);
    --editorial-text-muted:  var(--palette-taupe-deep);
    --editorial-text-faint:  var(--palette-taupe-mid);
    --editorial-text-dim:    var(--palette-taupe-soft);

    --editorial-cta-from:   #F7ECF1;
    --editorial-cta-to:     #FAF5E8;
    --editorial-cta-border: #E6CEDA;

    --editorial-notice-bg:     #FDF4DC;
    --editorial-notice-border: #EDD9A4;
    --editorial-notice-text:   #7A5A10;
    --editorial-paused-bg:     #FBF0D2;
    --editorial-paused-fg:     #7A5A10;
    --editorial-paused-dot:    var(--palette-dijon);
    --editorial-retired-bg:    #F0EDE2;
    --editorial-retired-fg:    var(--palette-taupe-deep);
    --editorial-retired-dot:   var(--palette-sand);

    /* ── Forms ───────────────────────────────────────────────────────
       --field-border is crumb-deep rather than crumb: a form outline is a
       UI component, which WCAG 1.4.11 wants at 3:1 against its backdrop. */
    --field-bg:            var(--surface-raised);
    --field-border:        var(--palette-taupe-soft);
    --field-border-focus:  var(--brand-primary);
    --field-placeholder:   var(--text-muted);
    --field-focus-ring:    rgba(var(--brand-primary-rgb), 0.18);
    --field-disabled-bg:   var(--palette-parchment);
    --field-disabled-text: var(--palette-taupe-soft);

    --focus-ring: var(--brand-primary);

    /* ── Elevation ───────────────────────────────────────────────── */
    --shadow-color-rgb: 89, 65, 56;

    /* ── Bootstrap bridge ────────────────────────────────────────────
       Pulls the 57 stock .btn-primary instances and Bootstrap's alerts
       and fields into the palette. Alert hues stay put; only the tint
       warms, and .is-invalid / .is-valid are left alone entirely. */
    --bs-link:       var(--palette-blackberry);
    --bs-link-hover: var(--palette-razzleberry);

    --bs-primary-bg:        var(--palette-blackberry);
    --bs-primary-fg:        var(--palette-white);
    --bs-primary-border:    var(--palette-blackberry);
    --bs-primary-hover:     var(--palette-razzleberry);
    --bs-primary-active:    var(--palette-blackberry-deep);
    --bs-primary-focus-rgb: 155, 65, 104;

    --bs-secondary-bg:        var(--palette-moss);
    --bs-secondary-fg:        var(--palette-white);
    --bs-secondary-border:    var(--palette-moss);
    --bs-secondary-hover:     var(--palette-artichoke);
    --bs-secondary-active:    #5D5E24;
    --bs-secondary-focus-rgb: 116, 117, 45;

    --bs-field-bg:           var(--palette-white);
    --bs-field-fg:           var(--palette-espresso);
    --bs-field-border:       var(--palette-taupe-soft);
    --bs-field-focus-border: var(--palette-razzleberry);
    --bs-field-focus-rgb:    155, 65, 104;
    --bs-field-disabled-bg:  var(--palette-parchment);

    --bs-alert-success-fg: #2F5A2B; --bs-alert-success-bg: #E5EEDC; --bs-alert-success-border: #CFE0BF;
    --bs-alert-info-fg:    #43503A; --bs-alert-info-bg:    #EDF0E4; --bs-alert-info-border:    #DCE3CB;
    --bs-alert-warning-fg: #6B4E0C; --bs-alert-warning-bg: #FBF0D2; --bs-alert-warning-border: #F2E0AC;
    --bs-alert-secondary-fg: #55493C; --bs-alert-secondary-bg: #F0EADA; --bs-alert-secondary-border: #E0D6BE;

    /* ── Admin console ───────────────────────────────────────────────
       Stays dark — a staff console that changes surface with the season
       is a worse console. Only the accents move. */
    --adm-accent:      var(--palette-razzleberry);
    --adm-accent-rgb:  155, 65, 104;
    --adm-accent-lt:   #C26790;
    --adm-accent-soft: #D89AB5;
    --adm-green:       #6FC77E;
    --adm-green-rgb:   111, 199, 126;
    --adm-gold:        var(--palette-curry);
    --adm-gold-rgb:    255, 192, 49;
    --adm-gold-soft:   var(--palette-saffron);
    --adm-on-medal:    #2A1020;
    --adm-badge-rust-bg: rgba(245, 114, 31, 0.18);
    --adm-badge-rust-fg: #F59353;
}
