/* GENERATED BUNDLE — do not edit. Concatenation of fonts+colors+typography+spacing+motion
   token files, so the DS shell loads ONE token request instead of 5 serial @imports.
   Regenerate if a tokens/*.css source changes. */
/* Tahseeel webfonts — Latin: Schibsted Grotesk (variable), Arabic: IBM Plex Sans Arabic (static) */
@font-face {
  font-family: "Schibsted Grotesk";
  src: url("../fonts/SchibstedGrotesk-VF.ttf") format("truetype-variations");
  font-weight: 400 900;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  src: url("../fonts/IBMPlexSansArabic-Regular.ttf") format("truetype");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  src: url("../fonts/IBMPlexSansArabic-Medium.ttf") format("truetype");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  src: url("../fonts/IBMPlexSansArabic-SemiBold.ttf") format("truetype");
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: "IBM Plex Sans Arabic";
  src: url("../fonts/IBMPlexSansArabic-Bold.ttf") format("truetype");
  font-weight: 700;
  font-display: swap;
}

/* Tahseeel color tokens — source: Design/extracted/HANDOFF.md + lib/Theme/ds/ds_colors.dart */
:root {
  /* Brand (identical in both modes) */
  --navy: #2A3747;            /* hero card, primary buttons, selected chips */
  --accent: #F0536B;          /* money actions, active tab, FAB, focus rings */

  /* Light mode (default) */
  --canvas: #F3F4F6;          /* scaffold background */
  --surface: #FFFFFF;         /* cards, sheets */
  --tab-bar: #FFFFFF;         /* bottom tab bar surface */
  --ink: #212B38;             /* primary text */
  --ink-secondary: #5B6470;   /* meta text */
  --ink-tertiary: #8A93A0;    /* labels, captions */
  --success: #0FA972;         /* paid, incoming amounts, money in */
  --warning: #E07C00;         /* unpaid, in review, pending */
  --border: #E4E6EA;          /* field borders */
  --divider: #F0F1F3;         /* row separators */
  --card-border: transparent; /* dark mode uses a hairline instead of shadow */
  --scrim: rgba(33, 43, 56, 0.35);

  /* 10%-tint chip / icon-tile backgrounds */
  --accent-tint: rgba(240, 83, 107, 0.10);
  --navy-tint: rgba(42, 55, 71, 0.07);
  --success-tint: rgba(15, 169, 114, 0.10);
  --warning-tint: rgba(224, 124, 0, 0.10);

  /* Semantic aliases */
  --text-body: var(--ink);
  --text-meta: var(--ink-secondary);
  --text-caption: var(--ink-tertiary);
  --surface-card: var(--surface);
  --money-in: var(--success);
  --money-out: var(--ink);
  --focus-ring: rgba(240, 83, 107, 0.08);

  /* Elevation — light cards get a soft shadow; dark cards a hairline border */
  --card-shadow: 0 1px 2px rgba(33, 43, 56, 0.05);
}

/* Dark mode — apply .t-dark on a container (or html) */
.t-dark,
[data-theme="dark"] {
  --canvas: #1A2330;
  --surface: #242F3E;
  --tab-bar: #141B26;
  --ink: #F2F4F7;
  --ink-secondary: #8D97A5;
  --ink-tertiary: #68727F;
  --success: #3DDC97;
  --warning: #FFB242;
  --border: rgba(255, 255, 255, 0.10);
  --divider: rgba(255, 255, 255, 0.06);
  --card-border: rgba(255, 255, 255, 0.05);
  --success-tint: rgba(61, 220, 151, 0.12);
  --warning-tint: rgba(255, 178, 66, 0.12);
  --card-shadow: none;
}

/* Tahseeel type scale — source: HANDOFF.md §1 Type + lib/Theme/ds/ds_type.dart */
:root {
  --font-latin: "Schibsted Grotesk", sans-serif;
  --font-arabic: "IBM Plex Sans Arabic", sans-serif;

  /* Scale (px sizes; weights via --w-*) */
  --text-display: 800 40px/46px var(--font-latin);      /* balances; ls -0.02em */
  --text-title: 800 26px/1.15 var(--font-latin);        /* screen big titles; ls -0.02em */
  --text-screen-title: 800 20px/1.2 var(--font-latin);  /* nav-bar titles; ls -0.01em */
  --text-card-title: 700 15px/1.3 var(--font-latin);
  --text-body: 500 14.5px/1.4 var(--font-latin);
  --text-meta: 500 12.5px/1.35 var(--font-latin);
  --text-caption: 500 11.5px/1.3 var(--font-latin);     /* absolute minimum 11px */
  --text-field-label: 700 13.5px/1.3 var(--font-latin);
  --text-chip: 700 12px/1 var(--font-latin);
  --text-day-header: 700 12.5px/1.2 var(--font-latin);  /* uppercase, ls 0.06em */
  --text-stat-value: 800 20px/1.15 var(--font-latin);   /* 18–22px, tabular */
  --text-stat-label: 600 11.5px/1.2 var(--font-latin);

  --ls-tight: -0.02em;  /* >= 26px */
  --ls-snug: -0.01em;   /* 15–20px */
}

/* All money and counts use tabular figures */
.t-num { font-variant-numeric: tabular-nums; }

/* Arabic: swap family, cap weights at 700 */
[dir="rtl"] .t-latin-swap, .t-arabic { font-family: var(--font-arabic); }

/* Tahseeel shape & spacing — source: HANDOFF.md §1 + lib/Theme/ds/ds_dimens.dart */
:root {
  /* Radius */
  --radius-field: 15px;   /* fields & buttons 14–16 */
  --radius-card: 18px;    /* cards 16–20; default token 18 */
  --radius-pill: 999px;   /* chips, pills */
  --radius-sheet: 28px;   /* bottom-sheet top radius */
  --radius-icon-tile: 12px;

  /* Spacing */
  --space-screen: 20px;   /* screen padding */
  --space-card: 18px;     /* card padding 16–24 */
  --gap-4: 4px;
  --gap-8: 8px;
  --gap-12: 12px;
  --gap-16: 16px;
  --gap-20: 20px;
  --gap-24: 24px;

  /* Sizes */
  --size-row-min: 52px;      /* list row min-height */
  --size-field: 54px;        /* field height */
  --size-button: 56px;       /* primary button height */
  --size-icon-tile: 42px;    /* list-row icon tile */
  --size-fab: 56px;          /* center tab FAB */
  --size-hit: 44px;          /* minimum hit target */
}

/* Tahseeel motion — source: HANDOFF.md §5 */
:root {
  --ease-sheet: cubic-bezier(0.32, 0.72, 0, 1); /* @kind other */ /* bottom sheets, 320ms */
  --ease-pop: cubic-bezier(0.34, 1.56, 0.64, 1); /* @kind other */ /* success check pop, 500ms */
  --dur-sheet: 320ms; /* @kind other */
  --dur-scrim: 200ms; /* @kind other */
  --dur-countup: 600ms; /* @kind other */ /* balance count-up, ease-out */
  --dur-expand: 250ms; /* @kind other */ /* row expand, ease */
  --dur-tab: 150ms; /* @kind other */ /* tab cross-fade */
  --dur-press: 100ms; /* @kind other */ /* press scale 0.97 */
  --shimmer-loop: 1.4s; /* @kind other */ /* skeleton shimmer */
}

@keyframes t-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
@keyframes t-pop { 0% { transform: scale(0.4); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
