/* ==========================================================
   CSS FUSIONNÉ — styles.css + styles_bl.css
   Design du fichier principal + dimensions fluides, iframe et responsive
   ========================================================== */
:root{
  /* Dimensions fluides et compatibilité avec une intégration en iframe */
  --iframe-top-space:132px;
  --iframe-bottom-space:42px;
  --sidebar-width:clamp(300px,23vw,360px);
  --content-max-width:1650px;

  /* Alias conservés pour l’ancien fichier CSS */
  --primary-color:var(--primary);
  --danger-color:var(--red);
  --text-color:var(--ink);
  --muted-text-color:var(--muted);
  --panel-color:var(--surface);
  --border-color:var(--line);
  --bg:#f7f7fb;
  --surface:#ffffff;
  --surface-soft:#f2f1fa;
  --surface-strong:#171520;
  --ink:#1d1b24;
  --muted:#6f6b7b;
  --primary:#6657d9;
  --primary-dark:#5144bd;
  --primary-soft:#eeecff;
  --line:#e7e5ed;
  --green:#18764a;
  --green-soft:#e9f7ef;
  --orange:#a7650d;
  --orange-soft:#fff4df;
  --red:#b53f4d;
  --red-soft:#fdebed;
  --shadow-sm:0 1px 2px rgba(29,27,36,.04),0 8px 24px rgba(29,27,36,.05);
  --shadow-md:0 18px 55px rgba(29,27,36,.12);
  --radius-sm:10px;
  --radius-md:16px;
  --radius-lg:22px;
}

*{box-sizing:border-box}
html{min-height:100%;background:var(--bg)}
body{
  min-height:100vh;
  margin:0;
  font-f:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:
    radial-gradient(circle at 82% 0%,rgba(102,87,217,.08),transparent 31rem),
    var(--bg);
  color:var(--ink);
  font-size:clamp(14px, .35vw + 12.5px, 16px);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button,input,textarea,select{font:inherit}
button{transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}
button:active:not(:disabled){transform:translateY(1px)}

aside{
  position:fixed;
  top:0;
  bottom:var(--iframe-bottom-space);
  left:0;
  z-index:20;
  width:var(--sidebar-width);
  padding:var(--iframe-top-space) 20px 22px;
  background:var(--surface-strong);
  color:#fff;
  display:flex;
  flex-direction:column;
  gap:7px;
  border-right:1px solid rgba(255,255,255,.07);
}
.brand{display:flex;align-items:center;gap:12px;margin:0 8px 100px}
.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#8b7cff,#5b4bc9);font-size:18px;font-weight:800;box-shadow:0 8px 25px rgba(102,87,217,.3)}
aside h1{margin:0;font-size:clamp(17px,1.35vw,19px);line-height:1.05;letter-spacing:-.02em}
.brand small{display:block;margin-top:5px;color:#9d99aa;font-size:11px;font-weight:600;letter-spacing:.03em}
.nav{
  position:relative;
  border:0;
  border-radius:11px;
  padding:12px 14px;
  text-align:left;
  background:transparent;
  color:#b9b5c4;
  font-weight:600;
}
.nav:hover{background:rgba(255,255,255,.06);color:#fff}
.nav.active{background:#fff;color:var(--surface-strong);box-shadow:0 6px 18px rgba(0,0,0,.16)}
.nav.active::before{content:"";position:absolute;left:-8px;top:50%;width:3px;height:22px;border-radius:99px;background:#8b7cff;transform:translateY(-50%)}
.scale-box{
  margin-top:auto;
  padding:18px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:18px;
  background:rgba(255,255,255,.055);
  box-shadow:inset 0 1px rgba(255,255,255,.04);
}
.scale-box>span{display:block;font-size:12px;color:#aaa6b4;font-weight:600}
.scale-box>span:first-child{color:#fff;font-size:13px}
.scale-box .battery-status{color:#c6c1d1;font-weight:600}
.scale-box .battery-status.low-battery{color:#ff9c9c}
.battery-row{display:flex;align-items:center;gap:10px;margin-top:8px;min-height:24px}
.battery-icon{position:relative;flex:0 0 auto;width:38px;height:19px;padding:2px;border:2px solid #d8d4e2;border-radius:5px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.battery-icon::after{content:"";position:absolute;right:-6px;top:50%;width:4px;height:9px;border-radius:0 3px 3px 0;background:#d8d4e2;transform:translateY(-50%)}
.battery-fill{display:block;width:0;height:100%;border-radius:2px;background:#55d17d;transition:width .3s ease,background .3s ease}
.battery-icon.battery-medium .battery-fill{background:#f2b84b}
.battery-icon.battery-low .battery-fill{background:#ff646d}
.battery-icon.battery-unknown .battery-fill{width:0!important}
.battery-icon.battery-unknown{opacity:.55}
.scale-weight{display:flex!important;align-items:baseline;gap:7px;margin:13px 0 15px;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.045em}
.scale-weight #weight{font-size:clamp(32px,4.5vh,44px);line-height:1;font-weight:750;color:#fff}
.scale-weight .scale-unit{display:inline!important;font-size:clamp(15px,2.2vh,18px)!important;line-height:1;color:#b9b5c4!important;font-weight:650;letter-spacing:0}
.scale-box button{width:100%;margin-top:7px}

main{
  position:fixed;
  top:var(--iframe-top-space);
  right:0;
  bottom:var(--iframe-bottom-space);
  left:var(--sidebar-width);
  width:auto;
  margin:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding:clamp(18px,1.8vw,28px) clamp(16px,2.8vw,42px) clamp(28px,3vw,48px);
  background:
    radial-gradient(circle at 82% 0%,rgba(102,87,217,.08),transparent 31rem),
    var(--bg);
}
header,.row{display:flex;align-items:center;justify-content:space-between;gap:20px}
header{min-height:auto;margin-bottom:0}

.reset-row{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  min-height:58px;
  padding-top:14px;
  margin-bottom:8px;
}
.reset-row #reset{
  position:relative;
  z-index:2;
}

.page-heading{display:grid;gap:3px}
.eyebrow{color:var(--primary);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.11em}
header h2{margin:0;font-size:clamp(25px,2.5vw,31px);line-height:1.2;letter-spacing:-.045em}

button{
  border:1px solid transparent;
  border-radius:11px;
  padding:11px 15px;
  background:var(--primary);
  color:#fff;
  font-weight:700;
  cursor:pointer;
  box-shadow:0 5px 14px rgba(102,87,217,.16);
}
button:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 7px 18px rgba(102,87,217,.22)}
button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.secondary-button,header button,.close{background:#fff;color:var(--ink);border-color:var(--line);box-shadow:none}
.secondary-button:hover:not(:disabled),header button:hover:not(:disabled),.close:hover:not(:disabled){background:#f4f3f8;border-color:#d9d6e1;box-shadow:none}

.view{display:none;animation:fadeIn .22s ease}
.view.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.panel,.table-wrap,.card,.stats article{
  background:rgba(255,255,255,.96);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}
.panel{padding:25px 26px;margin:22px 0}
.panel h3{margin:0 0 5px;font-size:clamp(16px,1.5vw,18px);letter-spacing:-.025em}
.panel p{margin:0}
.intro{position:relative;overflow:hidden;background:linear-gradient(120deg,#fff 0%,#f7f5ff 100%);border-color:#e3dffc}
.intro::after{content:"";position:absolute;right:-46px;top:-80px;width:190px;height:190px;border-radius:50%;background:rgba(102,87,217,.085)}
p{color:var(--muted);line-height:1.6}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.card{overflow:hidden;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.card:hover{transform:translateY(-2px);border-color:#dcd8ea;box-shadow:0 14px 35px rgba(29,27,36,.09)}
.swatch{height:94px;background:var(--swatch);position:relative}
.swatch::after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 55%)}
.card-body{padding:20px}
.card-body h3{margin:0;font-size:clamp(16px,1.5vw,18px);letter-spacing:-.02em}
.card-body p{margin:7px 0 0}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0}
.chip{background:var(--surface-soft);color:#5d586a;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:700;border:1px solid #e9e6f1}
.card button{width:100%}

.table-wrap{overflow:auto;margin-top:18px}
table{width:100%;border-collapse:separate;border-spacing:0;min-width:680px}
th,td{padding:15px 17px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{background:#faf9fc;color:#777282;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background .14s ease}
tbody tr:hover{background:#fbfaff}
td{font-variant-numeric:tabular-nums}
.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}
.ok{background:var(--green-soft);color:var(--green)}
.low{background:var(--orange-soft);color:var(--orange)}
.empty{background:var(--red-soft);color:var(--red)}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:15px;margin:22px 0}
.stats article{position:relative;overflow:hidden;padding:20px 21px;min-height:124px}
.stats article::after{content:"";position:absolute;right:-18px;bottom:-30px;width:76px;height:76px;border-radius:50%;background:var(--primary-soft)}
.stats article>span{display:block;max-width:150px;color:var(--muted);font-size:12px;font-weight:700;line-height:1.35}
.stats strong{position:relative;z-index:1;display:flex;align-items:baseline;gap:6px;margin-top:17px;color:var(--ink);font-size:clamp(24px,4vh,31px);line-height:1;font-weight:750;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.stats strong>span{color:inherit;font-size:inherit}
.stats strong>.stat-unit{font-size:14px;color:var(--muted);font-weight:700;letter-spacing:0}

 dialog{width:min(760px,calc(100vw - 30px));border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px;background:#fff;color:var(--ink);box-shadow:var(--shadow-md)}
dialog::backdrop{background:rgba(23,21,32,.65);backdrop-filter:blur(4px)}
.close{position:absolute;right:15px;top:14px;width:38px;height:38px;padding:0;border-radius:12px;font-size:22px;line-height:1}
.step{padding:19px;border:1px solid var(--line);border-radius:15px;margin:15px 0;background:#fcfbfe}
.big-weight{text-align:center;background:var(--surface-strong);color:#fff;border-radius:17px;padding:25px;font-size:clamp(34px,6vh,54px);line-height:1;font-weight:750;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.progress{height:9px;background:#eceaf1;border-radius:99px;overflow:hidden;margin:18px 0}
.progress div{height:100%;background:linear-gradient(90deg,var(--primary),#8878f0);border-radius:inherit}
label{display:grid;gap:7px;margin:13px 0;color:#55515f;font-size:13px;font-weight:750}
input,textarea,select{width:100%;padding:12px 13px;border:1px solid #dcd9e3;border-radius:10px;background:#fff;color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,textarea:focus,select:focus{border-color:#8b7cff;box-shadow:0 0 0 3px rgba(102,87,217,.12)}
textarea{min-height:92px;resize:vertical}
.ingredient-row{display:grid;grid-template-columns:1fr 120px 42px;gap:9px;margin:9px 0}
.danger{background:var(--red);box-shadow:0 5px 14px rgba(181,63,77,.15)}
.danger:hover:not(:disabled){background:#9f3441;box-shadow:0 7px 18px rgba(181,63,77,.2)}

#toast{position:fixed;z-index:100;right:24px;bottom:calc(var(--iframe-bottom-space) + 24px);background:var(--surface-strong);color:#fff;padding:13px 17px;border-radius:12px;box-shadow:0 16px 35px rgba(23,21,32,.22);opacity:0;transform:translateY(10px);transition:.2s}
#toast.show{opacity:1;transform:none}
.connection-dialog{position:relative;width:min(490px,calc(100vw - 30px));text-align:center;padding:40px}
.connection-dialog::backdrop{background:rgba(23,21,32,.88);backdrop-filter:blur(7px)}
.connection-content{display:grid;gap:13px}
.connection-content h2{margin:0;font-size:clamp(21px,2.4vw,25px);letter-spacing:-.035em}
.connection-content p{margin:0 0 8px}
.connection-content small{color:var(--muted)}
.connection-icon{
    width:180px;
    height:180px;
    margin:0 auto 25px;

    display:flex;
    justify-content:center;
    align-items:center;

    background:#2a2735;
    border:2px solid #4b4660;
    border-radius:22px;

    box-shadow:
        0 15px 35px rgba(0,0,0,.25),
        inset 0 1px 0 rgba(255,255,255,.08);
}

.connection-icon img{
    width:145px;
    height:145px;
    object-fit:contain;
}

/* Image de la balance affichée à droite de la batterie uniquement après connexion */
.connected-scale-image{
  display:none;
  width:50px;
  height:38px;
  margin-left:auto;
  padding:4px;
  flex:0 0 auto;
  object-fit:contain;
  background:#ffffff;
  border:1px solid rgba(255,255,255,.28);
  border-radius:9px;
  box-shadow:0 5px 14px rgba(0,0,0,.2);
}

.connected-scale-image.show{
  display:block;
  animation:connectedScaleAppear .22s ease;
}

@keyframes connectedScaleAppear{
  from{opacity:0;transform:translateY(3px) scale(.94)}
  to{opacity:1;transform:none}
}
.connection-dialog .connection-content>button{width:100%;font-size:15px;padding:14px}
.connection-dialog .connection-close{position:absolute;right:15px;top:14px;width:38px;height:38px;padding:0;font-size:22px;z-index:2}
.connection-dialog #continueWithoutScale{margin-top:-3px}


/* L'application défile uniquement dans la zone située sous les logos. */
@media(min-width:761px){
  html,body{height:100%;overflow:hidden}
}
@media(max-width:980px){
  :root{--sidebar-width:280px}
  aside{padding-inline:14px}
  main{padding:28px 25px 50px}
}
@media(max-width:760px){
  aside{position:static;width:auto;min-height:auto;max-height:none;padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .brand{grid-column:1/-1;margin:0 4px 12px}
  .nav{text-align:center;padding:10px 8px}
  .nav.active::before{display:none}
  .scale-box{grid-column:1/-1;margin-top:12px}
  main{position:static;width:100%;margin:0;min-height:auto;overflow:visible;padding:22px 16px calc(var(--iframe-bottom-space) + 40px)}
  header,.row{align-items:stretch;flex-direction:column}
  .reset-row{justify-content:stretch;min-height:auto;padding-top:12px;margin-bottom:14px}
  .reset-row #reset{width:100%}
  header h2{font-size:27px}
  .ingredient-row{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:480px){
  .stats{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr}
  dialog{padding:24px 18px}
}

/* Jauge visuelle de dosage */
.dose-visual{display:grid;grid-template-columns:210px 1fr;align-items:center;gap:34px;margin:22px 0;padding:26px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,#cfc8ea,#bdb3e3);transition:border-color .2s ease,background .2s ease}

/* Goutte élancée, pointe vers le haut et base arrondie */
.drop-meter{
  position:relative;
  width:150px;
  height:220px;
  margin:0 auto 12px;
  overflow:hidden;
  background:linear-gradient(105deg,#eef7ff 0%,#fff 44%,#edf5fb 100%);
  clip-path:path("M 75 1 C 69 25 55 49 39 74 C 21 102 10 126 10 153 C 10 195 38 220 75 220 C 112 220 140 195 140 153 C 140 126 129 102 111 74 C 95 49 81 25 75 1 Z");
  filter:drop-shadow(0 16px 22px rgba(79,65,157,.16));
}
.drop-meter::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:3;
  pointer-events:none;
  clip-path:inherit;
  box-shadow:
    inset 0 0 0 4px rgba(185,207,224,.88),
    inset 0 0 0 9px rgba(255,255,255,.72),
    inset -15px -12px 28px rgba(118,166,200,.13);
}
.drop-meter::after{
  content:"";
  position:absolute;
  z-index:4;
  left:30px;
  top:46px;
  width:22px;
  height:86px;
  border-radius:55% 45% 60% 40%;
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.15));
  transform:rotate(20deg);
  filter:blur(.3px);
  pointer-events:none;
}
.drop-fill{position:absolute;z-index:1;left:0;right:0;bottom:0;height:0;background:linear-gradient(180deg,#a99fff 0%,#7768e8 42%,var(--primary) 100%);transition:height .18s ease}
.drop-fill::before{content:"";position:absolute;top:-8px;left:-12%;width:124%;height:17px;border-radius:50%;background:rgba(255,255,255,.42)}
.drop-shine{display:none}
.dose-readout{display:grid;gap:7px}
.dose-readout>span{color:var(--muted);font-size:13px;font-weight:750;text-transform:uppercase;letter-spacing:.06em}
.dose-readout strong{display:flex;align-items:baseline;gap:8px;color:var(--ink);font-size:clamp(40px,7vh,58px);line-height:1;font-weight:780;letter-spacing:-.055em;font-variant-numeric:tabular-nums}
.dose-readout small{font-size:22px;color:var(--muted);font-weight:750;letter-spacing:0}
.dose-readout p{margin:0;font-size:14px;font-weight:700}
.target-stop{display:none;margin:0 0 20px;padding:18px 22px;border:2px solid #bd3345;border-radius:16px;background:#fff0f2;color:#9f2637;text-align:center;animation:stopPulse .8s ease-in-out infinite alternate}
.target-stop.show{display:grid;gap:3px}
.target-stop strong{font-size:clamp(30px,5vh,42px);line-height:1;font-weight:900;letter-spacing:.08em}
.target-stop span{font-size:16px;font-weight:800}
.dose-visual.target-reached{border-color:#d95465;background:#fff7f8}
.dose-visual.target-reached .drop-meter::before{box-shadow:inset 0 0 0 4px #d95465,inset 0 0 0 9px rgba(255,255,255,.72),inset -15px -12px 28px rgba(189,51,69,.12)}
.dose-visual.target-reached .drop-fill{background:linear-gradient(180deg,#ed7b89,#bd3345)}
@keyframes stopPulse{from{transform:scale(1);box-shadow:0 0 0 rgba(189,51,69,0)}to{transform:scale(1.015);box-shadow:0 10px 28px rgba(189,51,69,.18)}}
@media(max-width:620px){.dose-visual{grid-template-columns:1fr;gap:8px;text-align:center}.drop-meter{width:132px;height:194px;clip-path:path("M 66 1 C 61 22 49 43 35 65 C 19 90 9 111 9 135 C 9 172 33 194 66 194 C 99 194 123 172 123 135 C 123 111 113 90 97 65 C 83 43 71 22 66 1 Z")}.dose-readout{justify-items:center}.dose-readout strong{font-size:48px}}
@media(prefers-reduced-motion:reduce){.drop-fill,.dose-visual{transition:none}.target-stop{animation:none}}


/* ==========================================================
   INTÉGRATION DANS LE SITE EXISTANT
   - réserve la zone des logos en haut
   - réserve le bandeau d'informations en bas
   - évite que ColorStock passe devant ces éléments
   ========================================================== */
html,body{
  width:100%;
  overflow-x:hidden;
}

/* Le contenu de l'application ne doit jamais remonter sous les logos. */
body{
  padding-top:0;
  padding-bottom:0;
}

/* Les fenêtres restent dans la zone centrale utile. */
dialog{
  max-height:calc(100vh - var(--iframe-top-space) - var(--iframe-bottom-space) - 24px);
  overflow:auto;
}

/* Sur écrans bas, la balance reste entièrement visible au-dessus du bandeau. */
@media (max-height:760px) and (min-width:761px){
  aside{padding-top:var(--iframe-top-space);padding-bottom:14px}
  .nav{padding-block:9px}
  .scale-box{padding:14px}
  .scale-weight{margin:9px 0 10px}
}
