*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --blue:#0050d3;
  --blue-dark:#003ca6;
  --blue-light:#e8f0fd;
  --blue-mid:#4d8ff0;
  --text:#1c1c1c;
  --muted:#6b7280;
  --border:#d1d9e6;
  --bg:#f5f7fb;
  --white:#ffffff;
  --success:#00a651;
  --warn:#f5a623;
  --danger:#d93025;
  --radius:6px;
  --shadow:0 1px 4px rgba(0,0,100,0.08);
}
body{background:var(--bg);color:var(--text);font-family:'Source Sans 3',sans-serif;min-height:100vh;}

/* NAV */
nav{background:var(--blue-dark);padding:0 32px;height:52px;display:flex;align-items:center;justify-content:space-between;}
.nav-logo{color:#fff;font-size:18px;font-weight:700;letter-spacing:-0.5px;}
.nav-logo span{color:#7ab3ff;}
.nav-lang select{background:transparent;border:1px solid rgba(255,255,255,0.25);color:#fff;font-family:'Source Sans 3',sans-serif;font-size:13px;padding:4px 8px;border-radius:4px;cursor:pointer;outline:none;}
.nav-lang select option{background:#003ca6;color:#fff;}

/* HERO */
.hero{background:linear-gradient(135deg,var(--blue-dark) 0%,var(--blue) 100%);padding:48px 32px 40px;text-align:center;color:#fff;}
.hero h1{font-size:clamp(28px,5vw,42px);font-weight:700;letter-spacing:-1px;margin-bottom:10px;}
.hero h1 span{color:#7ab3ff;}
.hero p{font-size:16px;color:rgba(255,255,255,0.75);max-width:500px;margin:0 auto;}

/* MAIN */
.main{max-width:760px;margin:0 auto;padding:32px 20px 60px;}

/* CARD */
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:20px;}
.card-head{padding:16px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;}
.card-head h2{font-size:15px;font-weight:700;color:var(--text);}
.card-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);}
.card-body{padding:24px;}

/* OUTPUT */
.output-wrap{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius);display:flex;align-items:stretch;margin-bottom:16px;overflow:hidden;}
#pw-text{flex:1;padding:14px 18px;font-family:'Source Code Pro',monospace;font-size:16px;word-break:break-all;line-height:1.55;color:var(--text);min-height:56px;}
#pw-text.blank{color:var(--muted);}
.copy-btn{border:none;border-left:1.5px solid var(--border);background:var(--blue);color:#fff;width:80px;cursor:pointer;font-family:'Source Sans 3',sans-serif;font-size:13px;font-weight:600;transition:background .15s;flex-shrink:0;}
.copy-btn:hover{background:var(--blue-dark);}
.copy-btn.ok{background:var(--success);}

/* FORCE */
.force-row{display:flex;align-items:center;gap:12px;margin-bottom:4px;}
.force-track{flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.force-fill{height:100%;width:0%;border-radius:3px;transition:width .35s,background .35s;}
.force-label{font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;min-width:72px;text-align:right;color:var(--muted);transition:color .3s;}

/* CONTROLS */
.ctrl-row{display:flex;align-items:center;gap:12px;margin-bottom:20px;}
.ctrl-label{font-size:13px;font-weight:600;color:var(--muted);min-width:90px;}
.ctrl-val{font-size:15px;font-weight:700;color:var(--blue);min-width:28px;}

input[type=range]{-webkit-appearance:none;flex:1;height:3px;background:var(--border);border-radius:2px;outline:none;cursor:pointer;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:var(--blue);border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 0 0 1px var(--blue);}
input[type=range]::-webkit-slider-thumb:hover{background:var(--blue-dark);}

/* CHECKBOXES */
.checks-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.chk{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;user-select:none;transition:border-color .15s,background .15s;}
.chk:hover{border-color:var(--blue-mid);}
.chk.on{border-color:var(--blue);background:var(--blue-light);}
.chk input{display:none;}
.chk-box{width:16px;height:16px;border:2px solid var(--border);border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;}
.chk.on .chk-box{background:var(--blue);border-color:var(--blue);}
.chk-box svg{display:none;}
.chk.on .chk-box svg{display:block;}
.chk-text{font-size:13px;color:var(--muted);font-weight:600;transition:color .15s;}
.chk.on .chk-text{color:var(--text);}

/* QUANTITÉ */
.qty-row{display:flex;align-items:center;gap:10px;}
.qty-btn{width:30px;height:30px;border:1.5px solid var(--border);background:#fff;font-size:18px;cursor:pointer;color:var(--text);border-radius:4px;transition:all .15s;display:flex;align-items:center;justify-content:center;}
.qty-btn:hover{border-color:var(--blue);color:var(--blue);}
#qty-val{font-size:16px;font-weight:700;color:var(--blue);min-width:24px;text-align:center;}

/* BOUTON */
.gen-btn{width:100%;padding:14px;background:var(--blue);border:none;color:#fff;font-family:'Source Sans 3',sans-serif;font-size:16px;font-weight:700;border-radius:var(--radius);cursor:pointer;transition:background .15s;letter-spacing:.3px;}
.gen-btn:hover{background:var(--blue-dark);}
.gen-btn:active{transform:scale(0.99);}

/* MULTI LIST */
.multi-wrap{margin-top:20px;display:none;}
.multi-wrap.on{display:block;}
.multi-head{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px;}
.multi-item{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:var(--bg);border:1px solid var(--border);border-radius:4px;margin-bottom:6px;gap:10px;animation:fadeIn .15s ease both;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.multi-pw{font-family:'Source Code Pro',monospace;font-size:13px;flex:1;word-break:break-all;color:var(--text);}
.mini-copy{border:1px solid var(--border);background:#fff;cursor:pointer;font-size:12px;color:var(--muted);font-family:'Source Sans 3',sans-serif;font-weight:600;padding:4px 10px;border-radius:4px;transition:all .15s;flex-shrink:0;}
.mini-copy:hover{border-color:var(--blue);color:var(--blue);}

/* TOAST */
#toast{position:fixed;bottom:24px;right:24px;background:var(--blue-dark);color:#fff;font-size:13px;font-weight:600;padding:10px 20px;border-radius:var(--radius);opacity:0;transform:translateY(10px);transition:all .25s;pointer-events:none;box-shadow:var(--shadow);}
#toast.on{opacity:1;transform:translateY(0);}

/* FOOTER */
footer{text-align:center;padding:24px;font-size:12px;color:var(--muted);border-top:1px solid var(--border);background:#fff;}
