/*
 * Material 3 Expressive Design Tokens
 */

:root {
  --md-ref-palette-primary0: #000000;
  --md-ref-palette-primary10: #21005D;
  --md-ref-palette-primary20: #381E72;
  --md-ref-palette-primary30: #4F378B;
  --md-ref-palette-primary40: #6750A4;
  --md-ref-palette-primary50: #7F67BE;
  --md-ref-palette-primary60: #9A82DB;
  --md-ref-palette-primary70: #B69DF8;
  --md-ref-palette-primary80: #D0BCFF;
  --md-ref-palette-primary90: #EADDFF;
  --md-ref-palette-primary95: #F6EDFF;
  --md-ref-palette-primary99: #FFFBFE;
  --md-ref-palette-primary100: #FFFFFF;

  --md-ref-palette-secondary20: #332D41;
  --md-ref-palette-secondary30: #4A4458;
  --md-ref-palette-secondary40: #625B71;
  --md-ref-palette-secondary80: #CCC2DC;
  --md-ref-palette-secondary90: #E8DEF8;
  --md-ref-palette-secondary100: #FFFFFF;

  --md-ref-palette-tertiary20: #492532;
  --md-ref-palette-tertiary30: #633B48;
  --md-ref-palette-tertiary40: #7D5260;
  --md-ref-palette-tertiary80: #EFB8C8;
  --md-ref-palette-tertiary90: #FFD8E4;
  --md-ref-palette-tertiary100: #FFFFFF;

  --md-ref-palette-error20: #690005;
  --md-ref-palette-error30: #8C1D18;
  --md-ref-palette-error40: #B3261E;
  --md-ref-palette-error80: #FFB4AB;
  --md-ref-palette-error90: #F9DEDC;
  --md-ref-palette-error100: #FFFFFF;

  --md-ref-palette-neutral0: #000000;
  --md-ref-palette-neutral4: #0F0D13;
  --md-ref-palette-neutral10: #1D1B20;
  --md-ref-palette-neutral17: #211F26;
  --md-ref-palette-neutral20: #322F35;
  --md-ref-palette-neutral22: #2B2930;
  --md-ref-palette-neutral30: #484649;
  --md-ref-palette-neutral90: #E6E0E9;
  --md-ref-palette-neutral92: #ECE6F0;
  --md-ref-palette-neutral94: #F3EDF7;
  --md-ref-palette-neutral95: #F5EFF7;
  --md-ref-palette-neutral96: #F7F2FA;
  --md-ref-palette-neutral98: #FEF7FF;
  --md-ref-palette-neutral100: #FFFFFF;

  --md-ref-palette-neutral-variant30: #49454F;
  --md-ref-palette-neutral-variant50: #79747E;
  --md-ref-palette-neutral-variant60: #938F99;
  --md-ref-palette-neutral-variant80: #CAC4D0;
  --md-ref-palette-neutral-variant90: #E7E0EC;

  /* ==================== COLOR SYSTEM (LIGHT THEME) ==================== */

  /* Primary */
  --md-sys-color-primary: var(--md-ref-palette-primary40);
  --md-sys-color-on-primary: var(--md-ref-palette-primary100);
  --md-sys-color-primary-container: var(--md-ref-palette-primary90);
  --md-sys-color-on-primary-container: var(--md-ref-palette-primary30);

  /* Secondary */
  --md-sys-color-secondary: var(--md-ref-palette-secondary40);
  --md-sys-color-on-secondary: var(--md-ref-palette-secondary100);
  --md-sys-color-secondary-container: var(--md-ref-palette-secondary90);
  --md-sys-color-on-secondary-container: var(--md-ref-palette-secondary30);

  /* Tertiary */
  --md-sys-color-tertiary: var(--md-ref-palette-tertiary40);
  --md-sys-color-on-tertiary: var(--md-ref-palette-tertiary100);
  --md-sys-color-tertiary-container: var(--md-ref-palette-tertiary90);
  --md-sys-color-on-tertiary-container: var(--md-ref-palette-tertiary30);

  /* Error */
  --md-sys-color-error: var(--md-ref-palette-error40);
  --md-sys-color-on-error: var(--md-ref-palette-error100);
  --md-sys-color-error-container: var(--md-ref-palette-error90);
  --md-sys-color-on-error-container: var(--md-ref-palette-error30);

  /* Background/Surface */
  --md-sys-color-background: var(--md-ref-palette-neutral98);
  --md-sys-color-on-background: var(--md-ref-palette-neutral10);
  --md-sys-color-surface: var(--md-ref-palette-neutral98);
  --md-sys-color-on-surface: var(--md-ref-palette-neutral10);
  --md-sys-color-surface-variant: var(--md-ref-palette-neutral-variant90);
  --md-sys-color-on-surface-variant: var(--md-ref-palette-neutral-variant30);

  /* Surface Containers (Standard M3 Roles) */
  --md-sys-color-surface-container: var(--md-ref-palette-neutral94);
  --md-sys-color-surface-container-lowest: var(--md-ref-palette-neutral100);
  --md-sys-color-surface-container-low: var(--md-ref-palette-neutral96);
  --md-sys-color-surface-container-high: var(--md-ref-palette-neutral92);
  --md-sys-color-surface-container-highest: var(--md-ref-palette-neutral-variant90);

  /* Outlines */
  --md-sys-color-outline: var(--md-ref-palette-neutral-variant50);
  --md-sys-color-outline-variant: var(--md-ref-palette-neutral-variant80);

  /* Scrim and Inverse (Using standard M3 scrim color) */
  --md-sys-color-scrim: var(--md-ref-palette-neutral0); /* M3 scrim is opaque black */
  --md-sys-color-inverse-primary: var(--md-ref-palette-primary80);
  --md-sys-color-inverse-on-primary: var(--md-ref-palette-primary20);
  --md-sys-color-inverse-surface: var(--md-ref-palette-neutral20);
  --md-sys-color-inverse-on-surface: var(--md-ref-palette-neutral95);

  /* ==================== TYPOGRAPHY SYSTEM ==================== */

  --md-sys-typescale-font: 'Source Sans 3 Variable', sans-serif;

  /* Display Large */
  --md-sys-typescale-display-large-font: var(--md-sys-typescale-font);
  --md-sys-typescale-display-large-weight: 400;
  --md-sys-typescale-display-large-size: calc(1rem * 57 / 14);
  --md-sys-typescale-display-large-line-height: calc(1rem * 64 / 14);

  /* Display Medium */
  --md-sys-typescale-display-medium-font: var(--md-sys-typescale-font);
  --md-sys-typescale-display-medium-weight: 400;
  --md-sys-typescale-display-medium-size: calc(1rem * 45 / 14);
  --md-sys-typescale-display-medium-line-height: calc(1rem * 52 / 14);

  /* Display Small */
  --md-sys-typescale-display-small-font: var(--md-sys-typescale-font);
  --md-sys-typescale-display-small-weight: 400;
  --md-sys-typescale-display-small-size: calc(1rem * 36 / 14);
  --md-sys-typescale-display-small-line-height: calc(1rem * 44 / 14);

  /* Headline Large */
  --md-sys-typescale-headline-large-font: var(--md-sys-typescale-font);
  --md-sys-typescale-headline-large-weight: 400;
  --md-sys-typescale-headline-large-size: calc(1rem * 32 / 14);
  --md-sys-typescale-headline-large-line-height: calc(1rem * 40 / 14);

  /* Headline Medium */
  --md-sys-typescale-headline-medium-font: var(--md-sys-typescale-font);
  --md-sys-typescale-headline-medium-weight: 400;
  --md-sys-typescale-headline-medium-size: calc(1rem * 28 / 14);
  --md-sys-typescale-headline-medium-line-height: calc(1rem * 36 / 14);

  /* Headline Small */
  --md-sys-typescale-headline-small-font: var(--md-sys-typescale-font);
  --md-sys-typescale-headline-small-weight: 400;
  --md-sys-typescale-headline-small-size: calc(1rem * 24 / 14);
  --md-sys-typescale-headline-small-line-height: calc(1rem * 32 / 14);

  /* Title Large */
  --md-sys-typescale-title-large-font: var(--md-sys-typescale-font);
  --md-sys-typescale-title-large-weight: 400;
  --md-sys-typescale-title-large-size: calc(1rem * 22 / 14);
  --md-sys-typescale-title-large-line-height: calc(1rem * 28 / 14);

  /* Title Medium */
  --md-sys-typescale-title-medium-font: var(--md-sys-typescale-font);
  --md-sys-typescale-title-medium-weight: 500;
  --md-sys-typescale-title-medium-size: calc(1rem * 16 / 14);
  --md-sys-typescale-title-medium-line-height: calc(1rem * 16 / 14);

  /* Title Small */
  --md-sys-typescale-title-small-font: var(--md-sys-typescale-font);
  --md-sys-typescale-title-small-weight: 500;
  --md-sys-typescale-title-small-size: calc(1rem * 14 / 14);
  --md-sys-typescale-title-small-line-height: calc(1rem * 20 / 14);

  /* Label Large */
  --md-sys-typescale-label-large-font: var(--md-sys-typescale-font);
  --md-sys-typescale-label-large-weight: 550;
  --md-sys-typescale-label-large-size: calc(1rem * 16 / 14);
  --md-sys-typescale-label-large-line-height: calc(1rem * 20 / 14);

  /* Label Medium */
  --md-sys-typescale-label-medium-font: var(--md-sys-typescale-font);
  --md-sys-typescale-label-medium-weight: 500;
  --md-sys-typescale-label-medium-size: calc(1rem * 14 / 14);
  --md-sys-typescale-label-medium-line-height: calc(1rem * 16 / 14);

  /* Label Small */
  --md-sys-typescale-label-small-font: var(--md-sys-typescale-font);
  --md-sys-typescale-label-small-weight: 500;
  --md-sys-typescale-label-small-size: calc(1rem * 12 / 14);
  --md-sys-typescale-label-small-line-height: calc(1rem * 16 / 14);

  /* Body Large */
  --md-sys-typescale-body-large-font: var(--md-sys-typescale-font);
  --md-sys-typescale-body-large-weight: 400;
  --md-sys-typescale-body-large-size: calc(1rem * 16 / 14);
  --md-sys-typescale-body-large-line-height: calc(1rem * 16 / 14);
  --md-sys-typescale-body-large-tracking: calc(1rem * 0.5 / 14);

  /* Body Medium */
  --md-sys-typescale-body-medium-font: var(--md-sys-typescale-font);
  --md-sys-typescale-body-medium-weight: 400;
  --md-sys-typescale-body-medium-size: calc(1rem * 14 / 14);
  --md-sys-typescale-body-medium-line-height: calc(1rem * 20 / 14);

  /* Body Small */
  --md-sys-typescale-body-small-font: var(--md-sys-typescale-font);
  --md-sys-typescale-body-small-weight: 400;
  --md-sys-typescale-body-small-size: calc(1rem * 12 / 14);
  --md-sys-typescale-body-small-line-height: calc(1rem * 16 / 14);


  /* ==================== SHAPE SYSTEM ==================== */
  --md-sys-shape-corner-none: 0px;
  --md-sys-shape-corner-extra-small: 4px;
  --md-sys-shape-corner-extra-small-top: 4px 4px 0px 0px;
  --md-sys-shape-corner-small: 8px;
  --md-sys-shape-corner-medium: 12px;
  --md-sys-shape-corner-large: 16px;
  --md-sys-shape-corner-large-end: 0 16px 16px 0; /* Added for dynamic end-rounding */
  --md-sys-shape-corner-extra-large: 28px;
  --md-sys-shape-corner-extra-large-top: 28px 28px 0px 0px; /* Kept for expressive top surfaces */
  --md-sys-shape-corner-full: 48px;

  /* ==================== MOTION SYSTEM ==================== */

  /* Easing */
  --md-sys-motion-easing-linear: cubic-bezier(0, 0, 1, 1);
  --md-sys-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --md-sys-motion-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1);
  --md-sys-motion-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1);
  --md-sys-motion-easing-emphasized: cubic-bezier(0.2, 0, 0, 1); /* Standard M3 emphasized */
  --md-sys-motion-easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1);
  --md-sys-motion-easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15);

  /* Duration */
  --md-sys-motion-duration-extra-short1: 50ms;
  --md-sys-motion-duration-extra-short2: 100ms;
  --md-sys-motion-duration-short1: 150ms;
  --md-sys-motion-duration-short2: 200ms;
  --md-sys-motion-duration-short3: 225ms;
  --md-sys-motion-duration-medium1: 250ms;
  --md-sys-motion-duration-medium2: 300ms;
  --md-sys-motion-duration-medium3: 350ms;
  --md-sys-motion-duration-medium4: 400ms;
  --md-sys-motion-duration-long1: 450ms;
  --md-sys-motion-duration-long2: 500ms;
  --md-sys-motion-duration-long3: 550ms;
  --md-sys-motion-duration-long4: 600ms;

  /* ==================== ELEVATION SYSTEM ==================== */
  --md-sys-elevation-level0: 0 0 0 0 rgba(0, 0, 0, 0), 0 0 0 0 rgba(0, 0, 0, 0);
  --md-sys-elevation-level1: 0 1px 3px 0 rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30);
  --md-sys-elevation-level2: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30);
  --md-sys-elevation-level3: 0 4px 8px 3px rgba(0, 0, 0, 0.15), 0 1px 3px 0 rgba(0, 0, 0, 0.30);
  --md-sys-elevation-level4: 0 6px 10px 4px rgba(0, 0, 0, 0.15), 0 2px 3px 0 rgba(0, 0, 0, 0.30);
  --md-sys-elevation-level5: 0 8px 12px 6px rgba(0, 0, 0, 0.15), 0 4px 4px 0 rgba(0, 0, 0, 0.30);

  /* ==================== STATE SYSTEM ==================== */
  --md-sys-state-hover-state-layer-opacity: 0.08;
  --md-sys-state-focus-state-layer-opacity: 0.12;
  --md-sys-state-pressed-state-layer-opacity: 0.12;
  --md-sys-state-dragged-state-layer-opacity: 0.16;

  /* ==================== CUSTOM ACCOUNT COLORS ==================== */
  /* Asset / Debit */
  --md-sys-color-custom-asset-container: #E3F2FD;
  --md-sys-color-custom-on-asset-container: #1565C0;

  /* Liability / Credit */
  --md-sys-color-custom-liability-container: #FCE4EC;
  --md-sys-color-custom-on-liability-container: #C2185B;

  /* Equity / Posting */
  --md-sys-color-custom-equity-container: #E8F5E9;
  --md-sys-color-custom-on-equity-container: #2E7D32;

  /* Revenue / Control */
  --md-sys-color-custom-revenue-container: #FFF3E0;
  --md-sys-color-custom-on-revenue-container: #E65100;

  /* Expense */
  --md-sys-color-custom-expense-container: #FFEBEE;
  --md-sys-color-custom-on-expense-container: #C62828;

  /* Active Status (uses Equity container) */
  --md-sys-color-custom-on-active-container: #1B5E20;

  /* ==================== DENSITY ==================== */
  --md-sys-density: 0;
}

/* ==================== DARK THEME ==================== */
@media (prefers-color-scheme: dark) {
  :root {
    /* Primary Colors - Dark theme */
    --md-sys-color-primary: var(--md-ref-palette-primary80);
    --md-sys-color-on-primary: var(--md-ref-palette-primary20);
    --md-sys-color-primary-container: var(--md-ref-palette-primary30);
    --md-sys-color-on-primary-container: var(--md-ref-palette-primary90);

    /* Secondary Colors */
    --md-sys-color-secondary: var(--md-ref-palette-secondary80);
    --md-sys-color-on-secondary: var(--md-ref-palette-secondary20);
    --md-sys-color-secondary-container: var(--md-ref-palette-secondary30);
    --md-sys-color-on-secondary-container: var(--md-ref-palette-secondary90);

    /* Tertiary Colors */
    --md-sys-color-tertiary: var(--md-ref-palette-tertiary80);
    --md-sys-color-on-tertiary: var(--md-ref-palette-tertiary20);
    --md-sys-color-tertiary-container: var(--md-ref-palette-tertiary30);
    --md-sys-color-on-tertiary-container: var(--md-ref-palette-tertiary90);

    /* Error Colors */
    --md-sys-color-error: var(--md-ref-palette-error80);
    --md-sys-color-on-error: var(--md-ref-palette-error20);
    --md-sys-color-error-container: var(--md-ref-palette-error30);
    --md-sys-color-on-error-container: var(--md-ref-palette-error90);

    /* Neutral Surfaces - Dark (Using Neutral and Neutral Variant palette) */
    --md-sys-color-background: var(--md-ref-palette-neutral10);
    --md-sys-color-on-background: var(--md-ref-palette-neutral90);
    --md-sys-color-surface: var(--md-ref-palette-neutral10);
    --md-sys-color-on-surface: var(--md-ref-palette-neutral90);
    --md-sys-color-surface-variant: var(--md-ref-palette-neutral-variant30);
    --md-sys-color-on-surface-variant: var(--md-ref-palette-neutral-variant80);

    /* Surface Containers - Dark (Standard M3 Roles) */
    --md-sys-color-surface-container: var(--md-ref-palette-neutral17);
    --md-sys-color-surface-container-lowest: var(--md-ref-palette-neutral4);
    --md-sys-color-surface-container-low: var(--md-ref-palette-neutral10);
    --md-sys-color-surface-container-high: var(--md-ref-palette-neutral22);
    --md-sys-color-surface-container-highest: var(--md-ref-palette-neutral30);
    
    /* Outlines */
    --md-sys-color-outline: var(--md-ref-palette-neutral-variant60);
    --md-sys-color-outline-variant: var(--md-ref-palette-neutral-variant30);

    /* Scrim and Inverse (Using standard M3 values) */
    --md-sys-color-scrim: var(--md-ref-palette-neutral0);
    --md-sys-color-inverse-primary: var(--md-ref-palette-primary40);
    --md-sys-color-inverse-on-primary: var(--md-ref-palette-primary100);
    --md-sys-color-inverse-surface: var(--md-ref-palette-neutral90);
    --md-sys-color-inverse-on-surface: var(--md-ref-palette-neutral20);
  }
}
