@keyframes bcrypt-spin{to{transform:rotate(360deg)}}.passgen-tool{background:#fff;border-radius:16px;border:1px solid var(--gray-200);padding:2rem;margin-top:2rem}.passgen-options{display:flex;flex-direction:column;gap:1.25rem}.passgen-option-row{display:flex;align-items:center;gap:1rem}.passgen-option-row label{font-size:.875rem;font-weight:600;color:var(--gray-700);min-width:140px;flex-shrink:0}.passgen-slider{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:var(--gray-200);border-radius:99px;outline:0;cursor:pointer}.passgen-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--primary-500, #3b82f6);border:3px solid #fff;box-shadow:0 0 0 2px var(--primary-500, #3b82f6);cursor:pointer;transition:box-shadow .15s}.passgen-slider::-webkit-slider-thumb:hover{box-shadow:0 0 0 5px rgba(59,130,246,.18)}.passgen-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--primary-500, #3b82f6);box-shadow:0 0 0 2px var(--primary-500, #3b82f6);border:3px solid #fff;cursor:pointer}.passgen-slider::-moz-range-track{height:6px;background:var(--gray-200);border-radius:99px}.passgen-number{width:80px;padding:.45rem .75rem;border:1px solid var(--gray-300);border-radius:8px;font-size:.9rem;font-weight:600;color:var(--gray-800);outline:0;transition:border-color .15s,box-shadow .15s}.passgen-number:focus{border-color:var(--primary-400, #60a5fa);box-shadow:0 0 0 3px rgba(59,130,246,.12)}.passgen-checkboxes{display:flex;flex-wrap:wrap;gap:.6rem;padding-top:.125rem}.passgen-check,.passgen-check-icon{align-items:center;border:1.5px solid var(--gray-200);transition:all .15s}.passgen-check{position:relative;display:inline-flex;gap:.5rem;font-size:.875rem;font-weight:600;color:var(--gray-500);cursor:pointer;padding:.5rem 1rem .5rem .75rem;border-radius:10px;background:var(--gray-50);user-select:none}.passgen-check input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.passgen-check-icon{display:flex;justify-content:center;width:28px;height:28px;border-radius:7px;background:var(--gray-100);flex-shrink:0}.passgen-check-icon svg{width:14px;height:14px;stroke:var(--gray-400);transition:stroke .15s}.passgen-check:hover{border-color:var(--gray-300);color:var(--gray-700)}.passgen-check:hover .passgen-check-icon{background:var(--gray-200)}.passgen-check.is-checked{border-color:var(--primary-400, #60a5fa);background:var(--primary-50, #eff6ff);color:var(--primary-700, #1d4ed8)}.passgen-check.is-checked .passgen-check-icon{background:var(--primary-500, #3b82f6);border-color:var(--primary-500, #3b82f6)}.passgen-check.is-checked .passgen-check-icon svg{stroke:#fff}.passgen-options .btn-primary{align-self:flex-start;margin-top:.25rem}.passgen-output{margin-top:1.75rem;display:flex;flex-direction:column;gap:.6rem}.passgen-row{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.1rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:10px;transition:border-color .15s,background .15s}.passgen-row:hover{border-color:var(--primary-200, #bfdbfe);background:#fff}.passgen-value{flex:1;font-family:"Courier New",Courier,monospace;font-size:1rem;color:var(--gray-800);word-break:break-all;letter-spacing:.03em}.passgen-strength{font-size:.72rem;font-weight:700;padding:.25rem .65rem;border-radius:20px;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}.passgen-strength.weak{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.passgen-strength.fair{background:#fffbeb;color:#d97706;border:1px solid #fde68a}.passgen-strength.good{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.passgen-strength.strong{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.passgen-copy-btn{padding:.35rem .9rem;border:1px solid var(--gray-300);border-radius:6px;background:#fff;color:var(--gray-600);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0}.passgen-copy-btn:hover{background:var(--primary-500, #3b82f6);border-color:var(--primary-500, #3b82f6);color:#fff}.hasher-header{display:flex;align-items:flex-start;gap:.875rem;margin-bottom:1.25rem}.hasher-header svg{width:22px;height:22px;stroke:var(--primary-500, #3b82f6);flex-shrink:0;margin-top:3px}.hasher-title{font-size:1rem;font-weight:700;color:var(--gray-800);margin:0 0 .2rem}.hasher-subtitle{font-size:.8rem;color:var(--gray-500);margin:0}.hasher-input-row{margin-bottom:1rem}.hasher-textarea{width:100%;padding:.75rem 1rem;border:1.5px solid var(--gray-200);border-radius:10px;font-size:.9rem;font-family:"Courier New",Courier,monospace;color:var(--gray-800);resize:vertical;outline:0;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.hasher-textarea:focus{border-color:var(--primary-400, #60a5fa);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.hasher-output{display:flex;flex-direction:column;gap:.5rem}.hasher-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:10px;transition:border-color .15s}.hasher-row:hover{border-color:var(--primary-200, #bfdbfe);background:#fff}.hasher-algo{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--primary-600, #2563eb);background:var(--primary-50, #eff6ff);border:1px solid var(--primary-200, #bfdbfe);border-radius:6px;padding:.2rem .55rem;white-space:nowrap;flex-shrink:0;min-width:60px;text-align:center}.hasher-value{flex:1;font-family:"Courier New",Courier,monospace;font-size:.82rem;color:var(--gray-700);word-break:break-all}.hasher-copy-btn{padding:.3rem .8rem;border:1px solid var(--gray-300);border-radius:6px;background:#fff;color:var(--gray-600);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0}.hasher-copy-btn:hover{background:var(--primary-500, #3b82f6);border-color:var(--primary-500, #3b82f6);color:#fff}.hasher-empty{font-size:.85rem;color:var(--gray-400);font-style:italic;padding:.5rem 0}.verify-field,.verify-grid{display:flex;flex-direction:column}.verify-grid{gap:1rem;margin-bottom:1rem}.verify-field{gap:.4rem}.verify-label{font-size:.8rem;font-weight:700;color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em}.verify-input{width:100%;padding:.65rem 1rem;border:1.5px solid var(--gray-200);border-radius:10px;font-size:.875rem;font-family:"Courier New",Courier,monospace;color:var(--gray-800);outline:0;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.verify-input:focus{border-color:var(--primary-400, #60a5fa);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.verify-algo-pills{display:flex;flex-wrap:wrap;gap:.5rem}.verify-algo-pill{padding:.35rem .9rem;border:1.5px solid var(--gray-200);border-radius:8px;background:var(--gray-50);color:var(--gray-500);font-size:.8rem;font-weight:700;cursor:pointer;transition:all .15s}.verify-algo-pill:hover{border-color:var(--primary-300, #93c5fd);color:var(--primary-600, #2563eb);background:var(--primary-50, #eff6ff)}.verify-algo-pill.is-active{border-color:var(--primary-500, #3b82f6);background:var(--primary-500, #3b82f6);color:#fff}.verify-result{min-height:3rem;display:flex;align-items:center}.verify-result-box{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-radius:12px;font-size:.9rem;font-weight:700;width:100%;border:2px solid;transition:all .2s}.verify-result-box svg{width:22px;height:22px;flex-shrink:0}.verify-result-box.match{background:#f0fdf4;border-color:#16a34a;color:#15803d}.verify-result-box.match svg{stroke:#16a34a}.verify-result-box.no-match{background:#fef2f2;border-color:#dc2626;color:#b91c1c}.verify-result-box.no-match svg{stroke:#dc2626}.verify-result-box.pending{background:var(--gray-50);border-color:var(--gray-200);color:var(--gray-400)}.verify-result-box.pending svg{stroke:var(--gray-400)}.bcrypt-cost-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.bcrypt-cost-hint{font-size:.78rem;color:var(--gray-400);font-style:italic}.bcrypt-gen-row{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.bcrypt-output{display:flex;flex-direction:column;gap:.5rem;min-height:0}.bcrypt-hash-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:10px;transition:border-color .15s}.bcrypt-hash-row:hover{border-color:var(--primary-200, #bfdbfe);background:#fff}.bcrypt-hash-value{flex:1;font-family:"Courier New",Courier,monospace;font-size:.78rem;color:var(--gray-700);word-break:break-all}.bcrypt-spinner{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--gray-400);padding:.5rem 0}.bcrypt-spinner::before{content:"";width:14px;height:14px;border:2px solid var(--gray-200);border-top-color:var(--primary-500, #3b82f6);border-radius:50%;animation:bcrypt-spin .8s linear infinite;flex-shrink:0}.bcrypt-divider{border:0;border-top:1px dashed var(--gray-200);margin:1.5rem 0 0}@media (max-width:600px){.passgen-tool{padding:1.25rem}.passgen-option-row{flex-wrap:wrap}.passgen-option-row label{min-width:100%}.passgen-slider{width:100%}.passgen-value{font-size:.875rem}}