
/* ---------- Jetons de couleur ------------------------------------------ */
:root{
  color-scheme: light;
  --surface-0:#f5f4f1; --surface-1:#fcfcfb; --surface-2:#eeede9;
  --line:#dedcd6; --line-strong:#c4c2ba;
  --text-primary:#0b0b0b; --text-secondary:#52514e; --text-muted:#84837c;
  --series-1:#2a78d6;   /* Activités */
  --series-2:#eb6834;   /* VR — exploitation */
  --series-3:#1baf7a;   /* Marge non allouée */
  --series-4:#4a3aa7;   /* Postes de fond */
  --series-5:#c2427a;   /* Bonifications */
  --good:#008300; --warn:#eda100; --crit:#e34948;
  --accent:#1c5cab;
  --radius:10px;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --surface-0:#131312; --surface-1:#1a1a19; --surface-2:#232322;
  --line:#333331; --line-strong:#4a4a47;
  --text-primary:#ffffff; --text-secondary:#c3c2b7; --text-muted:#8e8d84;
  --series-1:#3987e5; --series-2:#d95926; --series-3:#199e70;
  --series-4:#9085e9; --series-5:#d55181;
  --good:#3fa63f; --warn:#c98500; --crit:#e66767;
  --accent:#86b6ef;
}
@media (prefers-color-scheme: dark){
  :root:where(:not([data-theme="light"])){
    color-scheme: dark;
    --surface-0:#131312; --surface-1:#1a1a19; --surface-2:#232322;
    --line:#333331; --line-strong:#4a4a47;
    --text-primary:#ffffff; --text-secondary:#c3c2b7; --text-muted:#8e8d84;
    --series-1:#3987e5; --series-2:#d95926; --series-3:#199e70;
    --series-4:#9085e9; --series-5:#d55181;
    --good:#3fa63f; --warn:#c98500; --crit:#e66767;
    --accent:#86b6ef;
  }
}
/* ---------- Base -------------------------------------------------------- */
*{box-sizing:border-box}
body{margin:0;background:var(--surface-0);color:var(--text-primary);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;}
h1,h2,h3{line-height:1.25;margin:0 0 .4em}
h1{font-size:26px;letter-spacing:-.02em}
h2{font-size:19px;letter-spacing:-.01em}
h3{font-size:15px}
a{color:var(--accent)}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px 80px}
header.top{background:var(--surface-1);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50}
.top-inner{max-width:1180px;margin:0 auto;padding:14px 20px;display:flex;
  gap:16px;align-items:center;flex-wrap:wrap}
.brand{font-weight:650;letter-spacing:-.02em;font-size:16px}
.brand span{color:var(--text-muted);font-weight:400}
nav.tabs{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap}
nav.tabs button{background:none;border:1px solid transparent;color:var(--text-secondary);
  padding:6px 12px;border-radius:99px;cursor:pointer;font-size:13.5px;font-family:inherit}
nav.tabs button:hover{background:var(--surface-2);color:var(--text-primary)}
nav.tabs button[aria-selected="true"]{background:var(--text-primary);color:var(--surface-1);font-weight:550}
.iconbtn{background:var(--surface-2);border:1px solid var(--line);color:var(--text-secondary);
  border-radius:8px;padding:6px 10px;cursor:pointer;font-size:13px;font-family:inherit}
.panel{display:none}
.panel.active{display:block}
section{margin:26px 0}
.card{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
/* ---------- Tuiles ------------------------------------------------------ */
.tile{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.tile .lab{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.tile .val{font-size:27px;font-weight:600;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}
.tile .sub{font-size:12.5px;color:var(--text-secondary);margin-top:4px}
.tile.flag{border-left:3px solid var(--warn)}
.tile.bad{border-left:3px solid var(--crit)}
/* ---------- Légende / graphiques --------------------------------------- */
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--text-secondary);margin:2px 0 12px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:-1px}
.chart{width:100%;overflow-x:auto}
svg{display:block}
svg text{font-family:inherit}
.axis{fill:var(--text-muted);font-size:10.5px}
.gridline{stroke:var(--line);stroke-width:1}
.baseline{stroke:var(--line-strong);stroke-width:1}
.bar-lab{fill:var(--text-secondary);font-size:9.5px;font-variant-numeric:tabular-nums}
.tt{position:fixed;z-index:99;pointer-events:none;background:var(--surface-1);
  border:1px solid var(--line-strong);border-radius:8px;padding:9px 11px;font-size:12.5px;
  box-shadow:0 6px 24px rgba(0,0,0,.16);max-width:270px;display:none}
.tt b{display:block;margin-bottom:5px}
.tt .row{display:flex;justify-content:space-between;gap:14px;font-variant-numeric:tabular-nums}
/* ---------- Tables ------------------------------------------------------ */
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:right;padding:6px 9px;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
th{color:var(--text-muted);font-weight:550;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}
td.num{font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:12.5px}
tr.tot td{font-weight:600;border-top:2px solid var(--line-strong);border-bottom:none}
/* ---------- Calendrier -------------------------------------------------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.chip{background:var(--surface-1);border:1px solid var(--line);color:var(--text-secondary);
  border-radius:99px;padding:5px 12px;cursor:pointer;font-size:13px;font-family:inherit}
.chip[aria-pressed="true"]{background:var(--text-primary);color:var(--surface-1);border-color:var(--text-primary)}
.yr{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);
  margin-bottom:10px;overflow:hidden}
.yr-head{display:flex;gap:14px;align-items:center;padding:13px 16px;cursor:pointer;flex-wrap:wrap}
.yr-head:hover{background:var(--surface-2)}
.yr-yr{font-weight:650;font-size:17px;letter-spacing:-.02em;min-width:112px}
.yr-yr small{display:block;font-weight:400;font-size:11.5px;color:var(--text-muted);letter-spacing:0}
.yr-icons{font-size:16px;letter-spacing:3px;min-width:96px}
.yr-phase{font-size:12px;color:var(--text-muted);flex:1;min-width:150px}
.yr-money{text-align:right;font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}
.yr-money b{font-size:15px}
.bar-mini{height:7px;border-radius:4px;background:var(--surface-2);display:flex;gap:2px;
  overflow:hidden;width:150px;margin-top:5px}
.bar-mini i{display:block;height:100%}
.yr-body{display:none;padding:0 16px 16px;border-top:1px solid var(--line)}
.yr.open .yr-body{display:block}
.season{border-left:3px solid var(--line);padding:12px 0 12px 14px;margin-top:14px}
.season.act{border-left-color:var(--series-1)}
.season.vr{border-left-color:var(--series-2)}
.season h3{display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.season h3 .ic{font-size:17px}
.season h3 .sn{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted)}
.season h3 .amt{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600;font-family:var(--mono);font-size:13.5px}
.meta{margin:9px 0 0;font-size:13.2px;color:var(--text-secondary)}
.meta div{margin-bottom:5px}
.meta b{color:var(--text-primary);font-weight:550}
.postes{margin-top:11px;background:var(--surface-2);border-radius:8px;padding:10px 12px}
.postes table{font-size:12.5px}
.postes th,.postes td{border-bottom:1px solid var(--line);padding:4px 6px}
.tag{display:inline-block;font-size:10.5px;padding:1.5px 7px;border-radius:99px;
  border:1px solid var(--line-strong);color:var(--text-muted);margin-left:7px;vertical-align:1px}
.tag.rech{border-color:var(--good);color:var(--good)}
.tag.mod{border-color:var(--warn);color:var(--warn)}
/* ---------- Hypothèses -------------------------------------------------- */
.par{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;
  padding:9px 0;border-bottom:1px solid var(--line)}
.par:last-child{border-bottom:none}
.par label{font-size:13.5px}
.par label small{display:block;color:var(--text-muted);font-size:11.5px;margin-top:1px}
.par input[type=number]{width:118px;padding:6px 9px;border:1px solid var(--line-strong);
  border-radius:7px;background:var(--surface-0);color:var(--text-primary);
  font-family:var(--mono);font-size:13px;text-align:right}
.par select{padding:6px 9px;border:1px solid var(--line-strong);border-radius:7px;
  background:var(--surface-0);color:var(--text-primary);font-family:inherit;font-size:13px}
.note{font-size:13px;color:var(--text-secondary);background:var(--surface-2);
  border-left:3px solid var(--line-strong);padding:11px 14px;border-radius:0 8px 8px 0;margin:12px 0}
.note.warn{border-left-color:var(--warn)}
.note.crit{border-left-color:var(--crit)}
.note.good{border-left-color:var(--good)}
.note b{color:var(--text-primary)}
ul.tight{margin:8px 0;padding-left:20px}
ul.tight li{margin-bottom:5px;font-size:13.5px}
.src{font-size:12px;color:var(--text-muted);margin-top:8px;word-break:break-word}
.src a{color:var(--text-muted)}
/* ---------- Alertes ----------------------------------------------------- */
.alert{display:flex;gap:13px;padding:13px 15px;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface-1);margin-bottom:9px}
.alert .when{font-family:var(--mono);font-size:12px;color:var(--text-muted);
  min-width:112px;padding-top:2px}
.alert.hot{border-left:3px solid var(--crit)}
.alert.soon{border-left:3px solid var(--warn)}
.alert h3{margin-bottom:3px;font-size:14px}
.alert p{margin:0;font-size:13px;color:var(--text-secondary)}
/* ---------- Impression -------------------------------------------------- */
.printonly{display:none}
@media print{
  @page{ size: letter portrait; margin: 14mm 13mm 16mm 13mm; }
  :root{ --surface-0:#fff; --surface-1:#fff; --surface-2:#f4f3f0;
         --line:#d5d3cd; --line-strong:#a9a7a0;
         --text-primary:#000; --text-secondary:#333; --text-muted:#666; }
  html,body{ background:#fff!important; font-size:9.4pt; }
  header.top,nav.tabs,.filters,.iconbtn,.tt,#reset,
  .opt input[type=checkbox],details summary{ display:none!important }
  .panel{ display:block!important }
  .yr-body{ display:block!important }
  details[open] > *, details > div{ display:block!important }
  details{ display:block!important }
  .wrap{ max-width:none; padding:0 }
  section{ margin:0 0 6mm; break-inside:auto }

  /* Page de garde */
  .printonly{ display:block }
  #cover{ text-align:center; padding-top:55mm; page-break-after:always }
  #cover h1{ font-size:30pt; letter-spacing:-.02em; margin-bottom:4mm }
  #cover h2{ font-size:15pt; font-weight:400; color:#333; margin-bottom:14mm }
  #cover .covsub{ font-size:10.5pt; color:#444; max-width:120mm; margin:0 auto 20mm }
  #cover .covmeta{ font-size:9pt; color:#666 }
  .pagebreak{ page-break-before:always; height:0 }

  h1{ font-size:16pt; margin-bottom:3mm; padding-bottom:1.5mm;
      border-bottom:1.5pt solid #000 }
  h2{ font-size:11.5pt } h3{ font-size:9.8pt }

  /* Les graphiques doivent tenir dans la largeur utile */
  .chart{ overflow:visible!important }
  .chart svg{ width:100%!important; height:auto!important; max-width:100% }

  .card{ box-shadow:none!important; border-color:#d5d3cd!important;
    break-inside:auto; page-break-inside:auto }
  .tile,.season,.alert,.opt,.postes,.legend,h1,h2,h3{ break-inside:avoid;
    page-break-inside:avoid }
  h1,h2,h3{ break-after:avoid; page-break-after:avoid }
  .yr{ break-inside:auto; page-break-inside:auto;
    box-shadow:none!important; border-color:#d5d3cd!important }
  .yr-head{ break-after:avoid; page-break-after:avoid }
  tr{ break-inside:avoid } thead{ display:table-header-group }
  .card{ padding:4mm; margin-bottom:5mm }
  .yr{ margin-bottom:4mm }
  .yr-head{ background:#f4f3f0; padding:3mm 4mm }
  .yr-body{ padding:0 4mm 4mm }
  .season{ margin-top:4mm; padding:3mm 0 3mm 3.5mm; break-inside:avoid }
  .grid.g4,.grid.g2{ display:grid!important; gap:3mm }
  .grid.g4{ grid-template-columns:repeat(4,1fr) }
  .tile .val{ font-size:14pt }
  .tile .lab{ font-size:7pt }
  table{ font-size:8.2pt } td.num,.postes table{ font-size:8pt }
  th,td{ padding:1.2mm 2mm }
  .postes{ padding:2.5mm 3mm }
  .opt{ padding:2mm 0 }
  .opt label b{ font-size:9pt } .opt label small{ font-size:7.8pt }
  .optcout{ font-size:9pt }
  a{ color:#000; text-decoration:none }
  .src{ font-size:7.2pt }
  .src a::after{ content:" (" attr(href) ")"; color:#666; word-break:break-all }
  .note{ padding:2.5mm 3.5mm; font-size:8.6pt }
  ul.tight li{ font-size:8.8pt }
  .alert{ padding:2.5mm 3.5mm; margin-bottom:2.5mm }
  .legend{ font-size:8.2pt }
}

.iconbtn.mode{background:var(--surface-0);border-color:var(--line-strong);font-weight:600;
  font-family:var(--mono);font-size:12px;white-space:nowrap}
.iconbtn.mode b{color:var(--accent)}
#bandeau-mode{font-size:8.5pt;color:#444;border:.8pt solid #c9c7c0;background:#f4f3f0;
  border-radius:1.5mm;padding:2mm 3mm;margin-bottom:4mm}
.fx{font-size:11px;color:var(--text-muted);font-family:var(--mono);margin-left:6px}

/* =====================================================================
   Ajouts de la version multi-utilisateurs
   ===================================================================== */
[hidden]{display:none!important}
/* ---------- Options, bonifications et postes --------------------------- */
.opt{display:flex;justify-content:space-between;gap:16px;align-items:center;
  padding:10px 0;border-bottom:1px solid var(--line)}
.opt:last-of-type{border-bottom:none}
.opt label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:13.5px}
.opt label small{display:block;color:var(--text-muted);font-size:12px;margin-top:2px}
.optcout{font-family:var(--mono);font-size:13px;white-space:nowrap}
.optsum{font-size:12.5px;color:var(--text-secondary);text-align:right;margin-top:8px}
input.mini{width:92px;padding:5px 8px;border:1px solid var(--line-strong);border-radius:7px;
  background:var(--surface-0);color:var(--text-primary);font-family:var(--mono);font-size:12.5px;text-align:right}
/* ---------- Navigation à deux niveaux ---------------------------------- */
.top-inner.sous{padding-top:0;padding-bottom:10px}
.top-inner.sous nav.tabs{margin-left:0}
nav.tabs.principal button{font-size:14px;font-weight:550}
.pastille{display:inline-block;min-width:18px;padding:0 5px;border-radius:99px;background:var(--crit);
  color:#fff;font-size:11px;line-height:18px;text-align:center;margin-left:4px}
.etat{font-size:12px;color:var(--text-muted);white-space:nowrap}
.etat.err{color:var(--crit)}
/* ---------- Boutons et formulaires ------------------------------------- */
button.lien{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;
  font-size:12.5px;padding:2px 4px;text-decoration:underline;text-underline-offset:2px}
button.lien.danger{color:var(--crit)}
button.primaire{background:var(--text-primary);color:var(--surface-1);border:1px solid var(--text-primary);
  border-radius:8px;padding:8px 16px;cursor:pointer;font:inherit;font-size:13.5px;font-weight:550}
button.primaire:disabled{opacity:.5;cursor:default}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);outline-offset:1px}
.s-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.tag.fait{border-color:var(--good);color:var(--good)}
.tag.deja{border-color:var(--warn);color:var(--warn)}
.tag.commun{border-color:var(--accent);color:var(--accent)}
.formligne{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
input[type=text],input[type=email],input[type=password],input[type=search],input[type=number].champ,
select,textarea{padding:7px 10px;border:1px solid var(--line-strong);border-radius:7px;
  background:var(--surface-0);color:var(--text-primary);font:inherit;font-size:13.5px}
textarea{resize:vertical;min-height:54px}
.plein{width:100%;margin-top:8px}
.champs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.champs label,.champ-seul{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--text-secondary)}
.champs label.large{grid-column:1/-1}
.champs label.case{flex-direction:row;align-items:center;gap:8px;font-size:13.5px;color:var(--text-primary)}
.champs input,.champs select,.champs textarea{width:100%}
.champs label.case input{width:auto}
/* ---------- Dialogue ---------------------------------------------------- */
dialog{border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-1);
  color:var(--text-primary);padding:0;width:min(720px,calc(100vw - 24px));max-height:calc(100vh - 40px)}
dialog::backdrop{background:rgba(0,0,0,.45)}
#dlg-form{padding:20px 22px;display:flex;flex-direction:column;gap:14px}
.dlg-err{color:var(--crit);font-size:13px;min-height:1em}
.dlg-actions{display:flex;justify-content:flex-end;gap:10px}
.lignes-postes{display:flex;flex-direction:column;gap:6px}
.lignes-postes .formligne input[type=text]{flex:1;min-width:160px}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--text-primary);
  color:var(--surface-1);padding:10px 16px;border-radius:9px;font-size:13.5px;z-index:200;
  max-width:min(560px,calc(100vw - 32px));box-shadow:0 6px 24px rgba(0,0,0,.25)}
#toast.err{background:var(--crit);color:#fff}
/* ---------- Catalogue --------------------------------------------------- */
.barre{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.barre input[type=search]{flex:1;min-width:240px;font-size:15px;padding:10px 12px}
.barre label{font-size:13px;color:var(--text-secondary);display:flex;gap:6px;align-items:center}
.cartes{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.carte{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;display:flex;flex-direction:column;gap:8px}
.carte h3{margin:0;font-size:14.5px;display:flex;gap:8px;align-items:baseline}
.carte .desc{font-size:12.5px;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:3;
  -webkit-box-orient:vertical;overflow:hidden}
.carte .infos{font-size:12px;color:var(--text-muted);display:flex;gap:10px;flex-wrap:wrap}
.carte .infos b{color:var(--text-primary);font-family:var(--mono);font-weight:600}
.carte .actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.carte .tag{margin-left:0}
.avis{border-left:3px solid var(--line-strong);padding:6px 0 6px 12px;margin:10px 0;font-size:13px}
.avis.oui{border-left-color:var(--good)} .avis.mitige{border-left-color:var(--warn)} .avis.non{border-left-color:var(--crit)}
.avis .qui{font-weight:600}
.avis div{margin-top:3px;color:var(--text-secondary)}
.souhaits{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px;font-size:13px}
.souhaits .chip{display:inline-flex;gap:6px;align-items:center}
/* ---------- Vue commune -------------------------------------------------- */
.frise{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-1)}
.frise table{font-size:12px;border-collapse:separate;border-spacing:0;width:auto;min-width:100%}
.frise th,.frise td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);
  border-right:1px solid var(--line);padding:6px;min-width:150px;max-width:150px}
.frise th:first-child,.frise td:first-child{position:sticky;left:0;background:var(--surface-1);z-index:2;
  min-width:130px;max-width:130px;font-weight:600;font-size:13px;text-transform:none;letter-spacing:0;
  color:var(--text-primary)}
.frise thead th{position:sticky;top:0;background:var(--surface-2);z-index:1;font-size:12.5px}
.frise .cellule{display:flex;flex-direction:column;gap:3px}
.frise .sa{display:block;padding:2px 6px;border-radius:5px;background:var(--surface-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--line-strong)}
.frise .sa.voyage{border-left-color:var(--series-1)}
.frise .sa.commun{border-left-color:var(--series-5);background:color-mix(in srgb,var(--series-5) 14%,var(--surface-1));font-weight:600}
.frise .sa.vide{background:none;border-left-color:transparent;color:var(--text-muted)}
.frise .total{font-family:var(--mono);font-size:11px;color:var(--text-muted);margin-top:2px}
/* ---------- Groupes ------------------------------------------------------ */
.groupe .membres{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.groupe .fil{margin-top:10px;border-top:1px solid var(--line);padding-top:10px;font-size:13px}
.groupe .fil p{margin:0 0 6px}
.groupe .fil .qui{font-weight:600}
.statut-partant{border-color:var(--good);color:var(--good)}
.statut-peut_etre{border-color:var(--warn);color:var(--warn)}
.statut-non{border-color:var(--crit);color:var(--crit)}
.qr{width:190px;background:#fff;padding:6px;border-radius:8px}
.qr svg{width:100%;height:auto}
code.secret{font-family:var(--mono);font-size:13px;background:var(--surface-2);padding:3px 7px;border-radius:6px;
  word-break:break-all;user-select:all}
/* ---------- Page de connexion ------------------------------------------- */
.connexion{max-width:400px;margin:9vh auto 0;padding:0 20px}
.connexion .card{display:flex;flex-direction:column;gap:12px}
.connexion input{width:100%}
body:not(.origine-nlm) .origine-seulement{display:none}
@media (max-width:640px){
  .top-inner{padding:10px 12px;gap:8px}
  .wrap{padding:0 12px 60px}
  nav.tabs{margin-left:0}
  header.top{position:static}
}
@media print{
  .noprint,.s-actions,#toast,dialog,.souhaits,button.lien,.formligne,#act-texte{display:none!important}
}
/* Blocs pleine largeur dans les formulaires, et lignes de postes sur une seule rangée */
.champs .large{grid-column:1/-1}
.champs .lignes-postes input[type=text]{width:auto;flex:1}
.champs .lignes-postes input.mini{width:120px}

/* =====================================================================
   Passe d'ergonomie : retours visuels, accueil, vue d'ensemble, fiches
   ===================================================================== */
/* ---------- Retours visuels (désactivés si l'utilisateur réduit les animations) */
.iconbtn,.chip,button.primaire,nav.tabs button,.carte,.g-case,.prochain,.yr-head{
  transition:background-color .15s,border-color .15s,box-shadow .15s,transform .15s,color .15s}
.iconbtn:hover{background:var(--surface-1);border-color:var(--line-strong);color:var(--text-primary)}
.chip:hover{border-color:var(--line-strong);color:var(--text-primary)}
button.primaire:hover{box-shadow:0 2px 10px rgba(0,0,0,.18);transform:translateY(-1px)}
button.primaire:active,.iconbtn:active,.chip:active{transform:translateY(0) scale(.98)}
button.primaire.petit{padding:6px 14px;font-size:13px}
.yr-head:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.chargement{color:var(--text-muted);font-size:13.5px;padding:28px 0;text-align:center}
.aide{font-size:12.5px;color:var(--text-muted)}

/* ---------- Accueil du tableau de bord ---------------------------------- */
.accueil{margin:22px 0 4px}
.accueil h1{margin-bottom:10px}
.chapeau{color:var(--text-secondary);margin:0 0 14px;max-width:640px}
.prochains{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.prochain{display:flex;flex-direction:column;gap:5px;text-align:left;cursor:pointer;font:inherit;
  background:var(--surface-1);border:1px solid var(--line);border-left:4px solid var(--series-1);
  border-radius:var(--radius);padding:13px 15px;color:var(--text-primary)}
.prochain:first-child{border-left-color:var(--series-5)}
.prochain:hover{border-color:var(--line-strong);box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-1px)}
.prochain .quand{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.prochain .quoi{font-size:15px;font-weight:600;line-height:1.3}
.raccourcis{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.chip.urgent{border-color:var(--crit);color:var(--crit);font-weight:600}
.etapes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.etape{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:18px;
  display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.etape p{margin:0 0 8px;font-size:13.5px;color:var(--text-secondary);flex:1}
.etape .num{width:28px;height:28px;border-radius:50%;background:var(--text-primary);color:var(--surface-1);
  display:grid;place-items:center;font-weight:650;font-size:14px}
/* Plan encore vide : les graphiques n'ont rien à montrer, on laisse la place au guide. */
#p-dash.vide > section:not(.accueil){display:none}

/* ---------- Vue d'ensemble du calendrier -------------------------------- */
#p-cal.vue-ensemble #years,#p-cal.vue-ensemble #filters #expand-all{display:none}
#p-cal.vue-detail #grille{display:none}
.grille{display:grid;grid-template-columns:74px repeat(4,minmax(0,1fr)) 96px;gap:5px;align-items:stretch}
.g-tete{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:2px 6px 6px;
  position:sticky;top:0}
.g-tete.g-total,.g-total{text-align:right}
.g-annee{background:none;border:none;cursor:pointer;font:inherit;font-weight:650;font-size:14.5px;text-align:left;
  color:var(--text-primary);padding:4px 6px;border-radius:7px;line-height:1.15}
.g-annee:hover{background:var(--surface-2)}
.g-annee small{display:block;font-weight:400;font-size:10.5px;color:var(--text-muted)}
.g-total{font-family:var(--mono);font-size:12px;color:var(--text-secondary);align-self:center;padding-right:4px}
.g-total.depasse{color:var(--crit);font-weight:600}
.g-case{min-width:0;min-height:44px;text-align:left;cursor:pointer;font:inherit;color:var(--text-primary);
  background:var(--surface-1);border:1px solid var(--line);border-left:4px solid var(--line-strong);
  border-radius:8px;padding:5px 8px;display:flex;flex-direction:column;justify-content:center;gap:1px}
.g-case[draggable]{cursor:grab}
.g-case:hover{border-color:var(--line-strong);box-shadow:0 3px 12px rgba(0,0,0,.08)}
.g-case.voyage{border-left-color:var(--series-1)}
.g-case.vr{border-left-color:var(--series-2)}
.g-case.maison{color:var(--text-secondary);background:var(--surface-0)}
.g-case.fait{border-left-color:var(--good)}
.g-case.libre{border:1px dashed var(--line-strong);background:none;color:var(--text-muted);
  align-items:center;font-size:16px}
.g-case.libre:hover{color:var(--text-primary);background:var(--surface-1)}
.g-case.attenue{opacity:.28}
.g-case.glisse{opacity:.45}
.g-case.cible{outline:2px dashed var(--accent);outline-offset:1px;background:var(--surface-2)}
.g-titre{font-size:12.5px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-cout{font-family:var(--mono);font-size:10.5px;color:var(--text-muted)}
.season.eclair,.yr.eclair{animation:eclair 1.6s ease-out}
@keyframes eclair{0%{background:color-mix(in srgb,var(--accent) 18%,transparent)}100%{background:transparent}}

/* ---------- Fiches du catalogue ----------------------------------------- */
.carte{border-top:3px solid var(--series-1)}
.carte.t-vr{border-top-color:var(--series-2)}
.carte.t-maison,.carte.t-culture{border-top-color:var(--series-4)}
.carte.t-soleil,.carte.t-villa{border-top-color:var(--warn)}
.carte.t-bateau,.carte.t-yacht{border-top-color:var(--series-3)}
.carte:hover{box-shadow:0 6px 20px rgba(0,0,0,.08);transform:translateY(-2px)}
.carte .pictogramme{font-size:20px;line-height:1}
.titre-lien{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-weight:650;font-size:15px;
  text-align:left;color:var(--text-primary);line-height:1.3}
.titre-lien:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.carte .actions{align-items:center}
.carte .actions .chip{padding:4px 10px;font-size:12.5px}

/* ---------- Connexion ---------------------------------------------------- */
.connexion{text-align:center}
.connexion .card{text-align:left;box-shadow:0 10px 40px rgba(0,0,0,.08);padding:24px}
.connexion .marque{font-size:30px;letter-spacing:10px;margin-bottom:6px}
.connexion button.primaire{padding:11px 16px;font-size:14.5px;margin-top:4px}

/* ---------- Téléphone : onglets défilants, cibles tactiles confortables --- */
@media (max-width:640px){
  /* Les cinq sections restent toutes visibles ; seuls les onglets du plan défilent. */
  #nav-plan nav.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%;
    -webkit-mask-image:linear-gradient(to right,#000 88%,transparent);mask-image:linear-gradient(to right,#000 88%,transparent)}
  #nav-plan nav.tabs::-webkit-scrollbar{display:none}
  #nav-plan nav.tabs button{white-space:nowrap;flex:none}
  nav.tabs.principal button{padding:6px 9px}
  .grille{grid-template-columns:44px repeat(4,minmax(0,1fr));gap:3px}
  .grille .g-total{display:none}
  .g-annee{font-size:12.5px;padding:2px}
  .g-annee small,.g-cout{display:none}
  .g-case{padding:4px 5px;min-height:44px}
  .g-titre{font-size:10.5px;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  h1{font-size:22px}
}
@media (pointer:coarse){
  button.lien{padding:8px 6px;font-size:13.5px}
  .chip,.iconbtn{min-height:38px}
}
@media print{ #years{display:block!important} #grille,#cal-vues,.accueil{display:none!important} }
