/* =============================================================================
   app.css — Design system du projet (aucune librairie externe, complète Bootstrap)
   =============================================================================
   Palette "aéronautique" sobre :
     - navy   : barres de navigation, titres
     - accent : liens, éléments actifs
     - fond   : gris très clair pour détacher les cartes
   ========================================================================== */

:root {
    --app-navy:      #16324f;
    --app-navy-2:    #1e4468;
    --app-accent:    #3d7ab8;
    --app-accent-2:  #6ea8dc;
    --app-bg:        #f2f5f9;
    --app-border:    #e3e9f0;
    --app-shadow:    0 1px 2px rgba(22, 50, 79, .06), 0 4px 14px rgba(22, 50, 79, .07);
}

body {
    background: var(--app-bg);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
}

/* ---------------------------------------------------------------------------
   Écran d'arrivée — animation courte affichée une fois par session
   ------------------------------------------------------------------------- */
html.has-arrival-splash:not(.splash-seen) {
    overflow: hidden;
}

html.splash-seen .arrival-splash {
    display: none;
}

.arrival-splash {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
    overflow: hidden;
    color: #fff;
    background:
        radial-gradient(circle at 50% 42%, rgba(110, 168, 220, .2), transparent 34%),
        linear-gradient(145deg, #0b1f33 0%, var(--app-navy) 52%, #1e4468 100%);
    opacity: 1;
    transition: opacity .35s ease, visibility .35s ease;
}

.arrival-splash.is-leaving {
    visibility: hidden;
    opacity: 0;
}

.arrival-splash__glow {
    position: absolute;
    width: min(78vw, 720px);
    aspect-ratio: 1;
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 50%;
    box-shadow:
        0 0 0 90px rgba(255, 255, 255, .025),
        0 0 0 180px rgba(255, 255, 255, .018);
    animation: splash-breathe 2s ease-in-out infinite;
}

.arrival-splash__content {
    position: relative;
    width: min(88vw, 520px);
    text-align: center;
    animation: splash-content-in .55s cubic-bezier(.2, .8, .2, 1) both;
}

.arrival-splash__orbit {
    position: relative;
    width: 92px;
    height: 92px;
    margin: 0 auto 1.35rem;
    border: 1px solid rgba(255, 255, 255, .24);
    border-radius: 50%;
}

.arrival-splash__orbit::before,
.arrival-splash__orbit::after {
    content: "";
    position: absolute;
    inset: 13px;
    border: 1px dashed rgba(110, 168, 220, .55);
    border-radius: 50%;
}

.arrival-splash__orbit::after {
    inset: 31px;
    border-style: solid;
    background: rgba(255, 255, 255, .06);
}

.arrival-splash__plane {
    position: absolute;
    z-index: 1;
    top: 50%;
    left: 50%;
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    margin: -15px;
    font-size: 1.2rem;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, .3));
    animation: splash-orbit 1.5s linear infinite;
}

.arrival-splash__eyebrow {
    margin-bottom: .55rem;
    color: var(--app-accent-2);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.arrival-splash__title {
    margin: 0;
    font-size: clamp(2.2rem, 7vw, 4rem);
    font-weight: 750;
    letter-spacing: -.04em;
}

.arrival-splash__subtitle {
    margin: .6rem 0 1.7rem;
    color: rgba(255, 255, 255, .7);
    font-size: clamp(.85rem, 2vw, 1rem);
}

.arrival-splash__progress {
    width: min(78%, 330px);
    height: 3px;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 99px;
    background: rgba(255, 255, 255, .13);
}

.arrival-splash__progress span {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--app-accent-2), #fff);
    transform: scaleX(0);
    transform-origin: left;
    animation: splash-progress 2s cubic-bezier(.2, .65, .35, 1) forwards;
}

.arrival-splash__loading {
    margin: .65rem 0 0;
    color: rgba(255, 255, 255, .52);
    font-size: .7rem;
    letter-spacing: .08em;
    text-transform: uppercase;
}

@keyframes splash-content-in {
    from { opacity: 0; transform: translateY(16px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes splash-orbit {
    from { transform: rotate(0deg) translateX(46px) rotate(90deg); }
    to { transform: rotate(360deg) translateX(46px) rotate(90deg); }
}

@keyframes splash-progress {
    0% { transform: scaleX(0); }
    70% { transform: scaleX(.76); }
    100% { transform: scaleX(1); }
}

@keyframes splash-breathe {
    0%, 100% { opacity: .65; transform: scale(.97); }
    50% { opacity: 1; transform: scale(1.03); }
}

@media (prefers-reduced-motion: reduce) {
    .arrival-splash__content,
    .arrival-splash__glow,
    .arrival-splash__plane,
    .arrival-splash__progress span {
        animation-timing-function: linear;
    }
}

/* ---------------------------------------------------------------------------
   Barre de navigation
   ------------------------------------------------------------------------- */
.navbar-app {
    background: linear-gradient(90deg, var(--app-navy) 0%, var(--app-navy-2) 100%);
    box-shadow: 0 2px 8px rgba(22, 50, 79, .25);
}
.navbar-app .navbar-brand {
    font-weight: 700;
    letter-spacing: .02em;
}
.navbar-app .nav-link { color: rgba(255, 255, 255, .82); }
.navbar-app .nav-link:hover,
.navbar-app .nav-link:focus { color: #fff; }
.navbar-app .nav-link.active {
    color: #fff;
    border-bottom: 2px solid var(--app-accent-2);
}
.navbar-app .dropdown-menu {
    border: none;
    box-shadow: var(--app-shadow);
    border-radius: .5rem;
}
.navbar-app .dropdown-item.active { background: var(--app-accent); }

.interface-mode-form {
    display: flex;
    align-items: center;
    margin-left: 1rem;
}
.interface-mode-toggle {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .34rem .42rem .34rem .72rem;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: .7rem;
    background: rgba(255, 255, 255, .08);
    transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.interface-mode-toggle:hover,
.interface-mode-toggle:focus-visible {
    border-color: rgba(255, 255, 255, .48);
    background: rgba(255, 255, 255, .14);
}
.interface-mode-toggle:focus-visible {
    outline: 3px solid rgba(110, 168, 220, .45);
    outline-offset: 2px;
}
.interface-mode-toggle:active { transform: scale(.98); }
.interface-mode-toggle__text {
    min-width: 66px;
    text-align: left;
    line-height: 1.05;
}
.interface-mode-toggle__text small,
.interface-mode-toggle__text strong { display: block; }
.interface-mode-toggle__text small {
    margin-bottom: .16rem;
    color: rgba(255, 255, 255, .58);
    font-size: .55rem;
    font-weight: 750;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.interface-mode-toggle__text strong {
    font-size: .72rem;
    font-weight: 720;
}
.interface-mode-toggle__track {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 58px;
    height: 28px;
    align-items: center;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 999px;
    background: rgba(4, 17, 29, .35);
}
.interface-mode-toggle__label {
    position: relative;
    z-index: 2;
    color: rgba(255, 255, 255, .5);
    font-size: .58rem;
    font-weight: 850;
    text-align: center;
    transition: color .2s ease;
}
.interface-mode-toggle__thumb {
    position: absolute;
    z-index: 1;
    top: 2px;
    left: 2px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .24);
    transition: transform .22s cubic-bezier(.2, .8, .2, 1);
}
.interface-mode-toggle.is-expert .interface-mode-toggle__label:first-child,
.interface-mode-toggle.is-technician .interface-mode-toggle__label:nth-child(2) { color: var(--app-navy); }
.interface-mode-toggle.is-technician .interface-mode-toggle__thumb { transform: translateX(30px); }

@media (max-width: 991.98px) {
    .interface-mode-form {
        margin: .75rem 0 .25rem;
        padding-top: .75rem;
        border-top: 1px solid rgba(255, 255, 255, .12);
    }
}

/* ---------------------------------------------------------------------------
   Titres de page
   ------------------------------------------------------------------------- */
.page-header { margin: 0 0 1.5rem 0; }
.page-header h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--app-navy);
    margin-bottom: .15rem;
}
.page-header .subtitle {
    color: #64748b;
    font-size: .95rem;
    margin: 0;
}

/* ---------------------------------------------------------------------------
   Cartes
   ------------------------------------------------------------------------- */
.card {
    border: 1px solid var(--app-border);
    border-radius: .6rem;
    box-shadow: var(--app-shadow);
}
.card-header {
    background: #fff;
    border-bottom: 1px solid var(--app-border);
    font-weight: 600;
    color: var(--app-navy);
}

/* Carte-lien (tableau de bord, page des diagrammes) */
.card-link {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: transform .12s ease, box-shadow .12s ease;
    height: 100%;
}
.card-link:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 22px rgba(22, 50, 79, .16);
    color: inherit;
}
.card-link .icon {
    font-size: 1.9rem;
    line-height: 1;
}

/* Statistiques du tableau de bord */
.stat-card .stat-value {
    font-size: 1.7rem;
    font-weight: 700;
    color: var(--app-navy);
    line-height: 1.1;
}
.stat-card .stat-label {
    color: #64748b;
    font-size: .85rem;
}


/* Pilotage opérationnel du tableau de bord */
.dashboard-operations{padding:1.3rem;border:1px solid var(--app-border);border-radius:1rem;background:#fff;box-shadow:var(--app-shadow)}
.dashboard-section-heading,.dashboard-panel__header,.dashboard-progress-card__summary{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.dashboard-section-heading{margin-bottom:1rem}
.dashboard-section-heading h2,.dashboard-panel__header h2{margin:.12rem 0 0;color:var(--app-navy);font-size:1.05rem;font-weight:720}
.dashboard-section-heading p{margin:.25rem 0 0;color:#718096;font-size:.78rem}
.dashboard-eyebrow{display:block;color:var(--app-accent);font-size:.62rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.dashboard-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}
.dashboard-status{display:flex;align-items:center;gap:.8rem;min-width:0;padding:.9rem;border:1px solid #e5ebf1;border-radius:.75rem;background:#f9fbfc}
.dashboard-status__icon{display:grid;flex:0 0 auto;width:38px;height:38px;place-items:center;color:#657586;border-radius:.65rem;background:#e9eef2;font-size:1rem;font-weight:800}
.dashboard-status strong,.dashboard-status span,.dashboard-status small{display:block}
.dashboard-status strong{color:#25384b;font-size:1.35rem;line-height:1}
.dashboard-status div>span{margin-top:.23rem;color:#455a6e;font-size:.75rem;font-weight:700}
.dashboard-status small{color:#8795a3;font-size:.62rem}
.dashboard-status--planned .dashboard-status__icon{color:#246da8;background:#e4f1fb}
.dashboard-status--done .dashboard-status__icon{color:#19704d;background:#dff5eb}
.dashboard-status--failed .dashboard-status__icon{color:#a73535;background:#fde8e8}
.dashboard-status--failed strong{color:#a73535}
.dashboard-progress-card{margin-top:.8rem;padding:.8rem .9rem;border-radius:.7rem;background:#f2f6fa}
.dashboard-progress-card__summary>div{display:flex;align-items:baseline;gap:.6rem}
.dashboard-progress-card__summary span{color:#607386;font-size:.72rem;font-weight:700}
.dashboard-progress-card__summary strong{color:var(--app-navy)}
.dashboard-progress-card__summary p{margin:0;color:#718096;font-size:.7rem}
.dashboard-progress-card__summary p small{margin-left:.35rem}
.dashboard-progress{height:7px;margin-top:.6rem;overflow:hidden;border-radius:999px;background:#dce5ed}
.dashboard-progress>span{display:block;height:100%;min-width:2px;border-radius:inherit;background:linear-gradient(90deg,var(--app-accent),#5fbd98)}
.dashboard-panel{overflow:hidden;border:1px solid var(--app-border);border-radius:1rem;background:#fff;box-shadow:var(--app-shadow)}
.dashboard-panel__header{min-height:70px;padding:1rem 1.15rem;border-bottom:1px solid #edf1f4}
.dashboard-count-badge{padding:.28rem .55rem;color:#46647d;border-radius:999px;background:#eaf1f6;font-size:.67rem;font-weight:700;white-space:nowrap}
.planned-operation{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:.9rem;padding:.75rem 1.15rem;color:inherit;border-bottom:1px solid #edf1f4;text-decoration:none;transition:background .15s ease}
.planned-operation:last-child{border-bottom:0}.planned-operation:hover{color:inherit;background:#f7fafc}
.planned-operation__date{display:grid;place-items:center;min-height:48px;color:#286b9f;border:1px solid #d6e7f3;border-radius:.6rem;background:#edf6fb}
.planned-operation__date strong{font-size:1.05rem;line-height:1}.planned-operation__date span{font-size:.57rem;font-weight:800;letter-spacing:.06em}
.planned-operation__date.is-overdue{color:#a73535;border-color:#f0caca;background:#fdecec}
.planned-operation__body{min-width:0}.planned-operation__body>strong{display:block;overflow:hidden;color:#31475a;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}
.planned-operation__meta{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.25rem;color:#7b8996;font-size:.65rem}
.planned-operation__meta span+span::before{content:"·";margin-right:.55rem}
.planned-operation__alert{padding:.25rem .45rem;color:#a73535;border-radius:.4rem;background:#fde8e8;font-size:.62rem;font-weight:750}.planned-operation__arrow{color:#8a99a7}
.dashboard-empty-state{display:flex;align-items:center;gap:1rem;min-height:142px;padding:1.2rem}
.dashboard-empty-state>span{display:grid;flex:0 0 auto;width:44px;height:44px;place-items:center;color:#4c7ba4;border-radius:50%;background:#eaf2f8;font-size:1.15rem}
.dashboard-empty-state>div{flex:1}.dashboard-empty-state strong{color:#344b5f;font-size:.85rem}.dashboard-empty-state p{max-width:540px;margin:.2rem 0 0;color:#7b8996;font-size:.72rem}
.dashboard-coverage-list{display:grid;gap:1rem;padding:1rem 1.15rem}
.dashboard-coverage>div:first-child{display:flex;justify-content:space-between;gap:1rem;color:#536779;font-size:.7rem}.dashboard-coverage>div:first-child strong{color:#314a5f;font-size:.72rem}
.dashboard-coverage__bar{height:6px;margin:.35rem 0;overflow:hidden;border-radius:999px;background:#e5ebf0}.dashboard-coverage__bar>span{display:block;height:100%;border-radius:inherit;background:var(--app-accent)}
.dashboard-coverage small{color:#8a97a4;font-size:.62rem}
.dashboard-reference-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #edf1f4;background:#f8fafc}
.dashboard-reference-summary>div{min-width:0;padding:.8rem .45rem;text-align:center}.dashboard-reference-summary>div+div{border-left:1px solid #e5ebf0}
.dashboard-reference-summary strong,.dashboard-reference-summary span{display:block}.dashboard-reference-summary strong{color:var(--app-navy);font-size:.95rem}.dashboard-reference-summary span{color:#758596;font-size:.57rem;line-height:1.25}
@media(max-width:991.98px){.dashboard-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.dashboard-section-heading,.dashboard-progress-card__summary,.dashboard-empty-state{align-items:flex-start;flex-direction:column}.dashboard-section-heading .btn{width:100%}.dashboard-status-grid{grid-template-columns:1fr}.dashboard-progress-card__summary p{text-align:left}.planned-operation{grid-template-columns:48px minmax(0,1fr);padding-inline:.85rem}.planned-operation__arrow,.planned-operation__alert{grid-column:2;justify-self:start}.dashboard-empty-state .btn{width:100%}}

/* ---------------------------------------------------------------------------
   Pages CRUD : formulaire collant + liste filtrable
   ------------------------------------------------------------------------- */
.sticky-form { position: sticky; top: 1rem; }

.list-scroll {
    max-height: 65vh;
    overflow-y: auto;
}

/* ---------------------------------------------------------------------------
   Texte tronqué avec info-bulle native (title)
   ------------------------------------------------------------------------- */
.cell-truncate {
    display: inline-block;
    max-width: 340px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

/* ---------------------------------------------------------------------------
   Autocomplete (page Relations)
   ------------------------------------------------------------------------- */
.autocomplete-wrap { position: relative; }
.autocomplete-results {
    position: absolute;
    z-index: 1000;
    background: white;
    border: 1px solid var(--app-border);
    border-radius: 0 0 .375rem .375rem;
    max-height: 260px;
    overflow-y: auto;
    width: 100%;
    box-shadow: var(--app-shadow);
}
.autocomplete-results .item {
    padding: .4rem .75rem;
    cursor: pointer;
    font-size: .9rem;
}
.autocomplete-results .item:hover,
.autocomplete-results .item.active { background: #e9eef5; }

/* ---------------------------------------------------------------------------
   Barre d'actions collante (page Précédences)
   ------------------------------------------------------------------------- */
.action-bar {
    position: sticky;
    top: 10px;
    z-index: 50;
}

.precedence-section-nav {
    position: sticky;
    top: 10px;
    z-index: 55;
    display: grid;
    grid-template-columns: repeat(4, minmax(125px, 1fr));
    gap: .5rem;
    margin: 0 0 1.25rem;
    padding: .55rem;
    overflow-x: auto;
    border: 1px solid var(--app-border);
    border-radius: 16px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 10px 30px rgba(26, 51, 70, .09);
    backdrop-filter: blur(12px);
}
.precedence-section-nav a {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
    padding: .55rem .7rem;
    color: #536576;
    border: 1px solid transparent;
    border-radius: 11px;
    text-decoration: none;
    transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.precedence-section-nav a:hover,
.precedence-section-nav a:focus-visible {
    transform: translateY(-1px);
    border-color: #ccd9e3;
    background: #f5f8fa;
}
.precedence-section-nav strong {
    display: grid;
    flex: 0 0 auto;
    min-width: 2rem;
    height: 2rem;
    place-items: center;
    border-radius: 9px;
    background: #edf2f6;
    color: #29485a;
    font-variant-numeric: tabular-nums;
}
.precedence-section-nav span {
    overflow: hidden;
    font-size: .76rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.precedence-section-nav .is-success strong { color: #16764f; background: #e5f6ed; }
.precedence-section-nav .is-warning strong { color: #936514; background: #fff3d5; }
.precedence-section-nav .is-danger strong { color: #a23c45; background: #fdebed; }
.precedence-section-nav ~ form .action-bar { top: 82px; }
.precedence-section { scroll-margin-top: 90px; }
#btn-delete-selected.is-loading {
    opacity: .72;
    cursor: wait;
}

/* ---------------------------------------------------------------------------
   Priorisation valeur / coût
   ------------------------------------------------------------------------- */
.valo-page{--valo-ink:#102a43;--valo-muted:#62748a;--valo-blue:#2563a8;--valo-blue-soft:#e9f2fc;--valo-green:#16845b;--valo-green-soft:#e7f6ef;--valo-red:#c24650;--valo-red-soft:#fdecef;--valo-amber:#a5680e;--valo-amber-soft:#fff2cf;color:var(--valo-ink);padding-bottom:2rem}
.valo-hero{position:relative;isolation:isolate;display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;overflow:hidden;margin:-.25rem 0 1.25rem;padding:2rem 2.15rem;border-radius:20px;color:#fff;background:radial-gradient(circle at 88% 10%,rgba(110,168,220,.4),transparent 26%),linear-gradient(125deg,#102a43 0%,#174b75 62%,#2f77ad 100%);box-shadow:0 16px 40px rgba(22,50,79,.18)}
.valo-hero::after{content:"";position:absolute;z-index:-1;right:-85px;bottom:-140px;width:310px;height:310px;border:1px solid rgba(255,255,255,.14);border-radius:50%;box-shadow:0 0 0 42px rgba(255,255,255,.045),0 0 0 84px rgba(255,255,255,.025)}
.valo-eyebrow{display:block;margin-bottom:.4rem;color:var(--app-accent-2);font-size:.72rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}
.valo-hero h1{margin:0 0 .55rem;font-size:clamp(1.75rem,3vw,2.55rem);font-weight:750;letter-spacing:-.035em}
.valo-hero p{max-width:680px;margin:0;color:rgba(255,255,255,.78);font-size:.98rem}
.valo-hero-summary{display:grid;flex:0 0 auto;gap:.4rem;min-width:210px}
.valo-hero-summary span{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.42rem .65rem;border:1px solid rgba(255,255,255,.13);border-radius:9px;background:rgba(255,255,255,.075);color:rgba(255,255,255,.75);font-size:.75rem}
.valo-hero-summary strong{color:#fff;font-size:1rem}
.valo-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:1rem}
.valo-kpi{position:relative;overflow:hidden;min-height:136px;padding:1.15rem 1.2rem;border:1px solid var(--app-border);border-radius:14px;background:#fff;box-shadow:var(--app-shadow)}
.valo-kpi::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#7e91a6}
.valo-kpi--success::before{background:var(--valo-green)}.valo-kpi--danger::before{background:var(--valo-red)}.valo-kpi--accent::before{background:var(--valo-blue)}
.valo-kpi__label{display:block;margin-bottom:.85rem;color:var(--valo-muted);font-size:.73rem;font-weight:750;letter-spacing:.045em;text-transform:uppercase}
.valo-kpi strong{display:block;margin-bottom:.35rem;color:var(--valo-ink);font-size:clamp(1.35rem,2.2vw,1.9rem);line-height:1}.valo-kpi--success strong{color:var(--valo-green)}.valo-kpi--danger strong{color:var(--valo-red)}.valo-kpi--accent strong{color:var(--valo-blue)}
.valo-kpi small{color:var(--valo-muted);font-size:.76rem}
.valo-method-note{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:1rem;border:1px solid #d9e5f0;border-radius:13px;background:#f7fafd;overflow:hidden}
.valo-method-note>div{padding:.85rem 1rem}.valo-method-note>div+div{border-left:1px solid #d9e5f0}.valo-method-note strong,.valo-method-note span{display:block}.valo-method-note strong{margin-bottom:.15rem;color:var(--valo-ink);font-size:.79rem}.valo-method-note span{color:var(--valo-muted);font-size:.74rem;line-height:1.45}.valo-method-note .valo-method-note__warning{background:var(--valo-amber-soft)}.valo-method-note__warning strong{color:var(--valo-amber)}
.valo-panel{margin-bottom:1rem;overflow:hidden;border:1px solid var(--app-border);border-radius:16px;background:#fff;box-shadow:var(--app-shadow)}
.valo-panel__header{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;padding:1.3rem 1.4rem 1rem;border-bottom:1px solid #edf1f5}
.valo-panel__header h2{margin:0 0 .25rem;color:var(--valo-ink);font-size:1.15rem;font-weight:750}.valo-panel__header p{margin:0;color:var(--valo-muted);font-size:.82rem}
.valo-chart-legend{display:flex;flex:0 0 auto;gap:1rem;color:var(--valo-muted);font-size:.74rem}.valo-chart-legend span{display:inline-flex;align-items:center;gap:.4rem}.valo-legend-dot{width:9px;height:9px;border-radius:50%}.valo-legend-dot--positive{background:var(--valo-green)}.valo-legend-dot--negative{background:var(--valo-red)}
.valo-scatter{position:relative;height:350px;margin:2.2rem 2.1rem 3.1rem 4rem;border-left:1px solid #9cb0c3;border-bottom:1px solid #9cb0c3;border-radius:5px 5px 0 0;background:linear-gradient(135deg,rgba(22,132,91,.09) 0%,rgba(22,132,91,.015) 45%,rgba(194,70,80,.055) 100%),repeating-linear-gradient(to top,transparent,transparent calc(25% - 1px),rgba(125,145,166,.15) 25%),repeating-linear-gradient(to right,transparent,transparent calc(25% - 1px),rgba(125,145,166,.15) 25%)}
.valo-quadrant-label{position:absolute;top:.75rem;left:.85rem;color:var(--valo-green);font-size:.72rem;font-weight:750}
.valo-dot{position:absolute;z-index:2;width:15px;height:15px;border:3px solid #fff;border-radius:50%;transform:translate(-50%,50%);cursor:pointer;box-shadow:0 1px 6px rgba(16,42,67,.32);transition:transform .16s ease,box-shadow .16s ease}.valo-dot--positive{background:var(--valo-green)}.valo-dot--negative{background:var(--valo-red)}
.valo-dot:hover,.valo-dot:focus-visible{z-index:10;outline:none;transform:translate(-50%,50%) scale(1.45);box-shadow:0 2px 12px rgba(16,42,67,.36)}
.valo-dot-label{position:absolute;bottom:calc(100% + 9px);left:50%;display:none;min-width:160px;padding:.45rem .55rem;border-radius:7px;color:#fff;background:rgba(16,42,67,.96);font-size:.68rem;line-height:1.35;text-align:center;transform:translateX(-50%);white-space:nowrap}.valo-dot-label strong{display:block;max-width:280px;overflow:hidden;text-overflow:ellipsis}.valo-dot:hover .valo-dot-label,.valo-dot:focus-visible .valo-dot-label{display:block}
.valo-axis-y,.valo-axis-x{position:absolute;color:var(--valo-muted);font-size:.72rem;font-weight:650}.valo-axis-y{left:-3.15rem;top:50%;transform:rotate(-90deg) translateX(50%);transform-origin:left center;white-space:nowrap}.valo-axis-x{right:0;bottom:-1.8rem}
.valo-ranking .table-responsive{margin-bottom:0}.valo-table{margin:0;color:var(--valo-ink);font-size:.82rem}.valo-table thead th{padding:.72rem .75rem;border-bottom:1px solid #dce5ee;color:var(--valo-muted);background:#f7f9fc;font-size:.68rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase;white-space:nowrap}.valo-table tbody td,.valo-table tbody th{padding:.85rem .75rem;border-color:#edf1f5}.valo-table tbody tr{transition:background-color .12s ease}.valo-table tbody tr:hover{background:#f8fbfe}
.valo-rank{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;color:#587086;background:#eef3f7;font-size:.75rem}.valo-table tbody tr:nth-child(-n+3) .valo-rank{color:#fff;background:var(--app-navy-2)}
.valo-component{min-width:230px}.valo-component__name{display:inline-block;margin-bottom:.35rem;color:var(--valo-ink);font-weight:750;line-height:1.3;text-decoration:none}.valo-component__name:hover{color:var(--valo-blue);text-decoration:underline}.valo-component__meta{display:flex;flex-wrap:wrap;gap:.35rem}
.valo-prerequisite-badge,.valo-unresolved-badge,.valo-roi,.valo-number-pill{display:inline-flex;align-items:center;border-radius:999px;font-size:.7rem;font-weight:750;white-space:nowrap}.valo-prerequisite-badge{padding:.25rem .55rem;color:#195b96;background:var(--valo-blue-soft)}.valo-prerequisite-badge.is-zero{color:#718397;background:#eef2f6}.valo-unresolved-badge{padding:.25rem .55rem;color:var(--valo-amber);background:var(--valo-amber-soft)}.valo-number-pill{justify-content:center;min-width:30px;padding:.25rem .48rem;color:#3f566b;background:#edf2f6}.valo-roi{padding:.3rem .58rem}.valo-roi.is-positive{color:var(--valo-green);background:var(--valo-green-soft)}.valo-roi.is-negative{color:var(--valo-red);background:var(--valo-red-soft)}
.valo-progress{height:7px;margin-bottom:.35rem;border-radius:99px;background:#e9eef3}.valo-progress-label{color:var(--valo-muted);font-size:.68rem}
@media(max-width:991.98px){.valo-hero{align-items:stretch;flex-direction:column}.valo-hero-summary{grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.valo-hero-summary span{align-items:flex-start;flex-direction:column;gap:.1rem}.valo-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.valo-method-note{grid-template-columns:1fr}.valo-method-note>div+div{border-top:1px solid #d9e5f0;border-left:0}}
@media(max-width:575.98px){.valo-hero{padding:1.45rem;border-radius:14px}.valo-hero-summary,.valo-kpi-grid{grid-template-columns:1fr}.valo-panel__header{align-items:flex-start;flex-direction:column}.valo-chart-legend{flex-wrap:wrap}.valo-scatter{height:280px;margin-right:1rem;margin-left:3.3rem}}
/* ---------------------------------------------------------------------------
   Parcours d'import : numéros d'étapes
   ------------------------------------------------------------------------- */
.step-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: var(--app-navy);
    color: #fff;
    font-weight: 700;
    flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   Procédures de démantèlement
   ------------------------------------------------------------------------- */
.procedure-page-kicker,
.procedure-kicker,
.procedure-step__label,
.procedure-detail-label {
    display: block;
    color: var(--app-accent);
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.procedure-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(1.4rem, 3vw, 2.4rem);
    color: #fff;
    border-radius: 1rem;
    background:
        radial-gradient(circle at 88% 8%, rgba(110, 168, 220, .28), transparent 35%),
        linear-gradient(135deg, #102b45, var(--app-navy-2));
    box-shadow: 0 15px 45px rgba(22, 50, 79, .18);
}

.procedure-hero::after {
    content: "";
    position: absolute;
    right: -70px;
    bottom: -120px;
    width: 330px;
    height: 330px;
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 50%;
    box-shadow: 0 0 0 55px rgba(255, 255, 255, .025), 0 0 0 110px rgba(255, 255, 255, .018);
}

.procedure-hero > * { position: relative; z-index: 1; }
.procedure-hero__top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 2rem; }
.procedure-hero .procedure-kicker { color: rgba(255, 255, 255, .55); }
.procedure-back { color: #fff; font-size: .82rem; font-weight: 650; text-decoration: none; }
.procedure-back:hover { color: var(--app-accent-2); }
.procedure-back span { margin-right: .35rem; }
.procedure-hero h1 { max-width: 760px; margin: 0; font-size: clamp(1.8rem, 4vw, 3rem); font-weight: 760; letter-spacing: -.035em; }
.procedure-hero p { max-width: 680px; margin: .7rem 0 0; color: rgba(255, 255, 255, .7); }

.procedure-progress__labels { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .55rem; }
.procedure-progress__labels strong { font-size: .9rem; }
.procedure-progress__labels span { color: rgba(255, 255, 255, .6); font-size: .75rem; }
.procedure-progress { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(110, 128, 148, .18); }
.procedure-progress > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #5fa3df, #8bd5c3); transition: width .4s ease; }

.procedure-stats { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.8rem; }
.procedure-stats > div { display: flex; align-items: baseline; gap: .42rem; min-width: 120px; padding: .65rem .85rem; border: 1px solid rgba(255, 255, 255, .1); border-radius: .65rem; background: rgba(255, 255, 255, .07); }
.procedure-stats strong { font-size: 1.15rem; }
.procedure-stats span { color: rgba(255, 255, 255, .66); font-size: .72rem; }
.procedure-stats .is-done strong { color: #8be1bd; }
.procedure-stats .is-failed strong { color: #ff9c9c; }
.procedure-stats .is-skipped strong { color: #c3ccd6; }

.procedure-timeline { max-width: 1050px; margin: 0 auto; }
.procedure-dependency-summary { display: flex; align-items: center; gap: .7rem; margin: 0 0 1.15rem 68px; padding: .75rem .9rem; color: #72501d; border: 1px solid #edd19d; border-radius: .7rem; background: #fff8e9; }
.procedure-dependency-summary > span { display: grid; flex: 0 0 auto; place-items: center; width: 30px; height: 30px; color: #fff; border-radius: 50%; background: #c88725; font-size: 1rem; font-weight: 800; }
.procedure-dependency-summary strong, .procedure-dependency-summary small { display: block; }
.procedure-dependency-summary strong { font-size: .78rem; }
.procedure-dependency-summary small { margin-top: .12rem; color: #98733d; font-size: .67rem; }
.procedure-step { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 1rem; scroll-margin-top: 1rem; }
.procedure-step__rail { position: relative; display: flex; justify-content: center; }
.procedure-step__rail::after { content: ""; position: absolute; top: 46px; bottom: 0; width: 2px; background: #dce5ee; }
.procedure-step:last-child .procedure-step__rail::after { display: none; }
.procedure-step__rail > span { position: relative; z-index: 1; display: grid; place-items: center; width: 38px; height: 38px; color: #fff; border: 5px solid var(--app-bg); border-radius: 50%; background: var(--app-navy); box-sizing: content-box; font-size: .82rem; font-weight: 750; }
.procedure-step.is-prerequisite .procedure-step__rail > span { background: #b6781d; }
.procedure-step.is-target .procedure-step__rail > span { background: var(--app-accent); }
.procedure-step__body { min-width: 0; padding-bottom: 2.1rem; }
.procedure-step__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin: .25rem 0 1rem; }
.procedure-step__header h2 { margin: .15rem 0 0; color: var(--app-navy); font-size: clamp(1.05rem, 2vw, 1.3rem); font-weight: 720; }
.procedure-step__eyebrow { display: flex; align-items: center; gap: .45rem; }
.procedure-step__kind { padding: .18rem .38rem; color: #8c5b16; border-radius: 999px; background: #fff0cf; font-size: .58rem; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.procedure-step.is-target .procedure-step__kind { color: #246b9e; background: #e7f3fc; }
.procedure-ata-reference { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; margin-top: .45rem; }
.procedure-ata-reference > span { display: inline-flex; align-items: baseline; gap: .3rem; padding: .28rem .48rem; color: #315e7b; border: 1px solid #d4e6f2; border-radius: .42rem; background: #edf6fb; }
.procedure-ata-reference > span > small { display: inline; color: #6e8495; font-size: .58rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.procedure-ata-reference > span > strong { display: inline; color: #245b7b; font-size: .7rem; }
.procedure-ata-reference--compact { margin-top: .35rem; }
.procedure-ata-reference--compact > span { padding: .2rem .38rem; }
.procedure-ata-reference--card { margin: -.1rem 0 .75rem; }
.ata-inline-reference {
    display: inline-flex;
    align-items: center;
    margin-left: .35rem;
    padding: .14rem .38rem;
    color: #245b7b;
    border: 1px solid #d4e6f2;
    border-radius: .38rem;
    background: #edf6fb;
    font-size: .64rem;
    font-weight: 700;
    line-height: 1.2;
    vertical-align: middle;
    white-space: nowrap;
}
.procedure-step__aside { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: .45rem; color: #718096; font-size: .72rem; }
.procedure-figure-button { color: var(--app-navy); border: 1px solid #d9e3ed; background: #fff; }
.procedure-figure-button:hover { color: #fff; background: var(--app-navy); }
.procedure-figure-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.procedure-figure { display: grid; grid-template-columns: minmax(120px, .8fr) minmax(150px, 1.2fr); align-items: center; gap: .8rem; padding: .8rem; border: 1px solid var(--app-border); border-radius: .8rem; background: #fff; }
.procedure-figure strong { display: block; color: var(--app-navy); font-size: .9rem; }
.procedure-figure__preview { position: relative; display: block; overflow: hidden; max-height: 240px; border-radius: .55rem; background: #e8edf2; }
.procedure-figure__preview img { display: block; width: 100%; max-height: 240px; object-fit: cover; }
.procedure-figure__preview span { position: absolute; right: .5rem; bottom: .5rem; padding: .3rem .55rem; color: #fff; border-radius: .35rem; background: rgba(13, 31, 49, .82); font-size: .7rem; }

.procedure-operations { display: grid; gap: .65rem; }
.procedure-operation { overflow: hidden; border: 1px solid var(--app-border); border-left: 4px solid #aab8c5; border-radius: .8rem; background: #fff; box-shadow: 0 2px 10px rgba(22, 50, 79, .045); scroll-margin-top: 1rem; }
.procedure-operation.status-planned { border-left-color: #4d8dc4; }
.procedure-operation.status-done { border-left-color: #2f9d72; }
.procedure-operation.status-failed { border-left-color: #d45555; }
.procedure-operation.status-skipped { border-left-color: #8b98a5; }
.procedure-operation.is-next { border-color: #8ab6dc; border-left-color: var(--app-accent); box-shadow: 0 7px 24px rgba(61, 122, 184, .13); }
.procedure-operation__summary { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr) 24px; align-items: center; min-height: 78px; padding: 0 .85rem; }
.procedure-operation__index { display: grid; place-items: center; width: 26px; height: 26px; color: #6b7a89; border-radius: .45rem; background: #eef3f7; font-size: .7rem; font-weight: 750; }
.procedure-operation__toggle { display: grid; grid-template-columns: 105px minmax(0, 1fr) auto; align-items: center; gap: 1rem; width: 100%; padding: .9rem .4rem; text-align: left; border: 0; background: transparent; }
.procedure-operation__toggle strong { min-width: 0; color: #25384b; font-size: .9rem; line-height: 1.4; }
.procedure-operation__meta { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .35rem; }
.procedure-operation__meta span { padding: .25rem .45rem; color: #66788a; border-radius: .35rem; background: #f1f4f7; font-size: .67rem; white-space: nowrap; }
.procedure-operation__meta .is-ata { color: #245b7b; border: 1px solid #d4e6f2; background: #edf6fb; }

.procedure-chevron { color: #8595a4; font-size: 1.15rem; transition: transform .2s ease; }
.procedure-operation__summary:has(.procedure-operation__toggle[aria-expanded="true"]) .procedure-chevron { transform: rotate(180deg); }
.procedure-status { display: inline-flex; align-items: center; gap: .35rem; color: #657586; font-size: .7rem; font-weight: 700; white-space: nowrap; }
.procedure-status > span { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #edf1f4; }
.status-planned .procedure-status { color: #3378b3; }
.status-planned .procedure-status > span { background: #e4f1fb; }
.status-done .procedure-status { color: #21805a; }
.status-done .procedure-status > span { background: #dff5eb; }
.status-failed .procedure-status { color: #b13c3c; }
.status-failed .procedure-status > span { background: #fde8e8; }
.status-skipped .procedure-status { color: #667380; }
.status-skipped .procedure-status > span { background: #e9edf0; }

.procedure-operation__details { padding: 1.1rem 1.25rem 1.3rem; border-top: 1px solid #edf1f4; background: #fbfcfd; }
.procedure-next-callout { margin-bottom: 1rem; padding: .6rem .75rem; color: #496276; border-radius: .5rem; background: #eaf4fc; font-size: .78rem; }
.procedure-next-callout span { margin-right: .4rem; color: #246b9e; font-weight: 750; }
.procedure-status-panel { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; padding: 1rem; border: 1px solid #dfe7ee; border-radius: .7rem; background: #fff; }
.procedure-status-panel p { margin: .18rem 0 0; color: #778797; font-size: .72rem; }
.procedure-status-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .35rem; }
.status-action { display: inline-flex; align-items: center; gap: .3rem; padding: .42rem .55rem; color: #4d5d6c; border: 1px solid #d8e0e7; border-radius: .45rem; background: #fff; font-size: .7rem; font-weight: 680; transition: all .12s ease; }
.status-action:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 3px 8px rgba(22, 50, 79, .09); }
.status-action--planned:hover:not(:disabled) { color: #246da8; border-color: #7fb3db; background: #eef7fd; }
.status-action--done:hover:not(:disabled) { color: #19704d; border-color: #75c4a4; background: #ebf8f2; }
.status-action--failed:hover:not(:disabled) { color: #a73535; border-color: #e49a9a; background: #fff2f2; }
.status-action--skipped:hover:not(:disabled) { color: #54606c; border-color: #aeb8c1; background: #f2f4f6; }
.status-action.is-active { color: #fff; border-color: var(--app-navy); background: var(--app-navy); opacity: .85; }

.procedure-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: .3rem 0 1rem; }
.procedure-detail-grid > div { padding: .9rem; border: 1px solid #e7edf2; border-radius: .65rem; background: #fff; }
.procedure-detail-grid p { margin: .4rem 0 0; color: #596b7b; font-size: .8rem; }
.procedure-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .45rem; margin: .7rem 0 0; }
.procedure-facts div { min-width: 0; }
.procedure-facts dt { color: #8492a0; font-size: .64rem; font-weight: 600; }
.procedure-facts dd { margin: .15rem 0 0; color: #31475a; font-size: .76rem; font-weight: 700; }
.procedure-tags { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; margin-top: .55rem; }
.procedure-tags strong { min-width: 48px; color: #718091; font-size: .67rem; }
.procedure-tags span { padding: .28rem .48rem; color: #315e7b; border-radius: 999px; background: #e7f2f9; font-size: .68rem; }
.procedure-tags.is-risk span { color: #9b3535; background: #fce9e9; }
.procedure-tags.is-target span { color: #3e6353; background: #e7f4ed; }
.procedure-source { display: flex; align-items: center; gap: .65rem; padding: .7rem .85rem; border-radius: .6rem; background: #eef3f7; }
.procedure-source__icon { color: var(--app-accent); font-size: 1.1rem; }
.procedure-source div { min-width: 0; flex: 1; }
.procedure-source small, .procedure-source strong { display: block; }
.procedure-source small { color: #7a8997; font-size: .63rem; }
.procedure-source strong { color: #334a5d; font-size: .76rem; }
.procedure-source a { color: var(--app-accent); font-size: .72rem; font-weight: 650; text-decoration: none; }
.procedure-secondary-actions { display: flex; align-items: center; gap: .4rem; margin-top: 1rem; }
.procedure-secondary-actions .btn-link { color: #647789; font-size: .72rem; text-decoration: none; }

.procedure-report { margin-top: .9rem; padding: 1rem; border: 1px solid #dce5ed; border-radius: .75rem; background: #fff; }
.procedure-report__header { margin-bottom: 1rem; }
.procedure-report__header span, .procedure-report__header strong { display: block; }
.procedure-report__header span { color: var(--app-accent); font-size: .66rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.procedure-report__header strong { color: var(--app-navy); font-size: 1rem; }
.procedure-report .form-label { color: #5e6f7f; font-size: .7rem; font-weight: 650; }
.procedure-report__section { margin: 1rem 0; padding: .8rem; border: 1px solid #e4eaf0; border-radius: .55rem; }
.procedure-report__section legend { float: none; width: auto; margin: 0 0 .55rem; color: #43576a; font-size: .76rem; font-weight: 700; }
.procedure-report__section legend small { color: #8a98a6; font-weight: 400; }
.procedure-choice-row { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: .7rem; }
.procedure-choice-row label { color: #5d6e7e; font-size: .72rem; }

.procedure-history { margin-top: .9rem; padding: .2rem .2rem .2rem .65rem; border-left: 2px solid #dce4eb; }
.procedure-history__item { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr) 26px; gap: .55rem; padding: .65rem 0; }
.procedure-history__dot { display: grid; place-items: center; width: 24px; height: 24px; margin-left: -20px; color: #657586; border: 3px solid #fbfcfd; border-radius: 50%; background: #e9eef2; box-sizing: content-box; font-size: .65rem; font-weight: 800; }
.procedure-history__dot.status-done { color: #19704d; background: #dff5eb; }
.procedure-history__dot.status-failed { color: #a73535; background: #fde8e8; }
.procedure-history__dot.status-planned { color: #246da8; background: #e4f1fb; }
.procedure-history__title { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.procedure-history__title strong { color: #3a5063; font-size: .76rem; }
.procedure-history__title time { color: #8a97a3; font-size: .65rem; }
.procedure-history__item p { margin: .2rem 0; color: #647586; font-size: .72rem; }
.procedure-history__links { display: flex; flex-wrap: wrap; gap: .6rem; color: #718191; font-size: .66rem; }
.procedure-history__delete { color: #9aa6b1; border: 0; background: transparent; font-size: 1.05rem; }
.procedure-history__delete:hover { color: #c44242; }

.procedure-substep { display: flex; align-items: center; gap: .7rem; padding: .75rem 1rem; color: #40586b; border: 1px dashed #c8d5e0; border-radius: .65rem; background: #f6f9fb; }
.procedure-substep small, .procedure-substep strong { display: block; }
.procedure-substep small { color: #82919e; font-size: .62rem; text-transform: uppercase; }
.procedure-substep strong { font-size: .8rem; }
.procedure-empty { padding: 3rem 1rem; text-align: center; border: 1px dashed #cbd7e2; border-radius: 1rem; background: #fff; }
.procedure-empty__icon { color: var(--app-accent); font-size: 2rem; }
.procedure-empty h2 { margin: .7rem 0 .25rem; color: var(--app-navy); font-size: 1.1rem; }
.procedure-empty p { margin: 0; color: #718191; font-size: .85rem; }

.procedure-search { position: relative; max-width: 620px; margin-bottom: 1.2rem; }
.procedure-search > span { position: absolute; z-index: 1; top: 50%; left: .85rem; color: #7e8e9d; transform: translateY(-50%); }
.procedure-search .form-control { padding-left: 2.4rem; border-color: #dce4eb; border-radius: .7rem; box-shadow: 0 3px 12px rgba(22, 50, 79, .045); }
.component-procedure-card { display: flex; flex-direction: column; height: 100%; min-height: 210px; padding: 1.15rem; color: inherit; border: 1px solid var(--app-border); border-radius: .85rem; background: #fff; box-shadow: var(--app-shadow); text-decoration: none; transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.component-procedure-card:hover { color: inherit; border-color: #9abbd7; transform: translateY(-3px); box-shadow: 0 10px 26px rgba(22, 50, 79, .12); }
.component-procedure-card__top { display: flex; align-items: center; justify-content: space-between; color: #8492a0; font-size: .68rem; text-transform: uppercase; letter-spacing: .06em; }
.component-procedure-card__top strong { color: var(--app-accent); }
.component-procedure-card h2 { margin: .7rem 0 .45rem; color: var(--app-navy); font-size: 1rem; line-height: 1.35; }
.component-procedure-card__values { min-height: 28px; margin-bottom: .65rem; }
.component-procedure-card__values span { display: inline-block; padding: .25rem .45rem; color: #287052; border-radius: 999px; background: #e6f4ed; font-size: .65rem; }
.component-procedure-card__footer { display: flex; align-items: center; justify-content: space-between; gap: .8rem; margin-top: auto; padding-top: .65rem; color: #7b8996; font-size: .68rem; }
.component-procedure-card__footer strong { color: var(--app-accent); white-space: nowrap; }

@media (max-width: 767.98px) {
    .procedure-hero__top, .procedure-step__header, .procedure-status-panel { align-items: flex-start; flex-direction: column; }
    .procedure-kicker { display: none; }
    .procedure-stats > div { min-width: calc(50% - .4rem); }
    .procedure-step { grid-template-columns: 34px minmax(0, 1fr); gap: .55rem; }
    .procedure-step__rail > span { width: 28px; height: 28px; border-width: 3px; }
    .procedure-step__rail::after { top: 34px; }
    .procedure-operation__summary { grid-template-columns: 28px minmax(0, 1fr) 18px; padding: 0 .55rem; }
    .procedure-operation__toggle { grid-template-columns: 1fr; gap: .35rem; }
    .procedure-dependency-summary { margin-left: 0; }
    .procedure-operation__meta { justify-content: flex-start; }
    .procedure-detail-grid, .procedure-figure { grid-template-columns: 1fr; }
    .procedure-status-actions { justify-content: flex-start; }
    .procedure-facts { grid-template-columns: 1fr 1fr; }
    .procedure-operation__details { padding: .85rem; }
}

/* ---------------------------------------------------------------------------
   Chargement de l'analyse des précédences
   ------------------------------------------------------------------------- */
.precedence-loader {
    display: grid;
    grid-template-columns: minmax(260px, .8fr) minmax(340px, 1.2fr);
    align-items: center;
    gap: clamp(2rem, 7vw, 6rem);
    min-height: calc(100vh - 145px);
    max-width: 980px;
    margin: 0 auto;
    padding: 2rem 1rem 4rem;
}

.precedence-loader__visual {
    position: relative;
    width: min(100%, 360px);
    aspect-ratio: 1;
    margin: auto;
    border: 1px solid rgba(61, 122, 184, .12);
    border-radius: 50%;
    background:
        radial-gradient(circle at center, rgba(110, 168, 220, .14), transparent 42%),
        repeating-radial-gradient(circle at center, transparent 0, transparent 44px, rgba(61, 122, 184, .08) 45px, transparent 46px);
    animation: precedence-loader-breathe 2.8s ease-in-out infinite;
}

.precedence-loader__visual::before,
.precedence-loader__visual::after {
    content: "";
    position: absolute;
    border: 1px dashed rgba(61, 122, 184, .22);
    border-radius: 50%;
}
.precedence-loader__visual::before { inset: 17%; }
.precedence-loader__visual::after { inset: 35%; }

.precedence-loader__node {
    position: absolute;
    z-index: 2;
    width: 18px;
    height: 18px;
    border: 4px solid #fff;
    border-radius: 50%;
    background: var(--app-accent);
    box-shadow: 0 4px 12px rgba(22, 50, 79, .22);
    animation: precedence-node-pulse 1.8s ease-in-out infinite;
}
.precedence-loader__node--one { top: 23%; left: 21%; }
.precedence-loader__node--two { top: 49%; right: 16%; animation-delay: .35s; }
.precedence-loader__node--three { bottom: 17%; left: 33%; animation-delay: .7s; }

.precedence-loader__line {
    position: absolute;
    z-index: 1;
    height: 2px;
    background: linear-gradient(90deg, rgba(61, 122, 184, .15), var(--app-accent), rgba(61, 122, 184, .15));
    transform-origin: left center;
    overflow: hidden;
}
.precedence-loader__line::after {
    content: "";
    display: block;
    width: 35%;
    height: 100%;
    background: #fff;
    box-shadow: 0 0 8px var(--app-accent-2);
    animation: precedence-signal 1.25s linear infinite;
}
.precedence-loader__line--one { top: 29%; left: 27%; width: 54%; transform: rotate(27deg); }
.precedence-loader__line--two { top: 57%; left: 37%; width: 48%; transform: rotate(132deg); }

.precedence-loader__plane {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: 50%;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    margin: -21px;
    color: #fff;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--app-navy-2), var(--app-navy));
    box-shadow: 0 7px 20px rgba(22, 50, 79, .25);
    animation: precedence-plane 3s ease-in-out infinite;
}

.precedence-loader__eyebrow {
    display: block;
    margin-bottom: .55rem;
    color: var(--app-accent);
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.precedence-loader h1 {
    margin: 0;
    color: var(--app-navy);
    font-size: clamp(2rem, 5vw, 3.25rem);
    font-weight: 760;
    letter-spacing: -.04em;
}
.precedence-loader__content > p {
    min-height: 1.5em;
    margin: .8rem 0 1.5rem;
    color: #657689;
    transition: opacity .2s ease;
}
.precedence-loader__progress {
    position: relative;
    height: 5px;
    overflow: hidden;
    border-radius: 999px;
    background: #dfe8f0;
}
.precedence-loader__progress span {
    position: absolute;
    inset: 0 auto 0 0;
    width: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--app-accent), var(--app-accent-2));
    box-shadow: 0 0 12px rgba(18, 143, 135, .28);
    transition: width .35s ease;
}
.precedence-loader__numbers {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem;
    margin-top: .85rem;
}
.precedence-loader__numbers > div {
    display: flex;
    flex-direction: column;
    gap: .08rem;
    padding: .75rem .85rem;
    border: 1px solid #e0e8ef;
    border-radius: 12px;
    background: rgba(247, 250, 252, .82);
}
.precedence-loader__numbers > div:last-child {
    text-align: right;
}
.precedence-loader__numbers strong {
    color: #173b4d;
    font-size: 1rem;
    font-variant-numeric: tabular-nums;
}
.precedence-loader__numbers span {
    color: #8493a1;
    font-size: .62rem;
}
.precedence-loader__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: .65rem;
    color: #748596;
    font-size: .7rem;
}
.precedence-loader__meta span { display: inline-flex; align-items: center; gap: .4rem; }
.precedence-loader__meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #35a374;
    box-shadow: 0 0 0 4px rgba(53, 163, 116, .12);
    animation: precedence-status-pulse 1.4s ease-out infinite;
}
.precedence-loader__steps {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .35rem;
    margin-top: 2rem;
}
.precedence-loader__steps span {
    position: relative;
    padding-top: .75rem;
    color: #9aa7b3;
    border-top: 2px solid #dce5ed;
    font-size: .65rem;
    text-align: center;
    transition: color .25s ease, border-color .25s ease;
}
.precedence-loader__steps span.is-active { color: var(--app-accent); border-color: var(--app-accent); font-weight: 700; }
.precedence-loader__content > small { display: block; margin-top: 1.5rem; color: #8b99a6; font-size: .7rem; }

@keyframes precedence-progress {
    from { transform: translateX(-110%); }
    to { transform: translateX(300%); }
}
@keyframes precedence-signal {
    from { transform: translateX(-120%); }
    to { transform: translateX(350%); }
}
@keyframes precedence-node-pulse {
    0%, 100% { transform: scale(.82); opacity: .6; }
    50% { transform: scale(1.12); opacity: 1; }
}
@keyframes precedence-plane {
    0%, 100% { transform: translateY(-5px) rotate(-5deg); }
    50% { transform: translateY(5px) rotate(5deg); }
}
@keyframes precedence-loader-breathe {
    0%, 100% { transform: scale(.98); }
    50% { transform: scale(1.02); }
}
@keyframes precedence-status-pulse {
    0% { box-shadow: 0 0 0 0 rgba(53, 163, 116, .3); }
    100% { box-shadow: 0 0 0 7px rgba(53, 163, 116, 0); }
}

@media (max-width: 767.98px) {
    .precedence-section-nav { grid-template-columns: repeat(4, minmax(118px, 1fr)); }
    .precedence-section-nav ~ form .action-bar { top: 78px; }
    .precedence-loader { grid-template-columns: 1fr; gap: 1.2rem; padding-top: 1rem; text-align: center; }
    .precedence-loader__visual { width: min(62vw, 230px); }
    .precedence-loader__numbers { grid-template-columns: 1fr; }
    .precedence-loader__numbers > div:last-child { text-align: left; }
    .precedence-loader__meta { text-align: left; }
    .precedence-loader__steps span { font-size: .58rem; }
}

/* ---------------------------------------------------------------------------
   Écrans de résolution : navigation, page AMM source et retour en haut
   ------------------------------------------------------------------------- */
html { scroll-behavior: smooth; }

.status-summary-link {
    display: block;
    height: 100%;
    color: inherit;
    text-decoration: none;
    border-radius: var(--bs-card-border-radius, .375rem);
}
.status-summary-link .card {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.status-summary-link:hover .card,
.status-summary-link:focus-visible .card {
    transform: translateY(-2px);
    border-color: #8faabd;
    box-shadow: 0 10px 25px rgba(26, 51, 70, .12);
}
.status-summary-link:focus-visible {
    outline: 3px solid rgba(13, 110, 253, .25);
    outline-offset: 3px;
}

.resolution-section,
#fiables,
#incertaines,
#non-resolues,
#deja-base {
    scroll-margin-top: 96px;
}

.resolver-modal-dialog {
    --bs-modal-width: min(1500px, 96vw);
}
.resolver-modal-grid {
    display: grid;
    grid-template-columns: minmax(360px, .8fr) minmax(520px, 1.2fr);
    gap: 1.25rem;
    align-items: start;
}
.resolver-modal-grid-three {
    grid-template-columns: minmax(320px, .8fr) repeat(2, minmax(360px, 1fr));
}
.resolver-modal-workspace { min-width: 0; }
.resolver-source-pane {
    position: sticky;
    top: 0;
    min-width: 0;
    padding: .9rem;
    border: 1px solid #d8e1e9;
    border-radius: .9rem;
    background: #f5f7f9;
}
.resolver-source-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .75rem;
}
.resolver-source-header h6 {
    overflow: hidden;
    margin: 0;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.resolver-source-viewport {
    max-height: calc(100vh - 230px);
    overflow: auto;
    border: 1px solid #cbd6df;
    border-radius: .65rem;
    background: #dfe5ea;
    box-shadow: inset 0 1px 4px rgba(24, 49, 69, .08);
}
.resolver-source-link {
    display: block;
    cursor: zoom-in;
}
.resolver-source-image {
    display: block;
    width: 100%;
    height: auto;
    min-height: 220px;
    object-fit: contain;
    background: #fff;
}
.resolver-source-empty {
    display: grid;
    min-height: 420px;
    padding: 2rem;
    place-items: center;
    color: #6d7c89;
    text-align: center;
}

.back-to-top-button {
    position: fixed;
    right: 1.35rem;
    bottom: 1.35rem;
    z-index: 1030;
    display: grid;
    width: 3rem;
    height: 3rem;
    padding: 0;
    place-items: center;
    color: #fff;
    border: 0;
    border-radius: 999px;
    background: #1f4f73;
    box-shadow: 0 10px 25px rgba(17, 45, 66, .28);
    font-size: 1.45rem;
    line-height: 1;
    opacity: 0;
    pointer-events: none;
    transform: translateY(12px);
    transition: opacity .18s ease, transform .18s ease, background .18s ease;
}
.back-to-top-button.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}
.back-to-top-button:hover,
.back-to-top-button:focus-visible { background: #163e5d; }
.back-to-top-button:focus-visible {
    outline: 3px solid rgba(13, 110, 253, .3);
    outline-offset: 3px;
}

@media (max-width: 991.98px) {
    .resolver-modal-dialog { --bs-modal-width: calc(100vw - 1.5rem); }
    .resolver-modal-grid { grid-template-columns: 1fr; }
    .resolver-source-pane { position: static; }
    .resolver-source-viewport { max-height: 62vh; }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
    .resolver-modal-grid-three { grid-template-columns: 1fr; }
    .resolver-modal-grid-three .resolver-source-pane { position: static; }
    .resolver-modal-grid-three .resolver-source-viewport { max-height: 62vh; }
}

@media (max-width: 575.98px) {
    .resolver-modal-grid { display: block; }
    .resolver-source-pane { margin-top: 1rem; padding: .65rem; }
    .resolver-source-empty { min-height: 240px; }
    .back-to-top-button { right: .85rem; bottom: .85rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .status-summary-link .card,
    .back-to-top-button { transition: none; }
}

/* ---------------------------------------------------------------------------
   Interface technicien — expérience terrain volontairement simplifiée
   ------------------------------------------------------------------------- */
.interface-mode-technician {
    --technician-ink: #183b42;
    --technician-green: #237d68;
    --technician-green-dark: #14594d;
    --technician-mint: #dff3ed;
    background: #f1f6f5;
}
.technician-shell { max-width: 1180px; }
.technician-eyebrow {
    display: block;
    margin-bottom: .35rem;
    color: #2b7c6d;
    font-size: .67rem;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
}
.technician-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
}
.technician-hero h1 {
    margin: 0;
    color: var(--technician-ink);
    font-size: clamp(1.65rem, 3vw, 2.3rem);
    font-weight: 760;
    letter-spacing: -.035em;
}
.technician-hero p {
    margin: .35rem 0 0;
    color: #668084;
    font-size: .92rem;
}
.technician-mode-badge {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: .45rem;
    padding: .48rem .72rem;
    color: #236959;
    border: 1px solid #c8e6de;
    border-radius: 999px;
    background: #e8f6f2;
    font-size: .7rem;
    font-weight: 750;
}
.technician-mode-badge > span {
    display: grid;
    width: 18px;
    height: 18px;
    place-items: center;
    color: #fff;
    border-radius: 50%;
    background: var(--technician-green);
    font-size: .62rem;
}
.technician-dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(330px, .75fr);
    gap: 1rem;
    margin-bottom: 1.25rem;
}
.technician-next-action {
    position: relative;
    overflow: hidden;
    min-height: 270px;
    padding: 1.4rem;
    color: #fff;
    border-radius: 1.1rem;
    background:
        radial-gradient(circle at 92% 10%, rgba(127, 211, 188, .2), transparent 31%),
        linear-gradient(135deg, #173e46, #1b6759);
    box-shadow: 0 12px 28px rgba(21, 75, 68, .16);
}
.technician-next-action::after {
    position: absolute;
    right: -48px;
    bottom: -64px;
    width: 190px;
    height: 190px;
    content: "";
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 50%;
    box-shadow: 0 0 0 34px rgba(255, 255, 255, .025);
}
.technician-next-action > * { position: relative; z-index: 1; }
.technician-next-action header,
.technician-progress-card header,
.technician-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}
.technician-next-action .technician-eyebrow { color: #8edac7; }
.technician-next-action h2 {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 720;
}
.technician-action-status {
    padding: .32rem .58rem;
    color: #165b4c;
    border-radius: 999px;
    background: #dff5ee;
    font-size: .64rem;
    font-weight: 800;
}
.technician-action-status.is-overdue { color: #842d2d; background: #fee4e2; }
.technician-action-body {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1rem;
    align-items: center;
    margin: 1.55rem 0 1.25rem;
}
.technician-action-body time {
    display: grid;
    min-width: 102px;
    min-height: 72px;
    padding: .7rem;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: .8rem;
    background: rgba(255, 255, 255, .09);
}
.technician-action-body time strong { font-size: .74rem; text-transform: capitalize; }
.technician-action-body time span { color: #a9e2d4; font-size: 1rem; font-weight: 800; }
.technician-action-body h3,
.technician-action-empty h3 {
    margin: 0;
    font-size: clamp(1.05rem, 2vw, 1.28rem);
    font-weight: 720;
}
.technician-action-body p {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem;
    margin: .45rem 0 0;
    color: rgba(255, 255, 255, .66);
    font-size: .72rem;
}
.technician-action-body p span + span::before { content: "·"; margin-right: .7rem; }
.technician-primary-action {
    display: inline-flex;
    align-items: center;
    gap: 1.3rem;
    color: #175447;
    font-size: .76rem;
    font-weight: 760;
}
.technician-primary-action span { font-size: 1rem; }
.technician-action-empty {
    display: flex;
    align-items: center;
    gap: .9rem;
    margin: 1.55rem 0 1.25rem;
}
.technician-action-empty > span {
    display: grid;
    flex: 0 0 auto;
    width: 50px;
    height: 50px;
    place-items: center;
    color: #175e50;
    border-radius: 50%;
    background: #bce8dc;
    font-weight: 850;
}
.technician-action-empty p { margin: .3rem 0 0; color: rgba(255, 255, 255, .65); font-size: .74rem; }
.technician-progress-card,
.technician-section {
    border: 1px solid #dce9e6;
    border-radius: 1.1rem;
    background: #fff;
    box-shadow: 0 7px 22px rgba(28, 68, 65, .06);
}
.technician-progress-card { padding: 1.4rem; }
.technician-progress-card header strong {
    color: var(--technician-green);
    font-size: 1.65rem;
    letter-spacing: -.04em;
}
.technician-progress-card h2 {
    max-width: 280px;
    margin: .75rem 0 1rem;
    color: #2d4b50;
    font-size: .9rem;
    font-weight: 680;
    line-height: 1.45;
}
.technician-progress-bar {
    height: 9px;
    overflow: hidden;
    border-radius: 999px;
    background: #e6efed;
}
.technician-progress-bar span {
    display: block;
    min-width: 3px;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--technician-green), #6fc6af);
}
.technician-status-row {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 1.4rem;
    border-top: 1px solid #e7efed;
}
.technician-status-row div { min-width: 0; padding-top: .9rem; }
.technician-status-row div + div { padding-left: .55rem; border-left: 1px solid #e7efed; }
.technician-status-row strong,
.technician-status-row span { display: block; }
.technician-status-row strong { color: #2f4d52; font-size: 1.05rem; }
.technician-status-row span { margin-top: .18rem; color: #819296; font-size: .58rem; }
.technician-status-row .is-done strong { color: #21836b; }
.technician-status-row .is-alert strong { color: #b14343; }
.technician-section { margin-bottom: 1.25rem; padding: 1.35rem; }
.technician-section-heading { margin-bottom: 1rem; }
.technician-section-heading h2 {
    margin: 0;
    color: var(--technician-ink);
    font-size: 1.12rem;
    font-weight: 730;
}
.technician-section-heading > p {
    margin: .85rem 0 0;
    color: #819296;
    font-size: .72rem;
}
.technician-tool-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .8rem;
}
.technician-tool-card {
    position: relative;
    display: grid;
    min-height: 220px;
    padding: 1.1rem;
    color: inherit;
    border: 1px solid #dde9e7;
    border-radius: .9rem;
    background: #f8fbfa;
    text-decoration: none;
    transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.technician-tool-card:hover,
.technician-tool-card:focus-visible {
    color: inherit;
    border-color: #9bcbbb;
    box-shadow: 0 10px 22px rgba(28, 83, 72, .1);
    transform: translateY(-3px);
}
.technician-tool-card:focus-visible { outline: 3px solid rgba(35, 125, 104, .18); outline-offset: 2px; }
.technician-tool-card.is-primary {
    color: #fff;
    border-color: transparent;
    background: linear-gradient(145deg, #237d68, #176052);
}
.technician-tool-card__number {
    position: absolute;
    top: 1rem;
    right: 1rem;
    color: #a8b8b6;
    font-size: .62rem;
    font-weight: 800;
    letter-spacing: .08em;
}
.technician-tool-card.is-primary .technician-tool-card__number { color: rgba(255, 255, 255, .46); }
.technician-tool-card__icon {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    color: var(--technician-green);
    border-radius: .7rem;
    background: var(--technician-mint);
}
.technician-tool-card.is-primary .technician-tool-card__icon { color: #fff; background: rgba(255, 255, 255, .13); }
.technician-tool-card__icon svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.technician-tool-card > div { align-self: end; margin-top: 1.4rem; }
.technician-tool-card h3 { margin: 0; font-size: .9rem; font-weight: 740; }
.technician-tool-card p { margin: .4rem 0 0; color: #71878a; font-size: .68rem; line-height: 1.5; }
.technician-tool-card.is-primary p { color: rgba(255, 255, 255, .7); }
.technician-tool-card__arrow {
    position: absolute;
    right: 1rem;
    bottom: .85rem;
    color: #8ba09d;
}
.technician-tool-card.is-primary .technician-tool-card__arrow { color: #fff; }
.technician-count {
    padding: .3rem .58rem;
    color: #426761;
    border-radius: 999px;
    background: #e8f2ef;
    font-size: .65rem;
    font-weight: 730;
}
.technician-agenda {
    overflow: hidden;
    border: 1px solid #e0eae8;
    border-radius: .85rem;
}
.technician-agenda-item {
    display: grid;
    grid-template-columns: 50px minmax(0, 1fr) auto;
    align-items: center;
    gap: .85rem;
    padding: .75rem .9rem;
    color: inherit;
    border-bottom: 1px solid #e9f0ef;
    text-decoration: none;
    transition: background .15s ease;
}
.technician-agenda-item:last-child { border-bottom: 0; }
.technician-agenda-item:hover { color: inherit; background: #f5faf8; }
.technician-agenda-item time {
    display: grid;
    min-height: 48px;
    place-items: center;
    color: #236b5c;
    border-radius: .6rem;
    background: #e8f5f1;
}
.technician-agenda-item time.is-overdue { color: #a13a3a; background: #fdebea; }
.technician-agenda-item time strong { font-size: 1rem; line-height: 1; }
.technician-agenda-item time span { font-size: .55rem; font-weight: 800; }
.technician-agenda-item h3 { margin: 0; color: #304e53; font-size: .78rem; font-weight: 710; }
.technician-agenda-item p {
    display: flex;
    gap: .55rem;
    margin: .25rem 0 0;
    color: #819195;
    font-size: .62rem;
}
.technician-agenda-item p span + span::before { content: "·"; margin-right: .55rem; }
.technician-agenda-item > span { color: #72908a; }
.technician-agenda-empty {
    display: flex;
    min-height: 100px;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    color: #7c9092;
    font-size: .76rem;
}
.technician-agenda-empty p { margin: 0; }

@media (max-width: 991.98px) {
    .technician-dashboard-grid { grid-template-columns: 1fr; }
    .technician-tool-grid { grid-template-columns: 1fr; }
    .technician-tool-card { min-height: 175px; }
}

@media (max-width: 575.98px) {
    .technician-hero { align-items: flex-start; flex-direction: column; }
    .technician-mode-badge { display: none; }
    .technician-next-action,
    .technician-progress-card,
    .technician-section { padding: 1rem; border-radius: .9rem; }
    .technician-action-body { grid-template-columns: 1fr; }
    .technician-action-body time { grid-template-columns: auto auto; justify-content: start; gap: .65rem; min-height: 0; }
    .technician-primary-action { width: 100%; justify-content: space-between; }
    .technician-status-row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 0; }
    .technician-status-row div:nth-child(3) { padding-left: 0; border-left: 0; }
    .technician-section-heading { flex-direction: column; }
    .technician-section-heading > p { margin-top: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .interface-mode-toggle__thumb,
    .technician-tool-card { transition: none; }
}

/* ---------------------------------------------------------------------------
   Vue physique — navigation hiérarchique orientée terrain
   ------------------------------------------------------------------------- */
.physical-kicker {
    display: block;
    margin-bottom: .35rem;
    color: #6bb9d3;
    font-size: .66rem;
    font-weight: 820;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.physical-hero {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.2rem;
    overflow: hidden;
    margin-bottom: 1.5rem;
    padding: 1.6rem;
    color: #fff;
    border-radius: 1.15rem;
    background:
        radial-gradient(circle at 88% 20%, rgba(93, 180, 202, .2), transparent 28%),
        linear-gradient(135deg, #102f49, #175d6a);
    box-shadow: 0 14px 30px rgba(19, 65, 80, .16);
}
.physical-hero::after {
    position: absolute;
    right: -90px;
    bottom: -135px;
    width: 320px;
    height: 320px;
    content: "";
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 50%;
    box-shadow:
        0 0 0 48px rgba(255, 255, 255, .025),
        0 0 0 96px rgba(255, 255, 255, .018);
}
.physical-hero > * { position: relative; z-index: 1; }
.physical-hero__icon {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: .9rem;
    background: rgba(255, 255, 255, .09);
}
.physical-hero__icon svg {
    width: 30px;
    height: 30px;
    fill: none;
    stroke: #9ed9e5;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.physical-hero h1 {
    margin: 0;
    font-size: clamp(1.65rem, 3.5vw, 2.45rem);
    font-weight: 760;
    letter-spacing: -.035em;
}
.physical-hero p {
    max-width: 600px;
    margin: .42rem 0 0;
    color: rgba(255, 255, 255, .68);
    font-size: .83rem;
}
.physical-hero__stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(110px, 1fr));
    overflow: hidden;
    min-width: 275px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: .85rem;
    background: rgba(8, 30, 45, .22);
}
.physical-hero__stats div { padding: .9rem 1rem; }
.physical-hero__stats div + div { border-left: 1px solid rgba(255, 255, 255, .1); }
.physical-hero__stats strong,
.physical-hero__stats span { display: block; }
.physical-hero__stats strong { font-size: 1.25rem; }
.physical-hero__stats span { margin-top: .18rem; color: rgba(255, 255, 255, .58); font-size: .6rem; }
.physical-section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .9rem;
}
.physical-section-heading .physical-kicker,
.physical-level-hero .physical-kicker { color: #367f91; }
.physical-section-heading h2 {
    margin: 0;
    color: var(--app-navy);
    font-size: 1.15rem;
    font-weight: 730;
}
.physical-section-heading > p { margin: 0; color: #7a8c96; font-size: .7rem; }
.physical-family-grid { display: grid; gap: 1rem; }
.physical-family-card {
    overflow: hidden;
    padding: 1.35rem;
    border: 1px solid #dce8e9;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 7px 22px rgba(24, 69, 76, .06);
}
.physical-family-card__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    color: #7a8d92;
    font-size: .65rem;
}
.physical-family-card__badge {
    padding: .27rem .48rem;
    color: #266c78;
    border-radius: 999px;
    background: #e4f2f4;
    font-weight: 750;
}
.physical-family-card > h2 {
    margin: .85rem 0 .35rem;
    color: #1c424a;
    font-size: 1.1rem;
    font-weight: 740;
}
.physical-family-card > p { margin: 0; color: #718589; font-size: .74rem; }
.physical-family-path {
    display: grid;
    grid-template-columns: repeat(7, auto);
    align-items: center;
    gap: .65rem;
    margin: 1.15rem 0;
}
.physical-family-path > span {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .05rem .55rem;
    min-width: 0;
    padding: .75rem;
    border: 1px solid #e1eae9;
    border-radius: .72rem;
    background: #f7faf9;
}
.physical-family-path b {
    grid-row: 1 / 3;
    align-self: center;
    color: #2d8290;
    font-size: .67rem;
}
.physical-family-path strong { color: #294c52; font-size: .76rem; }
.physical-family-path small { color: #8a999c; font-size: .57rem; }
.physical-family-path i { color: #97a9a9; font-style: normal; }
.physical-family-card__action {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .78rem .9rem;
    color: #fff;
    border-radius: .68rem;
    background: linear-gradient(90deg, #236b7c, #248374);
    font-size: .74rem;
    font-weight: 740;
    text-decoration: none;
    transition: box-shadow .15s ease, transform .15s ease;
}
.physical-family-card__action:hover,
.physical-family-card__action:focus-visible {
    color: #fff;
    box-shadow: 0 8px 18px rgba(35, 107, 124, .2);
    transform: translateY(-1px);
}
.physical-breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    margin-bottom: .75rem;
    color: #829094;
    font-size: .66rem;
}
.physical-breadcrumb a { color: #347888; font-weight: 700; text-decoration: none; }
.physical-breadcrumb strong { color: #36565c; }
.physical-level-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
    padding: 1.3rem 1.4rem;
    border: 1px solid #d9e7e7;
    border-radius: 1rem;
    background:
        linear-gradient(120deg, rgba(231, 244, 242, .85), rgba(246, 250, 250, .95)),
        #fff;
    box-shadow: 0 5px 18px rgba(28, 72, 77, .05);
}
.physical-back {
    display: inline-flex;
    align-items: center;
    gap: .38rem;
    margin-bottom: .8rem;
    color: #607c81;
    font-size: .67rem;
    font-weight: 700;
    text-decoration: none;
}
.physical-back:hover { color: #216f7c; }
.physical-level-hero h1 {
    margin: 0;
    color: #173e46;
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 760;
    letter-spacing: -.025em;
}
.physical-level-hero p { margin: .35rem 0 0; color: #6c8286; font-size: .75rem; }
.physical-level-hero p strong { color: #365e64; }
.physical-level-hero__count {
    min-width: 130px;
    padding: .8rem;
    text-align: right;
    border-left: 1px solid #d6e5e2;
}
.physical-level-hero__count strong,
.physical-level-hero__count span { display: block; }
.physical-level-hero__count strong { color: #237b70; font-size: 1.55rem; }
.physical-level-hero__count span { color: #819294; font-size: .6rem; }
.physical-levels {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0 0 1rem;
    padding: 0;
    list-style: none;
    border: 1px solid #dfe8e7;
    border-radius: .8rem;
    background: #fff;
}
.physical-levels li {
    position: relative;
    display: flex;
    align-items: center;
    gap: .6rem;
    min-width: 0;
    padding: .7rem .8rem;
}
.physical-levels li + li { border-left: 1px solid #e4ecea; }
.physical-levels li > span {
    display: grid;
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    place-items: center;
    color: #7b8d91;
    border-radius: 50%;
    background: #edf2f1;
    font-size: .63rem;
    font-weight: 800;
}
.physical-levels small,
.physical-levels strong { display: block; }
.physical-levels small { color: #97a4a6; font-size: .54rem; text-transform: uppercase; }
.physical-levels strong {
    overflow: hidden;
    color: #607378;
    font-size: .68rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.physical-levels .is-complete > span { color: #fff; background: #398c7d; }
.physical-levels .is-current { background: #edf7f4; }
.physical-levels .is-current > span { color: #fff; background: #216f7c; }
.physical-levels .is-current strong { color: #23545c; }
.physical-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .9rem;
}
.physical-search { position: relative; display: block; width: min(100%, 560px); }
.physical-search > span {
    position: absolute;
    z-index: 1;
    top: 50%;
    left: .85rem;
    color: #7c9093;
    transform: translateY(-50%);
}
.physical-search .form-control {
    padding: .68rem .8rem .68rem 2.35rem;
    border-color: #d9e4e3;
    border-radius: .72rem;
    font-size: .76rem;
    box-shadow: 0 4px 12px rgba(25, 69, 75, .04);
}
.physical-result-count { color: #819194; font-size: .66rem; white-space: nowrap; }
.physical-node-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .8rem;
}
.physical-node-card {
    position: relative;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: .85rem;
    min-height: 150px;
    padding: 1rem;
    color: inherit;
    border: 1px solid #dce7e5;
    border-radius: .85rem;
    background: #fff;
    box-shadow: 0 4px 14px rgba(26, 69, 74, .045);
    text-decoration: none;
    transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
a.physical-node-card:hover,
a.physical-node-card:focus-visible {
    color: inherit;
    border-color: #7db9b1;
    box-shadow: 0 10px 24px rgba(27, 83, 79, .1);
    transform: translateY(-2px);
}
.physical-node-card__icon {
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    color: #246f79;
    border-radius: .72rem;
    background: #e3f1f2;
    font-size: .9rem;
    font-weight: 800;
}
.physical-node-card.is-terminal .physical-node-card__icon { color: #347765; background: #e5f3ed; }
.physical-node-card.has-procedure {
    border-color: #b8dcd1;
    background: linear-gradient(145deg, #fff, #f4fbf8);
}
.physical-node-card.has-procedure .physical-node-card__icon {
    color: #fff;
    background: #2d8a70;
}
.physical-node-card.has-procedure .physical-node-card__footer > strong { color: #24745e; }

.project-switcher-card {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(320px, .9fr) auto;
    align-items: center;
    gap: 1.25rem;
    margin: 0 0 1.5rem;
    padding: 1rem 1.15rem;
    border: 1px solid #d7e4ed;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 10px 28px rgba(20, 53, 78, .06);
}

.project-switcher-card__identity { display: flex; align-items: center; gap: .85rem; min-width: 0; }
.project-switcher-card__identity > div { display: grid; min-width: 0; }
.project-switcher-card__identity small,
.project-context-strip small { color: #527088; font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.project-switcher-card__identity strong { color: #173d5b; font-size: 1rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-switcher-card__identity span:not(.project-switcher-card__icon) { color: #667b8c; font-size: .82rem; }
.project-switcher-card__icon { display: grid; width: 2.7rem; height: 2.7rem; flex: 0 0 2.7rem; place-items: center; border-radius: .8rem; background: #e2f2f1; color: #19746f; font-size: 1.2rem; }
.project-switcher-card__icon.is-empty { background: #edf2f6; color: #587083; }
.project-switcher-card__form { display: grid; gap: .35rem; }
.project-switcher-card__form label { color: #4c667a; font-size: .74rem; font-weight: 700; }
.project-switcher-card__form > div { display: flex; gap: .5rem; }
.project-switcher-card__manage { color: #236993; font-size: .82rem; font-weight: 800; text-decoration: none; white-space: nowrap; }

.project-context-strip {
    display: flex;
    align-items: center;
    gap: .8rem;
    margin-bottom: 1rem;
    padding: .75rem 1rem;
    border: 1px solid #cfe4e1;
    border-radius: .85rem;
    background: #f3fbfa;
}
.project-context-strip__icon { display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border-radius: .65rem; background: #d9f0ed; color: #176d68; }
.project-context-strip > div { display: grid; line-height: 1.25; }
.project-context-strip > div > span { color: #617887; font-size: .78rem; }
.project-context-strip > a { margin-left: auto; color: #176d68; font-size: .8rem; font-weight: 800; text-decoration: none; }

.removal-traceability { border-color: #b9ddd7; background: #f5fcfb; }
.removal-traceability__component { padding: .85rem; border: 1px solid #d4e9e5; border-radius: .75rem; background: #fff; }
.removal-traceability__component + .removal-traceability__component { margin-top: .75rem; }
.removal-traceability__component > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .65rem; }
.removal-traceability__component > div:first-child span { color: #27736d; font-size: .72rem; font-weight: 800; }

@media (max-width: 900px) {
    .project-switcher-card { grid-template-columns: 1fr; }
    .project-switcher-card__manage { justify-self: start; }
}

@media (max-width: 560px) {
    .project-switcher-card__form > div { flex-direction: column; }
    .project-switcher-card__form .btn { width: 100%; }
    .project-context-strip { align-items: flex-start; flex-wrap: wrap; }
    .project-context-strip > a { width: 100%; margin-left: 3rem; }
}
.physical-node-card__body { min-width: 0; }
.physical-node-card__type {
    display: block;
    color: #839397;
    font-size: .56rem;
    font-weight: 760;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.physical-node-card h2 {
    margin: .35rem 0;
    color: #23464c;
    font-size: .88rem;
    font-weight: 720;
    line-height: 1.35;
}
.physical-node-card__ata {
    display: inline-block;
    padding: .2rem .36rem;
    color: #2b6671;
    border-radius: .36rem;
    background: #eaf4f5;
    font-size: .58rem;
    font-weight: 720;
}
.physical-node-card__footer {
    display: flex;
    grid-column: 1 / -1;
    align-items: center;
    justify-content: space-between;
    gap: .8rem;
    align-self: end;
    padding-top: .7rem;
    color: #7d8e91;
    border-top: 1px solid #e9efee;
    font-size: .62rem;
}
.physical-node-card__footer > span strong { color: #3b646a; }
.physical-node-card__footer > strong { color: #247887; }
.physical-node-card__footer .is-complete { color: #28725d; }
.physical-node-empty { grid-column: 1 / -1; }

/* ---------------------------------------------------------------------------
   Catalogue et déroulé des procédures — repérage, reprise et filtres
   ------------------------------------------------------------------------- */
.procedure-catalog-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 1.5rem;
    overflow: hidden;
    margin-bottom: 1rem;
    padding: 1.5rem;
    color: #fff;
    border-radius: 1.1rem;
    background:
        radial-gradient(circle at 84% 5%, rgba(102, 177, 210, .22), transparent 30%),
        linear-gradient(135deg, #112f4a, #244f70);
    box-shadow: 0 13px 28px rgba(20, 57, 86, .14);
}
.procedure-catalog-hero::after {
    position: absolute;
    top: -100px;
    right: -70px;
    width: 280px;
    height: 280px;
    content: "";
    border: 1px solid rgba(255, 255, 255, .06);
    border-radius: 50%;
    box-shadow: 0 0 0 48px rgba(255, 255, 255, .02);
}
.procedure-catalog-hero > * { position: relative; z-index: 1; }
.procedure-catalog-hero .procedure-page-kicker { color: #83c6e4; }
.procedure-catalog-hero h1 {
    margin: .2rem 0 .35rem;
    font-size: clamp(1.55rem, 3.3vw, 2.25rem);
    font-weight: 760;
    letter-spacing: -.035em;
}
.procedure-catalog-hero p {
    max-width: 650px;
    margin: 0;
    color: rgba(255, 255, 255, .68);
    font-size: .78rem;
}
.procedure-catalog-hero > div:first-child > a {
    display: inline-flex;
    gap: .55rem;
    margin-top: .85rem;
    color: #bce3f5;
    font-size: .69rem;
    font-weight: 700;
    text-decoration: none;
}
.procedure-catalog-hero__stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(90px, 1fr));
    overflow: hidden;
    min-width: 330px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: .78rem;
    background: rgba(4, 24, 40, .22);
}
.procedure-catalog-hero__stats div { padding: .78rem .85rem; }
.procedure-catalog-hero__stats div + div { border-left: 1px solid rgba(255, 255, 255, .1); }
.procedure-catalog-hero__stats strong,
.procedure-catalog-hero__stats span { display: block; }
.procedure-catalog-hero__stats strong { font-size: 1.15rem; }
.procedure-catalog-hero__stats span { color: rgba(255, 255, 255, .55); font-size: .58rem; }
.procedure-catalog-controls {
    position: sticky;
    z-index: 20;
    top: .65rem;
    margin-bottom: 1rem;
    padding: .85rem;
    border: 1px solid #dfe8e8;
    border-radius: .9rem;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 8px 22px rgba(27, 65, 79, .08);
    backdrop-filter: blur(10px);
}
.procedure-catalog-controls .procedure-search { max-width: none; margin: 0 0 .7rem; }
.procedure-catalog-controls .procedure-search .form-control { min-height: 44px; }
.procedure-filter-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.procedure-status-filters { display: flex; flex-wrap: wrap; gap: .35rem; }
.procedure-status-filters button {
    display: inline-flex;
    align-items: center;
    gap: .38rem;
    padding: .38rem .55rem;
    color: #60747c;
    border: 1px solid transparent;
    border-radius: 999px;
    background: #eef3f4;
    font-size: .63rem;
    font-weight: 680;
}
.procedure-status-filters button span {
    display: grid;
    min-width: 19px;
    height: 19px;
    padding: 0 .25rem;
    place-items: center;
    color: #71858b;
    border-radius: 999px;
    background: rgba(255, 255, 255, .72);
    font-size: .55rem;
}
.procedure-status-filters button:hover { color: #2c5864; background: #e2ecee; }
.procedure-status-filters button.is-active {
    color: #fff;
    border-color: #296d7b;
    background: #296d7b;
}
.procedure-status-filters button.is-active span { color: #245c68; }
.procedure-sort {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: .45rem;
    color: #7a8b90;
    font-size: .61rem;
}
.procedure-sort .form-select { width: 165px; border-color: #dbe5e6; font-size: .65rem; }
.procedure-catalog-result {
    display: flex;
    gap: .25rem;
    margin-top: .6rem;
    color: #829196;
    font-size: .6rem;
}
.procedure-catalog-result strong { color: #315c65; }
.procedure-catalog-grid { align-items: stretch; }
.procedure-catalog-grid > [data-procedure-card-wrapper] { transition: opacity .15s ease; }
.component-procedure-card {
    min-height: 225px;
    border-top: 3px solid #9facb5;
}
.component-procedure-card.status-active { border-top-color: #3b8cc0; }
.component-procedure-card.status-blocked { border-top-color: #cf5757; }
.component-procedure-card.status-complete { border-top-color: #319270; }
.component-procedure-card__status {
    display: inline-flex;
    align-items: center;
    gap: .32rem;
    color: #667982;
    font-size: .6rem;
    font-weight: 740;
    letter-spacing: normal;
    text-transform: none;
}
.component-procedure-card__status b {
    display: grid;
    width: 20px;
    height: 20px;
    place-items: center;
    border-radius: 50%;
    background: #edf1f3;
}
.status-active .component-procedure-card__status { color: #2878a8; }
.status-active .component-procedure-card__status b { background: #e3f1fa; }
.status-blocked .component-procedure-card__status { color: #ad3838; }
.status-blocked .component-procedure-card__status b { background: #fde9e9; }
.status-complete .component-procedure-card__status { color: #227557; }
.status-complete .component-procedure-card__status b { background: #e0f3eb; }
.component-procedure-card__heading {
    display: grid;
    grid-template-columns: 36px minmax(0, 1fr);
    align-items: start;
    gap: .65rem;
    margin: .8rem 0 .55rem;
}
.component-procedure-card__icon {
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;
    color: #386a77;
    border-radius: .58rem;
    background: #e8f1f3;
    font-size: .72rem;
    font-weight: 800;
}
.component-procedure-card h2 { margin: .1rem 0 0; }
.component-procedure-card__footer > span > strong { color: #4d6571; }
.component-procedure-card__footer > strong {
    display: flex;
    align-items: center;
    gap: .35rem;
}
.procedure-catalog-no-results {
    padding: 2.5rem 1rem;
    text-align: center;
    border: 1px dashed #cfdcdd;
    border-radius: .9rem;
    background: #fff;
}
.procedure-catalog-no-results > span { color: #6e929b; font-size: 1.5rem; }
.procedure-catalog-no-results h2 { margin: .5rem 0 .2rem; color: #36545c; font-size: 1rem; }
.procedure-catalog-no-results p { margin: 0; color: #859397; font-size: .7rem; }
.procedure-resume {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .9rem;
    max-width: 1050px;
    margin: -1.3rem auto 1.25rem;
    padding: .9rem 1rem;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .24);
    border-radius: .9rem;
    background: linear-gradient(100deg, #267c72, #2c8894);
    box-shadow: 0 10px 23px rgba(35, 107, 110, .16);
}
.procedure-resume.is-complete { background: linear-gradient(100deg, #30745f, #3c8a6e); }
.procedure-resume__icon {
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    border-radius: .65rem;
    background: rgba(255, 255, 255, .14);
    font-size: 1rem;
    font-weight: 800;
}
.procedure-resume__body { min-width: 0; }
.procedure-resume__body > span {
    color: #bceae3;
    font-size: .58rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.procedure-resume__body h2 {
    overflow: hidden;
    margin: .15rem 0 0;
    font-size: .86rem;
    font-weight: 730;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.procedure-resume__body p {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem;
    margin: .3rem 0 0;
    color: rgba(255, 255, 255, .68);
    font-size: .61rem;
}
.procedure-resume__body p span + span::before { content: "·"; margin-right: .7rem; }
.procedure-resume__action {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    padding: .58rem .7rem;
    color: #23645e;
    border-radius: .55rem;
    background: #fff;
    font-size: .65rem;
    font-weight: 740;
    text-decoration: none;
}
.procedure-resume__action:hover { color: #174c47; }
.procedure-step-nav {
    display: flex;
    gap: .55rem;
    overflow-x: auto;
    margin: 0 0 1rem 68px;
    padding: .2rem .05rem .45rem;
    scrollbar-width: thin;
}
.procedure-step-nav a {
    display: grid;
    grid-template-columns: 28px minmax(135px, 1fr);
    align-items: center;
    gap: .55rem;
    min-width: 195px;
    padding: .55rem .65rem;
    color: inherit;
    border: 1px solid #dfe7ed;
    border-radius: .65rem;
    background: #fff;
    text-decoration: none;
}
.procedure-step-nav a > span {
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    color: #806126;
    border-radius: 50%;
    background: #fff0cf;
    font-size: .62rem;
    font-weight: 800;
}
.procedure-step-nav a.is-target > span { color: #fff; background: var(--app-accent); }
.procedure-step-nav small,
.procedure-step-nav strong { display: block; }
.procedure-step-nav small { color: #8a989f; font-size: .52rem; text-transform: uppercase; }
.procedure-step-nav strong {
    overflow: hidden;
    color: #425a67;
    font-size: .63rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.procedure-step__display-actions {
    display: inline-flex;
    overflow: hidden;
    border: 1px solid #d9e3e9;
    border-radius: .42rem;
}
.procedure-step__display-actions button {
    padding: .25rem .38rem;
    color: #6e7f8a;
    border: 0;
    background: #fff;
    font-size: .56rem;
}
.procedure-step__display-actions button + button { border-left: 1px solid #dfe7ec; }
.procedure-step__display-actions button:hover { color: #285d79; background: #f0f6f9; }
.procedure-safety-message {
    border-width: 1px;
    border-radius: .72rem;
    box-shadow: 0 3px 10px rgba(73, 61, 33, .04);
}
.procedure-safety-message > div { min-width: 0; }
.procedure-safety-message strong { font-size: .75rem; }
.procedure-safety-message li { margin-bottom: .18rem; font-size: .72rem; line-height: 1.45; }

@media (max-width: 991.98px) {
    .physical-hero { grid-template-columns: auto minmax(0, 1fr); }
    .physical-hero__stats { grid-column: 1 / -1; width: 100%; }
    .physical-family-path { grid-template-columns: 1fr; }
    .physical-family-path i { display: none; }
    .physical-levels { overflow-x: auto; grid-template-columns: repeat(4, minmax(150px, 1fr)); }
    .physical-node-grid { grid-template-columns: 1fr; }
    .procedure-catalog-hero { grid-template-columns: 1fr; }
    .procedure-catalog-hero__stats { width: 100%; }
    .procedure-filter-row { align-items: flex-start; flex-direction: column; }
    .procedure-sort { width: 100%; justify-content: space-between; }
}

@media (max-width: 575.98px) {
    .physical-hero { grid-template-columns: 1fr; padding: 1.15rem; }
    .physical-hero__icon { width: 46px; height: 46px; }
    .physical-hero__stats { min-width: 0; }
    .physical-hero__stats div { padding: .75rem; }
    .physical-section-heading,
    .physical-level-hero,
    .physical-toolbar { align-items: flex-start; flex-direction: column; }
    .physical-section-heading > p { display: none; }
    .physical-family-card { padding: 1rem; }
    .physical-level-hero__count {
        width: 100%;
        padding: .65rem 0 0;
        text-align: left;
        border-top: 1px solid #d6e5e2;
        border-left: 0;
    }
    .physical-result-count { align-self: flex-end; }
    .physical-node-card { grid-template-columns: 38px minmax(0, 1fr); padding: .85rem; }
    .physical-node-card__icon { width: 38px; height: 38px; }
    .procedure-catalog-hero { padding: 1.15rem; }
    .procedure-catalog-hero__stats { min-width: 0; }
    .procedure-catalog-hero__stats div { padding: .65rem .45rem; }
    .procedure-catalog-controls { position: static; padding: .7rem; }
    .procedure-status-filters {
        flex-wrap: nowrap;
        width: 100%;
        padding-bottom: .25rem;
        overflow-x: auto;
    }
    .procedure-status-filters button { flex: 0 0 auto; }
    .procedure-resume {
        grid-template-columns: auto minmax(0, 1fr);
        margin-top: -.65rem;
    }
    .procedure-resume__action {
        grid-column: 1 / -1;
        justify-content: space-between;
    }
    .procedure-step-nav { margin-left: 0; }
    .procedure-step__display-actions { width: 100%; }
    .procedure-step__display-actions button { flex: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .physical-family-card__action,
    .physical-node-card { transition: none; }
}
