/* ==========================================================================
   Pro Re Nata — Feuille de style principale
   Style : Apple Health (clean, minimal, généreux en blanc)
   Palette : alignée sur le gradient du logo (navy → teal → aqua → emerald)
   Mode : light + dark via [data-theme="dark"] sur <html>
   ========================================================================== */

/* ==========================================================================
   Polices auto-hébergées (Inter + Lora, variables, sous-ensemble latin)
   --------------------------------------------------------------------------
   Inter porte tout l'UI (corps, libellés, données, boutons) ; Lora signe les
   titres de section et l'ordonnance (contraste sérif/sans-sérif). Fichiers
   locaux → aucun appel réseau, fonctionne hors-ligne (PWA). font-display:swap
   affiche d'abord la pile système puis substitue sans bloquer le rendu.
   ========================================================================== */
@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../assets/fonts/inter-latin-wght-normal.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Inter";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../assets/fonts/inter-latin-ext-wght-normal.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
        U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
        U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
        U+A720-A7FF;
}
@font-face {
    font-family: "Lora";
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url("../assets/fonts/lora-latin-wght-normal.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Lora";
    font-style: italic;
    font-weight: 400 700;
    font-display: swap;
    src: url("../assets/fonts/lora-latin-wght-italic.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root, [data-theme="light"] {
    /* ── Palette logo (référence, ne change pas selon le thème) ── */
    --logo-navy:    #0f2d4e;
    --logo-teal:    #0e6d8a;
    --logo-aqua:    #0ea5a4;
    --logo-emerald: #15806e;

    /* ── Couleurs sémantiques (light mode — défaut) ── */
    --prn-navy:        #0f2d4e;
    --prn-blue:        #0e6d8a;       /* aligné teal logo */
    --prn-blue-2:      #0ea5a4;       /* aligné aqua logo */
    --prn-blue-light:  #e6f4f6;
    --prn-teal:        #0ea5a4;
    --prn-teal-strong: #086c6b;  /* WCAG AA : 4.5:1 sur fond teal-light (Sprint 6 M5 R1) */
    --prn-teal-light:  #ddf5f1;
    --prn-accent:      #15806e;       /* emerald logo (CTA secondaire) */

    /* Texte */
    --prn-ink:        #0a1628;
    --prn-ink-soft:   #44505f;
    --prn-muted:      #5d6877;  /* WCAG AA : 4.5:1 sur fond blanc/surface (Sprint 6 M5 R1) */

    /* Surfaces (Apple Health style — beaucoup de blanc, peu de gris) */
    --prn-bg:         #f5f7f9;
    --prn-bg-alt:     #ffffff;
    --prn-surface:    #ffffff;
    --prn-surface-2:  #fafbfc;
    --prn-line:       #e5e9ee;
    --prn-line-soft:  #eef1f4;

    /* Statuts */
    --prn-warning:    #b45309;
    --prn-warning-bg: #fef3c7;
    --prn-danger:     #b91c1c;
    --prn-danger-bg:  #fee2e2;
    --prn-danger-bg-soft: #fff5f5;
    --prn-success:    #0f6b5c;  /* WCAG AA : 5.0:1 sur --prn-success-bg (Sprint 6 M5 R1) — était #15806e (4.23:1) */
    --prn-success-bg: #ddf5f1;

    /* ── Tokens d'interaction (hover/selected) ── unifie tout le module
       voyage/nv/oxyures/perinatal pour adaptation auto au thème. */
    --prn-int-hover-bg:     #eef6f3;       /* fond légèrement teal sur hover */
    --prn-int-hover-border: #238c74;       /* bordure teal medium sur hover */
    --prn-int-selected-bg:  #eef6f3;       /* identique hover-bg en light */
    --prn-int-selected-border: #1a6b5a;    /* bordure teal foncé sur sélection */
    --prn-int-strong:       #1a6b5a;       /* checkbox/radio rempli, accent teal */
    --prn-int-strong-on:    #ffffff;       /* texte/icône sur fond strong */
    --prn-int-text:         #1a6b5a;       /* texte d'un état sélectionné */

    /* Risques (utilisés voyage) */
    --prn-risk-high:  #b91c1c;
    --prn-risk-mod:   #b45309;
    --prn-risk-low:   #a16207;
    --prn-risk-none:  #15806e;

    /* ── Typographie (Inter + Lora auto-hébergés, fallback système Apple-first) ── */
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text',
                 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --font-serif: 'Lora', 'New York', Georgia, 'Times New Roman', serif;
    --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;

    /* ── Géométrie (radius plus généreux, façon Apple) ── */
    --radius-sm: 8px;
    --radius:    12px;
    --radius-lg: 16px;
    --radius-xl: 22px;

    /* ── Ombres (très subtiles, layered depth) ── */
    --shadow-xs: 0 1px 2px rgba(15, 45, 78, 0.04);
    --shadow-sm: 0 2px 6px rgba(15, 45, 78, 0.06), 0 1px 2px rgba(15, 45, 78, 0.04);
    --shadow:    0 6px 16px rgba(15, 45, 78, 0.08), 0 2px 4px rgba(15, 45, 78, 0.04);
    --shadow-lg: 0 18px 40px rgba(15, 45, 78, 0.12), 0 4px 8px rgba(15, 45, 78, 0.06);
    --shadow-xl: 0 32px 64px rgba(15, 45, 78, 0.16);

    /* Glow (utilisé sur focus / hover discret) */
    --glow-teal: 0 0 0 4px rgba(14, 165, 164, 0.14);

    /* ── Animation (Apple ease-out cubic) ── */
    --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
    --t-fast: 120ms;
    --t-base: 200ms;
    --t-slow: 360ms;

    /* Gradient signature (logo capsule) — réutilisable pour CTA, badges, headers */
    --grad-logo: linear-gradient(135deg, var(--logo-navy) 0%, var(--logo-teal) 45%, var(--logo-aqua) 75%, var(--logo-emerald) 100%);
    --grad-soft: linear-gradient(135deg, rgba(14,109,138,0.06) 0%, rgba(14,165,164,0.06) 100%);

    color-scheme: light;
}

/* ── Dark mode (active via [data-theme="dark"] ou prefers-color-scheme)
   Palette adoucie : tons bleu-ardoise chauds (au lieu de noir pur),
   contraste WCAG AA (14:1 pour le texte principal sur le fond),
   accents teal lumineux mais pas saturés à fond. ── */
[data-theme="dark"] {
    --prn-navy:        #e2e8f0;       /* titres : off-white doux, plus reposant */
    --prn-blue:        #6ee0de;
    --prn-blue-2:      #95eceb;
    --prn-blue-light:  rgba(110, 224, 222, 0.10);
    --prn-teal:        #6ee0de;
    --prn-teal-strong: #6ee0de;  /* déjà clair en dark mode — pas besoin de variante */
    --prn-teal-light:  rgba(110, 224, 222, 0.14);
    --prn-accent:      #7dd4ba;

    /* Texte : tons écru/perle, JAMAIS blanc pur (style Apple Reader Mode) */
    --prn-ink:         #d4dae3;       /* corps de texte, ~12:1 (AAA) sans agresser */
    --prn-ink-soft:    #aab3c0;       /* secondaire, ~7.5:1 */
    --prn-muted:       #939fb1;  /* WCAG AA Sprint 6 M5 R2 — était #828c9c (4.23:1 sur #232a38) */       /* tertiaire (légendes, sources) */

    /* Surfaces : bleu-ardoise chaud, layered depth (chaque niveau ~6% plus clair) */
    --prn-bg:          #131822;       /* fond global, pas de noir pur */
    --prn-bg-alt:      #181e29;
    --prn-surface:     #1d2330;       /* cartes, headers */
    --prn-surface-2:   #232a38;       /* surfaces secondaires (search input, etc.) */
    --prn-line:        #2a3242;       /* bordures normales */
    --prn-line-soft:   #232a38;       /* bordures discrètes */

    --prn-warning:     #fcd34d;
    --prn-warning-bg:  rgba(252, 211, 77, 0.12);
    --prn-danger:      #fca5a5;
    --prn-danger-bg:   rgba(252, 165, 165, 0.10);
    --prn-danger-bg-soft: rgba(252, 165, 165, 0.06);
    --prn-success:     #6cc8ad;
    --prn-success-bg:  rgba(108, 200, 173, 0.12);

    /* Tokens interaction : fond hover/selected = teal très désaturé,
       contraste suffisant pour démarquer sans agresser */
    --prn-int-hover-bg:        rgba(95, 212, 210, 0.08);
    --prn-int-hover-border:    rgba(95, 212, 210, 0.45);
    --prn-int-selected-bg:     rgba(95, 212, 210, 0.13);
    --prn-int-selected-border: var(--prn-teal);
    --prn-int-strong:          var(--prn-teal);
    --prn-int-strong-on:       #0d1219;
    --prn-int-text:            var(--prn-blue-2);

    --prn-risk-high:   #fca5a5;
    --prn-risk-mod:    #fcd34d;
    --prn-risk-low:    #fde68a;
    --prn-risk-none:   #6cc8ad;

    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.25);
    --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.28), 0 1px 2px rgba(0, 0, 0, 0.18);
    --shadow:    0 6px 16px rgba(0, 0, 0, 0.36), 0 2px 4px rgba(0, 0, 0, 0.18);
    --shadow-lg: 0 18px 40px rgba(0, 0, 0, 0.44);
    --shadow-xl: 0 32px 64px rgba(0, 0, 0, 0.52);

    --glow-teal: 0 0 0 4px rgba(95, 212, 210, 0.20);

    --grad-soft: linear-gradient(135deg, rgba(95,212,210,0.07) 0%, rgba(108,200,173,0.07) 100%);

    color-scheme: dark;
}

/* Auto dark mode si pas de préférence explicite (mêmes valeurs que [data-theme=dark]) */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --prn-navy:        #e2e8f0;
        --prn-blue:        #6ee0de;
        --prn-blue-2:      #95eceb;
        --prn-blue-light:  rgba(110, 224, 222, 0.10);
        --prn-teal:        #6ee0de;
        --prn-teal-strong: #6ee0de;
        --prn-teal-light:  rgba(110, 224, 222, 0.14);
        --prn-accent:      #7dd4ba;
        --prn-ink:         #d4dae3;
        --prn-ink-soft:    #aab3c0;
        --prn-muted:       #939fb1;  /* WCAG AA Sprint 6 M5 R2 — était #828c9c (4.23:1 sur #232a38) */
        --prn-bg:          #131822;
        --prn-bg-alt:      #181e29;
        --prn-surface:     #1d2330;
        --prn-surface-2:   #232a38;
        --prn-line:        #2a3242;
        --prn-line-soft:   #232a38;
        --prn-warning:     #fcd34d;
        --prn-warning-bg:  rgba(252, 211, 77, 0.12);
        --prn-danger:      #fca5a5;
        --prn-danger-bg:   rgba(252, 165, 165, 0.10);
        --prn-danger-bg-soft: rgba(252, 165, 165, 0.06);
        --prn-success:     #6cc8ad;
        --prn-success-bg:  rgba(108, 200, 173, 0.12);
        --prn-int-hover-bg:        rgba(95, 212, 210, 0.08);
        --prn-int-hover-border:    rgba(95, 212, 210, 0.45);
        --prn-int-selected-bg:     rgba(95, 212, 210, 0.13);
        --prn-int-selected-border: var(--prn-teal);
        --prn-int-strong:          var(--prn-teal);
        --prn-int-strong-on:       #0d1219;
        --prn-int-text:            var(--prn-blue-2);
        --prn-risk-high:   #fca5a5;
        --prn-risk-mod:    #fcd34d;
        --prn-risk-low:    #fde68a;
        --prn-risk-none:   #6cc8ad;
        --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.25);
        --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.28), 0 1px 2px rgba(0, 0, 0, 0.18);
        --shadow:    0 6px 16px rgba(0, 0, 0, 0.36), 0 2px 4px rgba(0, 0, 0, 0.18);
        --shadow-lg: 0 18px 40px rgba(0, 0, 0, 0.44);
        --glow-teal: 0 0 0 4px rgba(95, 212, 210, 0.20);
        color-scheme: dark;
    }
}

/* ── Aliases génériques (consommés par triage.css et suivi.css) ──
   Ces fichiers utilisent un vocabulaire générique (--border, --surface,
   --text, --brand…) jamais défini jusqu'ici : leurs fallbacks CLAIRS
   s'appliquaient donc aussi en mode sombre. On mappe ces noms sur les tokens
   prn-* (qui suivent le thème) ; --accent/--brand gardent le bleu d'origine
   en light et passent à un bleu clair lisible en dark. */
:root {
    --border: var(--prn-line);
    --surface: var(--prn-surface);
    --surface-2: var(--prn-surface-2);
    --text: var(--prn-ink);
    --muted: var(--prn-muted);
    --accent: #2563eb;
    --brand: var(--accent);
    /* Tokens prn-* consommés avec fallback mais jamais définis jusqu'ici
       (hta/hypothyroidie/menopause/dermato) : on les ancre sur le système. */
    --prn-bg-elev: var(--prn-surface-2);
    --prn-text: var(--prn-ink);
    --prn-text-muted: var(--prn-muted);
    --prn-teal-dark: #0d8a78;
}
[data-theme="dark"] { --accent: #93c5fd; --prn-teal-dark: #95eceb; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { --accent: #93c5fd; --prn-teal-dark: #95eceb; }
}

/* Transition globale douce sur les changements de thème (limité aux propriétés visuelles).
   .btn exclu : il a sa propre transition courte sans box-shadow pour éviter
   l'effet de glow qui s'étire au hover. */
html, body, .site-header, .voyage-shell, .feature-card, .prn-step,
.prn-mc, .prn-checkbox, .prn-region-opt, .prn-vacc-card, .prn-pat-card, .prn-pat-section,
.badge, .prn-pill, .prn-chk, input, select, textarea {
    transition: background-color var(--t-base) var(--ease-out),
                border-color var(--t-base) var(--ease-out),
                color var(--t-base) var(--ease-out);
}

/* Reset léger */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
    font-family: var(--font-sans);
    color: var(--prn-ink);
    background: var(--prn-bg);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    /* Inter : a à un étage (cv11) + l à empattement (cv05) → plus net, l≠1≠I */
    font-feature-settings: "cv05" 1, "cv11" 1;
}

a { color: var(--prn-blue); text-decoration: none; transition: color var(--t-fast) var(--ease-out); }
a:hover { color: var(--prn-accent); text-decoration: none; }
img { max-width: 100%; display: block; }

::selection { background: var(--prn-teal-light); color: var(--prn-ink); }

h1, h2, h3, h4 {
    font-family: var(--font-sans);
    color: var(--prn-navy);
    line-height: 1.18;
    margin-top: 0;
    letter-spacing: -0.02em;
    font-weight: 700;
}
h1 { font-size: clamp(2rem, 4.5vw, 2.8rem); letter-spacing: -0.03em; }
h2 { font-size: clamp(1.5rem, 3vw, 1.95rem); margin-bottom: 1rem; }
h3 { font-size: 1.18rem; font-weight: 650; letter-spacing: -0.015em; }
h4 { font-size: 1rem; font-weight: 600; }
p  { margin: 0 0 1rem; color: var(--prn-ink-soft); }

/* Focus visible, style Apple : ring teal + offset */
:focus-visible {
    outline: 2px solid var(--prn-teal);
    outline-offset: 2px;
    border-radius: 4px;
}

.container {
    max-width: 1120px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

/* ==========================================================================
   Header — verre dépoli style Apple
   ========================================================================== */
.site-header {
    background: color-mix(in srgb, var(--prn-surface) 85%, transparent);
    border-bottom: 1px solid var(--prn-line);
    position: sticky;
    top: 0;
    z-index: 50;
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
}
@supports not (backdrop-filter: blur(20px)) {
    .site-header { background: var(--prn-surface); }
}

/* Compense le header sticky pour les scrollIntoView des wizards.
   Sans ça, le scroll laisse l'élément cible derrière le header. */
:root { --prn-header-h: 80px; }
.voyage-shell, .page-header, .voyage-page > .container > * {
    scroll-margin-top: calc(var(--prn-header-h) + 16px);
}
html { scroll-padding-top: calc(var(--prn-header-h) + 16px); }
.header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding-top: 0.85rem;
    padding-bottom: 0.85rem;
}
.brand {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    color: var(--prn-navy);
    /* Empêche le brand de rétrécir (sinon le brand-tag s'écrase contre la nav). */
    flex-shrink: 0;
}
.brand:hover { text-decoration: none; }
.brand-mark {
    height: 36px;
    width: auto;
    display: inline-block;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    flex-shrink: 0;
}
/* Conserve un fallback texte si jamais l'image manque (span avec texte) */
span.brand-mark {
    width: 42px; height: 42px;
    display: inline-flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--prn-blue) 0%, var(--prn-teal) 100%);
    color: #fff;
    border-radius: 10px;
    font-size: 1.4rem;
    font-weight: 700;
}
.brand-text { display: flex; flex-direction: column; line-height: 1.1; white-space: nowrap; }
.brand-name { font-weight: 700; font-size: 1.18rem; letter-spacing: -0.02em; color: var(--prn-navy); }
.brand-tag { font-size: 0.74rem; color: var(--prn-muted); letter-spacing: 0.01em; }
/* Sous 1100 px : on cache la baseline marketing pour libérer de l'espace pour la nav + actions. */
@media (max-width: 1100px) {
    .brand-tag { display: none; }
}

.main-nav {
    display: flex;
    gap: 1.75rem;
}
.main-nav a {
    color: var(--prn-ink-soft);
    font-weight: 500;
    font-size: 0.95rem;
    padding: 0.35rem 0;
    border-bottom: 2px solid transparent;
    transition: color .15s, border-color .15s;
}
.main-nav a:hover { color: var(--prn-blue); text-decoration: none; }
.main-nav a.active {
    color: var(--prn-navy);
    border-bottom-color: var(--prn-teal);
}

.header-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    /* Empêche les actions (recherche, FR/EN, thème, avatar) d'être compressées. */
    flex-shrink: 0;
}

.lang-switch {
    display: inline-flex;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 999px;
    padding: 3px;
}
.lang-switch button {
    border: 0;
    background: transparent;
    color: var(--prn-muted);
    font-weight: 600;
    font-size: 0.78rem;
    padding: 0.3rem 0.85rem;
    border-radius: 999px;
    cursor: pointer;
    font-family: inherit;
    transition: background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);
}
.lang-switch button:hover { color: var(--prn-ink); }
.lang-switch button.active {
    background: var(--logo-teal);
    color: #ffffff;
    box-shadow: none;
}

/* Theme toggle (sun/moon) */
.theme-toggle {
    width: 36px;
    height: 36px;
    border-radius: 999px;
    border: 1px solid var(--prn-line);
    background: var(--prn-surface-2);
    color: var(--prn-ink-soft);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    transition: background var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out),
                transform var(--t-fast) var(--ease-out);
    padding: 0;
    position: relative;
    overflow: hidden;
}
.theme-toggle:hover {
    border-color: var(--prn-teal);
    color: var(--prn-teal);
    transform: scale(1.05);
}
.theme-toggle:active { transform: scale(0.96); }
.theme-toggle svg { width: 16px; height: 16px; transition: transform var(--t-base) var(--ease-spring); }
.theme-toggle .icon-sun { display: inline-block; }
.theme-toggle .icon-moon { display: none; }
[data-theme="dark"] .theme-toggle .icon-sun { display: none; }
[data-theme="dark"] .theme-toggle .icon-moon { display: inline-block; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .theme-toggle .icon-sun { display: none; }
    :root:not([data-theme="light"]) .theme-toggle .icon-moon { display: inline-block; }
}

/* ==========================================================================
   Boutons (Apple Health : épurés, professionnels, sans glow coloré)
   ========================================================================== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.7rem 1.4rem;
    border-radius: 999px;
    font-weight: 600;
    font-size: 0.94rem;
    letter-spacing: -0.01em;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out),
                color var(--t-fast) var(--ease-out),
                opacity var(--t-fast) var(--ease-out);
    font-family: inherit;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    white-space: nowrap;
    line-height: 1.2;
    /* Pas de transform au hover : evite le decalage et les ombres qui depassent */
}
.btn:hover { text-decoration: none; }
.btn:active { opacity: 0.85; }
.btn:disabled, .btn[aria-disabled="true"] {
    opacity: 0.45; cursor: not-allowed;
}

/* Primary : couleur unie teal logo (pas de gradient, pas de glow), look pro */
.btn-primary {
    background: var(--logo-teal);
    color: #ffffff;
    box-shadow: none;
}
.btn-primary:hover { background: var(--logo-aqua); }

/* Variante CTA fort (bandeau hero/cta-band) : gradient subtle reserve aux gros CTA */
.btn-primary.btn-lg {
    background: var(--grad-logo);
}
.btn-primary.btn-lg:hover { filter: brightness(1.06); }

/* Ghost : fond transparent, texte teal, hover background discret */
.btn-ghost {
    background: transparent;
    color: var(--prn-blue);
    border-color: transparent;
}
.btn-ghost:hover { background: var(--prn-teal-light); }

/* Outline : bordure nette, fond surface */
.btn-outline {
    background: var(--prn-surface);
    color: var(--prn-ink);
    border-color: var(--prn-line);
}
.btn-outline:hover {
    border-color: var(--prn-teal);
    color: var(--prn-teal);
    background: var(--prn-surface);   /* pas de leak couleur */
}

.btn-lg { padding: 0.85rem 1.85rem; font-size: 1rem; }
.btn-sm { padding: 0.5rem 1rem; font-size: 0.85rem; }

/* Focus visible : outline teal autour du bouton (pas de box-shadow color spill) */
.btn:focus-visible {
    outline: 2px solid var(--prn-teal);
    outline-offset: 3px;
}

/* ==========================================================================
   Hero (Apple Health : générous, lumineux, halo subtil aligné logo)
   ========================================================================== */
.hero {
    position: relative;
    background:
        radial-gradient(1200px 600px at 85% -15%, color-mix(in srgb, var(--logo-aqua) 14%, transparent), transparent 60%),
        radial-gradient(900px 500px at 5% 10%, color-mix(in srgb, var(--logo-teal) 12%, transparent), transparent 60%),
        radial-gradient(700px 300px at 50% 100%, color-mix(in srgb, var(--logo-emerald) 8%, transparent), transparent 70%),
        linear-gradient(180deg, var(--prn-surface) 0%, var(--prn-bg) 100%);
    padding: 6rem 0 5rem;
    border-bottom: 1px solid var(--prn-line-soft);
    overflow: hidden;
}
.hero-inner { max-width: 860px; position: relative; z-index: 1; }
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--prn-teal-strong);
    background: var(--prn-teal-light);
    padding: 0.4rem 0.95rem;
    border-radius: 999px;
    margin-bottom: 1.25rem;
    animation: fadeUp var(--t-slow) var(--ease-out) both;
}
.hero h1 {
    font-size: clamp(2.2rem, 5vw, 3.4rem);
    letter-spacing: -0.035em;
    font-weight: 700;
    background: var(--grad-logo);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: fadeUp var(--t-slow) var(--ease-out) 60ms both;
}
/* En dark, --grad-logo démarre au navy #0f2d4e : quasi invisible sur #131822
   (ratio ~1.2:1). Variante éclaircie des mêmes teintes pour le titre héro. */
[data-theme="dark"] .hero h1 {
    background: linear-gradient(135deg, #8fb8dd 0%, #6ee0de 45%, #95eceb 75%, #7dd4ba 100%);
    -webkit-background-clip: text;
    background-clip: text;
}
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .hero h1 {
        background: linear-gradient(135deg, #8fb8dd 0%, #6ee0de 45%, #95eceb 75%, #7dd4ba 100%);
        -webkit-background-clip: text;
        background-clip: text;
    }
}
.hero .lead {
    font-size: clamp(1.05rem, 1.8vw, 1.22rem);
    color: var(--prn-ink-soft);
    max-width: 700px;
    margin-top: 1.1rem;
    line-height: 1.5;
    animation: fadeUp var(--t-slow) var(--ease-out) 120ms both;
}
.hero-ctas {
    display: flex; gap: 0.75rem; margin: 2.25rem 0 1.75rem; flex-wrap: wrap;
    animation: fadeUp var(--t-slow) var(--ease-out) 200ms both;
}
.hero-meta {
    display: flex; gap: 0.5rem; flex-wrap: wrap;
    animation: fadeUp var(--t-slow) var(--ease-out) 280ms both;
}
.badge {
    display: inline-flex; align-items: center; gap: 0.45rem;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    padding: 0.4rem 0.9rem;
    border-radius: 999px;
    font-size: 0.78rem;
    color: var(--prn-ink-soft);
    font-weight: 500;
}
.badge .dot {
    width: 7px; height: 7px;
    background: var(--prn-teal);
    border-radius: 50%;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--prn-teal) 20%, transparent);
}

@keyframes fadeUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ==========================================================================
   Features (Apple Health : cartes généreuses, hover discret)
   ========================================================================== */
.features { padding: 5rem 0; }
.features h2 {
    text-align: center;
    margin-bottom: 2.75rem;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
}
.feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.25rem;
}
.feature-card {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line-soft);
    border-radius: var(--radius-lg);
    padding: 1.85rem 1.6rem;
    transition: transform var(--t-base) var(--ease-out),
                box-shadow var(--t-base) var(--ease-out),
                border-color var(--t-base) var(--ease-out);
    position: relative;
    overflow: hidden;
}
.feature-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--grad-soft);
    opacity: 0;
    transition: opacity var(--t-base) var(--ease-out);
    pointer-events: none;
    border-radius: inherit;
}
.feature-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg);
    border-color: color-mix(in srgb, var(--prn-teal) 25%, transparent);
}
.feature-card:hover::before { opacity: 1; }
.feature-card > * { position: relative; z-index: 1; }

.feature-icon {
    width: 48px; height: 48px;
    border-radius: 14px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--grad-soft);
    color: var(--prn-teal);
    margin-bottom: 1.1rem;
    transition: transform var(--t-base) var(--ease-spring);
}
/* Icône feature card : pas de rotation/scale au hover — uniquement un fond plus dense */
.feature-card:hover .feature-icon {
    background: color-mix(in srgb, var(--prn-teal) 18%, transparent);
}
.feature-icon svg { width: 24px; height: 24px; stroke-linecap: round; stroke-linejoin: round; }
.feature-card h3 { margin: 0 0 0.45rem; color: var(--prn-navy); }
.feature-card p { color: var(--prn-ink-soft); font-size: 0.93rem; margin: 0; }

/* ==========================================================================
   CTA band — bandeau gradient logo
   ========================================================================== */
.cta-band {
    background: var(--grad-logo);
    color: #fff;
    padding: 3.5rem 0;
    position: relative;
    overflow: hidden;
}
.cta-band::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(800px 300px at 80% 50%, rgba(255,255,255,0.12), transparent 60%);
    pointer-events: none;
}
.cta-band h2 { color: #fff; margin-bottom: 0.4rem; }
.cta-band p { color: rgba(255,255,255,0.88); margin: 0; }
.cta-band .container { position: relative; z-index: 1; }
.cta-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.cta-band .btn-primary {
    background: #ffffff;
    color: var(--logo-navy);
    box-shadow: none;
}
.cta-band .btn-primary:hover { background: rgba(255,255,255,0.94); }
.cta-band .btn-primary.btn-lg { background: #ffffff; }
.cta-band .btn-primary.btn-lg:hover { background: rgba(255,255,255,0.94); filter: none; }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer {
    background: var(--prn-surface);
    border-top: 1px solid var(--prn-line);
    padding: 2rem 0 2.5rem;
    margin-top: 3rem;
}
.footer-inner {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 2rem;
}
.footer-inner p {
    color: var(--prn-muted);
    font-size: 0.85rem;
    max-width: 560px;
    margin: 0.5rem 0 0;
}
.footer-links {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.5rem;
    font-size: 0.9rem;
}
.footer-links .muted { color: var(--prn-muted); font-size: 0.8rem; margin-top: 0.75rem; }

/* ==========================================================================
   Page générique
   ========================================================================== */
.page {
    padding: 3rem 0 4rem;
}
.page-header {
    max-width: 820px;
    margin-bottom: 2.5rem;
}
.page-header .eyebrow { margin-bottom: 0.75rem; }
.page-header p.lead {
    color: var(--prn-ink-soft);
    font-size: 1.1rem;
    margin-top: 0.5rem;
}
.search {
    flex: 1 1 260px;
    position: relative;
}
.search input {
    width: 100%;
    padding: 0.8rem 1rem 0.8rem 2.6rem;
    border-radius: var(--radius);
    border: 1px solid var(--prn-line);
    font-size: 0.95rem;
    font-family: inherit;
    background: var(--prn-surface);
    transition: border-color .15s, box-shadow .15s;
}
.search input:focus {
    outline: none;
    border-color: var(--prn-blue-2);
    box-shadow: 0 0 0 3px rgba(46,125,193,0.15);
}
.search svg {
    position: absolute;
    left: 0.95rem; top: 50%;
    transform: translateY(-50%);
    width: 18px; height: 18px;
    color: var(--prn-muted);
}
.filters {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.chip {
    border: 1px solid var(--prn-line);
    background: var(--prn-surface);
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    font-size: 0.85rem;
    cursor: pointer;
    color: var(--prn-ink-soft);
    font-family: inherit;
    transition: background .15s, border-color .15s, color .15s;
}
.chip:hover { border-color: var(--prn-blue-2); }
.chip.active {
    background: var(--prn-blue);
    border-color: var(--prn-blue);
    color: #fff;
}

.algo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
    gap: 1.25rem;
}
.algo-card {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    transition: transform .2s, box-shadow .2s, border-color .2s;
    position: relative;
}
.algo-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow);
    border-color: transparent;
    text-decoration: none;
}
.algo-card .tag {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--prn-teal-strong);  /* WCAG AA Sprint 6 M5 R1 — était var(--prn-teal) (3.02:1) */
    margin-bottom: 0.5rem;
}
.algo-card h3 { color: var(--prn-navy); margin-bottom: 0.45rem; }
.algo-card p {
    color: var(--prn-ink-soft);
    font-size: 0.92rem;
    flex-grow: 1;
    margin: 0 0 1rem;
}
.algo-card .footer-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.82rem;
    color: var(--prn-muted);
}
.status {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 600;
    font-size: 0.75rem;
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
}
.status.ready { background: var(--prn-success-bg); color: var(--prn-success); }
.status.wip   { background: var(--prn-warning-bg); color: var(--prn-warning); }

/* Catalogue regroupé par thème (Sprint 40) */
.algo-catalogue {
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}
.algo-theme-title {
    color: var(--prn-navy);
    font-size: 1.15rem;
    margin: 0 0 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--prn-line);
}
@media (max-width: 900px) {
    .algo-layout { grid-template-columns: 1fr; }
}

.stepper {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    padding: 2rem;
    box-shadow: var(--shadow-sm);
    min-height: 420px;
    position: relative;
}
.step {
    display: none;
    animation: fadeIn .25s ease;
}
.step.active { display: block; }
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.step .step-label {
    display: inline-block;
    background: var(--prn-blue-light);
    color: var(--prn-blue);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.3rem 0.75rem;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.9rem;
}
.step h3 {
    font-family: var(--font-serif);
    font-size: 1.55rem;
    color: var(--prn-navy);
    margin-bottom: 0.35rem;
    font-weight: 600;
}
.step .step-sub { color: var(--prn-muted); font-size: 0.95rem; margin-bottom: 1.5rem; }

.choices {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
.choice {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.2rem;
    border: 1px solid var(--prn-line);
    border-radius: var(--radius);
    background: var(--prn-surface);
    cursor: pointer;
    font-family: inherit;
    font-size: 0.96rem;
    color: var(--prn-ink);
    transition: border-color .15s, background .15s, transform .1s;
    text-align: left;
    font-weight: 500;
}
.choice:hover {
    border-color: var(--prn-blue-2);
    background: var(--prn-blue-light);
    transform: translateX(2px);
}
.choice .arrow { color: var(--prn-blue); font-size: 1.2rem; }

/* Version compacte pour l'étape 3 (contre-indications par médicament) */
.checkbox-group.compact label {
    padding: 0.55rem 0.8rem;
}
.checkbox-group.compact .cb-text { font-size: 0.88rem; }
.result-card.info    { background: var(--prn-blue-light); border-color: var(--prn-blue); }
.result-card.warn    { background: var(--prn-warning-bg); border-color: var(--prn-warning); }
.result-card.danger  { background: var(--prn-danger-bg); border-color: var(--prn-danger); }

.source-note {
    font-size: 0.8rem;
    color: var(--prn-muted);
    margin-top: 0.6rem;
    font-style: italic;
}

/* Progress bar */
.progress {
    height: 4px;
    background: var(--prn-line);
    border-radius: 999px;
    overflow: hidden;
    margin-bottom: 1.75rem;
}
.progress-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--prn-blue) 0%, var(--prn-teal) 100%);
    width: 20%;
    transition: width .35s ease;
}

/* ==========================================================================
   Références
   ========================================================================== */
.ref-section { margin-bottom: 2.5rem; }
.ref-section h2 {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-bottom: 0.6rem;
    border-bottom: 2px solid var(--prn-line);
    margin-bottom: 1rem;
}
.ref-section h2 .pill {
    font-family: var(--font-sans);
    font-size: 0.7rem;
    background: var(--prn-blue);
    color: #fff;
    padding: 0.25rem 0.7rem;
    border-radius: 999px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
/* En dark, --prn-blue = #6ee0de (clair) : compteur sombre dessus */
[data-theme="dark"] .ref-section h2 .pill { color: #0d1219; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .ref-section h2 .pill { color: #0d1219; }
}
.ref-list { list-style: none; padding: 0; margin: 0; }
.ref-list li {
    padding: 1rem 0;
    border-bottom: 1px solid var(--prn-line);
    display: flex;
    gap: 1rem;
}
.ref-list li:last-child { border-bottom: 0; }
.ref-list .ref-title { font-weight: 600; color: var(--prn-navy); margin: 0 0 0.15rem; }
.ref-list .ref-meta { font-size: 0.85rem; color: var(--prn-muted); margin: 0; }
/* WCAG : les liens dans .ref-meta doivent être distinguables du texte sans
   se reposer uniquement sur la couleur (link-in-text-block, Sprint 6 M5 R1).
   Sélecteur générique — couvre aussi les .ref-meta hors .ref-list. */
.ref-meta a { text-decoration: underline; }
.ref-list .ref-icon {
    flex-shrink: 0;
    width: 36px; height: 36px;
    border-radius: 8px;
    background: var(--prn-blue-light);
    color: var(--prn-blue);
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700;
    font-size: 0.8rem;
}

/* ==========================================================================
   Anti-flash pendant la vérification d'authentification
   ========================================================================== */
html.prn-auth-checking body { visibility: hidden; }

/* ==========================================================================
   Page de connexion
   ========================================================================== */
.login-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(900px 500px at 15% 0%, color-mix(in srgb, var(--logo-aqua) 15%, transparent), transparent 60%),
        radial-gradient(1100px 600px at 85% 100%, color-mix(in srgb, var(--logo-teal) 16%, transparent), transparent 60%),
        linear-gradient(180deg, var(--prn-surface) 0%, var(--prn-bg) 100%);
    padding: 2rem 1rem;
}
.login-wrap {
    width: 100%;
    max-width: 440px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
}
.login-card {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    padding: 2.25rem 2rem 1.75rem;
    box-shadow: var(--shadow-lg);
    width: 100%;
}
.login-brand {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    margin-bottom: 1.75rem;
}
.login-brand .brand-mark {
    height: 44px;
    width: auto;
    display: inline-block;
    border-radius: 22px;
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    flex-shrink: 0;
}
.login-brand span.brand-mark {
    width: 48px; height: 48px;
    display: inline-flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--prn-blue) 0%, var(--prn-teal) 100%);
    color: #fff;
    border-radius: 12px;
    font-size: 1.6rem;
    font-weight: 700;
}
.login-brand .brand-name {
    font-family: var(--font-serif);
    font-weight: 600;
    font-size: 1.35rem;
    color: var(--prn-navy);
    line-height: 1.1;
}
.login-brand .brand-tag {
    font-size: 0.78rem;
    color: var(--prn-muted);
    letter-spacing: 0.02em;
}
.login-card h1 {
    font-size: 1.65rem;
    margin: 0 0 0.35rem;
}
.login-sub {
    color: var(--prn-ink-soft);
    font-size: 0.92rem;
    margin: 0 0 1.5rem;
}
.field {
    display: block;
    margin-bottom: 1rem;
}
.field > span {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--prn-ink-soft);
    margin-bottom: 0.35rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.field input {
    width: 100%;
    padding: 0.8rem 1rem;
    border-radius: var(--radius);
    border: 1px solid var(--prn-line);
    background: var(--prn-surface);
    font-size: 1rem;
    font-family: inherit;
    color: var(--prn-ink);
    transition: border-color .15s, box-shadow .15s;
}
.field input:focus {
    outline: none;
    border-color: var(--prn-blue-2);
    box-shadow: 0 0 0 3px rgba(46,125,193,0.15);
}
.btn-block { width: 100%; justify-content: center; }
.btn.loading { opacity: 0.7; cursor: progress; }
.login-error {
    background: var(--prn-danger-bg);
    color: var(--prn-danger);
    border: 1px solid color-mix(in srgb, var(--prn-danger) 35%, transparent);
    padding: 0.7rem 0.9rem;
    border-radius: var(--radius);
    font-size: 0.88rem;
    margin-bottom: 1rem;
}
.login-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--prn-line);
}
.mode-indicator {
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.3rem 0.7rem;
    border-radius: 999px;
}
.mode-indicator.prod {
    background: var(--prn-success-bg);
    color: var(--prn-success);
}
.mode-indicator.demo {
    background: var(--prn-warning-bg);
    color: #92400e;
}
.login-disclaimer {
    font-size: 0.78rem;
    color: var(--prn-muted);
    text-align: center;
    max-width: 380px;
    margin: 0;
}
.login-divider {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 1.5rem 0 1.25rem;
    color: var(--prn-muted);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.login-divider::before,
.login-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--prn-line);
}
.login-contact {
    background: var(--prn-bg);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius);
    padding: 1.1rem 1.1rem 1rem;
    text-align: center;
}
.login-contact-title {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--prn-navy);
    margin: 0 0 0.4rem;
}
.login-contact-text {
    font-size: 0.85rem;
    color: var(--prn-ink-soft);
    margin: 0 0 0.85rem;
    line-height: 1.45;
}
.login-contact-mail {
    font-size: 0.78rem;
    color: var(--prn-muted);
    margin: 0.65rem 0 0;
    font-family: ui-monospace, "SF Mono", Menlo, monospace;
    word-break: break-all;
}

/* ==========================================================================
   Menu utilisateur (header après connexion)
   ========================================================================== */
.user-menu {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: 0.5rem;
}
.user-menu .avatar {
    width: 32px; height: 32px;
    border-radius: 50%;
    /* Dégradé de marque garanti contrasté en clair comme en sombre :
       constantes logo (non thématisées) → blanc ≥ 4.5:1 dans les deux thèmes */
    background: linear-gradient(135deg, var(--logo-navy) 0%, var(--logo-teal) 100%);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.85rem;
    cursor: pointer;
    border: 1px solid var(--prn-blue);
    transition: filter .15s, border-color .15s;
}
.user-menu .avatar:hover { filter: brightness(1.05); border-color: var(--prn-navy); }
.user-menu .user-email {
    font-size: 0.82rem;
    color: var(--prn-muted);
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.user-menu .dropdown {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    min-width: 200px;
    padding: 0.4rem;
    display: none;
    z-index: 60;
}
.user-menu.open .dropdown { display: block; }
.user-menu .dropdown a,
.user-menu .dropdown button {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 0;
    padding: 0.6rem 0.8rem;
    border-radius: 6px;
    color: var(--prn-ink);
    font-size: 0.9rem;
    font-family: inherit;
    cursor: pointer;
}
.user-menu .dropdown a:hover,
.user-menu .dropdown button:hover {
    background: var(--prn-blue-light);
    text-decoration: none;
}
.user-menu .dropdown .email-label {
    padding: 0.5rem 0.8rem;
    font-size: 0.75rem;
    color: var(--prn-muted);
    border-bottom: 1px solid var(--prn-line);
    margin-bottom: 0.3rem;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 820px) {
    h1 { font-size: 2rem; }
    .main-nav { display: none; }
    .header-inner { gap: 0.75rem; }
    .hero { padding: 3rem 0 2.5rem; }
    .footer-inner { grid-template-columns: 1fr; }
    .footer-links { align-items: flex-start; }
    .cta-inner { flex-direction: column; align-items: flex-start; }
}

/* ============================================================================
   Safety net DARK MODE — formulaires natifs
   ----------------------------------------------------------------------------
   Certains inputs/selects/textareas dans les consultations n'héritent pas
   de couleurs explicites (notamment dans les modaux ou les blocs imbriqués
   sans classe .p-field). Le défaut de l'agent utilisateur reste blanc/noir,
   ce qui crée des « zones blanches » illisibles en mode sombre. On force
   donc surface + ink + line en mode sombre pour TOUT input/select/textarea
   ne précisant pas son fond. Les classes spécifiques (qui mettent leur propre
   fond via une variable) ne sont pas affectées car leurs règles ont une
   spécificité plus élevée.
   ============================================================================ */
[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
:root:not([data-theme="light"]) input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
[data-theme="dark"] select,
:root:not([data-theme="light"]) select,
[data-theme="dark"] textarea,
:root:not([data-theme="light"]) textarea {
    background-color: var(--prn-surface);
    color: var(--prn-ink);
    border-color: var(--prn-line);
    /* Force le rendu sombre pour les date pickers/spinners natifs */
    color-scheme: dark;
}
[data-theme="dark"] input::placeholder,
:root:not([data-theme="light"]) input::placeholder,
[data-theme="dark"] textarea::placeholder,
:root:not([data-theme="light"]) textarea::placeholder {
    color: var(--prn-muted);
    opacity: 1;
}
/* Options de <select> : forcer la couleur du dropdown natif */
[data-theme="dark"] select option,
:root:not([data-theme="light"]) select option {
    background-color: var(--prn-surface);
    color: var(--prn-ink);
}

/* ============================================================================
   Catch-all DARK MODE overrides — pour styles inline (style="background:#fff")
   présents dans les templates JS qui ne peuvent pas tous être migrés
   facilement vers des variables. Cible les patterns les plus courants.
   ============================================================================ */
[data-theme="dark"] [style*="background: #fff"]:not([style*="rgba"]):not([style*="#fff5"]):not([style*="#fff7"]):not([style*="#fff3"]):not([style*="#ffff"]),
:root:not([data-theme="light"]) [style*="background: #fff"]:not([style*="rgba"]):not([style*="#fff5"]):not([style*="#fff7"]):not([style*="#fff3"]):not([style*="#ffff"]),
[data-theme="dark"] [style*="background:#fff"]:not([style*="#fff5"]):not([style*="#fff7"]):not([style*="#fff3"]):not([style*="#ffff"]),
:root:not([data-theme="light"]) [style*="background:#fff"]:not([style*="#fff5"]):not([style*="#fff7"]):not([style*="#fff3"]):not([style*="#ffff"]) {
    background: var(--prn-surface) !important;
}

/* Backgrounds pastel verts/menthes (#eef, #f0f8, #f4f8 etc) → surface-2 */
[data-theme="dark"] [style*="background: #eef"],
:root:not([data-theme="light"]) [style*="background: #eef"],
[data-theme="dark"] [style*="background:#eef"],
:root:not([data-theme="light"]) [style*="background:#eef"],
[data-theme="dark"] [style*="background: #f0f"],
:root:not([data-theme="light"]) [style*="background: #f0f"],
[data-theme="dark"] [style*="background:#f0f"],
:root:not([data-theme="light"]) [style*="background:#f0f"],
[data-theme="dark"] [style*="background: #f4f"],
:root:not([data-theme="light"]) [style*="background: #f4f"],
[data-theme="dark"] [style*="background:#f4f"],
:root:not([data-theme="light"]) [style*="background:#f4f"],
[data-theme="dark"] [style*="background: #f5f"],
:root:not([data-theme="light"]) [style*="background: #f5f"],
[data-theme="dark"] [style*="background: #f8f"],
:root:not([data-theme="light"]) [style*="background: #f8f"],
[data-theme="dark"] [style*="background: #fafdfb"],
:root:not([data-theme="light"]) [style*="background: #fafdfb"] {
    background: var(--prn-int-hover-bg) !important;
}

/* Pastels rouges/oranges (#fee, #fff7, #fff5, #fdf6 → variants warning/danger) */
[data-theme="dark"] [style*="background: #fee"],
:root:not([data-theme="light"]) [style*="background: #fee"],
[data-theme="dark"] [style*="background:#fee"],
:root:not([data-theme="light"]) [style*="background:#fee"],
[data-theme="dark"] [style*="background: #fceaea"],
:root:not([data-theme="light"]) [style*="background: #fceaea"] {
    background: var(--prn-danger-bg) !important;
}
[data-theme="dark"] [style*="background: #fff5f5"],
:root:not([data-theme="light"]) [style*="background: #fff5f5"],
[data-theme="dark"] [style*="background:#fff5f5"],
:root:not([data-theme="light"]) [style*="background:#fff5f5"],
[data-theme="dark"] [style*="background: #fff7f7"],
:root:not([data-theme="light"]) [style*="background: #fff7f7"],
[data-theme="dark"] [style*="background:#fff7f7"],
:root:not([data-theme="light"]) [style*="background:#fff7f7"],
[data-theme="dark"] [style*="background: #fff5f3"],
:root:not([data-theme="light"]) [style*="background: #fff5f3"],
[data-theme="dark"] [style*="background:#fff5f3"],
:root:not([data-theme="light"]) [style*="background:#fff5f3"] {
    background: var(--prn-danger-bg-soft) !important;
}
[data-theme="dark"] [style*="background: #fff3"],
:root:not([data-theme="light"]) [style*="background: #fff3"],
[data-theme="dark"] [style*="background:#fff3"],
:root:not([data-theme="light"]) [style*="background:#fff3"],
[data-theme="dark"] [style*="background: #fff7e"],
:root:not([data-theme="light"]) [style*="background: #fff7e"],
[data-theme="dark"] [style*="background:#fff7e"],
:root:not([data-theme="light"]) [style*="background:#fff7e"],
[data-theme="dark"] [style*="background: #fdf6ec"],
:root:not([data-theme="light"]) [style*="background: #fdf6ec"],
[data-theme="dark"] [style*="background: #fefce8"],
:root:not([data-theme="light"]) [style*="background: #fefce8"] {
    background: var(--prn-warning-bg) !important;
}
/* Color overrides pour bandeaux warning inline (texte sombre sur fond sombre). */
[data-theme="dark"] [style*="color: #664d03"],
:root:not([data-theme="light"]) [style*="color: #664d03"],
[data-theme="dark"] [style*="color:#664d03"],
:root:not([data-theme="light"]) [style*="color:#664d03"],
[data-theme="dark"] [style*="color: #842029"],
:root:not([data-theme="light"]) [style*="color: #842029"],
[data-theme="dark"] [style*="color:#842029"],
:root:not([data-theme="light"]) [style*="color:#842029"],
[data-theme="dark"] [style*="color: #8a5a10"],
:root:not([data-theme="light"]) [style*="color: #8a5a10"] {
    color: var(--prn-warning) !important;
}
/* Rouge erreur inline (#b00020 — messages d'erreur JS, boutons danger) */
[data-theme="dark"] [style*="color: #b00020"],
:root:not([data-theme="light"]) [style*="color: #b00020"],
[data-theme="dark"] [style*="color:#b00020"],
:root:not([data-theme="light"]) [style*="color:#b00020"] {
    color: var(--prn-danger) !important;
}

/* Bleu pastel (#e8f, #eaf3, #f4f7fb) */
[data-theme="dark"] [style*="background: #e8f"],
:root:not([data-theme="light"]) [style*="background: #e8f"],
[data-theme="dark"] [style*="background:#e8f"],
:root:not([data-theme="light"]) [style*="background:#e8f"],
[data-theme="dark"] [style*="background: #eaf"],
:root:not([data-theme="light"]) [style*="background: #eaf"] {
    background: rgba(95, 150, 212, 0.08) !important;
}

/* Texte navy/teal foncé en clair (#1a, #1e, #2c, #3d, #44, #34) → texte clair */
[data-theme="dark"] [style*="color: #1a"]:not([style*="rgba"]),
:root:not([data-theme="light"]) [style*="color: #1a"]:not([style*="rgba"]),
[data-theme="dark"] [style*="color:#1a"],
:root:not([data-theme="light"]) [style*="color:#1a"],
[data-theme="dark"] [style*="color: #1e"],
:root:not([data-theme="light"]) [style*="color: #1e"],
[data-theme="dark"] [style*="color: #2c"],
:root:not([data-theme="light"]) [style*="color: #2c"],
[data-theme="dark"] [style*="color: #3d"],
:root:not([data-theme="light"]) [style*="color: #3d"],
[data-theme="dark"] [style*="color: #34"],
:root:not([data-theme="light"]) [style*="color: #34"] {
    color: var(--prn-int-text) !important;
}

/* Bordures pastel (#c8d, #d6, #e2, #ddf, #d1) → variable line */
[data-theme="dark"] [style*="border: 1px solid #c"],
:root:not([data-theme="light"]) [style*="border: 1px solid #c"],
[data-theme="dark"] [style*="border: 1px solid #d"],
:root:not([data-theme="light"]) [style*="border: 1px solid #d"],
[data-theme="dark"] [style*="border: 1px solid #e"],
:root:not([data-theme="light"]) [style*="border: 1px solid #e"] {
    border-color: var(--prn-line) !important;
}

/* ============================================================================
   Phase 3 — Polish global pour les wizards (toutes consultations)
   ============================================================================ */

/* Animation step universelle — applique à tous les .prn-step de tous modules */
.prn-step {
    animation: vStepIn 360ms cubic-bezier(0.16, 1, 0.3, 1);
    animation-fill-mode: both;
}
@keyframes vStepIn {
    from { opacity: 0; transform: translateY(10px) scale(0.995); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}
[data-step-dir="back"] .prn-step {
    animation: vStepInBack 360ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes vStepInBack {
    from { opacity: 0; transform: translateX(-8px); }
    to   { opacity: 1; transform: translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
    .prn-step,
    [data-step-dir="back"] .prn-step,
    .prn-results,
    .feature-card,
    .step,
    .hero h1, .hero .lead, .hero-ctas, .hero-meta, .eyebrow {
        animation: none !important;
    }
}

/* Animation de la progress bar : remplissage doux + petite "pulse" du marqueur courant */
.voyage-progress .progress-bar {
    background: linear-gradient(90deg, var(--prn-int-strong), var(--prn-int-hover-border)) !important;
    transition: width 360ms cubic-bezier(0.16, 1, 0.3, 1) !important;
}

/* Pas d'effet de rebond sur les sélections — l'utilisateur n'aime pas le scale.
   On garde juste un changement d'opacité subtil pour le feedback. */
.btn:active { opacity: 0.85; }

/* Icônes des feature cards : transitions seulement (pas de rotation/scale) */
.feature-card .feature-icon {
    transition: background var(--t-base) var(--ease-out),
                color var(--t-base) var(--ease-out);
}

/* Headings dans les sections résultats — entrée en cascade */
.prn-results-section {
    animation: vSectionIn 280ms cubic-bezier(0.16, 1, 0.3, 1);
    animation-fill-mode: both;
}
.prn-results-section:nth-child(1) { animation-delay: 0ms; }
.prn-results-section:nth-child(2) { animation-delay: 50ms; }
.prn-results-section:nth-child(3) { animation-delay: 100ms; }
.prn-results-section:nth-child(4) { animation-delay: 150ms; }
.prn-results-section:nth-child(5) { animation-delay: 200ms; }
@keyframes vSectionIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes skeletonShimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* ============================================================================
   Phase 3 - Section Consultations (dashboard accueil)
   ============================================================================ */
.consultations-section {
    padding: 4.5rem 0 3rem;
    background: var(--prn-bg);
}
.consultations-section .section-head {
    max-width: 720px;
    margin-bottom: 2.25rem;
}
.consultations-section .section-head .eyebrow {
    margin-bottom: 0.85rem;
}
.consultations-section .section-head h2 {
    margin-bottom: 0.5rem;
}
.consultations-section .section-head .lead {
    color: var(--prn-ink-soft);
    font-size: 1.05rem;
    margin: 0;
}

.consult-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.1rem;
}

/* Card consultation : grand bloc cliquable, look professionnel sante */
.consult-card {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line-soft);
    border-radius: var(--radius-lg);
    padding: 1.5rem 1.4rem;
    color: inherit;
    text-decoration: none;
    transition: border-color var(--t-base) var(--ease-out),
                box-shadow var(--t-base) var(--ease-out),
                transform var(--t-base) var(--ease-out);
    position: relative;
    overflow: hidden;
    isolation: isolate;
}
.consult-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--grad-soft);
    opacity: 0;
    transition: opacity var(--t-base) var(--ease-out);
    pointer-events: none;
    z-index: -1;
}
.consult-card:hover {
    text-decoration: none;
    border-color: color-mix(in srgb, var(--prn-teal) 35%, transparent);
    box-shadow: var(--shadow);
}
.consult-card:hover::before { opacity: 1; }
.consult-card:active { opacity: 0.92; }

.consult-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
    margin-bottom: 0.25rem;
}
.consult-icon {
    width: 52px; height: 52px;
    border-radius: 14px;
    background: var(--grad-soft);
    color: var(--prn-teal);
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: background var(--t-base) var(--ease-out);
}
/* Hover : fond légèrement plus dense, JAMAIS de rotation/scale */
.consult-card:hover .consult-icon {
    background: color-mix(in srgb, var(--prn-teal) 18%, transparent);
}
.consult-icon svg { width: 26px; height: 26px; }

.consult-tag {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    /* teal-strong : 4.5:1 sur teal-light (le teal de base plafonne à 2.7:1) */
    color: var(--prn-teal-strong);
    background: var(--prn-teal-light);
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
    white-space: nowrap;
}

.consult-card h3 {
    margin: 0;
    color: var(--prn-navy);
    font-size: 1.15rem;
    letter-spacing: -0.015em;
}
.consult-card p {
    margin: 0;
    color: var(--prn-ink-soft);
    font-size: 0.92rem;
    line-height: 1.5;
    flex-grow: 1;
}
.consult-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.5rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--prn-line-soft);
}
.consult-source {
    font-size: 0.75rem;
    color: var(--prn-muted);
    font-weight: 500;
    letter-spacing: 0.01em;
}
.consult-arrow {
    font-size: 1.2rem;
    color: var(--prn-teal);
    font-weight: 500;
    transition: transform var(--t-base) var(--ease-spring);
}
.consult-card:hover .consult-arrow { transform: translateX(4px); }

/* Animation cascade au scroll-in (utilise IntersectionObserver via JS optionnel) */
.consult-card {
    animation: consultCardIn 480ms cubic-bezier(0.16, 1, 0.3, 1);
    animation-fill-mode: both;
}
.consult-card:nth-child(1) { animation-delay: 0ms; }
.consult-card:nth-child(2) { animation-delay: 80ms; }
.consult-card:nth-child(3) { animation-delay: 160ms; }
.consult-card:nth-child(4) { animation-delay: 240ms; }
@keyframes consultCardIn {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Responsive : sur mobile, pleine largeur, padding réduit */
@media (max-width: 600px) {
    .consultations-section { padding: 3rem 0 2rem; }
    .consult-grid { gap: 0.9rem; }
    .consult-card { padding: 1.25rem 1.15rem; }
    .consult-tag { display: none; }   /* on cache pour gagner de la place */
}

/* ============================================================================
   Phase 3 - Features UX globales (skip link, modal raccourcis, bouton aide)
   ============================================================================ */

/* Skip-to-content link (visible au focus, invisible sinon) */
.prn-skip-link {
    position: fixed;
    top: -100px;
    left: 1rem;
    z-index: 9999;
    background: var(--logo-teal);
    color: #ffffff;
    padding: 0.6rem 1rem;
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.92rem;
    text-decoration: none;
    box-shadow: var(--shadow);
    transition: top 200ms var(--ease-out);
}
.prn-skip-link:focus {
    top: 1rem;
    outline: 2px solid #ffffff;
    outline-offset: 2px;
}

/* (Bouton aide raccourcis clavier + modal retirés sur demande utilisateur) */

/* ============================================================================
   Calculatrice clinique (bouton flottant + modal)
   ============================================================================ */

/* Bouton flottant — bas-droite */
.prn-calc-btn {
    position: fixed;
    bottom: 1.25rem;
    right: 1.25rem;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--logo-teal);
    border: 0;
    color: #ffffff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow);
    z-index: 90;
    transition: background var(--t-base) var(--ease-out);
    padding: 0;
    font-family: inherit;
}
.prn-calc-btn:hover { background: var(--logo-aqua); }
.prn-calc-btn svg { width: 22px; height: 22px; }
.prn-calc-btn:focus-visible { outline: 3px solid var(--prn-teal); outline-offset: 3px; }

/* Modal partagée */
.prn-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(10, 22, 40, 0.5);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    animation: prnModalFade 200ms ease-out;
}
[data-theme="dark"] .prn-modal-overlay { background: rgba(0, 0, 0, 0.7); }
@keyframes prnModalFade { from { opacity: 0 } to { opacity: 1 } }

.prn-modal {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    width: 100%;
    max-height: 92vh;
    overflow-y: auto;
    animation: prnModalIn 280ms var(--ease-out);
}
.prn-modal--calc { max-width: 540px; }
@keyframes prnModalIn {
    from { opacity: 0; transform: translateY(20px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.prn-modal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.4rem 0.9rem;
    border-bottom: 1px solid var(--prn-line-soft);
}
.prn-modal-head h2 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--prn-navy);
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
}
.prn-modal-icon {
    width: 22px;
    height: 22px;
    color: var(--prn-blue);
    flex-shrink: 0;
}
.prn-modal-close {
    width: 32px; height: 32px;
    border-radius: 50%;
    border: 0;
    background: transparent;
    color: var(--prn-muted);
    font-size: 1.5rem;
    cursor: pointer;
    line-height: 1;
    display: inline-flex; align-items: center; justify-content: center;
    transition: background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);
    font-family: inherit;
}
.prn-modal-close:hover { background: var(--prn-surface-2); color: var(--prn-ink); }
.prn-modal-body { padding: 1rem 1.4rem; }
.prn-modal-foot { padding: 0.85rem 1.4rem 1.1rem; border-top: 1px solid var(--prn-line-soft); }
.prn-modal-hint { margin: 0; font-size: 0.78rem; color: var(--prn-muted); line-height: 1.5; }

/* Calc form */
.calc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem 1rem;
    margin-bottom: 1.1rem;
}
.calc-field { display: flex; flex-direction: column; gap: 0.3rem; }
.calc-field > span {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--prn-ink-soft);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.calc-field input,
.calc-field select.calc-cr-unit {
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--prn-line);
    border-radius: 8px;
    background: var(--prn-surface);
    color: var(--prn-ink);
    font-family: inherit;
    font-size: 0.95rem;
    transition: border-color var(--t-fast) var(--ease-out);
}
.calc-field input:focus { outline: none; border-color: var(--prn-teal); }
.calc-pills {
    display: inline-flex;
    background: var(--prn-surface-2);
    border-radius: 999px;
    padding: 3px;
    border: 1px solid var(--prn-line);
}
.calc-pills button {
    border: 0;
    background: transparent;
    color: var(--prn-muted);
    font-weight: 600;
    font-size: 0.82rem;
    padding: 0.4rem 0.95rem;
    border-radius: 999px;
    cursor: pointer;
    font-family: inherit;
    transition: background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);
}
.calc-pills button.is-active {
    background: var(--logo-teal);
    color: #ffffff;
}

/* Calc results */
.calc-results {
    background: var(--prn-surface-2);
    border-radius: var(--radius);
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--prn-line);
}
.calc-result-row {
    display: grid;
    grid-template-columns: 1.4fr auto auto;
    grid-template-areas:
        "label value unit"
        "note  note  note";
    align-items: baseline;
    gap: 0.35rem 0.6rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--prn-line-soft);
}
.calc-result-row:last-child { border-bottom: 0; }
.calc-result-label { grid-area: label; font-size: 0.85rem; color: var(--prn-ink-soft); font-weight: 500; }
.calc-result-value { grid-area: value; font-size: 1.15rem; font-weight: 700; color: var(--prn-muted); font-variant-numeric: tabular-nums; }
.calc-result-row.is-computed .calc-result-value { color: var(--prn-navy); }
.calc-result-row.calc-result-row--main.is-computed .calc-result-value { color: var(--prn-teal); }
.calc-result-unit { grid-area: unit; font-size: 0.75rem; color: var(--prn-muted); }
.calc-result-note { grid-area: note; font-size: 0.75rem; color: var(--prn-muted); font-style: italic; min-height: 1em; }

@media (max-width: 600px) {
    .calc-grid { grid-template-columns: 1fr; }
    .prn-calc-btn { width: 44px; height: 44px; }
    .prn-calc-btn svg { width: 18px; height: 18px; }
}

/* ============================================================================
   Préférences utilisateur — 3 modes (focus / densité / présentation patient)
   ============================================================================ */

/* Bouton préférences (icône engrenage) dans le header */
.prefs-toggle {
    width: 36px;
    height: 36px;
    border-radius: 999px;
    border: 1px solid var(--prn-line);
    background: var(--prn-surface-2);
    color: var(--prn-ink-soft);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    transition: background var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out),
                color var(--t-fast) var(--ease-out);
    padding: 0;
}
.prefs-toggle:hover { border-color: var(--prn-teal); color: var(--prn-teal); }
.prefs-toggle svg { width: 16px; height: 16px; }

/* Menu déroulant préférences */
.prefs-menu {
    position: fixed;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    min-width: 320px;
    max-width: 380px;
    z-index: 200;
    padding: 0.4rem;
    animation: prnPrefsIn 200ms var(--ease-out);
}
@keyframes prnPrefsIn {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.prefs-section {
    padding: 0.6rem 0.8rem;
    border-bottom: 1px solid var(--prn-line-soft);
}
.prefs-section:last-child { border-bottom: 0; }
.prefs-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.55rem 0;
}
.prefs-row + .prefs-row { border-top: 1px solid var(--prn-line-soft); }
.prefs-label { display: flex; flex-direction: column; gap: 0.15rem; flex: 1; min-width: 0; }
.prefs-label strong { font-size: 0.92rem; color: var(--prn-navy); font-weight: 600; }
.prefs-label small { font-size: 0.78rem; color: var(--prn-muted); line-height: 1.35; }

/* Switch ON/OFF */
.prefs-switch {
    width: 38px;
    height: 22px;
    border-radius: 999px;
    border: 0;
    background: var(--prn-line);
    cursor: pointer;
    position: relative;
    flex-shrink: 0;
    transition: background var(--t-fast) var(--ease-out);
    padding: 0;
    font-family: inherit;
}
.prefs-switch.is-on { background: var(--logo-teal); }
.prefs-switch-knob {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
    transition: transform var(--t-fast) var(--ease-out);
}
.prefs-switch.is-on .prefs-switch-knob { transform: translateX(16px); }
.prefs-pills button.is-active { background: var(--logo-teal); color: #ffffff; }

/* ────────────────────────────────────────────────────────────────
   MODE FOCUS — masque nav, footer, bouton prefs/calc/theme moins prominent
   ──────────────────────────────────────────────────────────────── */
[data-prn-focus="on"] .main-nav,
[data-prn-focus="on"] .site-footer,
[data-prn-focus="on"] .lang-switch,
[data-prn-focus="on"] .user-menu {
    display: none !important;
}
[data-prn-focus="on"] .voyage-page,
[data-prn-focus="on"] .page {
    padding-top: 1rem;
}
[data-prn-focus="on"] .voyage-page .page-header {
    margin-bottom: 1rem;
}
/* Petit bouton "quitter focus" qui apparaît */
[data-prn-focus="on"] .prefs-toggle::after {
    content: "Focus";
    margin-left: 0.4rem;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--logo-teal);
}
[data-prn-focus="on"] .prefs-toggle {
    width: auto;
    padding: 0 0.7rem 0 0.5rem;
    border-color: var(--logo-teal);
    color: var(--logo-teal);
}

/* ────────────────────────────────────────────────────────────────
   VUE PATIENT — masque les détails techniques pour montrer au patient
   Ne change PAS la taille de texte (gardée normale pour ne pas casser
   la mise en page). Filtre purement informatif.
   ──────────────────────────────────────────────────────────────── */
[data-prn-patient-mode="on"] {
    /* Banner informatif ajouté en haut du body */
}
[data-prn-patient-mode="on"]::before {
    content: "👁️ Vue patient — les détails techniques (CI relatives, sources, scores cliniques) sont masqués. Désactivez « Vue patient » dans ⚙ pour la vue complète.";
    display: block;
    background: linear-gradient(135deg, var(--logo-teal), var(--logo-aqua));
    color: #ffffff;
    padding: 0.6rem 1rem;
    text-align: center;
    font-size: 0.85rem;
    font-weight: 600;
    position: sticky;
    top: 0;
    z-index: 99;
    border-bottom: 1px solid rgba(0,0,0,0.1);
}

/* MASQUE EN MODE PATIENT — éléments purement techniques */
[data-prn-patient-mode="on"] .source-note,
[data-prn-patient-mode="on"] .prn-rx-avoid,                  /* CI relatives en encadré rouge */
[data-prn-patient-mode="on"] .prn-rx-removed,             /* Section conditions (technique) */
[data-prn-patient-mode="on"] .prn-investig-block,            /* Bloc questions cause inconnue (NV) */
[data-prn-patient-mode="on"] .prn-results-section[id="vPiqSection"], /* Indications PIQ (admin) */
[data-prn-patient-mode="on"] .voyage-page .page-header .source-note,
[data-prn-patient-mode="on"] details summary,              /* Détails dépliables techniques */
[data-prn-patient-mode="on"] .voyage-page .page-header > p:nth-child(2), /* Description sous-titre */
[data-prn-patient-mode="on"] .prn-risk-extra-note{
    display: none !important;
}

/* SIMPLIFIE LE TEXTE — masque les pré/post-fixes techniques */
[data-prn-patient-mode="on"] [class*="ctcae"],
[data-prn-patient-mode="on"] em,                            /* italic = souvent technique */
[data-prn-patient-mode="on"] .prn-mc-sub small,               /* Sous-titres techniques */
[data-prn-patient-mode="on"] .calc-result-note {
    /* Garde mais en gris pâle pour les rendre moins prominents */
    opacity: 0.5;
    font-size: 0.75rem;
}

/* Boutons légèrement plus grands pour usage tablette */
[data-prn-patient-mode="on"] .btn {
    padding: 0.85rem 1.65rem;
    font-size: 0.98rem;
}

/* La calculatrice et le menu prefs deviennent plus visibles (rappel) */
[data-prn-patient-mode="on"] .prn-calc-btn::after {
    content: "Vue patient";
    position: absolute;
    bottom: -22px;
    right: 0;
    font-size: 0.65rem;
    color: var(--logo-teal);
    font-weight: 600;
    white-space: nowrap;
}

@media (max-width: 600px) {
    .prefs-menu { left: 0.6rem; right: 0.6rem; min-width: 0; max-width: none; }
}

/* ============================================================================
   Modal Identité pharmacien (Sprint 6 R2 — M1 traçabilité)
   ============================================================================ */
.prn-pharma-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15, 38, 50, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 3000;
    padding: 1rem;
    animation: prnPrefsIn 200ms var(--ease-out);
}
.prn-pharma-card {
    background: var(--prn-surface);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: 1.4rem 1.5rem;
    width: min(440px, 100%);
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
}
.prn-pharma-card h2 {
    margin: 0 0 0.4rem;
    font-size: 1.05rem;
    color: var(--prn-navy);
    font-family: Georgia, serif;
}
.prn-pharma-help {
    margin: 0 0 1rem;
    font-size: 0.82rem;
    color: var(--prn-muted);
    line-height: 1.4;
}
.prn-pharma-field {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    margin-bottom: 0.9rem;
}
.prn-pharma-field span {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--prn-navy);
}
.prn-pharma-field input {
    border: 1px solid var(--prn-line);
    border-radius: 8px;
    padding: 0.55rem 0.7rem;
    font-size: 16px; /* évite zoom iOS */
    font-family: inherit;
    color: var(--prn-ink);
    background: var(--prn-bg);
    min-height: 44px;
}
.prn-pharma-field input:focus-visible {
    outline: 2px solid var(--logo-teal);
    outline-offset: 1px;
    border-color: var(--logo-teal);
}
.prn-pharma-actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-top: 0.4rem;
}
.prn-pharma-btn-primary,
.prn-pharma-btn-secondary {
    border-radius: 8px;
    padding: 0.55rem 1rem;
    font-size: 0.88rem;
    font-weight: 600;
    cursor: pointer;
    min-height: 40px;
    font-family: inherit;
}
.prn-pharma-btn-primary {
    background: var(--logo-teal);
    color: #ffffff;
    border: 1px solid var(--logo-teal);
}
.prn-pharma-btn-primary:hover { filter: brightness(0.95); }
.prn-pharma-btn-secondary {
    background: var(--prn-bg);
    color: var(--prn-navy);
    border: 1px solid var(--prn-line);
}
.prn-pharma-btn-secondary:hover { border-color: var(--prn-teal); color: var(--prn-teal); }
/* Variante danger (ex. bouton « Supprimer » du modal clé de signature) — même pattern que .prefs-link-btn-danger */
.prn-pharma-btn-danger { border-color: rgba(176, 0, 32, 0.4); color: #b00020; }
.prn-pharma-btn-danger:hover { border-color: #b00020; color: #b00020; background: rgba(176, 0, 32, 0.06); }
[data-theme="dark"] .prn-pharma-btn-danger { border-color: rgba(252, 165, 165, 0.4); color: var(--prn-danger); }
[data-theme="dark"] .prn-pharma-btn-danger:hover { border-color: var(--prn-danger); color: var(--prn-danger); background: rgba(252, 165, 165, 0.08); }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .prn-pharma-btn-danger { border-color: rgba(252, 165, 165, 0.4); color: var(--prn-danger); }
    :root:not([data-theme="light"]) .prn-pharma-btn-danger:hover { border-color: var(--prn-danger); color: var(--prn-danger); background: rgba(252, 165, 165, 0.08); }
}

/* Bouton « Configurer » dans le menu prefs */
.prefs-pharma-status {
    display: block;
    font-size: 0.75rem;
    color: var(--prn-muted);
    margin-top: 0.15rem;
}
.prefs-link-btn {
    background: transparent;
    border: 1px solid var(--prn-line);
    border-radius: 8px;
    padding: 0.4rem 0.75rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--prn-navy);
    cursor: pointer;
    font-family: inherit;
    min-height: 36px;
}
.prefs-link-btn:hover:not(:disabled) { border-color: var(--prn-teal); color: var(--prn-teal); }
.prefs-link-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.prefs-link-btn-danger { border-color: rgba(176, 0, 32, 0.4); color: #b00020; }
.prefs-link-btn-danger:hover:not(:disabled) { border-color: #b00020; color: #b00020; background: rgba(176, 0, 32, 0.06); }
[data-theme="dark"] .prefs-link-btn-danger { border-color: rgba(252, 165, 165, 0.4); color: var(--prn-danger); }
[data-theme="dark"] .prefs-link-btn-danger:hover:not(:disabled) { border-color: var(--prn-danger); color: var(--prn-danger); background: rgba(252, 165, 165, 0.08); }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .prefs-link-btn-danger { border-color: rgba(252, 165, 165, 0.4); color: var(--prn-danger); }
    :root:not([data-theme="light"]) .prefs-link-btn-danger:hover:not(:disabled) { border-color: var(--prn-danger); color: var(--prn-danger); background: rgba(252, 165, 165, 0.08); }
}

/* Journal d'audit — layout 2 niveaux (label + boutons sur ligne suivante) */
.prefs-row-stack {
    flex-direction: column;
    align-items: stretch;
    gap: 0.6rem;
}
.prefs-audit-actions {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.prefs-audit-actions .prefs-link-btn { flex: 1 1 auto; }


/* ============================================================================
   Wizard Enhancements (tooltips, toasts, step dots, missing fields)
   ============================================================================ */

/* Tooltip universel */
.prn-tooltip {
    position: fixed;
    z-index: 2000;
    background: var(--prn-navy);
    color: var(--prn-bg);
    padding: 0.45rem 0.75rem;
    border-radius: 8px;
    font-size: 0.78rem;
    font-weight: 500;
    line-height: 1.35;
    max-width: 260px;
    pointer-events: none;
    opacity: 0;
    transform: translateY(2px);
    transition: opacity 150ms ease-out, transform 150ms ease-out;
    box-shadow: var(--shadow);
}
.prn-tooltip.is-visible { opacity: 1; transform: translateY(0); }
[data-theme="dark"] .prn-tooltip {
    background: var(--prn-surface);
    color: var(--prn-ink);
    border: 1px solid var(--prn-line);
}

/* Champs obligatoires manquants — flash ambre */
.is-missing {
    animation: prnMissing 2.4s ease-out;
}
@keyframes prnMissing {
    0%, 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); border-color: var(--prn-line); }
    15%, 70% { box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.25); border-color: #f59e0b; }
}
input.is-missing, select.is-missing { border-color: #f59e0b !important; }

/* Toasts */
.prn-toast-wrap {
    position: fixed;
    bottom: 1.25rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1500;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: center;
    pointer-events: none;
}
.prn-toast {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    color: var(--prn-ink);
    padding: 0.7rem 1.1rem;
    border-radius: 999px;
    box-shadow: var(--shadow-lg);
    font-size: 0.9rem;
    font-weight: 500;
    max-width: 90vw;
    pointer-events: auto;
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 220ms var(--ease-out), transform 220ms var(--ease-out);
    border-left: 4px solid var(--prn-teal);
}
.prn-toast.is-visible { opacity: 1; transform: translateY(0); }

/* Step dots dans la progress bar — CLIQUABLES pour naviguer */
.prn-step-dots {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: 10px;
}
.prn-step-dot {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--prn-surface-2);
    color: var(--prn-muted);
    border: 1px solid var(--prn-line);
    font-size: 0.7rem;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    padding: 0;
    transition: background var(--t-fast) var(--ease-out),
                color var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out),
                transform var(--t-fast) var(--ease-out);
}
.prn-step-dot:hover:not(:disabled) {
    background: var(--prn-int-hover-bg);
    border-color: var(--prn-int-hover-border);
    color: var(--prn-int-text);
}
.prn-step-dot.is-done {
    background: var(--prn-teal-light);
    color: var(--prn-teal);
    border-color: transparent;
}
.prn-step-dot.is-done:hover:not(:disabled) {
    background: color-mix(in srgb, var(--prn-teal) 25%, transparent);
}
/* « Quick » : étape pré-remplie par le démarrage rapide (tout inclus). Bordure
   pointillée d'accent pour la distinguer d'une étape complétée manuellement et
   signaler qu'elle reste ajustable (cliquable). Vient après .is-done pour en
   surcharger la bordure. */
.prn-step-dot.is-quick {
    border: 1px dashed var(--prn-int-strong);
    color: var(--prn-int-text);
}
.prn-step-dot.is-current {
    background: var(--logo-teal);
    color: #ffffff;
    border-color: var(--logo-teal);
    transform: scale(1.15);
    cursor: default;
}
.prn-step-dot.is-disabled,
.prn-step-dot:disabled {
    cursor: not-allowed;
    opacity: 0.4;
}
.prn-step-dot:focus-visible {
    outline: 2px solid var(--prn-teal);
    outline-offset: 2px;
}

@media (max-width: 600px) {
    .prn-step-dots { display: none; } /* trop dense en mobile, garde la barre */
}

/* ============================================================================
   Recherche globale (header launcher + overlay Cmd+K)
   ============================================================================ */

.search-launcher {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    height: 36px;
    padding: 0 0.85rem 0 0.7rem;
    border-radius: 999px;
    border: 1px solid var(--prn-line);
    background: var(--prn-surface-2);
    color: var(--prn-muted);
    cursor: pointer;
    font-family: inherit;
    font-size: 0.82rem;
    transition: border-color var(--t-fast) var(--ease-out),
                color var(--t-fast) var(--ease-out),
                background var(--t-fast) var(--ease-out);
}
.search-launcher:hover { border-color: var(--prn-teal); color: var(--prn-teal); }
.search-launcher svg { width: 14px; height: 14px; flex-shrink: 0; }
.search-launcher-text { font-weight: 500; }
.search-launcher-kbd {
    display: inline-block;
    padding: 0.1rem 0.4rem;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: 6px;
    font-family: var(--font-mono);
    font-size: 0.7rem;
    color: var(--prn-muted);
    line-height: 1;
}
@media (max-width: 820px) {
    .search-launcher-text, .search-launcher-kbd { display: none; }
    .search-launcher { width: 36px; height: 36px; padding: 0; justify-content: center; }
}

/* Overlay recherche */
.prn-search-overlay {
    position: fixed;
    inset: 0;
    background: rgba(10, 22, 40, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 1500;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 12vh 1rem 1rem;
    animation: prnModalFade 200ms ease-out;
}
[data-theme="dark"] .prn-search-overlay { background: rgba(0, 0, 0, 0.7); }

.prn-search-modal {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    width: 100%;
    max-width: 580px;
    overflow: hidden;
    animation: prnSearchIn 220ms var(--ease-out);
}
@keyframes prnSearchIn {
    from { opacity: 0; transform: translateY(-12px) scale(0.97); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.prn-search-input-wrap {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--prn-line-soft);
}
.prn-search-icon { width: 18px; height: 18px; color: var(--prn-muted); flex-shrink: 0; }
.prn-search-input {
    flex: 1;
    border: 0;
    background: transparent;
    color: var(--prn-ink);
    font-family: inherit;
    font-size: 1rem;
    padding: 0.3rem 0;
}
.prn-search-input:focus { outline: none; }
.prn-search-input::-webkit-search-cancel-button { display: none; }
.prn-search-esc {
    padding: 0.18rem 0.5rem;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 6px;
    font-family: var(--font-mono);
    font-size: 0.72rem;
    color: var(--prn-muted);
}

.prn-search-results {
    max-height: 50vh;
    overflow-y: auto;
    padding: 0.4rem;
}
.prn-search-empty {
    padding: 1.5rem 1rem;
    text-align: center;
    color: var(--prn-muted);
    font-size: 0.9rem;
}
.prn-search-result {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.65rem 0.85rem;
    background: transparent;
    border: 0;
    border-radius: 8px;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    color: var(--prn-ink);
    transition: background var(--t-fast) var(--ease-out);
}
.prn-search-result.is-active { background: var(--prn-int-hover-bg); }
.prn-search-result-icon {
    width: 36px; height: 36px;
    border-radius: 8px;
    background: var(--prn-surface-2);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 1.1rem;
    flex-shrink: 0;
}
.prn-search-result-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}
.prn-search-result-title { font-weight: 600; font-size: 0.95rem; color: var(--prn-navy); }
.prn-search-result-desc { font-size: 0.8rem; color: var(--prn-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.prn-search-result-type {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--prn-teal);
    font-weight: 600;
    flex-shrink: 0;
    background: var(--prn-teal-light);
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
}

.prn-search-foot {
    display: flex;
    gap: 1rem;
    padding: 0.55rem 1rem;
    border-top: 1px solid var(--prn-line-soft);
    font-size: 0.75rem;
    color: var(--prn-muted);
}
.prn-search-foot kbd {
    display: inline-block;
    padding: 0.1rem 0.4rem;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 4px;
    font-family: var(--font-mono);
    font-size: 0.72rem;
    margin-right: 0.3rem;
}

@media (max-width: 600px) {
    .prn-search-overlay { padding-top: 6vh; }
    .prn-search-modal { max-width: none; }
    .prn-search-result-type { display: none; }
}

/* ============================================================================
   Recherche intelligente (langage naturel, 100 % local)
   ============================================================================ */
.prn-search-tabs {
    display: flex;
    gap: 0.25rem;
    padding: 0.45rem 0.5rem 0;
    border-bottom: 1px solid var(--prn-line-soft);
    background: var(--prn-surface-2);
}
.prn-search-tab {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.85rem;
    border: 0;
    border-radius: 8px 8px 0 0;
    background: transparent;
    color: var(--prn-muted);
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color var(--t-fast) var(--ease-out),
                background var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out);
}
.prn-search-tab svg { width: 14px; height: 14px; flex-shrink: 0; }
.prn-search-tab:hover { color: var(--prn-ink); background: var(--prn-surface); }
.prn-search-tab.is-active {
    color: var(--prn-teal);
    background: var(--prn-surface);
    border-bottom-color: var(--prn-teal);
}
.prn-search-tab-badge {
    margin-left: 0.25rem;
    padding: 0.1rem 0.45rem;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #0a7d6b;
    background: rgba(20, 184, 166, 0.14);
    border-radius: 999px;
}
[data-theme="dark"] .prn-search-tab-badge { color: #5eead4; background: rgba(94, 234, 212, 0.15); }

.prn-search-input-wrap--smart { gap: 0.5rem; align-items: flex-start; }
.prn-search-input--smart {
    resize: none;
    min-height: 2.4rem;
    max-height: 6rem;
    line-height: 1.4;
    padding: 0.4rem 0;
    font-size: 0.95rem;
}
.prn-search-go {
    flex-shrink: 0;
    padding: 0.35rem 0.7rem;
    /* teal-strong : blanc ≥ 4.5:1 (le teal de base plafonnait à 3:1) */
    background: var(--prn-teal-strong);
    color: white;
    border: 0;
    border-radius: 8px;
    font-family: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--t-fast) var(--ease-out);
}
.prn-search-go:hover { background: var(--prn-teal-dark, #0d8a78); }
/* En dark, --prn-teal-strong = #6ee0de (clair) : texte sombre dessus */
[data-theme="dark"] .prn-search-go { color: #0d1219; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .prn-search-go { color: #0d1219; }
}

/* Bandeau confiance */
.prn-smart-head {
    padding: 0.6rem 0.85rem 0.25rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    justify-content: space-between;
}
.prn-smart-conf {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
    background: var(--prn-surface-2);
    color: var(--prn-muted);
}
.prn-smart-conf-dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--prn-muted);
    box-shadow: 0 0 0 3px rgba(0,0,0,0.04);
}
.prn-smart-conf.is-high   { color: #047857; background: rgba(16,185,129,0.12); }
.prn-smart-conf.is-high   .prn-smart-conf-dot { background: #10b981; }
.prn-smart-conf.is-medium { color: #b45309; background: rgba(245,158,11,0.12); }
.prn-smart-conf.is-medium .prn-smart-conf-dot { background: #f59e0b; }
.prn-smart-conf.is-low    { color: #b91c1c; background: rgba(239,68,68,0.10); }
.prn-smart-conf.is-low    .prn-smart-conf-dot { background: #ef4444; }
[data-theme="dark"] .prn-smart-conf.is-high   { color: #6ee7b7; }
[data-theme="dark"] .prn-smart-conf.is-medium { color: #fcd34d; }
[data-theme="dark"] .prn-smart-conf.is-low    { color: #fca5a5; }
.prn-smart-conf-pct {
    padding-left: 0.4rem;
    border-left: 1px solid currentColor;
    opacity: 0.75;
    font-variant-numeric: tabular-nums;
}

.prn-smart-ctx {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
}
.prn-smart-chip {
    padding: 0.18rem 0.55rem;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 999px;
    font-size: 0.72rem;
    color: var(--prn-ink);
}

/* Cartes résultats */
.prn-smart-card {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    width: calc(100% - 0.6rem);
    margin: 0.4rem 0.3rem;
    padding: 0.85rem;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: 10px;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    color: var(--prn-ink);
    transition: border-color var(--t-fast) var(--ease-out),
                background var(--t-fast) var(--ease-out),
                transform var(--t-fast) var(--ease-out);
}
.prn-smart-card:hover { border-color: var(--prn-teal); background: var(--prn-int-hover-bg); transform: translateY(-1px); }
.prn-smart-card--primary {
    border-color: var(--prn-teal);
    background: linear-gradient(135deg, var(--prn-teal-light, rgba(20,184,166,0.08)), var(--prn-surface));
}
.prn-smart-card--alt { padding: 0.55rem 0.7rem; }

.prn-smart-card-icon {
    width: 40px; height: 40px;
    border-radius: 10px;
    background: var(--prn-surface-2);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
}
.prn-smart-card--alt .prn-smart-card-icon {
    width: 30px; height: 30px; font-size: 1rem;
}
.prn-smart-card-body { flex: 1; display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.prn-smart-card-title { font-weight: 600; font-size: 0.95rem; color: var(--prn-navy); }
.prn-smart-card-desc  { font-size: 0.8rem; color: var(--prn-muted); }
.prn-smart-card-matches {
    margin-top: 0.25rem;
    font-size: 0.7rem;
    color: var(--prn-muted);
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}
.prn-smart-match {
    padding: 0.05rem 0.45rem;
    background: var(--prn-teal-light, rgba(20,184,166,0.12));
    color: var(--prn-teal);
    border-radius: 999px;
    font-weight: 500;
}
.prn-smart-card-arrow {
    font-size: 1.2rem; color: var(--prn-teal); font-weight: 700; flex-shrink: 0;
}
.prn-smart-card-score {
    padding: 0.15rem 0.5rem;
    background: var(--prn-surface-2);
    border-radius: 999px;
    font-size: 0.72rem;
    color: var(--prn-muted);
    font-variant-numeric: tabular-nums;
}

/* Questions de désambiguïsation */
.prn-smart-followup {
    margin: 0.6rem 0.5rem;
    padding: 0.75rem 0.85rem;
    border: 1px dashed var(--prn-line);
    border-radius: 10px;
    background: var(--prn-surface-2);
}
.prn-smart-followup-head { font-size: 0.85rem; color: var(--prn-ink); margin-bottom: 0.55rem; }
.prn-smart-q {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.5rem 0;
    border-top: 1px dotted var(--prn-line-soft);
}
.prn-smart-q:first-of-type { border-top: 0; padding-top: 0; }
.prn-smart-q-label { font-size: 0.85rem; }
.prn-smart-q-btns { display: flex; gap: 0.35rem; flex-wrap: wrap; }
.prn-smart-q-btn {
    padding: 0.3rem 0.85rem;
    border: 1px solid var(--prn-line);
    border-radius: 999px;
    background: var(--prn-surface);
    color: var(--prn-ink);
    font-family: inherit;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color var(--t-fast) var(--ease-out),
                background var(--t-fast) var(--ease-out);
}
.prn-smart-q-btn:hover { border-color: var(--prn-teal); color: var(--prn-teal); }
.prn-smart-q-btn--skip { color: var(--prn-muted); }

/* Liste d'alternatives */
.prn-smart-alts {
    margin: 0.4rem 0.3rem 0.2rem;
}
.prn-smart-alts-head {
    padding: 0.55rem 0.55rem 0.2rem;
    font-size: 0.75rem;
    color: var(--prn-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
}

/* Pied de mode intelligent */
.prn-smart-foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.55rem 0.85rem;
    border-top: 1px solid var(--prn-line-soft);
    font-size: 0.75rem;
    color: var(--prn-muted);
}
.prn-smart-reset {
    padding: 0.3rem 0.7rem;
    background: transparent;
    border: 1px solid var(--prn-line);
    border-radius: 6px;
    color: var(--prn-ink);
    font-family: inherit;
    font-size: 0.78rem;
    cursor: pointer;
}
.prn-smart-reset:hover { border-color: var(--prn-teal); color: var(--prn-teal); }
.prn-smart-privacy { font-size: 0.72rem; }

/* État vide en mode intelligent */
.prn-smart-empty {
    padding: 1rem 1.2rem 1.4rem;
    color: var(--prn-ink);
    font-size: 0.9rem;
}
.prn-smart-empty p:first-of-type { color: var(--prn-muted); margin-bottom: 0.8rem; }
.prn-smart-hint { font-weight: 600; margin: 0.6rem 0 0.3rem; }
.prn-smart-examples { margin: 0; padding-left: 1.2rem; color: var(--prn-muted); font-size: 0.84rem; line-height: 1.6; }

/* ============================================================================
   Autocomplete dropdown — suggestions de phrases-types + « voulez-vous dire »
   ============================================================================ */
.prn-smart-suggest {
    border-bottom: 1px solid var(--prn-line-soft);
    background: var(--prn-surface-2);
    padding: 0.45rem 0.5rem 0.55rem;
    max-height: 320px;
    overflow-y: auto;
}
.prn-smart-suggest[hidden] { display: none !important; }

.prn-smart-suggest-label {
    display: block;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--prn-muted);
    font-weight: 600;
    padding: 0.15rem 0.45rem 0.3rem;
}

.prn-smart-suggest-corrections {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.45rem 0.55rem;
    margin-bottom: 0.35rem;
    border-bottom: 1px dashed var(--prn-line-soft);
}
.prn-smart-suggest-corrections .prn-smart-suggest-label {
    padding: 0;
}
.prn-smart-correct {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.25rem 0.55rem;
    background: rgba(245, 158, 11, 0.12);
    color: #b45309;
    border: 1px solid rgba(245, 158, 11, 0.35);
    border-radius: 999px;
    font-family: inherit;
    font-size: 0.78rem;
    cursor: pointer;
    transition: background var(--t-fast) var(--ease-out);
}
.prn-smart-correct:hover { background: rgba(245, 158, 11, 0.22); }
.prn-smart-correct-orig { text-decoration: line-through; opacity: 0.7; }
.prn-smart-correct-fix  { font-weight: 600; }
.prn-smart-correct-arrow { opacity: 0.55; }
[data-theme="dark"] .prn-smart-correct { color: #fcd34d; }

.prn-smart-suggest-list { display: flex; flex-direction: column; }
.prn-smart-suggest-item {
    text-align: left;
    background: transparent;
    border: 0;
    border-radius: 6px;
    padding: 0.45rem 0.6rem;
    font-family: inherit;
    font-size: 0.88rem;
    color: var(--prn-ink);
    cursor: pointer;
    transition: background var(--t-fast) var(--ease-out);
    line-height: 1.35;
}
.prn-smart-suggest-item:hover,
.prn-smart-suggest-item.is-active {
    background: var(--prn-int-hover-bg);
    color: var(--prn-teal);
}
.prn-smart-suggest-item.is-active::before {
    content: "↵";
    margin-right: 0.4rem;
    color: var(--prn-teal);
    font-weight: 600;
}

@media (max-width: 600px) {
    .prn-search-tab span:not(.prn-search-tab-badge) { display: none; }
    .prn-smart-card--primary { flex-wrap: wrap; }
}

/* Bouton imprimer dans la calc */
.calc-print-btn {
    margin-top: 0.85rem;
    width: 100%;
}

/* ============================================================================
   Menu calculatrices (3 options) + modals hépatique & QT
   ============================================================================ */

.prn-calc-menu {
    position: fixed;
    z-index: 95;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: 0.4rem;
    min-width: 280px;
    animation: prnPrefsIn 200ms var(--ease-out);
}
.prn-calc-menu-head {
    padding: 0.55rem 0.85rem 0.4rem;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--prn-muted);
    font-weight: 700;
    border-bottom: 1px solid var(--prn-line-soft);
    margin-bottom: 0.3rem;
}
.prn-calc-menu-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    background: transparent;
    border: 0;
    padding: 0.65rem 0.85rem;
    border-radius: 8px;
    cursor: pointer;
    text-align: left;
    color: var(--prn-ink);
    font-family: inherit;
    transition: background var(--t-fast) var(--ease-out);
}
.prn-calc-menu-item:hover { background: var(--prn-int-hover-bg); }
.pcm-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--logo-teal);
    background: var(--prn-teal-light);
    border-radius: 10px;
}
.pcm-icon svg { width: 22px; height: 22px; }
.prn-calc-menu-item:hover .pcm-icon {
    background: color-mix(in srgb, var(--prn-teal) 20%, transparent);
}
.pcm-body { display: flex; flex-direction: column; gap: 0.1rem; flex: 1; }
.pcm-title { font-size: 0.95rem; font-weight: 600; color: var(--prn-navy); }
.pcm-desc  { font-size: 0.78rem; color: var(--prn-muted); }

/* === Child-Pugh === */
.cp-intro { font-size: 0.85rem; color: var(--prn-ink-soft); margin: 0 0 1rem; }
.cp-rows { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1rem; }
.cp-row {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.55rem 0.7rem;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 10px;
}
.cp-row-label { flex: 0 0 38%; min-width: 0; }
.cp-row-label strong { display: block; font-size: 0.92rem; color: var(--prn-navy); }
.cp-row-label small { display: block; font-size: 0.72rem; color: var(--prn-muted); }
.cp-row-pills { flex: 1; display: flex; gap: 0.3rem; flex-wrap: wrap; }
.cp-row-pills button {
    flex: 1 1 auto;
    min-width: 0;
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    color: var(--prn-ink-soft);
    padding: 0.45rem 0.55rem;
    border-radius: 8px;
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    font-family: inherit;
    text-align: center;
    transition: background var(--t-fast) var(--ease-out),
                border-color var(--t-fast) var(--ease-out),
                color var(--t-fast) var(--ease-out);
}
.cp-row-pills button:hover { border-color: var(--prn-int-hover-border); }
.cp-row-pills button.is-selected {
    background: var(--logo-teal);
    border-color: var(--logo-teal);
    color: #ffffff;
    font-weight: 600;
}

.cp-result {
    background: var(--prn-surface-2);
    border-radius: var(--radius);
    padding: 0.85rem 1rem;
    border-left: 4px solid var(--prn-line);
}
.cp-result.is-ok     { border-left-color: var(--prn-success); }
.cp-result.is-warn   { border-left-color: var(--prn-warning); }
.cp-result.is-danger { border-left-color: var(--prn-danger); }
.cp-score { display: flex; align-items: baseline; gap: 0.85rem; margin-bottom: 0.4rem; flex-wrap: wrap; }
.cp-score-label { font-size: 0.78rem; color: var(--prn-muted); text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; }
.cp-score-value { font-size: 1.6rem; font-weight: 700; color: var(--prn-navy); font-variant-numeric: tabular-nums; }
.cp-score-class {
    display: inline-block;
    padding: 0.25rem 0.65rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 700;
    background: var(--prn-line);
    color: var(--prn-muted);
}
.cp-score-class.is-ok     { background: var(--prn-success-bg); color: var(--prn-success); }
.cp-score-class.is-warn   { background: var(--prn-warning-bg); color: var(--prn-warning); }
.cp-score-class.is-danger { background: var(--prn-danger-bg);  color: var(--prn-danger); }
.cp-implication { margin: 0; font-size: 0.85rem; color: var(--prn-ink); line-height: 1.5; }

/* === QT === */
.qt-risk-title {
    margin: 1.1rem 0 0.5rem;
    font-size: 0.92rem;
    color: var(--prn-navy);
    font-weight: 600;
}
.qt-risks {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.4rem;
    margin-bottom: 1rem;
}
.qt-risk-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.6rem;
    background: var(--prn-surface-2);
    border: 1px solid var(--prn-line);
    border-radius: 8px;
    font-size: 0.85rem;
    cursor: pointer;
    transition: border-color var(--t-fast) var(--ease-out);
}
.qt-risk-row:hover { border-color: var(--prn-int-hover-border); }
.qt-risk-row input { flex-shrink: 0; accent-color: var(--prn-int-strong); }
.qt-risk-row span:first-of-type { flex: 1; color: var(--prn-ink); }
.qt-pts {
    font-size: 0.72rem;
    background: var(--prn-line);
    color: var(--prn-muted);
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    font-weight: 600;
    flex-shrink: 0;
}
.qt-risk-row input:checked ~ .qt-pts {
    background: var(--logo-teal);
    color: #ffffff;
}

@media (max-width: 600px) {
    .qt-risks { grid-template-columns: 1fr; }
    .cp-row { flex-direction: column; align-items: stretch; gap: 0.4rem; }
    .cp-row-label { flex: 0 0 auto; }
}

/* ============================================================================
   Fiches-conseils OTC / auto-soins
   ----------------------------------------------------------------------------
   Format simple en grille de cartes pour les consultations sans wizard
   (rhume, fièvre, douleur aiguë, plaies, piqûres, aphtes, yeux, oreille,
    onychomycose, nourrisson, allaitement, suppléments, urgences, Rx, vaccins).
   ============================================================================ */
.prn-otc-page { padding-bottom: 3rem; }
.prn-otc-page .page-header { margin-bottom: 1.5rem; }

.prn-otc-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}
.prn-card {
    background: var(--prn-surface);
    border: 1px solid var(--prn-line);
    border-radius: var(--radius-lg);
    padding: 1rem 1.15rem 1.1rem;
    box-shadow: var(--shadow-sm);
}
.prn-card h2 {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 0.65rem;
    color: var(--prn-navy);
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.prn-card ul { margin: 0; padding-left: 1.15rem; font-size: 0.9rem; line-height: 1.55; color: var(--prn-ink); }
.prn-card li + li { margin-top: 0.3rem; }
.prn-card strong { color: var(--prn-navy); }
.prn-card em { color: var(--prn-muted); font-style: italic; }
.prn-card a { color: var(--prn-teal); text-decoration: underline; }
.prn-card a:hover { color: var(--prn-teal-dark, #0d8a78); }

.prn-card--ok { border-color: rgba(16, 185, 129, 0.35); background: linear-gradient(180deg, rgba(16,185,129,0.06), transparent 40%), var(--prn-surface); }
.prn-card--danger { border-color: rgba(239, 68, 68, 0.35); background: linear-gradient(180deg, rgba(239,68,68,0.06), transparent 40%), var(--prn-surface); }
.prn-card--info { border-color: rgba(59, 130, 246, 0.35); background: linear-gradient(180deg, rgba(59,130,246,0.05), transparent 40%), var(--prn-surface); }

[data-theme="dark"] .prn-card--ok { background: linear-gradient(180deg, rgba(16,185,129,0.12), transparent 40%), var(--prn-surface); }
[data-theme="dark"] .prn-card--danger { background: linear-gradient(180deg, rgba(239,68,68,0.13), transparent 40%), var(--prn-surface); }
[data-theme="dark"] .prn-card--info { background: linear-gradient(180deg, rgba(59,130,246,0.12), transparent 40%), var(--prn-surface); }

.prn-otc-footer-note {
    margin-top: 1.25rem;
    padding: 0.85rem 1rem;
    background: var(--prn-surface-2);
    border-left: 3px solid var(--prn-teal);
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--prn-ink);
}
.prn-otc-footer-note a { color: var(--prn-teal-strong); text-decoration: underline; }

@media (max-width: 600px) {
    .prn-otc-grid { grid-template-columns: 1fr; }
}

/* ============================================================================
   Bandeau « en provenance du triage » (passation de consultation)
   Injecté par js/ux-features.js en tête de <main> sur la page de destination.
   ========================================================================== */
.prn-triage-banner {
    display: block;
    margin: 0 0 1.2rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--prn-teal, #0d9488);
    border-left-width: 4px;
    border-radius: 10px;
    background: var(--prn-teal-light, color-mix(in srgb, #0d9488 8%, transparent));
    color: var(--prn-text, inherit);
    font-size: 0.9rem;
}
.prn-triage-banner-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}
.prn-triage-banner-head strong { font-size: 0.98rem; }
.prn-triage-banner p { margin: 0.25rem 0; }
.prn-triage-banner-note {
    margin-top: 0.5rem;
    font-size: 0.82rem;
    color: var(--prn-text-muted, #6b7280);
}
.prn-triage-banner-close {
    flex: none;
    border: none;
    background: none;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    color: var(--prn-text-muted, #6b7280);
    padding: 0.15rem 0.35rem;
    border-radius: 6px;
}
.prn-triage-banner-close:hover { background: color-mix(in srgb, currentColor 12%, transparent); }
