/* Inter Variable (rsms.me/inter, licence OFL) — auto-hébergée. Déclarée ici,
   mais téléchargée par le navigateur uniquement là où elle est activée :
   le portail syndic (body.role-syndic redéfinit --font-base ci-dessous). */
@font-face {
    font-family: 'Inter';
    src: url('../fonts/InterVariable.woff2') format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

:root {
    --color-primary: #2563EB;
    --color-primary-hover: #1D4ED8;
    --color-primary-soft: #EEF4FF;
    --color-danger: #DC2626;
    --color-danger-soft: #FDECEC;
    --color-success: #16A34A;
    --color-success-soft: #E8F7EE;
    --color-warning: #D97706;
    --color-warning-soft: #FBF1E2;
    --color-text: #0F172A;
    --color-text-muted: #475569;
    --color-text-light: #64748B;
    --color-muted: #94A3B8;
    --color-border: #E2E8F0;
    --color-border-soft: #EDF1F6;
    --color-row: #F1F5F9;
    --color-bg-soft: #F6F8FA;
    --color-bg: #FFFFFF;
    --radius-card: 14px;
    --radius-btn: 10px;
    --radius-pill: 999px;
    --shadow-card: 0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.05);
    --shadow-popover: 0 18px 40px rgba(15,23,42,.14), 0 4px 12px rgba(15,23,42,.08);
    --font-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --appbar-h: 56px;
    --tabbar-h: 60px;
    --safe-bottom: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

/* Portail syndic : Inter partout. Police variable, donc les graisses
   intermédiaires (620, 650, 680) utilisées par les vues rendent réellement —
   y compris sous Windows, où la pile système les arrondissait à 600/700. */
body.role-syndic {
    --font-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

body {
    margin: 0;
    min-height: 100vh;
    background: var(--color-bg-soft);
    color: var(--color-text);
    font-family: var(--font-base);
    font-size: 15px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
a.elevator-history-title-link { color: #2563EB; }
a.elevator-history-title-link:hover { color: #1D4ED8; text-decoration: underline; text-underline-offset: 3px; }
a.elevator-history-title-link:focus-visible { outline: 2px solid #2563EB; outline-offset: 3px; border-radius: 2px; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }

/* ==========================================================================
   Portail syndic — socle partagé
   Une seule largeur par famille d'écran, une seule échelle typographique,
   un seul registre de statuts. Toute vue du portail part d'ici.
   ========================================================================== */
:root {
    --syndic-width: 1120px;
    --syndic-width-wide: 1480px;
    --syndic-radius: 13px;
    --syndic-tone-ok: var(--color-success);
    --syndic-tone-watch: var(--color-primary);
    --syndic-tone-verify: #A96800;
    --syndic-tone-action: #B45309;
    --syndic-tone-late: var(--color-danger);
}

.syndic-surface {
    display: grid;
    gap: 20px;
    width: 100%;
    max-width: var(--syndic-width);
    margin-inline: auto;
}
.syndic-surface--wide { max-width: var(--syndic-width-wide); }
.syndic-surface > * { min-width: 0; }

.syndic-surface h1 {
    margin: 0;
    color: var(--color-text);
    font-size: clamp(23px, 2.6vw, 28px);
    font-weight: 680;
    letter-spacing: -.032em;
    line-height: 1.15;
}
.syndic-surface__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.syndic-surface__head p { margin: 6px 0 0; color: var(--color-text-muted); font-size: 13px; }
.syndic-surface h2 { margin: 0; color: var(--color-text); font-size: 16px; font-weight: 680; letter-spacing: -.018em; }

/* Bandeau de synthèse : ce que la page ne dit pas ailleurs (montants, échéances).
   Jamais un compteur déjà présent dans les segments de filtre. */
.syndic-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 30px;
    padding: 13px 16px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--syndic-radius);
    background: var(--color-bg);
    box-shadow: var(--shadow-card);
}
.syndic-summary__item { display: grid; gap: 3px; min-width: 0; }
.syndic-summary__label { color: var(--color-text-light); font-size: 11.5px; font-weight: 620; }
.syndic-summary__value {
    color: var(--color-text);
    font-size: 17px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.02em;
    line-height: 1.25;
}
.syndic-summary__value small { color: var(--color-text-light); font-size: 12px; font-weight: 600; letter-spacing: 0; }
.syndic-summary__value--alert { color: var(--color-danger); }
.syndic-summary__spacer { flex: 1 1 auto; }
.syndic-summary__link { align-self: center; color: var(--color-primary); font-size: 12px; font-weight: 650; }
.syndic-summary__link:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Bouton rendu comme un lien : sortie de filtre, action secondaire inline. */
.link-button {
    padding: 0;
    border: 0;
    background: none;
    color: var(--color-primary);
    font: inherit;
    font-weight: 650;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.link-button:hover { color: var(--color-primary-hover); }
.link-button:focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 2px; border-radius: 3px; }

/* Registre de statuts : compte ET filtre. Un seul dénominateur, une seule
   taxonomie. La couleur vit dans la pastille, pas dans le nombre — un zéro
   ne doit jamais s'afficher en rouge. */
.syndic-ledger {
    display: grid;
    grid-template-columns: repeat(var(--ledger-columns, 5), minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--syndic-radius);
    background: var(--color-bg);
    box-shadow: var(--shadow-card);
}
.syndic-ledger__cell {
    display: grid;
    align-content: start;
    gap: 5px;
    min-width: 0;
    padding: 13px 15px 14px;
    border: 0;
    border-left: 1px solid var(--color-border-soft);
    background: transparent;
    color: inherit;
    text-align: left;
    transition: background-color 140ms ease;
}
.syndic-ledger__cell:first-child { border-left: 0; }
.syndic-ledger__cell:hover { background: var(--color-bg-soft); }
.syndic-ledger__cell[aria-pressed="true"] { background: var(--color-primary-soft); box-shadow: inset 0 -2px 0 var(--color-primary); }
.syndic-ledger__cell:focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: -3px; }
.syndic-ledger__label {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    color: var(--color-text-muted);
    font-size: 11.5px;
    font-weight: 640;
}
.syndic-ledger__label span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.syndic-ledger__label::before {
    content: "";
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--ledger-tone, var(--color-muted));
}
.syndic-ledger__count {
    color: var(--color-text);
    font-size: 22px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.03em;
    line-height: 1;
}
.syndic-ledger__cell.is-zero .syndic-ledger__count { color: var(--color-muted); }
.syndic-ledger__cell--ok { --ledger-tone: var(--syndic-tone-ok); }
.syndic-ledger__cell--watch { --ledger-tone: var(--syndic-tone-watch); }
.syndic-ledger__cell--verify { --ledger-tone: var(--syndic-tone-verify); }
.syndic-ledger__cell--action { --ledger-tone: var(--syndic-tone-action); }
.syndic-ledger__cell--late { --ledger-tone: var(--syndic-tone-late); }

/* Pastille de statut unique pour tout le portail. */
.syndic-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: var(--radius-pill);
    background: var(--color-row);
    color: var(--color-text-muted);
    font-size: 11.5px;
    font-weight: 650;
    white-space: nowrap;
}
.syndic-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.syndic-status--open { background: var(--color-warning-soft); color: #92400E; }
.syndic-status--paid,
.syndic-status--accepted { background: var(--color-success-soft); color: #166534; }
.syndic-status--overdue { background: var(--color-danger-soft); color: #B42318; }

@media (max-width: 860px) {
    .syndic-ledger { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
    .syndic-ledger__cell { border-top: 1px solid var(--color-border-soft); }
    .syndic-ledger__cell:nth-child(-n+2) { border-top: 0; }
}
@media (max-width: 620px) {
    .syndic-surface { gap: 16px; }
    .syndic-summary { gap: 12px 22px; }
    .syndic-ledger {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }
    .syndic-ledger::-webkit-scrollbar { display: none; }
    .syndic-ledger__cell { flex: 0 0 44%; min-height: 74px; border-top: 0; scroll-snap-align: start; }
}
@media (prefers-reduced-motion: reduce) {
    .syndic-ledger__cell { transition: none; }
}

.syndic-list-toolbar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.syndic-list-toolbar > label { margin: 0; }
.syndic-list-search {
    position: relative;
    flex: 1 1 280px;
    min-width: min(100%, 220px);
}
.syndic-list-search svg {
    position: absolute;
    left: 13px;
    top: 50%;
    width: 18px;
    height: 18px;
    transform: translateY(-50%);
    fill: none;
    stroke: var(--color-text-light);
    stroke-width: 2;
    pointer-events: none;
}
.syndic-list-search input { padding-left: 40px; }
.syndic-list-filter { width: auto; min-width: 180px; min-height: 46px; }
.syndic-list-summary { margin: 0; color: var(--color-text-light); font-size: 12px; }
.syndic-desktop-filters { display: flex; align-items: center; gap: 10px; }
.syndic-desktop-filters label { margin: 0; }
.syndic-mobile-filter-button { display: none; }
.syndic-filter-dialog {
    width: min(440px, calc(100% - 32px));
    padding: 0;
    border: 0;
    border-radius: 16px;
    background: var(--color-bg);
    color: var(--color-text);
    box-shadow: var(--shadow-popover);
}
.syndic-filter-dialog::backdrop { background: rgba(15, 23, 42, .46); }
.syndic-filter-dialog > form { display: grid; gap: 20px; padding: 20px; }
.syndic-filter-dialog header,
.syndic-filter-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.syndic-filter-dialog h2 { margin: 0; font-size: 18px; line-height: 1.25; }
.syndic-filter-dialog header button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--color-text-light);
    font-size: 28px;
    line-height: 1;
}
.syndic-filter-dialog header button:hover { background: var(--color-bg-soft); color: var(--color-text); }
.syndic-filter-dialog__body label { margin-bottom: 7px; }
.syndic-filter-dialog__body select { width: 100%; min-height: 48px; }
.syndic-filter-dialog footer { justify-content: flex-end; }
.syndic-pagination { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 4px; }
.syndic-pagination p { margin: 0; color: var(--color-text-light); font-size: 12px; }
.syndic-pagination div { display: flex; align-items: center; gap: 5px; }
.syndic-pagination a { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 11px; border: 1px solid var(--color-border-soft); border-radius: 9px; background: var(--color-bg); color: var(--color-text-muted); font-size: 12px; font-weight: 680; text-decoration: none; }
.syndic-pagination a:hover { border-color: var(--color-border); color: var(--color-primary); }
.syndic-pagination a[aria-current="page"] { border-color: var(--color-primary); background: var(--color-primary); color: #fff; }
.syndic-pagination a:focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 1px; }
.syndic-inline-notice {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 12px 14px;
    border-radius: 12px;
    background: var(--color-primary-soft);
    color: var(--color-text-muted);
    font-size: 12.5px;
    line-height: 1.5;
}
.syndic-inline-notice svg { width: 18px; height: 18px; flex: 0 0 auto; margin-top: 1px; fill: none; stroke: var(--color-primary); stroke-width: 2; }
.syndic-filter-empty[hidden] { display: none; }
.syndic-filter-empty { margin: 0; padding: 28px 18px; color: var(--color-text-light); font-size: 13px; text-align: center; }
[data-document-open].is-loading { opacity: .72; cursor: progress; }
.empty-state strong { display: block; margin-bottom: 5px; color: var(--color-text); }
.empty-state p { margin: 0 auto 14px; max-width: 62ch; }

@media (max-width: 620px) {
    .syndic-list-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
    .syndic-list-search { min-width: 0; width: 100%; }
    .syndic-list-summary { grid-column: 1 / -1; }
    .syndic-desktop-filters { display: none; }
    .syndic-mobile-filter-button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 7px;
        min-width: 44px;
        min-height: 46px;
        padding: 0 12px;
        border: 1px solid var(--color-border);
        border-radius: 10px;
        background: var(--color-bg);
        color: var(--color-text-muted);
        font-size: 13px;
        font-weight: 700;
    }
    .syndic-mobile-filter-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
    .syndic-mobile-filter-button.is-active { border-color: var(--color-primary); background: var(--color-primary-soft); color: var(--color-primary); }
    .syndic-filter-dialog {
        width: 100%;
        max-width: none;
        margin: auto 0 0;
        border-radius: 18px 18px 0 0;
    }
    .syndic-filter-dialog > form { padding: 18px 18px calc(18px + var(--safe-bottom)); }
    .syndic-pagination { align-items: flex-start; flex-direction: column; }
    .syndic-pagination div { max-width: 100%; overflow-x: auto; padding-bottom: 3px; }
}

label {
    display: block;
    margin: 0 0 6px;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 600;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

input, select, textarea {
    width: 100%;
    min-height: 46px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    padding: 11px 13px;
}

textarea { min-height: 84px; resize: vertical; }

input:focus, select:focus, textarea:focus,
.appbar__icon-btn:focus-visible, .module-switch:focus-visible,
.tab:focus-visible, .menu-item:focus-visible,
.btn:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 1px;
    border-color: var(--color-primary);
}

h1, h2, h3, p { margin-top: 0; }

h1 {
    margin-bottom: 6px;
    font-size: clamp(1.3rem, 2.4vw, 1.6rem);
    line-height: 1.2;
    letter-spacing: -0.01em;
}

p { color: var(--color-text-muted); }

.app-shell { min-height: 100vh; display: flex; flex-direction: column; }

.desktop-sidebar { display: none; }
.desktop-topbar { display: none; }

.appbar {
    position: sticky;
    top: 0;
    z-index: 30;
    background: var(--color-bg-soft);
    -webkit-backdrop-filter: saturate(1.4) blur(10px);
    backdrop-filter: saturate(1.4) blur(10px);
    border-bottom: 1px solid transparent;
    transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.appbar--scrolled {
    background: rgba(246, 248, 250, 0.82);
    border-bottom-color: var(--color-border-soft);
    box-shadow: 0 1px 14px rgba(15, 23, 42, 0.05);
}

.appbar__inner {
    width: min(960px, calc(100% - 24px));
    margin: 0 auto;
    min-height: var(--appbar-h);
    display: flex;
    align-items: center;
    gap: 10px;
}

.appbar__left { display: flex; align-items: center; min-width: 0; flex: 1 1 0; }
.appbar__center { display: none; }
.appbar__right { display: flex; align-items: center; justify-content: flex-end; gap: 6px; min-width: 0; flex: 1 1 0; }

.brand {
    color: var(--color-text);
    font-size: 17px;
    font-weight: 700;
    letter-spacing: -0.01em;
    display: inline-flex;
    align-items: center;
}

.brand__logo {
    display: block;
    width: auto;
    height: 32px;
    object-fit: contain;
    flex: 0 0 auto;
}

.brand__text {
    display: none;
}

.appbar__icon-btn {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: transparent;
    color: var(--color-text);
    border-radius: var(--radius-pill);
    font-size: 24px;
    line-height: 1;
}
.appbar__icon-btn:hover { background: var(--color-row); }
.appbar__icon-btn svg { width: 22px; height: 22px; }

.module-switch {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    border: none;
    background: transparent;
    color: var(--color-text);
    font-size: 16px;
    font-weight: 600;
    padding: 6px 8px;
    border-radius: var(--radius-btn);
    max-width: 60vw;
}
.module-switch:hover { background: var(--color-row); }
.module-switch span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.module-switch svg { width: 18px; height: 18px; flex: 0 0 auto; }

.appbar__title {
    display: none;
    font-size: 16px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 60vw;
}

.appbar__tabs { display: none; }
.appbar__module-nav { display: none; }

.module-nav__item {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 36px;
    padding: 0 12px;
    border-radius: var(--radius-pill);
    color: var(--color-text-light);
    font-size: 14px;
    font-weight: 500;
}
.module-nav__item:hover { background: var(--color-row); color: var(--color-text); }
.module-nav__item--active { background: var(--color-primary-soft); color: var(--color-primary); }
.module-nav__item--disabled { opacity: .48; cursor: not-allowed; }
.module-nav__item--disabled:hover { background: transparent; color: var(--color-text-light); }
.module-nav__icon { display: inline-flex; flex: 0 0 auto; }
.module-nav__icon svg { width: 18px; height: 18px; }

.tabbar {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 30;
    display: flex;
    background: rgba(255,255,255,0.97);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--color-border-soft);
    padding-bottom: var(--safe-bottom);
}

.tab {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-height: var(--tabbar-h);
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 500;
}
.tab svg { width: 23px; height: 23px; }
.tab__label { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1; }
.tab--active { color: var(--color-primary); }
.tab--urgent,
.tab--urgent.tab--active {
    color: var(--color-danger);
}
.tab > .nav-icon-wrap > .nav-badge { color: var(--color-primary); }
.tab--urgent > .nav-icon-wrap > .nav-badge {
    background: var(--color-danger-soft);
    color: #DC2626;
}
.tab--disabled { color: var(--color-text-light); opacity: .55; cursor: not-allowed; }

.nav-icon-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}

.nav-badge {
    position: absolute;
    top: -7px;
    right: -9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    text-align: center;
    box-shadow: 0 1px 3px rgba(127, 29, 29, .14);
}

/* ===== Mobile full-page menu ===== */
.module-dropdown {
    position: fixed;
    inset: 0;
    z-index: 80;
    visibility: hidden;
    pointer-events: none;
}
.module-dropdown.is-open { visibility: visible; pointer-events: auto; }
.module-dropdown__scrim {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.32);
    opacity: 0;
    transition: opacity .18s ease;
}
.module-dropdown.is-open .module-dropdown__scrim { opacity: 1; }
.module-dropdown__panel {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 460px;
    background: var(--color-bg);
    box-shadow: 0 0 48px rgba(15, 23, 42, 0.20);
    transform: translateX(-100%);
    transition: transform .22s ease;
}
.module-dropdown.is-open .module-dropdown__panel { transform: translateX(0); }

/* Header: avatar + user + close */
.module-dropdown__header {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    padding: 16px 64px 16px 16px;
    padding-top: calc(16px + env(safe-area-inset-top, 0px));
    color: inherit;
}
.module-dropdown__account-link {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    gap: 12px;
    padding: 4px 8px 4px 4px;
    margin: -4px 0 -4px -4px;
    border-radius: 12px;
    color: inherit;
}
.module-dropdown__account-link:hover {
    background: var(--color-row);
    color: inherit;
}
.module-dropdown__close-wrap {
    position: absolute;
    top: calc(14px + env(safe-area-inset-top, 0px));
    right: 14px;
}
.module-dropdown__avatar {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 17px;
    font-weight: 700;
    line-height: 1;
}
.module-dropdown__user { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.module-dropdown__user strong { font-size: 16px; font-weight: 700; color: var(--color-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.module-dropdown__user small { font-size: 13px; color: var(--color-text-light); }
.module-dropdown__close {
    margin-left: auto;
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    cursor: pointer;
}
.module-dropdown__close:hover { background: var(--color-row); }

/* Search field */
.module-dropdown__search {
    flex: 0 0 auto;
    position: relative;
    display: flex;
    align-items: center;
    margin: 0 16px 6px;
}
.module-dropdown__search-icon {
    position: absolute;
    left: 12px;
    display: inline-flex;
    color: var(--color-text-light);
    pointer-events: none;
}
.module-dropdown__search-icon svg { width: 18px; height: 18px; }
.module-dropdown__search-input {
    width: 100%;
    height: 44px;
    padding: 0 12px 0 40px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 15px;
}
.module-dropdown__search-input:focus { outline: none; border-color: var(--color-primary); }

/* Scrollable list */
.module-dropdown__nav {
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 4px 10px 12px;
}
.module-dropdown__section[hidden],
.module-dropdown__loose[hidden] { display: none; }
.module-dropdown__section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 12px 12px 4px;
    border: 0;
    background: transparent;
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    cursor: pointer;
}
.module-dropdown__chevron { flex: 0 0 auto; color: var(--color-text-light); transition: transform .18s ease; }
.module-dropdown__section[data-collapsed="true"] .module-dropdown__chevron { transform: rotate(-90deg); }
.module-dropdown__section[data-collapsed="true"] .module-dropdown__section-body { display: none; }

/* Rows */
.module-dropdown__item {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 46px;
    padding: 0 12px;
    border-radius: var(--radius-btn);
    color: var(--color-text);
    font-size: 15px;
    font-weight: 500;
    text-decoration: none;
}
.module-dropdown__item + .module-dropdown__item { margin-top: 2px; }
.module-dropdown__item[hidden] { display: none; }
.module-dropdown__item:hover { background: var(--color-row); }
.module-dropdown__item--active { background: var(--color-primary-soft); color: var(--color-primary); }
.module-dropdown__item--urgent,
.module-dropdown__item--urgent.module-dropdown__item--active { color: var(--color-danger); }
.module-dropdown__item--urgent:hover { background: var(--color-danger-soft); }
.module-dropdown__item--urgent.module-dropdown__item--active { background: var(--color-danger-soft); }
.module-dropdown__item--disabled { color: var(--color-text-light); opacity: .72; cursor: not-allowed; }
.module-dropdown__item--disabled:hover { background: transparent; }
.module-dropdown__item small { flex: 0 0 auto; font-size: 12px; font-weight: 500; color: var(--color-text-light); }
.module-dropdown__main { display: inline-flex; align-items: center; gap: 12px; min-width: 0; flex: 1 1 auto; }
.module-dropdown__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.module-dropdown__main > .nav-badge {
    position: static;
    flex: 0 0 18px;
    margin-left: auto;
    color: var(--color-primary);
}
.module-dropdown__item--urgent .module-dropdown__main > .nav-badge {
    background: var(--color-danger-soft);
    color: #DC2626;
}
/* Neutral grey icons; semantic states keep their colour */
.module-dropdown__icon { display: inline-flex; flex: 0 0 auto; color: var(--color-text-light); }
.module-dropdown__icon svg { width: 21px; height: 21px; }
.module-dropdown__item--active .module-dropdown__icon { color: var(--color-primary); }
.module-dropdown__item--urgent .module-dropdown__icon { color: var(--color-danger); }

/* Account actions pinned at the bottom */
.module-dropdown__footer {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 16px;
    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--color-border-soft);
    background: var(--color-bg);
}
.module-dropdown__footer-row { display: flex; gap: 8px; }
.module-dropdown__footer-form { margin: 0; display: flex; flex: 1 1 auto; }
.module-dropdown__footer-form--icon { flex: 0 0 auto; }
.module-dropdown__footer-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    padding: 0 16px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}
.module-dropdown__footer-btn:hover { background: var(--color-row); }
.module-dropdown__footer-btn .module-dropdown__icon { color: inherit; }
.module-dropdown__footer-btn--account { flex: 1 1 auto; }
.module-dropdown__footer-btn--danger { color: var(--color-danger); }
.module-dropdown__footer-btn--danger:hover { background: var(--color-danger-soft); }
.module-dropdown__footer-btn--icon { width: 48px; flex: 0 0 auto; padding: 0; }

body.menu-open { overflow: hidden; }
@media (min-width: 861px) {
    .module-dropdown { display: none; }
}

.global-search {
    position: fixed;
    inset: 0;
    z-index: 70;
    visibility: hidden;
    pointer-events: none;
}

.global-search.is-open {
    visibility: visible;
    pointer-events: auto;
}

.global-search__scrim {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, .38);
    opacity: 0;
    transition: opacity .18s ease;
}

.global-search.is-open .global-search__scrim { opacity: 1; }

.global-search__panel {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    background: var(--color-bg-soft);
    transform: translateY(10px);
    opacity: 0;
    transition: transform .18s ease, opacity .18s ease;
}

.global-search.is-open .global-search__panel {
    transform: translateY(0);
    opacity: 1;
}

.global-search__head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 42px;
    gap: 8px;
    align-items: center;
    padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 10px;
    background: rgba(246, 248, 250, .94);
    border-bottom: 1px solid var(--color-border-soft);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.global-search__field {
    position: relative;
    min-width: 0;
}

.global-search__field-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    display: inline-flex;
    color: var(--color-text-light);
    transform: translateY(-50%);
    pointer-events: none;
}

.global-search__field-icon svg {
    width: 20px;
    height: 20px;
}

.global-search__field input {
    min-height: 48px;
    padding-left: 44px;
    border-radius: 8px;
    background: var(--color-bg);
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}

.global-search__close {
    width: 42px;
    height: 42px;
    font-size: 28px;
}

.global-search__body {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 12px 12px calc(18px + var(--safe-bottom));
}

.global-search__group + .global-search__group {
    margin-top: 14px;
}

.global-search__group-title {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 0 0 6px;
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.global-search__group-title span,
.global-search__item-icon {
    display: inline-flex;
    flex: 0 0 auto;
}

.global-search__group-title svg {
    width: 14px;
    height: 14px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.global-search__list {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.global-search__item {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 14px;
    align-items: center;
    gap: 10px;
    min-height: 58px;
    padding: 8px 10px;
    border: 1px solid var(--color-border-soft);
    border-radius: 8px;
    background: var(--color-bg);
    color: var(--color-text);
    box-shadow: 0 1px 2px rgba(15, 23, 42, .035);
}

.global-search__item:hover {
    border-color: var(--color-border);
    background: #FAFBFC;
}

.global-search__item:focus-visible {
    outline: 3px solid rgba(37, 99, 235, .22);
    outline-offset: 1px;
    border-color: var(--color-primary);
}

.global-search__item-icon {
    width: 34px;
    height: 34px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: var(--color-primary-soft);
    color: var(--color-primary);
}

.global-search__item--urgence .global-search__item-icon {
    background: var(--color-danger-soft);
    color: var(--color-danger);
}

.global-search__item--afaire .global-search__item-icon {
    background: var(--color-warning-soft);
    color: var(--color-warning);
}

.global-search__item--tache .global-search__item-icon {
    background: var(--color-success-soft);
    color: var(--color-success);
}

.global-search__item--etape .global-search__item-icon {
    background: var(--color-primary-soft);
    color: var(--color-primary);
}

.global-search__item-icon svg {
    width: 19px;
    height: 19px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.global-search__item-body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.global-search__item-title {
    overflow: hidden;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.global-search__item-meta {
    overflow: hidden;
    color: var(--color-text-light);
    font-size: 12px;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.global-search__chev {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-light);
    font-size: 20px;
    line-height: 1;
}

.global-search__chev--plus {
    color: var(--color-primary);
}

.global-search__chev svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.global-search__state {
    margin: 30vh auto 0;
    width: min(280px, 100%);
    color: var(--color-text-light);
    font-size: 14px;
    text-align: center;
}

@media (min-width: 861px) {
    .global-search__scrim {
        background: rgba(15, 23, 42, .28);
    }

    .global-search__panel {
        inset: 72px auto auto 50%;
        width: min(680px, calc(100vw - 48px));
        max-height: min(720px, calc(100vh - 112px));
        border: 1px solid var(--color-border-soft);
        border-radius: 8px;
        box-shadow: var(--shadow-popover);
        transform: translate(-50%, -8px);
        overflow: hidden;
    }

    .global-search.is-open .global-search__panel {
        transform: translate(-50%, 0);
    }

    .global-search__head {
        padding: 12px;
        background: var(--color-bg);
    }

    .global-search__body {
        background: var(--color-bg-soft);
        padding: 12px;
    }
}

.menu-sheet { position: fixed; inset: 0; z-index: 50; pointer-events: none; }
.menu-sheet.is-open { pointer-events: auto; }
.menu-sheet__scrim { position: absolute; inset: 0; background: rgba(15,23,42,0.45); opacity: 0; transition: opacity .24s ease; }
.menu-sheet.is-open .menu-sheet__scrim { opacity: 1; }
.menu-sheet__panel {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    max-width: 480px;
    margin: 0 auto;
    background: var(--color-bg);
    border-top-left-radius: 18px;
    border-top-right-radius: 18px;
    padding: 8px 16px calc(18px + var(--safe-bottom));
    transform: translateY(100%);
    transition: transform .28s cubic-bezier(.32,.72,0,1);
    box-shadow: 0 -8px 40px rgba(15,23,42,0.18);
    will-change: transform;
}
.menu-sheet.is-open .menu-sheet__panel { transform: translateY(0); }
.menu-sheet__handle { width: 36px; height: 4px; border-radius: 999px; background: var(--color-border); margin: 8px auto 12px; }
.menu-sheet__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.menu-sheet__title { font-size: 15px; font-weight: 600; }
.menu-sheet__list { display: flex; flex-direction: column; gap: 4px; }
.menu-item {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 48px;
    padding: 0 12px;
    border: none;
    background: transparent;
    border-radius: var(--radius-btn);
    color: var(--color-text);
    font-size: 15px;
    font-weight: 500;
    text-align: left;
}
.menu-item:hover { background: var(--color-row); }
.menu-item--danger { color: var(--color-danger); }
.menu-item__form { margin: 0; width: 100%; }

.app-main {
    flex: 1;
    width: min(960px, calc(100% - 24px));
    margin: 0 auto;
    padding: 18px 0 36px;
}

.impersonation-banner {
    position: sticky;
    top: var(--appbar-h);
    z-index: 25;
    width: min(960px, calc(100% - 24px));
    margin: 10px auto 0;
}

.impersonation-banner__inner {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    padding: 8px 10px 8px 12px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    background: rgba(255,255,255,.92);
    color: var(--color-text-muted);
    box-shadow: 0 1px 3px rgba(15,23,42,.04);
}

.impersonation-banner__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--color-bg-soft);
    color: var(--color-text-light);
}

.impersonation-banner__icon svg {
    width: 17px;
    height: 17px;
}

.impersonation-banner__text {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    font-size: 13px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.impersonation-banner__text strong {
    color: var(--color-text);
    font-weight: 700;
}

.impersonation-banner__form {
    flex: 0 0 auto;
    margin: 0;
}

.impersonation-banner__action {
    min-height: 30px;
    padding: 0 11px;
    border: 0;
    border-radius: var(--radius-pill);
    background: transparent;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 700;
}

.impersonation-banner__action:hover {
    background: var(--color-row);
    color: var(--color-text);
}

.app-footer { border-top: 1px solid var(--color-border-soft); color: var(--color-text-light); font-size: 13px; }
.app-footer__inner { width: min(960px, calc(100% - 24px)); margin: 0 auto; padding: 16px 0; }
body.dashboard-page .app-footer { display: none; }

.page-container { max-width: 960px; margin: 0 auto; padding: 0; }
.page-stack { display: grid; gap: 16px; }
.page-stack > *,
.card,
.list-section,
.action-bar,
.filter-chips {
    min-width: 0;
}

.page-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--color-border-soft);
}
.page-header__body { min-width: min(100%, 360px); }
.page-header__actions, .actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.meta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.stats-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
    margin: 0;
    padding: 14px 16px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    background: var(--color-bg);
    box-shadow: var(--shadow-card);
    color: var(--color-text);
}
.stats-bar__item { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.stats-bar strong, .stats-bar__value { color: var(--color-text); font-size: 19px; font-weight: 600; line-height: 1; }
.stats-bar__value--danger, .stats-bar--danger strong { color: var(--color-danger); }

.card, .panel {
    background: var(--color-bg);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}
.panel { padding: 24px; }
.narrow { max-width: 460px; margin: 28px auto; }
.card--danger { border-left: 3px solid var(--color-danger); border-radius: 0 var(--radius-card) var(--radius-card) 0; }
.card--warning { border-left: 3px solid var(--color-warning); border-radius: 0 var(--radius-card) var(--radius-card) 0; }
.card--primary { border-left: 3px solid var(--color-primary); border-radius: 0 var(--radius-card) var(--radius-card) 0; }

.card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    padding: 13px 16px;
    background: transparent;
    border-bottom: 1px solid var(--color-border-soft);
}
.card-title { margin: 0; color: var(--color-text); font-size: 15px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.card-body { padding: 14px 16px; }
.card-body p:last-child { margin-bottom: 0; }
.card-body p { overflow-wrap: anywhere; white-space: pre-wrap; }
.card-list { display: grid; gap: 12px; }

.detail-grid {
    display: grid;
    grid-template-columns: 116px minmax(0, 1fr);
    gap: 7px 12px;
    color: var(--color-text);
    font-size: 14px;
}
.detail-label { color: var(--color-text-light); font-weight: 600; }
.detail-value { min-width: 0; overflow-wrap: anywhere; }

.data-table-wrap {
    width: 100%;
    overflow-x: auto;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    background: var(--color-bg);
    box-shadow: var(--shadow-card);
}
.data-table { width: 100%; min-width: 680px; border-collapse: collapse; background: var(--color-bg); }
.data-table th, .data-table td { padding: 12px 14px; border-bottom: 1px solid var(--color-border-soft); text-align: left; vertical-align: top; }
.data-table td { font-size: 14px; }
.data-table th { color: var(--color-text-light); font-size: 12px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase; background: var(--color-bg-soft); }
.data-table tbody tr:hover { background: var(--color-bg-soft); }
.data-table tbody tr:last-child td { border-bottom: 0; }
.archive-pagination {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    align-self: center;
    padding: 6px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-pill);
    background: var(--color-bg);
    box-shadow: var(--shadow-card);
}
.archive-pagination__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    color: var(--color-primary);
}
.archive-pagination__btn:hover {
    background: var(--color-primary-soft);
}
.archive-pagination__btn svg {
    width: 19px;
    height: 19px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.archive-pagination__btn--disabled,
.archive-pagination__btn--disabled:hover {
    pointer-events: none;
    color: var(--color-text-light);
    background: transparent;
    opacity: .45;
}
.archive-pagination__status {
    min-width: 86px;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 650;
    text-align: center;
}
.demandes-mobile-list { display: none; }
.col-num, .data-table .col-num { color: var(--color-primary); font-weight: 600; }
.col-num--danger, .data-table .col-num--danger { color: var(--color-danger); }
.col-num--todo, .data-table .col-num--todo { color: var(--color-warning); }
.col-num--done, .data-table .col-num--done { color: var(--color-success); }
.col-num--validation, .data-table .col-num--validation { color: #7C3AED; }
.col-date, .data-table .col-date { color: var(--color-text-light); font-size: 13px; }
.col-amount, .data-table .col-amount { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }

.btn, .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 44px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    padding: 9px 16px;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.2;
    text-align: center;
    transition: background-color 140ms ease, border-color 140ms ease, color 140ms ease;
}
.btn:hover, .button:hover { border-color: var(--color-border); background: var(--color-row); color: var(--color-text); }
.btn__icon { width: 18px; height: 18px; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; }
.btn__icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.btn-primary, .button--primary { border-color: var(--color-primary); background: var(--color-primary); color: #fff; }
.btn-primary:hover, .button--primary:hover { border-color: var(--color-primary-hover); background: var(--color-primary-hover); color: #fff; }
.btn-ticket { border-color: #93C5FD; background: #EFF6FF; color: #1D4ED8; }
.btn-ticket:hover { border-color: #60A5FA; background: #DBEAFE; color: #1E40AF; }
.btn:disabled, .btn[aria-disabled="true"], .button:disabled, .button[aria-disabled="true"] { border-color: var(--color-border); background: var(--color-row); color: var(--color-text-light); opacity: .68; cursor: not-allowed; box-shadow: none; }
.btn:disabled:hover, .btn[aria-disabled="true"]:hover, .button:disabled:hover, .button[aria-disabled="true"]:hover { border-color: var(--color-border); background: var(--color-row); color: var(--color-text-light); }
.btn-success { border-color: var(--color-success); background: var(--color-success); color: #fff; }
.btn-success:hover { border-color: #15803D; background: #15803D; color: #fff; }
.btn-warning { border-color: var(--color-warning); background: var(--color-warning); color: #fff; }
.btn-warning:hover { border-color: #B45309; background: #B45309; color: #fff; }
.btn-danger { border-color: var(--color-danger); background: var(--color-danger); color: #fff; }
.btn-danger:hover { border-color: #B91C1C; background: #B91C1C; color: #fff; }

.badge {
    display: inline-block;
    border-radius: var(--radius-pill);
    padding: 3px 10px;
    border: 1px solid var(--color-border);
    background: var(--color-bg);
    color: var(--color-text-muted);
    font-size: 11px;
    font-weight: 600;
    line-height: 1.5;
    white-space: nowrap;
}
.badge-urgent { border-color: transparent; background: var(--color-danger-soft); color: #991B1B; }
.badge-todo { border-color: transparent; background: var(--color-warning-soft); color: #92400E; }
.badge-done { border-color: transparent; background: var(--color-success-soft); color: #166534; }
.badge-validation { border-color: transparent; background: rgba(124, 58, 237, .11); color: #6D28D9; }
.badge-administrative { border-color: transparent; background: #eef1f5; color: #394150; }

.ready-send { display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin-top:10px; }
.ready-send--compact { margin-top:0; }
.ready-send__badge { display:inline-flex; align-items:center; gap:6px; min-height:28px; padding:5px 10px; border:1px solid #a7d7ba; border-radius:999px; background:#eaf8ef; color:#176438; font-size:12px; font-weight:800; letter-spacing:.01em; }
.ready-send__badge svg { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
.ready-send__meta { color:var(--color-text-muted); font-size:12px; font-weight:600; }
.ready-send form { margin:0; }
.ready-send .btn { min-height:32px; padding:6px 10px; font-size:12px; }
.ready-send__remove { color:var(--color-text-muted); background:transparent; }
.ready-send--action-only { position:relative; z-index:2; margin:0; }
.ready-send--action-only .btn { width:100%; justify-content:center; white-space:nowrap; }
.demande-table-actions .ready-send { width:100%; }
.task__foot > .ready-send { margin-right:auto; }
@media (max-width: 720px) {
    .ready-send { align-items:flex-start; }
    .ready-send__meta { flex-basis:100%; }
    .ready-send form { width:100%; }
    .ready-send form .btn { width:100%; justify-content:center; }
}
.badge-private { border-color: transparent; background: var(--color-success-soft); color: #166534; }
.badge-public { border-color: transparent; background: var(--color-primary-soft); color: #1E40AF; }

.section-date { margin: 10px 0 0; color: var(--color-text); font-size: 17px; font-weight: 600; line-height: 1.25; }

.empty-state { border: 1px dashed var(--color-border); border-radius: var(--radius-card); padding: 30px 18px; background: var(--color-bg); color: var(--color-text-light); text-align: center; font-size: 14px; }

.alert, .flash, .error-list { border-radius: var(--radius-card); padding: 12px 14px; }
.alert, .error-list { border: 1px solid transparent; background: var(--color-danger-soft); color: #991B1B; }
.alert--link { display: block; font-weight: 600; }
.alert--link:hover { text-decoration: underline; }
.flash { border: 1px solid transparent; background: var(--color-success-soft); color: #166534; }
.flash--danger { background: var(--color-danger-soft); color: #991B1B; }
.error-list ul { margin: 0; padding-left: 18px; }

.filter-form, .form-grid { display: grid; gap: 16px; }
.filter-form { grid-template-columns: minmax(180px, 1fr) auto; align-items: end; }
.form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.filter-form > *,
.form-grid > *,
.field-full {
    min-width: 0;
}
.field-full { grid-column: 1 / -1; }

.ticket-scope-field {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}
.ticket-scope-field legend {
    margin: 0 0 8px;
    color: var(--text, #16181d);
    font-size: 14px;
    font-weight: 600;
}
.ticket-scope-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.ticket-scope-option {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 72px;
    align-items: flex-start;
    gap: 10px;
    margin: 0;
    padding: 13px 14px;
    border: 1px solid var(--border, #e2e4e8);
    border-radius: 11px;
    background: #fff;
    cursor: pointer;
    transition: border-color .14s ease, background-color .14s ease, box-shadow .14s ease;
}
.ticket-scope-option:has(input:checked) {
    border-color: #2563eb;
    background: #eef4ff;
    box-shadow: 0 0 0 1px rgba(37, 99, 235, .08);
}
.ticket-scope-option:has(input:focus-visible) { box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); }
.ticket-scope-option input {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    min-height: 16px;
    margin: 2px 0 0;
    padding: 0;
    border: 0;
    box-shadow: none;
    accent-color: #2563eb;
}
.ticket-scope-option__body { display: grid; min-width: 0; gap: 3px; }
.ticket-scope-option__body strong { color: #16181d; font-size: 14px; line-height: 1.3; }
.ticket-scope-option__body small { color: #70757e; font-size: 12px; font-weight: 400; line-height: 1.4; }
@media (max-width: 720px) {
    .ticket-scope-options { grid-template-columns: 1fr; }
    .ticket-scope-option { min-height: 0; }
}

.account-page label,
.users-admin-page label {
    display: grid;
    gap: 6px;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 600;
}

.account-page input,
.users-admin-page input,
.users-admin-page select {
    width: 100%;
    min-height: 42px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    padding: 8px 11px;
    font: inherit;
    font-weight: 400;
}

.account-page input[readonly] {
    background: var(--color-bg-soft);
    color: var(--color-text-muted);
}

.users-admin-table .data-table {
    min-width: 760px;
}

.users-admin-table small {
    display: block;
    margin-top: 3px;
    color: var(--color-text-light);
    font-size: 12px;
}

.users-admin-actions {
    margin-top: 16px;
}

/* User access studio ----------------------------------------------------- */
.users-admin-page { max-width: 1260px; }
.users-admin-hero {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 28px;
    padding: 26px 28px;
    border: 1px solid #D8E2EE;
    border-radius: 20px;
    background:
        radial-gradient(circle at 88% 18%, rgba(37, 99, 235, .14), transparent 28%),
        linear-gradient(135deg, #FFFFFF 0%, #F5F8FC 72%);
}
.users-admin-hero::after {
    content: '';
    position: absolute;
    right: 92px;
    bottom: -80px;
    width: 220px;
    height: 220px;
    border: 1px solid rgba(37, 99, 235, .12);
    border-radius: 50%;
    box-shadow: 0 0 0 34px rgba(37, 99, 235, .035), 0 0 0 68px rgba(37, 99, 235, .025);
    pointer-events: none;
}
.users-admin-hero .page-header__body { max-width: 720px; position: relative; z-index: 1; }
.users-admin-hero h1 { margin: 3px 0 8px; font-size: clamp(1.7rem, 3vw, 2.35rem); letter-spacing: -.035em; }
.users-admin-hero p { margin: 0; max-width: 650px; }
.users-admin-hero__count {
    position: relative;
    z-index: 1;
    min-width: 120px;
    padding: 14px 18px;
    border: 1px solid rgba(37, 99, 235, .16);
    border-radius: 14px;
    background: rgba(255, 255, 255, .78);
    backdrop-filter: blur(8px);
    text-align: right;
}
.users-admin-hero__count strong { display: block; color: var(--color-primary); font-size: 25px; line-height: 1; }
.users-admin-hero__count span { color: var(--color-text-light); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; }

.user-create-shell { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 20px; align-items: start; }
.user-create-main { display: grid; gap: 16px; min-width: 0; }
.user-create-section { overflow: hidden; border-radius: 18px; }
.user-create-section__head {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    padding: 20px 22px;
    border-bottom: 1px solid var(--color-border-soft);
}
.user-create-section__head > div { flex: 1 1 auto; min-width: 0; }
.user-create-section__head h2 { margin: 0 0 3px; font-size: 17px; letter-spacing: -.015em; }
.user-create-section__head p { margin: 0; font-size: 13px; }
.user-create-step {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
    border-radius: 10px;
    background: #101C2E;
    color: #fff;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
}
.user-create-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px; padding: 22px; }
.users-admin-page .user-create-field { display: block; margin: 0; }
.user-create-field > label { display: block; margin-bottom: 7px; }
.user-create-field label span { color: var(--color-text-light); font-weight: 500; }
.user-create-field > small { display: block; margin-top: 6px; color: var(--color-text-light); font-size: 11px; }
.user-create-field.has-error input { border-color: var(--color-danger); background: #FFF9F9; }
.user-password-control { position: relative; }
.user-password-control input { padding-right: 80px; }
.user-password-toggle {
    position: absolute;
    top: 50%;
    right: 7px;
    transform: translateY(-50%);
    border: 0;
    border-radius: 7px;
    padding: 5px 8px;
    background: var(--color-row);
    color: var(--color-text-muted);
    font-size: 11px;
    font-weight: 700;
}
.user-password-meter { display: flex; align-items: center; gap: 9px; margin-top: 7px; color: var(--color-text-light); font-size: 11px; }
.user-password-meter__bar { height: 5px; flex: 1 1 auto; overflow: hidden; border-radius: 99px; background: var(--color-row); }
.user-password-meter__bar i { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--color-danger); transition: width .2s ease, background-color .2s ease; }
.user-password-meter[data-strength="2"] i { background: var(--color-warning); }
.user-password-meter[data-strength="3"] i,
.user-password-meter[data-strength="4"] i { background: var(--color-success); }

.user-role-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 18px 22px 22px; }
.users-admin-page .user-role-card {
    --role-accent: #2563EB;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-height: 190px;
    margin: 0;
    padding: 17px;
    border: 1px solid var(--color-border);
    border-radius: 14px;
    background: #fff;
    cursor: pointer;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.users-admin-page .user-role-card:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--role-accent) 42%, white); box-shadow: 0 10px 26px rgba(15, 23, 42, .07); }
.user-role-card--teal { --role-accent: #0F8A84; }
.user-role-card--amber { --role-accent: #C26A09; }
.user-role-card--coral { --role-accent: #D54E3E; }
.user-role-card input { position: absolute; opacity: 0; pointer-events: none; }
.user-role-card:has(input:checked) { border-color: var(--role-accent); box-shadow: inset 0 0 0 1px var(--role-accent), 0 10px 26px color-mix(in srgb, var(--role-accent) 12%, transparent); }
.user-role-card:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--role-accent) 23%, transparent); outline-offset: 2px; }
.user-role-card__check { position: absolute; top: 15px; right: 15px; width: 20px; height: 20px; border: 1px solid var(--color-border); border-radius: 50%; background: #fff; }
.user-role-card:has(input:checked) .user-role-card__check { border: 6px solid var(--role-accent); }
.user-role-card__eyebrow { color: var(--role-accent); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.user-role-card > strong { padding-right: 28px; color: var(--color-text); font-size: 17px; }
.user-role-card__description { color: var(--color-text-muted); font-size: 12px; font-weight: 500; line-height: 1.45; }
.user-role-card__access { display: flex; flex-wrap: wrap; gap: 5px; margin-top: auto; padding-top: 10px; }
.user-role-card__access small { padding: 3px 7px; border-radius: 99px; background: color-mix(in srgb, var(--role-accent) 8%, white); color: color-mix(in srgb, var(--role-accent) 80%, #0F172A); font-size: 10px; font-weight: 700; }

.permission-counter { flex: 0 0 auto; padding: 4px 9px; border-radius: 99px; background: var(--color-primary-soft); color: #1E40AF; font-size: 11px; font-weight: 700; }
.user-permission-list { display: grid; gap: 10px; padding: 18px 22px 22px; }
.users-admin-page .user-permission-card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 13px;
    margin: 0;
    padding: 15px;
    border: 1px solid var(--color-border);
    border-radius: 13px;
    background: #fff;
    cursor: pointer;
    transition: border-color .16s ease, background-color .16s ease;
}
.user-permission-card:hover { border-color: #B9C9DC; }
.user-permission-card:has(input:checked) { border-color: #8EB1F7; background: #F8FBFF; }
.user-permission-card.is-unavailable { background: #F8FAFC; cursor: not-allowed; opacity: .66; }
.user-permission-card.is-inherited { border-color: #B7DEC3; background: #F6FCF8; cursor: default; opacity: 1; }
.user-permission-card input { position: absolute; opacity: 0; pointer-events: none; }
.user-permission-card:has(input:focus-visible) { outline: 3px solid rgba(37, 99, 235, .2); outline-offset: 1px; }
.user-permission-card__toggle { position: relative; width: 38px; height: 22px; flex: 0 0 auto; margin-top: 1px; border-radius: 99px; background: #CBD5E1; transition: background-color .18s ease; }
.user-permission-card__toggle i { position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(15, 23, 42, .22); transition: transform .18s ease; }
.user-permission-card:has(input:checked) .user-permission-card__toggle { background: var(--color-primary); }
.user-permission-card:has(input:checked) .user-permission-card__toggle i { transform: translateX(16px); }
.user-permission-card__body { flex: 1 1 auto; min-width: 0; color: var(--color-text-muted); font-size: 12px; font-weight: 500; }
.user-permission-card__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 3px; }
.user-permission-card__top strong { color: var(--color-text); font-size: 14px; }
.user-permission-card__top small { flex: 0 0 auto; padding: 2px 7px; border-radius: 99px; background: var(--color-row); color: var(--color-text-light); font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.user-permission-card__body em { display: none; margin-top: 5px; color: var(--color-warning); font-size: 10px; font-style: normal; font-weight: 700; }
.user-permission-card.is-unavailable .user-permission-card__body em { display: block; }
.user-permission-card.is-inherited .user-permission-card__body em { display: block; color: var(--color-success); }
.user-permission-card.is-inherited .user-permission-card__toggle { background: var(--color-success); }
.user-permission-card.is-inherited .user-permission-card__toggle i { transform: translateX(16px); }

.user-create-summary { position: sticky; top: 84px; }
.user-create-summary__card { overflow: hidden; padding: 22px; border-radius: 18px; background: #101C2E; color: #fff; box-shadow: 0 18px 42px rgba(15, 28, 46, .18); }
.user-create-summary__card .meta { color: #91A4BD; }
.user-create-avatar { display: grid; place-items: center; width: 60px; height: 60px; margin: 20px 0 14px; border: 1px solid rgba(255,255,255,.14); border-radius: 18px; background: linear-gradient(145deg, #2F6FE8, #1D4ED8); color: #fff; font-size: 18px; font-weight: 800; letter-spacing: .04em; box-shadow: 0 10px 24px rgba(37, 99, 235, .3); }
.user-create-summary h2 { margin: 0 0 2px; color: #fff; font-size: 19px; }
.user-create-summary h2 + p { margin: 0 0 22px; color: #91A4BD; font-size: 12px; }
.user-create-summary__role,
.user-create-summary__permissions { padding: 13px 0; border-top: 1px solid rgba(255,255,255,.1); }
.user-create-summary__role { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.user-create-summary__role span,
.user-create-summary__permissions > span { color: #91A4BD; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.user-create-summary__role strong { color: #fff; font-size: 13px; }
.user-create-summary__permissions > div { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.user-create-summary__permissions small { color: #91A4BD; font-size: 11px; }
.user-create-summary__permissions i { padding: 3px 7px; border: 1px solid rgba(255,255,255,.12); border-radius: 99px; background: rgba(255,255,255,.07); color: #DCE7F4; font-size: 9px; font-style: normal; font-weight: 700; }
.user-create-summary__notice { display: flex; gap: 9px; margin: 9px 0 17px; padding: 10px; border-radius: 10px; background: rgba(22, 163, 74, .13); }
.user-create-summary__notice > span { color: #63D98A; font-weight: 900; }
.user-create-summary__notice p { margin: 0; color: #C7D5E5; font-size: 10px; line-height: 1.45; }
.user-create-submit { width: 100%; min-height: 52px; flex-direction: column; gap: 0; border-color: #fff; background: #fff; color: #101C2E; }
.user-create-submit:hover { border-color: #E7EEF7; background: #E7EEF7; color: #101C2E; }
.user-create-submit small { opacity: .62; font-size: 9px; font-weight: 700; }

.users-list-head { align-items: end; }
.users-list-head .meta { display: block; margin-bottom: 3px; }
.users-table-person { display: flex; align-items: center; gap: 10px; }
.users-table-person > span:last-child { min-width: 0; }
.users-table-avatar { display: grid; place-items: center; width: 34px; height: 34px; flex: 0 0 auto; border-radius: 10px; background: #E9F0FB; color: #1E40AF; font-size: 10px; font-weight: 800; }
.users-admin-table code { padding: 3px 7px; border-radius: 6px; background: var(--color-row); color: var(--color-text-muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; }
.users-admin-table .users-password-value { color: #9A3412; background: #FFF3E8; }
.users-access-badges { display: flex; flex-wrap: wrap; gap: 4px; max-width: 320px; }
.users-access-badges span { padding: 3px 7px; border-radius: 99px; background: var(--color-primary-soft); color: #1E40AF; font-size: 9px; font-weight: 700; }
.users-admin-table .users-access-empty { margin: 0; }
.users-admin-actions { display: flex; align-items: center; justify-content: flex-end; gap: 14px; }
.users-admin-actions > span { margin-right: auto; color: var(--color-text-light); font-size: 11px; }

@media (max-width: 1040px) {
    .user-create-shell { grid-template-columns: minmax(0, 1fr); }
    .user-create-summary { position: static; order: -1; }
    .user-create-summary__card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 6px 16px; }
    .user-create-summary__card > .meta { grid-column: 1 / -1; }
    .user-create-avatar { grid-row: 2 / 4; margin: 4px 0; }
    .user-create-summary h2 { align-self: end; }
    .user-create-summary h2 + p { align-self: start; margin: 0; }
    .user-create-summary__role { grid-column: 3; grid-row: 2 / 4; flex-direction: column; align-items: flex-end; border: 0; padding: 0; }
    .user-create-summary__permissions,
    .user-create-summary__notice { display: none; }
    .user-create-submit { grid-column: 1 / -1; margin-top: 8px; }
}

@media (max-width: 680px) {
    .users-admin-hero { align-items: flex-start; padding: 20px; }
    .users-admin-hero__count { display: none; }
    .user-create-section__head { padding: 17px; }
    .user-create-section__head .permission-counter { display: none; }
    .user-create-fields,
    .user-role-grid { grid-template-columns: 1fr; padding: 17px; }
    .user-permission-list { padding: 14px 17px 17px; }
    .user-role-card { min-height: 170px; }
    .user-create-summary__card { grid-template-columns: auto minmax(0, 1fr); padding: 17px; }
    .user-create-summary__role { display: none; }
    .users-admin-actions { align-items: stretch; flex-direction: column; }
    .users-admin-actions > span { margin: 0; }
}

/* Préparation des travaux — file et fiche mobile de préassignation. */
.prep-page { --prep-ink:var(--color-text); --prep-muted:var(--color-text-light); --prep-line:var(--color-border); --prep-blue:var(--color-primary); --prep-blue-soft:var(--color-primary-soft); --prep-green:var(--color-success); --prep-green-soft:var(--color-success-soft); --prep-orange:var(--color-warning); --prep-orange-soft:var(--color-warning-soft); width:min(980px,100%); max-width:100%; margin:0 auto; color:var(--prep-ink); overflow-x:clip; }
.prep-list-head { position:sticky; z-index:12; top:0; margin:0 0 14px; padding:20px 20px 14px; border-bottom:1px solid var(--prep-line); background:rgba(246,248,250,.96); backdrop-filter:blur(14px); }
.prep-title-row { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.prep-eyebrow { margin:0 0 2px; color:var(--prep-blue); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.prep-title-row h1,.prep-form-head h1 { margin:0; color:var(--prep-ink); letter-spacing:-.025em; }
.prep-title-row h1 { font-size:28px; }
.prep-count { display:inline-flex; align-items:center; min-height:30px; padding:5px 10px; border-radius:7px; background:var(--prep-orange-soft); color:var(--prep-orange); font-size:12px; font-weight:700; white-space:nowrap; }
.prep-flash { margin:12px 0 0; }
.prep-search { position:relative; display:flex; align-items:center; min-height:46px; margin-top:14px; border:1px solid #cbd3df; border-radius:10px; background:#fff; box-shadow:0 1px 2px rgba(20,33,61,.03); }
.prep-search svg { width:19px; height:19px; margin-left:13px; fill:none; stroke:#7b8599; stroke-width:2; stroke-linecap:round; }
.prep-search input { width:100%; min-height:44px; padding:9px 12px 9px 9px; border:0; outline:0; background:transparent; color:var(--prep-ink); font:inherit; }
.prep-filters { display:flex; gap:8px; margin-top:11px; overflow-x:auto; scrollbar-width:none; }
.prep-filters::-webkit-scrollbar { display:none; }
.prep-filter { min-height:40px; display:inline-flex; flex:0 0 auto; align-items:center; gap:7px; padding:7px 11px; border:1px solid #cbd3df; border-radius:9px; background:#fff; color:#344054; font:inherit; font-size:12.5px; font-weight:650; cursor:pointer; }
.prep-filter span { min-width:20px; padding:1px 5px; border-radius:999px; background:#eef1f5; color:#687386; font-size:10px; text-align:center; }
.prep-filter[aria-pressed="true"] { border-color:var(--prep-blue); background:var(--prep-blue); color:#fff; }
.prep-filter[aria-pressed="true"] span { background:rgba(255,255,255,.2); color:#fff; }
.prep-sites { display:grid; gap:13px; padding:0 20px 28px; }
.prep-site { overflow:hidden; border:1px solid var(--prep-line); border-radius:12px; background:#fff; box-shadow:0 2px 8px rgba(20,33,61,.04); }
.prep-site__head { padding:15px 16px 13px; }
.prep-site__title { display:flex; align-items:center; gap:7px; font-size:15px; }
.prep-site__title svg,.prep-site__offer svg,.prep-label svg,.prep-assignment__top svg { width:17px; height:17px; flex:0 0 auto; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.prep-site__title svg { color:var(--prep-blue); }
.prep-site__meta { margin:3px 0 0 24px; color:var(--prep-muted); font-size:12.5px; }
.prep-site__offer { display:flex; align-items:center; gap:5px; }
.prep-progress { display:flex; align-items:center; gap:10px; margin-top:12px; color:var(--prep-muted); font-size:11.5px; }
.prep-progress__track { height:6px; flex:1; overflow:hidden; border-radius:99px; background:#e7ebf1; }
.prep-progress__track span { display:block; height:100%; border-radius:inherit; background:var(--prep-green); }
.prep-terms { border-top:1px solid #e7ebf1; }
.prep-term[hidden], .prep-site[hidden], .prep-empty[hidden] { display:none !important; }
.prep-term { min-height:50px; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 14px 8px 16px; border-bottom:1px solid #edf0f4; color:var(--prep-ink); text-decoration:none; }
.prep-term:last-child { border-bottom:0; }
.prep-term:hover { background:#f8fafc; }
.prep-term__label { min-width:0; font-size:13.5px; font-weight:590; }
.prep-term__right { display:flex; align-items:center; gap:8px; }
.prep-badge { display:inline-flex; align-items:center; gap:4px; padding:4px 8px; border-radius:7px; font-size:11px; font-weight:700; white-space:nowrap; }
.prep-badge--todo { background:var(--prep-orange-soft); color:var(--prep-orange); }
.prep-badge--draft { background:var(--prep-blue-soft); color:#174d7c; }
.prep-badge--ready { background:var(--prep-green-soft); color:#2f5d12; }
.prep-badge--assigned { background:var(--color-row); color:var(--color-text-muted); }
.prep-badge--no_field_work { background:#f0f0eb; color:#4d4d47; }
.prep-chevron { color:#98a2b3; font-size:25px; line-height:1; }
.prep-empty { padding:48px 16px; color:var(--prep-muted); text-align:center; }

.prep-form-page { width:min(720px,100%); }
.prep-form-head { position:sticky; z-index:10; top:0; display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; padding:14px 16px; border-bottom:1px solid var(--prep-line); background:rgba(255,255,255,.97); backdrop-filter:blur(14px); }
.prep-form-head__content { min-width:0; flex:1; padding-top:2px; }
.prep-form-head h1 { font-size:19px; }
.prep-form-head p { margin:2px 0 0; color:var(--prep-muted); font-size:12px; line-height:1.35; }
.prep-form-head__reference { overflow-wrap:anywhere; }
.prep-form-head__reference span { color:var(--prep-ink); font-weight:650; }
.prep-offer-link { min-height:44px; display:inline-flex; flex:0 0 auto; align-items:center; gap:6px; padding:8px 11px; border:1px solid var(--prep-blue); border-radius:9px; background:var(--prep-blue-soft); color:var(--prep-blue); font-size:12px; font-weight:700; line-height:1.1; text-decoration:none; }
.prep-offer-link svg { width:17px; height:17px; flex:0 0 auto; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.prep-offer-link:hover { background:var(--prep-blue); color:#fff; }
.prep-offer-link:focus-visible { outline:2px solid var(--prep-blue); outline-offset:2px; }
.prep-form-flash { margin:0 14px 12px; }
.prep-form { display:grid; gap:12px; padding:0 14px; }
.prep-field { padding:15px; border:1px solid var(--prep-line); border-radius:11px; background:#fff; }
.prep-label { display:flex; align-items:center; gap:7px; margin:0 0 8px; color:#536075; font-size:12px; font-weight:700; }
.prep-input { width:100%; min-height:46px; padding:10px 12px; border:1px solid #c9d2e0; border-radius:9px; background:#fff; color:var(--prep-ink); font:inherit; font-size:14px; }
.prep-input:focus { border-color:var(--prep-blue); outline:2px solid rgba(24,95,165,.15); outline-offset:1px; }
.prep-textarea { min-height:108px; resize:vertical; }
.prep-hint { margin:7px 0 0; color:var(--prep-muted); font-size:11.5px; }
.prep-chip-grid { display:grid; gap:8px; }
.prep-chip-grid--three { grid-template-columns:repeat(3,1fr); }
.prep-chip-grid--two { grid-template-columns:repeat(2,1fr); }
.prep-choice { position:relative; min-width:0; }
.prep-choice input { position:absolute; opacity:0; pointer-events:none; }
.prep-choice span { min-height:44px; display:grid; place-items:center; padding:7px 8px; border:1px solid #c9d2e0; border-radius:9px; background:#fff; color:#344054; font-size:13px; text-align:center; cursor:pointer; }
.prep-choice input:checked + span { border:2px solid var(--prep-blue); background:var(--prep-blue-soft); color:#164d7d; font-weight:700; }
.prep-choice input:focus-visible + span { outline:2px solid var(--prep-blue); outline-offset:2px; }
.prep-custom-row { display:flex; align-items:center; gap:9px; margin-top:9px; }
.prep-custom-row .prep-input { width:130px; }
.prep-date-row { display:grid; grid-template-columns:170px 1fr; gap:8px; margin-top:9px; }
.prep-custom-row[hidden], .prep-date-row[hidden], .prep-detail[hidden] { display:none !important; }
.prep-date-row label,.prep-timing-note { display:grid; gap:5px; color:var(--color-text-light); font-size:11px; font-weight:650; }
.prep-timing-note { margin-top:10px; }
.prep-context { min-height:0; margin:8px 0 0; padding:0; color:#245b86; font-size:11.5px; }
.prep-context:not(:empty) { padding:8px 10px; border-radius:7px; background:var(--prep-blue-soft); }
.prep-toggle-row { min-height:46px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.prep-toggle-row .prep-label { margin:0 0 2px; }
.prep-toggle-row strong { color:#344054; font-size:14px; font-weight:600; }
.prep-switch { position:relative; width:50px; height:30px; flex:0 0 auto; }
.prep-switch input { position:absolute; opacity:0; }
.prep-switch span { position:absolute; inset:0; border-radius:99px; background:#cbd3df; cursor:pointer; transition:.16s ease; }
.prep-switch span::after { content:""; position:absolute; top:3px; left:3px; width:24px; height:24px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.18); transition:.16s ease; }
.prep-switch input:checked + span { background:var(--prep-blue); }
.prep-switch input:checked + span::after { transform:translateX(20px); }
.prep-switch input:focus-visible + span { outline:2px solid var(--prep-blue); outline-offset:2px; }
.prep-detail { margin-top:10px; }
.prep-no-field { background:#fafaf7; }
.prep-no-field label { display:flex; align-items:flex-start; gap:11px; cursor:pointer; }
.prep-no-field input { width:24px; height:24px; min-height:24px; flex:0 0 auto; margin:0; accent-color:var(--prep-green); }
.prep-no-field span { display:grid; gap:2px; }
.prep-no-field strong { font-size:14.5px; }
.prep-no-field small { color:var(--prep-muted); font-size:11.5px; line-height:1.4; }
.prep-preview { padding:12px 15px; border-radius:9px; background:#e9edf3; }
.prep-preview > span { display:block; margin-bottom:3px; color:var(--prep-muted); font-size:11px; }
.prep-preview strong { font-size:13px; }
.prep-preview p { margin:3px 0 0; color:#536075; font-size:12px; }
.prep-field.has-missing { border-color:#e0a126; box-shadow:0 0 0 1px rgba(224,161,38,.08); }
.prep-missing { padding:11px 13px; border:1px solid #e0a126; border-radius:9px; background:var(--prep-orange-soft); color:#714b08; }
.prep-missing[hidden] { display:none !important; }
.prep-missing strong { display:block; font-size:12px; }
.prep-missing p { margin:3px 0; font-size:12px; }
.prep-missing small { color:#805e20; font-size:10.5px; }
.prep-form-spacer { height:76px; }
.prep-actions { position:fixed; z-index:20; right:0; bottom:0; left:0; display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:8px; padding:9px max(16px,calc((100vw - 720px)/2 + 14px)) calc(9px + env(safe-area-inset-bottom)); border-top:1px solid var(--prep-line); background:rgba(255,255,255,.97); box-shadow:0 -8px 22px rgba(20,33,61,.07); backdrop-filter:blur(14px); }
.prep-primary,.prep-secondary { width:100%; min-width:0; min-height:44px; padding:7px 8px; border-radius:9px; font-size:12.5px; line-height:1.15; }
.prep-secondary { border:1px solid var(--prep-blue); background:#fff; color:var(--prep-blue); font:inherit; font-weight:650; cursor:pointer; }
.prep-secondary:hover { background:var(--prep-blue-soft); }
.prep-secondary:focus-visible { outline:2px solid var(--prep-blue); outline-offset:2px; }
.prep-assignment { border-color:var(--color-border); background:var(--color-bg-soft); }
.prep-assignment__top { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.prep-assignment__top > strong { color:var(--color-text-muted); font-size:14px; }
.prep-assignment__names { display:grid; gap:7px; }
.prep-assignment__names > div { min-height:47px; display:grid; grid-template-columns:1fr auto; align-items:center; gap:9px; margin-top:10px; padding:8px 11px; border:1px solid var(--color-border); border-radius:var(--radius-btn); background:var(--color-row); }
.prep-assignment__names strong { color:var(--color-text-muted); font-size:14px; }
.prep-assignment__names span { color:var(--color-text-light); font-size:10.5px; }

@media (min-width: 760px) {
    .prep-sites { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .prep-list-head { border:1px solid var(--prep-line); border-radius:14px; }
    .prep-form-head { border:1px solid var(--prep-line); border-radius:12px; }
    .prep-actions { left:var(--sidebar-width,0); }
}
@media (max-width: 680px) {
    .prep-page { width:100%; max-width:100%; margin:0; }
    .prep-list-head { padding:12px 14px 11px; }
    .prep-title-row h1 { font-size:23px; }
    .prep-eyebrow { display:none; }
    .prep-sites { padding:0 12px 22px; }
    .prep-site__head { padding:13px 14px 11px; }
    .prep-site__meta { margin-left:23px; }
    .prep-progress { align-items:flex-end; }
    .prep-progress > span:last-child { max-width:124px; text-align:right; }
    .prep-term { min-height:52px; padding-right:11px; }
    .prep-form-head { padding:8px 12px; }
    .prep-offer-link { padding:8px 9px; }
    .prep-form { padding:0 11px; }
    .prep-field { padding:14px; }
    .prep-date-row { grid-template-columns:1fr; }
    .prep-actions { bottom:calc(62px + env(safe-area-inset-bottom)); padding:8px 12px; }
    .prep-primary,.prep-secondary { font-size:12px; }
    .prep-form-spacer { height:82px; }
}

/* Surveillance documentaire — portefeuille direction ------------------ */
.security-portfolio {
    --sp-ink: #172033;
    --sp-muted: #68758a;
    --sp-line: #e2e8f0;
    --sp-paper: #fff;
    --sp-blue: #2563eb;
    --sp-blue-soft: #edf4ff;
    --sp-ok: #218657;
    --sp-ok-soft: #eaf7f0;
    --sp-watch: #a96800;
    --sp-watch-soft: #fff4dc;
    --sp-action: #8757b2;
    --sp-action-soft: #f4edfa;
    --sp-late: #c13f48;
    --sp-late-soft: #fff0f1;
    --sp-missing: #b4232f;
    --sp-missing-soft: #fff0f1;
    --sp-incomplete: #607087;
    --sp-incomplete-soft: #eef1f5;
    width: min(100%, 1280px);
    max-width: 1280px;
    display: grid;
    gap: 18px;
    padding-bottom: calc(34px + var(--safe-bottom));
    color: var(--sp-ink);
}
.security-portfolio svg { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-portfolio__hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding-top: 4px; }
.security-portfolio__hero > div { min-width: 0; }
.security-portfolio__kicker { margin: 0 0 5px; color: #8a95a6; font-size: 11px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.security-portfolio__hero h1 { margin: 0; color: var(--sp-ink); font-size: clamp(26px, 3vw, 30px); font-weight: 680; letter-spacing: -.035em; }
.security-portfolio__hero p:last-child { margin: 6px 0 0; color: var(--sp-muted); font-size: 14px; }
.security-portfolio__hero p:last-child strong { color: #3f4c61; font-weight: 720; }
.security-portfolio__encode { min-height: 42px; display: inline-flex; align-items: center; gap: 7px; flex: 0 0 auto; padding: 0 14px; border: 1px solid #cfd9e8; border-radius: 9px; background: var(--sp-paper); color: #35577f; font-size: 13px; font-weight: 680; transition: border-color .15s ease, background-color .15s ease, color .15s ease; }
.security-portfolio__encode:hover { border-color: #a9bfdf; background: var(--sp-blue-soft); color: var(--sp-blue); }
.security-portfolio__encode svg { width: 16px; }

.security-portfolio__filters { min-height: 58px; display: flex; align-items: flex-end; gap: 10px; padding: 9px; border: 1px solid var(--sp-line); border-radius: 13px; background: var(--sp-paper); box-shadow: 0 1px 2px rgba(15, 23, 42, .025); }
.security-portfolio__search { position: relative; min-width: 260px; flex: 1 1 420px; margin: 0; }
.security-portfolio__search svg { position: absolute; top: 50%; left: 12px; width: 17px; color: #8793a6; transform: translateY(-50%); pointer-events: none; }
.security-portfolio__search input { height: 40px; min-height: 40px; padding: 0 12px 0 39px; border-color: #dfe5ed; border-radius: 8px; background: #fafbfd; font-size: 14px; }
.security-portfolio__select { min-width: 220px; margin: 0; }
.security-portfolio__select > span { display: none; }
.security-portfolio__select select { height: 40px; min-height: 40px; padding: 0 34px 0 11px; border-color: #dfe5ed; border-radius: 8px; background-color: #fafbfd; font-size: 13px; }
.security-portfolio__reset { min-height: 40px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--sp-blue); font-size: 13px; font-weight: 650; }
.security-portfolio__reset:hover { background: var(--sp-blue-soft); }

.security-portfolio__metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.security-portfolio-metric { --metric-tone: var(--sp-incomplete); --metric-soft: var(--sp-incomplete-soft); position: relative; min-width: 0; min-height: 96px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: center; gap: 2px 12px; overflow: hidden; padding: 15px 16px; border: 1px solid var(--sp-line); border-radius: 13px; background: var(--sp-paper); color: var(--sp-ink); text-align: left; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.security-portfolio-metric::before { position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--metric-tone); content: ''; opacity: 0; transition: opacity .16s ease; }
.security-portfolio-metric:hover { border-color: color-mix(in srgb, var(--metric-tone) 35%, var(--sp-line)); box-shadow: 0 7px 20px rgba(15, 23, 42, .055); transform: translateY(-1px); }
.security-portfolio-metric.is-active { border-color: color-mix(in srgb, var(--metric-tone) 48%, var(--sp-line)); background: color-mix(in srgb, var(--metric-soft) 52%, white); box-shadow: 0 0 0 2px color-mix(in srgb, var(--metric-tone) 11%, transparent); }
.security-portfolio-metric.is-active::before { opacity: 1; }
.security-portfolio-metric.is-late { --metric-tone: var(--sp-late); --metric-soft: var(--sp-late-soft); }
.security-portfolio-metric.is-missing { --metric-tone: var(--sp-missing); --metric-soft: var(--sp-missing-soft); }
.security-portfolio-metric.is-action { --metric-tone: var(--sp-action); --metric-soft: var(--sp-action-soft); }
.security-portfolio-metric.is-watch { --metric-tone: var(--sp-watch); --metric-soft: var(--sp-watch-soft); }
.security-portfolio-metric > span { align-self: end; overflow: hidden; color: #6f7b8d; font-size: 12.5px; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }
.security-portfolio-metric > strong { grid-row: 1 / span 2; grid-column: 2; align-self: center; color: var(--metric-tone); font-size: 25px; font-weight: 720; font-variant-numeric: tabular-nums; letter-spacing: -.04em; }
.security-portfolio-metric > small { overflow: hidden; color: #9aa3b0; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }

.security-portfolio__workspace { min-width: 0; display: grid; grid-template-columns: minmax(620px, 1fr) minmax(320px, 370px); align-items: start; gap: 12px; }
.security-portfolio__register, .security-portfolio__inspector { min-width: 0; border: 1px solid var(--sp-line); border-radius: 14px; background: var(--sp-paper); }
.security-portfolio__register { overflow: hidden; }
.security-portfolio__section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; min-height: 65px; padding: 13px 16px; border-bottom: 1px solid var(--sp-line); }
.security-portfolio__section-head span { display: block; color: #99a2af; font-size: 10px; font-weight: 720; letter-spacing: .085em; text-transform: uppercase; }
.security-portfolio__section-head h2 { margin: 2px 0 0; color: var(--sp-ink); font-size: 16px; font-weight: 690; }
.security-portfolio__section-head p { margin: 0; color: #909aa9; font-size: 12px; }
.security-portfolio__table-scroll { min-width: 0; overflow-x: auto; }
.security-portfolio-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.security-portfolio-table th { height: 52px; padding: 6px 9px; border-bottom: 1px solid #e9edf2; background: #fafbfd; color: #7c8798; font-size: 11px; font-weight: 680; line-height: 1.2; text-align: center; white-space: normal; }
.security-portfolio-table th:first-child { width: 40%; padding-left: 16px; text-align: left; white-space: nowrap; }
.security-portfolio-table th:last-child { width: 30px; }
.security-portfolio-table__short { display: none; }
.security-portfolio-row { position: relative; height: 76px; border-bottom: 1px solid #edf0f4; outline: none; cursor: pointer; transition: background-color .14s ease, box-shadow .14s ease; }
.security-portfolio-row:last-child { border-bottom: 0; }
.security-portfolio-row:hover { background: #f8faff; }
.security-portfolio-row.is-selected { background: #f3f7ff; box-shadow: inset 3px 0 var(--sp-blue); }
.security-portfolio-row:focus-visible { box-shadow: inset 0 0 0 2px rgba(37, 99, 235, .35); }
.security-portfolio-row td { padding: 8px 7px; text-align: center; vertical-align: middle; }
.security-portfolio-row td:first-child { padding-left: 16px; text-align: left; }
.security-portfolio-row td:first-child > strong { display: block; overflow: hidden; color: #253046; font-size: 14px; font-weight: 690; text-overflow: ellipsis; white-space: nowrap; }
.security-portfolio-row td:first-child > span { display: block; overflow: hidden; margin-top: 2px; color: #8490a1; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.security-contract-badge { display: inline-flex; width: fit-content; margin-top: 4px; padding: 2px 7px; border-radius: 999px; background: #f0f2f5; color: #677386; font-size: 10px; font-weight: 720; letter-spacing: .025em; }
.security-contract-badge.is-none { background: #fff3df; color: #96620b; }
.security-contract-badge.is-inactive { background: #f2f2f3; color: #737985; }
.security-axis-cell { --axis-tone: var(--sp-incomplete); --axis-soft: var(--sp-incomplete-soft); width: 28px; height: 28px; display: inline-grid; place-items: center; border: 1px solid color-mix(in srgb, var(--axis-tone) 19%, white); border-radius: 8px; background: var(--axis-soft); color: var(--axis-tone); }
.security-axis-cell svg { width: 15px; }
.security-axis-cell.is-ok { --axis-tone: var(--sp-ok); --axis-soft: var(--sp-ok-soft); }
.security-axis-cell.is-watch { --axis-tone: var(--sp-watch); --axis-soft: var(--sp-watch-soft); }
.security-axis-cell.is-action { --axis-tone: var(--sp-action); --axis-soft: var(--sp-action-soft); }
.security-axis-cell.is-late { --axis-tone: var(--sp-late); --axis-soft: var(--sp-late-soft); }
.security-axis-cell.is-missing { --axis-tone: var(--sp-missing); --axis-soft: var(--sp-missing-soft); }
.security-axis-cell__mobile-label { display: none; }
.security-portfolio-row__chevron { width: 15px; color: #a1abba; }
.security-portfolio__no-results { min-height: 180px; display: grid; place-content: center; gap: 3px; padding: 20px; color: #536076; text-align: center; }
.security-portfolio__no-results[hidden] { display: none; }
.security-portfolio__no-results strong { font-size: 13px; }
.security-portfolio__no-results span { color: #8b96a6; font-size: 12px; }
.security-portfolio__legend { min-height: 44px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; padding: 8px 16px; border-bottom: 1px solid var(--sp-line); background: #fafbfd; }
.security-portfolio__legend span { display: inline-flex; align-items: center; gap: 5px; color: #7c8797; font-size: 10.5px; white-space: nowrap; }
.security-portfolio__legend i { width: 22px; height: 22px; display: inline-grid; place-items: center; border-radius: 6px; background: var(--sp-incomplete-soft); color: var(--sp-incomplete); }
.security-portfolio__legend i svg { width: 13px; }
.security-portfolio__legend i.is-ok { background: var(--sp-ok-soft); color: var(--sp-ok); }
.security-portfolio__legend i.is-watch { background: var(--sp-watch-soft); color: var(--sp-watch); }
.security-portfolio__legend i.is-action { background: var(--sp-action-soft); color: var(--sp-action); }
.security-portfolio__legend i.is-late { background: var(--sp-late-soft); color: var(--sp-late); }
.security-portfolio__legend i.is-missing { background: var(--sp-missing-soft); color: var(--sp-missing); }

.security-portfolio__inspector { position: sticky; top: 18px; overflow: hidden; }
.security-portfolio__inspector-backdrop,
.security-portfolio__inspector-close { display: none; }
.security-portfolio__inspector-backdrop[hidden] { display: none; }
.security-inspector[hidden] { display: none; }
.security-inspector > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 16px; border-bottom: 1px solid var(--sp-line); }
.security-inspector > header > div { min-width: 0; }
.security-inspector > header > div > span { color: #99a2af; font-size: 10px; font-weight: 720; letter-spacing: .08em; text-transform: uppercase; }
.security-inspector > header h2 { margin: 3px 0 0; color: var(--sp-ink); font-size: 17px; font-weight: 700; letter-spacing: -.018em; }
.security-inspector > header p { margin: 3px 0 0; overflow: hidden; color: #8994a4; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.security-global-status { --global-tone: var(--sp-incomplete); --global-soft: var(--sp-incomplete-soft); flex: 0 0 auto; padding: 4px 8px; border-radius: 999px; background: var(--global-soft); color: var(--global-tone); font-size: 10.5px; font-weight: 720; white-space: nowrap; }
.security-global-status.is-ok { --global-tone: var(--sp-ok); --global-soft: var(--sp-ok-soft); }
.security-global-status.is-watch { --global-tone: var(--sp-watch); --global-soft: var(--sp-watch-soft); }
.security-global-status.is-action { --global-tone: var(--sp-action); --global-soft: var(--sp-action-soft); }
.security-global-status.is-late { --global-tone: var(--sp-late); --global-soft: var(--sp-late-soft); }
.security-global-status.is-missing { --global-tone: var(--sp-missing); --global-soft: var(--sp-missing-soft); }
.security-inspector__identity { display: flex; flex-wrap: wrap; gap: 0; margin: 0; padding: 10px 16px; border-bottom: 1px solid var(--sp-line); background: #fafbfd; }
.security-inspector__identity > div { min-width: 50%; display: grid; gap: 1px; padding: 4px 10px 4px 0; }
.security-inspector__identity dt { color: #9aa3af; font-size: 9.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.security-inspector__identity dd { overflow: hidden; margin: 0; color: #536075; font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }
.security-inspector__axes { padding: 5px 16px; }
.security-inspector-axis { --axis-tone: var(--sp-incomplete); --axis-soft: var(--sp-incomplete-soft); display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 11px; padding: 13px 0; border-bottom: 1px solid #edf0f4; }
.security-inspector-axis:last-child { border-bottom: 0; }
.security-inspector-axis.is-ok { --axis-tone: var(--sp-ok); --axis-soft: var(--sp-ok-soft); }
.security-inspector-axis.is-watch { --axis-tone: var(--sp-watch); --axis-soft: var(--sp-watch-soft); }
.security-inspector-axis.is-action { --axis-tone: var(--sp-action); --axis-soft: var(--sp-action-soft); }
.security-inspector-axis.is-late { --axis-tone: var(--sp-late); --axis-soft: var(--sp-late-soft); }
.security-inspector-axis.is-missing { --axis-tone: var(--sp-missing); --axis-soft: var(--sp-missing-soft); }
.security-inspector-axis__icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 9px; background: var(--axis-soft); color: var(--axis-tone); }
.security-inspector-axis__icon svg { width: 17px; }
.security-inspector-axis > div > span { display: block; color: #8e98a7; font-size: 10.5px; font-weight: 670; }
.security-inspector-axis strong { display: block; margin-top: 1px; color: #39455a; font-size: 13px; font-weight: 690; line-height: 1.35; }
.security-inspector-axis p { margin: 4px 0 0; color: #7b8798; font-size: 12px; line-height: 1.48; }
.security-inspector-axis time { display: block; margin-top: 6px; color: var(--axis-tone); font-size: 10.5px; font-weight: 680; }
.security-inspector > footer { display: grid; grid-template-columns: .72fr 1fr 1.18fr; gap: 8px; padding: 12px 16px 16px; border-top: 1px solid var(--sp-line); }
.security-inspector > footer .btn { min-height: 40px; justify-content: center; padding-inline: 9px; font-size: 12.5px; }
.security-portfolio__empty { min-height: 330px; display: grid; place-items: center; align-content: center; gap: 6px; padding: 32px; border: 1px dashed #ccd5e1; border-radius: 14px; background: rgba(255,255,255,.65); text-align: center; }
.security-portfolio__empty > span { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 12px; background: var(--sp-ok-soft); color: var(--sp-ok); }
.security-portfolio__empty svg { width: 22px; }
.security-portfolio__empty h2 { margin: 8px 0 0; font-size: 15px; }
.security-portfolio__empty p { margin: 0; font-size: 13px; }

@media (max-width: 1120px) {
    .security-portfolio__workspace { grid-template-columns: minmax(560px, 1fr) 320px; }
    .security-portfolio-table th:first-child { width: 38%; }
    .security-portfolio-table__full { display: none; }
    .security-portfolio-table__short { display: inline; }
}

@media (max-width: 900px) {
    .security-portfolio__metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .security-portfolio__workspace { grid-template-columns: 1fr; }
    .security-portfolio__inspector { position: static; }
}

@media (max-width: 680px) {
    body.security-portfolio-sheet-open { overflow: hidden; }
    .security-portfolio { gap: 14px; padding-top: 2px; }
    .security-portfolio__hero { align-items: flex-start; }
    .security-portfolio__hero h1 { font-size: 23px; }
    .security-portfolio__hero p:last-child { font-size: 13px; }
    .security-portfolio__encode { display: none; }
    .security-portfolio__filters { align-items: stretch; flex-wrap: wrap; }
    .security-portfolio__search { min-width: 100%; flex-basis: 100%; }
    .security-portfolio__select { min-width: 0; flex: 1; }
    .security-portfolio__search input,
    .security-portfolio__select select,
    .security-portfolio__reset { min-height: 44px; height: 44px; }
    .security-portfolio__metrics { display: flex; gap: 8px; margin-right: calc(var(--page-pad) * -1); padding-right: var(--page-pad); overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
    .security-portfolio__metrics::-webkit-scrollbar { display: none; }
    .security-portfolio-metric { min-width: 150px; min-height: 82px; flex: 0 0 150px; padding: 12px 13px; scroll-snap-align: start; }
    .security-portfolio-metric > strong { font-size: 22px; }
    .security-portfolio__section-head { min-height: 61px; }
    .security-portfolio__section-head p { display: none; }
    .security-portfolio__table-scroll { overflow: visible; }
    .security-portfolio-table, .security-portfolio-table tbody { display: block; }
    .security-portfolio-table thead { display: none; }
    .security-portfolio-table tbody { padding: 5px 10px; }
    .security-portfolio-row { min-height: 122px; height: auto; display: grid; grid-template-columns: repeat(4, 1fr); align-items: center; margin: 5px 0; padding: 12px 10px 9px; border: 1px solid #e5e9ef; border-radius: 11px; }
    .security-portfolio-row.is-selected { border-color: #bcd0f3; box-shadow: inset 3px 0 var(--sp-blue); }
    .security-portfolio-row td { display: block; padding: 5px 2px; text-align: center; }
    .security-portfolio-row td:first-child { grid-column: 1 / -1; padding: 0 25px 6px 3px; }
    .security-portfolio-row td:first-child > strong { font-size: 14px; }
    .security-portfolio-row td:last-child { position: absolute; top: 16px; right: 12px; padding: 0; }
    .security-portfolio-row td:not(:first-child):not(:last-child) { display: grid; justify-items: center; gap: 4px; }
    .security-axis-cell { width: 29px; height: 29px; }
    .security-axis-cell__mobile-label { display: block; color: #7c8798; font-size: 9.5px; font-weight: 650; line-height: 1; }
    .security-portfolio__legend { min-height: 40px; display: flex; flex-wrap: nowrap; gap: 10px; padding: 7px 10px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
    .security-portfolio__legend::-webkit-scrollbar { display: none; }
    .security-portfolio__legend span { flex: 0 0 auto; font-size: 10px; scroll-snap-align: start; }
    .security-portfolio__legend i { width: 20px; height: 20px; }
    .security-portfolio__legend i svg { width: 12px; }
    .security-portfolio__inspector-backdrop { position: fixed; inset: 0; z-index: 89; border: 0; background: rgba(15, 23, 42, .44); opacity: 0; transition: opacity .18s ease-out; }
    .security-portfolio.is-inspector-open .security-portfolio__inspector-backdrop { display: block; opacity: 1; }
    .security-portfolio__inspector { position: fixed; inset: auto 0 0; z-index: 90; width: 100%; max-height: min(86dvh, 760px); overflow-x: hidden; overflow-y: auto; border-radius: 16px 16px 0 0; box-shadow: 0 -16px 44px rgba(15, 23, 42, .18); visibility: hidden; pointer-events: none; transform: translateY(102%); transition: transform .22s cubic-bezier(.22, 1, .36, 1), visibility 0s linear .22s; }
    .security-portfolio.is-inspector-open .security-portfolio__inspector { visibility: visible; pointer-events: auto; transform: translateY(0); transition-delay: 0s; }
    .security-portfolio__inspector-close { position: absolute; top: 10px; right: 10px; z-index: 2; width: 44px; height: 44px; place-items: center; padding: 0; border: 1px solid var(--sp-line); border-radius: 50%; background: var(--sp-paper); color: #65738a; }
    .security-portfolio.is-inspector-open .security-portfolio__inspector-close { display: grid; }
    .security-portfolio__inspector-close svg { width: 18px; }
    .security-inspector > header { flex-direction: column; padding-top: 20px; padding-right: 62px; }
    .security-inspector__identity > div { min-width: 100%; }
    .security-inspector > footer { position: sticky; bottom: 0; grid-template-columns: 1fr; padding-bottom: calc(14px + env(safe-area-inset-bottom)); background: var(--sp-paper); box-shadow: 0 -8px 20px rgba(15, 23, 42, .06); }
    .security-inspector > footer .btn { min-height: 44px; }
}

.details-admin-page {
    max-width: 1120px;
}

.details-card-subtitle {
    margin: 4px 0 0;
    color: var(--color-text-light);
    font-size: 13px;
}

.details-filter-add {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) auto;
    gap: 12px;
    align-items: end;
    margin-bottom: 16px;
}

.details-filter-add .btn {
    min-height: 42px;
    height: 42px;
    margin-bottom: 8px;
    padding-top: 0;
    padding-bottom: 0;
}

.details-admin-page label {
    display: grid;
    gap: 6px;
    color: var(--color-text);
    font-size: 13px;
    font-weight: 600;
}

.details-admin-page input {
    width: 100%;
    min-height: 42px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    padding: 8px 11px;
    font: inherit;
    font-weight: 400;
}

.details-filter-table .data-table {
    min-width: 820px;
}

.details-filter-id {
    width: 88px;
}

.details-filter-actions {
    width: 250px;
}

.details-filter-update {
    margin: 0;
}

.details-filter-actions__inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.details-filter-actions__inner form {
    margin: 0;
}

.details-empty {
    margin-top: 6px;
}

.has-tabbar .app-main { padding-bottom: calc(var(--tabbar-h) + var(--safe-bottom) + 16px); }
.has-tabbar .app-footer { display: none; }

@media (min-width: 861px) {
    :root {
        --sidebar-w: 286px;
        --sidebar-collapsed-w: 88px;
    }

    html.sidebar-collapsed,
    body.sidebar-collapsed {
        --sidebar-w: var(--sidebar-collapsed-w);
    }

    .has-sidebar .app-shell {
        padding-left: var(--sidebar-w);
        transition: padding-left .18s ease;
    }

    body[data-nav="navbar"].has-sidebar .app-shell {
        padding-left: 0;
        padding-top: 56px;
    }

    .desktop-sidebar {
        position: fixed;
        inset: 0 auto 0 0;
        z-index: 40;
        width: var(--sidebar-w);
        height: 100dvh;
        display: flex;
        flex-direction: column;
        gap: 12px;
        padding: 14px 12px;
        border-right: 1px solid var(--color-border-soft);
        background: rgba(255,255,255,0.94);
        -webkit-backdrop-filter: saturate(1.35) blur(14px);
        backdrop-filter: saturate(1.35) blur(14px);
        box-shadow: 4px 0 18px rgba(15,23,42,.025);
        transition: width .18s ease;
    }

    .desktop-sidebar__top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        min-height: 44px;
    }

    .desktop-sidebar__brand {
        display: flex;
        align-items: center;
        gap: 9px;
        min-width: 0;
        padding-left: 6px;
        color: var(--color-text);
        font-size: 17px;
        font-weight: 700;
        letter-spacing: -0.01em;
    }

    .desktop-sidebar__brand .brand__logo {
        height: 46px;
    }

    .desktop-sidebar__toggle {
        width: 38px;
        height: 38px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        border: 0;
        border-radius: var(--radius-btn);
        background: transparent;
        color: var(--color-text-light);
    }

    .desktop-sidebar__toggle:hover {
        background: var(--color-primary-soft);
        color: var(--color-primary);
    }

    .desktop-sidebar__toggle:focus-visible {
        outline: none;
    }

    .desktop-sidebar__nav,
    .desktop-sidebar__bottom {
        display: flex;
        flex-direction: column;
        gap: 6px;
        min-width: 0;
    }

    .desktop-sidebar__nav {
        flex: 1;
        min-height: 0;
        padding-top: 4px;
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-width: thin;
    }

    .desktop-sidebar__group {
        padding: 8px 11px 3px;
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .04em;
        text-transform: uppercase;
    }

    .desktop-sidebar__bottom {
        position: relative;
        flex: 0 0 auto;
        padding-top: 10px;
        border-top: 1px solid var(--color-border-soft);
    }

    .desktop-sidebar__item,
    .desktop-sidebar__search {
        position: relative;
        display: flex;
        align-items: center;
        gap: 10px;
        min-height: 40px;
        width: 100%;
        padding: 0 11px;
        border: 0;
        border-radius: 10px;
        background: transparent;
        color: var(--color-text-muted);
        font-size: 14px;
        font-weight: 600;
        text-align: left;
        transition: background-color 140ms ease, color 140ms ease, transform 140ms ease;
    }

    .desktop-sidebar__search {
        flex: 0 0 auto;
        border: 1px solid var(--color-border-soft);
        background: var(--color-bg-soft);
        color: var(--color-text-muted);
    }

    .desktop-sidebar__item:hover,
    .desktop-sidebar__search:hover {
        background: var(--color-row);
        color: var(--color-text);
    }

    .desktop-sidebar__shortcut {
        margin-left: auto;
        padding: 2px 6px;
        border: 1px solid var(--color-border-soft);
        border-radius: 6px;
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 700;
        line-height: 1.2;
        white-space: nowrap;
    }

    .desktop-sidebar__item--active {
        background: var(--color-primary-soft);
        color: var(--color-primary);
    }

    .desktop-sidebar__item--urgent,
    .desktop-sidebar__item--urgent.desktop-sidebar__item--active {
        color: var(--color-danger);
    }

    .desktop-sidebar__item--urgent:hover {
        background: var(--color-danger-soft);
        color: var(--color-danger);
    }

    .desktop-sidebar__item--urgent.desktop-sidebar__item--active {
        background: var(--color-danger-soft);
    }

    .desktop-sidebar__item--active::before {
        content: "";
        position: absolute;
        left: 6px;
        top: 10px;
        bottom: 10px;
        width: 3px;
        border-radius: var(--radius-pill);
        background: var(--color-primary);
    }

    .desktop-sidebar__item--urgent.desktop-sidebar__item--active::before {
        background: var(--color-danger);
    }

    .desktop-sidebar__item > .nav-badge {
        position: static;
        flex: 0 0 18px;
        margin-left: auto;
        background: var(--color-primary-soft);
        color: var(--color-primary);
    }

    .desktop-sidebar__item--urgent > .nav-badge {
        background: var(--color-danger-soft);
        color: #991B1B;
    }

    .desktop-sidebar__item--disabled {
        opacity: .48;
        cursor: not-allowed;
    }

    .desktop-sidebar__item--disabled:hover {
        background: transparent;
        color: var(--color-text-muted);
    }

    .desktop-sidebar__item--danger {
        color: var(--color-danger);
    }

    .desktop-sidebar__icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 22px;
        color: currentColor;
    }

    .desktop-sidebar__icon svg {
        width: 22px;
        height: 22px;
    }

    .desktop-sidebar__text {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .desktop-sidebar__account {
        display: flex;
        align-items: center;
        gap: 8px;
        min-height: 52px;
        width: 100%;
        margin: 4px 0;
        padding: 8px 9px;
        border: 0;
        border-radius: 12px;
        background: var(--color-bg-soft);
        color: inherit;
        font: inherit;
        text-align: left;
    }

    .desktop-sidebar__bottom--has-menu .desktop-sidebar__account {
        cursor: pointer;
    }

    .desktop-sidebar__bottom--has-menu .desktop-sidebar__account:hover,
    .desktop-sidebar__bottom--has-menu.is-open .desktop-sidebar__account {
        background: var(--color-row);
    }

    .desktop-sidebar__account:focus-visible {
        outline: 2px solid var(--color-primary);
        outline-offset: 2px;
    }

    .desktop-sidebar__avatar {
        width: 38px;
        height: 38px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        border-radius: 50%;
        background: var(--color-bg);
        color: var(--color-primary);
        box-shadow: var(--shadow-card);
    }

    .desktop-sidebar__identity {
        display: flex;
        flex-direction: column;
        line-height: 1.2;
    }

    .desktop-sidebar__identity strong {
        overflow: hidden;
        color: var(--color-text);
        font-size: 13px;
        font-weight: 700;
        text-overflow: ellipsis;
    }

    .desktop-sidebar__identity small {
        color: var(--color-text-light);
        font-size: 12px;
    }

    .desktop-sidebar__form {
        margin: 0;
    }

    .desktop-sidebar__footer-row {
        display: flex;
        align-items: center;
        gap: 6px;
    }

    .desktop-sidebar__form--grow {
        flex: 1 1 auto;
        min-width: 0;
    }

    .desktop-sidebar__layout-btn {
        width: 40px;
        height: 40px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 40px;
        border: 0;
        border-radius: 10px;
        background: var(--color-bg-soft);
        color: var(--color-text-muted);
        padding: 0;
    }

    .desktop-sidebar__layout-btn:hover,
    .desktop-sidebar__layout-btn:focus-visible {
        background: var(--color-primary-soft);
        color: var(--color-primary);
        outline: none;
    }

    .desktop-sidebar__layout-btn svg {
        width: 21px;
        height: 21px;
    }

    .desktop-account-menu {
        position: absolute;
        left: 0;
        right: 0;
        bottom: calc(100% - 4px);
        z-index: 30;
        display: none;
        max-height: min(520px, calc(100vh - 170px));
        overflow: hidden;
        border: 1px solid var(--color-border-soft);
        border-radius: 12px;
        background: var(--color-bg);
        box-shadow: var(--shadow-popover);
    }

    .desktop-sidebar__bottom.is-open .desktop-account-menu {
        display: block;
    }

    .desktop-account-menu__head {
        padding: 11px 12px 8px;
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 700;
        letter-spacing: .04em;
        text-transform: uppercase;
    }

    .desktop-account-menu__list {
        max-height: min(440px, calc(100vh - 230px));
        overflow-y: auto;
        overscroll-behavior: contain;
        padding-bottom: 6px;
        scrollbar-width: thin;
    }

    .desktop-account-menu__form {
        margin: 0;
    }

    .desktop-account-menu__item {
        display: flex;
        flex-direction: column;
        gap: 2px;
        width: 100%;
        min-height: 46px;
        padding: 8px 12px;
        border: 0;
        background: transparent;
        color: var(--color-text);
        font: inherit;
        text-align: left;
    }

    .desktop-account-menu__item:hover,
    .desktop-account-menu__item:focus-visible {
        background: var(--color-row);
        outline: none;
    }

    .desktop-account-menu__name,
    .desktop-account-menu__item small {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .desktop-account-menu__row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        min-width: 0;
        width: 100%;
    }

    .desktop-account-menu__name {
        flex: 1;
        min-width: 0;
        font-size: 13px;
        font-weight: 700;
    }

    .desktop-account-menu__item small {
        color: var(--color-text-light);
        font-size: 11px;
    }

    html.sidebar-collapsed .desktop-sidebar,
    body.sidebar-collapsed .desktop-sidebar {
        padding-inline: 12px;
    }

    html.sidebar-collapsed .desktop-sidebar__top,
    body.sidebar-collapsed .desktop-sidebar__top {
        justify-content: center;
        flex-direction: column;
    }

    html.sidebar-collapsed .desktop-sidebar__brand,
    body.sidebar-collapsed .desktop-sidebar__brand {
        padding-left: 0;
    }

    html.sidebar-collapsed .desktop-sidebar__brand .brand__logo,
    body.sidebar-collapsed .desktop-sidebar__brand .brand__logo {
        height: 42px;
    }

    html.sidebar-collapsed .desktop-sidebar__text,
    html.sidebar-collapsed .desktop-sidebar__group,
    html.sidebar-collapsed .desktop-sidebar__shortcut,
    html.sidebar-collapsed .desktop-sidebar__item--active::before,
    body.sidebar-collapsed .desktop-sidebar__text,
    body.sidebar-collapsed .desktop-sidebar__group,
    body.sidebar-collapsed .desktop-sidebar__shortcut,
    body.sidebar-collapsed .desktop-sidebar__item--active::before {
        display: none;
    }

    html.sidebar-collapsed .desktop-sidebar__item,
    html.sidebar-collapsed .desktop-sidebar__search,
    body.sidebar-collapsed .desktop-sidebar__item {
        justify-content: center;
        padding: 0;
    }

    html.sidebar-collapsed .desktop-sidebar__item > .nav-badge,
    body.sidebar-collapsed .desktop-sidebar__item > .nav-badge {
        position: absolute;
        top: 3px;
        right: 13px;
        margin-left: 0;
    }

    body.sidebar-collapsed .desktop-sidebar__search {
        justify-content: center;
        padding: 0;
    }

    html.sidebar-collapsed .desktop-sidebar__account,
    body.sidebar-collapsed .desktop-sidebar__account {
        justify-content: center;
        padding: 8px;
        background: transparent;
    }

    html.sidebar-collapsed .desktop-account-menu,
    body.sidebar-collapsed .desktop-account-menu {
        left: 0;
        width: 260px;
        right: auto;
    }

    html.sidebar-collapsed .desktop-sidebar__toggle svg,
    body.sidebar-collapsed .desktop-sidebar__toggle svg {
        transform: rotate(180deg);
    }

    .desktop-topbar {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 45;
        display: none;
        align-items: center;
        gap: 18px;
        min-height: 56px;
        padding: 0 18px;
        border-bottom: 1px solid var(--color-border-soft);
        background: rgba(255,255,255,.96);
        -webkit-backdrop-filter: saturate(1.35) blur(12px);
        backdrop-filter: saturate(1.35) blur(12px);
        box-shadow: 0 1px 2px rgba(15,23,42,.03);
        transition: box-shadow .18s ease, border-color .18s ease;
    }

    body[data-nav="navbar"] .desktop-topbar {
        display: flex;
    }

    .desktop-topbar.is-scrolled {
        border-bottom-color: var(--color-border);
        box-shadow: 0 6px 18px rgba(15,23,42,.08);
    }

    .desktop-topbar__brand {
        display: inline-flex;
        align-items: center;
        flex: 0 0 auto;
        min-width: 0;
    }

    .desktop-topbar__brand .brand__logo {
        height: 36px;
    }

    .topbar-nav {
        display: flex;
        align-items: center;
        gap: 3px;
        min-width: 0;
        overflow: visible;
    }

    .topbar-nav__label {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .topbar-nav__icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        color: currentColor;
    }

    .topbar-nav__icon svg {
        width: 18px;
        height: 18px;
    }

    .topbar-nav__item,
    .topbar-search,
    .topbar-account__button {
        position: relative;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 7px;
        min-height: 38px;
        padding: 0 11px;
        border: 0;
        border-radius: var(--radius-btn);
        background: transparent;
        color: var(--color-text-muted);
        font-size: 14px;
        font-weight: 650;
        line-height: 1;
        white-space: nowrap;
        transition: background-color 140ms ease, color 140ms ease;
    }

    .topbar-nav__item:hover,
    .topbar-nav__item:focus-visible,
    .topbar-menu.is-open > .topbar-nav__item,
    .topbar-menu:focus-within > .topbar-nav__item,
    .topbar-search:hover,
    .topbar-search:focus-visible,
    .topbar-account.is-open > .topbar-account__button,
    .topbar-account:focus-within > .topbar-account__button {
        background: var(--color-primary-soft);
        color: var(--color-primary);
        outline: none;
    }

    .topbar-nav__item--active {
        color: var(--color-primary);
    }

    .topbar-nav__item--active::after {
        content: "";
        position: absolute;
        left: 10px;
        right: 10px;
        bottom: -9px;
        height: 2px;
        border-radius: var(--radius-pill);
        background: var(--color-primary);
    }

    .topbar-nav__item--urgent,
    .topbar-nav__item--urgent.topbar-nav__item--active {
        color: var(--color-danger);
    }

    .topbar-nav__item--urgent:hover,
    .topbar-nav__item--urgent:focus-visible {
        background: var(--color-danger-soft);
        color: var(--color-danger);
    }

    .topbar-nav__item--urgent.topbar-nav__item--active::after {
        background: var(--color-danger);
    }

    .topbar-nav__item--disabled {
        opacity: .5;
        cursor: not-allowed;
    }

    .topbar-nav__item--disabled:hover {
        background: transparent;
        color: var(--color-text-muted);
    }

    .topbar-nav__chevron {
        flex: 0 0 auto;
        transition: transform .16s ease;
    }

    .topbar-menu.is-open > .topbar-nav__item .topbar-nav__chevron,
    .topbar-menu:hover > .topbar-nav__item .topbar-nav__chevron,
    .topbar-menu:focus-within > .topbar-nav__item .topbar-nav__chevron,
    .topbar-account.is-open > .topbar-account__button .topbar-nav__chevron,
    .topbar-account:hover > .topbar-account__button .topbar-nav__chevron,
    .topbar-account:focus-within > .topbar-account__button .topbar-nav__chevron {
        transform: rotate(180deg);
    }

    .topbar-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 19px;
        height: 19px;
        padding: 0 6px;
        border-radius: var(--radius-pill);
        background: var(--color-primary-soft);
        color: var(--color-primary);
        font-size: 10px;
        font-weight: 800;
        line-height: 1;
    }

    .topbar-nav__item--urgent .topbar-badge,
    .topbar-menu__item--urgent .topbar-badge {
        background: var(--color-danger-soft);
        color: var(--color-danger);
    }

    .topbar-menu,
    .topbar-account {
        position: relative;
        flex: 0 0 auto;
    }

    .topbar-menu::after,
    .topbar-account::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        top: 100%;
        height: 10px;
    }

    .topbar-menu__panel,
    .topbar-account__menu {
        position: absolute;
        top: calc(100% + 8px);
        z-index: 46;
        visibility: hidden;
        opacity: 0;
        pointer-events: none;
        transform: translateY(-4px);
        border: 1px solid var(--color-border-soft);
        border-radius: var(--radius-card);
        background: var(--color-bg);
        box-shadow: 0 8px 24px rgba(0,0,0,.12);
        transition: opacity .14s ease, transform .14s ease, visibility .14s ease;
    }

    .topbar-menu__panel {
        left: 0;
        width: 256px;
        padding: 6px;
    }

    .topbar-account__menu {
        right: 0;
        width: 300px;
        max-height: min(560px, calc(100vh - 76px));
        overflow: hidden;
        padding: 6px;
    }

    .topbar-menu:hover > .topbar-menu__panel,
    .topbar-menu:focus-within > .topbar-menu__panel,
    .topbar-menu.is-open > .topbar-menu__panel,
    .topbar-account:hover > .topbar-account__menu,
    .topbar-account:focus-within > .topbar-account__menu,
    .topbar-account.is-open > .topbar-account__menu {
        visibility: visible;
        opacity: 1;
        pointer-events: auto;
        transform: translateY(0);
    }

    .topbar-menu__item,
    .topbar-account__item {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        min-height: 40px;
        padding: 0 10px;
        border: 0;
        border-radius: var(--radius-btn);
        background: transparent;
        color: var(--color-text-muted);
        font: inherit;
        font-size: 14px;
        font-weight: 600;
        text-align: left;
    }

    .topbar-account__item {
        min-height: 42px;
    }

    .topbar-menu__item:hover,
    .topbar-menu__item:focus-visible,
    .topbar-account__item:hover,
    .topbar-account__item:focus-visible,
    .topbar-menu__item--active,
    .topbar-account__item--active {
        background: var(--color-primary-soft);
        color: var(--color-primary);
        outline: none;
    }

    .topbar-menu__item--urgent,
    .topbar-menu__item--urgent.topbar-menu__item--active,
    .topbar-account__item--danger {
        color: var(--color-danger);
    }

    .topbar-menu__item--urgent:hover,
    .topbar-menu__item--urgent:focus-visible,
    .topbar-account__item--danger:hover,
    .topbar-account__item--danger:focus-visible {
        background: var(--color-danger-soft);
        color: var(--color-danger);
    }

    .topbar-menu__item--disabled {
        opacity: .56;
        cursor: not-allowed;
    }

    .topbar-menu__item--disabled:hover {
        background: transparent;
        color: var(--color-text-muted);
    }

    .topbar-menu__icon,
    .topbar-account__item-icon,
    .topbar-search__icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        color: currentColor;
    }

    .topbar-menu__icon svg,
    .topbar-account__item-icon svg,
    .topbar-search__icon svg {
        width: 20px;
        height: 20px;
    }

    .topbar-menu__label,
    .topbar-account__item-name {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .topbar-badge--menu {
        margin-left: auto;
    }

    .topbar-menu__item small,
    .topbar-account__item small {
        margin-left: auto;
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 600;
        white-space: nowrap;
    }

    .desktop-topbar__actions {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-left: auto;
        flex: 0 0 auto;
    }

    .topbar-search {
        border: 1px solid var(--color-border-soft);
        background: var(--color-bg-soft);
    }

    .topbar-search kbd {
        padding: 2px 6px;
        border: 1px solid var(--color-border-soft);
        border-radius: 6px;
        background: var(--color-bg);
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 800;
        line-height: 1.2;
    }

    .topbar-account__button {
        min-height: 42px;
        padding: 3px 8px 3px 4px;
        border: 1px solid var(--color-border-soft);
        background: var(--color-bg);
    }

    .topbar-account__avatar {
        width: 34px;
        height: 34px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        border-radius: 50%;
        background: var(--color-primary-soft);
        color: var(--color-primary);
        font-size: 14px;
        font-weight: 800;
    }

    .topbar-account__identity {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        min-width: 0;
        line-height: 1.18;
    }

    .topbar-account__identity strong {
        max-width: 150px;
        overflow: hidden;
        color: var(--color-text);
        font-size: 13px;
        font-weight: 750;
        text-overflow: ellipsis;
    }

    .topbar-account__identity small {
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 650;
    }

    .topbar-account__head {
        padding: 8px 9px 6px;
        color: var(--color-text-light);
        font-size: 11px;
        font-weight: 750;
        letter-spacing: .04em;
        text-transform: uppercase;
    }

    .topbar-account__list {
        max-height: 260px;
        overflow-y: auto;
        overscroll-behavior: contain;
        padding-bottom: 4px;
        scrollbar-width: thin;
    }

    .topbar-account__form {
        margin: 0;
    }

    .topbar-account__row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        min-width: 0;
        width: 100%;
    }

    .topbar-account__item small {
        display: block;
        margin: 2px 0 0;
    }

    .topbar-account__item:has(small) {
        align-items: flex-start;
        flex-direction: column;
        justify-content: center;
        gap: 1px;
        padding-block: 7px;
    }

    .topbar-account__item--compact {
        min-height: 34px;
        padding-block: 0;
        font-size: 14px;
    }

    .topbar-account__separator {
        height: 1px;
        margin: 6px 4px;
        background: var(--color-border-soft);
    }

    .has-sidebar .appbar {
        display: none;
    }

    body[data-nav="navbar"].has-sidebar .appbar {
        display: none;
    }

    .app-main,
    .impersonation-banner,
    .app-footer__inner {
        width: min(1080px, calc(100% - 48px));
    }

    .impersonation-banner {
        top: 0;
        margin-top: 16px;
    }

    .app-main {
        padding-top: 30px;
    }

    body[data-nav="navbar"] .app-main {
        padding-top: 24px;
    }

    @media (min-width: 861px) and (max-width: 1024px) {
        .desktop-topbar {
            gap: 10px;
            padding-inline: 10px;
        }

        .desktop-topbar__brand .brand__logo {
            height: 32px;
        }

        .topbar-nav {
            gap: 1px;
        }

        .topbar-nav__item {
            min-height: 36px;
            padding-inline: 8px;
            font-size: 14px;
        }

        .topbar-search {
            width: 40px;
            padding: 0;
        }

        .topbar-search__label,
        .topbar-search kbd,
        .topbar-account__identity {
            display: none;
        }

        .topbar-account__button {
            padding: 3px;
        }
    }

    @media (min-width: 861px) and (max-height: 820px) {
        .desktop-sidebar {
            gap: 10px;
            padding-block: 10px;
        }

        .desktop-sidebar__top {
            min-height: 38px;
        }

        .desktop-sidebar__brand .brand__logo {
            height: 40px;
        }

        .desktop-sidebar__nav {
            gap: 4px;
            padding-top: 0;
        }

        .desktop-sidebar__group {
            padding: 5px 11px 2px;
            font-size: 10px;
        }

        .desktop-sidebar__item {
            min-height: 34px;
            padding: 0 10px;
            font-size: 14px;
            gap: 8px;
        }

        .desktop-sidebar__icon svg {
            width: 20px;
            height: 20px;
        }

        .desktop-sidebar__bottom {
            padding-top: 8px;
        }

        .desktop-sidebar__account {
            min-height: 44px;
            margin: 2px 0;
            padding: 7px 8px;
        }

        .desktop-sidebar__avatar {
            width: 34px;
            height: 34px;
        }

        .desktop-sidebar__identity strong {
            font-size: 12px;
        }

        .desktop-sidebar__identity small {
            font-size: 11px;
        }
    }

    .appbar__tabs { display: flex; align-items: center; gap: 4px; }
    .appbar__tabs .tab { flex: 0 0 auto; flex-direction: row; gap: 6px; min-height: 36px; padding: 0 14px; font-size: 14px; border-radius: var(--radius-pill); }
    .appbar__tabs .tab svg { width: 18px; height: 18px; }
    .appbar__tabs .tab--active { background: var(--color-primary-soft); }
    .appbar__module-nav { display: flex; align-items: center; justify-content: center; gap: 4px; }
    .tabbar { display: none; }
    .module-switch, .appbar__title { display: none; }
    .has-tabbar .app-main { padding-bottom: 36px; }
    .has-tabbar .app-footer { display: block; }
}

.activity-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 7px;
    border-radius: var(--radius-pill);
    background: var(--color-bg-soft);
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.activity-badge__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
}

.activity-badge--today { color: var(--color-success); }
.activity-badge--recent { color: var(--color-warning); }
.activity-badge--stale { color: var(--color-text-light); }
.activity-badge--inactive { color: var(--color-danger); }

.impersonate-list {
    display: grid;
    gap: 8px;
}

.impersonate-list form {
    margin: 0;
}

.impersonate-list__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    min-height: 52px;
    padding: 10px 12px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
    font: inherit;
    text-align: left;
}

.impersonate-list__item:hover,
.impersonate-list__item:focus-visible {
    background: var(--color-row);
    outline: none;
}

.impersonate-list__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.impersonate-list__body strong,
.impersonate-list__body span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.impersonate-list__body span {
    color: var(--color-text-light);
    font-size: 12px;
}

@media (max-width: 720px) {
    body { font-size: 16px; }
    .app-main { width: min(100%, calc(100% - 20px)); padding: 14px 0 28px; }
    .impersonation-banner { width: min(100%, calc(100% - 20px)); margin-top: 8px; }
    .impersonation-banner__inner { gap: 8px; padding-inline: 10px; }
    .impersonation-banner__text { font-size: 12px; }
    .impersonation-banner__action { padding-inline: 10px; }
    .page-container { padding: 0; }
    .page-header { align-items: flex-start; flex-direction: column; }
    .page-header__actions, .actions { width: 100%; justify-content: flex-start; }
    .page-header__actions .btn, .actions .btn, .actions form { width: 100%; }
    .details-filter-add { grid-template-columns: 1fr; }
    .details-filter-add .btn { width: 100%; margin-bottom: 0; }
    .details-filter-actions__inner { align-items: stretch; flex-direction: column; }
    .details-filter-actions__inner .btn,
    .details-filter-actions__inner form { width: 100%; }
    .technician-shortcuts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .technician-shortcuts .btn { width: 100%; min-height: 56px; justify-content: flex-start; padding: 12px 14px; font-size: 14px; }
    .technician-shortcuts .btn-primary, .technician-shortcuts .btn-danger { grid-column: span 1; }
    .stats-bar { align-items: stretch; flex-direction: column; gap: 10px; }
    .stats-bar__item { justify-content: space-between; }
    .card-header { align-items: flex-start; flex-direction: column; }
    .detail-grid { grid-template-columns: 104px minmax(0, 1fr); }
    .filter-form, .form-grid { grid-template-columns: 1fr; }
    .ticket-search-row { grid-template-columns: minmax(0, 1fr) 48px; }
    .ticket-search-row .ascenseur-search {
        width: 100%;
        grid-template-columns: minmax(0, 1fr);
    }
    .ticket-search-row .search-field { width: 100%; }
    .demandes-mobile-list { display: grid; }
    .demandes-table { display: none; }
    .data-table-wrap:not(.demandes-table) { overflow: visible; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
    .data-table-wrap:not(.demandes-table) .data-table,
    .data-table-wrap:not(.demandes-table) .data-table tbody,
    .data-table-wrap:not(.demandes-table) .data-table tr,
    .data-table-wrap:not(.demandes-table) .data-table td { display: block; width: 100%; min-width: 0; }
    .data-table-wrap:not(.demandes-table) .data-table { background: transparent; border-collapse: separate; border-spacing: 0; }
    .data-table-wrap:not(.demandes-table) .data-table thead { display: none; }
    .data-table-wrap:not(.demandes-table) .data-table tbody { display: grid; gap: 12px; }
    .data-table-wrap:not(.demandes-table) .data-table tr { border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); background: var(--color-bg); box-shadow: var(--shadow-card); overflow: hidden; }
    .data-table-wrap:not(.demandes-table) .data-table tr:hover { background: var(--color-bg); }
    .data-table-wrap:not(.demandes-table) .data-table td { min-height: 44px; padding: 10px 12px; border-bottom: 1px solid var(--color-border-soft); text-align: left; overflow-wrap: anywhere; }
    .data-table-wrap:not(.demandes-table) .data-table td:last-child { border-bottom: 0; }
    .data-table-wrap:not(.demandes-table) .data-table td::before { content: attr(data-label); display: block; margin-bottom: 4px; color: var(--color-text-light); font-size: 12px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase; }
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="Ascenseur"],
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="Immeuble"],
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="Reference"] { background: var(--color-bg-soft); }
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="PDF"] .actions,
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="Action"] form,
    .data-table-wrap:not(.demandes-table) .data-table td[data-label="Historique"] .btn { width: 100%; }
}

@media (max-width: 600px) {
    .demandes-table { border-radius: 0; margin-left: -10px; margin-right: -10px; width: calc(100% + 20px); }
}

@media (prefers-reduced-motion: reduce) {
    .menu-sheet__scrim, .menu-sheet__panel, .btn, .button { transition: none; }
}

@media (min-width: 861px) {
    .menu-sheet__scrim { background: transparent; }
    .menu-sheet__panel {
        left: auto;
        right: max(12px, calc((100% - 960px) / 2));
        bottom: auto;
        top: calc(var(--appbar-h) + 4px);
        width: 260px;
        max-width: none;
        margin: 0;
        padding: 8px;
        border: 1px solid var(--color-border-soft);
        border-radius: var(--radius-card);
        box-shadow: 0 12px 32px rgba(15, 23, 42, 0.16);
        transform: translateY(-8px);
        opacity: 0;
        transition: transform .16s ease, opacity .16s ease;
        transform-origin: top right;
    }
    .menu-sheet.is-open .menu-sheet__panel { transform: translateY(0); opacity: 1; }
    .menu-sheet__handle { display: none; }
    .menu-sheet__head { margin-bottom: 4px; }
    .menu-item { min-height: 40px; font-size: 14px; }
}

.action-bar { display: flex; gap: 8px; }
.action-bar .btn { flex: 1; min-width: 0; }

.sublinks { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 0 2px; }
.sublinks a { color: var(--color-primary); font-size: 14px; font-weight: 500; }
.sublinks a:hover { text-decoration: underline; }
.sublinks span { color: var(--color-text-light); font-size: 14px; font-weight: 500; opacity: .7; }
.sublinks small { margin-left: 4px; font-size: 12px; font-weight: 500; }

.drive-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
}
.drive-link:hover { background: var(--color-row); border-color: var(--color-border); }
.drive-link svg { width: 24px; height: 22px; display: block; }

.pdf-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
}
.pdf-link:hover { background: var(--color-row); border-color: var(--color-border); }
.pdf-link svg { width: 24px; height: 28px; display: block; }

.icon-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-btn);
    background: var(--color-bg);
    color: var(--color-text);
}
.icon-action:hover { background: var(--color-row); border-color: var(--color-border); }
.icon-action svg { width: 24px; height: 24px; display: block; }
.icon-action--done { color: var(--color-success); border-color: rgba(22, 163, 74, .28); background: var(--color-success-soft); }
.icon-action--done svg, .icon-action--done svg * { fill: currentColor !important; stroke: currentColor !important; }
.icon-action--danger { color: var(--color-danger); border-color: rgba(220, 38, 38, .28); background: var(--color-danger-soft); }
.icon-action--danger svg, .icon-action--danger svg * { fill: none !important; stroke: currentColor !important; }

.alert-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    color: var(--color-danger);
    vertical-align: -3px;
}
.alert-icon svg { width: 18px; height: 18px; display: block; }
.alert-icon svg, .alert-icon svg * { fill: currentColor !important; stroke: currentColor !important; }
.alert-icon--title { width: 24px; height: 24px; margin-right: 6px; vertical-align: -4px; }
.alert-icon--title svg { width: 24px; height: 24px; }
.kpi__label--icon, .badge .alert-icon, .stats-bar__value .alert-icon { display: inline-flex; align-items: center; gap: 6px; }

.spec-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
.spec--full { grid-column: 1 / -1; }
.spec__label { margin: 0; font-size: 11px; color: var(--color-text-light); text-transform: uppercase; letter-spacing: 0.04em; }
.spec__value { margin: 1px 0 0; font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }

.list-section__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 2px 2px 8px; }
.list-section__title { margin: 0; font-size: 13px; font-weight: 600; color: var(--color-text-light); text-transform: uppercase; letter-spacing: 0.04em; }
.list-stack { display: grid; gap: 8px; }

.list-row { display: flex; align-items: center; gap: 12px; padding: 11px 14px; background: var(--color-bg); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); color: var(--color-text); }
[data-card-href] { cursor: pointer; }
.list-row:hover { background: var(--color-bg-soft); }
.list-row__icon { width: 34px; height: 34px; flex: 0 0 auto; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }
.list-row__icon svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.list-row__body { flex: 1; min-width: 0; }
.list-row__title { display: block; font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.list-row__meta { display: block; margin-top: 1px; font-size: 12px; color: var(--color-text-light); }
.list-row .badge { flex: 0 0 auto; }
.entretien-validation-meta { display: block; margin-top: 4px; color: #6D28D9; font-size: 12px; font-weight: 600; }
.entretien-mobile-status { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.entretien-mobile-status .entretien-validation-meta { display: inline; margin-top: 0; }

.tint-danger { background: var(--color-danger-soft); color: #991B1B; }
.tint-todo { background: var(--color-warning-soft); color: #92400E; }
.tint-done { background: var(--color-success-soft); color: #166534; }
.tint-info { background: var(--color-primary-soft); color: #1E40AF; }

/* === Chantiers : contrôles AJAX === */
.planning-control-form { position: relative; margin: 0; width: 100%; }
.planning-control-form.is-loading::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 8px;
    width: 13px;
    height: 13px;
    margin-top: -7px;
    border: 2px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin .72s linear infinite;
    pointer-events: none;
}
.planning-check {
    width: 18px;
    min-width: 18px;
    height: 18px;
    min-height: 18px;
    flex: 0 0 18px;
    padding: 0;
    border-radius: 4px;
    accent-color: var(--color-success);
}
.planning-check:disabled { opacity: .65; cursor: not-allowed; filter: saturate(.85); }
.planning-tech { width: 100%; min-height: 38px; padding: 7px 9px; border-radius: 8px; font-size: 14px; }
.planning-state-select { width: 100%; min-height: 38px; padding: 7px 9px; border-radius: 8px; font-size: 14px; }
.planning-muted { color: var(--color-text-light); }
.planning-danger { color: var(--color-danger); font-weight: 600; }
.planning-state { display: inline-flex; align-items: center; min-height: 26px; padding: 4px 9px; border-radius: 999px; font-size: 12px; font-weight: 700; background: var(--color-bg-soft); color: var(--color-text); }
.planning-state--0 { background: var(--color-border-soft); }
.planning-state--1 { background: var(--color-primary-soft); color: var(--color-primary); }
.planning-state--2 { background: var(--color-warning-soft); color: var(--color-warning); }
.planning-state--3 { background: var(--color-success-soft); color: var(--color-success); }
.planning-toast-stack { position: fixed; left: 12px; right: 12px; bottom: calc(var(--tabbar-h, 0px) + var(--safe-bottom, 0px) + 14px); z-index: 80; display: grid; justify-items: center; gap: 8px; pointer-events: none; }
.planning-toast { max-width: 360px; padding: 10px 14px; border-radius: var(--radius-btn); background: var(--color-success); color: #fff; font-size: 13px; font-weight: 600; box-shadow: 0 8px 28px rgba(15, 23, 42, .18); }
.planning-toast--error { background: var(--color-danger); }

/* === Chantiers : vue d'ensemble === */
.chantiers-toolbar { display:flex; flex-direction:column; gap:10px; margin-bottom:6px; }
.chantiers-toolbar__row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.chantiers-search { flex:1; min-width:180px; }
.chantier-list { display:grid; gap:10px; grid-template-columns:1fr; }
@media (min-width:861px){ .chantier-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; } }
.chantier-card { display:block; background:var(--color-bg); border:1px solid var(--color-border-soft); border-radius:var(--radius-card); box-shadow:var(--shadow-card); padding:12px 14px; color:var(--color-text); }
.chantier-card--retard { border-left:3px solid var(--color-danger); }
.chantier-card__top { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.chantier-card__title { font-size:15px; font-weight:600; overflow-wrap:anywhere; }
.chantier-card__sub { margin-top:2px; font-size:12px; color:var(--color-text-light); }
.chantier-progress { height:6px; background:var(--color-border-soft); border-radius:999px; overflow:hidden; margin:10px 0 7px; }
.chantier-progress__fill { height:100%; background:var(--color-primary); border-radius:999px; }
.chantier-progress__fill--retard { background:var(--color-danger); }
.chantier-progress__fill--done { background:var(--color-success); }
.chantier-card__foot { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:12px; color:var(--color-text-light); }
.chantier-card__chev { color:var(--color-muted); display:inline-flex; }
.chantier-card__chev svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.chantier-prep__actions { margin-top:10px; }
.chantier-prep__actions form { margin:0; }
.badge-avenir { border-color:transparent; background:var(--color-bg-soft); color:var(--color-text-light); }
.badge-encours { border-color:transparent; background:var(--color-primary-soft); color:#1E40AF; }
.badge-retard { border-color:transparent; background:var(--color-danger-soft); color:#991B1B; }
.badge-termine { border-color:transparent; background:var(--color-success-soft); color:#166534; }

/* === Chantier : détail (stepper) === */
.chantier-detail { display:grid; gap:14px; }
.chantier-detail__sub { display:flex; align-items:center; gap:10px; flex-wrap:wrap; color:var(--color-text-light); font-size:13px; }
.term-steps { display:grid; }
.term-step { display:flex; gap:12px; align-items:stretch; }
.term-step.is-pending .term-step__content,
.etape-card.is-pending { opacity:.82; }
.term-step__rail { width:20px; flex:0 0 20px; display:flex; flex-direction:column; align-items:center; }
.term-step__dot { width:20px; height:20px; border-radius:50%; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; background:var(--color-bg); border:2px solid var(--color-border); }
.term-step__dot svg { width:12px; height:12px; fill:none; stroke:#fff; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; }
.term-step__dot--done { background:var(--color-success); border-color:var(--color-success); }
.term-step__dot--seen { background:var(--color-primary); border-color:var(--color-primary); }
.term-step__dot--current { background:var(--color-warning); border-color:var(--color-warning); }
.term-step__line { flex:1; width:2px; background:var(--color-border-soft); margin:4px 0; }
.term-step:last-child .term-step__line { display:none; }
.term-step__content { flex:1; min-width:0; padding-bottom:16px; }
.term-step__head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.term-step__title { font-size:14px; font-weight:600; overflow-wrap:anywhere; }
.term-step__meta { margin-top:3px; font-size:12px; color:var(--color-text-light); }
.term-step__controls { margin-top:10px; display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.term-step--active .term-step__controls { padding:12px; border:1px solid var(--color-primary-soft); border-radius:12px; }
.term-step__controls .planning-control-form { width:auto; }
.term-step__controls .planning-state-select, .term-step__controls .planning-tech { min-height:40px; min-width:120px; }

/* ====== Détail chantier — termes en accordéon ====== */
.term-step__head {
    cursor: pointer;
    border-radius: 10px;
    padding: 2px 4px;
    margin: -2px -4px;
    transition: background-color .14s ease;
}
.term-step__head:hover { background: var(--color-bg-soft); }
.term-step__head:focus-visible { outline: 3px solid rgba(37,99,235,.22); outline-offset: 1px; }
.term-step__head-main { flex: 1; min-width: 0; }
.term-step__panel {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows .26s ease;
}
.term-step__panel-inner { overflow: hidden; min-height: 0; }
.term-step.is-open .term-step__panel { grid-template-rows: 1fr; }
.term-step__controls-box {
    margin-top: 10px;
    padding: 12px;
    display: grid;
    gap: 10px;
    border: 1px solid var(--color-border-soft);
    border-radius: 12px;
    background: var(--color-bg);
}
.term-segmented-form { width: 100%; margin: 0; }
.term-controls { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.term-controls .planning-control-form { width: auto; margin: 0; }
.term-controls .term-tech-form { flex: 1 1 180px; min-width: 0; }
.term-controls .term-check-form { flex: 0 0 auto; }
.term-tech { display: inline-flex; align-items: center; gap: 8px; width: 100%; min-width: 0; }
.term-tech__label { flex: 0 0 auto; color: var(--color-text-light); font-size: 13px; font-weight: 600; }
.term-tech .planning-tech { flex: 1; min-width: 0; min-height: 40px; }
.term-check { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 2px; font-size: 14px; font-weight: 500; color: var(--color-text); cursor: pointer; white-space: nowrap; }
.term-check.is-disabled { color: var(--color-text-light); cursor: not-allowed; }
.term-check .planning-check { margin: 0; }
.segmented.is-disabled { opacity: .55; }
.segmented.is-disabled .segmented__btn { cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) {
    .term-step__panel { transition: none; }
}

/* === Planning : Gantt (desktop) === */
.gantt-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.gantt { min-width:760px; border:1px solid var(--color-border-soft); border-radius:var(--radius-card); overflow:hidden; background:var(--color-bg); }
.gantt__row { display:grid; grid-template-columns:200px 1fr; border-bottom:1px solid var(--color-border-soft); color:var(--color-text); }
.gantt__row:hover { background:var(--color-bg-soft); }
.gantt__row:last-child { border-bottom:0; }
.gantt__label { padding:10px 12px; min-width:0; border-right:1px solid var(--color-border-soft); }
.gantt__label-title { font-size:14px; font-weight:600; overflow-wrap:anywhere; }
.gantt__label-sub { font-size:11px; color:var(--color-text-light); }
.gantt__track { position:relative; min-height:46px; background-image:repeating-linear-gradient(to right, transparent 0, transparent calc(100%/12 - 1px), var(--color-border-soft) calc(100%/12 - 1px), var(--color-border-soft) calc(100%/12)); }
.gantt__head { background:var(--color-bg-soft); font-size:11px; color:var(--color-text-light); }
.gantt__head:hover, .gantt__foot:hover { background:var(--color-bg-soft); }
.gantt__head .gantt__track { display:flex; min-height:0; background-image:none; }
.gantt__week { flex:1; padding:8px 4px; text-align:center; border-right:1px solid var(--color-border-soft); }
.gantt__week:last-child { border-right:0; }
.gantt__week--current { color:var(--color-primary); font-weight:700; }
.gantt__bar { position:absolute; top:50%; transform:translateY(-50%); height:18px; border-radius:999px; background:var(--color-primary); color:#fff; font-size:11px; line-height:18px; padding:0 8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; z-index:1; }
.gantt__bar--retard { background:var(--color-danger); }
.gantt__bar--termine { background:var(--color-success); }
.gantt__bar--avenir { background:var(--color-muted); }
.gantt__marker { position:absolute; top:5px; width:0; height:0; border-left:6px solid transparent; border-right:6px solid transparent; border-top:9px solid var(--color-warning); transform:translateX(-50%); z-index:2; }
.gantt__today { position:absolute; top:0; bottom:0; width:2px; background:var(--color-danger); transform:translateX(-1px); z-index:3; }
.gantt__foot { background:var(--color-bg-soft); }
.gantt__foot .gantt__track { display:flex; min-height:0; background-image:none; }
.gantt__load { flex:1; padding:6px 4px; text-align:center; font-size:11px; color:var(--color-text-light); border-right:1px solid var(--color-border-soft); }
.gantt__load:last-child { border-right:0; }
.gantt__load strong { color:var(--color-text); }

/* === Planning : résumé discret === */
.planning-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin-top: -10px;
    color: var(--color-text-light);
    font-size: 13px;
}
.planning-summary strong {
    color: var(--color-text-muted);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.planning-legend {
    display: grid;
    gap: 9px;
    padding: 10px 12px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-btn);
    background: var(--color-bg-soft);
    color: var(--color-text-muted);
    font-size: 12px;
}
.planning-legend__items { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; }
.planning-legend__title { color: var(--color-text); font-size: 12px; }
.planning-legend__item { display: inline-flex; align-items: center; gap: 7px; cursor: help; }
.planning-legend__note { margin: 0; padding-top: 8px; border-top: 1px solid var(--color-border-soft); line-height: 1.45; }
.planning-legend__note strong { color: var(--color-text); font-weight: 650; }
.planning-legend__swatch { width: 22px; height: 8px; border-radius: 999px; background: var(--color-primary); }
.planning-legend__swatch--avenir { background: var(--color-muted); }
.planning-legend__swatch--termine { background: var(--color-success); }
.planning-legend__swatch--retard { background: var(--color-danger); }
.planning-legend__marker {
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 8px solid var(--color-warning);
}
.planning-legend__today { width: 2px; height: 15px; background: var(--color-danger); }

/* === Planning : agenda (mobile) === */
.agenda { display:grid; gap:18px; }
.agenda__group-title { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--color-text-light); margin-bottom:8px; }
.agenda-group__card {
    background: var(--color-bg);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}
.agenda-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    color: var(--color-text);
}
.agenda-row + .agenda-row { border-top: 1px solid var(--color-border-soft); }
.agenda-row:hover { background: var(--color-bg-soft); }
.agenda-row__date { flex: 0 0 auto; width: 40px; text-align: center; }
.agenda-row__day { display: block; font-size: 18px; font-weight: 700; line-height: 1; }
.agenda-row__mon { display: block; margin-top: 2px; font-size: 11px; color: var(--color-text-light); text-transform: uppercase; }
.agenda-row__body { flex: 1; min-width: 0; }
.planning-chantier-body { display: grid; gap: 4px; overflow-wrap: anywhere; }
.agenda-row__type { display: flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 600; }
.agenda-row__type::before {
    content: "";
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-primary);
}
.agenda-row--commander .agenda-row__type { color: var(--color-warning); }
.agenda-row--commander .agenda-row__type::before { background: var(--color-warning); }
.agenda-row__chantier { display: block; margin-top: 2px; font-size: 13px; color: var(--color-text-light); overflow-wrap: anywhere; }
.agenda-row__chev { flex: 0 0 auto; display: inline-flex; color: var(--color-muted); }
.agenda-row__chev svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* === Mes étapes === */
.etape-list { display:grid; gap:10px; }
@media (min-width:861px) { .etape-list { grid-template-columns:minmax(0, 760px); justify-content:center; gap:12px; } }
.etape-card { background:var(--color-bg); border:1px solid var(--color-border-soft); border-radius:var(--radius-card); box-shadow:var(--shadow-card); padding:12px 14px; display:grid; gap:9px; }
.etape-card__top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.etape-card__head-main { min-width:0; }
.etape-card__title { font-size:15px; font-weight:700; overflow-wrap:anywhere; line-height:1.25; }
.etape-card__title-link { display:inline-flex; align-items:center; gap:5px; color:var(--color-text); }
.etape-card__title-link:hover { color:var(--color-primary); }
.etape-card__title-chev { display:inline-flex; flex:0 0 auto; color:currentColor; }
.etape-card__title-chev svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.etape-card__loca { font-size:13px; color:var(--color-text-light); margin-top:2px; }
.etape-card__work { font-size:14px; font-weight:600; overflow-wrap:anywhere; }
.etape-card__ctx { font-size:12px; color:var(--color-text-light); }
.etape-card__pdf { align-self:flex-start; display:inline-flex; align-items:center; gap:6px; }
.etape-card__foot { margin-top:2px; font-size:12px; color:var(--color-text-light); }
.etape-card__actions { flex:0 0 auto; display:flex; align-items:center; gap:8px; }
.etape-card__count { flex:0 0 auto; min-width:24px; height:24px; padding:0 7px; display:inline-flex; align-items:center; justify-content:center; border-radius:999px; background:var(--color-bg-soft); color:var(--color-text-light); font-size:12px; font-weight:700; }
.etape-card__count.badge-urgent { background:var(--color-danger-soft); color:#991B1B; }
.etape-card__steps { display:grid; gap:7px; }
.etape-step { border:1px solid var(--color-border-soft); border-radius:8px; padding:9px; display:grid; gap:8px; background:var(--color-bg-soft); }
.etape-step.is-pending { opacity:.82; }
.etape-step__main { min-width:0; display:grid; gap:3px; }
.etape-step__head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.etape-step__title { min-width:0; font-size:14px; font-weight:700; color:var(--color-text); overflow-wrap:anywhere; }
.etape-step__meta { font-size:11px; color:var(--color-text-light); line-height:1.35; }
.etape-step__actions { display:flex; align-items:center; gap:8px; }
.etape-step .segmented { flex:1 1 auto; min-width:0; }
.etape-step .segmented__btn { min-height:34px; padding:7px 8px; font-size:12px; }
@media (max-width:520px) {
    .etape-step__actions { align-items:stretch; flex-direction:column; }
}

/* Segmenté (Vu / En cours / Terminé) */
.segmented { display:flex; border:1px solid var(--color-border); border-radius:var(--radius-pill); overflow:hidden; background:var(--color-bg); width:100%; max-width:100%; }
.segmented__btn { position:relative; flex:1 1 0; padding:9px 10px; min-height:46px; background:transparent; color:var(--color-text-muted); font-size:14px; font-weight:600; border:0; border-right:1px solid var(--color-border); cursor:pointer; }
.segmented__btn:last-child { border-right:0; }
.segmented__btn:disabled { opacity:.6; cursor:wait; }
.segmented__btn.is-loading { padding-right:30px; }
.segmented__btn.is-loading::after {
    content:"";
    position:absolute;
    top:50%;
    right:10px;
    width:13px;
    height:13px;
    margin-top:-7px;
    border:2px solid rgba(255,255,255,.45);
    border-top-color:currentColor;
    border-radius:50%;
    animation:spin .72s linear infinite;
}
.segmented__btn--active[data-etat="1"] { background:var(--color-primary); color:#fff; }
.segmented__btn--active[data-etat="2"] { background:var(--color-warning); color:#fff; }
.segmented__btn--active[data-etat="3"] { background:var(--color-success); color:#fff; }

@keyframes spin {
    to { transform: rotate(360deg); }
}

.sheet { position: fixed; inset: 0; z-index: 45; pointer-events: none; visibility: hidden; transition: visibility 0s linear .28s; }
.sheet.is-open { pointer-events: auto; visibility: visible; transition-delay: 0s; }
.sheet__scrim { position: absolute; inset: 0; background: rgba(15,23,42,0.45); opacity: 0; transition: opacity .24s ease; }
.sheet.is-open .sheet__scrim { opacity: 1; }
.sheet__panel { position: absolute; left: 0; right: 0; bottom: 0; max-width: 480px; margin: 0 auto; background: var(--color-bg); border-top-left-radius: 18px; border-top-right-radius: 18px; padding: 8px 16px calc(18px + var(--safe-bottom)); transform: translate3d(0, calc(100% + 32px), 0); transition: transform .28s cubic-bezier(.32,.72,0,1); box-shadow: 0 -8px 40px rgba(15,23,42,0.18); will-change: transform; backface-visibility: hidden; }
.sheet.is-open .sheet__panel { transform: translate3d(0, 0, 0); }
.sheet__handle { width: 36px; height: 4px; border-radius: 999px; background: var(--color-border); margin: 8px auto 12px; }
.sheet__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.sheet__title { font-size: 15px; font-weight: 600; }
.sheet__list { display: flex; flex-direction: column; gap: 4px; }
.sheet-item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 48px; padding: 0 12px; border: none; background: transparent; border-radius: var(--radius-btn); color: var(--color-text); font-size: 15px; font-weight: 500; text-align: left; }
.sheet-item:hover { background: var(--color-row); }
.sheet-item--disabled,
.sheet-item--disabled:hover { opacity: .52; cursor: not-allowed; background: transparent; color: var(--color-text-light); }
.sheet-item__icon { display: inline-flex; flex: 0 0 auto; color: var(--color-primary); }
.sheet-item__icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.sheet-item__icon--state-1 { color: var(--color-primary); }
.sheet-item__icon--state-2 { color: var(--color-warning); }
.sheet-item__icon--state-3 { color: var(--color-success); }
.sheet-item__icon--drive svg { fill: none; stroke: none; }
.sheet-item__icon--drive svg path { stroke: none; }
.sheet-item__icon--drive svg path:nth-child(1) { fill: #0066DA; }
.sheet-item__icon--drive svg path:nth-child(2) { fill: #00AC47; }
.sheet-item__icon--drive svg path:nth-child(3) { fill: #EA4335; }
.sheet-item__icon--drive svg path:nth-child(4) { fill: #00832D; }
.sheet-item__icon--drive svg path:nth-child(5) { fill: #2684FC; }
.sheet-item__icon--drive svg path:nth-child(6) { fill: #FFBA00; }
.sheet-item__body { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.sheet-item__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sheet-item--form .sheet-item__label { border: 0; background: transparent; color: inherit; font: inherit; padding: 0; text-align: left; cursor: pointer; }
.sheet-item__hint { color: var(--color-text-light); font-size: 12px; }
.sheet-item__chev { color: var(--color-text-light); display: inline-flex; }
.sheet-item__chev svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.sheet-item__form { margin: 0; }
.impersonation-sheet .sheet__list { max-height: min(62vh, 520px); overflow-y: auto; overscroll-behavior: contain; }
.confirm-sheet__message { margin: 4px 0 16px; color: var(--color-text-muted); font-size: 15px; }
.confirm-sheet__actions { display: flex; justify-content: flex-end; gap: 10px; }
.confirm-sheet__actions .btn { min-width: 118px; }

@media (min-width: 861px) {
    .action-bar { justify-content: flex-start; }
    .action-bar .btn { flex: 0 0 auto; min-width: 150px; }
    .sheet__scrim { background: rgba(15,23,42,0.35); }
    .sheet__panel { left: 50%; right: auto; bottom: auto; top: 50%; width: 360px; max-width: none; margin: 0; border-radius: var(--radius-card); padding: 12px 14px 16px; transform: translate(-50%, calc(-50% + 8px)); opacity: 0; transition: transform .18s ease, opacity .18s ease; box-shadow: 0 24px 60px rgba(15,23,42,0.22); }
    .sheet.is-open .sheet__panel { transform: translate(-50%, -50%); opacity: 1; }
    .sheet__handle { display: none; }
}

.kpi-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.kpi { display: flex; flex-direction: column; gap: 3px; padding: 12px 10px; border-radius: var(--radius-card); background: var(--color-bg); border: 1px solid var(--color-border-soft); box-shadow: var(--shadow-card); color: var(--color-text); }
.kpi:hover { background: var(--color-bg-soft); }
.kpi__value { font-size: 22px; font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.kpi__label { font-size: 12px; color: var(--color-text-light); }
.kpi--danger .kpi__value { color: var(--color-danger); }

.quick-row { display: flex; flex-wrap: wrap; gap: 8px; }
.quick { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 9px 14px; border: 1px solid var(--color-border); border-radius: var(--radius-pill); background: var(--color-bg); color: var(--color-text); font-size: 14px; font-weight: 500; }
.quick:hover { background: var(--color-row); }
.quick svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.list-row--block { align-items: flex-start; }
.list-row--block .badge { margin-top: 2px; }
.list-row__desc { display: block; margin-top: 4px; font-size: 13px; color: var(--color-text-muted); overflow-wrap: anywhere; white-space: pre-wrap; }
.list-row__desc .badge { white-space: nowrap; margin-right: 6px; }
.list-row--danger { border-left: 3px solid var(--color-danger); }
.list-row--warning { border-left: 3px solid var(--color-warning); }
.list-row--primary { border-left: 3px solid var(--color-primary); }

.travaux-groups { display: grid; gap: 12px; }
.travaux-group { display: grid; gap: 8px; }
.travaux-group__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding: 0 2px;
}
.travaux-group__head strong { font-size: 15px; font-weight: 600; }
.travaux-group__head span { color: var(--color-text-light); font-size: 13px; }

.dashboard { max-width: 560px; margin: 0 auto; }
.dashboard--wide { max-width: 980px; }
.dashboard-grid { display: grid; gap: 12px; grid-template-columns: 1fr; }
.dashboard-card { display: grid; gap: 10px; }
.dashboard-more {
    justify-self: flex-start;
    color: var(--color-primary);
    font-size: 13px;
    font-weight: 600;
}
.dashboard-more:hover { text-decoration: underline; }
.module-grid { display: grid; gap: 10px; }
.module-tile { display: flex; align-items: center; gap: 14px; padding: 16px; background: var(--color-bg); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); color: var(--color-text); }
.module-tile:hover { background: var(--color-bg-soft); border-color: var(--color-border); }
.module-tile--disabled { color: var(--color-text-light); opacity: .76; cursor: not-allowed; }
.module-tile--disabled:hover { background: var(--color-bg); border-color: var(--color-border-soft); }
.module-tile--disabled .module-tile__icon { background: var(--color-row); color: var(--color-muted); }
.module-tile__icon { width: 46px; height: 46px; flex: 0 0 auto; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: var(--color-primary-soft); color: var(--color-primary); }
.module-tile__icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.module-tile__body { flex: 1; min-width: 0; }
.module-tile__title { display: block; font-size: 16px; font-weight: 600; }
.module-tile__desc { display: block; margin-top: 2px; font-size: 13px; color: var(--color-text-light); }
.module-tile__chev { color: var(--color-muted); display: inline-flex; flex: 0 0 auto; }
.module-tile__chev svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ascenseur-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.ascenseur-search .btn[disabled] { opacity: .55; cursor: not-allowed; }
.quick-texts { width: 100%; max-width: 100%; margin-top: 8px; }
.quick-entry-tools {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
}
.quick-entry-tools .quick-texts { margin-top: 0; }
.quick-category {
    flex: 0 0 190px;
    min-height: 38px;
    padding: 8px 10px;
    font-size: 14px;
}
.field-hint { margin: 6px 0 0; color: var(--color-text-light); font-size: 13px; }
.timeline-list .list-row[hidden],
.ascenseur-row[hidden] { display: none; }
.ascenseur-picker__option[hidden],
.ascenseur-picker__empty[hidden],
[data-entretien-item][hidden],
[data-entretien-list][hidden],
[data-demande-item][hidden],
[data-demande-list][hidden] { display: none !important; }
.kpi { position: relative; padding-right: 30px; transition: border-color .14s ease, box-shadow .14s ease, transform .14s ease; }
.kpi::after {
    content: "";
    position: absolute;
    top: 14px;
    right: 14px;
    width: 8px;
    height: 8px;
    border-top: 2px solid var(--color-muted);
    border-right: 2px solid var(--color-muted);
    transform: rotate(45deg);
    transition: border-color .14s ease, transform .14s ease;
}
.kpi:hover { border-color: var(--color-border); box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08); transform: translateY(-1px); }
.kpi:hover::after { border-color: var(--color-primary); transform: translateX(2px) rotate(45deg); }

@media (min-width: 992px) {
    .page-stack { gap: 22px; }
    .page-header { padding-bottom: 18px; }
    h1 { font-size: 1.9rem; }
    .page-header__body > p { font-size: 16px; }
    .kpi-grid { gap: 14px; }
    .kpi { padding: 20px 18px; padding-right: 34px; gap: 6px; }
    .kpi::after { top: 18px; right: 18px; }
    .kpi__value { font-size: 30px; }
    .kpi__label { font-size: 14px; }
    .quick { min-height: 46px; padding: 11px 18px; font-size: 15px; }
    .card-header { padding: 16px 22px; }
    .card-body { padding: 20px 22px; }
    .list-section__head { margin-bottom: 12px; }
    .list-stack { gap: 10px; }
    .list-row { padding: 16px 18px; }
    .list-row__title { font-size: 15px; }
    .list-row__desc { font-size: 14px; }
    .spec-grid { gap: 16px 20px; }
    .module-tile { padding: 20px; }
}

@media (min-width: 861px) {
    .dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1200px) {
    .appbar__inner, .app-main, .app-footer__inner { width: min(1080px, calc(100% - 48px)); }
    .page-container { max-width: 1080px; }
}

.toolbar { display: flex; flex-direction: column; gap: 10px; }
.filter-chips { display: flex; gap: 8px; overflow-x: auto; margin: 0; padding: 2px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.filter-chips::-webkit-scrollbar { display: none; }
.chip { flex: 0 0 auto; min-height: 38px; padding: 8px 14px; border: 1px solid var(--color-border); border-radius: var(--radius-pill); background: var(--color-bg); color: var(--color-text-muted); font-size: 14px; font-weight: 500; white-space: nowrap; cursor: pointer; }
.chip--icon { width: 38px; padding: 0; display: inline-flex; align-items: center; justify-content: center; }
.chip--icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chip:hover { background: var(--color-row); }
.chip--active { border-color: var(--color-primary); background: var(--color-primary-soft); color: #1E40AF; }
.chip--danger { border-color: transparent; background: var(--color-danger-soft); color: #991B1B; }
.chip--danger:hover, .chip--danger.chip--active { border-color: var(--color-danger); background: var(--color-danger); color: #fff; }
.chip--todo { border-color: transparent; background: var(--color-warning-soft); color: #92400E; }
.chip--todo:hover, .chip--todo.chip--active { border-color: var(--color-warning); background: var(--color-warning); color: #fff; }
.chip--alert-filter {
    width: 38px;
    height: 38px;
    min-height: 38px;
    border-radius: 50%;
    padding: 0;
}
.chip--alert-filter svg {
    width: 18px;
    height: 18px;
}

.list-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 0 2px; font-size: 13px; color: var(--color-text-light); }
.list-meta strong { color: var(--color-text); font-weight: 600; }

.task-filter-form { display: grid; gap: 14px; }
.task-list { display: grid; gap: 8px; }
.task[hidden], [data-task-item][hidden] { display: none !important; }
.task { background: var(--color-bg); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: 14px 16px; }
.task.is-focus-target { outline: 2px solid var(--color-primary); outline-offset: 3px; box-shadow: 0 0 0 4px rgba(37, 99, 235, .12), var(--shadow-card); }
.task--danger { border-left: 3px solid var(--color-danger); }
.task--warning { border-left: 3px solid var(--color-warning); }
.task--primary { border-left: 3px solid var(--color-primary); }
.task__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.task__head > div:first-child { min-width: 0; }
.task__head-actions { flex: 0 0 auto; display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: nowrap; max-width: 45%; }
.task__head-actions form { margin: 0; }
.task__title { margin: 0; font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.task__title-link { color: var(--color-primary); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.task__title-link:hover { color: var(--color-primary-hover); }
.task__meta { margin-top: 2px; font-size: 13px; color: var(--color-text-light); }
.task__txt { margin: 10px 0 0; font-size: 14px; color: var(--color-text-muted); overflow-wrap: anywhere; white-space: pre-wrap; }
.task__context { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
.task-context-badge { display: inline-flex; max-width: 100%; align-items: center; border: 1px solid var(--color-border-soft); border-radius: var(--radius-pill); background: var(--color-bg-soft); color: var(--color-text-muted); padding: 3px 9px; font-size: 12px; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; white-space: normal; }
.task__dates { margin-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; color: var(--color-text-light); font-size: 13px; }
.task__dates strong { color: var(--color-text); font-weight: 650; }
.task__foot { margin-top: 12px; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.task__foot form { margin: 0; }
.task--global {
    display: grid;
    gap: 10px;
    padding: 14px 16px;
}
.task--global .task__head {
    align-items: flex-start;
}
.task--global .task__head-actions {
    max-width: none;
}
.task--global .task__title {
    font-size: 15px;
    font-weight: 650;
}
.task--global .task__title-link {
    color: var(--color-primary);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
.task--global .task__meta {
    margin-top: 3px;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 500;
}
.task--global .task__txt {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 14px;
    line-height: 1.4;
}
.task--global .task__dates {
    margin-top: 0;
    padding-top: 10px;
    border-top: 1px solid var(--color-border-soft);
    color: var(--color-text-light);
    font-size: 13px;
    flex-wrap: nowrap;
}
.task--global .task__dates strong {
    color: var(--color-text);
    font-weight: 650;
}
.task--global .task__date-end {
    margin-left: auto;
    text-align: right;
}
.task--global .task__foot {
    margin-top: 2px;
    display: flex;
    justify-content: flex-start;
    gap: 8px;
    align-items: center;
}
.task--global .task__foot form {
    margin: 0;
}
.task-global__badges {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.task-global__badges .planning-state,
.task-global__badges .badge {
    min-height: 26px;
    padding: 4px 10px;
    font-size: 12px;
}
.task-global__edit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    color: var(--color-text-muted);
}
.task-global__edit:hover {
    background: var(--color-row);
    color: var(--color-primary);
}
.task-global__edit svg,
.task-global__action svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.task-global__action {
    width: auto;
    min-width: 128px;
    min-height: 38px;
    padding: 8px 14px;
    justify-content: center;
    gap: 7px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
}
.task-global__action--send {
    border-color: var(--color-primary);
}
.task-global__action--close {
    border: 2px solid var(--color-primary);
    background: var(--color-bg);
    color: var(--color-primary);
}
.task-global__action--close:hover {
    background: var(--color-primary-soft);
}
.task-state { flex: 1 1 230px; max-width: 360px; }
.task-state .segmented__btn { min-height: 40px; padding: 8px; font-size: 14px; }
.task-close-action { width: 24px; height: 24px; min-width: 24px; padding: 0; border-radius: 999px; }
.task-close-action svg { width: 13px; height: 13px; }
.task-form-card-header { align-items: flex-start; gap: 10px; }
.task-form-requester { margin-left: auto; color: var(--color-text-muted); font-size: 13px; font-weight: 600; line-height: 1.3; text-align: right; }
.task-form-grid { gap: 10px; }
.task-form-grid label { margin-bottom: 4px; font-size: 13px; }
.task-form-grid input,
.task-form-grid select,
.task-form-grid textarea {
    min-height: 38px;
    padding: 8px 10px;
}
.task-form-grid textarea.task-form-comment { min-height: 84px; }
.label-note { color: var(--color-text-light); font-weight: 500; }
.field-help { margin: 6px 0 0; color: var(--color-text-light); font-size: 12px; line-height: 1.35; }

@media (min-width: 992px) {
    .task { padding: 16px 18px; }
    .task__title { font-size: 16px; }
    .task__txt { font-size: 15px; }
    .task--global {
        padding: 14px 16px;
    }
    .task--global .task__title {
        font-size: 15px;
    }
    .task--global .task__txt {
        font-size: 14px;
    }
}

@media (max-width: 720px) {
    .task__head { align-items: flex-start; }
    .task__head-actions { max-width: 46%; }
    .task__head .badge { align-self: flex-start; }
    .task__foot { justify-content: stretch; }
    .task__foot > .btn,
    .task__foot > form,
    .task__foot > form .btn,
    .task-state { width: 100%; max-width: none; }
    .task__foot .planning-state { margin-right: auto; }
    .task--global {
        padding: 14px 16px;
    }
    .task--global .task__title {
        font-size: 15px;
    }
    .task--global .task__meta,
    .task--global .task__txt,
    .task--global .task__dates {
        font-size: 14px;
    }
    .task--global .task__foot {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 34px;
        justify-content: stretch;
        gap: 8px;
    }
    .task--global .task__foot form {
        min-width: 0;
    }
    .task-global__action {
        width: 100%;
        min-width: 0;
        min-height: 40px;
        font-size: 14px;
    }
    .task--global .task-global__edit {
        width: 34px;
        height: 40px;
        justify-self: end;
    }
    .task-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .task-form-card-header { align-items: flex-start; }
    .task-form-requester { max-width: 42%; font-size: 12px; }
    .task-form-grid textarea.task-form-comment { min-height: 84px; }
}

.only-mobile { display: none; }
@media (max-width: 720px) {
    .only-desktop { display: none; }
    .only-mobile { display: block; }
}
.list-row__chev { color: var(--color-muted); display: inline-flex; flex: 0 0 auto; }
.list-row__chev svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.list-row__meta strong { color: var(--color-text); font-weight: 600; }
.list-row__meta--muted-ref {
    color: var(--color-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rec-list { display: grid; gap: 8px; }
.rec { background: var(--color-bg); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: 14px 16px; }
.rec__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.rec__title { font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.rec__title a { color: var(--color-primary); }
.rec__title--with-chev { display: inline-flex; align-items: center; gap: 4px; }
.rec__amount { flex: 0 0 auto; font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
.rec__chev { display: inline-flex; flex: 0 0 auto; color: var(--color-muted); }
.rec__chev svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.rec__meta { margin-top: 2px; font-size: 12px; color: var(--color-text-light); }
.rec__grid { margin: 10px 0 0; display: grid; grid-template-columns: auto 1fr; gap: 5px 12px; font-size: 13px; }
.rec__grid dt { color: var(--color-text-light); }
.rec__grid dd { margin: 0; overflow-wrap: anywhere; }
.rec__actions { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.rec__actions form { margin: 0; }
.syndic-doc-rec .rec__actions { justify-content: flex-end; }


.btn-row { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.btn-row form { margin: 0; }
.drive-btn { width: 100%; }
.drive-btn__ico { display: inline-flex; align-items: center; width: 20px; height: 20px; flex: 0 0 auto; }
.drive-btn__ico svg { width: 20px; height: 20px; display: block; }
/* === Dashboard : encarts épurés (alignés sur la maquette) === */

/* En-tête : titre + compteur sur la même ligne, même sur mobile, sans séparateur */
.dashboard .card-header {
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 10px;
    border-bottom: 0;
    padding: 14px 16px 4px;
}
.dashboard .card-title { min-width: 0; font-size: 16px; }
.dashboard .card-header .badge { flex: 0 0 auto; font-size: 13px; padding: 2px 10px; }

/* Corps : aperçu en texte simple, fini la "carte dans la carte" */
.dashboard .card-body.dashboard-card { padding: 4px 16px 14px; }
.dashboard-card .list-row {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    gap: 10px;
}
.dashboard-card .list-row:hover { background: transparent; }
.dashboard-card .list-row__icon { display: none; }      /* on retire le rond bleu imbriqué */
.dashboard-card .list-row__title { font-size: 14px; font-weight: 600; }
.dashboard-card .list-row__meta { font-size: 13px; color: var(--color-text-light); }
.dashboard-card .list-row + .list-row {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--color-border-soft);
}
.dashboard-card .list-row form { margin: 0; flex: 0 0 auto; }   /* bouton "Prêt" (admin) aligné à droite */

/* Lien "Voir tout" */
.dashboard-more {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 12px;
    color: var(--color-primary);
    font-size: 13px;
    font-weight: 600;
}
.dashboard-more::after { content: "\2192"; }   /* flèche → */
.dashboard-more:hover { text-decoration: underline; }

/* Admin : grille 2 colonnes + conteneur élargi */
.dashboard--wide { max-width: 980px; }
.dashboard-grid { display: grid; gap: 10px; grid-template-columns: 1fr; }
@media (min-width: 861px) {
    .dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
}


/* ====== Page "Ouvrir un ascenseur" — alignement maquette ====== */

.step-hint {
    margin: 0;
    text-align: center;
    color: var(--color-text-light);
    font-size: 13px;
    font-weight: 500;
}

/* Champ de recherche avec loupe intégrée */
.search-field { position: relative; min-width: 0; }
.search-field__icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    color: var(--color-muted);
    pointer-events: none;
}
.search-field input { min-height: 50px; padding-left: 44px; }
.ascenseur-search .search-field input { min-height: 50px; padding-left: 44px; }

.ascenseur-picker {
    --ascenseur-picker-row-height: 68px;
    position: relative;
    display: grid;
    gap: 8px;
}
.ascenseur-picker__selection {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-btn);
    background: var(--color-bg-soft);
    cursor: pointer;
}
.ascenseur-picker__selection.is-empty { color: var(--color-text-light); }
.ascenseur-picker__selection-label {
    min-width: 0;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 600;
    overflow-wrap: anywhere;
}
.ascenseur-picker__selection.is-empty .ascenseur-picker__selection-label { color: var(--color-text-light); }
.ascenseur-picker__selection-actions { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.ascenseur-picker__link {
    border: none;
    background: transparent;
    color: var(--color-primary);
    padding: 2px;
    font-size: 13px;
    font-weight: 700;
}
.ascenseur-picker__link--muted { color: var(--color-text-light); }
.ascenseur-picker__modal {
    position: fixed;
    inset: 0;
    z-index: 90;
    display: none;
    align-items: flex-start;
    justify-content: center;
    padding: calc(56px + env(safe-area-inset-top, 0px)) 18px 18px;
}
.ascenseur-picker.is-open .ascenseur-picker__modal { display: flex; }
.ascenseur-picker__scrim {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, .38);
}
.ascenseur-picker__panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: min(560px, 100%);
    max-height: calc(100vh - 36px);
    padding: 20px 20px 8px;
    border-radius: 20px;
    background: var(--color-bg);
    box-shadow: var(--shadow-popover);
}
.ascenseur-picker__head {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.ascenseur-picker__head h3 {
    margin: 0;
    color: var(--color-text);
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
}
.ascenseur-picker__close {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-border);
    border-radius: 50%;
    background: var(--color-bg);
    color: var(--color-text-light);
    cursor: pointer;
}
.ascenseur-picker__close:hover { background: var(--color-row); color: var(--color-text); }
.ascenseur-picker__search {
    flex: 0 0 auto;
    position: relative;
    display: flex;
    align-items: center;
}
.ascenseur-picker__search input {
    width: 100%;
    min-height: 54px;
    padding: 0 16px;
    border: 1px solid var(--color-border);
    border-radius: 14px;
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 16px;
}
.ascenseur-picker__search input:focus { outline: none; border-color: var(--color-primary); }
.ascenseur-picker__count {
    flex: 0 0 auto;
    margin: 12px 2px 4px;
    color: var(--color-text-light);
    font-size: 14px;
    font-weight: 500;
}
.ascenseur-picker__list {
    flex: 0 1 auto;
    display: block;
    max-height: calc((var(--ascenseur-picker-row-height) * 3) + 16px);
    overflow-y: auto;
    margin: 0 -6px;
    padding: 4px 6px 12px;
    -webkit-overflow-scrolling: touch;
}
.ascenseur-picker__option {
    display: flex;
    flex-direction: column;
    gap: 3px;
    width: 100%;
    min-height: var(--ascenseur-picker-row-height);
    padding: 11px 12px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: var(--color-text);
    text-align: left;
    cursor: pointer;
    overflow-wrap: anywhere;
}
.ascenseur-picker__option-title { font-size: 17px; font-weight: 700; line-height: 1.25; }
.ascenseur-picker__option-sub { color: var(--color-text-light); font-size: 14px; line-height: 1.3; }
.ascenseur-picker__option:hover { background: var(--color-row); }
.ascenseur-picker__option.is-selected { background: var(--color-primary-soft); }
.ascenseur-picker__option.is-selected .ascenseur-picker__option-title { color: #1E40AF; }
.ascenseur-picker__option.is-selected .ascenseur-picker__option-sub { color: #3B6FCE; }
.ascenseur-picker__empty {
    padding: 13px 14px;
    color: var(--color-text-light);
    font-size: 14px;
}
.ascenseur-picker.is-invalid .ascenseur-picker__search input {
    border-color: var(--color-danger);
    outline: 3px solid rgba(220, 38, 38, 0.14);
}

.voice-tools { margin-top: 8px; }
.voice-tools[data-voice-panel] {
    display: grid;
    grid-template-columns: minmax(150px, .72fr) minmax(0, 1fr);
    gap: 10px;
    align-items: stretch;
}
.voice-tools[data-voice-panel][hidden] { display: none; }
.voice-tools .field-hint { margin: 0; }
.voice-textarea-wrap {
    position: relative;
}
.voice-textarea-wrap textarea {
    min-height: 170px;
}
.voice-dictation {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 11px;
    min-width: 0;
    min-height: 64px;
    padding: 10px 13px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: var(--color-bg);
    color: var(--color-text);
    text-align: left;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .035);
    transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease, color .16s ease, transform .16s ease;
}
.voice-dictation:hover { border-color: var(--color-primary); background: #FAFBFF; }
.voice-dictation:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 1px;
    border-color: var(--color-primary);
}
.voice-dictation:active { transform: translateY(1px); }
.voice-dictation__icon-wrap {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--color-primary-soft);
    color: var(--color-primary);
}
.voice-dictation__icon {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.voice-dictation__copy {
    display: flex;
    flex-direction: column;
    min-width: 0;
    gap: 1px;
}
.voice-dictation__label {
    overflow: hidden;
    color: inherit;
    font-size: 16px;
    font-weight: 800;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.voice-dictation__sub {
    overflow: hidden;
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.2;
    text-overflow: ellipsis;
    text-transform: uppercase;
    white-space: nowrap;
}
.voice-dictation[data-voice-state="pressing"] {
    border-color: var(--color-primary);
    background: var(--color-primary-soft);
}
.voice-dictation.is-listening,
.voice-dictation[data-voice-state="listening"],
.voice-dictation[data-voice-state="processing"] {
    border-color: var(--color-danger);
    background: var(--color-danger-soft);
    color: #991B1B;
}
.voice-dictation.is-listening .voice-dictation__icon-wrap,
.voice-dictation[data-voice-state="listening"] .voice-dictation__icon-wrap,
.voice-dictation[data-voice-state="processing"] .voice-dictation__icon-wrap {
    background: #FEE2E2;
    color: #991B1B;
    animation: voice-pulse 1.1s ease-in-out infinite;
}
.voice-dictation[data-voice-state="success"] {
    border-color: rgba(22, 163, 74, .42);
    background: var(--color-success-soft);
    color: #166534;
}
.voice-dictation[data-voice-state="success"] .voice-dictation__icon-wrap {
    background: #DCFCE7;
    color: #166534;
}
.voice-dictation[data-voice-state="error"] {
    border-color: rgba(220, 38, 38, .48);
    background: var(--color-danger-soft);
    color: #991B1B;
}
.voice-feedback {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    min-height: 64px;
    padding: 10px 12px;
    border: 1px solid var(--color-border-soft);
    border-radius: 12px;
    background: #FAFBFC;
    color: var(--color-text);
}
.voice-feedback__signal {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 3px;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: var(--color-bg);
    color: var(--color-muted);
}
.voice-feedback__signal span {
    display: block;
    width: 3px;
    height: 10px;
    border-radius: 999px;
    background: currentColor;
}
.voice-feedback__signal span:nth-child(2) { height: 16px; }
.voice-feedback__signal span:nth-child(3) { height: 7px; }
.voice-feedback[data-voice-state="listening"] {
    border-color: rgba(220, 38, 38, .24);
    background: #FFFBFB;
}
.voice-feedback[data-voice-state="listening"] .voice-feedback__signal {
    background: var(--color-danger-soft);
    color: var(--color-danger);
}
.voice-feedback[data-voice-state="listening"] .voice-feedback__signal span {
    animation: voice-level .74s ease-in-out infinite;
}
.voice-feedback[data-voice-state="listening"] .voice-feedback__signal span:nth-child(2) { animation-delay: .12s; }
.voice-feedback[data-voice-state="listening"] .voice-feedback__signal span:nth-child(3) { animation-delay: .24s; }
.voice-feedback[data-voice-state="processing"] .voice-feedback__signal {
    background: var(--color-warning-soft);
    color: var(--color-warning);
}
.voice-feedback[data-voice-state="success"] {
    border-color: rgba(22, 163, 74, .26);
    background: #FBFEFC;
}
.voice-feedback[data-voice-state="success"] .voice-feedback__signal {
    background: var(--color-success-soft);
    color: var(--color-success);
}
.voice-feedback[data-voice-state="error"] {
    border-color: rgba(220, 38, 38, .24);
    background: #FFFBFB;
}
.voice-feedback[data-voice-state="error"] .voice-feedback__signal {
    background: var(--color-danger-soft);
    color: var(--color-danger);
}
.voice-feedback__body {
    display: flex;
    flex-direction: column;
    min-width: 0;
    gap: 1px;
}
.voice-feedback__body strong {
    overflow: hidden;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.22;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.voice-feedback__body span {
    overflow: hidden;
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.voice-feedback__body p {
    display: -webkit-box;
    margin: 5px 0 0;
    overflow: hidden;
    color: var(--color-text);
    font-size: 13px;
    font-weight: 600;
    line-height: 1.25;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

@media (max-width: 720px) {
    .voice-textarea-wrap textarea { min-height: 210px; }
    .voice-tools[data-voice-panel] {
        grid-template-columns: minmax(0, 1fr);
    }
    .voice-dictation,
    .voice-feedback {
        min-height: 66px;
    }
    .voice-dictation {
        width: 100%;
    }
    .quick-entry-tools {
        align-items: stretch;
        flex-direction: column;
    }
    .quick-category {
        flex-basis: auto;
        width: 100%;
    }
}

@keyframes voice-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.08); opacity: .82; }
}

@keyframes voice-level {
    0%, 100% { transform: scaleY(.55); opacity: .55; }
    50% { transform: scaleY(1.35); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .voice-dictation.is-listening .voice-dictation__icon-wrap,
    .voice-dictation[data-voice-state="listening"] .voice-dictation__icon-wrap,
    .voice-dictation[data-voice-state="processing"] .voice-dictation__icon-wrap,
    .voice-feedback[data-voice-state="listening"] .voice-feedback__signal span {
        animation: none;
    }
}

/* === Formulaire « Ajouter une intervention » — maquette mobile === */
/* En-tête : flèche retour + titre + badge sur une ligne */
.intervention-header {
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 10px;
}
.intervention-header .page-header__body {
    flex: 1 1 auto;
    min-width: 0;
}
.intervention-header .badge {
    flex: 0 0 auto;
    align-self: flex-start;
}

/* Date + Catégorie : deux colonnes, y compris en mobile, même hauteur */
.intervention-top-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
.intervention-top-grid input,
.intervention-top-grid select.quick-category {
    height: 46px;
    min-height: 46px;
    padding: 11px 13px;
    font-size: inherit;
    line-height: 1.2;
}

/* Champ commentaire compact avec micro intégré */
.intervention-comment .voice-textarea-wrap textarea {
    min-height: 84px;
    padding-right: 60px;
    resize: none;
    overflow: hidden;
}
.voice-mic {
    position: absolute;
    right: 10px;
    bottom: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: var(--color-primary-soft);
    color: var(--color-primary);
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .08);
    transition: background-color .16s ease, color .16s ease, transform .16s ease;
}
.voice-mic:hover { background: #DCE6FF; }
.voice-mic:active { transform: scale(.95); }
.voice-mic:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 1px;
}
.voice-mic svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.voice-mic.is-listening,
.voice-mic[data-voice-state="listening"],
.voice-mic[data-voice-state="processing"] {
    background: var(--color-danger-soft);
    color: #991B1B;
    animation: voice-pulse 1.1s ease-in-out infinite;
}
.voice-mic[data-voice-state="success"] {
    background: var(--color-success-soft);
    color: #166534;
}
.voice-mic[data-voice-state="error"] {
    background: var(--color-danger-soft);
    color: #991B1B;
}

/* Ligne d'état discrète sous le commentaire */
.voice-status-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
    margin: 6px 0 0;
    color: var(--color-text-light);
    font-size: 13px;
}
.voice-status-line[hidden] { display: none; }
.voice-status-line strong {
    font-weight: 600;
    color: var(--color-text-light);
}
.voice-status-line__bolt {
    display: inline-flex;
    color: var(--color-primary);
}
.voice-status-line__bolt svg {
    width: 14px;
    height: 14px;
    fill: currentColor;
    stroke: none;
}
.voice-status-line__sep { opacity: .55; }
.voice-status-line__preview {
    color: var(--color-text);
    font-weight: 600;
}
.voice-status-line[data-voice-state="listening"] strong,
.voice-status-line[data-voice-state="processing"] strong { color: var(--color-danger); }
.voice-status-line[data-voice-state="success"] strong { color: var(--color-success); }

/* Raccourcis : libellé + chips sur une seule ligne (scroll horizontal si besoin) */
.intervention-shortcuts label {
    display: block;
    margin-bottom: 6px;
}
.intervention-shortcuts .quick-texts { margin: 0; }

/* Photos : compteur sur la ligne du titre + actions camera/galerie */
.photo-field { position: relative; }
.photo-field__head { margin-bottom: 8px; }
.photo-field__head label,
.photo-field__head .section-title { margin: 0; }
.photo-field .photo-uploader {
    padding: 0;
    border: 0;
    background: transparent;
}
.photo-field .photo-uploader__top { display: block; }
.photo-field .photo-uploader__count {
    position: absolute;
    top: 0;
    right: 0;
    min-width: 0;
    height: auto;
    padding: 0;
    background: transparent;
    box-shadow: none;
    color: var(--color-text-light);
    font-size: 15px;
    font-weight: 600;
}
.photo-field .photo-uploader__actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    width: 100%;
}
.photo-field .photo-uploader__trigger {
    width: 100%;
    min-height: 66px;
    flex: none;
    flex-direction: column;
    justify-content: center;
    gap: 7px;
    padding: 10px 8px;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--color-bg);
    color: var(--color-primary);
    font-size: 14px;
    font-weight: 700;
    box-shadow: none;
}
.photo-field .photo-uploader__trigger:hover {
    border-color: color-mix(in srgb, var(--color-primary) 42%, var(--color-border));
    background: color-mix(in srgb, var(--color-primary) 5%, var(--color-bg));
    color: var(--color-primary-hover);
}
.photo-field .photo-uploader__trigger svg {
    width: 22px;
    height: 22px;
    stroke: var(--color-primary);
}
/* Barre d'enregistrement épinglée en bas */
.intervention-actions {
    position: sticky;
    bottom: 0;
    z-index: 5;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    margin: 8px 0 0;
    padding: 12px 0 calc(10px + env(safe-area-inset-bottom, 0px));
    text-align: center;
    background: var(--color-bg);
    border-top: 1px solid var(--color-border-soft);
}
.intervention-actions .btn-primary {
    width: 100%;
    min-height: 50px;
    font-size: 16px;
}
.intervention-actions .intervention-back-link {
    width: auto;
    align-self: center;
    min-height: 40px;
    border: 0;
    background: transparent;
    box-shadow: none;
    color: var(--color-text-light);
    font-weight: 600;
}
.intervention-actions .intervention-back-link:hover {
    background: transparent;
    color: var(--color-text);
}

/* Cartes ascenseur sur 3 lignes (comme la maquette) */
.ascenseur-row .list-row__sub {
    display: block;
    margin-top: 3px;
    font-size: 14px;
    color: var(--color-text-muted);
    overflow-wrap: anywhere;
}
.ascenseur-row .list-row__num {
    display: block;
    margin-top: 2px;
    font-size: 13px;
    color: var(--color-text-light);
}
.ascenseur-row--actions {
    position: relative;
    align-items: stretch;
    padding-left: 14px;
    padding-right: 42px;
    border-left: 3px solid transparent;
}
.ascenseur-row__main {
    color: inherit;
}
.ascenseur-row__main:hover {
    color: inherit;
}
.ascenseur-kebab {
    position: absolute;
    right: 12px;
    top: 13px;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--color-text-light);
}
.ascenseur-kebab:hover {
    background: var(--color-row);
    color: var(--color-text);
}
.ascenseur-kebab svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
}
.ascenseur-docs-icon svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.ascenseur-docs-icon {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--color-text-light);
}
.ascenseur-docs-col {
    width: 1%;
    text-align: right;
    white-space: nowrap;
}
.ascenseur-docs-icon:hover {
    background: var(--color-row);
    color: var(--color-primary);
}
.ascenseur-row.is-contracted {
    border-color: rgba(37, 99, 235, .45);
    border-left-color: var(--color-primary);
}
.ascenseur-row.is-urgent {
    border-color: rgba(220, 38, 38, .45);
    border-left-color: var(--color-danger);
}
.ascenseur-row.is-todo {
    border-color: rgba(217, 119, 6, .45);
    border-left-color: var(--color-warning);
}
.ascenseur-trow__link.is-contracted {
    color: var(--color-primary);
}
.ascenseur-trow__link.is-urgent {
    color: var(--color-danger);
}
.ascenseur-trow__link.is-todo {
    color: var(--color-warning);
}
/* ====== Liste ascenseurs : tableau sur PC, cartes sur mobile ====== */
.ascenseur-cards { display: none; }   /* masqué par défaut → affiché en mobile */

.ascenseur-trow { cursor: default; }
.ascenseur-trow:hover { background: var(--color-bg-soft); }
.ascenseur-trow[hidden] { display: none; }
.ascenseur-trow__link { color: var(--color-text); font-weight: 600; }
.ascenseur-trow__link:hover { color: var(--color-primary); }
.ascenseur-trow__link.is-urgent:hover { color: #B91C1C; }
.ascenseur-trow__link.is-todo:hover { color: #B45309; }

@media (max-width: 720px) {
    .ascenseur-table { display: none; }       /* on cache le tableau sur mobile */
    .ascenseur-cards { display: grid; gap: 8px; }
}

@media (min-width: 721px) {
    .recents-section { display: none; }
}

/* ====== Fiche ascenseur — alignement maquette ====== */

/* Carte identité */
.identity-card .card-body { padding: 16px; }
.ascenseur-detail-card {
    overflow: hidden;
}
.ascenseur-detail-card__section {
    padding: 16px;
}
.ascenseur-detail-card__section + .ascenseur-detail-card__section {
    border-top: 1px solid var(--color-border-soft);
}
.ascenseur-detail-card .list-section {
    gap: 12px;
}

/* ====== Fiche ascenseur — boutons du haut + "Mon travail ici" ====== */
@media (max-width: 860px) {
    .ascenseur-detail-card .action-bar .btn { flex: 0 0 auto; }
    .ascenseur-detail-card .action-bar .btn-primary { flex: 1 1 auto; }
}
.ascenseur-detail-card .action-bar .action-bar__chantier {
    flex: 1 1 0;
}
.ascenseur-detail-card .action-bar .action-bar__intervention {
    flex: 1.35 1 0;
}
.ascenseur-detail-card .action-bar .action-bar__ticket,
.ascenseur-detail-card .action-bar .action-bar__urgence {
    min-height: 36px;
    padding: 7px 11px;
    font-size: 13px;
}
@media (min-width: 861px) {
    .ascenseur-detail-card .action-bar {
        max-width: 520px;
    }
}
@media (max-width: 520px) {
    .ascenseur-detail-card .action-bar {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .ascenseur-detail-card .action-bar .btn,
    .ascenseur-detail-card .action-bar .btn-primary,
    .ascenseur-detail-card .action-bar .action-bar__intervention,
    .ascenseur-detail-card .action-bar .action-bar__ticket,
    .ascenseur-detail-card .action-bar .action-bar__urgence {
        width: 100%;
        min-width: 0;
        flex: none;
    }
    .ascenseur-detail-card .action-bar .action-bar__chantier {
        width: 100%;
        min-width: 0;
        flex: none;
    }
}

/* Archivage réversible et corbeille documentaire */
.security-archive-action { margin: 0 0 0 auto; }
.security-archive-action button {
    display: grid;
    width: 28px;
    height: 28px;
    padding: 0;
    place-items: center;
    border: 1px solid #ead3d3;
    border-radius: 7px;
    background: #fff;
    color: #ad4646;
    cursor: pointer;
}
.security-archive-action button:hover { border-color: #dcaeae; background: #fff7f7; color: #942f2f; }
.security-archive-action svg { width: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-library-hero__actions,
.security-trash-hero__actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.security-library-version__actions {
    display: flex;
    gap: 10px;
    align-items: center;
    justify-content: space-between;
    margin-top: 9px;
}
.security-library-version__actions > span { color: #8792a4; font-size: 9.5px; }
.security-library-version__actions form { margin: 0; }
.security-library-version__actions button {
    min-height: 28px;
    padding: 0 9px;
    border: 1px solid #ead3d3;
    border-radius: 7px;
    background: #fff;
    color: #a54040;
    font: inherit;
    font-size: 14px;
    font-weight: 650;
    cursor: pointer;
}
.security-library-version__actions button:hover:not(:disabled) { background: #fff7f7; border-color: #dcaeae; }
.security-library-version__actions button:disabled { border-color: #e4e8ee; color: #a7aebb; cursor: not-allowed; }
.security-trash-page { width: min(100%, 1120px); margin-inline: auto; color: #172033; }
.security-trash-hero { align-items: flex-end; padding-bottom: 18px; border-bottom: 1px solid #e4e9f1; }
.security-trash-hero .meta { color: #8993a5; font-size: 10px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.security-trash-hero h1 { margin: 3px 0 2px; }
.security-trash-hero p:last-child { margin: 0; color: #748095; }
.security-trash-summary {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 14px;
    align-items: center;
    padding: 15px 18px;
    border: 1px solid #e0e6ef;
    border-radius: 13px;
    background: #fff;
}
.security-trash-summary > span { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 11px; background: #f1f4f8; color: #566277; font-size: 15px; font-weight: 750; }
.security-trash-summary > div { display: grid; gap: 2px; }
.security-trash-summary strong { font-size: 14px; }
.security-trash-summary small { color: #8791a2; font-size: 10.5px; }
.security-trash-sections { display: grid; gap: 14px; }
.security-trash-section,
.security-trash-empty { overflow: hidden; border: 1px solid #e0e6ef; border-radius: 14px; background: #fff; }
.security-trash-section > header { display: flex; align-items: center; justify-content: space-between; padding: 15px 18px; border-bottom: 1px solid #edf0f5; background: #fafbfd; }
.security-trash-section > header > div { display: grid; gap: 2px; }
.security-trash-section > header span { color: #8b95a6; font-size: 9px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.security-trash-section > header h2 { margin: 0; font-size: 15px; }
.security-trash-section > header > strong { display: grid; min-width: 28px; height: 28px; padding: 0 7px; place-items: center; border: 1px solid #e0e5ed; border-radius: 999px; color: #687489; font-size: 10px; }
.security-trash-row { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: 11px; align-items: center; min-height: 68px; padding: 11px 16px; }
.security-trash-row + .security-trash-row { border-top: 1px solid #edf0f5; }
.security-trash-row__icon { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 10px; background: #f0f3f7; color: #68758a; }
.security-trash-row__icon.is-link { background: #eef4ff; color: #2f70da; }
.security-trash-row__icon.is-library { background: #fff5df; color: #a86a00; }
.security-trash-row__icon svg { width: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.security-trash-row > div { display: grid; gap: 2px; min-width: 0; }
.security-trash-row > div > strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.security-trash-row > div > span { color: #7f899a; font-size: 10px; }
.security-trash-row > div > small { color: #a05d35; font-size: 9.5px; }
.security-trash-row form { margin: 0; }
.security-trash-row button { min-height: 32px; padding: 0 11px; border: 1px solid #bfd0eb; border-radius: 8px; background: #fff; color: #2d65bb; font: inherit; font-size: 14px; font-weight: 650; cursor: pointer; }
.security-trash-row button:hover { border-color: #84a9e3; background: #f5f8ff; }
.security-trash-empty { display: grid; min-height: 300px; padding: 32px; place-items: center; align-content: center; text-align: center; }
.security-trash-empty > span { display: grid; width: 50px; height: 50px; margin-bottom: 12px; place-items: center; border-radius: 14px; background: #f1f4f8; color: #738096; }
.security-trash-empty svg { width: 23px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.security-trash-empty strong { font-size: 14px; }
.security-trash-empty p { margin: 4px 0 0; color: #8b95a6; font-size: 11px; }
@media (max-width: 720px) {
    .security-library-hero__actions,
    .security-trash-hero__actions { width: 100%; }
    .security-library-hero__actions .btn,
    .security-trash-hero__actions .btn { flex: 1 1 auto; justify-content: center; }
    .security-trash-hero { align-items: flex-start; }
    .security-trash-row { grid-template-columns: 34px minmax(0, 1fr); }
    .security-trash-row form { grid-column: 2; }
    .security-trash-row button { width: 100%; }
}

/* Gestion — bibliothèque commune des documents de sécurité */
.security-library-page {
    width: min(100%, 1180px);
    margin-inline: auto;
    color: #172033;
}
.security-library-hero {
    align-items: flex-end;
    padding-bottom: 18px;
    border-bottom: 1px solid #e4e9f1;
}
.security-library-hero .page-header__body { max-width: 690px; }
.security-library-hero .meta,
.security-library-create > header > span,
.security-library-register > header span {
    color: #8993a5;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.security-library-hero h1 { margin: 3px 0 2px; }
.security-library-hero p:last-child { margin: 0; color: #748095; }
.security-library-layout {
    display: grid;
    grid-template-columns: minmax(360px, 440px) minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}
.security-library-create,
.security-library-register,
.security-library-preview {
    min-width: 0;
    overflow: hidden;
    border: 1px solid #e0e6ef;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(20, 32, 55, .025);
}
.security-library-create {
    position: sticky;
    top: 76px;
}
.security-library-create > header,
.security-library-register > header,
.security-library-preview > header {
    padding: 18px 20px 16px;
    border-bottom: 1px solid #edf0f5;
}
.security-library-create > header h2,
.security-library-register > header h2,
.security-library-preview > header h2 {
    margin: 3px 0 0;
    color: #151d2e;
    font-size: 17px;
    line-height: 1.3;
}
.security-library-create > header p {
    margin: 4px 0 0;
    color: #8791a2;
    font-size: 12px;
    line-height: 1.5;
}
.security-library-create form { padding: 18px 20px 20px; }
.security-library-types {
    display: grid;
    gap: 7px;
    min-width: 0;
    margin: 0 0 18px;
    padding: 0;
    border: 0;
}
.security-library-types legend,
.security-library-fields label {
    margin-bottom: 7px;
    color: #596579;
    font-size: 11px;
    font-weight: 700;
}
.security-library-type {
    position: relative;
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 18px;
    gap: 10px;
    align-items: center;
    min-height: 52px;
    padding: 7px 11px;
    border: 1px solid #e2e7ef;
    border-radius: 11px;
    background: #fff;
    cursor: pointer;
    transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.security-library-type:hover { border-color: #b9c9e6; }
.security-library-type:has(input:checked) {
    border-color: #75a5f5;
    background: #f7faff;
    box-shadow: 0 0 0 2px rgba(47, 116, 235, .08);
}
.security-library-type input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}
.security-library-type__icon {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 9px;
    background: #edf4ff;
    color: #2f74eb;
}
.security-library-type__icon svg,
.security-library-type__check,
.security-library-upload__icon svg,
.security-library-submit svg,
.security-library-group > header svg,
.security-library-version__file svg {
    width: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.security-library-type > span:nth-of-type(2) { display: grid; gap: 1px; min-width: 0; }
.security-library-type strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.security-library-type small { color: #929bac; font-size: 10px; }
.security-library-type__check { color: transparent; }
.security-library-type:has(input:checked) .security-library-type__check { color: #2f74eb; }
.security-library-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px 12px;
}
.security-library-fields > div { min-width: 0; }
.security-library-fields .field-full { grid-column: 1 / -1; }
.security-library-fields label { display: block; }
.security-library-fields input,
.security-library-fields textarea {
    width: 100%;
    border: 1px solid #dfe5ed;
    border-radius: 10px;
    background: #fff;
    color: #172033;
    font: inherit;
    font-size: 14px;
    outline: none;
    transition: border-color .16s ease, box-shadow .16s ease;
}
.security-library-fields input { min-height: 40px; padding: 0 11px; }
.security-library-fields textarea { min-height: 72px; padding: 10px 11px; resize: vertical; }
.security-library-fields input:focus,
.security-library-fields textarea:focus {
    border-color: #6c9ef1;
    box-shadow: 0 0 0 3px rgba(47, 116, 235, .1);
}
.security-library-fields ::placeholder { color: #a7afbc; }
.security-library-upload {
    position: relative;
    margin-top: 16px;
    border: 1px dashed #b9c5d6;
    border-radius: 11px;
    background: #f9fbfd;
    transition: border-color .16s ease, background-color .16s ease;
}
.security-library-upload.is-dragover,
.security-library-upload.has-file { border-color: #4b88ee; background: #f3f7ff; }
.security-library-upload input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
}
.security-library-upload label {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 11px;
    align-items: center;
    min-height: 72px;
    padding: 11px 14px;
    cursor: pointer;
}
.security-library-upload__icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    border: 1px solid #e3e8f0;
    border-radius: 10px;
    background: #fff;
    color: #2f74eb;
}
.security-library-upload label > span:last-child { display: grid; gap: 2px; min-width: 0; }
.security-library-upload strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.security-library-upload small { color: #8b95a6; font-size: 10px; }
.security-library-submit {
    width: 100%;
    min-height: 42px;
    margin-top: 14px;
    justify-content: center;
}
.security-library-submit svg { width: 15px; }
.security-library-side { display: grid; min-width: 0; }
.security-library-preview[hidden],
.security-library-register[hidden] { display: none !important; }
.security-library-register > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.security-library-register > header > div { min-width: 0; }
.security-library-register > header > strong {
    display: grid;
    min-width: 30px;
    height: 30px;
    padding: 0 8px;
    place-items: center;
    border: 1px solid #e1e6ee;
    border-radius: 999px;
    color: #657186;
    font-size: 11px;
}
.security-library-empty {
    display: grid;
    min-height: 330px;
    padding: 34px;
    place-items: center;
    align-content: center;
    text-align: center;
}
.security-library-empty > span {
    display: grid;
    width: 50px;
    height: 50px;
    margin-bottom: 12px;
    place-items: center;
    border-radius: 14px;
    background: #edf4ff;
    color: #2f74eb;
}
.security-library-empty svg { width: 24px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.security-library-empty strong { font-size: 14px; }
.security-library-empty p { margin: 4px 0 0; color: #8b95a6; font-size: 12px; }
.security-library-group + .security-library-group { border-top: 8px solid #f5f7fa; }
.security-library-group > header {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    gap: 9px;
    align-items: center;
    min-height: 48px;
    padding: 9px 18px;
    border-bottom: 1px solid #edf0f5;
    background: #fafbfd;
}
.security-library-group > header > span {
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    border-radius: 8px;
    background: #edf4ff;
    color: #2f74eb;
}
.security-library-group > header svg { width: 15px; }
.security-library-group > header strong { font-size: 14px; }
.security-library-group > header small { color: #98a1b0; font-size: 10px; }
.security-library-version { padding: 15px 18px; }
.security-library-version + .security-library-version { border-top: 1px solid #edf0f5; }
.security-library-version__main { display: grid; gap: 3px; }
.security-library-version__main > strong { font-size: 14px; line-height: 1.35; }
.security-library-version__main > span { color: #7f899a; font-size: 10.5px; }
.security-library-version__main p {
    display: -webkit-box;
    overflow: hidden;
    margin: 5px 0 0;
    color: #657186;
    font-size: 11px;
    line-height: 1.45;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
.security-library-version__file {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) auto;
    gap: 7px;
    align-items: center;
    min-height: 36px;
    margin-top: 11px;
    padding: 6px 9px;
    border: 1px solid #e7ebf1;
    border-radius: 9px;
    color: #2f74eb;
    text-decoration: none;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.security-library-version__file:hover {
    border-color: #98b8eb;
    background: #f7faff;
    box-shadow: 0 2px 8px rgba(35, 76, 142, .06);
}
.security-library-version__file svg { width: 15px; }
.security-library-version__file span {
    overflow: hidden;
    color: #435067;
    font-size: 14px;
    font-weight: 650;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.security-library-version__file small { color: #9aa3b1; font-size: 9px; white-space: nowrap; }
.security-library-preview > header {
    display: flex;
    gap: 14px;
    align-items: center;
    justify-content: space-between;
}
.security-library-preview > header > div { min-width: 0; }
.security-library-preview > header > div > span {
    color: #8993a5;
    font-size: 10px;
    font-weight: 750;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.security-library-preview > header button {
    display: inline-flex;
    gap: 6px;
    align-items: center;
    min-height: 34px;
    padding: 0 10px;
    border: 1px solid #dfe5ed;
    border-radius: 9px;
    background: #fff;
    color: #5d6a7f;
    font: inherit;
    font-size: 14px;
    font-weight: 650;
    cursor: pointer;
}
.security-library-preview > header button:hover { border-color: #9eb8e2; color: #2f67be; }
.security-library-preview > header button svg,
.security-library-preview__meta svg {
    width: 15px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.security-library-preview__meta {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    padding: 10px 14px;
    border-bottom: 1px solid #edf0f5;
    background: #fafbfd;
}
.security-library-preview__meta > span {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 9px;
    background: #edf4ff;
    color: #2f74eb;
}
.security-library-preview__meta > div { display: grid; gap: 1px; min-width: 0; }
.security-library-preview__meta strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.security-library-preview__meta small { color: #909aaa; font-size: 9.5px; }
.security-library-preview__canvas {
    display: grid;
    min-height: 560px;
    place-items: center;
    overflow: hidden;
    background: #e9edf3;
}
.security-library-preview__canvas iframe,
.security-library-preview__canvas img {
    display: block;
    width: 100%;
    height: 620px;
    border: 0;
    object-fit: contain;
    background: #fff;
}
.security-library-preview > footer {
    padding: 9px 14px;
    border-top: 1px solid #e5eaf1;
    color: #929cab;
    font-size: 9.5px;
    text-align: center;
}
@media (max-width: 900px) {
    .security-library-layout { grid-template-columns: minmax(0, 1fr); }
    .security-library-create { position: static; }
    .security-library-preview__canvas { min-height: 440px; }
    .security-library-preview__canvas iframe,
    .security-library-preview__canvas img { height: 520px; }
}
@media (max-width: 620px) {
    .security-library-page { padding-bottom: 24px; }
    .security-library-hero { align-items: flex-start; }
    .security-library-hero .btn { width: 100%; justify-content: center; }
    .security-library-create > header,
    .security-library-register > header,
    .security-library-preview > header,
    .security-library-create form { padding-right: 16px; padding-left: 16px; }
    .security-library-fields { grid-template-columns: minmax(0, 1fr); }
    .security-library-fields .field-full { grid-column: auto; }
    .security-library-upload label { grid-template-columns: 34px minmax(0, 1fr); padding: 10px 11px; }
    .security-library-upload__icon { width: 34px; height: 34px; }
    .security-library-preview__canvas { min-height: 360px; }
    .security-library-preview__canvas iframe,
    .security-library-preview__canvas img { height: 440px; }
}

/* Choix d’une version commune depuis l’encodage d’un ascenseur */
.security-library-picker {
    overflow: hidden;
    margin-top: 2px;
    border: 1px solid #dfe6f0;
    border-radius: 12px;
    background: #f8fafc;
}
.security-library-picker[hidden],
.security-library-picker__versions[hidden],
.security-library-choice[hidden],
.security-library-picker__empty[hidden],
.security-document-form [data-security-upload-only][hidden] { display: none !important; }
.security-library-picker.has-error { border-color: #d94c4c; box-shadow: 0 0 0 3px rgba(217, 76, 76, .08); }
.security-library-picker__head {
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px 10px;
}
.security-library-picker__head > div { display: grid; gap: 1px; }
.security-library-picker__head span {
    color: #8b95a6;
    font-size: 9px;
    font-weight: 750;
    letter-spacing: .1em;
    text-transform: uppercase;
}
.security-library-picker__head strong { color: #273247; font-size: 12px; }
.security-library-picker__head a { color: #2f74eb; font-size: 10px; font-weight: 650; text-decoration: none; }
.security-library-picker__head a:hover { text-decoration: underline; }
.security-library-picker__modes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    padding: 0 10px 10px;
}
.security-library-picker__modes button {
    display: flex;
    gap: 7px;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 7px 9px;
    border: 1px solid #dfe5ee;
    border-radius: 9px;
    background: #fff;
    color: #647086;
    font: inherit;
    font-size: 14px;
    font-weight: 650;
    cursor: pointer;
}
.security-library-picker__modes button:hover:not(:disabled) { border-color: #9ab9eb; color: #2f65ba; }
.security-library-picker__modes button.is-active {
    border-color: #6c9ef1;
    background: #edf4ff;
    color: #245fbf;
    box-shadow: 0 0 0 2px rgba(47, 116, 235, .06);
}
.security-library-picker__modes button:disabled { opacity: .48; cursor: not-allowed; }
.security-library-picker__modes svg {
    width: 15px;
    flex: 0 0 auto;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.security-library-picker__versions {
    display: grid;
    gap: 6px;
    padding: 10px;
    border-top: 1px solid #e4e9f1;
    background: #fff;
}
.security-library-choice {
    position: relative;
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr) auto;
    gap: 9px;
    align-items: center;
    min-height: 50px;
    padding: 8px 10px;
    border: 1px solid #e2e7ef;
    border-radius: 9px;
    cursor: pointer;
}
.security-library-choice:hover { border-color: #b5c7e4; }
.security-library-choice:has(input:checked) { border-color: #75a5f5; background: #f6f9ff; }
.security-library-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.security-library-choice__mark {
    display: grid;
    width: 22px;
    height: 22px;
    place-items: center;
    border: 1px solid #cdd5e1;
    border-radius: 999px;
    color: transparent;
}
.security-library-choice:has(input:checked) .security-library-choice__mark { border-color: #2f74eb; background: #2f74eb; color: #fff; }
.security-library-choice__mark svg { width: 13px; fill: none; stroke: currentColor; stroke-width: 2; }
.security-library-choice > span:nth-of-type(2) { display: grid; gap: 2px; min-width: 0; }
.security-library-choice strong { overflow: hidden; color: #273247; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.security-library-choice small { color: #8b95a6; font-size: 9.5px; }
.security-library-choice em {
    padding: 3px 6px;
    border-radius: 5px;
    background: #eef2f7;
    color: #7a8699;
    font-size: 8px;
    font-style: normal;
    font-weight: 750;
}
.security-library-picker__empty { margin: 0; padding: 7px 8px; color: #7e899b; font-size: 10.5px; line-height: 1.45; text-align: center; }

.security-regularization-source {
    display: grid;
    gap: 7px;
    padding: 13px;
    border: 1px solid #dce5f2;
    border-radius: 13px;
    background: linear-gradient(135deg, #f8fbff 0%, #fff 100%);
}
.security-regularization-source[hidden] { display: none !important; }
.security-regularization-source.has-error { border-color: #d94c4c; box-shadow: 0 0 0 3px rgba(217, 76, 76, .08); }
.security-regularization-source > label { margin: 0; color: #273247; font-size: 11.5px; font-weight: 720; }
.security-regularization-source > small { color: #748095; font-size: 10.5px; line-height: 1.4; }
.security-regularization-source__control {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 9px;
    min-height: 44px;
    padding: 0 12px;
    border: 1px solid #d6dfec;
    border-radius: 11px;
    background: #fff;
}
.security-regularization-source__control:focus-within { border-color: #2f74eb; box-shadow: 0 0 0 3px rgba(47, 116, 235, .09); }
.security-regularization-source__control svg { width: 20px; height: 20px; fill: none; stroke: #2f74eb; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-regularization-source__control > svg:last-child { width: 15px; height: 15px; color: #7e899b; stroke: currentColor; pointer-events: none; }
.security-regularization-source__control select { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: #273247; font: inherit; font-size: 14px; font-weight: 650; appearance: none; }
.security-regularization-source__empty { display: flex; align-items: center; gap: 10px; padding: 11px 12px; border: 1px solid #f0d4a7; border-radius: 11px; background: #fff9ed; color: #87590c; }
.security-regularization-source__empty svg { flex: 0 0 auto; width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-regularization-source__empty span { display: grid; gap: 2px; }
.security-regularization-source__empty strong { font-size: 11.5px; }
.security-regularization-source__empty small { font-size: 10px; line-height: 1.35; }
.security-document-row__source { margin: 3px 0 0; color: #2f65ba; font-size: 10.5px; font-weight: 650; }
.security-document-folder-head--library { border-left: 3px solid #2f74eb; background: #f2f6fd; }
.security-document-row.is-library { background: #fbfdff; }
.security-status--library { background: #eaf2ff; color: #2a65c4; }
@media (max-width: 620px) {
    .security-library-picker__head { align-items: flex-start; }
    .security-library-picker__modes { grid-template-columns: minmax(0, 1fr); }
    .security-library-picker__modes button { justify-content: flex-start; padding-inline: 11px; }
}

.ascenseur-detail-card .dashboard-card .list-row__icon {
    display: inline-flex;
    width: 26px;
    height: 26px;
    flex: 0 0 auto;
    background: transparent;
    border-radius: 0;
}
.ascenseur-detail-card .dashboard-card .list-row__icon svg { width: 22px; height: 22px; }
.list-row__icon--step { color: var(--color-primary); }
.list-row__icon--task { color: var(--color-text-light); }
.list-row__icon--urgent { color: var(--color-danger); }
.ascenseur-detail-card .dashboard-card .list-row__title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.identity-card__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.identity-card__title { margin: 0; font-size: 18px; font-weight: 700; letter-spacing: -0.01em; overflow-wrap: anywhere; }
.identity-card__top .badge { flex: 0 0 auto; margin-top: 3px; }
.identity-card__address { margin: 6px 0 0; color: var(--color-text-muted); overflow-wrap: anywhere; }
.identity-card__meta { margin: 4px 0 0; color: var(--color-text-light); font-size: 13px; }
.identity-card__phone { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.identity-card__phone svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.identity-card__phone strong { color: var(--color-text); font-size: 12.5px; font-weight: 650; }

/* Bandeau urgence (carte rouge cliquable) */
.alert-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 14px;
    border-radius: var(--radius-card);
    background: var(--color-danger-soft);
    color: #991B1B;
}
.alert-card:hover { background: #FBE0E0; }
div.alert-card:hover { background: var(--color-danger-soft); }
.alert-card__icon, .alert-card__chev { flex: 0 0 auto; display: inline-flex; color: var(--color-danger); }
.alert-card__icon svg { width: 22px; height: 22px; }
.alert-card__chev svg { width: 18px; height: 18px; }
.alert-card svg { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.alert-card__text { flex: 1; min-width: 0; font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }

/* Fiche technique condensée */
.fiche-card .card-body { padding: 14px 16px; }
.fiche-card__inline {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--color-border-soft);
}
.fiche-card__label { margin: 0; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--color-text-light); }
.fiche-card__value { margin: 4px 0 0; font-size: 15px; font-weight: 500; color: var(--color-text); overflow-wrap: anywhere; }

/* Historique en liste simple, sans carte imbriquée */
.timeline-card {
    margin-inline: -16px;
    padding: 0;
    border: 0;
    border-radius: 0;
    overflow: visible;
}
.timeline-entry {
    position: relative;
    display: block;
    padding: 14px 18px;
    border-top: 1px solid var(--color-border-soft);
    color: var(--color-text);
}
a.timeline-entry { padding-right: 46px; }
.timeline-entry:first-child,
.timeline-entry.is-first { border-top: 0; }
.timeline-entry[hidden] { display: none; }
a.timeline-entry:hover, div.timeline-entry[data-card-href]:hover, .timeline-entry--document:hover { background: var(--color-bg-soft); }
.timeline-entry__head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; font-size: 13px; }
.timeline-entry__date { color: var(--color-text-light); }
.timeline-entry__sep { color: var(--color-text-light); }
.timeline-entry__type { font-weight: 600; }
.timeline-entry__privacy-icon {
    display: inline-flex;
    width: 14px;
    height: 14px;
    align-items: center;
    justify-content: center;
    align-self: center;
    margin-left: -2px;
    color: var(--color-text-light);
}
.timeline-entry__privacy-icon svg {
    width: 12px;
    height: 12px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.timeline-entry__filter-label {
    display: inline-flex;
    align-items: center;
    min-height: 20px;
    padding: 2px 8px;
    border: 1px solid rgba(37, 99, 235, .18);
    border-radius: 999px;
    background: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 12px;
    font-weight: 700;
    line-height: 1.2;
}
.timeline-entry__text { display: block; margin-top: 3px; font-size: 15px; font-weight: 500; overflow-wrap: anywhere; white-space: pre-wrap; }
.work-completion-note {
    display: block;
    margin-top: 8px;
    padding: 8px 12px;
    border-left: 2px solid #CBD5E1;
    border-radius: 0 8px 8px 0;
    background: #F8FAFC;
    color: #64748B;
    font-size: 12.5px;
    font-weight: 400;
    line-height: 1.45;
    overflow-wrap: anywhere;
}
.work-completion-note[hidden] { display: none; }
.document-remarks-resolution { display: flex; align-items: center; gap: 10px; padding: 12px; border: 1px solid #E2E8F0; border-radius: 8px; font-size: 13px; cursor: pointer; }
.document-remarks-resolution input[type="checkbox"] { flex: 0 0 17px; width: 17px; height: 17px; min-height: 17px; margin: 0; padding: 0; accent-color: #0F766E; }
.timeline-entry.is-admin-menu-open { z-index:50; }
.timeline-entry__admin-menu { position:absolute; z-index:1; top:9px; right:11px; }
.timeline-entry__admin-menu summary { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 7px; color: var(--color-text-light); cursor: pointer; list-style: none; }
.timeline-entry__admin-menu summary::-webkit-details-marker { display: none; }
.timeline-entry__admin-menu summary:hover, .timeline-entry__admin-menu[open] summary { background:var(--color-bg-soft); color:var(--color-text-muted); }
.timeline-entry__admin-menu summary:focus-visible { outline:2px solid rgba(37,99,235,.24); outline-offset:1px; }
.timeline-entry__admin-dots { display:flex; align-items:center; justify-content:center; gap:3px; }
.timeline-entry__admin-dots i { display:block; width:3px; height:3px; border-radius:50%; background:currentColor; }
.timeline-entry__admin-popover { position:absolute; z-index:2; top:31px; right:0; min-width:118px; overflow:hidden; padding:4px; border:1px solid var(--color-border); border-radius:9px; background:var(--color-bg); box-shadow:0 12px 28px rgba(15,23,42,.14), 0 2px 8px rgba(15,23,42,.06); }
.timeline-entry__admin-popover form { margin:0; }
.timeline-entry__admin-popover a, .timeline-entry__admin-popover button { display:flex; align-items:center; width:100%; min-height:32px; padding:6px 9px; border:0; border-radius:6px; background:transparent; color:var(--color-text); cursor:pointer; font:inherit; font-size:13px; font-weight:500; line-height:1.25; text-align:left; }
.timeline-entry__admin-popover a:hover, .timeline-entry__admin-popover button:hover { background: var(--color-bg-soft); }
.timeline-entry__admin-popover button { color: var(--color-danger); }
.timeline-entry:has(.timeline-entry__admin-menu) { padding-right:46px; }
.timeline-entry__status { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.timeline-entry__tech { color: var(--color-text-light); font-size: 13px; font-weight: 500; }
.work-line__meta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.timeline-entry__chev {
    position: absolute;
    right: 14px;
    top: 50%;
    display: inline-flex;
    color: var(--color-muted);
    transform: translateY(-50%);
}
.timeline-entry__chev svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Couleurs des types (cohérentes avec les badges de l'app) */
.type--urgence  { color: var(--color-danger); }
.type--afaire   { color: var(--color-warning); }
.type--interne  { color: var(--color-success); }
.type--securite { color: var(--color-primary); }
.type--syndic   { color: #7C3AED; }
.type--pending  { color: #7C3AED; }
.type--chantier { color: var(--color-warning); }
.type--facture  { color: var(--color-danger); }
.type--offre    { color: var(--color-success); }
.timeline-entry--document {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 20px;
    grid-template-areas:
        "head head chev"
        "icon text chev";
    gap: 2px 10px;
    align-items: center;
    padding-right: 18px;
}
.timeline-entry--document .timeline-entry__head {
    grid-area: head;
    min-width: 0;
}
.timeline-entry--document .timeline-entry__text {
    grid-area: text;
    margin-top: 0;
}
.timeline-entry--document .timeline-entry__chev {
    grid-area: chev;
    position: static;
    transform: none;
    align-self: center;
}
.timeline-entry__docicon {
    grid-area: icon;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 0;
    color: var(--color-primary);
    background: transparent;
}
.timeline-entry__docicon:hover {
    color: var(--color-primary-hover);
}
.timeline-entry--document:hover .timeline-entry__docicon {
    color: var(--color-primary-hover);
}
.timeline-entry__docicon svg {
    width: 24px;
    height: 24px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.timeline-entry__body {
    min-width: 0;
    display: block;
}
.timeline-entry__mini-badge {
    margin-left: auto;
    padding: 2px 7px;
    border-radius: var(--radius-pill);
    background: var(--color-bg-soft);
    color: var(--color-text-light);
    font-size: 11px;
    font-weight: 650;
    white-space: nowrap;
}
.timeline-entry__mini-badge--status { margin-left: 0; }
.timeline-entry__mini-badge--avenir { background: var(--color-bg-soft); color: var(--color-text-light); }
.timeline-entry__mini-badge--encours { background: var(--color-primary-soft); color: #1E40AF; }
.timeline-entry__mini-badge--retard { background: var(--color-danger-soft); color: #991B1B; }
.timeline-entry__mini-badge--termine { background: var(--color-success-soft); color: #166534; }

.sheet-item--stacked {
    align-items: center;
}
.sheet-item--stacked .sheet-item__body {
    min-width: 0;
    display: grid;
    gap: 2px;
}
.sheet-item__hint--top {
    justify-self: start;
    font-size: 11px;
}

.finance-building-link {
    color: var(--color-primary);
    font-weight: 600;
}
a.finance-building-link {
    display: inline-grid;
    gap: 2px;
}
.finance-building-link:hover { color: var(--color-primary-hover); text-decoration: underline; }
.finance-rec[data-card-href]:hover {
    border-color: var(--color-border);
    background: var(--color-bg-soft);
}


/* ====== Chantiers — kanban PC + liste filtrable mobile ====== */

/* Toolbar : recherche + bouton Tâches du jour */
.chantiers-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: center;
    margin-bottom: 6px;
}
.chantiers-toolbar .search-field {
    min-width: 0;
}
.chantiers-toolbar .search-field input {
    display: block;
    width: 100%;
    min-height: 50px;
    box-sizing: border-box;
    padding-left: 44px;
}
.chantiers-toolbar__cta { margin: 0; justify-self: end; }
.chantiers-toolbar__cta .btn {
    width: auto;
    min-height: 50px;
    min-width: 0;
    padding: 9px 12px;
    font-size: 14px;
    white-space: nowrap;
}

@media (max-width: 600px) {
    .chantiers-toolbar { grid-template-columns: minmax(0, 1fr) auto; }
    .chantiers-toolbar__cta { justify-self: end; }
    .chantiers-toolbar__cta .btn {
        width: 54px;
        min-height: 50px;
        padding: 0;
        font-size: 0;
    }
    .chantiers-toolbar__cta .btn > span:not(.btn__icon) { display: none; }
    .chantiers-toolbar__cta .btn .btn__icon svg { width: 24px; height: 24px; }
}

/* Les filtres restent accessibles sur desktop comme sur mobile. */
.chantiers-chips { display: flex; flex-wrap: wrap; }
@media (max-width: 860px) { .chantiers-chips { flex-wrap: nowrap; } }

/* Kanban board */
#chantiers-content { display: grid; gap: 18px; }
.chantiers-board { display: grid; gap: 14px; grid-template-columns: 1fr; }

@media (min-width: 861px) {
    .chantiers-board {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: start;
        gap: 16px;
    }
}

/* Colonnes (PC) */
.board__col {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    background: var(--color-bg-soft);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
}
.board__col-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.board__col-title { margin: 0; font-size: 14px; font-weight: 600; color: var(--color-text-muted); }
.board__col-count { color: var(--color-text-light); font-size: 13px; font-weight: 500; }
.board__col-body { display: flex; flex-direction: column; gap: 10px; }
.board__empty { padding: 14px; font-size: 13px; }
.board__col[hidden] { display: none; }

/* Mobile : on enlève le chrome des colonnes de chantier. */
@media (max-width: 860px) {
    .chantiers-board { gap: 0; }
    .board__col {
        padding: 0;
        background: transparent;
        border: 0;
        gap: 8px;
    }
    .board__col-body { gap: 8px; }
    .board__col[data-col="termine"] { margin-top: 8px; }

    /* Pas d'entête pour En cours / Terminé sur mobile (les chips font le filtre) */
    .board__col[data-col="encours"] .board__col-head,
    .board__col[data-col="termine"] .board__col-head { display: none; }

}

/* Cartes chantier */
.chantier-card {
    display: block;
    padding: 12px 14px;
    background: var(--color-bg);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    color: var(--color-text);
    transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}
a.chantier-card:hover { border-color: var(--color-border); box-shadow: 0 4px 12px rgba(15,23,42,.07); }
.chantier-card[hidden] { display: none; }

.chantier-card__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.chantier-card__head { min-width: 0; flex: 1; }
.chantier-card__title { font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.chantier-card__sub { margin-top: 2px; font-size: 13px; color: var(--color-text-light); overflow-wrap: anywhere; }
.chantier-card__top > .badge { flex: 0 0 auto; margin-top: 2px; }

/* Barre de progression */
.chantier-progress {
    margin-top: 10px;
    height: 4px;
    background: var(--color-border-soft);
    border-radius: var(--radius-pill);
    overflow: hidden;
}
.chantier-progress__fill {
    height: 100%;
    background: var(--color-primary);
    border-radius: inherit;
    transition: width .3s ease;
}
.chantier-progress__fill--retard { background: var(--color-danger); }
.chantier-progress__fill--done   { background: var(--color-success); }

/* Pied : compteur termes + initiale technicien */
.chantier-card__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 8px;
    font-size: 13px;
    color: var(--color-text-light);
}
.chantier-card__metric { font-weight: 500; }
.chantier-card__tech {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px; height: 26px;
    border-radius: 50%;
    background: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 12px;
    font-weight: 700;
}

/* Accent retard */
.chantier-card--retard { border-left: 3px solid var(--color-danger); }

/* Contrat à préparer affiché sur le chantier de son ascenseur */
.chantier-contract { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; margin: 12px 0; padding: 12px 14px; border: 1px solid #FCD9A8; border-radius: 8px; background: #FFF8ED; }
.chantier-contract--late { border-color: #F5B5B5; background: #FFF4F4; }
.chantier-contract__body { display: grid; gap: 4px; min-width: 0; }
.chantier-contract__body .badge { justify-self: start; }
.chantier-contract__date { margin: 0; font-size: 15px; }
.chantier-contract__late { color: var(--color-danger); font-weight: 600; }
.chantier-contract__meta { margin: 0; color: var(--color-text-light); font-size: 13px; }
.chantier-contract .btn { min-height: 44px; }
/* ====== Dashboard — alignement maquette ====== */

/* Header : nom + sous-titre, CTA à droite */
.dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    padding-bottom: 4px;
}
.dashboard-header__body { min-width: 0; flex: 1 1 280px; }
.dashboard-header h1 { margin: 0 0 4px; font-size: clamp(1.4rem, 2.2vw, 1.8rem); }
.dashboard-subtitle { margin: 0; color: var(--color-text-muted); font-size: 14px; }
.dashboard-header__cta { margin: 0; flex: 0 0 auto; }

/* KPI : label au-dessus, valeur en gros en-dessous */
.kpi { padding: 16px 16px; padding-right: 36px; gap: 4px; }
.kpi__label {
    font-size: 12px;
    color: var(--color-text-light);
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
}
.kpi__value { font-size: 24px; font-weight: 700; line-height: 1.1; }
.kpi--success .kpi__value { color: var(--color-success); }
.kpi--warning .kpi__value { color: var(--color-warning); }

/* En-tête de carte avec icône tintée à gauche */
.dashboard .card-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px 6px;
    border-bottom: 0;
}
.dashboard .card-title { flex: 1; min-width: 0; font-size: 15px; font-weight: 700; }
.dashboard .card-header .badge {
    background: transparent;
    border: 1px solid var(--color-border);
    color: var(--color-text-light);
    font-weight: 600;
    padding: 1px 9px;
}

.card-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px; height: 30px;
    border-radius: 8px;
    background: var(--color-bg-soft);
    color: var(--color-text-light);
    flex: 0 0 auto;
}
.card-icon svg { width: 17px; height: 17px; }
.card--danger  .card-icon { background: var(--color-danger-soft);  color: var(--color-danger); }
.card--warning .card-icon { background: var(--color-warning-soft); color: var(--color-warning); }
.card--primary .card-icon { background: var(--color-primary-soft); color: var(--color-primary); }

/* Lignes compactes : nom à gauche, valeur/CTA à droite */
.dashboard-card { padding: 4px 16px 14px; }
.dash-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 32px;
    padding: 4px 0;
}
.dash-row + .dash-row { border-top: 1px solid var(--color-border-soft); }
.dash-row__name {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.dash-row__value {
    flex: 0 0 auto;
    font-size: 13px;
    font-weight: 500;
    color: var(--color-text-light);
    font-variant-numeric: tabular-nums;
}
.dash-row__form { margin: 0; flex: 0 0 auto; }

/* Bouton "Prêt" compact inline */
.btn-prep--xs {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 4px 12px;
    border: 0;
    border-radius: var(--radius-btn);
    background: var(--color-success-soft);
    color: #166534;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 140ms ease;
}
.btn-prep--xs:hover { background: #D8F1E1; }

/* Tuiles 2-up pour compteurs secondaires (Mes tâches / À faire) */
.tile-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.tile {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding: 14px;
    background: var(--color-bg);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
    color: var(--color-text);
    transition: background-color 140ms ease;
}
.tile:hover { background: var(--color-bg-soft); }
.tile__icon { color: var(--color-text-light); margin-bottom: 2px; }
.tile__icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.tile__label { font-size: 14px; color: var(--color-text-light); font-weight: 500; }
.tile__value { font-size: 22px; font-weight: 700; line-height: 1; color: var(--color-text); }

/* Boutons d'action en bas du dashboard mobile (Ouvrir ascenseur / Planning) */
.dashboard-actions {
    display: flex;
    gap: 8px;
    margin-top: 6px;
}
.dashboard-actions .btn { flex: 1; min-width: 0; min-height: 50px; }
@media (min-width: 861px) {
    .dashboard-actions { justify-content: flex-start; }
    .dashboard-actions .btn { flex: 0 0 auto; min-width: 180px; }
}

.dashboard .dash-card,
.dashboard .tile,
.dashboard .module-tile {
    border-radius: var(--radius-card);
    transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}
.dashboard .dash-card.card--danger,
.dashboard .dash-card.card--warning,
.dashboard .dash-card.card--primary {
    border-radius: var(--radius-card);
}
.dashboard .dash-card:hover,
.dashboard .tile:hover,
.dashboard .module-tile:hover {
    border-color: var(--color-border);
    box-shadow: 0 4px 12px rgba(15,23,42,.07);
    transform: translateY(-1px);
}
.dashboard .dashboard-grid,
.dashboard .tile-grid,
.dashboard .module-grid {
    gap: 14px;
}
.dashboard .dash-card .card-header {
    padding: 12px 14px 6px;
}
.dashboard .dash-card .dashboard-card {
    padding: 4px 14px 14px;
}
.dashboard .dash-row {
    min-height: 30px;
    padding: 5px 0;
}
.dashboard .kpi {
    border-radius: var(--radius-card);
}
.dashboard:not(.dashboard--wide) .dashboard-actions {
    gap: 10px;
    margin-top: 0;
}

@media (min-width: 861px) {
    .dashboard:not(.dashboard--wide) {
        max-width: 980px;
    }
    .dashboard .module-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ====== Dashboard — finition UI/UX ====== */
.dash-card__header { cursor: pointer; color: var(--color-text); }
.dash-card__header:hover { background: var(--color-bg-soft); }
.dash-card__header:hover .card-title { color: var(--color-primary); }
.dash-card__chev {
    flex: 0 0 auto;
    display: inline-flex;
    color: var(--color-muted);
    transition: transform .14s ease, color .14s ease;
}
.dash-card__chev svg { width: 18px; height: 18px; }
.dash-card__header:hover .dash-card__chev { color: var(--color-primary); transform: translateX(2px); }

.dashboard .dash-card .card-header .badge { font-weight: 700; min-width: 24px; text-align: center; }
.dashboard .dash-card.card--danger  .card-header .badge { background: var(--color-danger-soft); border-color: transparent; color: #991B1B; }
.dashboard .dash-card.card--warning .card-header .badge { background: var(--color-warning-soft); border-color: transparent; color: #92400E; }
.dashboard .dash-card.card--primary .card-header .badge { background: var(--color-primary-soft); border-color: transparent; color: #1E40AF; }

.dashboard .dash-card .card-header { padding: 12px 14px 8px; }
.dashboard .dash-card .dashboard-card { padding: 0 14px 12px; }
.dashboard .dash-row { min-height: 0; padding: 8px 0; gap: 12px; }
.dashboard .dash-row + .dash-row { border-top: 1px solid var(--color-border-soft); }
.dashboard .dash-row__name { font-size: 14px; }
.dashboard .dash-row__value { font-size: 13px; white-space: nowrap; }
.dashboard-header__search {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-primary);
    transition: transform 140ms ease, color 140ms ease;
}
.dashboard-header__search:hover {
    color: var(--color-primary);
    transform: translateY(-1px);
}
.dashboard-header__search svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.dashboard-work-section { display: grid; gap: 10px; }
.dashboard-work-grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
.dashboard-work-card {
    color: var(--color-text);
    text-decoration: none;
    padding: 11px 12px;
    transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}
.dashboard-work-card.card--danger { border-left-color: var(--color-danger); }
.dashboard-work-card.card--warning { border-left-color: var(--color-warning); }
.dashboard-work-card.card--primary { border-left-color: var(--color-primary); }
.dashboard-work-card:hover {
    border-color: var(--color-border);
    box-shadow: 0 4px 12px rgba(15,23,42,.07);
    transform: translateY(-1px);
}
.dashboard-work-card__top,
.dashboard-work-card__foot,
.dashboard-work-card__dates {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}
.dashboard-work-card__main {
    min-width: 0;
    display: grid;
    gap: 4px;
}
.dashboard-work-card__dates {
    justify-content: flex-start;
    flex-wrap: wrap;
    font-size: 12px;
    font-weight: 600;
    color: var(--color-text-light);
}
.dashboard-state {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
}
.dashboard-state--stack {
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}
.dashboard-state__edit {
    width: 28px;
    height: 28px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--color-primary);
    cursor: pointer;
}
.dashboard-state__edit:hover { background: var(--color-primary-soft); }
.dashboard-state__edit:disabled { opacity: .55; cursor: not-allowed; }
.dashboard-state__edit svg {
    width: 15px;
    height: 15px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.readonly-facts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 18px;
}
.readonly-fact {
    display: grid;
    gap: 3px;
}
.readonly-fact__label {
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 650;
}
.readonly-fact__value {
    color: var(--color-text);
    font-size: 14px;
    font-weight: 600;
    overflow-wrap: anywhere;
}
.demande-edit-textarea {
    min-height: 84px;
    resize: none;
    overflow: hidden;
}
.demande-create-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.demande-create-grid label { margin-bottom: 4px; font-size: 13px; }
.demande-create-grid input,
.demande-create-grid select,
.demande-create-grid textarea {
    min-height: 38px;
    padding: 8px 10px;
}
.demande-create-grid textarea.demande-edit-textarea { min-height: 84px; }

/* Publication immédiate depuis un ticket clôturé — reprend les blocs de Nouveau. */
.completed-publication {
    display: grid;
    gap: 18px;
    padding-top: 4px;
}
.completed-publication__date,
.completed-publication__filter { max-width: 360px; }
.completed-publication__fieldset legend {
    margin-bottom: 9px;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 650;
}
.completed-publication .completed-publication__destinations {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    gap: 14px;
}
.completed-publication .completed-publication__option {
    display: grid;
    gap: 14px;
    align-items: stretch;
    width: 100%;
    padding: 18px 20px;
    cursor: default;
    border-radius: 12px;
}
.completed-publication .completed-publication__header {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    margin: 0;
    cursor: pointer;
}
.completed-publication .nq-dest__check {
    width: 17px;
    height: 17px;
    border-width: 1.5px;
    border-radius: 5px;
}
.completed-publication .nq-dest__check svg { width: 10px; height: 10px; }
.completed-publication__preserve {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0;
    cursor: pointer;
}
.completed-publication__preserve > input[type="checkbox"] {
    appearance: auto;
    width: 16px;
    height: 16px;
    min-height: 0;
    flex: 0 0 16px;
    margin: 2px 0 0;
    padding: 0;
    border-radius: 4px;
}
.completed-publication__preserve > span { display: grid; gap: 2px; min-width: 0; }
.completed-publication__preserve strong { font-size: 13.5px; line-height: 1.35; }
.completed-publication__preserve small { color: var(--color-text-light); font-size: 12px; line-height: 1.4; }
.completed-publication__header .nq-dest__body { gap: 3px; }
.completed-publication__header .nq-dest__name {
    font-size: 15px;
    line-height: 1.3;
}
.completed-publication__header .nq-dest__hint {
    font-size: 12.5px;
    line-height: 1.4;
}
.completed-publication .completed-publication__comment {
    display: block;
    width: 100%;
    min-height: 48px;
    margin: 0;
    padding: 10px 12px;
    resize: vertical;
    line-height: 1.45;
}
.completed-publication .completed-publication__comment:disabled {
    background: var(--color-bg-soft);
    color: var(--color-text-light);
    cursor: not-allowed;
    opacity: .7;
}
.completed-publication__ticket-fields {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) repeat(2, minmax(0, 1fr));
    gap: 10px;
    align-items: end;
    padding-top: 14px;
    border-top: 1px solid var(--color-border-soft);
}
.completed-publication__ticket-fields label {
    margin-bottom: 5px;
    color: var(--color-text-light);
    font-size: 11.5px;
    font-weight: 650;
}
.completed-publication__ticket-fields.is-disabled { opacity: .55; }
.completed-publication__ticket-fields.is-disabled input,
.completed-publication__ticket-fields.is-disabled select {
    background: var(--color-bg-soft);
    color: var(--color-text-light);
    cursor: not-allowed;
}
.completed-publication__hint {
    margin: 0;
    padding: 0;
    background: transparent;
    color: var(--color-warning);
    font-size: 12.5px;
}
.completed-publication__hint[hidden] { display: none; }
.completed-publication-source {
    min-height: 86px;
    resize: none;
    background: var(--color-bg-soft);
    color: var(--color-text-muted);
}
.publication-audit {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin: 0;
    color: var(--color-text-light);
    font-size: 12.5px;
}
@media (max-width: 720px) {
    .completed-publication .completed-publication__destinations,
    .completed-publication__ticket-fields { grid-template-columns: 1fr; }
    .completed-publication .completed-publication__option { padding: 16px; }
    .completed-publication__date,
    .completed-publication__filter { max-width: none; }
}
@media (max-width: 720px) {
    .demande-create-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .demande-create-grid textarea.demande-edit-textarea { min-height: 84px; }
}
.billing-confirm-header {
    align-items: flex-start;
}
.billing-confirm-title {
    min-width: 0;
    display: grid;
    gap: 8px;
}
.billing-confirm-title .task__context {
    margin-top: 0;
}
.billing-comment-textarea {
    min-height: 84px;
}
.demande-detail-card-header.pierre-send-card-header {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
}
.demande-state-line.pierre-send-state-line {
    justify-self: start;
    align-items: center;
    justify-content: flex-start;
}
.pierre-send-dates {
    gap: 10px;
}
.pierre-send-dates .readonly-fact {
    padding: 0;
}
.pierre-send-dates .readonly-fact__label {
    font-size: 11px;
}
.pierre-send-dates .readonly-fact__value {
    font-size: 13px;
    font-weight: 550;
}
.demande-detail-header {
    align-items: flex-start;
}
.demande-detail-header .page-header__body {
    width: 100%;
}
.demande-detail-subline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 4px;
}
.demande-ascenseur-title {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0;
    color: var(--color-primary);
    font-size: 15px;
    font-weight: 600;
}
p.demande-ascenseur-title {
    color: var(--color-text-light);
}
.demande-ascenseur-title svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
a.demande-ascenseur-title:hover {
    text-decoration: underline;
}
.demande-card-heading {
    min-width: 0;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    flex: 1 1 auto;
}
.demande-card-date {
    color: var(--color-text-light);
    font-size: 13px;
    font-weight: 650;
    white-space: nowrap;
}
.demande-card-title--danger {
    color: var(--color-danger);
}
.demande-detail-card-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 14px 16px;
}
.demande-detail-card-header .card-title {
    min-width: 0;
}
.demande-detail-card-header .demande-card-date {
    justify-self: end;
}
.demande-state-line--detail {
    grid-column: 1 / -1;
    justify-self: center;
    align-items: center;
}
.demande-state-line {
    display: inline-flex;
    align-items: flex-end;
    justify-content: flex-end;
    gap: 8px;
    flex: 0 0 auto;
}
.demande-state-line.demande-state-line--detail {
    align-items: center;
    justify-content: center;
    width: auto;
    max-width: 100%;
    flex-wrap: wrap;
}
.demande-state-segmented {
    width: min(100%, 360px);
}
.demande-state-line--detail .demande-state-segmented {
    flex: 0 1 360px;
}
.demande-state-segmented .segmented__btn {
    min-width: 0;
    padding-inline: 10px;
    white-space: nowrap;
}
@media (max-width: 720px) {
    .demande-state-line.demande-state-line--detail {
        justify-content: flex-start;
        width: 100%;
    }
    .demande-state-line--detail .demande-state-segmented {
        flex-basis: auto;
        width: 100%;
    }
    .demande-state-segmented .segmented__btn {
        padding-inline: 10px;
        font-size: 13px;
    }
}
.demandes-table .demande-state-line {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
}
.demande-assignee {
    color: var(--color-text-light);
    font-size: 13px;
    font-weight: 650;
    white-space: nowrap;
}
.demande-assignee--with-icon {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.demande-assignee-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 15px;
    height: 15px;
    flex: 0 0 auto;
    color: var(--color-primary);
}
.demande-assignee-icon svg {
    width: 15px;
    height: 15px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.demande-date-tech {
    margin-top: 3px;
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 650;
    white-space: nowrap;
}
.demande-close-link {
    display: inline-flex;
    align-items: center;
    margin: 0 0 0 auto;
    font-size: 15px;
    font-weight: 650;
}
.demande-close-link--danger { color: var(--color-danger); }
.demande-close-link--success { color: var(--color-success); }
.demande-close-link:hover { text-decoration: underline; }
.demande-save-then-send {
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--color-primary);
    font: inherit;
    cursor: pointer;
}
.demande-save-then-send.demande-close-link--danger { color: var(--color-danger); }
.demande-save-then-send.demande-close-link--success { color: var(--color-success); }
.demande-edit-actions { row-gap: 8px; }
.demande-save-state {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-right: auto;
    padding: 7px 10px;
    border-radius: var(--radius-pill);
    background: var(--color-warning-soft);
    color: #854d0e;
    font-size: 12px;
    font-weight: 700;
}
.demande-save-state[hidden] { display: none; }
.demande-save-state > span {
    width: 7px;
    height: 7px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--color-warning);
}
.demande-edit-actions .btn-primary.is-pending-save {
    border-color: var(--color-warning);
    background: var(--color-warning);
    color: #fff;
}
.demande-unsaved-actions {
    display: grid;
    gap: 8px;
}
.demande-unsaved-actions .btn { width: 100%; }

@media (max-width: 860px) {
    .readonly-facts { grid-template-columns: 1fr; }
    .readonly-facts.pierre-send-dates { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.form-grid .readonly-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dashboard-step-lines {
    display: grid;
    gap: 7px;
    margin-top: 8px;
}
.dashboard-step-line {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 0 0;
    border-top: 1px solid var(--color-border-soft);
}
.dashboard-step-line__main {
    min-width: 0;
    display: grid;
    gap: 3px;
}
.dashboard-step-line__title {
    font-size: 14px;
    font-weight: 650;
    color: var(--color-text);
    overflow-wrap: anywhere;
}
.dashboard-work-card .dash-card__chev svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* === Planning technicien : agenda mobile === */
.tech-planning-shell {
    width: 100%;
    max-width: 560px;
    margin: 0 auto;
    display: grid;
    gap: 16px;
}
.tech-planning-head {
    display: grid;
    gap: 4px;
}
.tech-planning-head h1 {
    margin: 0;
    color: var(--color-text);
    font-size: 28px;
    line-height: 1.12;
}
.tech-planning-summary {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--color-text-light);
    font-size: 14px;
    font-weight: 600;
}
.tech-planning-summary__danger { color: var(--color-danger); }
.tech-planning-filters {
    display: flex;
    align-items: center;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 2px;
}
.tech-planning-filter {
    min-height: 36px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-pill);
    background: var(--color-bg);
    color: var(--color-text-muted);
    padding: 0 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
}
.tech-planning-filter.is-active {
    border-color: var(--color-primary);
    background: var(--color-primary-soft);
    color: var(--color-primary);
}
.tech-planning-filter--icon {
    width: 36px;
    padding: 0;
}
.tech-planning-filter svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.tech-planning-filter--urgence { color: var(--color-danger); }
.tech-planning-filter--afaire { color: var(--color-warning); }
.tech-planning-filter--tache { color: var(--color-success); }
.tech-planning-list {
    display: grid;
    gap: 18px;
}
.tech-planning-board {
    display: grid;
    gap: 18px;
}
.tech-planning-bucket {
    display: grid;
    gap: 8px;
}
.tech-planning-bucket[hidden],
.tech-plan-item[hidden] {
    display: none !important;
}
.tech-planning-bucket__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 0 2px;
}
.tech-planning-bucket__head h2 {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 14px;
    font-weight: 800;
}
.tech-planning-bucket--danger .tech-planning-bucket__head h2 { color: var(--color-danger); }
.tech-planning-bucket__count {
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 700;
}
.tech-planning-items {
    display: grid;
    gap: 8px;
}
.tech-planning-column-empty {
    display: none;
    min-height: 56px;
    place-items: center;
    border: 1px dashed var(--color-border-soft);
    border-radius: var(--radius-card);
    color: var(--color-text-light);
    font-size: 13px;
    font-weight: 600;
}
.tech-plan-item {
    min-height: 62px;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 11px;
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    background: var(--color-bg);
    color: var(--color-text);
    text-decoration: none;
}
.tech-plan-item:hover { border-color: var(--color-border); background: var(--color-bg-soft); }
.tech-plan-item--urgence {
    border-color: rgba(220, 38, 38, .48);
}
.tech-plan-item__icon {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-primary);
}
.tech-plan-item--urgence .tech-plan-item__icon { color: var(--color-danger); }
.tech-plan-item--afaire .tech-plan-item__icon { color: var(--color-warning); }
.tech-plan-item--tache .tech-plan-item__icon { color: var(--color-success); }
.tech-plan-item__icon svg,
.tech-plan-item__chev svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.tech-plan-item__body {
    min-width: 0;
    flex: 1 1 auto;
    display: grid;
    gap: 2px;
}
.tech-plan-item__imm {
    min-width: 0;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 650;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tech-plan-item__title {
    min-width: 0;
    color: var(--color-text-muted);
    font-size: 14px;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tech-plan-item__meta {
    min-width: 0;
    color: var(--color-text-light);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tech-plan-item__due--danger { color: var(--color-danger); }
.tech-plan-item__due--warning { color: var(--color-warning); }
.tech-plan-item__due--normal { color: var(--color-text-muted); }
.tech-plan-item__estimated,
.tech-plan-item__since,
.tech-plan-item__sep {
    color: var(--color-text-light);
    font-weight: 500;
}
.tech-plan-item__chev {
    flex: 0 0 auto;
    display: inline-flex;
    color: var(--color-muted);
}
.tech-planning-empty {
    min-height: 160px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 10px;
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-card);
    background: var(--color-bg);
    color: var(--color-text-light);
    font-size: 14px;
    font-weight: 650;
}
.tech-planning-empty__icon {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: var(--color-success-soft);
    color: var(--color-success);
}
.tech-planning-empty__icon svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

@media (max-width: 1265px) {
    .tech-planning-bucket.is-empty,
    .tech-planning-bucket.is-filter-empty {
        display: none !important;
    }
    .tech-planning-bucket__count--desktop {
        display: none;
    }
}

@media (min-width: 1266px) {
    .tech-planning-shell {
        max-width: none;
    }
    .tech-planning-board {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        align-items: start;
        gap: 12px;
    }
    .tech-planning-bucket {
        min-width: 0;
        height: 100%;
        align-content: start;
        border: 1px solid var(--color-border-soft);
        border-radius: var(--radius-card);
        background: var(--color-bg);
        padding: 10px;
    }
    .tech-planning-bucket--undated {
        grid-column: 1 / -1;
        height: auto;
    }
    .tech-planning-bucket--stale {
        grid-column: 4;
        grid-row: 2;
        height: auto;
    }
    .tech-planning-bucket--undated .tech-planning-items {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
    .tech-planning-bucket__head {
        padding: 0 1px 4px;
    }
    .tech-planning-bucket__count {
        display: inline-flex;
        min-width: 22px;
        height: 22px;
        align-items: center;
        justify-content: center;
        border-radius: 999px;
        background: var(--color-bg-soft);
    }
    .tech-planning-bucket.is-empty .tech-planning-column-empty,
    .tech-planning-bucket.is-filter-empty .tech-planning-column-empty {
        display: grid;
    }
    .tech-planning-bucket.is-filter-empty .tech-plan-item {
        display: none !important;
    }
    .tech-plan-item {
        align-items: flex-start;
    }
    .tech-plan-item__title {
        display: -webkit-box;
        white-space: normal;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
    }
}

@media (min-width: 861px) {
    .dashboard-work-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
    .dashboard,
    .dashboard:not(.dashboard--wide) {
        width: 100%;
        max-width: none;
    }

    .dashboard .dashboard-grid,
    .dashboard .module-grid {
        grid-template-columns: 1fr;
    }

    .dashboard .tile-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard .dash-card,
    .dashboard .tile,
    .dashboard .module-tile,
    .dashboard .kpi {
        width: 100%;
    }
}


/* ====== Urgences / À faire — en-tête + cartes (maquette) ====== */
.urgences-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.urgences-header__body { min-width: 0; }
.urgences-header__title {
    margin: 0;
    font-size: clamp(1.4rem, 2.4vw, 1.7rem);
    line-height: 1.2;
    letter-spacing: -0.01em;
}
.urgences-header__count { margin: 4px 0 0; color: var(--color-text-light); font-size: 14px; }
.urgences-header__count strong { color: var(--color-text); font-weight: 700; }
.urgences-header__add {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 2px -4px 0 0;
    padding: 6px 4px;
    color: var(--color-primary);
    font-size: 15px;
    font-weight: 600;
    white-space: nowrap;
}
.urgences-header__add svg { width: 18px; height: 18px; }
.urgences-header__add:hover { text-decoration: underline; }

.urgence-card {
    position: relative;
    display: grid;
    gap: 7px;
    padding: 14px 16px;
    background: var(--color-bg);
    border: 1px solid var(--color-border-soft);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-card);
}
.urgence-card.card--danger  { border-color: rgba(220, 38, 38, .30); }
.urgence-card.card--warning { border-color: rgba(217, 119, 6, .32); }
.urgence-card.ticket-card--urgent { border-color: rgba(220, 38, 38, .34); }
.urgence-card.ticket-card--depannage { border-color: rgba(37, 99, 235, .34); }
.urgence-card.ticket-card--entretiens { border-color: rgba(22, 163, 74, .34); }
.urgence-card.ticket-card--offres { border-color: rgba(124, 58, 237, .34); }
.urgence-card.ticket-card--administratif { border-color: rgba(75, 85, 99, .34); }
.urgence-card.ticket-card--pannes { border-color: rgba(234, 88, 12, .34); }
.urgence-card.ticket-card--afaire { border-color: rgba(217, 119, 6, .42); outline: 1px solid rgba(217, 119, 6, .18); outline-offset: -2px; }

.urgence-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding-right: 34px; }
.urgence-card__head-main { min-width: 0; }
.demande-card-menu-btn {
    top: 12px;
    right: 12px;
}
.urgence-card__title {
    margin: 0;
    color: var(--color-text);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.urgence-card__title-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--color-primary);
}
a.urgence-card__title:hover { color: var(--color-primary-hover); }
.urgence-card__title-chev {
    display: inline-flex;
    flex: 0 0 auto;
    color: currentColor;
}
.urgence-card__title-chev svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.urgence-card__head .badge { flex: 0 0 auto; margin-top: 1px; }

.urgence-card__meta { margin: 0; color: var(--color-text-light); font-size: 13px; overflow-wrap: anywhere; }
.urgence-card__txt {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 15px;
    line-height: 1.4;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}

.urgence-card__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 3px;
}
.urgence-card__date { color: var(--color-text-light); font-size: 13px; font-variant-numeric: tabular-nums; }
.urgence-card__foot form { margin: 0; }

@media (max-width: 720px) {
    .demande-card-heading {
        width: 100%;
    }
    .demande-state-line {
        max-width: 100%;
        flex-wrap: wrap;
    }
    .demande-state-line--mobile {
        flex-wrap: nowrap;
        align-items: center;
        justify-content: flex-end;
        gap: 6px;
    }
    .demande-state-line--mobile .demande-assignee {
        max-width: 92px;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .urgence-card {
        gap: 9px;
        padding: 13px 14px;
    }
    .urgence-card__head {
        align-items: flex-start;
    }
    .urgence-card__title {
        font-size: 15px;
        min-width: 0;
    }
    .urgence-card__meta {
        font-size: 12px;
    }
    .urgence-card__foot {
        align-items: center;
        display: grid;
        grid-template-columns: auto minmax(0, 1fr);
        gap: 8px;
        width: 100%;
    }
    .urgence-card__date {
        color: var(--color-text);
        font-size: 13px;
        font-weight: 700;
        justify-self: start;
        white-space: nowrap;
    }
    .urgence-card__foot .demande-state-line--mobile {
        justify-self: end;
        max-width: none;
        min-width: 0;
    }
    .demande-state-line--mobile .dashboard-state { gap: 4px; }
    .demande-state-line--mobile .planning-state {
        min-height: 24px;
        padding: 3px 8px;
    }
    .demande-state-line--mobile .dashboard-state__edit {
        width: 24px;
        height: 24px;
    }
}

/* Boutons d'action compacts, style "outline" */
.btn--sm { min-height: 40px; padding: 8px 18px; font-size: 14px; }
.btn-outline-danger {
    border-color: rgba(220, 38, 38, .45);
    background: var(--color-bg);
    color: var(--color-danger);
    font-weight: 600;
}
.btn-outline-danger:hover { border-color: var(--color-danger); background: var(--color-danger-soft); color: #B91C1C; }
.btn-outline-success {
    border-color: rgba(22, 163, 74, .45);
    background: var(--color-bg);
    color: var(--color-success);
    font-weight: 600;
}
.btn-outline-success:hover { border-color: var(--color-success); background: var(--color-success-soft); color: #15803D; }


/* ====== Tableau Urgences / À faire (desktop) — finition ====== */

.ticket-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 50px 50px;
    gap: 12px;
    align-items: center;
}
.ticket-filter-button {
    position: relative;
    z-index: 1;
    width: 50px;
    height: 50px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: end;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    background: var(--color-bg);
    color: var(--color-text);
    box-shadow: var(--shadow-card);
}
.ticket-person-filter-button {
    border: 1px solid var(--color-border);
    cursor: pointer;
}
.ticket-filter-button:hover,
.ticket-filter-button-form:hover .ticket-filter-button {
    border-color: var(--color-primary);
    background: var(--color-primary-soft);
    color: var(--color-primary);
}
.ticket-filter-button:focus-visible {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 1px;
    border-color: var(--color-primary);
}
.ticket-filter-button svg {
    width: 21px;
    height: 21px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.ticket-filter-button__dot {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: var(--color-primary);
    box-shadow: 0 0 0 2px var(--color-bg);
}
.ticket-filter-form {
    position: relative;
    margin: 0;
}
.ticket-filter-button-form {
    width: 50px;
    height: 50px;
    justify-self: end;
}
.ticket-filter-select {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    min-height: 50px;
    border: 0;
    border-radius: var(--radius-pill);
    opacity: 0;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
}
.ticket-filter-select:focus-visible + .ticket-filter-button,
.ticket-filter-button-form:focus-within .ticket-filter-button {
    outline: 3px solid rgba(37, 99, 235, 0.22);
    outline-offset: 1px;
    border-color: var(--color-primary);
}
.ticket-state-filters {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    overflow-x: auto;
    padding: 1px 1px 4px;
    scrollbar-width: none;
}
.ticket-state-filters::-webkit-scrollbar { display: none; }
.ticket-state-filter {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    flex: 0 0 auto;
    padding: 7px 11px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-pill);
    background: var(--color-bg);
    color: var(--color-text-muted);
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}
.ticket-state-filter:hover {
    border-color: color-mix(in srgb, var(--ticket-state-color, var(--color-primary)) 38%, var(--color-border));
    color: var(--ticket-state-color, var(--color-primary));
}
.ticket-state-filter:focus-visible {
    outline: 3px solid rgba(37, 99, 235, .18);
    outline-offset: 1px;
}
.ticket-state-filter.is-active {
    border-color: color-mix(in srgb, var(--ticket-state-color, var(--color-primary)) 42%, transparent);
    background: color-mix(in srgb, var(--ticket-state-color, var(--color-primary)) 9%, var(--color-bg));
    color: var(--ticket-state-color, var(--color-primary));
    box-shadow: 0 3px 12px color-mix(in srgb, var(--ticket-state-color, var(--color-primary)) 12%, transparent);
}
.ticket-state-filter--0 { --ticket-state-color: #DC2626; }
.ticket-state-filter--1 { --ticket-state-color: #2563EB; }
.ticket-state-filter--2 { --ticket-state-color: #D97706; }
.ticket-state-filter--3 { --ticket-state-color: #16A34A; }
.ticket-state-filter__dot {
    width: 8px;
    height: 8px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: var(--ticket-state-color, var(--color-text-light));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--ticket-state-color, var(--color-text-light)) 12%, transparent);
}
.ticket-state-filter__dot--all {
    background: var(--color-text-light);
    box-shadow: 0 0 0 3px rgba(107, 114, 128, .10);
}
.ticket-state-filter__dot--ready { background:#16A34A; box-shadow:0 0 0 4px rgba(22,163,74,.13); }
.ticket-state-filter__count {
    min-width: 21px;
    height: 21px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 6px;
    border-radius: var(--radius-pill);
    background: var(--color-bg-muted);
    color: inherit;
    font-size: 11px;
    font-variant-numeric: tabular-nums;
}
.ticket-state-filter.is-active .ticket-state-filter__count { background: rgba(255, 255, 255, .72); }
@media (max-width: 720px) {
    .ticket-search-row {
        grid-template-columns: minmax(0, 1fr) 48px 48px;
    }

    .ticket-search-row .ascenseur-search,
    .ticket-search-row .search-field {
        width: 100%;
    }

    .ticket-search-row .ascenseur-search { grid-template-columns: minmax(0, 1fr); }
    .ticket-filter-button-form,
    .ticket-filter-button { width: 48px; height: 48px; }
    .ticket-filter-select { min-height: 48px; }
    .ticket-state-filters {
        margin-inline: -2px;
        padding-inline: 2px;
    }
    .ticket-state-filter { min-height: 36px; padding: 6px 10px; }
}

/* Date sur une seule ligne (fini le "11-05-\n2026") */
.demandes-table td.col-date { white-space: nowrap; }
.demande-date-stack { display: grid; gap: 7px; align-items: start; }
.demande-date-tech { color: var(--color-text); font-size: 13px; font-weight: 700; }
.demande-date-pair { display: grid; gap: 1px; }
.demande-date-pair span { color: var(--color-text-light); font-size: 11px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.demande-date-pair strong { color: var(--color-text-muted); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Colonne état plus confortable */
.demandes-table th.demande-state-col,
.demandes-table td:nth-child(4) {
    min-width: 190px;
}

/* Colonne Action collée à droite, largeur au contenu */
.demandes-table th:last-child,
.demandes-table td:last-child {
    width: 132px;
    white-space: nowrap;
    text-align: right;
}
.demandes-table tbody tr[class*="ticket-row--"] td:first-child {
    border-left: 3px solid var(--ticket-row-outline, var(--color-border-soft));
}
.demandes-table tbody tr.ticket-row--urgent { --ticket-row-outline: rgba(220, 38, 38, .34); }
.demandes-table tbody tr.ticket-row--depannage { --ticket-row-outline: rgba(37, 99, 235, .34); }
.demandes-table tbody tr.ticket-row--entretiens { --ticket-row-outline: rgba(22, 163, 74, .34); }
.demandes-table tbody tr.ticket-row--offres { --ticket-row-outline: rgba(124, 58, 237, .34); }
.demandes-table tbody tr.ticket-row--administratif { --ticket-row-outline: rgba(75, 85, 99, .34); }
.demandes-table tbody tr.ticket-row--pannes { --ticket-row-outline: rgba(234, 88, 12, .34); }
.demandes-table tbody tr.ticket-row--afaire { --ticket-row-outline: rgba(217, 119, 6, .42); }
.demande-table-actions {
    display: inline-flex;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
}
.ticket-filter-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    min-height: 24px;
    padding: 3px 8px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    white-space: normal;
}
.ticket-filter-label--urgent { background: var(--color-danger-soft); border-color: rgba(220, 38, 38, .24); color: #B91C1C; }
.ticket-filter-label--depannage { background: rgba(37, 99, 235, .10); border-color: rgba(37, 99, 235, .22); color: #1D4ED8; }
.ticket-filter-label--entretiens { background: var(--color-success-soft); border-color: rgba(22, 163, 74, .22); color: #15803D; }
.ticket-filter-label--offres { background: rgba(124, 58, 237, .10); border-color: rgba(124, 58, 237, .22); color: #6D28D9; }
.ticket-filter-label--administratif { background: rgba(75, 85, 99, .10); border-color: rgba(75, 85, 99, .20); color: #374151; }
.ticket-filter-label--pannes { background: rgba(234, 88, 12, .10); border-color: rgba(234, 88, 12, .22); color: #C2410C; }
.ticket-filter-label--afaire { background: var(--color-warning-soft); border-color: rgba(217, 119, 6, .24); color: #92400E; }

/* Boutons d'action compacts dans le tableau */
.demandes-table td .btn {
    min-height: 34px;
    padding: 6px 14px;
    font-size: 14px;
}
.sheet-item__icon--danger { color: var(--color-danger); }
.sheet-item__icon--success { color: var(--color-success); }
.sheet-item__icon--demande-close svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}


/* ====== Détail chantier — termes sur PC ====== */
@media (min-width: 861px) {
    /* La zone de contrôles ne s'étire plus : barre compacte alignée à gauche */
    .term-step__controls-box {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 14px;
        width: fit-content;
        max-width: 100%;
    }

    /* Segmenté à largeur de contenu (fini les boutons géants) */
    .term-segmented-form { width: auto; }
    .term-segmented-form .segmented { width: auto; }
    .term-segmented-form .segmented__btn {
        flex: 0 0 auto;
        min-width: 108px;
        min-height: 40px;
    }

    /* Tech + Réalisée sur la même ligne, sans s'étirer */
    .term-controls { width: auto; gap: 14px; }
    .term-controls .planning-control-form { width: auto; }
    .term-controls .term-tech-form { flex: 0 0 auto; }
    .term-controls .term-check-form {
        flex: 0 0 auto;
        align-self: center;
        min-width: 118px;
        margin-left: 6px;
    }
    .term-tech { width: auto; }
    .term-tech .planning-tech {
        flex: 0 0 auto;
        width: 190px;
        min-width: 190px;
        max-width: 190px;
    }
}

/* ===== Archives ===== */
/* Desktop: keep the table as-is, only widen the Date column */
.archive-table .data-table th:nth-child(3),
.archive-table .data-table td:nth-child(3) {
    min-width: 132px;
    white-space: nowrap;
}

/* Mobile cards hidden by default (desktop shows the table) */
.archive-cards { display: none; }

@media (max-width: 720px) {
    /* Hide the transposed table; show dedicated cards instead */
    .archive-table { display: none; }
    .archive-cards { display: grid; gap: 12px; }

    .archive-card {
        display: flex;
        flex-direction: column;
        gap: 8px;
        padding: 14px;
        border: 1px solid var(--color-border-soft);
        border-radius: var(--radius-card);
        background: var(--color-bg);
        box-shadow: var(--shadow-card);
    }
    .archive-card__head { display: flex; align-items: flex-start; gap: 10px; }
    .archive-card__title {
        flex: 1 1 auto;
        margin: 0;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.3;
        color: var(--color-text);
        overflow-wrap: anywhere;
    }
    .archive-card__type {
        flex: 0 0 auto;
        display: inline-flex;
        align-items: center;
        padding: 3px 10px;
        border-radius: 999px;
        font-size: 12px;
        font-weight: 600;
        white-space: nowrap;
    }
    .archive-card__type--afaire { background: var(--color-bg-soft); color: var(--color-text-light); }
    .archive-card__type--tache { background: var(--color-primary-soft); color: #1E40AF; }
    .archive-card__type--urgence { background: var(--color-danger-soft); color: #991B1B; }

    .archive-card__meta {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 4px 12px;
        color: var(--color-text-light);
        font-size: 13px;
    }
    .archive-card__meta-item { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
    .archive-card__meta-icon { flex: 0 0 auto; width: 15px; height: 15px; }

    .archive-card__comment {
        margin: 0;
        color: var(--color-text);
        font-size: 14px;
        line-height: 1.45;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
    .archive-card__comment.is-clampable { cursor: pointer; }
    .archive-card__comment.is-expanded { -webkit-line-clamp: unset; overflow: visible; }

    .archive-card__actions { display: flex; gap: 8px; margin-top: 2px; }
    .archive-card__send {
        flex: 1 1 auto;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-height: 46px;
    }
    .archive-card__send-icon { flex: 0 0 auto; width: 18px; height: 18px; }
    .archive-card__reactivate { flex: 0 0 auto; display: flex; }
    .archive-card__reactivate .btn { min-height: 46px; padding: 0 18px; }
    .archive-card__reactivate:only-child { flex: 1 1 auto; }
    .archive-card__reactivate:only-child .btn { width: 100%; }
}

/* ===== Intervention images ===== */
.intervention-images {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 10px 0 14px;
}

.intervention-image {
    position: relative;
    flex: 0 0 auto;
    width: 96px;
    aspect-ratio: 1;
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--color-border-soft);
    border-radius: 8px;
    background: var(--color-bg-soft);
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
}

.intervention-image a,
.intervention-image img {
    display: block;
    width: 100%;
    height: 100%;
}

.intervention-image img {
    object-fit: cover;
    transition: transform 140ms ease, filter 140ms ease;
}

.intervention-image a:hover img,
.intervention-image a:focus-visible img {
    transform: scale(1.035);
    filter: saturate(1.08);
}

.intervention-image__delete {
    position: absolute;
    top: 4px;
    right: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border: 0;
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.78);
    color: #fff;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    transition: transform 120ms ease, background 120ms ease;
}

.intervention-image__delete:hover,
.intervention-image__delete:focus-visible {
    background: rgba(153, 27, 27, 0.92);
    transform: scale(1.06);
}

.timeline-entry .intervention-images {
    max-width: calc(100% - 34px);
    margin-top: 8px;
}

.timeline-entry .intervention-image {
    width: 74px;
    border-radius: 6px;
}

.demande-photo-section {
    padding-top: 4px;
}

.readonly-photo-section {
    display: grid;
    gap: 8px;
}

.photo-empty-note {
    margin: 0;
    color: var(--color-text-light);
    font-size: 13px;
    line-height: 1.4;
}

.section-head--compact {
    margin-bottom: 8px;
}

.section-title {
    margin: 0;
    font-size: 16px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--color-text);
}

.photo-uploader {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px dashed var(--color-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--color-bg-soft) 72%, #fff);
}

.photo-uploader__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.photo-uploader__actions {
    display: flex;
    flex-wrap: nowrap;
    gap: 8px;
    min-width: 0;
}

.photo-uploader__trigger {
    width: 50px;
    flex: 0 0 50px;
    padding: 0;
    min-height: 46px;
}

.photo-uploader__trigger svg {
    width: 19px;
    height: 19px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.photo-uploader__trigger[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
}

.photo-uploader__count {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    height: 34px;
    padding: 0 10px;
    border-radius: 999px;
    background: var(--color-bg);
    color: var(--color-text-light);
    font-size: 13px;
    font-weight: 700;
    box-shadow: inset 0 0 0 1px var(--color-border-soft);
}

.photo-uploader__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(86px, 1fr));
    gap: 10px;
}

.photo-uploader__item {
    position: relative;
    aspect-ratio: 1;
    margin: 0;
    overflow: hidden;
    border-radius: 8px;
    background: var(--color-bg);
    box-shadow: 0 10px 22px rgba(15, 23, 42, 0.1);
    transform: translateY(0);
    opacity: 1;
    transition: opacity 160ms ease, transform 160ms ease;
}

.photo-uploader__item.is-processing {
    opacity: 0.62;
    transform: translateY(3px);
}

.photo-uploader__item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.photo-uploader__remove {
    position: absolute;
    top: 5px;
    right: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.8);
    color: #fff;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.photo-uploader__message {
    min-height: 18px;
    margin: 0;
    color: var(--color-text-light);
    font-size: 13px;
}

.photo-uploader__message[data-tone="success"] {
    color: #047857;
}

.photo-uploader__message[data-tone="error"] {
    color: #991B1B;
}

.photo-uploader.is-full {
    border-style: solid;
}

.photo-lightbox {
    width: min(100vw, 100%);
    max-width: none;
    height: 100dvh;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(3, 7, 18, 0.94);
    color: #fff;
}

.photo-lightbox::backdrop {
    background: rgba(3, 7, 18, 0.72);
}

.photo-lightbox__image {
    position: absolute;
    inset: 50% auto auto 50%;
    width: min(96vw, 1400px);
    height: min(82dvh, 980px);
    object-fit: contain;
    transform: translate(-50%, -50%);
}

.photo-lightbox__close,
.photo-lightbox__nav {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    cursor: pointer;
    backdrop-filter: blur(10px);
    transition: background 120ms ease, transform 120ms ease;
}

.photo-lightbox__close:hover,
.photo-lightbox__nav:hover,
.photo-lightbox__close:focus-visible,
.photo-lightbox__nav:focus-visible {
    background: rgba(255, 255, 255, 0.24);
    transform: scale(1.04);
}

.photo-lightbox__close {
    top: max(14px, env(safe-area-inset-top));
    right: max(14px, env(safe-area-inset-right));
    width: 44px;
    height: 44px;
    font-size: 30px;
    line-height: 1;
}

.photo-lightbox__nav {
    top: 50%;
    width: 48px;
    height: 48px;
    font-size: 40px;
    line-height: 1;
}

.photo-lightbox__nav--prev {
    left: max(14px, env(safe-area-inset-left));
}

.photo-lightbox__nav--next {
    right: max(14px, env(safe-area-inset-right));
}

.photo-lightbox.has-single .photo-lightbox__nav {
    display: none;
}

.photo-lightbox__count {
    position: absolute;
    left: 50%;
    bottom: max(18px, env(safe-area-inset-bottom));
    transform: translateX(-50%);
    padding: 7px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    color: rgba(255, 255, 255, 0.92);
    font-size: 13px;
    font-weight: 700;
    backdrop-filter: blur(10px);
}

.photo-lightbox-open {
    overflow: hidden;
}

@media (max-width: 720px) {
    .photo-uploader {
        padding: 10px;
    }

    .photo-uploader__top {
        align-items: stretch;
    }

    .photo-uploader__actions {
        flex: 1 1 auto;
    }

    .photo-uploader__trigger {
        flex: 0 0 50px;
        justify-content: center;
        min-height: 50px;
    }

    .photo-uploader__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .intervention-image {
        width: 88px;
    }

    .photo-lightbox__nav {
        display: none;
    }

    .photo-lightbox__image {
        width: 100vw;
        height: 86dvh;
    }
}

/* === Aide / hub === */
.help-page { max-width: 760px; }

.help-header .help-eyebrow {
    display: inline-block;
    margin-bottom: 6px;
    color: var(--color-primary);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.help-header h1 { margin: 0; }
.help-intro {
    max-width: 60ch;
    margin: 10px 0 0;
    color: var(--color-text-muted);
    font-size: 15px;
    line-height: 1.6;
    text-transform: none;
    letter-spacing: normal;
}

/* Buttons (hub-local, ne subissent pas la règle .actions .btn pleine largeur) */
.help-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: auto;
    align-self: flex-start;
    padding: 9px 15px;
    border-radius: var(--radius-btn);
    border: 1px solid transparent;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    transition: background-color 140ms ease, border-color 140ms ease, color 140ms ease;
}
.help-btn svg { flex: 0 0 auto; }
.help-btn--primary { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.help-btn--primary:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); }
.help-btn--ghost { background: var(--color-primary-soft); color: var(--color-primary); }
.help-btn--ghost:hover { border-color: var(--color-primary); }

/* PDF block */
.help-pdf__body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 18px 20px;
}
.help-pdf__title { margin: 0; font-size: 16px; font-weight: 700; color: var(--color-text); }
.help-pdf__hint { margin: 4px 0 0; font-size: 13px; color: var(--color-text-light); }

/* Cards */
.help-card { margin-top: 16px; }
.help-card__header { padding: 16px 20px; border-bottom: 1px solid var(--color-border-soft); }
.help-card__title { margin: 0; font-size: 16px; font-weight: 700; color: var(--color-text); line-height: 1.35; }
.help-card__body { display: flex; flex-direction: column; gap: 16px; padding: 18px 20px; }

/* Numbered steps with colored badges */
.help-card__steps {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: help-step;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.help-card__steps li {
    counter-increment: help-step;
    position: relative;
    padding-left: 38px;
    min-height: 26px;
    display: flex;
    align-items: center;
}
.help-card__steps li::before {
    content: counter(help-step);
    position: absolute;
    left: 0;
    top: 0;
    width: 26px;
    height: 26px;
    display: grid;
    place-items: center;
    border-radius: var(--radius-pill);
    background: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 13px;
    font-weight: 700;
}
.help-card__step-text { color: var(--color-text); line-height: 1.55; }

.help-card__clip { margin-top: 2px; }
.help-card__clip video {
    width: 100%;
    max-width: 640px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    background: var(--color-bg-soft);
    display: block;
}

/* === Tour Driver.js === */
.driver-popover {
    background: var(--color-bg);
    color: var(--color-text);
    border-radius: var(--radius-card);
    box-shadow: var(--shadow-popover);
    font-family: var(--font-base);
}
.driver-popover-title { color: var(--color-text); font-weight: 700; }
.driver-popover-description { color: var(--color-text-muted); line-height: 1.5; }
.driver-popover-progress-text { color: var(--color-text-light); }
.driver-popover-arrow { color: var(--color-bg); }
.driver-popover .driver-popover-navigation-btns button {
    background: var(--color-row);
    color: var(--color-text);
    border-radius: var(--radius-btn);
    border: 1px solid var(--color-border);
    text-shadow: none;
}
.driver-popover .driver-popover-navigation-btns button:hover {
    background: var(--color-border-soft);
}
.driver-popover .driver-popover-close-btn { color: var(--color-text-light); }
.driver-popover .driver-popover-close-btn:hover { color: var(--color-text); }
/* ====== Page admin « Nouveau » — file de validation ====== */
.nq-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.nq-toolbar .search-field input { min-height: 46px; padding-left: 44px; }
.nq-chips { padding: 0; }

.nq-layout { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 14px; align-items: start; }

/* Colonne gauche — file */
.nq-list { position: sticky; top: 84px; display: flex; flex-direction: column; gap: 8px; max-height: calc(100vh - 130px); overflow-y: auto; overscroll-behavior: contain; padding: 2px; scrollbar-width: thin; }
.nq-list:focus-visible { outline: 3px solid rgba(37, 99, 235, .22); outline-offset: 1px; border-radius: var(--radius-card); }
.nq-item { display: grid; gap: 4px; width: 100%; padding: 11px 13px; text-align: left; background: var(--color-bg); border: 1px solid var(--color-border-soft); border-left: 3px solid transparent; border-radius: var(--radius-card); box-shadow: var(--shadow-card); color: var(--color-text); transition: border-color 140ms ease, background-color 140ms ease; }
.nq-item:hover { border-color: var(--color-border); background: var(--color-bg-soft); }
.nq-item[hidden], .nq-page .nq-item[hidden] { display: none !important; }
.nq-item.is-selected { border-color: rgba(37, 99, 235, .38); border-left-color: var(--color-primary); background: var(--color-primary-soft); box-shadow: none; }
.nq-item__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.nq-chip { display: inline-flex; align-items: center; padding: 2px 9px; border-radius: var(--radius-pill); font-size: 11px; font-weight: 700; line-height: 1.5; white-space: nowrap; }
.nq-chip--intervention { background: var(--color-primary-soft); color: #1E40AF; }
.nq-item.is-selected .nq-chip--intervention { background: var(--color-bg); }
.nq-chip--ticket { background: var(--color-warning-soft); color: #92400E; }
.nq-item__age { flex: 0 0 auto; color: var(--color-text-light); font-size: 12px; font-weight: 600; }
.nq-item__age--old { color: var(--color-danger); }
.nq-item__title { font-size: 14px; font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.nq-item__meta { color: var(--color-text-light); font-size: 12px; }
.nq-item__excerpt { color: var(--color-text-muted); font-size: 13px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Panneau droit — éditeur */
.nq-editor { position: sticky; top: 84px; display: flex; flex-direction: column; }
.nq-editor[hidden] { display: none; }
.nq-editor__head { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--color-border-soft); }
.nq-back { display: none; width: 38px; height: 38px; flex: 0 0 auto; align-items: center; justify-content: center; border: 1px solid var(--color-border); border-radius: var(--radius-btn); background: var(--color-bg); color: var(--color-text); }
.nq-back svg { width: 20px; height: 20px; }
.nq-editor__context { flex: 1; min-width: 0; }
.nq-editor__title { display: inline-block; color: var(--color-primary); font-size: 16px; font-weight: 700; overflow-wrap: anywhere; }
.nq-editor__title:hover { text-decoration: underline; }
.nq-editor__sub { margin: 3px 0 0; color: var(--color-text-muted); font-size: 13px; overflow-wrap: anywhere; }
.nq-editor__sub--muted { color: var(--color-text-light); font-size: 12px; }
.nq-editor__sub--muted strong { color: var(--color-text-muted); font-weight: 650; }
.nq-badge-pending { flex: 0 0 auto; border-color: transparent; background: var(--color-warning-soft); color: #92400E; }
.nq-editor__body { display: grid; gap: 16px; padding: 16px 18px; }
.nq-dates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.nq-comment { min-height: 120px; }
.nq-images__label { margin: 0 0 6px; color: var(--color-text-muted); font-size: 13px; font-weight: 600; }
.nq-images__grid { display: flex; flex-wrap: wrap; gap: 8px; }
.nq-images__grid a { display: block; width: 82px; aspect-ratio: 1; overflow: hidden; border: 1px solid var(--color-border-soft); border-radius: 8px; background: var(--color-bg-soft); }
.nq-images__grid img { width: 100%; height: 100%; object-fit: cover; transition: transform 140ms ease; }
.nq-images__grid a:hover img { transform: scale(1.04); }
.nq-dest-set { margin: 0; padding: 0; border: 0; }
.nq-dest-set legend { margin-bottom: 8px; color: var(--color-text-muted); font-size: 13px; font-weight: 600; }
.nq-dest { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.nq-dest__opt { position: relative; display: flex; align-items: center; gap: 10px; margin: 0; padding: 11px 12px; cursor: pointer; border: 1px solid var(--color-border); border-radius: var(--radius-btn); background: var(--color-bg); transition: border-color 140ms ease, background-color 140ms ease; }
.nq-dest__opt:hover { border-color: var(--color-primary); }
.nq-dest__header > input[type="checkbox"] { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.nq-dest__check { display: inline-flex; align-items: center; justify-content: center; width: 17px; height: 17px; flex: 0 0 auto; border: 1.5px solid var(--color-border); border-radius: 5px; background: var(--color-bg); color: transparent; transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease; }
.nq-dest__check svg { width: 10px; height: 10px; }
.nq-dest__opt:has(> .nq-dest__header > input:checked) { border-color: var(--color-primary); background: var(--color-primary-soft); }
.nq-dest__opt:has(> .nq-dest__header > input:checked) > .nq-dest__header .nq-dest__check { border-color: var(--color-primary); background: var(--color-primary); color: #fff; }
.nq-dest__opt:has(> .nq-dest__header > input:focus-visible) { outline: 3px solid rgba(37, 99,235,.22); outline-offset: 1px; }
.nq-dest__body { display: grid; gap: 1px; min-width: 0; }
.nq-dest__name { font-size: 14px; font-weight: 700; }
.nq-dest__hint { color: var(--color-text-light); font-size: 12px; }
.nq-selects { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.nq-selects .field-help { min-height: 17px; }
[data-nq-tech-wrap].is-disabled label, [data-nq-tech-wrap].is-disabled .field-help { opacity: .62; }
[data-nq-tech-wrap].is-disabled select { background: var(--color-bg-soft); color: var(--color-text-light); cursor: not-allowed; }
.nq-hint { margin: 0; padding: 10px 12px; border-radius: var(--radius-btn); background: var(--color-warning-soft); color: #92400E; font-size: 13px; font-weight: 600; }
.nq-hint[hidden] { display: none; }
.nq-hint--error { background: var(--color-danger-soft); color: #991B1B; }
.nq-editor__foot { position: sticky; bottom: 0; display: flex; align-items: center; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--color-border-soft); background: var(--color-bg); border-radius: 0 0 var(--radius-card) var(--radius-card); }
.nq-foot-spacer { flex: 1; }
.nq-dirty-dot { color: var(--color-warning); font-size: 12px; font-weight: 700; white-space: nowrap; }
.nq-dirty-dot[hidden] { display: none; }
.nq-validate { min-width: 190px; }
.nq-validate.is-loading { opacity: .7; pointer-events: none; }
.nq-editor-empty { align-self: start; padding: 48px 18px; }
.nq-editor-empty[hidden] { display: none; }
.nq-kbd-help { display: inline-block; margin-top: 8px; color: var(--color-text-light); font-size: 12px; }
.nq-empty-title { margin-bottom: 4px; color: var(--color-text); font-size: 15px; font-weight: 700; }
.nq-archive-sheet input { margin-bottom: 16px; }
.nq-item.is-leaving { opacity: 0; transform: translateX(-8px); transition: opacity .18s ease, transform .18s ease; pointer-events: none; }

@media (max-width: 860px) {
    .nq-toolbar { grid-template-columns: 1fr; }
    .nq-layout { grid-template-columns: 1fr; }
    .nq-list { position: static; max-height: none; }
    .nq-editor-empty { display: none; }
    .nq-editor { display: none; }
    .nq-editor.is-open { display: flex; position: fixed; inset: 0; z-index: 60; border-radius: 0; overflow-y: auto; padding-bottom: env(safe-area-inset-bottom, 0px); }
    .nq-editor.is-open .nq-back { display: inline-flex; }
    .nq-dates { grid-template-columns: 1fr; }
    .nq-dest { grid-template-columns: 1fr; }
    .nq-selects { grid-template-columns: 1fr; }
    body.nq-detail-open { overflow: hidden; }
}

@media (prefers-reduced-motion: reduce) {
    .nq-item, .nq-item.is-leaving, .nq-dest__opt, .nq-dest__check { transition: none; }
}
/* ====== Dashboard admin — refonte ====== */
.adx-header-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 0 0 auto; }
.adx-header-actions form { margin: 0; }
.adx-header-actions .btn { min-height: 40px; padding: 8px 14px; font-size: 14px; }
.adx-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)); gap: 1px; overflow: hidden; background: var(--color-border-soft); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
.adx-stat { display: grid; gap: 3px; align-content: start; padding: 15px 18px 13px; background: var(--color-bg); color: var(--color-text); transition: background-color 140ms ease; }
.adx-stat:hover { background: var(--color-bg-soft); }
.adx-stat__label { color: var(--color-text-light); font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adx-stat__value { color: var(--color-text); font-size: 23px; font-weight: 700; line-height: 1.1; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adx-stat__value--danger { color: var(--color-danger); }
.adx-stat__value--accent { color: var(--color-primary); }
.adx-stat__sub { color: var(--color-text-light); font-size: 12px; }
.adx-stat__sub--warn { color: var(--color-warning); font-weight: 650; }
.adx-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: 14px; align-items: start; }
.adx-panel { padding: 0; }
.adx-panel__head { display: flex; align-items: baseline; gap: 8px; padding: 14px 18px 10px; }
.adx-panel__title { margin: 0; color: var(--color-text-light); font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.adx-panel__count { color: var(--color-text); font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }
.adx-panel__link { margin-left: auto; color: var(--color-primary); font-size: 13px; font-weight: 600; white-space: nowrap; }
.adx-panel__link:hover { text-decoration: underline; }
.adx-empty { margin: 0; padding: 20px 18px 22px; border-top: 1px solid var(--color-border-soft); color: var(--color-text-light); font-size: 14px; }
.adx-queue__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; padding: 11px 18px 12px; border-top: 1px solid var(--color-border-soft); color: var(--color-text); transition: background-color 140ms ease; }
.adx-queue__row:hover { background: var(--color-bg-soft); }
.adx-queue__title { min-width: 0; font-size: 14px; font-weight: 650; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adx-dot { display: inline-block; width: 7px; height: 7px; margin-right: 8px; border-radius: 50%; vertical-align: 2px; }
.adx-dot--intervention { background: var(--color-primary); }
.adx-dot--ticket { background: var(--color-warning); }
.adx-queue__age { align-self: start; color: var(--color-text-light); font-size: 12px; font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adx-queue__age--warn { color: var(--color-warning); }
.adx-queue__meta { grid-column: 1; min-width: 0; color: var(--color-text-light); font-size: 12.5px; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adx-more { display: block; padding: 11px 18px; border-top: 1px solid var(--color-border-soft); color: var(--color-primary); font-size: 13px; font-weight: 600; }
.adx-more:hover { background: var(--color-bg-soft); }
.adx-group { border-top: 1px solid var(--color-border-soft); }
.adx-group__head { display: flex; align-items: center; gap: 10px; padding: 11px 14px 11px 18px; color: var(--color-text); transition: background-color 140ms ease; }
.adx-group__head:hover { background: var(--color-bg-soft); }
.adx-group__name { flex: 1; min-width: 0; font-size: 14px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adx-group__count { flex: 0 0 auto; color: var(--color-text-light); font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }
.adx-group__count--danger { color: var(--color-danger); }
.adx-group__chev { display: inline-flex; flex: 0 0 auto; color: var(--color-muted); }
.adx-group__chev svg { width: 16px; height: 16px; }
.adx-group__head:hover .adx-group__chev { color: var(--color-primary); }
.adx-group__rows { padding: 0 18px 10px; }
.adx-group__item { display: flex; align-items: center; gap: 10px; min-height: 30px; padding: 4px 0; }
.adx-group__item + .adx-group__item { border-top: 1px solid var(--color-border-soft); }
.adx-group__item-name { flex: 1; min-width: 0; color: var(--color-text-muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adx-group__item-value { flex: 0 0 auto; color: var(--color-text-light); font-size: 12.5px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adx-group__item-form { margin: 0; flex: 0 0 auto; }
@media (max-width: 860px) {
    .adx-header-actions { width: 100%; }
    .adx-header-actions .btn { flex: 1 1 auto; }
    .adx-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .adx-grid { grid-template-columns: 1fr; }
}

/* Dossiers de sécurité -------------------------------------------------- */
.security-documents-page { max-width: 1180px; gap: 20px; }
.security-documents-hero { align-items: center; padding: 8px 0 22px; }
.security-documents-hero .page-header__body > p:last-child { margin: 0; }
.security-documents-hero__identity { min-width: min(100%, 310px); display: grid; gap: 2px; padding: 13px 16px 13px 18px; border-left: 3px solid var(--color-primary); background: var(--color-bg); box-shadow: var(--shadow-card); }
.security-documents-hero__identity strong { font-size: 15px; letter-spacing: -.01em; }
.security-documents-hero__identity > span:last-child { color: var(--color-text-light); font-size: 12px; }
.security-documents-hero__eyebrow, .security-section-kicker { color: var(--color-primary); font-size: 10px; font-weight: 750; letter-spacing: .11em; text-transform: uppercase; }
.security-building-selector { display: grid; grid-template-columns: minmax(230px, .65fr) minmax(360px, 1.35fr); align-items: center; gap: 28px; padding: 22px 24px; border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); background: var(--color-bg); box-shadow: var(--shadow-card); }
.security-building-selector h2, .security-panel-head h2 { margin: 4px 0; font-size: 18px; letter-spacing: -.015em; }
.security-building-selector p, .security-panel-head p { margin: 0; color: var(--color-text-light); font-size: 13px; }
.security-building-selector__form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.security-building-selector__form .btn, .security-building-selector .ascenseur-picker__selection { min-height: 48px; }
.security-documents-empty { min-height: 260px; display: flex; align-items: center; justify-content: center; gap: 20px; border: 1px dashed var(--color-border); border-radius: var(--radius-card); color: var(--color-text-light); background: rgba(255, 255, 255, .44); }
.security-documents-empty__index { color: var(--color-border); font-size: 54px; font-weight: 800; line-height: 1; letter-spacing: -.08em; }
.security-documents-empty strong { display: block; color: var(--color-text); font-size: 16px; }
.security-documents-empty p { margin: 3px 0 0; }
.security-register-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); background: var(--color-bg); box-shadow: var(--shadow-card); overflow: hidden; }
.security-register-stats > div { min-height: 74px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 16px 20px; border-right: 1px solid var(--color-border-soft); }
.security-register-stats > div:last-child { border-right: 0; }
.security-register-stats span { color: var(--color-text-light); font-size: 12px; font-weight: 600; }
.security-register-stats strong { font-size: 25px; font-variant-numeric: tabular-nums; letter-spacing: -.04em; }
.security-register-stats strong.is-warning { color: var(--color-warning); }
.security-documents-workspace { display: grid; grid-template-columns: minmax(350px, 420px) minmax(0, 1fr); align-items: start; gap: 18px; }
.security-encode-panel, .security-register { border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); background: var(--color-bg); box-shadow: var(--shadow-card); overflow: hidden; }
.security-encode-panel { position: sticky; top: 76px; }
.security-panel-head { padding: 19px 20px 16px; border-bottom: 1px solid var(--color-border-soft); }
.security-document-form { display: grid; gap: 18px; padding: 20px; }
.security-form-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: end; gap: 14px; }
.security-document-form label { color: var(--color-text); font-size: 12px; font-weight: 700; }
.security-document-form input, .security-document-form select, .security-document-form textarea { min-height: 42px; border-radius: 8px; }
.security-document-form textarea { line-height: 1.45; }
.security-switch { min-height: 42px; display: flex !important; align-items: center; gap: 10px; margin: 0; padding: 6px 9px; border: 1px solid var(--color-border); border-radius: 8px; cursor: pointer; }
.security-switch { position: relative; }
.security-switch > input {
    position: absolute;
    width: 1px;
    height: 1px;
    min-height: 0;
    margin: 0;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
    clip-path: inset(50%);
}
.security-switch__control { position: relative; width: 34px; height: 20px; flex: 0 0 auto; border-radius: 999px; background: var(--color-border); transition: background-color .16s ease; }
.security-switch__control::after { content: ''; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(15, 23, 42, .2); transition: transform .16s ease; }
.security-switch input:checked + .security-switch__control { background: var(--color-warning); }
.security-switch input:checked + .security-switch__control::after { transform: translateX(14px); }
.security-switch strong { display: block; font-size: 12px; }
.security-switch small { display: block; color: var(--color-text-light); font-size: 10px; font-weight: 500; }
.security-upload-field { position: relative; }
.security-upload-field > input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.security-upload-field > label { min-height: 82px; display: flex; align-items: center; gap: 13px; margin: 0; padding: 15px; border: 1px dashed #B6C5DA; border-radius: 10px; background: #F9FBFE; cursor: pointer; transition: border-color .15s ease, background-color .15s ease; }
.security-upload-field > label:hover { border-color: var(--color-primary); background: var(--color-primary-soft); }
.security-upload-field__icon { width: 38px; height: 38px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; background: var(--color-bg); color: var(--color-primary); box-shadow: var(--shadow-card); }
.security-upload-field svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-upload-field strong { display: block; font-size: 14px; overflow-wrap: anywhere; }
.security-upload-field small { display: block; margin-top: 2px; color: var(--color-text-light); font-size: 11px; font-weight: 500; }
.security-submit { width: 100%; justify-content: space-between; }
.security-submit svg { width: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.security-register__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.security-register__count { min-width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--color-text); color: #fff; font-size: 13px; font-weight: 750; }
.security-register__empty { min-height: 280px; display: grid; place-content: center; padding: 30px; text-align: center; }
.security-register__empty strong { font-size: 15px; }
.security-register__empty p { margin: 4px 0 0; font-size: 13px; }
.security-document-list { display: grid; }
.security-document-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); border-bottom: 1px solid var(--color-border-soft); transition: background-color .15s ease; }
.security-document-row:last-child { border-bottom: 0; }
.security-document-row:hover { background: #FBFCFE; }
.security-document-row.has-remarks { box-shadow: inset 3px 0 0 var(--color-warning); }
.security-document-row__date { padding: 19px 14px 18px 18px; color: var(--color-text); font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; }
.security-document-row__date small { display: block; margin-top: 4px; color: var(--color-muted); font-size: 10px; }
.security-document-row__body { min-width: 0; padding: 17px 18px 18px 4px; }
.security-document-row__titleline { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.security-document-row h3 { margin: 0; font-size: 14px; letter-spacing: -.01em; }
.security-document-row__body > p { margin: 7px 0 0; color: var(--color-text-muted); font-size: 12px; white-space: pre-wrap; }
.security-status { padding: 2px 7px; border-radius: 999px; font-size: 9px; font-weight: 750; letter-spacing: .03em; text-transform: uppercase; }
.security-status--warning { background: var(--color-warning-soft); color: #92400E; }
.security-status--success { background: #e9f7ef; color: #26754b; }
.security-document-editor { margin: 8px 0 0; }
.security-document-editor summary { width: fit-content; color: var(--color-primary); font-size: 10px; font-weight: 680; cursor: pointer; }
.security-document-editor form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin-top: 9px; padding: 12px; border: 1px solid #dce4f0; border-radius: 10px; background: #f8faff; }
.security-document-editor label { min-width: 0; display: grid; gap: 5px; color: #526075; font-size: 10px; font-weight: 650; }
.security-document-editor label > span small { color: #8a94a3; font-weight: 500; }
.security-document-editor input[type="date"], .security-document-editor select, .security-document-editor textarea { width: 100%; min-width: 0; border: 1px solid #d5deeb; border-radius: 8px; background: #fff; color: #263143; font: inherit; }
.security-document-editor input[type="date"], .security-document-editor select { min-height: 38px; padding: 0 9px; }
.security-document-editor textarea { padding: 9px; resize: vertical; }
.security-document-editor__wide, .security-document-editor__actions { grid-column: 1 / -1; }
.security-document-editor .security-document-editor__check { display: flex; align-items: center; gap: 7px; min-height: 38px; padding: 0 10px; border: 1px solid #dce4ef; border-radius: 8px; background: #fff; }
.security-document-editor__check input[type="checkbox"] { width: 16px; height: 16px; margin: 0; }
.security-document-editor__actions { display: flex; justify-content: flex-end; }
.security-document-editor__actions .btn { min-width: 120px; }
.security-document-row__audiences { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.security-document-row__audiences span { color: var(--color-text-light); font-size: 10px; font-weight: 650; }
.security-document-row__audiences span + span::before { content: '·'; margin-right: 5px; color: var(--color-muted); }
.security-document-row__files { display: grid; gap: 6px; margin-top: 12px; }
.security-document-row__files a { min-width: 0; display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--color-border-soft); border-radius: 8px; background: var(--color-bg); }
.security-document-row__files a:hover { border-color: #BCD0F7; color: var(--color-primary-hover); }
.security-document-row__files svg { width: 18px; fill: none; stroke: var(--color-primary); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.security-document-row__files span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; font-weight: 650; }
.security-document-row__files small { color: var(--color-text-light); font-size: 9px; white-space: nowrap; }
.security-document-row__no-file { display: inline-block; margin-top: 10px; color: var(--color-muted); font-size: 10px; font-style: italic; }
@media (max-width: 900px) {
    .security-documents-workspace { grid-template-columns: 1fr; }
    .security-encode-panel { position: static; }
}
@media (max-width: 720px) {
    .security-documents-page { gap: 14px; }
    .security-documents-hero { align-items: stretch; padding-top: 0; }
    .security-documents-hero__identity { min-width: 100%; }
    .security-building-selector { grid-template-columns: 1fr; gap: 16px; padding: 18px; }
    .security-building-selector__form { grid-template-columns: 1fr; }
    .security-register-stats { grid-template-columns: 1fr; }
    .security-register-stats > div { min-height: 58px; border-right: 0; border-bottom: 1px solid var(--color-border-soft); }
    .security-register-stats > div:last-child { border-bottom: 0; }
    .security-form-grid { grid-template-columns: 1fr; }
    .security-document-form { padding: 17px; }
    .security-document-row { grid-template-columns: 1fr; }
    .security-document-row__date { display: flex; justify-content: space-between; padding: 15px 16px 0; }
    .security-document-row__date small { margin: 0; }
    .security-document-row__body { padding: 10px 16px 17px; }
    .security-document-row__files a { grid-template-columns: 22px minmax(0, 1fr); }
    .security-document-row__files small { grid-column: 2; }
}

/* Dossiers de sécurité — interactions affinées */
.security-documents-hero__identity { position: relative; grid-template-columns: minmax(0, 1fr) 36px 36px; align-items: center; gap: 8px; }
.security-documents-hero__copy { min-width: 0; display: grid; gap: 2px; }
.security-documents-hero__copy > span:last-child { overflow: hidden; color: var(--color-text-light); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.security-documents-hero__change { width: 36px; height: 36px; display: grid; place-items: center; padding: 0; border: 1px solid var(--color-border); border-radius: 9px; background: var(--color-bg); color: var(--color-primary); cursor: pointer; transition: border-color .15s ease, background-color .15s ease, color .15s ease; }
.security-documents-hero__change:hover { border-color: #B9CCF2; background: var(--color-primary-soft); color: var(--color-primary-hover); }
.security-documents-hero__change:focus-visible { outline: 3px solid rgba(37, 99, 235, .2); outline-offset: 2px; }
.security-documents-hero__change svg { width: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-documents-hero__picker { position: absolute; width: 0; height: 0; overflow: visible; }
.security-documents-hero__picker .ascenseur-picker__selection { display: none; }

.security-form-grid > :first-child { grid-column: 1 / -1; }
.security-switch--compact { height: 42px; min-height: 42px; padding: 7px 11px; }
.security-switch--compact strong { font-size: 12px; line-height: 1; }
.security-form-grid > .security-switch--sect {
    grid-column: 1 / -1;
    height: auto;
    min-height: 48px;
    align-items: center;
}
.security-switch--sect > span:last-child { min-width: 0; }
.security-switch--sect small { margin-top: 3px; line-height: 1.3; }

.security-category-select { position: relative; }
.security-category-select.is-enhanced > select { position: absolute; width: 1px; height: 1px; min-height: 0; margin: 0; padding: 0; opacity: 0; pointer-events: none; }
.security-category-select__trigger { width: 100%; min-height: 46px; display: none; align-items: center; gap: 10px; padding: 5px 9px; border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-bg); color: var(--color-text); font: inherit; font-size: 14px; font-weight: 650; text-align: left; cursor: pointer; }
.security-category-select.is-enhanced .security-category-select__trigger { display: flex; }
.security-category-select__trigger > span:nth-child(2) { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.security-category-select__trigger > svg { width: 16px; flex: 0 0 auto; fill: none; stroke: var(--color-text-light); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s ease; }
.security-category-select.is-open .security-category-select__trigger { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); }
.security-category-select.is-open .security-category-select__trigger > svg { transform: rotate(180deg); }
.security-category-select.has-error .security-category-select__trigger { border-color: #DC2626; box-shadow: 0 0 0 3px rgba(220, 38, 38, .1); }
.security-category-select__popover { position: absolute; z-index: 30; top: calc(100% + 6px); right: 0; left: 0; padding: 7px; border: 1px solid var(--color-border-soft); border-radius: 10px; background: var(--color-bg); box-shadow: 0 14px 34px rgba(15, 23, 42, .16); }
.security-category-select__search { display: flex; align-items: center; gap: 7px; margin-bottom: 6px; padding: 0 9px; border: 1px solid var(--color-border); border-radius: 7px; }
.security-category-select__search:focus-within { border-color: var(--color-primary); box-shadow: 0 0 0 2px rgba(37, 99, 235, .1); }
.security-category-select__search svg { width: 16px; flex: 0 0 auto; fill: none; stroke: var(--color-text-light); stroke-width: 1.8; stroke-linecap: round; }
.security-category-select__search input { width: 100%; min-height: 36px; padding: 0; border: 0; border-radius: 0; box-shadow: none !important; font-size: 14px; }
.security-category-select__options { max-height: 250px; overflow-y: auto; overscroll-behavior: contain; }
.security-category-select__group { margin: 6px 7px 3px; color: var(--color-text-light); font-size: 9px; font-weight: 650; letter-spacing: .055em; line-height: 1.35; text-transform: uppercase; }
.security-category-select__group:first-child { margin-top: 3px; }
.security-category-select__options button { width: 100%; display: flex; align-items: center; gap: 9px; padding: 6px 8px; border: 0; border-radius: 7px; background: transparent; color: var(--color-text); font-size: 14px; font-weight: 600; text-align: left; cursor: pointer; }
.security-category-select__options button:hover, .security-category-select__options button[aria-selected="true"] { background: var(--color-primary-soft); }
.security-category-select__options button > span:nth-child(2) { min-width: 0; flex: 1; }
.security-category-select__options button > svg { width: 15px; fill: none; stroke: var(--color-primary); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; opacity: 0; }
.security-category-select__options button[aria-selected="true"] > svg { opacity: 1; }
.security-category-select__options p { margin: 12px 8px; color: var(--color-text-light); font-size: 11px; text-align: center; }
.security-category-icon { width: 28px; height: 28px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 8px; background: #F1F5F9; color: #64748B; }
.security-category-icon svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.security-category-select__options .security-category-icon { width: 27px; height: 27px; }
.security-category-icon--blue { background: #EFF6FF; color: #2563EB; }
.security-category-icon--amber { background: #FFF7E6; color: #C66A05; }
.security-category-icon--green { background: #ECFDF3; color: #159447; }
.security-category-icon--violet { background: #F5F0FF; color: #7C3AED; }
.security-category-icon--slate { background: #F1F5F9; color: #52647A; }
.security-category-icon--empty { background: #F5F7FA; color: #94A3B8; }
.security-category-dot { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: #CBD5E1; box-shadow: 0 0 0 3px #F1F5F9; }
.security-category-dot--blue { background: #2563EB; box-shadow: 0 0 0 3px #DBEAFE; }
.security-category-dot--amber { background: #D97706; box-shadow: 0 0 0 3px #FEF3C7; }
.security-category-dot--green { background: #16A34A; box-shadow: 0 0 0 3px #DCFCE7; }
.security-category-dot--violet { background: #7C3AED; box-shadow: 0 0 0 3px #EDE9FE; }
.security-category-dot--slate { background: #64748B; box-shadow: 0 0 0 3px #E2E8F0; }

.security-date-field { position: relative; }
.security-date-control { position: relative; height: 42px; display: flex; align-items: center; padding-left: 8px; border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-bg); transition: border-color .15s ease, box-shadow .15s ease; }
.security-date-control:focus-within { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); }
.security-date-control > input[type="text"] { width: 30px; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none !important; font-size: 14px; font-variant-numeric: tabular-nums; text-align: center; }
.security-date-control > input[data-security-date-year] { width: 48px; }
.security-date-control > span { color: var(--color-muted); font-size: 12px; }
.security-date-control > button { width: 38px; height: 40px; display: grid; place-items: center; margin-left: auto; padding: 0; border: 0; border-left: 1px solid var(--color-border-soft); border-radius: 0 7px 7px 0; background: transparent; color: var(--color-primary); cursor: pointer; }
.security-date-control > button:hover { background: var(--color-primary-soft); }
.security-date-control > button svg { width: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.security-date-native { position: absolute; right: 0; bottom: 0; width: 1px !important; height: 1px !important; min-height: 0 !important; opacity: 0; pointer-events: none; }
.security-date-field.is-invalid .security-date-control { border-color: #DC2626; box-shadow: 0 0 0 3px rgba(220, 38, 38, .1); }
.security-date-error { display: block; margin-top: 4px; color: #B91C1C; font-size: 10px; font-weight: 600; }

.security-upload-field > label { min-height: 112px; justify-content: center; border-width: 2px; text-align: left; transition: border-color .15s ease, background-color .15s ease, transform .15s ease; }
.security-upload-field.is-dragover > label { border-color: var(--color-primary); background: var(--color-primary-soft); transform: translateY(-1px); }
.security-upload-field.has-file > label { border-color: #86C99B; background: #F1FBF4; }
.security-upload-field.has-file .security-upload-field__icon { color: #15803D; }
.security-upload-field.has-error > label { border-color: #E89A9A; background: #FFF7F7; }
.security-upload-field.has-error small { color: #B91C1C; }

@media (max-width: 720px) {
    .security-documents-hero__identity { grid-template-columns: minmax(0, 1fr) 36px; }
    .security-form-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .security-form-grid > :first-child { grid-column: 1 / -1; }
}

/* Dossiers de sécurité — alignement sur le dashboard admin */
.security-documents-page {
    --sd-ink: #16181D;
    --sd-ink-2: #4B5058;
    --sd-ink-3: #83888F;
    --sd-ink-4: #B4B8BE;
    --sd-line: #E8E9EB;
    --sd-line-soft: #F0F1F2;
    --sd-paper: #FFFFFF;
    --sd-paper-2: #FAFAFB;
    --sd-blue: #2563EB;
    --sd-blue-ink: #1D4ED8;
    max-width: 1180px;
    width: 100%;
    min-width: 0;
    overflow-x: clip;
    gap: 16px;
}
.security-documents-page [hidden] { display: none !important; }
.security-documents-hero { align-items: flex-start; padding: 0 0 4px; }
.security-documents-hero .page-header__body { min-width: 0; flex: 1 1 360px; }
.security-documents-hero .page-header__body .meta { margin-bottom: 5px; color: var(--sd-ink-3); font-size: 11px; font-weight: 550; letter-spacing: .07em; text-transform: uppercase; }
.security-documents-hero .page-header__body h1 { margin: 0 0 4px; color: var(--sd-ink); font-size: 24px; font-weight: 620; letter-spacing: -.02em; }
.security-documents-hero .page-header__body > p:last-child { color: var(--sd-ink-3); font-size: 13.5px; }
.security-documents-hero__identity {
    min-width: min(100%, 300px);
    padding: 11px 12px 11px 14px;
    border: 1px solid var(--sd-line);
    border-left: 1px solid var(--sd-line);
    border-radius: 14px;
    background: var(--sd-paper);
    box-shadow: none;
}
.security-documents-hero__copy { gap: 1px; }
.security-documents-hero__identity strong { color: var(--sd-ink); font-size: 14px; font-weight: 590; }
.security-documents-hero__copy > span:last-child { color: var(--sd-ink-3); font-size: 11.5px; }
.security-documents-hero__eyebrow, .security-section-kicker { color: var(--sd-ink-3); font-size: 10px; font-weight: 550; letter-spacing: .08em; }
.security-documents-hero__change { border-color: var(--sd-line); border-radius: 9px; box-shadow: none; }
.security-documents-hero__change:hover { border-color: #D6D8DB; background: var(--sd-paper-2); color: var(--sd-blue); }

.security-building-selector,
.security-encode-panel,
.security-register {
    border: 1px solid var(--sd-line);
    border-radius: 14px;
    background: var(--sd-paper);
    box-shadow: none;
}
.security-building-selector { padding: 20px; }
.security-register-stats {
    border: 1px solid var(--sd-line);
    border-radius: 14px;
    background: var(--sd-line);
    box-shadow: none;
}
.security-register-stats > div { min-height: 88px; padding: 15px 20px; border-right-color: var(--sd-line); background: var(--sd-paper); }
.security-register-stats > div:hover { background: var(--sd-paper-2); }
.security-register-stats span { color: var(--sd-ink-3); font-size: 11px; font-weight: 550; letter-spacing: .07em; text-transform: uppercase; }
.security-register-stats strong { color: var(--sd-ink); font-size: 22px; font-weight: 620; letter-spacing: -.015em; }
.security-register-stats strong.is-warning { color: #9A6700; }

.security-documents-workspace { width: 100%; min-width: 0; grid-template-columns: minmax(360px, .95fr) minmax(320px, 1.05fr); gap: 18px; }
.security-encode-panel { position: sticky; top: 76px; align-self: start; }
.security-encode-panel,
.security-documents-side,
.security-register,
.security-preview,
.security-document-form > *,
.security-form-grid > * { min-width: 0; max-width: 100%; }
.security-documents-side {
    position: static;
    width: 100%;
    display: grid;
    align-content: start;
    gap: 14px;
    overflow: visible;
}
.security-panel-head { padding: 15px 20px 12px; border-bottom-color: var(--sd-line-soft); }
.security-panel-head h2 { margin: 3px 0; color: var(--sd-ink); font-size: 16px; font-weight: 620; letter-spacing: -.01em; }
.security-panel-head p { color: var(--sd-ink-3); font-size: 12px; }
.security-document-form { gap: 16px; padding: 18px 20px 20px; }
.security-document-form label { color: var(--sd-ink-2); font-size: 11.5px; font-weight: 590; }
.security-document-form input, .security-document-form select, .security-document-form textarea { border-color: var(--sd-line); border-radius: 9px; }
.security-category-select__trigger,
.security-date-control,
.security-switch--compact { border-color: var(--sd-line); border-radius: 9px; background: var(--sd-paper); box-shadow: none; }
.security-category-select__trigger { color: var(--sd-ink-2); font-weight: 550; }
.security-switch--compact strong { color: var(--sd-ink); font-size: 12px; font-weight: 590; }
.security-switch__control { background: #DDE3EC; }
.security-switch input:checked + .security-switch__control { background: var(--sd-blue); }
.security-date-error[hidden] { display: none !important; }
.security-date-error { color: #C42B2B; font-size: 10.5px; font-weight: 550; }
.security-date-field.is-required > label::after { content: ' *'; color: #C42B2B; }
.security-date-control > button { border-left-color: var(--sd-line-soft); color: var(--sd-blue); }
.security-date-control > button:hover { background: var(--sd-paper-2); }
.security-upload-field > label { min-height: 96px; border-color: #C9D0D9; border-radius: 10px; background: var(--sd-paper-2); }
.security-upload-field > label:hover,
.security-upload-field.is-dragover > label { border-color: var(--sd-blue); background: #F5F8FF; }
.security-upload-field__icon { background: var(--sd-paper); color: var(--sd-blue); box-shadow: 0 0 0 1px var(--sd-line); }
.security-upload-field strong { color: var(--sd-ink); font-weight: 590; }
.security-upload-field small { color: var(--sd-ink-3); font-weight: 500; }
.security-submit { min-height: 38px; border-radius: 9px; box-shadow: none; }

.security-preview-mobile-slot { display: none; }
.security-preview {
    overflow: hidden;
    border: 1px solid var(--sd-line);
    border-radius: 14px;
    background: var(--sd-paper);
}
.security-preview__head { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px 12px 20px; border-bottom: 1px solid var(--sd-line-soft); }
.security-preview__head > div { min-width: 0; }
.security-preview__head span { display: block; margin-bottom: 2px; color: var(--sd-ink-3); font-size: 9.5px; font-weight: 600; letter-spacing: .075em; text-transform: uppercase; }
.security-preview__head h2 { margin: 0; color: var(--sd-ink); font-size: 16px; font-weight: 620; letter-spacing: -.01em; }
.security-preview__head > button { width: 34px; height: 34px; display: grid; place-items: center; flex: 0 0 auto; padding: 0; border: 1px solid var(--sd-line); border-radius: 9px; background: var(--sd-paper); color: var(--sd-ink-3); cursor: pointer; }
.security-preview__head > button:hover { border-color: #C8D5EE; background: var(--sd-paper-2); color: var(--sd-blue); }
.security-preview__head svg, .security-register__preview-link svg { width: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.security-preview__meta { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--sd-line-soft); }
.security-preview__file-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 8px; background: #EEF4FF; color: var(--sd-blue); }
.security-preview__file-icon svg { width: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.security-preview__meta > div { min-width: 0; display: grid; gap: 2px; }
.security-preview__meta strong { overflow: hidden; color: var(--sd-ink-2); font-size: 11.5px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.security-preview__meta small { color: var(--sd-ink-3); font-size: 9.5px; }
.security-preview__canvas { height: clamp(500px, 67vh, 760px); display: grid; place-items: center; overflow: hidden; background: #E9EDF2; }
.security-preview__canvas iframe, .security-preview__canvas img { display: block; width: 100%; max-width: 100%; min-width: 0; height: 100%; border: 0; }
.security-preview__canvas img { padding: 14px; object-fit: contain; }
.security-preview footer { display: flex; justify-content: flex-end; padding: 10px 14px; border-top: 1px solid var(--sd-line-soft); }
.security-preview footer .btn { min-height: 34px; padding: 0 12px; font-size: 14px; }

.security-register__head { min-height: 70px; }
.security-register__tools { min-width: 0; max-width: 100%; display: flex; align-items: center; gap: 9px; }
.security-register__preview-link { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; border: 1px solid #BFD0F5; border-radius: 7px; background: #F5F8FF; color: var(--sd-blue-ink); font-size: 10.5px; font-weight: 600; cursor: pointer; }
.security-register__preview-link:hover { background: #EEF4FF; }
.security-register-sort { display: inline-flex; align-items: center; padding: 2px; border: 1px solid var(--sd-line); border-radius: 8px; background: var(--sd-paper-2); }
.security-register-sort a { padding: 5px 8px; border-radius: 6px; color: var(--sd-ink-3); font-size: 10.5px; font-weight: 550; line-height: 1; white-space: nowrap; }
.security-register-sort a:hover { color: var(--sd-ink); }
.security-register-sort a.is-active { background: var(--sd-paper); color: var(--sd-ink); box-shadow: 0 1px 2px rgba(15, 23, 42, .08); }
.security-register__count { min-width: auto; height: auto; padding: 2px 8px; border: 1px solid var(--sd-line); border-radius: 999px; background: transparent; color: var(--sd-ink-3); font-size: 11.5px; font-weight: 600; }
.security-register__empty { min-height: 260px; border-top: 1px solid var(--sd-line-soft); }
.security-register__empty strong { color: var(--sd-ink); font-weight: 590; }
.security-register__empty p { color: var(--sd-ink-3); }
.security-document-row { border-bottom-color: var(--sd-line-soft); }
.security-document-folder-head { min-height: 42px; display: flex; align-items: center; padding: 10px 18px; border-top: 1px solid #DDE3EC; border-bottom: 1px solid var(--sd-line); background: #F3F6FA; }
.security-document-folder-head:first-child { border-top: 0; }
.security-document-folder-head strong { color: var(--sd-ink); font-size: 14px; font-weight: 650; letter-spacing: .035em; text-transform: uppercase; }
.security-document-group-head { min-height: 38px; display: flex; align-items: center; gap: 9px; padding: 8px 18px; border-top: 1px solid var(--sd-line-soft); border-bottom: 1px solid var(--sd-line-soft); background: var(--sd-paper-2); }
.security-document-group-head:first-child { border-top: 0; }
.security-document-group-head .security-category-dot { width: 7px; height: 7px; box-shadow: none; }
.security-document-group-head strong { min-width: 0; flex: 1; overflow: hidden; color: var(--sd-ink-2); font-size: 14px; font-weight: 620; letter-spacing: .055em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.security-document-group-head > span:not(.security-category-dot) { color: var(--sd-ink-3); font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums; }
.security-document-group-head small { padding: 2px 7px; border-radius: 999px; background: #FFF5DF; color: #9A6700; font-size: 9.5px; font-weight: 590; white-space: nowrap; }
.security-document-row:hover { background: var(--sd-paper-2); }
.security-document-row__date { color: var(--sd-ink-2); font-weight: 590; }
.security-document-row__date small { color: var(--sd-ink-4); }
.security-document-row h3 { color: var(--sd-ink); font-size: 13.5px; font-weight: 590; }
.security-document-row__body > p { color: var(--sd-ink-2); }
.security-document-row__files a { border-color: var(--sd-line); border-radius: 9px; box-shadow: none; }
.security-document-row__files a:hover { border-color: #C8D5EE; background: var(--sd-paper-2); }

@media (max-width: 1020px) {
    .security-documents-workspace { grid-template-columns: minmax(0, 1fr); }
    .security-documents-page { max-width: 720px; }
    .security-encode-panel { position: static; }
    .security-documents-side { position: static; max-height: none; overflow: visible; }
    .security-preview-mobile-slot.is-active { display: block; }
    .security-preview__canvas { height: min(68vh, 620px); }
}
@media (max-width: 720px) {
    .security-documents-hero { gap: 14px; }
    .security-documents-hero .page-header__body { flex: 0 1 auto; }
    .security-documents-hero__identity { min-width: 100%; }
    .security-register-stats > div { min-height: 66px; }
    .security-document-form { padding: 17px; }
    .security-register__head { align-items: flex-start; }
    .security-register__tools { align-items: flex-end; flex-direction: column-reverse; }
    .security-document-group-head small { display: none; }
}

/* Catalogue documentaire — vues Syndic et Technicien */
.document-catalog-page { max-width: 980px; gap: 16px; }
.document-catalog-page [hidden] { display: none !important; }
.document-catalog-hero { padding-bottom: 4px; }
.document-catalog-hero h1 { color: #16181D; font-size: 24px; font-weight: 620; letter-spacing: -.02em; }
.document-catalog-hero__eyebrow { margin: 0 0 5px; color: #83888F; font-size: 11px; font-weight: 550; letter-spacing: .07em; text-transform: uppercase; }
.document-catalog-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; overflow: hidden; border: 1px solid #E8E9EB; border-radius: 14px; background: #E8E9EB; }
.document-catalog-stats > div { min-height: 86px; display: grid; align-content: center; gap: 4px; padding: 15px 20px; background: #fff; }
.document-catalog-stats span { color: #83888F; font-size: 11px; font-weight: 550; letter-spacing: .07em; text-transform: uppercase; }
.document-catalog-stats strong { color: #16181D; font-size: 22px; font-weight: 620; font-variant-numeric: tabular-nums; letter-spacing: -.015em; }
.document-catalog-stats strong.is-warning { color: #9A6700; }
.document-catalog-search { height: 44px; display: flex; align-items: center; gap: 10px; padding: 0 12px; border: 1px solid #E8E9EB; border-radius: 11px; background: #fff; transition: border-color .14s ease, box-shadow .14s ease; }
.document-catalog-search:focus-within { border-color: #AFC4EB; box-shadow: 0 0 0 3px rgba(37, 99, 235, .1); }
.document-catalog-search > svg { width: 17px; flex: 0 0 auto; fill: none; stroke: #83888F; stroke-width: 1.8; stroke-linecap: round; }
.document-catalog-search input { width: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none !important; color: #16181D; font-size: 14px; }
.document-catalog-search kbd { flex: 0 0 auto; padding: 2px 6px; border: 1px solid #E2E4E7; border-bottom-color: #D2D5D9; border-radius: 5px; background: #FAFAFB; color: #83888F; font-family: inherit; font-size: 10px; }
.document-catalog-list { display: grid; gap: 12px; }
.document-catalog-card { overflow: hidden; border: 1px solid #E8E9EB; border-radius: 14px; background: #fff; }
.document-catalog-card__head { min-height: 68px; display: flex; align-items: center; gap: 11px; padding: 13px 18px; }
.document-catalog-card__mark { width: 32px; height: 32px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 8px; background: #F5F7FA; color: #667085; }
.document-catalog-card__mark svg { width: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.document-catalog-card__head > div { min-width: 0; flex: 1; }
.document-catalog-card__head h2 { margin: 0; overflow: hidden; color: #16181D; font-size: 14px; font-weight: 620; letter-spacing: -.01em; text-overflow: ellipsis; white-space: nowrap; }
.document-catalog-card__head p { margin: 2px 0 0; overflow: hidden; color: #83888F; font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.document-catalog-card__count { padding: 2px 8px; border: 1px solid #E8E9EB; border-radius: 999px; color: #83888F; font-size: 11px; font-weight: 600; }
.document-catalog-card__rows { border-top: 1px solid #F0F1F2; }
.document-catalog-row { min-width: 0; display: grid; grid-template-columns: 9px minmax(0, 1fr) auto; align-items: start; gap: 11px; padding: 12px 18px 13px; }
.document-catalog-row + .document-catalog-row { border-top: 1px solid #F0F1F2; }
.document-catalog-row:hover { background: #FAFAFB; }
.document-catalog-row > .security-category-dot { width: 7px; height: 7px; margin-top: 5px; box-shadow: none; }
.document-catalog-row__body { min-width: 0; }
.document-catalog-row__title { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.document-catalog-row__title h3 { margin: 0; color: #2D3036; font-size: 14px; font-weight: 590; }
.document-catalog-row__title > span { padding: 2px 6px; border-radius: 999px; background: #FFF5DF; color: #9A6700; font-size: 9px; font-weight: 600; text-transform: uppercase; }
.document-catalog-row__title > .document-catalog-row__folder { background: #EEF4FF; color: #1D4ED8; }
.document-catalog-row > time { color: #83888F; font-size: 11px; font-weight: 550; font-variant-numeric: tabular-nums; white-space: nowrap; }
.document-catalog-row__files { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.document-catalog-row__files > small { color: #B4B8BE; font-size: 10.5px; font-style: italic; }
.document-catalog-row__files a { min-width: 0; display: inline-flex; align-items: center; gap: 6px; padding: 4px 7px; border: 1px solid #E8E9EB; border-radius: 7px; background: #fff; color: #4B5058; font-size: 10.5px; font-weight: 550; }
.document-catalog-row__files a:hover { border-color: #C8D5EE; background: #F7F9FD; color: #1D4ED8; }
.document-catalog-row__files a svg { width: 13px; flex: 0 0 auto; fill: none; stroke: #2563EB; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.document-catalog-row__files a span { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.document-catalog-row__files a small { color: #83888F; font-size: 9px; }
.document-catalog-empty { min-height: 230px; display: grid; place-content: center; justify-items: center; padding: 30px; border: 1px dashed #D9DCE1; border-radius: 14px; color: #83888F; text-align: center; }
.document-catalog-empty > span { width: 42px; height: 42px; display: grid; place-items: center; margin-bottom: 10px; border-radius: 10px; background: #F5F7FA; color: #83888F; }
.document-catalog-empty svg { width: 21px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.document-catalog-empty strong { color: #2D3036; font-size: 14px; font-weight: 590; }
.document-catalog-empty p { margin: 4px 0 0; font-size: 12px; }
@media (max-width: 720px) {
    .document-catalog-stats > div { min-height: 68px; padding: 12px 14px; }
    .document-catalog-stats span { font-size: 9px; }
    .document-catalog-stats strong { font-size: 19px; }
    .document-catalog-search kbd { display: none; }
    .document-catalog-card__head { padding: 12px 14px; }
    .document-catalog-row { grid-template-columns: 8px minmax(0, 1fr); padding: 12px 14px; }
    .document-catalog-row > time { grid-column: 2; grid-row: 2; margin-top: 5px; }
    .document-catalog-row__files a span { max-width: 190px; }
}

/* Paramètres de surveillance documentaire ----------------------------- */
.monitoring-settings-page {
    --mon-ink: #17191D;
    --mon-ink-2: #484D55;
    --mon-ink-3: #818892;
    --mon-line: #E5E8EC;
    --mon-line-soft: #F0F2F4;
    --mon-paper: #FFFFFF;
    width: min(100%, 1040px);
    display: grid;
    gap: 18px;
    padding-bottom: calc(30px + var(--safe-bottom));
    color: var(--mon-ink);
}
.monitoring-settings-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 6px 0 5px; }
.monitoring-settings-hero > div { min-width: 0; flex: 1 1 440px; }
.monitoring-settings-kicker { margin: 0 0 5px; color: var(--mon-ink-3); font-size: 10.5px; font-weight: 650; letter-spacing: .085em; text-transform: uppercase; }
.monitoring-settings-hero h1 { margin: 0; color: var(--mon-ink); font-size: clamp(23px, 3vw, 29px); font-weight: 650; letter-spacing: -.03em; }
.monitoring-settings-hero > div > p:last-child { max-width: 590px; margin: 7px 0 0; color: var(--mon-ink-3); font-size: 13px; line-height: 1.5; }
.monitoring-building-card { min-width: 320px; max-width: 390px; display: grid; grid-template-columns: 38px minmax(0, 1fr) 18px; align-items: center; gap: 11px; padding: 11px 13px; border: 1px solid var(--mon-line); border-radius: 14px; background: var(--mon-paper); transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.monitoring-building-card:hover { border-color: #C7D4EB; box-shadow: 0 8px 24px rgba(15, 23, 42, .06); transform: translateY(-1px); }
.monitoring-building-card__icon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 10px; background: #EEF4FF; color: #2F6FED; }
.monitoring-building-card__icon svg { width: 19px; }
.monitoring-building-card > span:nth-child(2) { min-width: 0; display: grid; gap: 1px; }
.monitoring-building-card small { color: var(--mon-ink-3); font-size: 9px; font-style: normal; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; }
.monitoring-building-card strong { overflow: hidden; color: var(--mon-ink); font-size: 14px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.monitoring-building-card em { overflow: hidden; color: var(--mon-ink-3); font-size: 10.5px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.monitoring-building-card > svg { width: 18px; color: #A5ABB3; }
.monitoring-building-card svg,
.monitoring-settings-page svg { fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }

.monitoring-settings-form { overflow: hidden; border: 1px solid var(--mon-line); border-radius: 16px; background: var(--mon-paper); }

/* Dossier CE — référentiel partagé, certificats propres à l’ascenseur */
.monitoring-form-section--ce > :not(.monitoring-form-section__intro) { min-width: 0; grid-column: 2; }
.monitoring-ce-requirements { width: 100%; max-width: 100%; margin-top: 22px; padding-top: 22px; overflow: hidden; border-top: 1px solid var(--mon-line); }
.monitoring-ce-requirements__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 14px; }
.monitoring-ce-requirements__head h3 { margin: 0; color: var(--mon-ink); font-size: 14px; font-weight: 680; }
.monitoring-ce-requirements__head p { margin: 4px 0 0; color: var(--mon-ink-3); font-size: 11.5px; }
.monitoring-ce-manage { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; padding: 5px 7px; color: #52647d; font-size: 10.5px; font-weight: 650; white-space: nowrap; }
.monitoring-ce-manage:hover { color: #2f6fd4; text-decoration: none; }
.monitoring-ce-manage svg { width: 14px; }
.monitoring-ce-requirements__list { min-width: 0; display: grid; gap: 9px; }
.monitoring-ce-requirement { display: grid; grid-template-columns: minmax(0, 1fr) 34px; gap: 9px; align-items: end; padding: 11px; border: 1px solid var(--mon-line); border-radius: 11px; background: #fbfcfe; }
.monitoring-ce-requirement label { min-width: 0; }
.monitoring-ce-requirement label > span { display: block; margin-bottom: 5px; color: var(--mon-ink-2); font-size: 10.5px; font-weight: 650; }
.monitoring-ce-requirement input, .monitoring-ce-requirement select { width: 100%; height: 40px; min-height: 40px; padding: 0 10px; border: 1px solid var(--mon-line); border-radius: 8px; background: #fff; color: var(--mon-ink); font: inherit; font-size: 14px; }
.monitoring-ce-requirement__remove { width: 40px; height: 40px; align-self: end; display: grid; place-items: center; box-sizing: border-box; margin: 0; padding: 0; border: 1px solid #f2caca; border-radius: 8px; background: #fff; color: #b83b3b; line-height: 0; cursor: pointer; }
.monitoring-ce-requirement__remove svg { display: block; width: 16px; height: 16px; }
.monitoring-ce-add { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; padding: 8px 11px; border: 1px dashed #9bb5dc; border-radius: 8px; background: #f7faff; color: #2563b9; font: inherit; font-size: 14px; font-weight: 650; cursor: pointer; }
.monitoring-ce-add svg { width: 15px; }
.monitoring-ce-verification { margin-top: 22px; }
.monitoring-ce-construction-hint { margin: 0 0 10px; padding: 8px 10px; border-left: 3px solid #8b5cf6; border-radius: 0 7px 7px 0; background: #f7f4ff; color: #665682; font-size: 10.5px; }

.security-ce-fields { display: grid; grid-template-columns: 1fr; gap: 12px; padding: 14px; border: 1px solid #dce9e4; border-radius: 10px; background: #f7fbf9; }
.security-ce-fields[hidden] { display: none; }
.security-ce-fields__head { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.security-ce-fields__head span { display: block; color: #658178; font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.security-ce-fields__head strong { display: block; margin-top: 2px; color: #173d32; font-size: 12.5px; }
.security-ce-fields__head a { color: #16745b; font-size: 10.5px; font-weight: 650; }
.security-ce-field { min-width: 0; }
.security-ce-field--full { grid-column: 1 / -1; }
.security-ce-field > span { display: block; margin-bottom: 5px; color: #365c51; font-size: 10.5px; font-weight: 650; }
.security-ce-field > span small { color: #82968f; font-weight: 500; }
.security-ce-field input, .security-ce-field select { width: 100%; min-height: 40px; padding: 0 10px; border: 1px solid #cadbd5; border-radius: 8px; background: #fff; color: var(--sd-ink); font: inherit; font-size: 14px; }
.security-ce-fields__empty { grid-column: 1 / -1; margin: 0; padding: 9px 10px; border-radius: 7px; background: #edf6f2; color: #56756b; font-size: 10.5px; }
.security-ce-classifier { margin: 7px 0; }
.security-ce-classifier summary { width: fit-content; color: #16745b; font-size: 10px; font-weight: 650; cursor: pointer; }
.security-ce-classifier form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 7px; margin-top: 8px; padding: 8px; border: 1px solid #dce9e4; border-radius: 8px; background: #f7fbf9; }
.security-ce-classifier select, .security-ce-classifier input { min-width: 0; min-height: 34px; padding: 0 8px; border: 1px solid #cadbd5; border-radius: 7px; background: #fff; font: inherit; font-size: 14px; }

.ce-types-page { --ce-ink: #17202d; --ce-muted: #718096; --ce-line: #e2e7ee; max-width: 1220px; display: grid; gap: 20px; }
.ce-types-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.ce-types-hero p { margin: 0 0 5px; color: #728095; font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.ce-types-hero h1 { margin: 0; color: var(--ce-ink); font-size: 28px; letter-spacing: -.035em; }
.ce-types-hero span { display: block; max-width: 700px; margin-top: 7px; color: var(--ce-muted); font-size: 13px; }
.ce-types-layout { display: grid; grid-template-columns: minmax(250px, 320px) minmax(0, 1fr); gap: 16px; align-items: start; }
.ce-types-create, .ce-types-register { padding: 18px; border: 1px solid var(--ce-line); border-radius: 14px; background: #fff; }
.ce-types-create { position: sticky; top: 18px; }
.ce-types-section-head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 16px; }
.ce-types-section-head > span { min-width: 28px; height: 28px; display: grid; place-items: center; border-radius: 8px; background: #eaf2ff; color: #2f6fd4; font-size: 11px; font-weight: 750; }
.ce-types-section-head h2 { margin: 0; color: var(--ce-ink); font-size: 15px; }
.ce-types-section-head p { margin: 3px 0 0; color: var(--ce-muted); font-size: 10.5px; line-height: 1.4; }
.ce-types-create form { display: grid; gap: 13px; }
.ce-types-create form .btn { width: 100%; min-height: 42px; justify-content: center; }
.ce-types-create form > label > span, .ce-type-row label > span { display: block; margin-bottom: 5px; color: #526072; font-size: 10px; font-weight: 650; }
.ce-types-create input[type="text"], .ce-type-row input, .ce-type-row select { width: 100%; min-height: 39px; padding: 0 10px; border: 1px solid var(--ce-line); border-radius: 8px; background: #fff; font: inherit; font-size: 14px; }
.ce-types-list { display: grid; gap: 8px; }
.ce-type-row { display: grid; grid-template-columns: 5px minmax(220px, 1fr) auto; gap: 12px; align-items: end; padding: 12px; border: 1px solid var(--ce-line); border-radius: 10px; }
.ce-type-row__mark { align-self: stretch; border-radius: 4px; background: #36a779; }
.ce-type-row__actions { display: flex; align-items: center; gap: 7px; }
.ce-type-row .btn, .ce-type-archive, .ce-type-restore { min-height: 39px; align-self: end; box-sizing: border-box; margin: 0; padding: 0 13px; border-radius: 8px; font: inherit; font-size: 14px; font-weight: 650; white-space: nowrap; cursor: pointer; }
.ce-type-archive { border: 1px solid #efc7c7; background: #fff; color: #b53b3b; }
.ce-type-archive:hover { border-color: #dfa6a6; background: #fff8f8; }
.ce-type-restore { border: 1px solid #b9dccc; background: #f5fbf8; color: #247657; }
.ce-type-row.is-archived { opacity: .58; background: #f7f8fa; }
.ce-type-row.is-archived .ce-type-row__mark { background: #aab2bd; }

@media (max-width: 900px) {
    .ce-types-layout { grid-template-columns: 1fr; }
    .ce-types-create { position: static; }
    .ce-type-row { grid-template-columns: 5px minmax(0, 1fr) auto; }
}

@media (max-width: 620px) {
    .monitoring-ce-requirements__head, .ce-types-hero { align-items: stretch; flex-direction: column; }
    .monitoring-ce-requirement { grid-template-columns: 1fr 40px; }
    .monitoring-ce-requirement label { grid-column: 1; }
    .monitoring-ce-requirement__remove { grid-column: 2; grid-row: 1; }
    .security-ce-fields { grid-template-columns: 1fr; }
    .security-ce-field, .security-ce-field--full, .security-ce-fields__head, .security-ce-fields__empty { grid-column: 1; }
    .security-ce-classifier form { grid-template-columns: 1fr; }
    .ce-type-row { grid-template-columns: 5px 1fr; }
    .ce-type-row > label, .ce-type-row__name { grid-column: 2; }
    .ce-type-row__actions { grid-column: 2; }
    .ce-type-row .btn { justify-content: center; }
}
.monitoring-form-section { display: grid; grid-template-columns: minmax(230px, .72fr) minmax(0, 1.45fr); gap: 34px; padding: 29px 30px; border-bottom: 1px solid var(--mon-line); }
.monitoring-form-section__intro { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-content: start; gap: 13px; }
.monitoring-section-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; }
.monitoring-section-icon svg { width: 20px; }
.monitoring-section-icon.is-blue { background: #EDF4FF; color: #2F6FED; }
.monitoring-section-icon.is-amber { background: #FFF5DF; color: #A86900; }
.monitoring-section-icon.is-green { background: #ECF8F0; color: #1C7A45; }
.monitoring-section-icon.is-violet { background: #F3EEFF; color: #7152C8; }
.monitoring-form-section__intro > div > span { display: block; margin-bottom: 2px; color: #A3A8AF; font-size: 9.5px; font-weight: 700; letter-spacing: .1em; }
.monitoring-form-section__intro h2 { margin: 0; color: var(--mon-ink); font-size: 15px; font-weight: 650; letter-spacing: -.015em; }
.monitoring-form-section__intro p { margin: 6px 0 0; color: var(--mon-ink-3); font-size: 11.5px; line-height: 1.48; }
.monitoring-fields-grid { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 20px 14px; }
.monitoring-section-fields { min-width: 0; display: grid; align-content: start; gap: 20px; }
.monitoring-field { min-width: 0; display: grid; gap: 6px; margin: 0; }
.monitoring-field--wide { grid-column: 1 / -1; }
.monitoring-field > span:first-child,
.monitoring-field > label,
.monitoring-choice-fieldset legend { margin: 0; color: var(--mon-ink-2); font-size: 11.5px; font-weight: 650; }
.monitoring-field > small { color: var(--mon-ink-3); font-size: 10px; font-weight: 450; line-height: 1.4; }
.monitoring-field input,
.monitoring-field textarea { min-width: 0; border-color: #DDE1E6; border-radius: 10px; background: #FCFCFD; color: var(--mon-ink); font-size: 14px; box-shadow: inset 0 1px 1px rgba(15, 23, 42, .015); }
.monitoring-field input { height: 46px; padding: 9px 12px; }
.monitoring-field textarea { min-height: 92px; padding: 12px; line-height: 1.45; resize: vertical; }
.monitoring-field input:hover,
.monitoring-field textarea:hover { border-color: #C9CED6; }
.monitoring-field input:focus,
.monitoring-field textarea:focus { border-color: #8EACE4; background: #fff; box-shadow: 0 0 0 3px rgba(47, 111, 237, .1); outline: none; }
.monitoring-input-with-icon { position: relative; display: block; }
.monitoring-input-with-icon > svg { position: absolute; top: 50%; left: 13px; z-index: 1; width: 17px; color: #88919E; pointer-events: none; transform: translateY(-50%); }
.monitoring-input-with-icon > input { padding-left: 42px; }
.monitoring-input-with-icon input[type="date"] { min-width: 0; }
.monitoring-date-control { position: relative; min-width: 0; height: 46px; display: grid; grid-template-columns: 42px 10px 42px 10px minmax(62px, 1fr) 43px; align-items: center; overflow: hidden; border: 1px solid #DDE1E6; border-radius: 10px; background: #FCFCFD; transition: border-color .14s ease, box-shadow .14s ease, background-color .14s ease; }
.monitoring-date-control:hover { border-color: #C9CED6; }
.monitoring-date-control:focus-within { border-color: #8EACE4; background: #fff; box-shadow: 0 0 0 3px rgba(47, 111, 237, .1); }
.monitoring-date-control > input[type="text"] { width: 100%; min-width: 0; height: 44px; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--mon-ink); font-size: 14px; font-variant-numeric: tabular-nums; text-align: center; outline: none; }
.monitoring-date-control > input[data-monitoring-date-year] { text-align: left; }
.monitoring-date-control > span { color: #B4B9C0; font-size: 12px; text-align: center; }
.monitoring-date-control > button { width: 43px; height: 44px; display: grid; place-items: center; padding: 0; border: 0; border-left: 1px solid #E6E8EB; background: transparent; color: #2F6FED; }
.monitoring-date-control > button:hover { background: #F3F6FB; }
.monitoring-date-control > button svg { width: 17px; }
.monitoring-date-native { position: absolute; right: 0; bottom: 0; width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; opacity: 0; pointer-events: none; }
.monitoring-date-control.is-invalid { border-color: #D9534F; background: #FFF9F9; box-shadow: 0 0 0 3px rgba(217, 83, 79, .08); }
.monitoring-date-error { color: #B93835 !important; font-size: 10px !important; font-weight: 550 !important; }
.monitoring-date-error[hidden] { display: none !important; }
.monitoring-field--justification { overflow: hidden; max-height: 180px; opacity: 1; transition: max-height .2s ease, opacity .16s ease; }
.monitoring-field--justification.is-hidden { max-height: 0; opacity: 0; pointer-events: none; }
.monitoring-commissioning-input.is-hidden { display: none; }

.monitoring-choice-fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.monitoring-choice-fieldset legend { margin-bottom: 8px; }
.monitoring-choice-grid { display: grid; gap: 9px; }
.monitoring-choice-grid.is-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.monitoring-choice-grid.is-four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.monitoring-precision-grid { width: fit-content; display: inline-flex; gap: 3px; padding: 3px; border: 1px solid #dfe3e9; border-radius: 9px; background: #f5f6f8; }
.monitoring-precision-choice { position: relative; margin: 0; cursor: pointer; }
.monitoring-precision-choice input { position: absolute; width: 1px; height: 1px; min-height: 0; opacity: 0; pointer-events: none; }
.monitoring-precision-choice span { min-height: 30px; display: inline-flex; align-items: center; padding: 0 10px; border-radius: 6px; color: #747d89; font-size: 10.5px; font-weight: 620; white-space: nowrap; transition: background-color .14s ease, color .14s ease, box-shadow .14s ease; }
.monitoring-precision-choice:hover span { color: #435064; }
.monitoring-precision-choice input:checked + span { background: #fff; color: #2f64bc; box-shadow: 0 1px 3px rgba(15, 23, 42, .1); }
.monitoring-precision-choice input:focus-visible + span { outline: 2px solid rgba(47, 111, 237, .25); outline-offset: 1px; }
.monitoring-precision-note { display: block; margin-top: 6px; color: var(--mon-ink-3); font-size: 9.5px; line-height: 1.35; }
.monitoring-storage-choice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.monitoring-storage-choice > span { min-height: 86px; }
.monitoring-storage-choice.is-drive > input:checked + span { border-color: #b7c6df; background: #f5f7fb; box-shadow: inset 0 0 0 1px rgba(75, 96, 132, .08); }
.monitoring-storage-choice.is-drive > input:checked + span i { border-color: #53657f; background: #53657f; }
.monitoring-storage-choice.is-drive > input:checked + span strong { color: #394b66; }
.monitoring-storage-choice.is-portal > input:checked + span { border-color: #9fd7c8; background: #f1faf7; box-shadow: inset 0 0 0 1px rgba(15, 118, 110, .08); }
.monitoring-storage-choice.is-portal > input:checked + span i { border-color: #0f766e; background: #0f766e; }
.monitoring-storage-choice.is-portal > input:checked + span strong { color: #0f675f; }
.monitoring-storage-note { margin: 9px 1px 0; color: var(--mon-ink-3); font-size: 10.5px; line-height: 1.45; }
.monitoring-choice { position: relative; min-width: 0; margin: 0; cursor: pointer; }
.monitoring-choice > input { position: absolute; width: 1px; height: 1px; min-height: 0; opacity: 0; pointer-events: none; }
.monitoring-choice > span { min-height: 75px; display: grid; grid-template-columns: 17px minmax(0, 1fr); align-content: center; column-gap: 8px; padding: 11px 12px; border: 1px solid #E1E4E8; border-radius: 11px; background: #FCFCFD; transition: border-color .14s ease, background-color .14s ease, box-shadow .14s ease; }
.monitoring-choice:hover > span { border-color: #C9D3E4; background: #FAFBFD; }
.monitoring-choice i { position: relative; width: 17px; height: 17px; grid-row: 1 / span 2; align-self: center; border: 1.5px solid #B8BEC7; border-radius: 50%; background: #fff; }
.monitoring-choice strong { min-width: 0; overflow: hidden; color: var(--mon-ink-2); font-size: 12px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.monitoring-choice small { overflow: hidden; color: var(--mon-ink-3); font-size: 9.5px; font-weight: 450; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.monitoring-choice > input:checked + span { border-color: #AFC4EB; background: #F5F8FF; box-shadow: inset 0 0 0 1px rgba(47, 111, 237, .1); }
.monitoring-choice > input:checked + span i { border-color: #2F6FED; box-shadow: inset 0 0 0 4px #fff; background: #2F6FED; }
.monitoring-choice > input:checked + span strong { color: #1F56C5; }
.monitoring-choice > input:focus-visible + span { outline: 3px solid rgba(47, 111, 237, .18); outline-offset: 2px; }
.monitoring-choice--compact > span { min-height: 70px; grid-template-columns: 1fr; justify-items: center; gap: 1px; padding: 10px 8px; text-align: center; }
.monitoring-choice--compact i { width: 8px; height: 8px; grid-row: auto; margin-bottom: 4px; border: 0; background: #C7CCD3; box-shadow: none !important; }
.monitoring-choice--compact > input:checked + span i { background: #2F6FED; }

.monitoring-form-actions { display: flex; align-items: center; gap: 10px; padding: 17px 20px 17px 30px; background: #FAFAFB; }
.monitoring-form-actions > div { min-width: 0; display: flex; align-items: center; gap: 8px; margin-right: auto; color: var(--mon-ink-3); font-size: 10.5px; }
.monitoring-form-actions > div svg { width: 16px; flex: 0 0 auto; }
.monitoring-form-actions .btn { min-height: 40px; border-radius: 9px; box-shadow: none; font-size: 14px; }
.monitoring-save { gap: 9px; }
.monitoring-save svg { width: 16px; }

@media (max-width: 900px) {
    .monitoring-settings-hero { align-items: stretch; flex-direction: column; gap: 16px; }
    .monitoring-settings-hero > div { flex: 0 1 auto; }
    .monitoring-building-card { width: 100%; max-width: none; min-width: 0; }
    .monitoring-form-section { grid-template-columns: 1fr; gap: 22px; }
    .monitoring-form-section--ce > :not(.monitoring-form-section__intro) { grid-column: 1; }
}
@media (max-width: 680px) {
    .monitoring-settings-page { gap: 14px; padding-top: 4px; }
    .monitoring-settings-hero h1 { font-size: 23px; }
    .monitoring-settings-hero > div > p:last-child { font-size: 12px; }
    .monitoring-settings-form { border-radius: 14px; }
    .monitoring-form-section { gap: 19px; padding: 22px 17px; }
    .monitoring-form-section__intro { grid-template-columns: 38px minmax(0, 1fr); gap: 11px; }
    .monitoring-section-icon { width: 38px; height: 38px; }
    .monitoring-fields-grid { grid-template-columns: 1fr; }
    .monitoring-field--wide { grid-column: auto; }
    .monitoring-choice-grid.is-three,
    .monitoring-choice-grid.is-four,
    .monitoring-storage-choice-grid { grid-template-columns: 1fr; }
    .monitoring-precision-grid { width: 100%; }
    .monitoring-precision-choice { flex: 1 1 0; }
    .monitoring-precision-choice span { justify-content: center; padding: 0 6px; }
    .monitoring-choice > span { min-height: 62px; }
    .monitoring-choice--compact > span { min-height: 58px; grid-template-columns: 10px minmax(0, 1fr) auto; justify-items: start; gap: 8px; text-align: left; }
    .monitoring-choice--compact i { grid-row: auto; align-self: center; margin: 0; }
    .monitoring-choice--compact small { justify-self: end; }
    .monitoring-ce-requirements { overflow: visible; }
    .monitoring-ce-requirements__head { min-width: 0; }
    .monitoring-ce-requirements__head > div { min-width: 0; }
    .monitoring-ce-requirement { min-width: 0; max-width: 100%; grid-template-columns: minmax(0, 1fr) 40px; }
    .monitoring-ce-requirement__type,
    .monitoring-ce-requirement select { min-width: 0; max-width: 100%; }
    .monitoring-form-actions { position: static; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px 14px; border-top: 1px solid var(--mon-line); box-shadow: none; }
    .monitoring-form-actions > div { display: none; }
    .monitoring-form-actions .btn { width: 100%; padding-inline: 10px; }
}

/* Portail documentaire d’un ascenseur — mobile-first */
.portal-elevator-documents { --portal-blue: #2F6FED; --portal-blue-dark: #1F56C5; --portal-blue-soft: #EDF4FF; --portal-ink: #181B22; --portal-subtle: #687386; --portal-line: #E5E9F0; --portal-surface: #fff; max-width: 780px; padding-bottom: calc(28px + var(--safe-bottom)); color: var(--portal-ink); }
.portal-elevator-overview { background: transparent; }
.portal-elevator-head { padding: 3px 0 18px; }
.portal-elevator-head__bar { display: flex; align-items: flex-start; justify-content: flex-end; gap: 12px; }
.portal-elevator-head__actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.portal-elevator-head__title-row { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.portal-elevator-head__title-row h1 { min-width: 0; margin-top: 0; }
.portal-elevator-head__title-actions { display: flex; align-items: center; gap: 6px; }
.portal-elevator-head__title-actions .portal-round-action { width: 32px; height: 32px; }
.portal-elevator-head__title-actions .portal-round-action svg { width: 15px; }
.portal-round-action { width: 44px; height: 44px; display: grid; place-items: center; flex: 0 0 auto; padding: 0; border: 1px solid var(--portal-line); border-radius: 50%; background: var(--portal-surface); color: #536175; cursor: pointer; transition: border-color .16s ease, background-color .16s ease, color .16s ease, transform .16s ease; }
.portal-round-action:hover { border-color: #BFD0F5; background: var(--portal-blue-soft); color: var(--portal-blue); }
.portal-round-action:active, .portal-call-action:active { transform: scale(.97); }
.portal-round-action svg, .portal-call-action svg { width: 19px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.portal-call-action { width: 48px; height: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border-radius: 50%; background: var(--portal-blue); color: #fff; box-shadow: 0 7px 18px rgba(47,111,237,.2); transition: background-color .16s ease, transform .16s ease; }
.portal-call-action:hover { background: var(--portal-blue-dark); color: #fff; }
.portal-call-action svg { width: 17px; }
.portal-call-action span { font-size: 9px; font-weight: 700; }
.portal-elevator-head h1 { margin: 8px 0 0; color: var(--portal-ink); font-size: clamp(21px, 5vw, 27px); font-weight: 680; letter-spacing: -.028em; line-height: 1.18; }
.portal-elevator-head > h1:first-child { margin-top: 0; }
.portal-elevator-head__subtitle { margin: 5px 0 0; color: var(--portal-subtle); font-size: 12.5px; line-height: 1.45; }
.portal-elevator-head__phone { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin: 7px 0 0; color: var(--portal-subtle); font-size: 11.5px; }
.portal-elevator-head__phone svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-elevator-head__phone strong { color: var(--portal-ink); font-weight: 650; }
.portal-elevator-head__subtitle > span { display: inline-block; margin-left: 3px; color: #8993A2; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10.5px; }
.portal-elevator-head__tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 13px; }
.portal-status-pill { min-height: 28px; display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px; font-size: 10.5px; font-weight: 650; }
.portal-status-pill svg { width: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-status-pill.is-primary { background: var(--portal-blue-soft); color: #245CC5; }
.portal-status-pill.is-muted { background: #F0F2F5; color: #596576; }
.portal-status-pill.is-qr { border: 1px solid #D9E5FB; background: #fff; color: #245CC5; transition: border-color .15s ease, background-color .15s ease; }
.portal-status-pill.is-manager-mobile { display: none; }
.portal-status-pill.is-qr:hover { border-color: #AFC7F5; background: var(--portal-blue-soft); color: var(--portal-blue-dark); }
.portal-monitoring { padding: 14px 0 17px; border-top: 1px solid var(--portal-line); }
.portal-monitoring__heading { display: none; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 10px; }
.portal-monitoring__heading span { display: block; color: #8A94A3; font-size: 9px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.portal-monitoring__heading h2 { margin: 2px 0 0; color: var(--portal-ink); font-size: 15px; font-weight: 680; letter-spacing: -.012em; }
.portal-monitoring__heading > a { color: #65738A; font-size: 10px; font-weight: 650; }
.portal-monitoring__heading > a:hover { color: var(--portal-blue-dark); }
.portal-monitoring__grid { display: flex; gap: 10px; margin-right: calc(var(--page-pad) * -1); padding-right: var(--page-pad); overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
.portal-monitoring__grid::-webkit-scrollbar { display: none; }
.portal-monitoring-card { --monitor-tone: #697586; --monitor-soft: #F0F2F5; min-width: 0; flex: 0 0 210px; padding: 13px 14px 15px; border: 1px solid var(--portal-line); border-top: 4px solid var(--monitor-tone); border-radius: 0 0 13px 13px; background: #fff; scroll-snap-align: start; }
.portal-monitoring-card.is-ok { --monitor-tone: #238153; --monitor-soft: #EAF7F0; }
.portal-monitoring-card.is-due_soon { --monitor-tone: #A96800; --monitor-soft: #FFF3D8; border-color: #ECD9AE; }
.portal-monitoring-card.is-missing { --monitor-tone: #B4232F; --monitor-soft: #FFF0F1; border-color: #F1CDCD; }
.portal-monitoring-card.is-late { --monitor-tone: #B83E3E; --monitor-soft: #FFF0F0; border-color: #F1CDCD; }
.portal-monitoring-card.is-incomplete { --monitor-tone: #65738A; --monitor-soft: #EEF1F5; }
.portal-monitoring-card { border-top-color: var(--monitor-tone); }
.portal-monitoring-card__mobile { display: grid; gap: 3px; }
.portal-monitoring-card__mobile span { overflow: hidden; color: #727C8B; font-size: 11.5px; font-weight: 580; text-overflow: ellipsis; white-space: nowrap; }
.portal-monitoring-card__mobile strong { color: var(--monitor-tone); font-size: 15px; font-weight: 720; line-height: 1.25; }
.portal-monitoring-card__mobile small { overflow: hidden; color: #A0A7B1; font-size: 10.5px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.portal-monitoring-card__desktop { display: none; }
.portal-monitoring-card__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.portal-monitoring-card__top > div { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 9px; flex: 1; }
.portal-monitoring-card__top > div > span { overflow: hidden; color: #556274; font-size: 10.5px; font-weight: 680; text-overflow: ellipsis; white-space: nowrap; }
.portal-monitoring-card__top > div > strong { flex: 0 0 auto; padding: 3px 7px; border-radius: 999px; background: var(--monitor-soft); color: var(--monitor-tone); font-size: 8.5px; font-weight: 750; letter-spacing: .015em; }
.portal-monitoring-card__icon { width: 30px; height: 30px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; background: var(--monitor-soft); color: var(--monitor-tone); }
.portal-monitoring-card__icon svg { width: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-monitoring-card h3 { margin: 11px 0 3px; color: #252A33; font-size: 12px; font-weight: 690; line-height: 1.3; }
.portal-monitoring-card p { margin: 0; color: #727C8B; font-size: 10.5px; line-height: 1.48; }
.portal-monitoring-card__facts { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.portal-monitoring-card__facts > div { min-width: 0; display: grid; gap: 1px; padding: 5px 8px; border-radius: 7px; background: #F5F7FA; }
.portal-monitoring-card__facts dt { color: #8993A2; font-size: 7.5px; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; }
.portal-monitoring-card__facts dd { margin: 0; color: #4E5A6B; font-size: 9px; font-weight: 680; }
.portal-monitoring-card__actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 11px; }
.portal-monitoring-card__actions a { min-height: 31px; display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 0 9px; border: 1px solid #D8DFE9; border-radius: 8px; color: #596576; font-size: 9.5px; font-weight: 680; }
.portal-monitoring-card__actions a:hover { border-color: #B9CBED; background: #F5F8FF; color: var(--portal-blue-dark); }
.portal-monitoring-card__actions a.is-primary { border-color: var(--portal-blue); background: var(--portal-blue); color: #fff; }
.portal-monitoring-card__actions a.is-primary:hover { background: var(--portal-blue-dark); }
.portal-monitoring-card__actions svg { width: 12px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.portal-qr-manager { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 12px; margin: 0 0 14px; padding: 14px 0; border: 0; border-top: 1px solid var(--portal-line); border-radius: 0; background: transparent; }
.portal-qr-manager.is-active { border-color: var(--portal-line); box-shadow: none; }
.portal-qr-manager.is-disabled { background: transparent; }
.portal-qr-manager__icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; background: var(--portal-blue-soft); color: var(--portal-blue); }
.portal-qr-manager.is-disabled .portal-qr-manager__icon { background: #E8EBEF; color: #8993A2; }
.portal-qr-manager__icon svg { width: 21px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.portal-qr-manager__body { min-width: 0; }
.portal-qr-manager__body > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.portal-qr-manager__body > header span { display: block; color: #8993A2; font-size: 9px; font-weight: 650; letter-spacing: .065em; text-transform: uppercase; }
.portal-qr-manager__body > header h2 { margin: 2px 0 0; color: var(--portal-ink); font-size: 14px; font-weight: 680; }
.portal-qr-manager__body > header > strong { padding: 3px 8px; border-radius: 999px; background: #EAF8EE; color: #277747; font-size: 9px; font-weight: 700; white-space: nowrap; }
.portal-qr-manager.is-ready .portal-qr-manager__body > header > strong { background: #FFF3D8; color: #956000; }
.portal-qr-manager.is-disabled .portal-qr-manager__body > header > strong { background: #E8EBEF; color: #697586; }
.portal-qr-manager__body > p { max-width: 510px; margin: 8px 0 11px; color: #6D7786; font-size: 11px; line-height: 1.5; }
.portal-qr-manager__active { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 13px; margin-top: 11px; }
.portal-qr-manager__preview { width: 88px; height: 88px; display: grid; place-items: center; overflow: hidden; border: 1px solid #DDE3EC; border-radius: 10px; background: #fff; }
.portal-qr-manager__preview img { width: 100%; height: 100%; object-fit: contain; }
.portal-qr-manager__preview.is-missing { padding: 10px; background: #F0F2F5; color: #8993A2; font-size: 9px; text-align: center; }
.portal-qr-manager__details { min-width: 0; display: grid; align-content: center; gap: 4px; }
.portal-qr-manager__details > span { color: #8993A2; font-size: 10px; }
.portal-qr-manager__details > span strong { color: #536175; font-weight: 650; }
.portal-qr-manager__actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 5px; }
.portal-qr-manager__actions form { margin: 0; }
.portal-qr-action { min-height: 32px; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; border: 1px solid #D7DEE8; border-radius: 8px; background: #fff; color: #536175; font-size: 9.5px; font-weight: 680; cursor: pointer; }
.portal-qr-action:hover { border-color: #AFC5ED; background: #F5F8FF; color: var(--portal-blue-dark); }
.portal-qr-action.is-primary { border-color: var(--portal-blue); background: var(--portal-blue); color: #fff; }
.portal-qr-action.is-primary:hover { background: var(--portal-blue-dark); color: #fff; }
.portal-qr-action.is-bridge { border-color: #9bb5dc; background: #f7faff; color: #2563b9; }
.portal-qr-action.is-bridge:hover { border-color: #6f96d2; background: #edf4ff; color: #174f9f; }
.portal-qr-action.is-disabled { border-color: #e1e5eb; background: #f6f7f9; color: #9aa3af; cursor: not-allowed; }
.portal-qr-action.is-danger { border-color: #F0C6C6; color: #B33A3A; }
.portal-qr-action.is-danger:hover { background: #FFF3F3; color: #982D2D; }
.portal-document-filters::-webkit-scrollbar { display: none; }
.portal-document-toolbar { position: sticky; z-index: 8; top: 0; margin: 10px calc(var(--page-pad) * -1) 0; padding-top: 10px; border-bottom: 1px solid var(--portal-line); background: rgba(246,248,250,.96); backdrop-filter: blur(12px); }
.portal-document-search { height: 48px; display: flex; align-items: center; gap: 9px; margin: 0 var(--page-pad); padding: 0 9px 0 13px; border: 1px solid #E0E5EC; border-radius: 14px; background: #EEF1F5; color: #758195; }
.portal-document-search:focus-within { border-color: #9CB9F2; box-shadow: 0 0 0 3px rgba(47,111,237,.1); }
.portal-document-search > svg, .portal-document-search button svg { width: 19px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; }
.portal-document-search input { min-width: 0; min-height: 38px !important; flex: 1; padding: 0 12px !important; border: 1px solid #D7DCE4 !important; border-radius: 11px !important; background: #fff !important; box-shadow: none !important; color: var(--portal-ink); font-size: 12px !important; }
.portal-document-search input::placeholder { color: #A0A7B2; }
.portal-document-search button { width: 32px; height: 32px; display: grid; place-items: center; flex: 0 0 auto; padding: 0; border: 0; background: transparent; color: #7E8795; cursor: pointer; }
.portal-document-filter-gap { display: block; width: 100%; height: 11px; min-height: 11px; }
.portal-document-filters { display: flex; gap: 7px; padding: 0 var(--page-pad) 11px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
.portal-document-filters button { min-height: 34px; display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; padding: 0 12px; border: 1px solid #D8DEE7; border-radius: 999px; background: var(--portal-surface); color: #596576; font-size: 10.5px; font-weight: 650; cursor: pointer; scroll-snap-align: start; transition: border-color .15s ease, background-color .15s ease, color .15s ease; }
.portal-document-filters button span { color: #98A1AE; font-size: 9.5px; font-weight: 600; }
.portal-document-filters button.is-active { border-color: var(--portal-blue); background: var(--portal-blue); color: #fff; }
.portal-document-filters button.is-active span { color: rgba(255,255,255,.75); }
.portal-document-section-label { display: flex; justify-content: space-between; align-items: baseline; padding: 16px 1px 6px; color: #7A8494; font-size: 10px; font-weight: 650; }
.portal-document-list { overflow: hidden; border: 1px solid var(--portal-line); border-radius: 14px; background: var(--portal-surface); }
.portal-document-item + .portal-document-item { border-top: 1px solid var(--portal-line); }
.portal-document-row { min-height: 74px; display: flex; align-items: center; gap: 11px; padding: 11px 13px; color: var(--portal-ink); transition: background-color .15s ease; }
a.portal-document-row:hover { background: #F7F9FC; color: var(--portal-ink); }
.portal-document-row.is-unavailable { opacity: .72; }
.portal-document-row__icon { width: 40px; height: 40px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 10px; background: #F0F2F5; color: #617083; }
.portal-document-row__icon.is-blue { background: #EDF4FF; color: #2F6FED; }
.portal-document-row__icon.is-amber { background: #FFF5DF; color: #B87506; }
.portal-document-row__icon.is-green { background: #ECF8F0; color: #208B4E; }
.portal-document-row__icon.is-violet { background: #F4EEFF; color: #7544D4; }
.portal-document-row__icon svg { width: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.portal-document-row__body { min-width: 0; display: grid; gap: 2px; flex: 1; }
.portal-document-row__body strong { overflow: hidden; color: var(--portal-ink); font-size: 12.5px; font-weight: 660; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.portal-document-row__body small { color: #7D8796; font-size: 10.5px; line-height: 1.4; }
.portal-document-row__warning { display: inline-flex; align-items: center; gap: 4px; width: fit-content; margin-top: 1px; color: #9A6500; font-size: 9.5px; font-weight: 650; }
.portal-document-row__warning svg { width: 12px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; }
.portal-document-row__warning.is-resolved { color: #26754b; }
.portal-document-row__chevron { width: 16px; flex: 0 0 auto; fill: none; stroke: #ABB2BC; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-document-row__missing { color: #9AA2AE; font-size: 9.5px; white-space: nowrap; }
.portal-document-internal-note {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 8px;
    margin: -2px 13px 11px 64px;
    padding: 8px 10px;
    border: 1px solid #E1E6ED;
    border-radius: 8px;
    background: #F6F8FB;
    color: #536175;
}
.portal-document-internal-note > span {
    padding-top: 1px;
    color: #718096;
    font-size: 9.5px;
    font-weight: 750;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.portal-document-internal-note p {
    min-width: 0;
    margin: 0;
    font-size: 11px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}
.portal-document-internal-note.is-collapsible p {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}
.portal-document-internal-note.is-expanded p { display: block; overflow: visible; }
.portal-document-internal-note__content { min-width: 0; }
.portal-document-internal-note__content button {
    min-height: 30px;
    margin: 3px 0 -4px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--portal-blue-dark);
    font: inherit;
    font-size: 10.5px;
    font-weight: 700;
    cursor: pointer;
}
.portal-document-internal-note__content button[hidden] { display: none; }
.portal-document-internal-note__content button:focus-visible { outline: 2px solid var(--portal-blue); outline-offset: 2px; }
.portal-document-attachments { display: grid; gap: 5px; padding: 0 13px 11px 64px; }
.portal-document-attachments a { min-width: 0; display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-radius: 7px; background: #F5F7FA; color: #596576; font-size: 10px; }
.portal-document-attachments a:hover { background: var(--portal-blue-soft); color: var(--portal-blue-dark); }
.portal-document-attachments svg { width: 14px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.portal-document-attachments span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.portal-document-empty { min-height: 230px; display: grid; place-content: center; justify-items: center; padding: 28px; border: 1px dashed #D5DBE4; border-radius: 14px; color: #7A8494; text-align: center; }
.portal-document-empty[hidden] { display: none; }
.portal-document-empty > span { width: 45px; height: 45px; display: grid; place-items: center; margin-bottom: 10px; border-radius: 11px; background: #EDF1F6; color: #718096; }
.portal-document-empty > span svg { width: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.portal-document-empty strong { color: #3C4654; font-size: 13px; }
.portal-document-empty p { max-width: 280px; margin: 4px 0 0; font-size: 11px; }
.portal-document-empty.is-filtered { min-height: 100px; margin-top: 10px; border: 0; }
@media (min-width: 721px) {
    .portal-elevator-documents { max-width: 1000px; padding-top: 12px; }
    .portal-elevator-overview { overflow: hidden; border: 1px solid var(--portal-line); border-radius: 18px; background: var(--portal-surface); }
    .portal-elevator-head { padding: 18px 24px 25px; border: 0; border-radius: 0; background: transparent; }
    .portal-elevator-head h1 { font-size: 28px; }
    .portal-elevator-head__subtitle { margin-top: 6px; font-size: 14px; }
    .portal-elevator-head__tags { gap: 8px; margin-top: 14px; }
    .portal-status-pill { min-height: 30px; padding: 5px 11px; font-size: 11.5px; }
    .portal-monitoring { padding: 20px 24px 24px; }
    .portal-monitoring__heading { display: flex; margin-bottom: 13px; }
    .portal-monitoring__heading span { font-size: 10px; }
    .portal-monitoring__heading h2 { margin-top: 3px; font-size: 17px; }
    .portal-monitoring__heading > a { font-size: 11.5px; }
    .portal-monitoring__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-right: 0; padding-right: 0; overflow: visible; }
    .portal-monitoring-card { flex: initial; padding: 16px; border-top-width: 2px; border-radius: 13px; }
    .portal-monitoring-card__mobile { display: none; }
    .portal-monitoring-card__desktop { display: block; }
    .portal-monitoring-card__top { gap: 12px; }
    .portal-monitoring-card__top > div > span { font-size: 12px; }
    .portal-monitoring-card__top > div > strong { padding: 4px 8px; font-size: 9.5px; }
    .portal-monitoring-card__icon { width: 36px; height: 36px; border-radius: 10px; }
    .portal-monitoring-card__icon svg { width: 18px; }
    .portal-monitoring-card h3 { margin-top: 13px; font-size: 14px; }
    .portal-monitoring-card p { margin-top: 3px; font-size: 12px; line-height: 1.5; }
    .portal-monitoring-card__facts { gap: 7px; margin-top: 12px; }
    .portal-monitoring-card__facts > div { gap: 2px; padding: 6px 9px; border-radius: 8px; }
    .portal-monitoring-card__facts dt { font-size: 8.5px; }
    .portal-monitoring-card__facts dd { font-size: 10.5px; }
    .portal-monitoring-card__actions { gap: 7px; margin-top: 13px; }
    .portal-monitoring-card__actions a { min-height: 36px; gap: 5px; padding: 0 12px; border-radius: 9px; font-size: 14px; }
    .portal-monitoring-card__actions svg { width: 13px; }
    .portal-qr-manager { margin: 0; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; padding: 20px 24px 23px; }
    .portal-qr-manager__icon { width: 44px; height: 44px; border-radius: 12px; }
    .portal-qr-manager__icon svg { width: 22px; }
    .portal-qr-manager__body > header span { font-size: 10px; }
    .portal-qr-manager__body > header h2 { font-size: 16px; }
    .portal-qr-manager__body > header > strong { padding: 4px 10px; font-size: 10px; }
    .portal-qr-manager__active { grid-template-columns: 96px minmax(0, 1fr); gap: 15px; }
    .portal-qr-manager__preview { width: 96px; height: 96px; }
    .portal-qr-manager__details { gap: 6px; }
    .portal-qr-manager__details > span { font-size: 11.5px; }
    .portal-qr-action { min-height: 36px; padding: 0 12px; font-size: 14px; }
    .portal-document-toolbar { top: 8px; margin: 18px 0 16px; padding-top: 10px; border: 1px solid var(--portal-line); border-radius: 13px; background: rgba(255,255,255,.95); }
    .portal-document-search { margin-right: 12px; margin-left: 12px; }
    .portal-document-search input { font-size: 14px !important; }
    .portal-document-filters { padding-right: 12px; padding-bottom: 18px; padding-left: 12px; }
    .portal-document-filters button { font-size: 14px; }
    .portal-document-row { min-height: 80px; padding: 13px 16px; }
    .portal-document-row__body strong { font-size: 14px; }
    .portal-document-row__body small { font-size: 11.5px; }
    .portal-document-section-label { font-size: 11.5px; }
}
@media (max-width: 720px) {
    .portal-elevator-documents { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
    .portal-qr-manager { display: none; }
    .portal-elevator-head { padding-bottom: 16px; }
    .portal-elevator-head h1 { margin-top: 12px; font-size: 21px; font-weight: 600; letter-spacing: 0; line-height: 1.25; }
    .portal-elevator-head__title-row h1 { margin-top: 0; }
    .portal-status-pill.is-manager-mobile { display: inline-flex; }
    .portal-elevator-head > h1:first-child { margin-top: 0; }
    .portal-elevator-head__subtitle { margin-top: 3px; font-size: 13px; line-height: 1.45; }
    .portal-elevator-head__tags { gap: 8px; margin-top: 12px; }
    .portal-status-pill { min-height: 0; gap: 5px; padding: 4px 10px; font-size: 12px; font-weight: 600; }
    .portal-status-pill svg { width: 13px; }

    .portal-monitoring { margin-right: calc(var(--page-pad) * -1); margin-left: calc(var(--page-pad) * -1); padding: 4px 16px 16px; border-top: 0; }
    .portal-monitoring__grid { gap: 8px; margin-right: -16px; padding-right: 16px; }
    .portal-monitoring-card { flex-basis: 148px; padding: 10px 12px; border-top-width: 3px; border-radius: 0 0 12px 12px; }
    .portal-monitoring-card__mobile { gap: 0; }
    .portal-monitoring-card__mobile span { font-size: 11px; font-weight: 500; line-height: 1.45; }
    .portal-monitoring-card__mobile strong { margin-top: 3px; font-size: 14px; font-weight: 600; line-height: 1.45; }
    .portal-monitoring-card__mobile small { margin-top: 1px; font-size: 11px; line-height: 1.45; }

    .portal-document-toolbar { margin-top: 0; padding-top: 0; }
    .portal-document-search { height: 44px; gap: 8px; margin: 0 16px 12px; padding: 0 12px; border-radius: 12px; }
    .portal-document-search > svg, .portal-document-search button svg { width: 18px; }
    .portal-document-search input { min-height: 36px !important; padding: 0 10px !important; border-radius: 10px !important; font-size: 14px !important; }
    .portal-document-search button { width: 28px; height: 28px; }
    .portal-document-filter-gap { display: none; }
    .portal-document-filters { gap: 8px; padding: 4px 16px 12px; }
    .portal-document-filters button { min-height: 0; gap: 5px; padding: 8px 14px; font-size: 13px; font-weight: 600; }
    .portal-document-filters button span { font-size: 12px; font-weight: 500; }
    .portal-document-section-label { margin-right: calc(var(--page-pad) * -1); margin-left: calc(var(--page-pad) * -1); padding: 16px 16px 4px; font-size: 12px; font-weight: 600; }
    .portal-document-list { margin-right: calc(var(--page-pad) * -1); margin-left: calc(var(--page-pad) * -1); border-right: 0; border-left: 0; border-radius: 0; }
    .portal-document-row { min-height: 60px; gap: 12px; padding: 12px 16px; }
    .portal-document-row__icon { width: 38px; height: 38px; border-radius: 10px; }
    .portal-document-row__icon svg { width: 19px; }
    .portal-document-row__body { gap: 0; }
    .portal-document-row__body strong { font-size: 14px; font-weight: 600; line-height: 1.3; }
    .portal-document-row__body small { margin-top: 2px; font-size: 12px; line-height: 1.4; }
    .portal-document-row__warning { margin-top: 2px; font-size: 12px; font-weight: 600; }
    .portal-document-row__warning svg { width: 12px; }
    .portal-document-row__chevron { width: 16px; }
    .portal-document-internal-note {
        margin: 0 16px 12px 66px;
        padding: 8px 10px;
    }
    .portal-document-internal-note > span { font-size: 10px; }
    .portal-document-internal-note p { font-size: 12px; }
    .portal-document-internal-note.is-collapsible p { -webkit-line-clamp: 2; }
    .portal-document-internal-note.is-expanded p { -webkit-line-clamp: unset; }
    .portal-document-internal-note__content button { min-height: 44px; margin-bottom: -8px; font-size: 12px; }
}
@media (max-width: 520px) {
    .portal-qr-manager { grid-template-columns: 36px minmax(0, 1fr); padding: 12px; }
    .portal-qr-manager__icon { width: 36px; height: 36px; }
    .portal-qr-manager__active { grid-template-columns: 72px minmax(0, 1fr); }
    .portal-qr-manager__preview { width: 72px; height: 72px; }
}
.demande-document-link {
    margin-top: 8px;
    white-space: nowrap;
}

.demande-document-link--mobile {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    width: fit-content;
    margin: 0 0 10px;
    color: #2563eb;
    font-size: 13px;
    font-weight: 650;
}

.demande-source-document {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
    padding: 12px 14px;
    border: 1px solid #d8e9e6;
    border-radius: 10px;
    background: #f5faf9;
    color: #0f766e;
    font-size: 13px;
    font-weight: 650;
}

.demande-source-document small,
.demande-source-document strong { display: block; }
.demande-source-document small { margin-bottom: 2px; color: #64817d; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }

/* Notes internes des documents SECT liés au ticket : lisibles avant le commentaire. */
.ticket-sect-notes {
    margin-bottom: 18px;
    padding: 14px;
    border: 1px solid #f3d9a4;
    border-radius: 12px;
    background: #fffaf0;
}
.ticket-sect-notes__title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 10px;
    color: #7c4a03;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.ticket-sect-notes__count {
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 999px;
    background: #fde9c0;
    font-size: 12px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.ticket-sect-notes__list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.ticket-sect-note {
    padding: 12px;
    border: 1px solid #f1e3c4;
    border-radius: 10px;
    background: #fff;
}
.ticket-sect-note__head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.ticket-sect-note__name { flex: 1 1 200px; min-width: 0; }
.ticket-sect-note__name strong { display: block; color: var(--color-text, #0f172a); font-size: 14px; }
.ticket-sect-note__name small { color: var(--color-text-light, #64748b); font-size: 12px; }
.ticket-sect-note__badge { padding: 3px 9px; border-radius: 999px; font-size: 12px; font-weight: 650; }
.ticket-sect-note__badge--open { background: #fef3c7; color: #92400e; }
.ticket-sect-note__badge--resolved { background: #dcfce7; color: #166534; }
.ticket-sect-note__open { color: #0f766e; font-size: 13px; font-weight: 650; white-space: nowrap; }
.ticket-sect-note__text {
    margin: 10px 0 0;
    color: var(--color-text, #0f172a);
    font-size: 15px;
    line-height: 1.5;
    white-space: pre-line;
    overflow-wrap: anywhere;
}
.ticket-sect-note__text.is-clamped {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
}
.ticket-sect-note__toggle {
    margin-top: 6px;
    padding: 4px 0;
    border: 0;
    background: none;
    color: #0f766e;
    font-size: 13px;
    font-weight: 650;
    cursor: pointer;
}
.ticket-sect-note__toggle:hover { text-decoration: underline; }
.ticket-sect-note__empty { margin: 8px 0 0; color: var(--color-text-light, #64748b); font-size: 13px; font-style: italic; }

.demande-attachment-section {
    padding: 16px;
    border: 1px solid var(--color-border-soft);
    border-radius: 12px;
    background: #fafbfc;
}
.demande-attachment-section .section-head { align-items: flex-start; margin-bottom: 12px; }
.demande-attachment-section .section-title { margin-bottom: 2px; }
.demande-attachment-section .section-subtitle { margin: 0; color: var(--color-text-light); font-size: 12px; }
.attachment-count { color: var(--color-text-light); font-size: 12px; font-weight: 650; font-variant-numeric: tabular-nums; }
.ticket-attachments { display: grid; gap: 8px; margin-bottom: 12px; }
.ticket-attachment { display: flex; align-items: center; gap: 6px; min-width: 0; }
.ticket-attachment__open {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    min-width: 0;
    flex: 1;
    padding: 9px 10px;
    border: 1px solid var(--color-border);
    border-radius: 9px;
    background: #fff;
}
.ticket-attachment__open:hover { border-color: #bfd0f5; text-decoration: none; }
.ticket-attachment__icon { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; border-radius: 8px; background: var(--color-primary-soft); color: var(--color-primary); }
.ticket-attachment__icon svg { width: 17px; height: 17px; }
.ticket-attachment__body { min-width: 0; }
.ticket-attachment__body strong { display: block; overflow: hidden; color: var(--color-text); font-size: 12.5px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.ticket-attachment__body small { display: block; margin-top: 1px; color: var(--color-text-light); font-size: 10.5px; }
.ticket-attachment__arrow { color: var(--color-muted); font-size: 12px; }
.ticket-attachment__delete { display: inline-flex; width: 30px; height: 30px; align-items: center; justify-content: center; border: 0; border-radius: 8px; background: transparent; color: var(--color-muted); font-size: 19px; }
.ticket-attachment__delete:hover { background: var(--color-danger-soft); color: var(--color-danger); }
.ticket-attachment-upload { display: flex; align-items: center; gap: 10px; margin: 0; padding: 11px 12px; border: 1px dashed #b9c6d8; border-radius: 9px; background: #fff; cursor: pointer; }
.ticket-attachment-upload:hover { border-color: var(--color-primary); background: #f8faff; }
.ticket-attachment-upload.is-dragover { border-color: var(--color-primary); background: var(--color-primary-soft); box-shadow: inset 0 0 0 1px var(--color-primary); transform: translateY(-1px); }
.ticket-attachment-upload.has-files { border-style: solid; border-color: #c8d8f3; background: #f8faff; }
.ticket-attachment-upload__icon { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; border-radius: 8px; background: var(--color-primary-soft); color: var(--color-primary); }
.ticket-attachment-upload__icon svg { width: 18px; height: 18px; }
.ticket-attachment-upload strong, .ticket-attachment-upload small { display: block; }
.ticket-attachment-upload strong { color: var(--color-text); font-size: 12.5px; }
.ticket-attachment-upload small { color: var(--color-text-light); font-size: 10.5px; font-weight: 500; }
.ticket-attachment-selection { display: grid; gap: 7px; margin-top: 10px; }
.ticket-attachment-selection[hidden] { display: none; }
.ticket-attachment-pending { display: grid; grid-template-columns: 42px minmax(0, 1fr) 30px; align-items: center; gap: 10px; padding: 9px 10px; border: 1px solid #d8e4f6; border-radius: 9px; background: #fff; }
.ticket-attachment-pending__badge { display: inline-flex; width: 42px; height: 30px; align-items: center; justify-content: center; border-radius: 7px; background: var(--color-primary-soft); color: var(--color-primary); font-size: 9px; font-weight: 800; letter-spacing: .04em; }
.ticket-attachment-pending__body { min-width: 0; }
.ticket-attachment-pending__body strong { display: block; overflow: hidden; color: var(--color-text); font-size: 12px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.ticket-attachment-pending__body small { display: block; margin-top: 1px; color: #48816f; font-size: 10px; }
.ticket-attachment-pending__remove { display: inline-grid; width: 30px; height: 30px; place-items: center; padding: 0; border: 0; border-radius: 7px; background: transparent; color: var(--color-muted); font-size: 19px; line-height: 1; cursor: pointer; }
.ticket-attachment-pending__remove:hover { background: var(--color-danger-soft); color: var(--color-danger); }
.ticket-attachment-message { min-height: 16px; margin: 7px 1px 0; color: var(--color-text-light); font-size: 10.5px; }
.ticket-attachment-message:empty { min-height: 0; margin-top: 0; }
.ticket-attachment-message[data-tone="success"] { color: #26705c; }
.ticket-attachment-message[data-tone="error"] { color: var(--color-danger); }
.ticket-attachments--compact { gap: 4px; margin: 8px 0 0; }
.ticket-attachments--compact .ticket-attachment__open { grid-template-columns: 22px minmax(0, 1fr) auto; padding: 5px 7px; border-radius: 7px; }
.ticket-attachments--compact .ticket-attachment__icon { width: 22px; height: 22px; border-radius: 5px; }
.ticket-attachments--compact .ticket-attachment__icon svg { width: 13px; height: 13px; }
.ticket-attachments--compact .ticket-attachment__body strong { font-size: 11px; }
.ticket-attachments--compact .ticket-attachment__body small { display: none; }
.demande-offer-link { display: inline-flex; width: fit-content; margin-top: 8px; color: #0f766e; font-size: 12px; font-weight: 650; }
.demande-offer-field-help { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 5px; }
.demande-offer-field-help .field-help,
.demande-offer-link--edit { margin-top: 0; }
.demande-offer-link--edit { flex: 0 0 auto; }

@media (max-width: 760px) {
    .demande-attachment-section { padding: 13px; }
    .ticket-attachment-upload { min-height: 54px; }
    .demande-offer-field-help { align-items: flex-start; flex-direction: column; gap: 6px; }
}
.security-document-picker { padding: 1rem; border: 1px solid var(--border, #dfe5df); border-radius: 12px; }
.security-document-picker > legend { padding: 0 .35rem; font-weight: 700; }
.security-document-picker__results { display: grid; gap: .55rem; margin-top: .75rem; max-height: 24rem; overflow: auto; }
.security-document-picker__item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .75rem; padding: .75rem; border: 1px solid #e4e8e4; border-radius: 10px; background: #fff; cursor: pointer; }
.security-document-picker__item span { display: grid; gap: .15rem; min-width: 0; }
.security-document-picker__item small { color: #687168; overflow-wrap: anywhere; }
.security-document-picker__item em { width: max-content; padding: .12rem .45rem; border-radius: 999px; background: #f0f4ef; color: #4c594c; font-size: .75rem; font-style: normal; }
.linked-security-documents { display: grid; gap: .35rem; margin-top: .55rem; }
.linked-security-document { display: flex; justify-content: space-between; gap: .6rem; padding: .5rem .65rem; border: 1px solid #dfe7df; border-radius: 8px; color: inherit; text-decoration: none; background: #f8faf8; }
.linked-security-document span { display: grid; min-width: 0; }.linked-security-document small { color: #687168; overflow-wrap: anywhere; }.linked-security-document em { align-self: center; font-size: .72rem; font-style: normal; color: #4c594c; }
@media (max-width: 680px) { .security-document-picker__item { grid-template-columns: auto minmax(0, 1fr); } .security-document-picker__item .btn { grid-column: 2; justify-self: start; } }

/* Ticket — sélecteurs de documents de sécurité et d'offre */
.ticket-link-pickers { grid-column: 1 / -1; display: grid; gap: 12px; }
.ticket-link-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 13px 16px; padding: 15px 16px; border: 1px solid #E3E6EA; border-radius: 12px; background: #FCFCFD; }
.ticket-link-card__copy { min-width: 0; display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 11px; }
.ticket-link-card__copy > span:last-child { min-width: 0; display: grid; gap: 2px; }
.ticket-link-card__copy strong { color: #20242A; font-size: 13.5px; font-weight: 620; }
.ticket-link-card__copy small, .ticket-link-card__hint { color: #7C838D; font-size: 11.5px; line-height: 1.4; }
.ticket-link-card__icon { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 9px; background: #EEF4FF; color: #2563EB; }
.ticket-link-card__icon--offer { background: #F0F7F1; color: #237A42; }
.ticket-link-card__icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ticket-link-card__action { min-height: 36px; padding: 7px 12px; border-color: #D8DCE2; background: #fff; color: #303640; font-size: 12.5px; font-weight: 590; white-space: nowrap; }
.ticket-link-card__action:disabled { opacity: .45; cursor: not-allowed; }
.ticket-linked-offer-readonly { grid-column:1 / -1; border-color:#DDE9DF; background:#F8FBF8; }
.ticket-linked-offer-readonly .ticket-link-card__action { color:#225E36; }
.ticket-linked-offer-readonly .ticket-link-card__action:hover { border-color:#BFD5C5; background:#F1F7F2; }
.ticket-link-card__hint { grid-column: 1 / -1; margin: -4px 0 0 47px; }
.ticket-link-selection { grid-column: 1 / -1; display: grid; gap: 7px; padding-top: 11px; border-top: 1px solid #ECEEF1; }
.ticket-link-selected { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto 28px; align-items: center; gap: 10px; padding: 9px 10px 9px 12px; border: 1px solid #DEE5F2; border-radius: 9px; background: #F7FAFF; }
.ticket-link-selected--offer { grid-template-columns: minmax(0, 1fr) auto 28px; border-color: #DDE9DF; background: #F7FBF8; }
.ticket-link-selected > span { min-width: 0; display: grid; gap: 2px; }
.ticket-link-selected strong { overflow: hidden; color: #252A31; font-size: 12.5px; font-weight: 610; text-overflow: ellipsis; white-space: nowrap; }
.ticket-link-selected small { overflow: hidden; color: #747C87; font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.ticket-link-selected > a { color: #2563EB; font-size: 11.5px; font-weight: 590; white-space: nowrap; }
.ticket-link-selected > button { width: 28px; height: 28px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 7px; background: transparent; color: #8A919B; font-size: 19px; cursor: pointer; }
.ticket-link-selected > button:hover { background: #FDEEEE; color: #B72828; }
.ticket-attachment.has-security-note { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; }
.ticket-attachment.has-security-note .ticket-attachment__open { width: 100%; }
.nq-security-document-note { margin: 0 4px 5px 31px; padding: 7px 9px; border-left: 2px solid #E0B04A; border-radius: 0 6px 6px 0; background: #FFF9EC; color: #765818; font-size: 10.5px; line-height: 1.45; white-space: pre-wrap; }
body.ticket-link-dialog-open { overflow: hidden; }
.ticket-link-dialog[hidden] { display: none !important; }
.ticket-link-dialog { position: fixed; z-index: 1500; inset: 0; display: grid; place-items: center; padding: 24px; opacity: 0; transition: opacity .16s ease; }
.ticket-link-dialog.is-open { opacity: 1; }
.ticket-link-dialog__scrim { position: absolute; inset: 0; background: rgba(17, 20, 25, .52); backdrop-filter: blur(2px); }
.ticket-link-dialog__panel { position: relative; width: min(860px, 100%); max-height: min(820px, calc(100vh - 48px)); display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; overflow: hidden; border: 1px solid rgba(255,255,255,.5); border-radius: 16px; background: #FFF; box-shadow: 0 28px 90px rgba(15, 20, 30, .25); transform: translateY(8px) scale(.99); transition: transform .16s ease; }
.ticket-link-dialog.is-open .ticket-link-dialog__panel { transform: none; }
.ticket-link-dialog__panel--offer { width: min(760px, 100%); }
.ticket-link-dialog__head { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 22px 24px 18px; border-bottom: 1px solid #E9EBEE; }
.ticket-link-dialog__head > div { min-width: 0; }
.ticket-link-dialog__eyebrow { display: block; margin-bottom: 4px; color: #2563EB; font-size: 10px; font-weight: 680; letter-spacing: .1em; text-transform: uppercase; }
.ticket-link-dialog__head h2 { margin: 0; color: #171A1F; font-size: 21px; font-weight: 640; letter-spacing: -.025em; }
.ticket-link-dialog__head p { margin: 5px 0 0; color: #777F89; font-size: 12.5px; }
.ticket-link-dialog__close { width: 34px; height: 34px; flex: 0 0 auto; display: grid; place-items: center; padding: 0; border: 1px solid #E2E5E9; border-radius: 9px; background: #FFF; color: #707883; cursor: pointer; }
.ticket-link-dialog__close:hover { background: #F6F7F8; color: #252A31; }
.ticket-link-dialog__close svg { width: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.ticket-link-dialog__tools { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 12px; padding: 14px 24px; border-bottom: 1px solid #EEF0F2; background: #FAFAFB; }
.ticket-link-dialog__tools--single { grid-template-columns: 1fr; }
.ticket-link-dialog__tools > label { min-width: 0; display: grid; gap: 5px; color: #656D77; font-size: 10.5px; font-weight: 610; }
.ticket-link-dialog__tools input, .ticket-link-dialog__tools select { width: 100%; min-height: 40px; border: 1px solid #DDE1E6; border-radius: 9px; background: #FFF; color: #252A31; font-size: 13px; }
.ticket-link-search { position: relative; display: block !important; }
.ticket-link-search svg { position: absolute; z-index: 1; left: 12px; top: 12px; width: 16px; fill: none; stroke: #9299A3; stroke-width: 1.9; stroke-linecap: round; }
.ticket-link-search input { padding-left: 37px; }
.ticket-link-dialog__content { min-height: 220px; overflow: auto; padding: 18px 24px 24px; background: #FFF; }
.ticket-link-group + .ticket-link-group { margin-top: 20px; }
.ticket-link-group > header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.ticket-link-group > header span { color: #555D67; font-size: 11px; font-weight: 680; letter-spacing: .07em; text-transform: uppercase; }
.ticket-link-group > header small { min-width: 20px; padding: 2px 6px; border-radius: 999px; background: #EFF1F3; color: #6D747D; font-size: 9.5px; font-weight: 650; text-align: center; }
.ticket-link-group--alert > header span { color: #A15D00; }
.ticket-link-group--alert > header small { background: #FFF1D6; color: #9A5B00; }
.ticket-link-group > div { display: grid; gap: 7px; }
.ticket-link-row { min-width: 0; display: grid; grid-template-columns: 18px minmax(0, 1fr) auto auto; align-items: center; gap: 11px; padding: 11px 12px; border: 1px solid #E4E7EB; border-radius: 10px; background: #FFF; cursor: pointer; transition: border-color .12s ease, background-color .12s ease; }
.ticket-link-row:hover { border-color: #C8D4EA; background: #FBFCFF; }
.ticket-link-row.is-selected { border-color: #8DB0F5; background: #F3F7FF; box-shadow: inset 3px 0 0 #2563EB; }
.ticket-link-dialog .ticket-link-row input[type="checkbox"], .ticket-link-dialog .ticket-link-row input[type="radio"] { width: 16px; height: 16px; min-height: 16px; margin: 0; padding: 0; border: 0; box-shadow: none; accent-color: #2563EB; }
.ticket-link-row__main { min-width: 0; display: grid; gap: 3px; }
.ticket-link-row__main strong { overflow: hidden; color: #242930; font-size: 13px; font-weight: 610; text-overflow: ellipsis; white-space: nowrap; }
.ticket-link-row__main small { color: #7A828D; font-size: 10.5px; }
.ticket-link-status { padding: 4px 7px; border-radius: 999px; background: #F0F2F4; color: #636B75; font-size: 9.5px; font-weight: 640; white-space: nowrap; }
.ticket-link-status.is-alert { background: #FFF0D4; color: #985900; }
.ticket-link-status.is-resolved { background: #EAF7ED; color: #21733D; }
.ticket-link-row > a { padding: 5px 7px; border-radius: 6px; color: #2563EB; font-size: 10.5px; font-weight: 610; white-space: nowrap; }
.ticket-link-row > a:hover { background: #E9F0FF; }
.ticket-link-empty { margin: 48px auto; color: #858C95; font-size: 13px; text-align: center; }
.ticket-link-dialog__foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 24px; border-top: 1px solid #E8EAED; background: #FAFAFB; color: #69717B; font-size: 11.5px; }
.ticket-link-dialog__foot > div { display: flex; gap: 8px; }
.ticket-link-dialog__foot .btn { min-height: 38px; border-radius: 9px; font-size: 12.5px; }
.ticket-link-remove { padding: 5px 0; border: 0; background: transparent; color: #A33939; font-size: 11.5px; font-weight: 580; cursor: pointer; }
@media (max-width: 680px) {
    .ticket-link-card { grid-template-columns: 1fr; padding: 14px; }
    .ticket-link-card__action { width: 100%; }
    .ticket-link-card__hint { margin-left: 0; }
    .ticket-link-dialog {
        inset: auto 0 auto 0;
        top: var(--ticket-dialog-visible-top, 0px);
        height: var(--ticket-dialog-visible-height, 100dvh);
        place-items: end center;
        padding: 0;
    }
    .ticket-link-dialog__panel, .ticket-link-dialog__panel--offer {
        width: 100%;
        max-height: min(92%, calc(100% - 8px));
        border-radius: 16px 16px 0 0;
    }
    .ticket-link-dialog__head { padding: 18px 17px 15px; }
    .ticket-link-dialog__head h2 { font-size: 19px; }
    .ticket-link-dialog__tools { grid-template-columns: 1fr; padding: 12px 16px; }
    .ticket-link-dialog__content { min-height: 0; padding: 14px 16px 20px; overscroll-behavior: contain; }
    .ticket-link-row { grid-template-columns: 18px minmax(0, 1fr) auto; }
    .ticket-link-row > a { grid-column: 2 / -1; justify-self: start; }
    .ticket-link-status { justify-self: end; }
    .ticket-link-dialog__foot { align-items: stretch; flex-direction: column; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); }
    .ticket-link-dialog__foot > div { width: 100%; }
    .ticket-link-dialog__foot .btn { flex: 1; }
    .ticket-link-selected--offer { grid-template-columns: minmax(0, 1fr) 28px; }
    .ticket-link-selected:not(.ticket-link-selected--offer) { grid-template-columns: minmax(0, 1fr) 28px; }
    .ticket-link-selected:not(.ticket-link-selected--offer) > a { grid-column: 1; }
    .ticket-link-selected--offer > a { grid-column: 1; }
}

/* Messages d'un terme */
.step-messages { display: grid; gap: 12px; }
.step-messages .section-title { margin: 0; }
.step-messages__empty { margin: 0; color: var(--color-text-muted); font-size: 14px; }
.step-messages__list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.step-message { padding: 10px 12px; border: 1px solid var(--color-border-soft); border-radius: 12px; background: var(--color-bg-soft); }
.step-message__meta { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; font-size: 13px; }
.step-message__meta time { color: var(--color-text-light); font-size: 12px; }
.step-message__text { margin: 4px 0 0; font-size: 14px; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; }
.term-messages__none { margin: 6px 0; color: var(--color-text-light); font-size: 12px; }
.term-messages { margin: 8px 0; border: 1px solid var(--color-border-soft); border-radius: 10px; background: var(--color-bg); }
.term-messages__summary { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-height: 40px; padding: 8px 12px; box-sizing: border-box; color: var(--color-primary); font-size: 13px; cursor: pointer; }
.term-messages__summary svg { width: 15px; height: 15px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.term-messages__summary:focus-visible { outline: 2px solid var(--color-primary); outline-offset: -2px; border-radius: 10px; }
.term-messages__last { color: var(--color-text-muted); font-size: 12px; }
.term-messages__list { padding: 0 10px 10px; }
