/* ================================================================
   palette.css — Single source of truth for all colors
   Load order: palette.css → pxt.css (or landing.css)
   Light mode = :root defaults · Dark mode = [data-bs-theme="dark"]
   ================================================================ */

/* ────────────────────────────────────────────────────────────────
   1. Raw color scales (mode-independent)
   ──────────────────────────────────────────────────────────────── */
:root {
    /* Brand / Accent — Violet */
    --color-brand-25:  #f5f3ff;
    --color-brand-50:  #ede9fe;
    --color-brand-100: #ddd6fe;
    --color-brand-200: #c4b5fd;
    --color-brand-300: #a78bfa;
    --color-brand-400: #8b5cf6;
    --color-brand-500: #7c3aed;
    --color-brand-600: #6d28d9;
    --color-brand-700: #5b21b6;
    --color-brand-800: #4c1d95;
    --color-brand-900: #3b0764;
    --color-brand-950: #2e1065;

    /* Primary — Violet/Indigo */
    --color-primary-25:  #f0effe;
    --color-primary-50:  #e0defe;
    --color-primary-100: #cfc7f3;
    --color-primary-200: #b0a8e8;
    --color-primary-300: #8b86d6;
    --color-primary-400: #6e6ac8;
    --color-primary-500: #5856d6;
    --color-primary-600: #4b49b6;
    --color-primary-700: #3e3d96;
    --color-primary-800: #313076;
    --color-primary-900: #252456;
    --color-primary-950: #161436;

    /* Gray */
    --color-gray-25:  #fcfcfd;
    --color-gray-50:  #f9fafb;
    --color-gray-100: #f2f4f7;
    --color-gray-200: #e4e7ec;
    --color-gray-300: #d0d5dd;
    --color-gray-400: #98a2b3;
    --color-gray-500: #667085;
    --color-gray-600: #475467;
    --color-gray-700: #344054;
    --color-gray-800: #1d2939;
    --color-gray-900: #101828;
    --color-gray-950: #0c111d;

    /* Success — Green */
    --color-success-25:  #f6fef9;
    --color-success-50:  #ecfdf3;
    --color-success-100: #d1fadf;
    --color-success-200: #a6f4c5;
    --color-success-300: #6ce9a6;
    --color-success-400: #32d583;
    --color-success-500: #1b9e3e;
    --color-success-600: #039855;
    --color-success-700: #027a48;
    --color-success-800: #05603a;
    --color-success-900: #054f31;
    --color-success-950: #053321;

    /* Error — Red */
    --color-error-25:  #fffbfa;
    --color-error-50:  #fef3f2;
    --color-error-100: #fee4e2;
    --color-error-200: #fecdca;
    --color-error-300: #fda29b;
    --color-error-400: #f97066;
    --color-error-500: #e55353;
    --color-error-600: #d92d20;
    --color-error-700: #b42318;
    --color-error-800: #912018;
    --color-error-900: #7a271a;
    --color-error-950: #55160c;

    /* Warning — Amber */
    --color-warning-25:  #fffcf5;
    --color-warning-50:  #fffaeb;
    --color-warning-100: #fef0c7;
    --color-warning-200: #fedf89;
    --color-warning-300: #fec84b;
    --color-warning-400: #fdb022;
    --color-warning-500: #f9b115;
    --color-warning-600: #dc6803;
    --color-warning-700: #b54708;
    --color-warning-800: #93370d;
    --color-warning-900: #7a2e0e;
    --color-warning-950: #4e1d09;

    /* Info — Blue */
    --color-info-25:  #f5fbff;
    --color-info-50:  #f0f9ff;
    --color-info-100: #e0f2fe;
    --color-info-200: #b9e6fe;
    --color-info-300: #7cd4fd;
    --color-info-400: #36bffa;
    --color-info-500: #3399ff;
    --color-info-600: #0086c9;
    --color-info-700: #026aa2;
    --color-info-800: #065986;
    --color-info-900: #0b4a6f;
    --color-info-950: #062c41;

    /* Orange */
    --color-orange-25:  #fffaf5;
    --color-orange-50:  #fff6ed;
    --color-orange-100: #ffead5;
    --color-orange-200: #fddcab;
    --color-orange-300: #feb273;
    --color-orange-400: #fd853a;
    --color-orange-500: #fb6514;
    --color-orange-600: #ec4a0a;
    --color-orange-700: #c4320a;
    --color-orange-800: #9c2a10;
    --color-orange-900: #7e2410;
    --color-orange-950: #511c10;

    /* Teal */
    --color-teal-500: #20c997;
}

/* ────────────────────────────────────────────────────────────────
   2. Semantic tokens — Light mode (default)
   ──────────────────────────────────────────────────────────────── */
:root {
    /* Accent (violet-400) — used as RGB tuple for rgba() calls */
    --pxt-accent:          139, 92, 246;
    --pxt-accent-hex:      var(--color-brand-400);

    /* Semantic palette */
    --pxt-violet:          var(--color-primary-500);
    --pxt-violet-rgb:      88, 86, 214;
    --pxt-violet-subtle:   var(--color-primary-100);
    --pxt-blue:            var(--color-info-500);
    --pxt-blue-subtle:     var(--color-info-200);
    --pxt-green:           var(--color-success-500);
    --pxt-green-subtle:    var(--color-success-100);
    --pxt-amber:           var(--color-warning-500);
    --pxt-amber-subtle:    var(--color-warning-100);
    --pxt-lime:            var(--color-teal-500);

    /* Body */
    --pxt-body-bg:         var(--color-gray-50);
    --pxt-body-bg-rgb:     249, 250, 251;

    /* Text */
    --pxt-text:            var(--color-gray-900);
    --pxt-text-rgb:        16, 24, 40;
    --pxt-text-muted:      rgba(37, 43, 54, 0.75);

    /* Icons */
    --pxt-icon-color:      rgba(37, 43, 54, 0.85);
    --pxt-icon-menu-color: rgba(37, 43, 54, 0.95);

    /* Chrome — header & sidebar */
    --pxt-chrome-bg:           #ffffff;
    --pxt-chrome-text:         rgba(37, 43, 54, 0.95);
    --pxt-chrome-text-muted:   rgba(37, 43, 54, 0.85);
    --pxt-chrome-icon:         rgba(37, 43, 54, 0.85);
    --pxt-chrome-icon-menu:    rgba(37, 43, 54, 0.95);

    /* Surfaces & borders */
    --pxt-bg-card:         #ffffff;
    --pxt-card-border:     rgba(8, 10, 12, 0.175);
    --pxt-border:          var(--color-gray-200);
    --pxt-border-rgb:      228, 231, 236;
    --pxt-border-inner:    var(--color-gray-100);
    --pxt-tertiary-bg:     rgba(0, 0, 0, 0.05);
    --pxt-shadow-xs:       0px 1px 2px 0px rgba(16, 24, 40, 0.05);

    /* Inputs */
    --pxt-input-border:        var(--color-gray-300);
    --pxt-input-placeholder:   var(--color-gray-400);
    --pxt-input-focus-border:  #9cb9ff;
    --pxt-input-focus-ring:    rgba(70, 95, 255, 0.1);
    --pxt-label-color:         var(--color-gray-700);

    /* Forms */
    --pxt-form-label-color:        var(--color-gray-500);
    --pxt-form-input-bg:           #ffffff;
    --pxt-form-input-color:        var(--color-gray-900);
    --pxt-form-input-border:       var(--color-gray-300);
    --pxt-form-input-focus-border: #9cb9ff;
    --pxt-form-input-focus-ring:   rgba(70, 95, 255, 0.15);
    --pxt-form-help-color:         var(--color-gray-400);
    --pxt-form-section-color:      var(--pxt-text);
    --pxt-form-hr-color:           var(--pxt-border);

    /* Tables */
    --pxt-table-head-bg:      var(--color-brand-100);
    --pxt-table-head-color:   var(--pxt-text);
    --pxt-table-sort-icon:    rgba(0, 0, 0, 0.25);
    --pxt-table-sort-icon-on: var(--pxt-text);

    /* Tooltips */
    --pxt-tooltip-bg:     var(--pxt-bg-card);
    --pxt-tooltip-color:  var(--pxt-text);
    --pxt-tooltip-border: var(--pxt-border);
    --pxt-tooltip-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);

    /* Bootstrap 5.3 bridge */
    --bs-body-bg:                  var(--pxt-body-bg);
    --bs-body-bg-rgb:              var(--pxt-body-bg-rgb);
    --bs-body-color:               var(--pxt-text);
    --bs-body-color-rgb:           var(--pxt-text-rgb);
    --bs-border-color:             var(--pxt-border);
    --bs-border-color-translucent: var(--pxt-card-border);
    --bs-primary:                  #5856d6;
    --bs-primary-rgb:              88, 86, 214;
    --bs-success:                  #1b9e3e;
    --bs-success-rgb:              27, 158, 62;
    --bs-danger:                   #e55353;
    --bs-danger-rgb:               229, 83, 83;
    --bs-warning:                  #f9b115;
    --bs-warning-rgb:              249, 177, 21;
    --bs-info:                     #3399ff;
    --bs-info-rgb:                 51, 153, 255;
    --bs-secondary:                #6b7785;
    --bs-secondary-rgb:            107, 119, 133;
    --bs-tertiary-bg:              var(--pxt-tertiary-bg);
    --bs-card-bg:                  var(--pxt-bg-card);
    --bs-card-border-color:        var(--pxt-card-border);
    --bs-border-radius:            var(--pxt-border-radius);
    --bs-link-color:               var(--pxt-violet);
    --bs-link-color-rgb:           var(--pxt-violet-rgb);
    --bs-secondary-color:          var(--pxt-text-muted);
}

/* ────────────────────────────────────────────────────────────────
   3. Semantic tokens — Dark mode
   ──────────────────────────────────────────────────────────────── */
[data-bs-theme="dark"] {
    /* Semantic palette */
    --pxt-violet:        rgb(94, 92, 208);
    --pxt-violet-rgb:    94, 92, 208;
    --pxt-blue:          rgb(61, 153, 245);
    --pxt-green:         rgb(34, 151, 65);
    --pxt-amber:         rgb(238, 173, 32);

    /* Body */
    --pxt-body-bg:       #1d222b;
    --pxt-body-bg-rgb:   29, 34, 43;

    /* Text */
    --pxt-text:          rgba(255, 255, 255, 0.9);
    --pxt-text-rgb:      255, 255, 255;
    --pxt-text-muted:    var(--color-gray-400);

    /* Icons */
    --pxt-icon-color:      rgba(255, 255, 255, 0.38);
    --pxt-icon-menu-color: rgba(255, 255, 255, 0.87);

    /* Chrome */
    --pxt-chrome-bg:         #212631;
    --pxt-chrome-text:       rgba(255, 255, 255, 0.87);
    --pxt-chrome-text-muted: rgba(255, 255, 255, 0.50);
    --pxt-chrome-icon:       rgba(255, 255, 255, 0.38);
    --pxt-chrome-icon-menu:  rgba(255, 255, 255, 0.87);

    /* Surfaces & borders */
    --pxt-bg-card:       #171f2f;
    --pxt-card-border:   rgba(255, 255, 255, 0.1);
    --pxt-border:        #323a49;
    --pxt-border-rgb:    50, 58, 73;
    --pxt-border-inner:  #1e2636;
    --pxt-tertiary-bg:   rgba(255, 255, 255, 0.07);

    /* Inputs */
    --pxt-input-border:       #344054;
    --pxt-input-placeholder:  rgba(255, 255, 255, 0.3);
    --pxt-input-focus-border: #252dae;
    --pxt-label-color:        var(--color-gray-400);

    /* Forms */
    --pxt-form-label-color:        var(--color-gray-400);
    --pxt-form-input-bg:           rgba(255, 255, 255, 0.04);
    --pxt-form-input-color:        rgba(255, 255, 255, 0.9);
    --pxt-form-input-border:       #344054;
    --pxt-form-input-focus-border: #252dae;
    --pxt-form-help-color:         rgba(255, 255, 255, 0.4);
    --pxt-form-section-color:      rgba(255, 255, 255, 0.9);
    --pxt-form-hr-color:           #344054;

    /* Tables */
    --pxt-table-head-bg:      #4b3c80;
    --pxt-table-head-color:   #ffffff;
    --pxt-table-sort-icon:    rgba(255, 255, 255, 0.4);
    --pxt-table-sort-icon-on: #ffffff;

    /* Tooltips */
    --pxt-tooltip-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);

    /* Bootstrap 5.3 dark bridge */
    --bs-body-bg:                  #1d222b;
    --bs-body-bg-rgb:              29, 34, 43;
    --bs-body-color:               rgba(255, 255, 255, 0.9);
    --bs-body-color-rgb:           255, 255, 255;
    --bs-border-color:             #323a49;
    --bs-border-color-translucent: rgba(255, 255, 255, 0.1);
    --bs-tertiary-bg:              rgba(255, 255, 255, 0.07);
    --bs-card-bg:                  #171f2f;
    --bs-card-border-color:        rgba(255, 255, 255, 0.1);
    --bs-link-color:               rgb(94, 92, 208);
    --bs-link-color-rgb:           94, 92, 208;
    --bs-secondary-color:          var(--color-gray-400);
}
