:root {
    /* ---------------------------------------------------------------
       Booking status
       Pending → approved → rejected/cancelled follows traffic-light
       semantics. Rejected and cancelled both mean "unavailable" but
       carry different weight: rejected is an admin decision, cancelled
       is a voided booking.
    --------------------------------------------------------------- */

    --status-pending-bg:     #fff7ed;
    --status-pending-border: #fed7aa;
    --status-pending-text:   #9a3412;

    --status-approved-bg:       #ecfdf5;
    --status-approved-border:   #a7f3d0;
    --status-approved-text:     #047857;
    --status-approved-hover-bg: #d1ead9;

    --status-rejected-bg:     #fef2f2;
    --status-rejected-border: #fecaca;
    --status-rejected-text:   #991b1b;

    --status-cancelled-bg:     #fdf3ef;
    --status-cancelled-border: #c4866a;
    --status-cancelled-text:   #7a3225;
    --status-cancelled-action-bg:       #8a3f31;
    --status-cancelled-action-hover-bg: #713026;
    --status-cancelled-action-text:     #ffffff;

    /* ---------------------------------------------------------------
       Booking purposes
       Each purpose has four tokens:
         -accent  left-border stripe on calendar entries
         -bg      badge background
         -border  badge border
         -text    badge text and icons
       Type colors intentionally share hues with some status colors;
       the two are never ambiguous in context (stripe vs. badge).
       Types are planned to become admin-configurable.
    --------------------------------------------------------------- */

    --type-training-accent: #2563eb;
    --type-training-bg:     #eff6ff;
    --type-training-border: #bfdbfe;
    --type-training-text:   #1d4ed8;

    --type-match-accent: #dc2626;
    --type-match-bg:     #fef2f2;
    --type-match-border: #fecaca;
    --type-match-text:   #b91c1c;

    --type-event-accent: #eab308;
    --type-event-bg:     #fefce8;
    --type-event-border: #fde68a;
    --type-event-text:   #854d0e;

    --type-privateuse-accent: #c026d3;
    --type-privateuse-bg:     #fdf4ff;
    --type-privateuse-border: #f5d0fe;
    --type-privateuse-text:   #a21caf;

    --type-other-accent: #64748b;
    --type-other-bg:     #f8fafc;
    --type-other-border: #cbd5e1;
    --type-other-text:   #475569;

    /* ---------------------------------------------------------------
       Recurrence
       Recurring → violet. One-time → teal.
       Absence of either badge implies one-time where a badge is
       omitted by design.
    --------------------------------------------------------------- */

    --recurrence-recurring-bg:     #f5f3ff;
    --recurrence-recurring-border: #ddd6fe;
    --recurrence-recurring-text:   #5b21b6;

    --recurrence-onetime-bg:     #f0fdfa;
    --recurrence-onetime-border: #99f6e4;
    --recurrence-onetime-text:   #0f766e;

    /* ---------------------------------------------------------------
       Free calendar slot
       Lime green. Used for available-to-book slots in both the
       week grid and the day-list views.
    --------------------------------------------------------------- */

    --free-slot-bg:            #eef8f1;
    --free-slot-border:        #b7e4c7;
    --free-slot-accent:        #2b8a3e;
    --free-slot-text:          #2b6b3f;
    --free-slot-hover-bg:      #dff3e6;
    --free-slot-hover-outline: #74b88a;

    /* ---------------------------------------------------------------
       Feedback / notifications
       Success shares the approved-status green family intentionally.
    --------------------------------------------------------------- */

    --feedback-success-bg:   #e7f3ed;
    --feedback-success-text: #155d36;

    --feedback-error-bg:       #f8e5e5;
    --feedback-error-text:     #7d2323;
    --feedback-error-hover-bg: #eecece;

    /* ---------------------------------------------------------------
       User account status
       Active → green (shares the approved-status hue family).
       Inactive → neutral gray using system surface and muted-text tokens.
    --------------------------------------------------------------- */

    --user-active-bg:   #ecfdf5;
    --user-active-text: #047857;

    --user-removed-bg:   #fff7ed;
    --user-removed-text: #9a3412;

    /* ---------------------------------------------------------------
       Generic danger
       Crimson red. Used for destructive controls that do not map to a
       domain-specific status, such as resource deactivation.
    --------------------------------------------------------------- */

    --danger-bg:       #fef3f2;
    --danger-border:   #fda29b;
    --danger-text:     #b42318;
    --danger-hover-bg: #fee4e2;
    --danger-action-bg:       #b42318;
    --danger-action-hover-bg: #912018;
    --danger-action-text:     #ffffff;

    /* ---------------------------------------------------------------
       System / controls
       Blue-gray palette. --color-interactive is the de-facto primary
       action color used in buttons and nav; a formal brand color is
       not yet established and will be defined separately.
    --------------------------------------------------------------- */

    --color-text:                 #1f2933;
    --color-text-muted:           #526070;
    --color-border:               #d6dce5;
    --color-border-subtle:        #eef0f2;
    --color-surface:              #ffffff;
    --color-surface-subtle:       #f8fafc;
    --color-surface-hover:        #eef2f7;
    --color-interactive:          #174c7c;
    --color-interactive-hover:    #133f68;
    --color-focus:                #8bb8e8;
    --color-control-border:       #b8c2cf;
    --color-control-border-hover: #9aa8ba;
}
