:root{
  --bg:#0b1020;
  --panel:rgba(16,26,51,.72);
  --panel2:rgba(16,26,51,.55);
  --ink:#eaf0ff;
  --muted:#b9c4e6;

  /* accents (un peu plus chaleureux, sans devenir "flashy") */
  --acc1:#7bdcff;        /* bleu doux */
  --acc2:#b1ffcc;        /* vert menthe */
  --warm1:#ffbe7a;       /* pêche */
  --warm2:#ff8fb7;       /* rose doux */

  /* couleurs "sémantiques" par curseur */
  --c-forme:#ffbe7a;     /* énergie / forme */
  --c-sommeil:#a78bfa;   /* violet apaisant */
  --c-confort:#ff8a7a;   /* corail (confort) */
  --c-humeur:#7bdcff;    /* bleu clair */

  --danger:#ff6b6b;
  --shadow: 0 24px 60px rgba(0,0,0,.35);
  --radius:22px;
  --radius2:16px;
}


*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial;
  color:var(--ink);
  background: radial-gradient(1000px 600px at 15% 10%, rgba(123,220,255,.24), transparent 60%),
              radial-gradient(900px 600px at 85% 20%, rgba(177,255,204,.18), transparent 55%),
              radial-gradient(1200px 700px at 60% 110%, rgba(123,220,255,.14), transparent 60%),
              var(--bg);
}
a{color:inherit}
.container{max-width:980px;margin:0 auto;padding:22px}
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  gap:14px;padding:14px 16px;border-radius:999px;
  background:rgba(16,26,51,.55);border:1px solid rgba(255,255,255,.10);
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
}
.brand{display:flex;align-items:center;gap:12px;min-width:220px}
.brand .icon{
  width:38px;height:38px;border-radius:14px;
  background:url('/app/assets/icon-192.png') center/cover no-repeat;
  box-shadow: 0 10px 25px rgba(123,220,255,.18);
}
.brand .name{font-weight:800;letter-spacing:.2px}
.brand .tag{font-size:12.5px;color:var(--muted);margin-top:2px}
.nav{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.chip{
  padding:9px 12px;border-radius:999px;
  background:rgba(16,26,51,.40);border:1px solid rgba(255,255,255,.10);
  color:var(--muted);font-size:13px;text-decoration:none;
}
.chip.active{color:var(--ink);border-color:rgba(255,190,122,.38);background:linear-gradient(180deg, rgba(16,26,51,.62), rgba(16,26,51,.48))}

.grid{
  margin-top:18px;
  display:grid;gap:16px;
  grid-template-columns: 1.2fr .8fr;
}
@media (max-width: 880px){
  .grid{grid-template-columns:1fr}
  .nav{justify-content:flex-start}
}
.card{
  background:var(--panel);
  border:1px solid rgba(255,255,255,.10);
  border-radius:var(--radius);
  box-shadow: var(--shadow);
  overflow:hidden;
}
.card .hd{
  padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap
}
.card .hd h2{margin:0;font-size:16.5px}
.card .bd{padding:16px 18px}
.sub{color:var(--muted);font-size:13.5px;margin-top:6px;line-height:1.4}
.btnrow{display:flex;gap:10px;flex-wrap:wrap}
.btn{
  border:1px solid rgba(255,255,255,.12);
  background:rgba(16,26,51,.55);
  color:var(--ink);
  padding:10px 12px;border-radius:14px;
  font-weight:700;font-size:13px;
  cursor:pointer;
}
.btn.primary{border-color:rgba(255,190,122,.42);background:rgba(18,32,64,.75)}
.btn.good{border-color:rgba(177,255,204,.35)}
.btn.danger{border-color:rgba(255,107,107,.35)}
.btn:active{transform:translateY(1px)}
.kpi{
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:12px
}
@media (max-width:520px){.kpi{grid-template-columns:1fr}}
.kpi .box{
  background:rgba(16,26,51,.42);
  border:1px solid rgba(255,255,255,.08);
  border-radius:var(--radius2);
  padding:12px;
}
.kpi .box .t{color:var(--muted);font-size:12.5px}
.kpi .box .v{font-size:18px;font-weight:900;margin-top:6px}

.slider{
  margin-top:14px;
  padding:14px;border-radius:var(--radius2);
  background:rgba(16,26,51,.42);
  border:1px solid rgba(255,255,255,.08);
}
.slider label{display:flex;align-items:center;justify-content:space-between;gap:12px}
.slider .lab{font-weight:800}
.slider .val{color:var(--muted)}
.slider input[type=range]{
  width:100%;margin-top:10px;
  --p:50%;
  --fill: var(--acc1);
  -webkit-appearance:none;appearance:none;
  height:10px;border-radius:999px;
  background: linear-gradient(90deg, var(--fill) 0 var(--p), rgba(255,255,255,.18) var(--p) 100%);
  outline:none;
}
.slider input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:20px;height:20px;border-radius:999px;
  background: var(--fill);
  border:3px solid rgba(11,16,32,.70);
  box-shadow: 0 10px 20px rgba(0,0,0,.35);
}
.slider input[type=range]::-moz-range-track{
  height:10px;border-radius:999px;
  background: rgba(255,255,255,.18);
}
.slider input[type=range]::-moz-range-progress{
  height:10px;border-radius:999px;
  background: var(--fill);
}
.slider input[type=range]::-moz-range-thumb{
  width:20px;height:20px;border-radius:999px;
  background: var(--fill);
  border:3px solid rgba(11,16,32,.70);
  box-shadow: 0 10px 20px rgba(0,0,0,.35);
}
.slider input[type=range]:focus-visible{
  box-shadow: 0 0 0 4px rgba(255,190,122,.18);
}

/* couleurs par curseur */
#fatigue{--fill: var(--c-forme)}
#sommeil{--fill: var(--c-sommeil)}
#douleur{--fill: var(--c-confort)}
#humeur{--fill: var(--c-humeur)}
.note{margin-top:10px;color:var(--muted);font-size:12.5px;line-height:1.45}
hr.sep{border:0;border-top:1px solid rgba(255,255,255,.08);margin:14px 0}

.canvasWrap{
  background:rgba(16,26,51,.42);
  border:1px solid rgba(255,255,255,.08);
  border-radius:var(--radius2);
  padding:10px;
}
canvas{width:100%;height:240px;display:block}
.small{font-size:12.5px;color:var(--muted);line-height:1.45}

.toast{
  position:fixed;left:50%;bottom:18px;transform:translateX(-50%);
  background:rgba(16,26,51,.92);
  border:1px solid rgba(255,255,255,.12);
  padding:10px 12px;border-radius:14px;
  color:var(--ink);font-size:13px;
  box-shadow: 0 16px 50px rgba(0,0,0,.35);
  opacity:0;pointer-events:none;transition:.22s;
}
.toast.on{opacity:1;pointer-events:auto}

.modal{
  position:fixed;inset:0;background:rgba(0,0,0,.52);
  display:none;align-items:center;justify-content:center;padding:18px
}
.modal.on{display:flex}
.modal .panel{
  max-width:780px;width:100%;
  background:rgba(16,26,51,.92);
  border:1px solid rgba(255,255,255,.12);
  border-radius:26px;
  box-shadow: 0 28px 90px rgba(0,0,0,.55);
  overflow:hidden;
}
.modal .panel .mhd{
  padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.10);
  display:flex;align-items:center;justify-content:space-between;gap:10px
}
.modal .panel .mhd .ttl{font-weight:900}
.modal .panel .mbd{padding:16px 18px}
.stepper{display:flex;gap:8px;flex-wrap:wrap}
.dot{
  width:10px;height:10px;border-radius:999px;
  background:rgba(255,255,255,.18);
  border:1px solid rgba(255,255,255,.18);
}
.dot.on{background:rgba(123,220,255,.8);border-color:rgba(123,220,255,.9)}
.mnav{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}

details{
  background:rgba(16,26,51,.42);
  border:1px solid rgba(255,255,255,.08);
  border-radius:var(--radius2);
  padding:10px 12px;
  margin-top:12px;
}
summary{cursor:pointer; list-style:none; font-weight:800}
summary::-webkit-details-marker{display:none}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
@media (max-width:520px){.row2{grid-template-columns:1fr}}
.field{
  background:rgba(16,26,51,.42);
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  padding:10px 12px;
}
.field .t{color:var(--muted);font-size:12.5px;margin-bottom:6px}
.field input[type="text"]{
  width:100%;background:transparent;border:1px solid rgba(255,255,255,.12);
  border-radius:12px;padding:10px 10px;color:var(--ink);outline:none
}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:12px}
.toggle input{transform:scale(1.1)}

.switchWrap{display:flex;align-items:center;gap:10px}
.swLabel{color:var(--muted);font-weight:700;font-size:12.5px;opacity:.95}
.switch{position:relative;display:inline-block;width:46px;height:26px}
.switch input{opacity:0;width:0;height:0}
.switchSlider{
  position:absolute;inset:0;
  background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  transition:.18s ease;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.08);
}
.switchSlider:before{
  content:"";
  position:absolute;height:20px;width:20px;left:3px;top:50%;
  transform:translateY(-50%);
  background:rgba(234,240,255,.92);
  border-radius:999px;
  transition:.18s ease;
  box-shadow: 0 6px 16px rgba(0,0,0,.25);
}
.switch input:checked + .switchSlider{
  background:rgba(123,220,255,.28);
  border-color:rgba(123,220,255,.38);
}
.switch input:checked + .switchSlider:before{transform:translate(20px,-50%)}
.badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 10px;border-radius:999px;
  background:rgba(16,26,51,.40);border:1px solid rgba(255,255,255,.10);
  color:var(--muted);font-size:12.5px
}

/* Optional markers: explicit state label next to switch */
.switchLine{display:flex;align-items:center;gap:10px}
.state{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;
  padding:6px 10px;border-radius:999px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.12);
  color:rgba(234,240,255,.92);
  font-weight:800;font-size:12.5px;
  letter-spacing:.02em;
}

.state.on{background:rgba(123,220,255,.20);border-color:rgba(123,220,255,.32)}
