/* Design tokens — int-specs/design-system/lab/lab.css L0 + L1, verbatim except the two marked L0 lines.
   A second app changes only the L0 block. Read by components.css and the app's own CSS. Generated once by DS-B WP-0; edit by hand from here on. */
/* ===== L0 THEME — a second app changes only this block ======================= */
:root {
  --font: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;

  --c-primary: #1A3A5C;  --c-primary-ink: #fff;
  --c-accent:  #3A7A9E;  --c-accent-ink:  #fff;
  --c-neutral: #374151;  --c-neutral-ink: #fff;
  --c-secondary: #162B44; --c-secondary-ink: #fff;   /* vedajato: the sidebar's deeper navy */

  /* grey ladder: one hue (the ink's), ten steps. No pure white, no pure black. */
  --g-0:   #FBFCFE;   /* cards, inputs                    */
  --g-50:  #F4F6FA;   /* zebra row, hover                 */
  --g-100: #EDF1F7;   /* app background, table header     */
  --g-200: #D0D7E3;   /* borders, dividers                */
  --g-300: #AEB8C8;   /* disabled border, placeholder     */
  --g-400: #8792A6;   /* icons at rest                    */
  --g-500: #65718A;   /* captions on g-0 only (5.0:1)     */
  --g-600: #4A5569;   /* labels, captions (6.5:1 on g-100)*/
  --g-700: #333C4D;   /* secondary values                 */
  --g-800: #1F2634;   /* toast background                 */
  --g-900: #0B111C;   /* text                             */
  --c-bg:   var(--g-0);   --c-bg-2: var(--g-100);  --c-line: var(--g-200);  --c-ink: var(--g-900);

  --c-info: #2563EB;    --c-info-soft:    #DBEAFE;   --c-info-text: #1E40AF;   /* info alert text on the soft fill (was blue-800) */
  --c-success: #166534; --c-success-soft: #DCFCE7;
  --c-warning: #9A3412; --c-warning-soft: #FEF3C7;
  --c-error: #991B1B;   --c-error-soft:   #FEE2E2;
  --c-info-ink: #fff; --c-success-ink: #fff; --c-warning-ink: #fff; --c-error-ink: #fff;   /* text on a filled status */

  --radius: 4px;          /* vedajato = 4 (decided 2026-10-10); 0 or 8 are the other sane values */
  --shadow-rest:  0 1px 2px rgb(11 17 28 / .06);                                   /* card on g-100   */
  --shadow-raise: 0 1px 3px rgb(11 17 28 / .08), 0 6px 16px rgb(11 17 28 / .08);   /* menu, hover     */
  --shadow-float: 0 8px 24px rgb(11 17 28 / .16), 0 1px 2px rgb(11 17 28 / .08);   /* dialog, toast   */
}

/* ===== L1 FOUNDATIONS — shared by every app ================================== */
:root {
  /* text tiers come from the ladder, not from opacity */
  --ink-2: var(--g-700);   /* secondary values  */
  --ink-3: var(--g-600);   /* labels, captions  */

  /* type: 28 / 20 / 16 / 14 / 12 — weights 400 600 700 only. micro = caption's 12 px at every width (D5, mobile-consistency
     2026-10-22: nothing under 12 px on any screen); it differs by role (600, caps + tracking from 1024), not by size */
  --t-display: 28px; --t-title: 20px; --t-body: 16px;
  --t-label: 14px;   --t-caption: 12px; --t-micro: 12px;
  --lh-tight: 1.25; --lh-body: 1.5;

  /* spacing: 4 8 12 16 24 32 48 */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px; --s7: 48px;

  /* control sizes: S chrome · M forms (desktop) · L touch (phone) */
  --ctl-s: 32px; --ctl-m: 40px; --ctl-l: 48px;
  --ctl: var(--ctl-l);                 /* phone default: every control is L  */
  --row: 56px;                         /* phone list row                      */
  --check: 24px;                       /* checkbox/radio box: WCAG 2.2 target */
  --list-actions-w: calc(2 * var(--ctl-s) + 2 * var(--s1));   /* a list's AÇÕES track: the rowActions pencil + trash and the cell's inset (F1/D5), and the widest the header word (Ações/Actions, 14px) needs — so a ⋮-only list takes the same track, not a wider rem (L1 round 2) */
  --dot: 10px;                         /* attribution dot: agenda card corner, legend swatch */
  --thumb: 96px;                       /* photo strip tile (Media.kt photoStrip)             */
  --agenda-cascade: .35;               /* hour grid: a later overlapping card indents this share of the column per step */
  --agenda-slot: 32px;                 /* hour grid: one 30-min row — a 1 h card (no visita is shorter) holds time + name + a full
                                          wrapped endereço at 1920 without growing (was 24px); growth is the fallback for more */

  /* widths */
  --w-sidebar: 208px; --w-sidebar-min: 80px; --w-rail: 192px;
  --w-detail: 1152px; --w-form: 880px;
  --w-sheet: 480px; --w-sheet-wide: 720px; /* dialog.sheet as a centred card (≥1024); .is-wide for a long pick list */
  --h-topbar: 48px; --h-bottomnav: 64px; --fab: 56px;

  /* z ladder. The shell's stacking order, bottom to top: sticky bars 10 · back-to-top / FAB 20 (--z-topbar) · drawer scrim 30
     (--z-fab) · drawer 40 · top bar, bottom nav, search panel, no-dialog fallback 50 (--z-dialog) · skip link on focus 60 ·
     toast 1100, above Leaflet's controls (1000). The names are the lab's; the values are what the shell has always used. */
  --z-sticky: 10; --z-topbar: 20; --z-fab: 30; --z-drawer: 40; --z-dialog: 50; --z-toast: 1100;

  --focus: 0 0 0 2px var(--c-bg), 0 0 0 4px var(--c-primary);
  --scrim: rgb(11 17 28 / .4);         /* behind a dialog or the drawer (lab dialog.sheet::backdrop) */
}
@media (min-width: 1024px) {
  :root { --ctl: var(--ctl-m); --row: 44px; --check: 20px; }   /* desktop: forms M, rows 44, checks 20 */
}
/* Touch at desktop width (tablet landscape, touch laptop): the finger, not the layout, sets the target — controls stay L,
   checks stay 24 (user 2026-10-13). The layout is still desktop; only target sizes keep the phone values. */
@media (min-width: 1024px) and (pointer: coarse) { :root { --ctl: var(--ctl-l); --check: 24px; } }

