// ============================================================================
// OpenClaw Control Center — CSS Custom Property Output
// ============================================================================
// This module emits ALL design tokens as CSS custom properties on :root.
// Import this in styles.scss to make tokens available to all components.
//
// Tokens are namespaced with --cc- (Control Center) to avoid collisions
// with Angular Material's --mat- variables.
// ============================================================================

@use 'tokens' as *;

// ---------------------------------------------------------------------------
// Emit all CSS custom properties
// ---------------------------------------------------------------------------
@mixin emit-custom-properties {
  :root {
    // --- Color tokens ---
    --cc-color-primary:       #{$color-primary-500};
    --cc-color-secondary:     #{$color-secondary-400};
    --cc-color-accent:        #{$color-accent-400};
    --cc-color-danger:        #{$color-danger-400};

    // --- Surface tokens ---
    --cc-surface-darkest:     #{$color-surface-darkest};
    --cc-surface-dark:        #{$color-surface-dark};
    --cc-surface-medium:      #{$color-surface-medium};
    --cc-surface-light:       #{$color-surface-light};
    --cc-surface-lighter:     #{$color-surface-lighter};

    // --- On-surface tokens ---
    --cc-on-surface:          #{$color-on-surface};
    --cc-on-surface-variant:  #{$color-on-surface-variant};
    --cc-on-surface-muted:    #{$color-on-surface-muted};

    // --- Status tokens ---
    --cc-status-active:       #{$status-active};
    --cc-status-idle:         #{$status-idle};
    --cc-status-thinking:     #{$status-thinking};
    --cc-status-error:        #{$status-error};
    --cc-status-offline:      #{$status-offline};

    --cc-status-active-bg:    #{$status-active-bg};
    --cc-status-idle-bg:      #{$status-idle-bg};
    --cc-status-thinking-bg:  #{$status-thinking-bg};
    --cc-status-error-bg:     #{$status-error-bg};
    --cc-status-offline-bg:   #{$status-offline-bg};

    --cc-status-active-border:  #{$status-active-border};
    --cc-status-idle-border:    #{$status-idle-border};
    --cc-status-thinking-border: #{$status-thinking-border};
    --cc-status-error-border:   #{$status-error-border};
    --cc-status-offline-border:  #{$status-offline-border};

    // --- Typography tokens ---
    --cc-font-brand:   #{$font-family-brand};
    --cc-font-body:    #{$font-family-body};
    --cc-font-mono:    #{$font-family-mono};

    // --- Spacing tokens ---
    --cc-spacing-0:   #{$spacing-0};
    --cc-spacing-1:   #{$spacing-1};
    --cc-spacing-2:   #{$spacing-2};
    --cc-spacing-3:   #{$spacing-3};
    --cc-spacing-4:   #{$spacing-4};
    --cc-spacing-5:   #{$spacing-5};
    --cc-spacing-6:   #{$spacing-6};
    --cc-spacing-7:   #{$spacing-7};
    --cc-spacing-8:   #{$spacing-8};
    --cc-spacing-10:  #{$spacing-10};
    --cc-spacing-12:  #{$spacing-12};
    --cc-spacing-16:  #{$spacing-16};

    // --- Layout tokens ---
    --cc-nav-rail-collapsed:  #{$nav-rail-collapsed-width};
    --cc-nav-rail-expanded:   #{$nav-rail-expanded-width};
    --cc-header-height:        #{$header-height};
    --cc-bottom-nav-height:   #{$bottom-nav-height};
    --cc-card-radius:         #{$card-border-radius};
    --cc-card-min-width:      #{$card-min-width};

    // --- Radius tokens ---
    --cc-radius-none:  #{$radius-none};
    --cc-radius-xs:    #{$radius-xs};
    --cc-radius-sm:    #{$radius-sm};
    --cc-radius-md:    #{$radius-md};
    --cc-radius-lg:    #{$radius-lg};
    --cc-radius-xl:    #{$radius-xl};
    --cc-radius-full:  #{$radius-full};

    // --- Shadow tokens ---
    --cc-shadow-0: #{$shadow-level-0};
    --cc-shadow-1: #{$shadow-level-1};
    --cc-shadow-2: #{$shadow-level-2};
    --cc-shadow-3: #{$shadow-level-3};
    --cc-shadow-4: #{$shadow-level-4};

    // --- Motion tokens ---
    --cc-duration-fast:     #{$duration-fast};
    --cc-duration-short:    #{$duration-short};
    --cc-duration-medium:   #{$duration-medium};
    --cc-duration-standard: #{$duration-standard};
    --cc-duration-long:     #{$duration-long};

    --cc-easing-standard:   #{$easing-standard};
    --cc-easing-decelerate: #{$easing-decelerate};
    --cc-easing-accelerate: #{$easing-accelerate};

    // --- Accessibility tokens ---
    --cc-focus-width:  #{$focus-ring-width};
    --cc-focus-offset: #{$focus-ring-offset};
    --cc-focus-color:  #{$focus-ring-color};
    --cc-touch-min:    #{$min-touch-target};
  }
}