.landing.container{min-height:100dvh;max-width:480px;margin:0 auto;display:flex;flex-direction:column;padding:32px 24px}.landing .topbar{margin-bottom:0}.landing .topbar-left{display:flex;align-items:center}.landing .topbar-right{display:flex;align-items:center;gap:4px}.landing .github-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);padding:4px 8px;border-radius:var(--radius-sm);transition:color .15s,background .15s}.landing .github-link:hover{color:var(--fg);background:var(--bg-alt)}.landing main{flex:1;display:flex;flex-direction:column;justify-content:center;padding-bottom:48px}.landing h1{font-size:clamp(48px,18vw,96px);font-weight:800;letter-spacing:-.06em;margin:0;line-height:1;color:var(--fg)}.landing .tagline{font-size:clamp(16px,2.5vw,22px);color:var(--fg-secondary);margin:12px 0 0;max-width:420px;font-weight:500}.landing .cta{margin-top:40px;max-width:420px}.landing .cta button{display:block;width:100%;padding:14px 0;font-size:16px;font-weight:600;letter-spacing:.02em;background:var(--primary);border:none;color:#fff;cursor:pointer;text-align:center;text-decoration:none;border-radius:var(--radius);transition:background .12s,transform .08s}.landing .cta button:hover{background:var(--primary-hover)}.landing .cta button:active{transform:scale(.97)}.landing .trust-badges{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}.trust-badges{display:flex;gap:20px;flex-wrap:wrap;margin-top:8px}.trust-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--accent);letter-spacing:.01em}.trust-badge svg{flex-shrink:0;opacity:.8}.page-footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);text-align:center}.page-footer p{margin:0;font-size:11px;color:var(--muted);letter-spacing:.02em}.page-footer a{color:var(--muted);font-weight:500;text-decoration:underline;text-underline-offset:2px;transition:color .15s}.page-footer a:hover{color:var(--fg-secondary)}.scan.container{max-width:480px;margin:0 auto;padding:24px 16px 0;display:flex;flex-direction:column;min-height:100dvh}.scan header{margin-bottom:24px}.scan .topbar-right{display:flex;align-items:center;gap:4px}.scan h1{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:0}.scan .scanner-frame{position:relative;width:100%;aspect-ratio:1 / 1;max-height:360px;border-radius:var(--radius);overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--bg-alt)}.scan .scanner-frame:before{content:"";position:absolute;top:12px;left:12px;width:24px;height:24px;border-top:2px solid var(--primary);border-left:2px solid var(--primary);border-radius:2px 0 0;z-index:2;pointer-events:none}.scan .scanner-frame:after{content:"";position:absolute;bottom:12px;right:12px;width:24px;height:24px;border-bottom:2px solid var(--primary);border-right:2px solid var(--primary);border-radius:0 0 2px;z-index:2;pointer-events:none}[data-theme=dark] .scan .scanner-frame:before,[data-theme=dark] .scan .scanner-frame:after{border-color:var(--primary)}@keyframes scanner-pulse{0%,to{border-color:var(--primary)}50%{border-color:transparent}}.scan .scanner-frame video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scanner-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center}.scanner-state-text{font-size:14px;color:var(--fg-secondary);font-weight:500}.scanner-error svg{color:var(--danger)}.scanner-error .scanner-state-text{color:var(--danger)}.spinner{width:24px;height:24px;border:2px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scan .scan-info{display:flex;align-items:center;gap:8px;margin-top:16px;margin-bottom:20px;padding:10px 14px;background:var(--bg-alt);border-radius:var(--radius);border:1px solid var(--line)}.scan .scan-info svg{color:var(--primary);flex-shrink:0}.scan .scan-info span{font-size:13px;color:var(--fg-secondary);font-weight:500}.scan-body{flex:1;display:flex;flex-direction:column}.scan .actions{transition:background .1s;display:flex;gap:10px;padding:12px 0 24px;background:var(--bg);position:sticky;bottom:0;z-index:10}.scan .actions button{flex:1;padding:10px 0;font-size:13px}.warning-box{display:flex;align-items:center;gap:10px;margin-top:16px;margin-bottom:20px;padding:12px 16px;background:var(--accent-subtle);border:1px solid var(--accent);border-radius:var(--radius);color:var(--fg)}.warning-box svg{flex-shrink:0;color:var(--accent)}.warning-box span{font-size:13px;font-weight:600;line-height:1.4;color:var(--fg)}.scan .warning-box{background:var(--danger-subtle);border-color:var(--danger)}.scan .warning-box svg{color:var(--danger)}.detected-box{width:100%;height:100%;padding:24px;display:flex;flex-direction:column;justify-content:center}.detected-header{display:flex;align-items:center;gap:10px;margin-bottom:20px}.detected-header h2{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--fg)}.detected-meta{display:flex;flex-direction:column;gap:8px;padding-left:30px}.detected-row{display:flex;gap:8px;font-size:13px}.detected-label{font-weight:600;color:var(--fg-secondary);min-width:60px}.detected-value{color:var(--fg);font-weight:500;font-family:var(--font-mono);font-size:13px}.codes.container{max-width:480px;margin:0 auto;padding:24px 16px 0;display:flex;flex-direction:column;min-height:100dvh}.codes header{text-align:left;margin-bottom:32px}.codes .topbar-right{display:flex;align-items:center;gap:4px}.codes h1{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:0}.codes-body{flex:1;display:flex;flex-direction:column}.codes .keys-list{padding:0;margin:0;display:flex;flex-direction:column;gap:12px;list-style:none;flex:1}.codes .key-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-alt);overflow:hidden;transition:border-color .15s}.codes .key-item:hover{border-color:var(--muted)}.codes .key-item-body{padding:16px;display:flex;flex-direction:row;align-items:center;gap:12px}.codes .key-item-left{flex:1;min-width:0}.codes .key-app{font-weight:700;font-size:15px;color:var(--fg);display:block;letter-spacing:-.01em}.codes .key-name{font-weight:400;font-size:12px;color:var(--fg-secondary);margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.codes .key-item-right{flex-shrink:0}.codes .key-code{display:inline-block;padding:6px 10px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:24px;font-weight:600;letter-spacing:.1em;color:var(--primary);line-height:1.3}[data-theme=dark] .codes .key-code{background:var(--bg);border-color:var(--line)}.countdown-bar{height:2px;background:var(--line);margin:0 16px;border-radius:1px;overflow:hidden}.countdown-fill{height:100%;background:var(--accent);border-radius:1px;transition:width 1s linear}[data-theme=dark] .countdown-fill{box-shadow:0 0 4px color-mix(in srgb,var(--accent) 40%,transparent)}.codes .key-actions{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg)}.codes .key-actions button{flex:1;padding:7px 12px;font-size:12px}.codes .delete-warning{display:flex;flex-direction:column;gap:10px;width:100%;padding:12px 14px;background:var(--danger-subtle);border:1px solid var(--danger);border-radius:var(--radius);margin:-4px 0}.codes .delete-warning svg{color:var(--danger);flex-shrink:0}.codes .delete-warning p{margin:0;font-size:13px;font-weight:600;line-height:1.4;color:var(--fg)}[data-theme=dark] .codes .delete-warning{border-color:var(--danger)}.codes .delete-actions{display:flex;gap:8px}.codes .delete-actions button{flex:1;padding:7px 12px;font-size:12px}.codes .add-key{transition:background .1s;display:flex;gap:10px;margin-top:auto;padding:12px 0 24px;background:var(--bg);position:sticky;bottom:0;z-index:10}.codes .add-key button{flex:1;padding:10px 0;font-size:13px}.codes .codes-empty{text-align:center;padding:80px 24px;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1;justify-content:center}.codes .codes-empty .empty-icon{color:var(--muted);opacity:.35}.codes .codes-empty p{font-size:14px;color:var(--fg-secondary);margin:0;max-width:240px;line-height:1.5;font-weight:400}.codes .codes-empty button{padding:10px 20px;font-size:13px}.backups.container{max-width:480px;margin:0 auto;padding:24px 16px 0;display:flex;flex-direction:column;min-height:100dvh}.backups header{text-align:left;margin-bottom:32px}.backups .topbar-right{display:flex;align-items:center;gap:4px}.backups h1{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:0}.backups-list{display:flex;flex-direction:column;gap:12px}.backups-body{flex:1;display:flex;flex-direction:column}.backups-empty{text-align:center;padding:80px 24px;display:flex;flex-direction:column;align-items:center;gap:20px;flex:1;justify-content:center}.backups-empty .empty-icon{color:var(--muted);opacity:.35}.backups-empty p{font-size:14px;color:var(--fg-secondary);margin:0;max-width:240px;line-height:1.5;font-weight:400}.backups-empty button{padding:10px 20px;font-size:13px}.backup-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-alt);overflow:hidden;transition:border-color .15s}.backup-item:hover{border-color:var(--muted)}.backup-header{display:flex;justify-content:space-between;align-items:center;padding:16px;gap:12px}.backup-app{font-weight:700;font-size:15px;color:var(--fg);display:block;letter-spacing:-.01em}.backup-name{font-weight:400;font-size:12px;color:var(--fg-secondary);margin:2px 0 0}.reveal-warning{margin:0 16px 16px;padding:12px 14px;background:var(--danger-subtle);border:1px solid var(--danger);border-radius:var(--radius);display:flex;flex-direction:column;gap:10px}.reveal-warning svg{color:var(--danger);flex-shrink:0}.reveal-warning p{margin:0;font-size:13px;font-weight:600;line-height:1.4;color:var(--fg)}.reveal-actions{display:flex;gap:8px}.reveal-actions button{flex:1;padding:7px 12px;font-size:12px}.backup-details{padding:0 16px 16px;display:flex;flex-direction:column;align-items:center;gap:16px}.qr-wrapper{padding:12px;background:#fff;border-radius:var(--radius-sm);border:1px solid var(--line);display:inline-flex}.secret-display{width:100%;display:flex;flex-direction:column;gap:6px}.secret-label{font-size:11px;font-weight:600;color:var(--fg-secondary);text-transform:uppercase;letter-spacing:.08em}.secret-value{display:block;padding:10px 14px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;color:var(--fg);word-break:break-all;line-height:1.5}.backups-actions{transition:background .1s;margin-top:auto;padding:12px 0 24px;background:var(--bg);position:sticky;bottom:0;z-index:10}.backups-actions button{width:100%;padding:10px 0;font-size:13px}.backup-download-actions{padding:0 16px 16px;display:flex;flex-direction:column;align-items:center;gap:8px}.backup-download-actions button{width:100%;padding:7px 12px;font-size:12px}.backup-dl-error{margin:0;font-size:12px;color:var(--danger)}.not-found.container{margin:0 auto;padding:96px 24px;max-width:480px;text-align:center}.not-found h1{font-size:clamp(64px,18vw,120px);font-weight:800;letter-spacing:-.06em;margin:0;color:var(--primary);line-height:1}.not-found p{font-size:clamp(18px,3vw,24px);color:var(--fg-secondary);margin:12px 0 0;font-weight:500}.not-found .cta{margin-top:48px}.not-found .cta button{display:inline-block;padding:10px 28px;font-size:14px;font-weight:600;letter-spacing:.02em;background:var(--primary);border:none;color:#fff;cursor:pointer;text-align:center;border-radius:var(--radius);transition:background .12s}.not-found .cta button:hover{background:var(--primary-hover)}:root{--bg: #f7f8fa;--bg-alt: #eef0f4;--fg: #12131a;--fg-secondary: #5a5f6e;--primary: #1e3a6b;--primary-hover: #254d8a;--primary-subtle: #dde8f5;--accent: #0e8c5a;--accent-subtle: #e6f7f0;--danger: #c62828;--danger-subtle: #fce8e8;--line: #d0d5dd;--muted: #949aa8;--radius: 6px;--radius-sm: 3px;--font: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, "Cascadia Code", monospace;--shadow: 0 1px 2px rgba(0,0,0,.04), 0 1px 1px rgba(0,0,0,.02);--shadow-md: 0 4px 8px rgba(0,0,0,.05)}[data-theme=dark]{--bg: #0e0f14;--bg-alt: #17181f;--fg: #e8e9ed;--fg-secondary: #7c8294;--primary: #4a8cff;--primary-hover: #6ba1ff;--primary-subtle: #1a2740;--accent: #24b36b;--accent-subtle: #0a2618;--danger: #ef4444;--danger-subtle: #2a0a0a;--line: #252730;--muted: #5a5f6e;--shadow: 0 1px 2px rgba(0,0,0,.2), 0 1px 1px rgba(0,0,0,.15);--shadow-md: 0 4px 12px rgba(0,0,0,.3)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .1s,color .1s}::selection{background:var(--primary-subtle);color:var(--fg)}.is-hidden{display:none!important}a{color:var(--primary);text-decoration:none;font-weight:600}a:hover{color:var(--primary-hover)}select{color:var(--fg-secondary);background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--radius-sm);font-weight:500;font-size:12px;font-family:var(--font);margin:0;padding:4px 6px;cursor:pointer;transition:border-color .15s,background .15s;letter-spacing:.01em}select:hover{border-color:var(--muted)}select:focus-visible{outline:2px solid var(--primary);outline-offset:1px}option{cursor:pointer}button{font-family:var(--font);border-radius:var(--radius);cursor:pointer;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;font-size:13px;font-weight:600;letter-spacing:.01em}button:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px;border-radius:var(--radius)}.topbar{display:flex;justify-content:space-between;align-items:center;font-size:14px;gap:8px}.btn-primary,.btn-secondary,.btn-outline,.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--radius);cursor:pointer;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform .08s;font-family:var(--font);line-height:1.3;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em}.btn-primary:active,.btn-secondary:active,.btn-outline:active,.btn-danger:active{transform:scale(.97)}.btn-primary{background:var(--primary);border:none;color:#fff;font-weight:600}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:transparent;border:1px solid var(--line);color:var(--fg-secondary)}.btn-secondary:hover{border-color:var(--fg);color:var(--fg)}.btn-outline{background:transparent;border:1px solid var(--line);color:var(--fg-secondary)}.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-subtle)}.btn-danger-outline{color:var(--danger)}.btn-danger-outline:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-subtle)}.btn-danger{background:var(--danger);border:1px solid var(--danger);color:#fff}.btn-danger:hover{background:var(--danger);opacity:.85}[data-theme=dark] .btn-secondary,[data-theme=dark] .btn-outline{background:transparent}
