@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root{--bg-base:#010409;--bg-glass:#0d1117d9;--bg-raised:#161b22e6;--border:#ffffff14;--text-primary:#e6edf3;--text-secondary:#9ba4b5;--accent:#4848a5;--accent-soft:#6d6ee633;--focus-ring:#6d6ee673;--strength-weak:#f87171;--strength-medium:#fbbf24;--strength-strong:#7295f3;--transition:.18s ease}body{background:radial-gradient(circle at 10% 20%,#6d6ee659 0,transparent 45%),radial-gradient(circle at 95% 15%,#8987fa4d 0,transparent 40%),radial-gradient(circle at 15% 90%,#f472b64d 0,transparent 45%),var(--bg-base);min-height:100vh;color:var(--text-primary);justify-content:center;align-items:center;padding:3rem 1.5rem;display:flex}.layout{width:min(640px,100%)}.panel{background:var(--bg-glass);border:1px solid var(--border);backdrop-filter:blur(16px);border-radius:18px;flex-direction:column;gap:1.75rem;padding:2rem clamp(1.5rem,3vw,2.5rem);display:flex;box-shadow:0 20px 40px #01040999}.panel__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.panel__header h1{margin-bottom:.35rem;font-size:clamp(1.6rem,3vw,2rem);font-weight:600}.panel__header p{color:var(--text-secondary);max-width:30ch;font-size:.95rem}.ghost-btn{border:1px solid var(--border);color:var(--text-primary);cursor:pointer;transition:background var(--transition),border var(--transition),transform var(--transition);background:#ffffff0a;border-radius:10px;align-items:center;gap:.4rem;padding:.55rem .95rem;font-size:.9rem;display:inline-flex}.ghost-btn:hover{background:var(--accent-soft);border-color:#6d6ee673;transform:translateY(-1px)}.ghost-btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none;background:#ffffff0a;transform:none}.ghost-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.ghost-btn .icon{opacity:.9;font-size:1rem}.ghost-btn.is-success{color:var(--strength-strong);background:#34d39926;border-color:#34d39999}.output input{border:1px solid var(--border);background:var(--bg-raised);width:100%;color:var(--text-primary);letter-spacing:.12em;transition:border var(--transition),box-shadow var(--transition);border-radius:12px;padding:1.1rem 1.2rem;font-family:JetBrains Mono,Fira Code,SFMono-Regular,ui-monospace,monospace;font-size:1.05rem;font-weight:500}.output input:focus-visible{border-color:#6d6ee680;outline:none;box-shadow:0 0 0 4px #6d6ee626}.strength{grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;display:grid}.strength__label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:.85rem}.strength__value{color:var(--text-secondary);font-size:.95rem;font-weight:500}.pass-indicator{background:#ffffff0f;border-radius:999px;width:100%;height:8px;position:relative;overflow:hidden}.pass-indicator:before{content:"";border-radius:inherit;background:var(--strength-weak);opacity:.85;transform-origin:0;width:20%;transition:width var(--transition),background var(--transition);position:absolute;inset:0}.pass-indicator#weak:before{background:var(--strength-weak);width:25%}.pass-indicator#medium:before{background:var(--strength-medium);width:60%}.pass-indicator#strong:before{background:var(--strength-strong);width:100%}.control{flex-direction:column;gap:1rem;display:flex}.control__row{color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:.95rem;display:flex}.control .title{color:var(--text-primary);font-weight:500}#info{font-variant-numeric:tabular-nums;color:var(--text-primary);font-weight:600}input[type=range]{-webkit-appearance:none;cursor:pointer;background:#ffffff1f;border-radius:999px;outline:none;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);width:18px;height:18px;transition:transform var(--transition),box-shadow var(--transition);border-radius:50%;box-shadow:0 0 0 4px #6d6ee640}input[type=range]:active::-webkit-slider-thumb{transform:scale(1.05);box-shadow:0 0 0 6px #6d6ee633}input[type=range]::-moz-range-thumb{background:var(--accent);width:18px;height:18px;transition:transform var(--transition),box-shadow var(--transition);border:none;border-radius:50%;box-shadow:0 0 0 4px #6d6ee640}input[type=range]:active::-moz-range-thumb{transform:scale(1.05);box-shadow:0 0 0 6px #6d6ee633}.range-scale{color:var(--text-secondary);opacity:.75;letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;font-size:.75rem;display:flex}.pass-settings{flex-direction:column;gap:1rem;display:flex}.pass-settings .title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;font-size:.95rem;font-weight:600}.options{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.85rem;list-style:none;display:grid}.option{border:1px solid var(--border);transition:border var(--transition),background var(--transition);background:#ffffff05;border-radius:12px;align-items:center;gap:.6rem;padding:.75rem .85rem;display:flex}.option input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.option label{cursor:pointer;color:var(--text-primary);font-size:.9rem}.option:hover{background:#6d6ee61a;border-color:#6d6ee659}.primary-btn{color:#f9fafb;cursor:pointer;text-align:center;transition:transform var(--transition),box-shadow var(--transition),filter var(--transition);background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:14px;padding:.95rem 1.2rem;font-size:1rem;font-weight:600}.primary-btn:hover{transform:translateY(-2px);box-shadow:0 18px 32px #6366f159}.primary-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.hint{color:var(--text-secondary);text-align:center;font-size:.8rem}@media (width<=540px){.panel{padding:1.75rem 1.25rem}.options{grid-template-columns:1fr}.panel__header{flex-direction:column;align-items:stretch}.panel__header p{max-width:unset}}.credit{color:#fff;text-align:center;margin-top:1rem;font-size:1rem}.credit a{color:#fff;text-decoration:none}.credit a:hover{text-decoration:underline}