/* Tokens du design system ptasks. Contrat : toute couleur, police, taille, espacement ou rayon
   utilisé par un composant pt-* vient d'ici. Variante retenue le 2026-09-18 : palette, espacements et
   rayons de B, typographie de A. Thème clair seulement, par décision.
   Une couleur par statut (--pt-status-<statut>), par motif d'interruption (--pt-reason-<motif>),
   par flag (--pt-flag-<flag>), par objet (--pt-kind-<spike|idea>), par catégorie de projet
   (--pt-category-<catégorie>), par état de conception
   (--pt-conception-<état>), par type (--pt-type-<TYPE>) et par priorité (--pt-priority-1..5,
   -muted), et une icône pour chacun (--pt-icon-*) : ajouter un statut, un motif, un flag, un
   objet ou un état au script = ajouter sa couleur et son icône ici (harness v3). */

:root {
  --pt-font-body: "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;
  --pt-font-title: var(--pt-font-body);
  --pt-font-mono: "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --pt-size-small: 12px;
  --pt-size-body: 13.5px;
  --pt-size-title: 16px;
  --pt-space-1: 4px;
  --pt-space-2: 8px;
  --pt-space-3: 14px;
  --pt-space-4: 20px;
  --pt-space-5: 28px;
  --pt-space-6: 40px;
  --pt-column-width: 260px;
  --pt-card-padding: var(--pt-space-3);
  --pt-card-gap: var(--pt-space-2);
  --pt-timeline-day: 56px;
  --pt-timeline-slot: 104px;
  --pt-timeline-row: 32px;
  --pt-radius: 10px;
  --pt-radius-pill: 999px;
  --pt-shadow: 0 2px 8px rgba(18, 51, 42, 0.10);
  --pt-scrim: rgba(18, 51, 42, 0.35);

  --pt-bg: #f1f5f3;
  --pt-bg-raised: #ffffff;
  --pt-fg: #12332a;
  --pt-fg-muted: #5f6b68;
  --pt-border: #cfdad5;
  --pt-accent: #0a8f7b;
  --pt-accent-fg: #ffffff;
  --pt-danger: #d63f2f;
  --pt-warning: #ec8a10;
  --pt-ok: #1f9d55;
  --pt-info: #3b8fd6;

  --pt-priority-1: #d63f2f;
  --pt-priority-2: #ec8a10;
  --pt-priority-3: #1f9d55;
  --pt-priority-4: #3b8fd6;
  --pt-priority-5: #6fd0ba;
  --pt-priority-muted: #5f6b68;

  --pt-status-todo: #5f6b68;
  --pt-status-in_progress: #0a8f7b;
  --pt-status-in_review: #2fb59b;
  --pt-status-suspended: #a98fb0;
  --pt-status-closed: #6f8580;

  /* motifs d'une interruption (reason: de suspended) */
  --pt-reason-blocked: #d63f2f;
  --pt-reason-standby: #8a9aa0;
  --pt-reason-deprioritized: #8f5fd6;

  /* flags d'une tâche et objets */
  --pt-flag-complex: #7a5fd6;
  --pt-flag-breaking: #b8244a;
  --pt-kind-spike: #1aa0b5;
  --pt-kind-idea: #d1a53c;
  /* catégories d'un projet de serve --global (/api/projects) */
  --pt-category-customer: #b5561a;
  --pt-category-self: #4a7fb5;
  --pt-category-internal: #6b7280;

  /* état mécanique de la conception (conception.state de /api/state) */
  --pt-conception-to_design: #8a9aa0;
  --pt-conception-designing: #7a8fd6;
  --pt-conception-ready: #2c9ad0;

  /* statuts de sous-tâche : préfixe sub-, même mécanique (pt-fold, pt-badge) qu'un statut de tâche */
  --pt-status-sub-proposed: #d1a53c;
  --pt-status-sub-in-scope: #0a8f7b;
  --pt-status-sub-rejected: #6f8580;
  --pt-status-sub-promoted: #2c9ad0;
  --pt-status-sub-done: #6f8580;

  /* états d'étape d'un plan découpé : préfixe step-, même mécanique que sub- */
  --pt-status-step-todo: #6f8580;
  --pt-status-step-in_progress: #0a8f7b;
  --pt-status-step-done: #2c9ad0;

  /* sortes d'éléments de l'onglet « Éléments » : préfixe el-, même mécanique (pt-fold) */
  --pt-status-el-exigence: #3b8fd6;
  --pt-status-el-critere: #1f9d55;
  --pt-status-el-decision: #8657d8;
  --pt-status-el-question: #ec8a10;
  --pt-status-el-revue: #b8244a;
  --pt-status-el-subtask: #d1a53c;
  --pt-status-el-devlog: #66746f;
  --pt-el-deleted-opacity: 0.5;   /* élément supprimé : visible, atténué, barré */

  /* signal cov? : couverture du plan incomplète */
  --pt-signal-cov: var(--pt-warning);

  --pt-type-FEAT: #1f9d55;
  --pt-type-FIX: #d63f2f;
  --pt-type-REFA: #3b8fd6;
  --pt-type-DOC: #8657d8;
  --pt-type-CHORE: #66746f;
  --pt-type-HOTFIX: #b8244a;
  --pt-type-SP: var(--pt-kind-spike);

  /* Icônes : un glyphe par bande de phase, statut, motif, flag, objet et état de conception, posé
     par les badges (pt-badge kind=status|reason|flag|kind|conception) et les en-têtes (pt-fold,
     bandes de pt-phases) en ::before.
     Glyphes texte, monochromes, pour hériter de la couleur du badge ; \FE0E force la présentation
     texte des symboles qui ont une variante emoji. Alternatives à tester en commentaire. */
  --pt-icon-band-todo: "○";
  --pt-icon-band-in_progress: "◐";
  --pt-icon-band-done: "●";

  --pt-icon-status-todo: "○";
  --pt-icon-status-in_progress: "▶\FE0E"; /* alt : "⟳", "◐" */
  --pt-icon-status-in_review: "◎";      /* alt : "👁\FE0E", "⚖\FE0E" */
  --pt-icon-status-suspended: "⏸\FE0E"; /* les deux barres ; alt : "‖" */
  --pt-icon-status-closed: "✓";         /* alt : "✔\FE0E", "■" */

  --pt-icon-reason-blocked: "⊘";        /* sens interdit ; alt : "⛔\FE0E", "⦸" */
  --pt-icon-reason-standby: "…";        /* alt : "⏾", "☾" */
  --pt-icon-reason-deprioritized: "↓";  /* alt : "⇣", "❄" */

  --pt-icon-flag-complex: "◇";          /* alt : "✦", "⚙\FE0E" */
  --pt-icon-flag-breaking: "⚠\FE0E";    /* alt : "⚡\FE0E", "‼" */
  --pt-icon-kind-spike: "⚗\FE0E";       /* alambic ; alt : "🧪", "⌕" */
  --pt-icon-kind-idea: "✧";             /* alt : "💡", "☼" */
  --pt-icon-category-customer: "◍";   /* client ; alt : "◎", "⌂" */
  --pt-icon-category-self: "●";       /* personnel ; alt : "◉" */
  --pt-icon-category-internal: "◆";   /* interne ; alt : "◇" */

  --pt-icon-conception-to_design: "○";
  --pt-icon-conception-designing: "✎";  /* alt : "✐" */
  --pt-icon-conception-ready: "⚑";      /* plan validé ; alt : "◆" */

  --pt-icon-status-sub-proposed: "?";
  --pt-icon-status-sub-in-scope: "↳";
  --pt-icon-status-sub-rejected: "✕";
  --pt-icon-status-sub-promoted: "↗";
  --pt-icon-status-sub-done: "✓";

  --pt-icon-status-step-todo: "○";
  --pt-icon-status-step-in_progress: "◐";
  --pt-icon-status-step-done: "●";

  --pt-icon-status-el-exigence: "◈";
  --pt-icon-status-el-critere: "☑\FE0E";
  --pt-icon-status-el-decision: "⚖\FE0E";
  --pt-icon-status-el-question: "?";
  --pt-icon-status-el-revue: "✎";
  --pt-icon-status-el-subtask: "↳";
  --pt-icon-status-el-devlog: "☰";
  --pt-icon-signal-cov: "◔";
}

/* Densité compacte : vue d'ensemble. Posée par la page (data-density="compact" sur <html>),
   mémorisée par le navigateur ; Storybook la bascule depuis sa barre d'outils. Seuls les tokens
   changent, aucun composant ne teste l'attribut. */
:root[data-density="compact"] {
  --pt-size-body: 12.5px;
  --pt-size-title: 13.5px;
  --pt-size-small: 11px;
  --pt-space-2: 6px;
  --pt-space-3: 8px;
  --pt-space-4: 12px;
  --pt-space-5: 16px;
  --pt-space-6: 24px;
  --pt-radius: 6px;
  --pt-column-width: 220px;
  --pt-card-padding: 6px 8px;
  --pt-card-gap: 4px;
  --pt-timeline-day: 44px;
  --pt-timeline-slot: 84px;
  --pt-timeline-row: 26px;
  --pt-shadow: 0 1px 2px rgba(18, 51, 42, 0.10);
}

html, body { background: var(--pt-bg); color: var(--pt-fg); font-family: var(--pt-font-body); font-size: var(--pt-size-body); }
:focus-visible { outline: 2px solid var(--pt-accent); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }
