
@font-face{font-family:'Aspekta';src:url("/assets/fonts/Aspekta-500-e9edaf91.woff2") format('woff2');font-weight:500;font-display:swap;}
@font-face{font-family:'Aspekta';src:url("/assets/fonts/Aspekta-600-76657ceb.woff2") format('woff2');font-weight:600;font-display:swap;}
@font-face{font-family:'Aspekta';src:url("/assets/fonts/Aspekta-700-3de22c84.woff2") format('woff2');font-weight:700;font-display:swap;}
@font-face{font-family:'Aspekta';src:url("/assets/fonts/Aspekta-800-0c18749d.woff2") format('woff2');font-weight:800;font-display:swap;}
@font-face{font-family:'Aspekta';src:url("/assets/fonts/Aspekta-900-88414d66.woff2") format('woff2');font-weight:900;font-display:swap;}
@font-face{font-family:'JetBrains Mono';src:url("/assets/fonts/JetBrainsMono-400-ab6f3b00.woff2") format('woff2');font-weight:400;font-display:swap;}
@font-face{font-family:'JetBrains Mono';src:url("/assets/fonts/JetBrainsMono-700-c911c106.woff2") format('woff2');font-weight:700;font-display:swap;}


@layer base{
html{text-size-adjust:100%;-webkit-text-size-adjust:100%;}
body{margin:0;background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--type-body-size);line-height:var(--type-body-leading);font-weight:var(--type-body-weight);}
a{color:var(--text-accent);}a:hover{color:var(--accent);}
}

:is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:var(--border-width-strong) solid var(--focus-ring);
  outline-offset:2px;
  box-shadow:0 0 0 2px var(--surface);
}


.btn{box-sizing:border-box;height:var(--control-height);display:inline-flex;align-items:center;justify-content:center;font:800 16px/1 var(--font-sans);padding:0 var(--space-6);border:var(--border-width-strong) solid transparent;border-radius:var(--radius-interactive);background:var(--accent);color:var(--on-accent);cursor:pointer;}
.btn:hover{background:var(--accent-hover);color:var(--on-accent-hover);}
.btn:active{transform:translateY(1px);}
.btn[aria-busy="true"]{background:var(--surface-raised);color:var(--status-pending);border:var(--border-width-strong) dashed var(--status-pending);cursor:progress;} 
.btn:disabled{background:var(--border);color:var(--text-secondary);cursor:not-allowed;transform:none;}
.btn--secondary{background:transparent;color:var(--text-primary);border-color:var(--border-color-strong);}
.btn--secondary:hover{background:transparent;color:var(--text-accent);border-color:var(--accent);}
.btn--secondary:disabled{background:transparent;border-color:var(--border);color:var(--text-secondary);}
.btn--discret{background:none;border-color:transparent;height:auto;padding:6px 8px;color:var(--text-accent);font-weight:700;text-decoration:underline;text-decoration-thickness:var(--border-width-strong);text-underline-offset:4px;}
.btn--discret:hover{text-decoration-color:var(--accent);}
.btn--discret:disabled{color:var(--text-secondary);text-decoration:none;background:none;}

.btn-hero{position:relative;z-index:0;border-radius:var(--radius-none);background:var(--accent);color:var(--on-accent);isolation:isolate;}
.btn-hero::before{content:"";position:absolute;inset:6px -6px -6px 6px;background:var(--tension);z-index:-1;pointer-events:none;}
.btn-hero:hover{background:var(--accent-hover);color:var(--on-accent-hover);}
.btn-hero:hover::before{background:var(--text-tension);}
.motion-ok{transition:opacity var(--motion-autorisee) var(--motion-courbe-entree);}


.entete{display:flex;align-items:center;gap:var(--space-8);height:64px;padding:0 var(--space-8);background:var(--surface);border-bottom:var(--border-width-strong) solid var(--border-color-strong);}
.marque{font:800 22px/1 var(--font-sans);color:var(--text-primary);text-decoration:none;}
.marque i{display:inline-block;width:var(--square-tick);height:var(--square-tick);background:var(--accent);margin-left:2px;} 
.entete nav{display:flex;gap:var(--space-6);font:400 var(--type-ref-size)/1 var(--font-mono);letter-spacing:var(--type-ref-tracking);text-transform:uppercase;}
.entete nav a{color:var(--text-secondary);text-decoration:none;}
.entete nav a[aria-current="page"]{color:var(--text-accent);border-bottom:var(--border-width-strong) solid var(--accent);padding-bottom:2px;}
.carte-dossier{background:var(--surface-raised);border:var(--border-width-hairline) solid var(--border);border-radius:var(--radius-card);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);max-width:420px;}
.carte-dossier .ref{font:400 11px/1.4 var(--font-mono);letter-spacing:var(--type-ref-tracking);color:var(--text-secondary);text-transform:uppercase;}
.carte-dossier h3{margin:0;font:700 var(--type-h3-size)/var(--type-h3-leading) var(--font-sans);letter-spacing:var(--type-h3-tracking);}
.carte-dossier p{margin:0;font-size:var(--type-small-size);color:var(--text-secondary);}
.carte-dossier a.titre-lien{color:var(--text-accent-raised);} 
.pied{display:flex;align-items:baseline;gap:var(--space-4);padding:var(--space-6) var(--space-8);border-top:var(--border-width-strong) solid var(--border-color-strong);}
.pied .mentions{margin-left:auto;font:400 10px/1.7 var(--font-mono);letter-spacing:var(--type-ref-tracking);color:var(--text-secondary);text-align:right;}


.etat{display:inline-flex;align-items:center;gap:6px;font:700 var(--type-etat-size)/var(--type-etat-leading) var(--font-mono);letter-spacing:var(--type-etat-tracking);text-transform:uppercase;padding:4px 10px;min-height:28px;box-sizing:border-box;border:var(--border-width-strong) solid;} 
.etat::before{font-weight:700;}
.etat--succes{color:var(--status-success);border-color:var(--status-success);}.etat--succes::before{--marqueur:url("/assets/icons/conforme-d321b6db.svg");}
.etat--alerte{color:var(--status-warning);border-color:var(--status-warning);border-style:double;border-width:3px;padding:3px 9px;}.etat--alerte::before{content:"!";}
.etat--ecart{color:var(--status-critical);border-color:var(--status-critical);border-width:var(--border-width-frame);padding:3px 9px;}.etat--ecart::before{--marqueur:url("/assets/icons/ecart-4346570d.svg");}
.etat--info{color:var(--status-info);border-color:var(--status-info);border-width:var(--border-width-hairline);padding:5px 11px;}.etat--info::before{content:"i";}
.etat--en-cours{color:var(--status-pending);border-color:var(--status-pending);border-style:dashed;}.etat--en-cours::before{--marqueur:url("/assets/icons/en-cours-8360f7a1.svg");}
.etat--neutre{color:var(--text-secondary);border-color:var(--border-control);}
.etat--obsolete{color:var(--text-secondary);border-color:var(--border-control);text-decoration:line-through;text-decoration-thickness:1px;}
.etat--a-verifier{color:var(--text-secondary);border-color:var(--border-control);border-style:dashed;border-width:var(--border-width-strong);}.etat--a-verifier::before{--marqueur:url("/assets/icons/a-verifier-1d7c2da2.svg");} 


.presence{display:inline-flex;align-items:center;gap:6px;font:400 10px var(--font-mono);letter-spacing:0.06em;color:var(--text-secondary);}
.presence i{width:9px;height:9px;flex:none;}
.presence--vivant i{background:var(--status-success);}
.presence--muet i{background:none;border:1.5px solid var(--status-warning);box-sizing:border-box;}
.presence--mort i{background:none;position:relative;}
.presence--mort i::before,.presence--mort i::after{content:"";position:absolute;inset:3.5px -1px;background:var(--status-critical);}
.presence--mort i::before{transform:rotate(45deg);}
.presence--mort i::after{transform:rotate(-45deg);}
.presence--inconnu i{background:none;border:1.5px dashed var(--border-control);box-sizing:border-box;}
.presence-stamp{display:inline-flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;}


.fcf{display:inline-grid;grid-auto-flow:column;border:var(--border-width-strong) solid var(--border-color-strong);font:400 15px/1 var(--font-mono);background:var(--surface);}
.fcf>span{display:grid;place-items:center;min-width:var(--square-marker);height:var(--square-marker);padding:0 8px;box-sizing:border-box;border-right:var(--border-width-strong) solid var(--border-color-strong);} 
.fcf>span:last-child{border-right:none;font-weight:700;} 
.figure-bande{position:relative;margin:0;}
.figure-bande img{display:block;width:100%;filter:grayscale(1);} 
.figure-bande .bande{position:absolute;left:0;right:30%;top:38%;background:var(--accent);color:var(--on-accent);font:800 24px/1 var(--font-sans);padding:var(--space-3) var(--space-6);} 
.bloc-nombre{overflow:hidden;background:var(--surface);}
.bloc-nombre .nombre{font:900 var(--type-nombre-size)/var(--type-nombre-leading) var(--font-sans);letter-spacing:var(--type-nombre-tracking);color:var(--accent);white-space:nowrap;margin-top:-0.31em;} 
.bloc-nombre .source{font:400 var(--type-ref-size)/var(--type-ref-leading) var(--font-mono);letter-spacing:var(--type-ref-tracking);color:var(--text-secondary);text-transform:uppercase;padding:var(--space-3) 0;}
.repere{display:grid;place-items:center;width:var(--square-marker);height:var(--square-marker);border:var(--border-width-strong) solid var(--border-color-strong);font:700 16px/1 var(--font-mono);}
.reglette{color:var(--border-color-strong);display:block;} 
.champ-controle,.champ input,.champ select,.champ textarea{border:var(--border-width-hairline) solid var(--border-control);border-radius:var(--radius-interactive);} 


.etat--succes::before,.etat--ecart::before,.etat--en-cours::before,.etat--a-verifier::before{content:"";width:11px;height:11px;flex:none;background:currentColor;-webkit-mask:var(--marqueur) center/contain no-repeat;mask:var(--marqueur) center/contain no-repeat;}

.champ input:hover:not(:disabled):not([readonly]),.champ select:hover:not(:disabled),.champ textarea:hover:not(:disabled){border-color:var(--border-color-strong);}

@media (max-width:640px){
 .entete{flex-wrap:wrap;height:auto;padding:10px var(--space-4);row-gap:6px;}
 .entete nav{flex-wrap:wrap;}
 .pied{flex-wrap:wrap;}
}


.freshness,.fraicheur{white-space:nowrap;display:inline-flex;align-items:baseline;gap:var(--space-2);font:400 var(--type-small-size)/1.4 var(--font-sans);}
.freshness.is-stale .freshness-label{color:var(--status-warning);font-weight:700;}
.freshness.is-down .freshness-label{color:var(--status-critical);}
.freshness.is-fresh .chip-up{box-shadow:0 0 0 var(--border-width-strong) var(--status-success);}
.freshness .chip{display:inline-flex;align-items:center;font:700 var(--type-etat-size)/var(--type-etat-leading) var(--font-mono);letter-spacing:var(--type-etat-tracking);text-transform:uppercase;padding:3px 8px;border:var(--border-width-strong) solid var(--border-control);border-radius:var(--radius-none);color:var(--text-secondary);}
.freshness .chip-up{color:var(--status-success);border-color:var(--status-success);}
.freshness .chip-down{color:var(--status-critical);border-color:var(--status-critical);border-width:var(--border-width-frame);}
@media (max-width:640px){
 .freshness,.fraicheur{white-space:normal;flex-wrap:wrap;}
}


.champ{display:flex;flex-direction:column;gap:6px;max-width:360px;}
.champ>label{font:700 13px var(--font-sans);color:var(--text-primary);}
.champ .facultatif{font:400 11px var(--font-mono);color:var(--text-secondary);letter-spacing:0.04em;}
.champ input[type="text"],.champ input[type="email"],.champ input[type="date"],.champ input[type="password"],.champ input[type="number"],.champ input[type="search"],.champ input[type="file"],.champ textarea,.champ select{
  font:500 15px var(--font-sans);color:var(--text-primary);background:var(--surface);
  border:var(--border-width-hairline) solid var(--border-control);padding:10px 12px;
  border-radius:var(--radius-interactive);width:100%;box-sizing:border-box;
}
.champ textarea{min-height:88px;resize:vertical;}
.champ input[type="text"],.champ input[type="email"],.champ input[type="date"],.champ input[type="password"],.champ input[type="number"],.champ input[type="search"],.champ select{height:var(--control-height);}
.champ .aide{font:500 12px var(--font-sans);color:var(--text-secondary);}
.champ .erreur{display:flex;gap:6px;font:700 12px var(--font-sans);color:var(--status-critical);}
.champ .erreur::before{content:"";width:10px;height:10px;flex:none;margin-top:3px;background:currentColor;-webkit-mask:url("/assets/icons/ecart-4346570d.svg") center/contain no-repeat;mask:url("/assets/icons/ecart-4346570d.svg") center/contain no-repeat;}
.champ.est-invalide input,.champ.est-invalide textarea,.champ.est-invalide select{border:var(--border-width-strong) solid var(--status-critical);}
.champ input[readonly],.champ textarea[readonly]{background:var(--surface-raised);border-style:dashed;}
.champ input:disabled,.champ select:disabled,.champ textarea:disabled{background:var(--surface-raised);color:var(--text-secondary);border-color:var(--border);cursor:not-allowed;}
fieldset.groupe{border:var(--border-width-hairline) solid var(--border);padding:var(--space-4);margin:0;display:flex;flex-direction:column;gap:var(--space-4);border-radius:var(--radius-card);}
fieldset.groupe>legend{font:400 11px var(--font-mono);letter-spacing:0.08em;text-transform:uppercase;color:var(--text-secondary);padding:0 6px;}
.case,.radio{display:flex;align-items:flex-start;gap:10px;font:500 14px var(--font-sans);color:var(--text-primary);cursor:pointer;}
.case input,.radio input,.carte-radio input{appearance:none;width:18px;height:18px;margin:1px 0 0;border:var(--border-width-strong) solid var(--border-control);background:var(--surface);flex:none;cursor:pointer;border-radius:var(--radius-interactive);}
.case input:checked{border-color:var(--border-color-strong);background:var(--surface);box-shadow:inset 0 0 0 3px var(--surface),inset 0 0 0 18px var(--border-color-strong);}
.radio input:checked,.carte-radio input:checked{border-color:var(--border-color-strong);box-shadow:inset 0 0 0 3.5px var(--surface),inset 0 0 0 18px var(--accent);}
.carte-radio{display:flex;gap:12px;align-items:flex-start;border:var(--border-width-hairline) solid var(--border-control);padding:var(--space-4);cursor:pointer;background:var(--surface);border-radius:var(--radius-card);}
.carte-radio:has(input:checked){border:var(--border-width-strong) solid var(--border-color-strong);background:var(--surface-raised);}
.carte-radio .titre{font:700 14px var(--font-sans);}
.carte-radio .detail{font:500 12px var(--font-sans);color:var(--text-secondary);}
.inter{display:inline-flex;align-items:center;gap:10px;font:500 14px var(--font-sans);cursor:pointer;}
.inter input{appearance:none;width:40px;height:22px;margin:0;border:var(--border-width-strong) solid var(--border-control);background:var(--surface);position:relative;cursor:pointer;border-radius:var(--radius-interactive);flex:none;}
.inter input::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:var(--border-control);transition:transform var(--motion-duree-1) var(--motion-courbe-entree);border-radius:var(--radius-none);}
.inter input:checked{border-color:var(--border-color-strong);}
.inter input:checked::after{transform:translateX(18px);background:var(--accent);}
.curseur{accent-color:var(--accent);width:100%;}
.televerse{border:var(--border-width-hairline) dashed var(--border-control);padding:var(--space-4);display:flex;flex-direction:column;gap:8px;font:500 13px var(--font-sans);color:var(--text-secondary);border-radius:var(--radius-interactive);}
.liste-options{border:var(--border-width-strong) solid var(--border-color-strong);background:var(--surface);margin-top:-1px;border-radius:var(--radius-interactive);max-height:220px;overflow:auto;}
.liste-options [role="option"]{padding:8px 12px;font:500 14px var(--font-sans);cursor:pointer;}
.liste-options [role="option"][aria-selected="true"]{font-weight:700;background:var(--surface-raised);}
.champ-recherche{position:relative;}
.champ-recherche input{padding-left:36px;}
.champ-recherche .glyphe-recherche{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-secondary);pointer-events:none;}


.pagination{display:flex;gap:4px;align-items:center;font:400 13px var(--font-mono);flex-wrap:wrap;}
.pagination a,.pagination span{display:grid;place-items:center;min-width:32px;height:32px;padding:0 6px;text-decoration:none;color:var(--text-primary);border:var(--border-width-hairline) solid transparent;border-radius:var(--radius-interactive);}
.pagination a:hover{border-color:var(--border-control);}
.pagination [aria-current="page"]{border:var(--border-width-strong) solid var(--border-color-strong);font-weight:700;}
.pagination .ellipse{color:var(--text-secondary);}
.conteneur-table{overflow-x:auto;max-width:100%;}
.table-dense{width:100%;min-width:499px;border-collapse:collapse;font-size:var(--densite-type-rang);background:var(--surface);}
.table-dense th{position:sticky;top:0;background:var(--surface);text-align:left;font:400 11px var(--font-mono);letter-spacing:0.08em;text-transform:uppercase;color:var(--text-secondary);padding:var(--densite-cell-y) var(--densite-cell-x);border-bottom:var(--border-width-strong) solid var(--border-color-strong);white-space:nowrap;}
.table-dense th[aria-sort] button{all:unset;cursor:pointer;font:inherit;color:inherit;display:inline-flex;gap:4px;}
.table-dense th[aria-sort="ascending"] button::after{content:"↑";color:var(--text-accent);}
.table-dense th[aria-sort="descending"] button::after{content:"↓";color:var(--text-accent);}
.table-dense td{padding:var(--densite-cell-y) var(--densite-cell-x);border-bottom:var(--border-width-hairline) solid var(--border);height:calc(var(--densite-rang-h) - 2 * var(--densite-cell-y));font-weight:500;color:var(--text-primary);}
.table-dense td.nombre,.table-dense th.nombre{text-align:right;font-family:var(--font-mono);letter-spacing:0;}
.table-dense tr:hover td{background:var(--surface-raised);}
.table-dense tr[aria-selected="true"] td{background:var(--surface-raised);border-bottom-color:var(--border-control);}
.table-dense tr.est-active td{border-bottom:var(--border-width-strong) solid var(--accent);}
.table-dense tr.est-erreur td:first-child{border-left:var(--border-width-frame) solid var(--status-critical);}
.table-dense .col-fixe{position:sticky;left:0;background:var(--surface);}
.rang-deplie{background:var(--surface-raised);font:500 13px var(--font-sans);color:var(--text-secondary);}
.table-vide{border:var(--border-width-hairline) solid var(--border);padding:var(--space-8);text-align:center;}


.toast{display:flex;align-items:center;gap:12px;background:var(--surface);border:var(--border-width-strong) solid var(--border-color-strong);border-left-width:var(--border-width-frame);padding:12px 16px;max-width:420px;font:500 14px var(--font-sans);color:var(--text-primary);border-radius:var(--radius-card);}
.toast[data-etat="succes"]{border-left-color:var(--status-success);}
.toast[data-etat="alerte"]{border-left-color:var(--status-warning);}
.toast[data-etat="critique"]{border-left-color:var(--status-critical);}
.toast[data-etat="info"]{border-left-color:var(--status-info);}
.bandeau{display:flex;align-items:center;gap:12px;padding:10px var(--space-4);border:var(--border-width-hairline) solid var(--status-warning);font:500 13px var(--font-sans);color:var(--text-primary);background:var(--surface);}
.bandeau[data-etat="succes"]{border-color:var(--status-success);}
.bandeau[data-etat="critique"]{border-color:var(--status-critical);}
.bandeau[data-etat="info"]{border-color:var(--status-info);}

.toast{max-width:min(420px,100%);box-sizing:border-box;flex-wrap:wrap;}
.bandeau{max-width:100%;box-sizing:border-box;flex-wrap:wrap;}
.toast>.etat,.bandeau>.etat{max-width:100%;overflow-wrap:anywhere;}
.toast__message,.bandeau__message{flex:1 1 12ch;min-width:0;overflow-wrap:anywhere;}
dialog.dialogue{border:var(--border-width-strong) solid var(--border-color-strong);background:var(--surface);color:var(--text-primary);padding:var(--space-6);max-width:440px;border-radius:var(--radius-card);}
dialog.dialogue::backdrop{background:color-mix(in srgb, var(--scrim) 64%, transparent);}
dialog.dialogue h3{margin:0 0 6px;font:800 18px var(--font-sans);}
dialog.dialogue p{margin:0 0 var(--space-4);font:500 13px var(--font-sans);color:var(--text-secondary);}
.vide{border:var(--border-width-hairline) dashed var(--border-control);padding:var(--space-8);display:flex;flex-direction:column;gap:10px;align-items:flex-start;border-radius:var(--radius-card);}
.vide .quoi{font:800 16px var(--font-sans);color:var(--text-primary);}
.vide .geste{font:500 13px var(--font-sans);color:var(--text-secondary);}
.squelette{display:flex;flex-direction:column;gap:10px;}
.squelette i{display:block;height:14px;background:repeating-linear-gradient(45deg,var(--surface-raised) 0,var(--surface-raised) 6px,var(--border) 6px,var(--border) 7px);animation:sq var(--motion-duree-3) linear infinite alternate;}
.squelette i:nth-child(1){width:60%;}.squelette i:nth-child(2){width:90%;}.squelette i:nth-child(3){width:75%;}.squelette i:nth-child(4){width:85%;}
.squelette i:nth-child(5){width:70%;}.squelette i:nth-child(6){width:95%;}.squelette i:nth-child(7){width:50%;}.squelette i:nth-child(8){width:80%;}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@keyframes sq{from{opacity:1;}to{opacity:0.45;}}
.page-erreur{border:var(--border-width-strong) solid var(--border-color-strong);background:var(--surface);padding:var(--space-6);overflow:hidden;position:relative;min-height:230px;display:flex;flex-direction:column;justify-content:flex-end;border-radius:var(--radius-card);}
.page-erreur .code{position:absolute;right:-16px;top:-30px;font:900 230px/0.82 var(--font-sans);letter-spacing:-0.03em;color:var(--border);z-index:0;}
.page-erreur .quoi,.page-erreur .geste{position:relative;z-index:1;}
.page-erreur .quoi{font:800 18px var(--font-sans);margin-top:10px;}
.page-erreur .geste{font:500 13px var(--font-sans);color:var(--text-secondary);margin-top:4px;}
.page-connexion{max-width:380px;border:var(--border-width-strong) solid var(--border-color-strong);padding:var(--space-6);display:flex;flex-direction:column;gap:14px;background:var(--surface);border-radius:var(--radius-card);}


.flux-lien{fill:none;stroke:currentColor;stroke-width:1.6;color:var(--text-primary);}
.flux-lien--principal{stroke-width:1.8;} 
.flux-lien--optionnel{stroke-width:var(--border-width-hairline);} 
.flux-lien--verifie{stroke-width:1.6;} 
.flux-lien--raffine{stroke-dasharray:5 3;} 
.flux-lien--conflit{stroke-width:1.6;} 
.flux-lien--securite{stroke-dasharray:12 4;} 
.flux-legende{display:flex;flex-wrap:wrap;gap:var(--space-4);font:400 10px var(--font-mono);letter-spacing:0.05em;color:var(--text-secondary);margin-top:var(--space-2);}
.flux-legende span{display:inline-flex;align-items:center;gap:7px;}
.flux-legende svg{flex:none;width:40px;height:12px;}
.flux-legende .glyphe{width:14px;height:14px;color:var(--text-primary);}

@media (max-width:640px){
 .pagination,.fraicheur{flex-wrap:wrap;}
 .dialogue,dialog.dialogue{max-width:100%;box-sizing:border-box;}
 .page-erreur .code{font-size:140px;right:-8px;top:-16px;}
 .champ{max-width:100%;}
}
