:root{
  --ink:#2E2457; --ink-solid:#2E2457; --kurage:#7C5CBF; --lav:#CDC1EA; --peri:#9D8BC7;
  --mist:#F7F5FB; --line:#E6E0F2; --grey:#6B6480;
  --amber:#B08A2E; --risk:#C0564B; --ok:#4E8F6E; --word:#332F33;
  --surface:#ffffff; --surface-2:#FBFAFE;
  --badge-bg:#F8F1DF;
  --warn-bg:#FBF6E9; --warn-border:#EADFC0; --warn-text:#6B5A2E;
  --error-bg:#FBEDEB; --error-border:#F0CFC8;
  --shadow-card:0 10px 40px rgba(46,36,87,.08);
  font-size:15px;
}
/* Thème sombre : suit le système par défaut, sauf choix explicite mémorisé
   (voir js/theme.js — data-theme posé avant le premier rendu). */
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ink:#EDEAF7; --grey:#A79FC4; --line:#3A3358;
    --mist:#181427; --surface:#211C36; --surface-2:#241F3B;
    --ink-solid:#4E3D82; --word:#EDEAF7;
    --badge-bg:#3A331F;
    --warn-bg:#332A17; --warn-border:#5A4A29; --warn-text:#E3C77E;
    --error-bg:#3A2220; --error-border:#5C332E;
    --shadow-card:0 10px 40px rgba(0,0,0,.4);
  }
}
:root[data-theme="dark"]{
  --ink:#EDEAF7; --grey:#A79FC4; --line:#3A3358;
  --mist:#181427; --surface:#211C36; --surface-2:#241F3B;
  --ink-solid:#4E3D82; --word:#EDEAF7;
  --badge-bg:#3A331F;
  --warn-bg:#332A17; --warn-border:#5A4A29; --warn-text:#E3C77E;
  --error-bg:#3A2220; --error-border:#5C332E;
  --shadow-card:0 10px 40px rgba(0,0,0,.4);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Poppins','Trebuchet MS',sans-serif;background:var(--mist);color:var(--ink)}

#boot-status{display:none;padding:70px 20px;text-align:center;color:var(--grey);font-size:.85rem;max-width:520px;margin:0 auto}
#boot-status.err{color:var(--risk)}
body.boot-pending header ~ *:not(#boot-status){display:none}
body.boot-pending #boot-status{display:block}

header{display:flex;align-items:center;gap:14px;padding:9px 24px;background:var(--surface);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.logo{display:flex;flex-direction:column;align-items:center;line-height:.95}
.logo svg,.logo-icon{width:34px;height:24px;object-fit:contain}
.logo .word{font-weight:800;font-size:1rem;color:var(--word);letter-spacing:-.6px}
header h1{font-size:.97rem;font-weight:600;margin-left:4px}
header .tag{margin-left:auto;font-size:.68rem;color:var(--amber);background:var(--warn-bg);
  border:1px solid var(--warn-border);border-radius:20px;padding:4px 12px;font-weight:600}

nav{display:flex;gap:3px;flex-wrap:wrap;padding:8px 20px;background:var(--surface);
  border-bottom:1px solid var(--line);position:sticky;top:52px;z-index:19}
nav button{font-family:inherit;font-size:.8rem;font-weight:500;color:var(--grey);background:none;
  border:1px solid transparent;border-radius:9px;padding:7px 14px;cursor:pointer}
nav button:hover{background:var(--mist)}
nav button.on{color:#fff;background:var(--ink-solid)}

.filters{display:flex;gap:13px;flex-wrap:wrap;align-items:flex-end;padding:10px 22px;
  background:var(--surface-2);border-bottom:1px solid var(--line);position:sticky;top:97px;z-index:18}
.filters .f{display:flex;flex-direction:column;gap:4px}
.filters label{font-size:.63rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--grey)}
.filters select,.filters input[type=date]{font-family:inherit;font-size:.76rem;font-weight:500;color:var(--ink);
  background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 8px;cursor:pointer}
.filters select:disabled,.filters input:disabled{opacity:.4;cursor:not-allowed}
:root[data-theme="dark"] .filters input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8)}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .filters input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8)}
}
.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{font-family:inherit;font-size:.76rem;font-weight:500;color:var(--grey);background:var(--surface);
  border:none;padding:6px 12px;cursor:pointer}
.seg button.on{background:var(--ink-solid);color:#fff}
.reset{font-family:inherit;font-size:.7rem;color:var(--kurage);background:none;border:none;
  cursor:pointer;text-decoration:underline;align-self:center;margin-left:auto}
.devices{display:flex;flex-direction:column;gap:4px;max-width:260px}
.devices .list{display:flex;flex-wrap:wrap;gap:5px;max-width:260px}
.devchip{font-size:.68rem;font-weight:500;border:1px solid var(--line);border-radius:20px;
  padding:3px 9px;cursor:pointer;background:var(--surface);color:var(--grey)}
.devchip.on{background:var(--kurage);color:#fff;border-color:var(--kurage)}
.devchip:disabled{opacity:.4;cursor:not-allowed}

main{max-width:1250px;margin:0 auto;padding:20px 20px 60px}
.panel{display:none} .panel.on{display:block;animation:fade .2s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
h2{font-size:1.12rem;font-weight:600;margin:4px 0 2px}
.sub{font-size:.78rem;color:var(--grey);margin-bottom:14px}
.grid{display:grid;gap:13px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 17px}
.kpi .lbl{font-size:.67rem;font-weight:500;color:var(--grey);text-transform:uppercase;letter-spacing:.5px}
.kpi .val{font-size:1.75rem;font-weight:700;line-height:1.15;margin-top:2px}
.kpi .dlt{font-size:.7rem;margin-top:2px;color:var(--grey)}
.cols-2{grid-template-columns:1fr 1fr}
@media(max-width:900px){.cols-2{grid-template-columns:1fr}}
.card h3{font-size:.83rem;font-weight:600;margin-bottom:2px}
.card .note{font-size:.7rem;color:var(--grey);margin-bottom:9px}
.chart{position:relative;height:260px}
.empty{color:var(--grey);font-size:.8rem;padding:22px 4px;text-align:center}
.mockbadge{display:inline-block;font-size:.6rem;font-weight:700;color:var(--amber);background:var(--badge-bg);
  border-radius:4px;padding:2px 7px;margin-left:6px;vertical-align:middle}
.warnbox{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:11px;padding:11px 14px;
  font-size:.73rem;color:var(--warn-text);margin-bottom:13px}
.warnbox b{color:var(--amber)}
.foot{margin-top:26px;font-size:.66rem;color:var(--grey);text-align:center}

table{width:100%;border-collapse:collapse;font-size:.8rem}
table th{text-align:left;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.4px;
  color:var(--grey);padding:6px 8px;border-bottom:1px solid var(--line)}
table td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
table tr:last-child td{border-bottom:none}
.admin-price-input{font-family:inherit;font-size:.85rem;font-weight:600;color:var(--ink);
  background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 9px;width:100px}
.admin-price-input:focus{outline:2px solid var(--kurage);outline-offset:1px}
.admin-price-input.dirty{border-color:var(--kurage);background:var(--surface-2)}
.admin-apply-forward{font-family:inherit;font-size:.68rem;color:var(--kurage);background:none;
  border:none;cursor:pointer;text-decoration:underline;white-space:nowrap}
.admin-actions{display:flex;align-items:center;gap:12px;margin-top:14px}
.btn-primary{font-family:inherit;font-size:.8rem;font-weight:600;color:#fff;background:var(--ink-solid);
  border:none;border-radius:9px;padding:9px 18px;cursor:pointer}
.btn-primary:hover{background:var(--kurage)}
.admin-save-status{font-size:.75rem;color:var(--ok)}
.admin-save-status.err{color:var(--risk)}
.admin-objectif-bassin:first-child h4{margin-top:0!important}
.admin-objectif-week{font-family:inherit;font-size:.8rem;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:8px;padding:6px 9px}
.admin-objectif-value{width:70px}

.infobox{background:#F5F1FC;border:1px solid #DED2F1;border-radius:11px;padding:11px 14px;font-size:.73rem;
  color:var(--ink);margin-bottom:13px}
:root[data-theme="dark"] .infobox{background:#2A2444;border-color:#453B6E}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .infobox{background:#2A2444;border-color:#453B6E}}
.infobox b{color:var(--kurage)}
.infobox a{color:var(--kurage)}

.pill{display:inline-block;font-size:.68rem;font-weight:600;border-radius:20px;padding:3px 10px}
.pill.ok{background:#EAF3EE;color:var(--ok)}
.pill.warn{background:var(--warn-bg);color:var(--amber)}
:root[data-theme="dark"] .pill.ok{background:#1E3327}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .pill.ok{background:#1E3327}}

.over-flag{color:var(--amber);font-weight:600}

a.btn-primary{display:inline-block;text-decoration:none;font-size:.75rem;padding:7px 14px}
a.sav-btn{white-space:nowrap}

.logout-btn{font-family:inherit;font-size:.7rem;font-weight:600;color:var(--kurage);background:none;
  border:1px solid var(--line);border-radius:20px;padding:5px 12px;cursor:pointer;margin-left:10px}
.logout-btn:hover{background:var(--mist)}

/* ------------------------------------------------------- bascule de thème */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--grey);
  cursor:pointer;margin-left:10px;flex:none}
.theme-toggle:hover{background:var(--mist)}
.theme-toggle svg{width:16px;height:16px}
.theme-toggle .icon-sun{display:none}
.theme-toggle .icon-moon{display:block}
:root[data-theme="dark"] .theme-toggle .icon-sun{display:block}
:root[data-theme="dark"] .theme-toggle .icon-moon{display:none}

/* ============================== LOGIN ============================== */
body.login{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,var(--mist) 0%,var(--surface) 60%);padding:20px}
.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--line);border-radius:16px;
  padding:32px 28px;box-shadow:var(--shadow-card)}
.login-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}
.login-card h1{font-size:1.05rem;font-weight:700;margin-bottom:2px}
.login-card .sub{font-size:.78rem;color:var(--grey);margin-bottom:20px}
.login-step{display:none}
.login-step.on{display:block}
.login-field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.login-field label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--grey)}
.login-field input{font-family:inherit;font-size:.85rem;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:9px;padding:9px 11px;width:100%}
.login-field input:focus{outline:2px solid var(--kurage);outline-offset:1px}
.login-pw-wrap{position:relative}
.login-pw-wrap input{padding-right:38px}
.login-pw-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);background:none;border:none;
  cursor:pointer;color:var(--grey);padding:6px;display:flex}
.login-pw-toggle svg{width:18px;height:18px}
.login-submit{width:100%;margin-top:6px}
.login-error{font-size:.75rem;color:var(--risk);background:var(--error-bg);border:1px solid var(--error-border);
  border-radius:9px;padding:9px 12px;margin-bottom:14px;display:none}
.login-error.on{display:block}
.login-hint{font-size:.7rem;color:var(--grey);line-height:1.4}
.login-foot{margin-top:20px;font-size:.66rem;color:var(--grey);text-align:center}
