:root{--background: 210 20% 96%;--foreground: 222 47% 10%;--border: 210 20% 82%;--card: 0 0% 100%;--card-foreground: 222 47% 10%;--primary: 199 89% 40%;--primary-foreground: 0 0% 100%;--secondary: 210 20% 90%;--secondary-foreground: 222 47% 10%;--muted: 210 20% 90%;--muted-foreground: 215 16% 42%;--accent: 199 89% 40%;--destructive: 0 84% 60%;--emerald: 160 84% 39%;--amber: 38 92% 50%;--ring: 199 89% 40%;--radius-lg: .75rem;--radius-md: .5rem;--radius-full: 9999px;--radius: var(--radius-lg);--qr-dark: #0e1524;--qr-light: #ffffff;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "Space Mono", ui-monospace, Menlo, Consolas, monospace;--site-max: 72rem;--tool-max: 42rem;--space: clamp(1rem, 4vw, 1.5rem)}:root.dark{--background: 222 47% 6%;--foreground: 210 40% 96%;--border: 222 30% 16%;--card: 222 40% 9%;--card-foreground: 210 40% 96%;--primary: 199 89% 55%;--primary-foreground: 222 47% 6%;--secondary: 222 35% 14%;--secondary-foreground: 210 40% 96%;--muted: 222 35% 14%;--muted-foreground: 215 20% 55%;--accent: 199 89% 55%;--destructive: 0 72% 51%;--emerald: 160 84% 39%;--amber: 38 92% 50%;--ring: 199 89% 55%;--qr-dark: #e8eef4;--qr-light: #111827}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:.875rem;line-height:1.5;color:hsl(var(--foreground));background-color:hsl(var(--background));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-bottom:env(safe-area-inset-bottom)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.75rem 1rem;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-radius:var(--radius-md);text-decoration:none}.skip-link:focus{left:1rem;top:1rem}.site-header{position:fixed;top:0;left:0;right:0;z-index:50;border-bottom:1px solid hsl(var(--border) / .4);background:hsl(var(--background) / .8);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:3.5rem;max-width:var(--site-max);margin-inline:auto;padding-inline:var(--space)}.brand{display:flex;align-items:center;gap:.625rem;min-width:0;text-decoration:none;color:inherit}.brand-icon{flex-shrink:0;border-radius:var(--radius-md)}:root:not(.dark) .brand-icon,:root:not(.dark) .footer-icon{filter:brightness(.85) saturate(1.1)}.brand-title{font-size:.875rem;font-weight:600;letter-spacing:-.02em;color:hsl(var(--foreground))}.page{min-height:100vh;padding:5rem var(--space) 0}.page-inner{max-width:var(--site-max);margin-inline:auto;display:flex;flex-direction:column;gap:2rem}.page-sections{display:flex;flex-direction:column;gap:1.5rem}.sections-row{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:stretch}.sections-row>.card{height:100%}@media(min-width:768px){.sections-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.page-hero{text-align:center;margin-bottom:0}.badge{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.25rem .75rem;border:1px solid hsl(var(--primary) / .3);border-radius:var(--radius-full);background:hsl(var(--primary) / .05);color:hsl(var(--primary));font-family:var(--font-mono);font-size:.6875rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase}.badge-dot{width:.375rem;height:.375rem;flex-shrink:0;border-radius:var(--radius-full);background:#2cedac}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.45}}.badge-dot{animation:badge-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.page-title{margin:0 0 .75rem;font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.2;color:hsl(var(--foreground))}.page-subtitle{margin:0 auto;max-width:36rem;font-size:.875rem;line-height:1.625;color:hsl(var(--muted-foreground))}@media(min-width:640px){.page-title{font-size:2.25rem}}.card{overflow:hidden;border:1px solid hsl(var(--border));border-radius:var(--radius-lg);background:hsl(var(--card));color:hsl(var(--card-foreground))}.card-header{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid hsl(var(--border));background:hsl(var(--muted) / .3)}.section-icon{width:1rem;height:1rem;flex-shrink:0;color:hsl(var(--primary))}.section-header-label{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:hsl(var(--foreground) / .8)}.card-body{padding:1.5rem}.card-body-compact{padding:1rem 1.25rem 1.25rem}.password-card .card-body{display:flex;flex-direction:column;gap:1rem}.options-card .card-body-compact{display:flex;flex-direction:column;gap:.625rem}.password-field{display:flex;flex-direction:column;gap:.375rem}.password-row{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid hsl(var(--primary) / .2);border-radius:var(--radius-lg);background:hsl(var(--primary) / .05)}.password-input{display:block;width:100%;min-height:3.25rem;padding:.875rem 1rem;border:none;background:transparent;color:hsl(var(--foreground) / .9);font-family:var(--font-mono);font-size:clamp(1rem,3vw,1.375rem);font-weight:700;letter-spacing:-.02em;line-height:1.4;white-space:nowrap;overflow-x:auto;outline:none;word-break:normal}.password-input:empty:before{content:attr(data-placeholder);color:hsl(var(--muted-foreground));font-weight:500;pointer-events:none}.password-char-digit{color:#38bdf8}.password-char-symbol{color:#ec4899}:root.dark .password-char-digit{color:#7dd3fc}:root.dark .password-char-symbol{color:#f472b6}.password-input:focus{outline:none}.password-row:focus-within{outline:2px solid hsl(var(--ring));outline-offset:2px}.password-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem .5rem;margin:0;font-size:.75rem;line-height:1.4;color:hsl(var(--muted-foreground))}.password-legend-item{display:inline-flex;align-items:center;gap:.25rem}.password-legend-swatch{font-family:var(--font-mono);font-weight:700}.password-legend-sep{color:hsl(var(--muted-foreground) / .6)}.strength-header{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;font-size:.8125rem}.strength-label{display:inline-flex;align-items:center;gap:.375rem;font-weight:600;color:hsl(var(--foreground))}.strength-dot{width:.375rem;height:.375rem;flex-shrink:0;border-radius:var(--radius-full);background:hsl(var(--muted-foreground) / .4)}.strength-dot.strength-weak{background:hsl(var(--destructive))}.strength-dot.strength-fair{background:hsl(var(--amber))}.strength-dot.strength-strong{background:hsl(var(--emerald))}.strength-bits{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;color:hsl(var(--foreground))}.strength-track{height:.375rem;border-radius:var(--radius-full);background:hsl(var(--muted));overflow:hidden}.strength-bar{height:100%;width:0;border-radius:var(--radius-full);transition:width .2s ease,background-color .2s ease}.error-message{margin:0;padding:.625rem .875rem;border:1px solid hsl(var(--destructive) / .3);border-radius:var(--radius-md);background:hsl(var(--destructive) / .1);color:hsl(var(--destructive));font-size:.875rem}.actions{display:grid;grid-template-columns:1fr;gap:.75rem}.options-card .range-label{margin-bottom:0;font-size:.8125rem}.options-card .range-value{font-size:.75rem}.options-card .range-input{margin-bottom:0;min-height:28px}.options-card .options-grid{grid-template-columns:1fr;gap:.25rem .75rem}.options-card .checkbox-label{min-height:0;padding-block:.2rem;font-size:.75rem;gap:.5rem}.options-card .checkbox-label input{width:.875rem;height:.875rem;margin-top:.125rem}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.625rem 1.25rem;border:none;border-radius:var(--radius-md);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.btn-primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}.btn-primary:hover{background:hsl(var(--primary) / .9)}.btn-outline{border:1px solid hsl(var(--border));background:hsl(var(--background));color:hsl(var(--foreground))}.btn-outline:hover{background:hsl(var(--accent) / .1)}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;flex-shrink:0;padding:0;border:none;border-radius:var(--radius-md);background:transparent;color:hsl(var(--foreground));cursor:pointer;transition:background-color .15s ease}.btn-ghost:hover{background:hsl(var(--accent) / .1)}.btn-ghost:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.theme-icon{width:1.125rem;height:1.125rem}.theme-icon-moon{display:none}:root.dark .theme-icon-sun{display:none}:root.dark .theme-icon-moon{display:block}.qr-box{display:flex;align-items:flex-start;gap:1rem;padding:1rem;border:1px solid hsl(var(--border) / .4);border-radius:var(--radius-lg);background:hsl(var(--muted) / .3)}.qr-canvas{display:flex;flex-shrink:0;justify-content:flex-start;align-items:flex-start}.qr-content{display:flex;flex-direction:column;align-items:flex-start;min-width:0;flex:1}.qr-hint{margin:0 0 .75rem;font-size:.8125rem;line-height:1.5;color:hsl(var(--muted-foreground));text-align:left}.qr-reveal-btn{min-height:40px;padding-inline:1rem}.qr-image{display:block;width:170px;max-width:34vw;height:auto;filter:blur(10px);transition:filter .2s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.qr-canvas.qr-revealed .qr-image{filter:none;pointer-events:auto}.range-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.8125rem;font-weight:500;color:hsl(var(--foreground))}.range-value{font-family:var(--font-mono);font-size:.8125rem;color:hsl(var(--primary))}.range-input{width:100%;margin-bottom:1.25rem;accent-color:hsl(var(--primary));min-height:44px;cursor:pointer}.options-length{display:flex;flex-direction:column;gap:.25rem}.options-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.crack-card .card-body-compact{display:flex;flex-direction:column;gap:0;padding:0 0 1rem}.crack-body{display:flex;flex-direction:column}.crack-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.625rem 1rem;border-bottom:1px solid hsl(var(--border) / .3);font-size:.8125rem}.crack-row:last-child{border-bottom:none}.crack-label{display:flex;align-items:center;gap:.5rem;color:hsl(var(--foreground));font-weight:500;white-space:nowrap}.crack-icon{width:1rem;height:1rem;flex-shrink:0;color:hsl(var(--primary))}.crack-value{font-family:var(--font-mono);font-size:.75rem;color:hsl(var(--foreground) / .85);text-align:right;white-space:nowrap}.crack-note{margin:0;padding:.75rem 1rem 0;font-size:.75rem;line-height:1.55;color:hsl(var(--muted-foreground))}.checkbox-label{display:flex;align-items:flex-start;gap:.625rem;min-height:44px;font-size:.875rem;color:hsl(var(--foreground) / .9);cursor:pointer}.checkbox-label input{width:1rem;height:1rem;margin-top:.2rem;flex-shrink:0;accent-color:hsl(var(--primary));cursor:pointer}.site-footer{margin-top:4rem;padding-block:2rem;border-top:1px solid hsl(var(--border))}.footer-inner{display:flex;flex-direction:column;align-items:center;gap:.75rem;max-width:var(--site-max);margin-inline:auto;padding-inline:var(--space);text-align:center}.footer-brand{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;color:hsl(var(--muted-foreground))}.footer-icon{flex-shrink:0;border-radius:.25rem}.footer-links{display:flex;align-items:center;gap:1rem}.footer-note{font-size:.75rem;color:hsl(var(--muted-foreground))}@media(min-width:640px){.footer-inner{flex-direction:row;justify-content:space-between;text-align:left}}.toast{position:fixed;left:50%;bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:50;max-width:calc(100vw - 2rem);padding:.625rem 1.125rem;border:1px solid hsl(var(--border));border-radius:var(--radius-md);background:hsl(var(--card));color:hsl(var(--foreground));font-size:.8125rem;font-weight:500;transform:translate(-50%);pointer-events:none}.toast-hidden{opacity:0;visibility:hidden}.toast-visible{opacity:1;visibility:visible}@media(prefers-reduced-motion:reduce){.strength-bar,.btn,.toast,.qr-image,.badge-dot{transition:none;animation:none}}@media(min-width:480px){.actions{grid-template-columns:repeat(2,1fr)}}@media(max-width:359px){.options-grid{grid-template-columns:1fr}}
