/* Charger après tokens.css. Classes pf-* opt-in ; pas de reset global. */
.pf-root, .pf-root * { box-sizing: border-box; }
.pf-root { margin: 0; color: var(--pf-color-text); background: var(--pf-color-canvas); font: var(--pf-text-body)/var(--pf-leading) var(--pf-font-body); }
.pf-root [hidden] { display: none !important; }
.pf-root :focus-visible { outline: var(--pf-focus-width) solid var(--pf-color-focus); outline-offset: 3px; }
.pf-root :target { scroll-margin-block: var(--pf-space-8); }
.pf-root h1 { font-size: var(--pf-text-title); line-height: 1.12; letter-spacing: -.04em; margin: var(--pf-space-2) 0 var(--pf-space-4); }
.pf-root h2 { font-size: var(--pf-text-section); line-height: 1.3; margin: 0 0 var(--pf-space-3); }
.pf-root h3 { font-size: var(--pf-text-body); margin: 0 0 var(--pf-space-2); }
.pf-root p { margin: 0 0 var(--pf-space-4); }
.pf-root a { color: var(--pf-color-action); text-underline-offset: .2em; }
.pf-root code { font-family: var(--pf-font-mono); font-size: var(--pf-text-small); overflow-wrap: anywhere; }
.pf-root small, .pf-small { font-size: var(--pf-text-small); }
.pf-muted { color: var(--pf-color-muted); }
.pf-eyebrow { color: var(--pf-color-muted); font-size: var(--pf-text-small); font-weight: 650; letter-spacing: .1em; text-transform: uppercase; }
.pf-button { display: inline-flex; align-items: center; justify-content: center; gap: var(--pf-space-2); min-height: var(--pf-control-size); padding: var(--pf-space-2) var(--pf-space-4); background: var(--pf-color-surface); border: var(--pf-border-width) solid var(--pf-color-control-border); border-radius: var(--pf-radius-control); color: var(--pf-color-text); font: inherit; font-size: var(--pf-text-label); font-weight: 600; cursor: pointer; text-decoration: none; transition: background-color var(--pf-motion-feedback); }
.pf-button:hover { background: var(--pf-color-subtle); }
.pf-button:active { border-color: var(--pf-color-text); }
.pf-button[aria-pressed=true] { background: var(--pf-color-selection); color: var(--pf-color-action); border-color: var(--pf-color-action); }
.pf-button--primary { background: var(--pf-color-action); color: var(--pf-color-on-action); border-color: var(--pf-color-action); }
.pf-button--primary:hover { background: var(--pf-color-action-hover); }
.pf-button:disabled { color: var(--pf-color-muted); background: var(--pf-color-subtle); border-style: dashed; cursor: not-allowed; }
.pf-nav { display: flex; gap: var(--pf-space-2); flex-wrap: wrap; }
.pf-nav a { padding: var(--pf-space-3) var(--pf-space-4); min-height: var(--pf-control-size); color: var(--pf-color-muted); text-decoration: none; border-bottom: 3px solid transparent; }
.pf-nav a[aria-current=page] { color: var(--pf-color-action); border-color: var(--pf-color-action); font-weight: 700; }
.pf-field { display: grid; gap: var(--pf-space-2); font-size: var(--pf-text-label); font-weight: 600; }
.pf-input { width: 100%; min-height: var(--pf-control-size); min-width: 0; border: var(--pf-border-width) solid var(--pf-color-control-border); border-radius: var(--pf-radius-control); padding: var(--pf-space-2) var(--pf-space-3); font: inherit; font-weight: 400; background: var(--pf-color-surface); color: var(--pf-color-text); }
.pf-input[aria-invalid=true] { border: 2px solid var(--pf-color-error); }
.pf-field-error { color: var(--pf-color-error); font-size: var(--pf-text-label); }
.pf-panel { background: var(--pf-color-surface); border: var(--pf-border-width) solid var(--pf-color-border); border-radius: var(--pf-radius-panel); min-width: 0; }
.pf-panel-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--pf-space-3); padding: var(--pf-space-6); border-bottom: var(--pf-border-width) solid var(--pf-color-border); }
.pf-panel-head h2, .pf-panel-head p { margin: 0; }
.pf-pad { padding: var(--pf-space-6); }
.pf-badge { display: inline-flex; align-items: center; gap: var(--pf-space-1); padding: var(--pf-space-1) var(--pf-space-2); border-radius: var(--pf-radius-control); font-size: var(--pf-text-small); font-weight: 600; background: var(--pf-color-subtle); color: var(--pf-color-text); max-width: 100%; }
.pf-badge--origin { background: var(--pf-color-origin-bg); color: var(--pf-color-origin); }
.pf-badge--verified { background: var(--pf-color-verified-bg); color: var(--pf-color-verified); }
.pf-badge--check { background: var(--pf-color-check-bg); color: var(--pf-color-check); }
.pf-badge--approval { background: var(--pf-color-approval-bg); color: var(--pf-color-approval); }
.pf-badge--error { background: var(--pf-color-error-bg); color: var(--pf-color-error); }
.pf-badge--running { background: var(--pf-color-selection); color: var(--pf-color-action); }
.pf-notice { padding: var(--pf-space-4); border-left: 3px solid var(--pf-color-check); background: var(--pf-color-check-bg); color: var(--pf-color-check); border-radius: 0 var(--pf-radius-control) var(--pf-radius-control) 0; }
.pf-notice p:last-child { margin: 0; }
.pf-notice--info { border-color: var(--pf-color-approval); color: var(--pf-color-approval); background: var(--pf-color-approval-bg); }
.pf-notice--error { border-color: var(--pf-color-error); color: var(--pf-color-error); background: var(--pf-color-error-bg); }
.pf-table-wrap { overflow-x: auto; padding: var(--pf-space-2); }
.pf-table { width: 100%; border-collapse: collapse; font-size: var(--pf-text-label); }
.pf-table caption { text-align: left; padding: var(--pf-space-3); color: var(--pf-color-muted); }
.pf-table th { text-align: left; color: var(--pf-color-muted); background: var(--pf-color-canvas); font-weight: 600; }
.pf-table th, .pf-table td { padding: var(--pf-space-3); border-bottom: var(--pf-border-width) solid var(--pf-color-border); vertical-align: top; }
.pf-table tr[data-selected=true] { background: var(--pf-color-selection); }
.pf-table tr[data-selected=true] td:first-child { box-shadow: inset 3px 0 var(--pf-color-action); }
.pf-row-button { text-align: left; justify-content: flex-start; color: var(--pf-color-action); border-color: transparent; padding-inline: var(--pf-space-2); background: transparent; }
.pf-stack { display: grid; gap: var(--pf-space-4); }
.pf-inline { display: flex; gap: var(--pf-space-2); align-items: center; flex-wrap: wrap; }
.pf-state { padding: var(--pf-space-8); text-align: center; }
.pf-skeleton { height: 1rem; background: var(--pf-color-border); border-radius: var(--pf-radius-control); margin: var(--pf-space-3) 0; }
.pf-evidence-image { width: 100%; height: auto; display: block; object-fit: contain; /* jamais filter, recolorisation ou recadrage */ }
.pf-skip { position: absolute; top: -100px; left: var(--pf-space-4); z-index: 10; padding: var(--pf-space-3); background: var(--pf-color-surface); }
.pf-skip:focus { top: var(--pf-space-4); }
@media (prefers-reduced-motion: reduce) { .pf-root { --pf-motion-feedback: 0ms; } }
@media (forced-colors: active) { .pf-root :focus-visible { outline-color: Highlight; } .pf-table tr[data-selected=true] { outline: 2px solid Highlight; } }

/* Diagram legend: shape + label + categorical colour on a light canvas. */
.pf-flow-key { display:inline-block; flex:none; width:1.125rem; height:.875rem; vertical-align:middle; border:1.5px solid var(--pf-flow-ink); background:var(--pf-flow-bg); border-radius:2px; margin-right:var(--pf-space-2); }
.pf-flow-key[data-flow-type=action],.pf-flow-key[data-flow-type=end] { border-radius:6px; }
.pf-flow-key[data-flow-type=decision] { clip-path:polygon(15% 0,85% 0,100% 50%,85% 100%,15% 100%,0 50%); border-radius:0; box-shadow:inset 0 0 0 1px var(--pf-flow-ink); }
.pf-flow-key[data-flow-type=screen] { --pf-flow-bg:var(--pf-flow-screen-bg); --pf-flow-ink:var(--pf-flow-screen-ink); }
.pf-flow-key[data-flow-type=action] { --pf-flow-bg:var(--pf-flow-action-bg); --pf-flow-ink:var(--pf-flow-action-ink); }
.pf-flow-key[data-flow-type=decision] { --pf-flow-bg:var(--pf-flow-decision-bg); --pf-flow-ink:var(--pf-flow-decision-ink); }
.pf-flow-key[data-flow-type=end] { --pf-flow-bg:var(--pf-flow-end-bg); --pf-flow-ink:var(--pf-flow-end-ink); }
.pf-flow-key[data-flow-type=reference] { --pf-flow-bg:var(--pf-flow-reference-bg); --pf-flow-ink:var(--pf-flow-reference-ink); }
.pf-flow-key[data-flow-type=boundary] { --pf-flow-bg:var(--pf-flow-boundary-bg); --pf-flow-ink:var(--pf-flow-boundary-ink); }
.pf-flow-key[data-flow-type=error] { --pf-flow-bg:var(--pf-flow-error-bg); --pf-flow-ink:var(--pf-flow-error-ink); }
