:root{--color-primary:#000091;--color-primary-50:#e5e5f7;--color-secondary:#666666;--color-tertiary:#570000;--color-tertiary-50:#f6e5e5;--color-neutral:#f6f6f6;--color-white:#ffffff;--color-border:#dddddd;--font-sans:"Marianne",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--radius:6px;--shadow:0 1px 3px rgba(0,0,0,0.12);--header-height:56px}*{box-sizing:border-box}.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}body{margin:0;font-family:var(--font-sans);background:var(--color-neutral);color:#1b1b1b;line-height:1.5}a{color:var(--color-primary)}.container{max-width:1200px;margin:0 auto;padding:1.5rem 1rem}.app-header{background:var(--color-primary);color:var(--color-white)}.app-header__inner{display:flex;align-items:center;padding:.5rem 1.25rem}.app-header__brand{font-weight:700;color:var(--color-white);text-decoration:none;font-size:1.05rem;white-space:nowrap}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:1rem;gap:1rem}.card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem}.card--link{display:block;text-decoration:none;color:inherit;transition:box-shadow .15s ease}.card--link:focus-visible,.card--link:hover{box-shadow:0 2px 8px rgba(0,0,145,.2);border-color:var(--color-primary)}.card__title{margin:0 0 .35rem;font-size:1.05rem;color:var(--color-primary)}.card__desc{margin:0;font-size:.85rem;color:var(--color-secondary)}.alert-banner{background:var(--color-tertiary);color:var(--color-white);border-radius:var(--radius);padding:1rem 1.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.alert-banner__level{font-weight:700;letter-spacing:.03em;text-transform:uppercase}.alert-banner__timer{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;opacity:.9;font-size:.9rem}.btn{display:inline-block;border:none;border-radius:var(--radius);padding:.5rem 1rem;font-size:.85rem;font-weight:600;cursor:pointer;text-decoration:none}.btn--primary{background:var(--color-primary);color:var(--color-white)}.btn--inverted{background:var(--color-white);color:var(--color-tertiary)}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:1rem;gap:1rem}.metric-tile{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.metric-tile__label{margin:0 0 .4rem;font-size:.8rem;color:var(--color-secondary);text-transform:uppercase;letter-spacing:.02em}.metric-tile__value{margin:0;font-size:1.6rem;font-weight:700;color:var(--color-primary)}.metric-tile__capacity{font-size:.95rem;color:var(--color-secondary);font-weight:400}.progress-bar{width:100%;height:8px;border-radius:4px;background:var(--color-border);overflow:hidden;margin-top:.5rem}.progress-bar__fill{height:100%;border-radius:4px}.progress-bar__fill--primary{background:var(--color-primary)}.progress-bar__fill--warning{background:var(--color-tertiary)}.map-panel{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.carte-operationnelle__canvas{position:relative;height:clamp(420px,55vh,680px);border-radius:var(--radius);overflow:hidden}.carte-marqueur{width:16px;height:16px;border-radius:50%;border:2px solid var(--color-white);box-shadow:0 0 0 1px rgba(0,0,0,.3);cursor:pointer}.carte-marqueur--besoin{background:var(--color-primary)}.carte-marqueur--alerte{background:var(--color-tertiary)}.carte-marqueur--poi{background:var(--color-secondary);display:flex;align-items:center;justify-content:center}.map-panel__legend-dot--danger{background:var(--color-tertiary)}.map-panel__legend-dot--info{background:var(--color-primary)}.map-panel__legend-dot--poi{background:var(--color-secondary)}.progress-bar__fill--p0{width:0}.progress-bar__fill--p10{width:10%}.progress-bar__fill--p20{width:20%}.progress-bar__fill--p30{width:30%}.progress-bar__fill--p40{width:40%}.progress-bar__fill--p50{width:50%}.progress-bar__fill--p60{width:60%}.progress-bar__fill--p70{width:70%}.progress-bar__fill--p80{width:80%}.progress-bar__fill--p90{width:90%}.progress-bar__fill--p100{width:100%}.section{margin-top:1.25rem}.map-panel__legend{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;font-size:.8rem;color:var(--color-secondary)}.map-panel__legend-item{display:flex;align-items:center;gap:.35rem}.map-panel__legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.status-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.status-badge--danger{background:var(--color-tertiary-50);color:var(--color-tertiary)}.status-badge--info{background:var(--color-primary-50);color:var(--color-primary)}.status-badge--neutral{background:var(--color-border);color:var(--color-secondary)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.timeline__item{border-left:3px solid var(--color-primary);padding:.15rem 0 .15rem .75rem}.timeline__time{font-size:.75rem}.app-footer,.timeline__time{color:var(--color-secondary)}.app-footer{border-top:1px solid var(--color-border);margin-top:2rem;padding:1rem;font-size:.8rem;display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem}.two-col{display:grid;grid-template-columns:2fr 1fr;grid-gap:1rem;gap:1rem}@media (max-width:860px){.two-col{grid-template-columns:1fr}}.app-shell__body{display:flex;flex:1 1;align-items:stretch;min-height:calc(100vh - var(--header-height))}.app-shell__body>main{flex:1 1;min-width:0}.app-sidebar{width:220px;flex:none;background:var(--color-primary);color:var(--color-white);display:flex;flex-direction:column;padding:1rem 0}.app-sidebar__toggle{display:none}.app-sidebar__nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.15rem}.app-sidebar__nav-item{display:flex;align-items:center;padding:.6rem 1rem;color:rgba(255,255,255,.85);text-decoration:none;font-size:.9rem}.app-sidebar__nav-item:focus-visible,.app-sidebar__nav-item:hover{background:rgba(255,255,255,.1);color:var(--color-white)}.app-sidebar__nav-item--active{background:var(--color-white);color:var(--color-primary);font-weight:600}.app-sidebar__nav-item--active:focus-visible,.app-sidebar__nav-item--active:hover{background:var(--color-white);color:var(--color-primary)}.pc-shell__alert{padding:.75rem 1.25rem}.pc-shell__alert .alert-banner{border-radius:0}.pc-shell__main{padding:1.25rem;display:grid;grid-template-columns:minmax(0,3fr) minmax(280px,1fr);grid-auto-rows:min-content;grid-gap:1rem;gap:1rem;align-items:stretch}.pc-shell__map-col{grid-column:1}.pc-shell__kpi-col{grid-column:2;display:flex;flex-direction:column;gap:1rem}.pc-shell__kpi-col>.card:last-child{flex:1 1}.pc-shell__journal-row{grid-column:1/-1}.pc-synthese{padding:0 1.25rem 1.25rem;margin-top:1rem}.pc-synthese__title{margin:0 0 .75rem;font-size:1.1rem;color:var(--color-primary)}.pc-synthese__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:1rem;gap:1rem}.pc-status{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;padding:.75rem 1.25rem;font-size:.8rem;color:var(--color-secondary)}.pc-status__user{display:flex;align-items:center;gap:.5rem}.pc-status__avatar{width:28px;height:28px;border-radius:50%;background:var(--color-primary-50);color:var(--color-primary);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}@media (max-width:960px){.app-shell__body,.app-sidebar{flex-direction:column}.app-sidebar{width:100%;padding:0}.app-sidebar__toggle{display:inline-flex;align-items:center;align-self:flex-start;margin:.5rem;padding:.5rem 1rem;background:rgba(255,255,255,.12);color:var(--color-white);border:1px solid rgba(255,255,255,.4);border-radius:var(--radius);font-size:.9rem;font-family:inherit;cursor:pointer}.app-sidebar__toggle:focus-visible,.app-sidebar__toggle:hover{background:rgba(255,255,255,.22)}.app-sidebar__nav{display:none}.app-sidebar__nav--ouvert{display:flex;flex-direction:column;padding-bottom:.5rem}.pc-shell__main{grid-template-columns:1fr}.pc-shell__kpi-col{grid-column:1}.pc-synthese__grid{grid-template-columns:1fr}}