/* Polices auto-hébergées (aucun appel à Google Fonts). */
@font-face{font-family:"Sora";font-weight:500;font-display:swap;src:url(/static/fonts/sora-500.woff2) format("woff2")}
@font-face{font-family:"Sora";font-weight:600;font-display:swap;src:url(/static/fonts/sora-600.woff2) format("woff2")}
@font-face{font-family:"Sora";font-weight:700;font-display:swap;src:url(/static/fonts/sora-700.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:400;font-display:swap;src:url(/static/fonts/plex-400.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:500;font-display:swap;src:url(/static/fonts/plex-500.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-weight:600;font-display:swap;src:url(/static/fonts/plex-600.woff2) format("woff2")}

/* ===== Styles de la maquette validée (maquette/cockpit.html), repris tels quels ===== */
/* Layout : barre d'onglets colorée en tête, puis une grille 2/3 + 1/3 sur PC, une colonne sur mobile. Dark-first anthracite. */
:root{
  --bg:#1b2024; --bg2:#23292e; --card:#2a3137; --line:#3a434b; --fg:#eef1f3; --fg2:#b4bec6; --fg3:#7d8891;
  --rouge:#e5484d; --rouge-bg:#3a2224; --bleu:#3b82f6; --bleu-bg:#1e2b40; --rose:#ec4899; --rose-bg:#3a2232; --vert:#22c55e; --vert-bg:#1c3328; --gris:#8a97a3; --gris-bg:#2d353c; --orange:#f59e0b; --jaune:#fbbf24;
  --ok:#22c55e; --ko:#e5484d; --warn:#f59e0b;
  --display:"Sora","IBM Plex Sans",system-ui,sans-serif; --body:"IBM Plex Sans",system-ui,sans-serif;
  color-scheme:dark;
}
@media (prefers-color-scheme: light){ :root:not([data-theme="dark"]){ --bg:#f3f4f6; --bg2:#ffffff; --card:#ffffff; --line:#dde2e7; --fg:#1b2024; --fg2:#4b5563; --fg3:#7d8891; --rouge:#c62828; --rouge-bg:#fde8e8; --bleu:#1565c0; --bleu-bg:#e3eefc; --rose:#ad1457; --rose-bg:#fce4ef; --vert:#2e7d32; --vert-bg:#e3f5e6; --gris:#546e7a; --gris-bg:#eceff1; --orange:#d97706; --jaune:#d97706; --ok:#2e7d32; --ko:#c62828; --warn:#d97706; color-scheme:light } }
:root[data-theme="light"]{ --bg:#f3f4f6; --bg2:#ffffff; --card:#ffffff; --line:#dde2e7; --fg:#1b2024; --fg2:#4b5563; --fg3:#7d8891; --rouge:#c62828; --rouge-bg:#fde8e8; --bleu:#1565c0; --bleu-bg:#e3eefc; --rose:#ad1457; --rose-bg:#fce4ef; --vert:#2e7d32; --vert-bg:#e3f5e6; --gris:#546e7a; --gris-bg:#eceff1; --orange:#d97706; --jaune:#d97706; --ok:#2e7d32; --ko:#c62828; --warn:#d97706; color-scheme:light }

*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font-family:var(--body);font-size:14px;line-height:1.45;margin:0}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance}
h2{font-size:1.05rem;font-weight:600}
h3{font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--fg2)}
button{font:inherit;cursor:pointer}
a{color:inherit}

/* Barre haute */
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg2);border-bottom:1px solid var(--line);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg2)}
.topbar{display:flex;align-items:center;gap:14px;height:52px}
.brand{font-family:var(--display);font-weight:700;font-size:1rem;letter-spacing:.02em}
.brand small{display:block;font:500 .65rem var(--body);color:var(--fg3);letter-spacing:.08em;text-transform:uppercase}
.date{margin-left:auto;color:var(--fg3);font-size:.78rem;font-variant-numeric:tabular-nums;white-space:nowrap}
nav{display:flex;gap:6px;overflow-x:auto;padding-bottom:10px;scrollbar-width:none}
nav::-webkit-scrollbar{display:none}
.tab{border:1px solid var(--line);background:var(--card);color:var(--fg2);border-radius:999px;padding:7px 14px;font-weight:600;font-size:.82rem;white-space:nowrap;display:flex;align-items:center;gap:8px;border-left-width:4px}
.tab .n{font-size:.7rem;background:var(--bg);border-radius:999px;padding:1px 7px;color:var(--fg3);font-variant-numeric:tabular-nums}
.tab[data-c="magasin"]{border-left-color:var(--rouge)} .tab[data-c="optikoudpouce"]{border-left-color:var(--bleu)} .tab[data-c="second"]{border-left-color:var(--rose)} .tab[data-c="perso"]{border-left-color:var(--vert)} .tab[data-c="accueil"]{border-left-color:var(--fg3)}
.tab.on{color:var(--fg);background:var(--bg)} .tab.on[data-c="magasin"]{background:var(--rouge-bg)} .tab.on[data-c="optikoudpouce"]{background:var(--bleu-bg)} .tab.on[data-c="second"]{background:var(--rose-bg)} .tab.on[data-c="perso"]{background:var(--vert-bg)}
.tab:focus-visible{outline:2px solid var(--bleu);outline-offset:2px}

main{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:16px 40px;max-width:1440px;margin:0 auto}
.view{display:none;flex-direction:column;gap:16px}
.view.on{display:flex}

/* Bandeau infra */
.alert{display:none;align-items:center;gap:10px;background:var(--rouge-bg);border:1px solid var(--rouge);color:var(--fg);border-radius:10px;padding:10px 14px;font-weight:600}
.alert.on{display:flex}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.dot.ok{background:var(--ok)} .dot.ko{background:var(--ko)} .dot.inconnu{background:var(--gris)}

/* Tuiles domaine */
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tile{border-radius:12px;padding:14px 16px;text-align:left;border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;gap:8px;min-width:0;border-top:4px solid var(--gris)}
.tile[data-c="magasin"]{border-top-color:var(--rouge)} .tile[data-c="optikoudpouce"]{border-top-color:var(--bleu)} .tile[data-c="second"]{border-top-color:var(--rose)} .tile[data-c="perso"]{border-top-color:var(--vert)}
.tile .t{font-family:var(--display);font-weight:600;font-size:.95rem}
.tile .big{font-family:var(--display);font-size:1.9rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.tile .big span{font:500 .75rem var(--body);color:var(--fg2);margin-left:6px}
.tile .next{font-size:.78rem;color:var(--fg2)}
.tile:hover{border-color:var(--fg3)}

.grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start}
.grid > *{min-width:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.card.band{border-left:5px solid var(--gris)}
.band.magasin{border-left-color:var(--rouge)} .band.optikoudpouce{border-left-color:var(--bleu)} .band.second{border-left-color:var(--rose)} .band.perso{border-left-color:var(--vert)} .band.infra{border-left-color:var(--gris)} .band.urgent{border-left-color:var(--rouge)}
.head{display:flex;align-items:center;gap:10px}
.head .add{margin-left:auto;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;padding:5px 10px;font-size:.78rem;font-weight:600}
.head .add:hover{border-color:var(--fg3)}

/* Liste d'actions */
.list{display:flex;flex-direction:column;gap:6px}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:8px;background:var(--bg);border:1px solid transparent}
.item:hover{border-color:var(--line)}
.item input{width:18px;height:18px;accent-color:var(--ok);margin:0}
.item .ti{font-weight:500;min-width:0}
.item .ti small{display:block;color:var(--fg3);font-size:.74rem;font-weight:400}
.item .meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.pill{font-size:.68rem;font-weight:600;letter-spacing:.03em;border-radius:999px;padding:2px 8px;white-space:nowrap;background:var(--gris-bg);color:var(--fg2);border:1px solid var(--line)}
.pill.urgent{background:var(--rouge-bg);color:var(--rouge);border-color:var(--rouge)} .pill.haute{background:var(--rouge-bg);color:var(--orange);border-color:var(--orange)} .pill.normale{color:var(--jaune)} .pill.basse{color:var(--fg3)}
.pill.magasin{background:var(--rouge-bg);color:var(--rouge)} .pill.optikoudpouce{background:var(--bleu-bg);color:var(--bleu)} .pill.second{background:var(--rose-bg);color:var(--rose)} .pill.perso{background:var(--vert-bg);color:var(--vert)} .pill.infra{background:var(--gris-bg);color:var(--gris)}
.pill.late{background:var(--rouge);color:#fff;border-color:var(--rouge)}
.due{font-size:.74rem;color:var(--fg3);font-variant-numeric:tabular-nums;white-space:nowrap}
.empty{color:var(--fg3);font-size:.82rem;padding:10px;border:1px dashed var(--line);border-radius:8px;text-align:center}

/* Agenda */
.agenda{display:flex;flex-direction:column;gap:6px}
.ev{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:6px 8px;border-radius:6px;background:var(--bg);border-left:3px solid var(--bleu)}
.ev time{font-variant-numeric:tabular-nums;color:var(--fg2);font-size:.8rem}
.ev.magasin{border-left-color:var(--rouge)} .ev.perso{border-left-color:var(--vert)} .ev.second{border-left-color:var(--rose)}
.note{font-size:.74rem;color:var(--fg3)}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.kpi{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.kpi .l{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fg3);font-weight:600}
.kpi .v{font-family:var(--display);font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi .v small{font:500 .78rem var(--body);color:var(--fg2);margin-left:4px}
.bar{height:8px;background:var(--line);border-radius:999px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--rouge);border-radius:999px}
.bar.b i{background:var(--bleu)} .bar.r i{background:var(--rose)}
.kpi .sub{font-size:.76rem;color:var(--fg2);font-variant-numeric:tabular-nums}
.charts{display:grid;grid-template-columns:3fr 2fr;gap:12px}
.chart{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0}
.chart canvas{width:100%!important;max-height:240px}

/* Kanban */
.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.col{background:var(--bg);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:8px;min-width:0;min-height:80px}
.col h4{margin:0;font:600 .72rem var(--body);letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:8px;color:var(--fg2)}
.col h4 .dot{width:8px;height:8px}
.col[data-s="a_faire"] h4 .dot{background:var(--rouge)} .col[data-s="en_attente"] h4 .dot{background:var(--orange)} .col[data-s="fait"] h4 .dot{background:var(--ok)}
.kcard{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:.84rem;display:flex;flex-direction:column;gap:6px;cursor:grab}
.kcard .meta{display:flex;gap:6px;flex-wrap:wrap}
.kcard .mv{display:flex;gap:4px}
.kcard .mv button{border:1px solid var(--line);background:var(--bg);color:var(--fg2);border-radius:6px;padding:2px 8px;font-size:.72rem}
.col.over{outline:2px dashed var(--fg3)}

/* Tables */
.tbl{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.82rem}
th{text-align:left;font-weight:600;color:var(--fg3);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid var(--line)}
td{padding:7px 8px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;vertical-align:middle}
tr:last-child td{border-bottom:0}
td input{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--fg);border-radius:6px;padding:4px 6px;font:inherit;font-variant-numeric:tabular-nums}
.tbar{display:flex;align-items:center;gap:8px}
.tbar .bar{flex:1;height:6px}
.tbar span{font-size:.76rem;color:var(--fg2);width:42px;text-align:right}

/* Roadmap */
.rm{display:flex;flex-direction:column;gap:10px}
.rm .proj{display:flex;flex-direction:column;gap:6px}
.rm .proj h4{margin:0;font:600 .8rem var(--display)}
.step{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;background:var(--bg);border-radius:8px;padding:7px 10px;font-size:.84rem}
.st{font-size:.68rem;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap}
.st.a_faire{background:var(--gris-bg);color:var(--fg2)} .st.en_cours{background:var(--bleu-bg);color:var(--bleu)} .st.bloque{background:var(--rouge-bg);color:var(--rouge)} .st.termine{background:var(--vert-bg);color:var(--vert)}
.go{font-size:.72rem;color:var(--fg3);display:flex;align-items:center;gap:4px}
.go input{accent-color:var(--ok)}

/* Échéances et décisions */
.jalon{display:grid;grid-template-columns:72px 1fr auto;gap:10px;align-items:center;padding:7px 10px;background:var(--bg);border-radius:8px;font-size:.84rem}
.jalon .d{font-family:var(--display);font-weight:600;font-variant-numeric:tabular-nums;font-size:.8rem}
.jalon .j{color:var(--fg3);font-size:.74rem;white-space:nowrap}
.dec{padding:8px 10px;background:var(--bg);border-radius:8px;font-size:.84rem;display:flex;flex-direction:column;gap:3px}
.dec .w{color:var(--fg2);font-size:.78rem}
.dec .d{color:var(--fg3);font-size:.72rem;font-variant-numeric:tabular-nums}

/* Modale */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.55);display:none;align-items:center;justify-content:center;z-index:20;padding:16px}
.modal.on{display:flex}
.modal form{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;width:min(440px,100%);display:flex;flex-direction:column;gap:10px}
.modal label{display:flex;flex-direction:column;gap:4px;font-size:.76rem;color:var(--fg2);font-weight:600}
.modal input,.modal select{background:var(--bg);border:1px solid var(--line);color:var(--fg);border-radius:8px;padding:8px;font:inherit}
.modal .row{display:flex;gap:8px;justify-content:flex-end}
.btn{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:8px;padding:8px 14px;font-weight:600}
.btn.p{background:var(--bleu);border-color:var(--bleu);color:#fff}
.toast{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:8px 14px;border-radius:999px;font-size:.8rem;font-weight:600;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}
footer{margin-top:24px;color:var(--fg3);font-size:.74rem;text-align:center}

@media (max-width:900px){ .tiles{grid-template-columns:repeat(2,1fr)} .grid,.charts{grid-template-columns:1fr} .kpis{grid-template-columns:1fr 1fr} .kanban{grid-template-columns:1fr} }
@media (max-width:480px){ .kpis{grid-template-columns:1fr} .tiles{grid-template-columns:1fr} .item{grid-template-columns:auto 1fr} .item .meta{grid-column:2;justify-content:flex-start} }
@media (prefers-reduced-motion:reduce){ *{transition:none!important} }
