.app-tab-bar{background:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:3.5rem;z-index:40}.app-tab-bar-content{max-width:48rem;margin:0 auto;padding:.5rem 1.5rem}.app-tab-identity{margin-bottom:.5rem}.app-tab-inner{display:flex;gap:.25rem;background:#f1f5f9;border-radius:.75rem}.key-status-bar{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;border-radius:.5rem;border:1px solid transparent;cursor:pointer;transition:all .15s;font-family:inherit;text-align:left}.key-status-empty{background:#fffbeb;border-color:#fde68a;color:#78350f;font-size:.8125rem}.key-status-empty:hover{border-color:#fbbf24;background:#fef3c7}.key-status-empty svg{color:#d97706;flex-shrink:0}.key-status-empty strong{color:#b45309;font-weight:600}.key-status-loaded{background:#f0fdf4;border-color:#bbf7d0}.key-status-loaded:hover{border-color:#86efac;background:#dcfce7}.key-status-avatar{width:28px;height:28px;border-radius:50%;background:#dcfce7;color:#166534;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.key-status-info{flex:1;min-width:0;overflow:hidden}.key-status-name{display:block;font-size:.8125rem;font-weight:600;color:#166534;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.key-status-email{display:block;font-size:.6875rem;color:#16a34a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-tab{display:flex;align-items:center;justify-content:center;gap:.375rem;flex:1;padding:.625rem .75rem;font-size:.8125rem;font-weight:500;color:#64748b;background:transparent;border:none;border-radius:.5rem;cursor:pointer;transition:all .2s ease;white-space:nowrap}.app-tab:hover{color:#0f172a}.app-tab.active{color:#0f172a;background:#fff;box-shadow:0 1px 3px #0000001a}.app-tab svg{opacity:.5;transition:opacity .2s}.app-tab:hover svg{opacity:.7}.app-tab.active svg{opacity:1}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.privacy-badge{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:9999px;background:#f1f5f9e6;backdrop-filter:blur(8px);font-size:.625rem;font-weight:500;color:#64748b;z-index:30;pointer-events:none;border:1px solid rgba(226,232,240,.6)}.file-selected-card{display:flex;align-items:center;gap:.75rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.75rem;padding:.75rem 1rem}.file-selected-icon{width:40px;height:40px;border-radius:.625rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-selected-icon-encrypt{background:#eef2ff;color:#4f46e5}.file-selected-icon-decrypt{background:#f0fdf4;color:#16a34a}.file-selected-info{flex:1;min-width:0}.file-selected-name{font-size:.875rem;font-weight:500;color:#0f172a;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-selected-size{font-size:.75rem;color:#64748b;margin:0}.file-selected-check{color:#16a34a;flex-shrink:0}.tab-panel{min-height:60vh}.tab-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.25rem;padding-top:.5rem}.tab-title{font-size:1.125rem;font-weight:700;color:#111827;margin:0 0 .2rem}.tab-subtitle{font-size:.8125rem;color:#6b7280;margin:0}.card{background:#fff;border:1px solid #e5e7eb;border-radius:.625rem;padding:1.25rem;margin-bottom:0}.card-title{font-size:.875rem;font-weight:600;color:#111827;margin:0 0 .5rem}.card-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.card-btn{display:flex;flex-direction:column;gap:.625rem;cursor:pointer;transition:border-color .15s,box-shadow .15s;background:#fff;border:2px solid #e5e7eb}.card-btn:hover{border-color:#818cf8;box-shadow:0 4px 12px #6366f11a}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;background:#4f46e5;color:#fff;font-size:.875rem;font-weight:600;padding:.625rem 1.25rem;border-radius:.5rem;border:none;cursor:pointer;transition:background .15s}.btn-primary:hover{background:#4338ca}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{display:inline-flex;align-items:center;background:#f3f4f6;color:#374151;font-size:.8125rem;font-weight:500;padding:.5rem 1rem;border-radius:.5rem;border:1px solid #e5e7eb;cursor:pointer;transition:background .15s}.btn-secondary:hover{background:#e5e7eb}.btn-ghost{background:transparent;border:none;cursor:pointer;font-size:.8125rem;color:#9ca3af;transition:color .15s;padding:.25rem 0}.btn-ghost:hover{color:#4f46e5}.btn-ghost-sm{background:transparent;border:none;cursor:pointer;font-size:.75rem;color:#9ca3af;transition:color .15s;padding:.25rem .5rem}.btn-ghost-sm:hover{color:#374151}.btn-sm{display:inline-flex;align-items:center;background:#4f46e5;color:#fff;font-size:.75rem;font-weight:500;padding:.375rem .875rem;border-radius:.375rem;border:none;cursor:pointer;transition:background .15s}.btn-sm:hover{background:#4338ca}.link-inline{background:none;border:none;cursor:pointer;color:#4f46e5;font-size:inherit;padding:0;text-decoration:underline}.link-inline:hover{color:#3730a3}.input{border:1px solid #d1d5db;border-radius:.5rem;padding:.5rem .75rem;font-size:.875rem;outline:none;transition:box-shadow .15s;font-family:inherit}.input:focus{box-shadow:0 0 0 2px #6366f1;border-color:#6366f1}.drop-zone{border:2px dashed #d1d5db;border-radius:.5rem;cursor:pointer;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone.dragover{border-color:#6366f1;background:#eef2ff}.drop-zone-lg{padding:2rem 1rem;text-align:center}.drop-zone-sm{padding:1rem;text-align:center}.drop-icon{margin:0 auto .5rem;color:#d1d5db}.search-wrap{position:relative;margin-bottom:.75rem}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:#9ca3af;pointer-events:none}.search-input{width:100%;padding:.5rem 1rem .5rem 2.25rem;border:1px solid #d1d5db;border-radius:.625rem;font-size:.875rem;outline:none;box-sizing:border-box}.search-input:focus{box-shadow:0 0 0 2px #6366f1;border-color:#6366f1}.contact-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.empty-state{text-align:center;padding:3rem 1rem}.empty-icon{width:56px;height:56px;background:#f3f4f6;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;color:#9ca3af}.empty-msg{font-size:.875rem;font-weight:500;color:#374151;margin:0 0 .25rem}.empty-hint{font-size:.75rem;color:#9ca3af;margin:0}.encrypt-contact-row{display:flex;align-items:center;gap:.75rem;width:100%;padding:.625rem 1rem;background:#fff;border:none;cursor:pointer;text-align:left;transition:background .1s}.encrypt-contact-row:hover{background:#f8fafc}.encrypt-contact-avatar{width:32px;height:32px;border-radius:50%;background:#eef2ff;color:#4f46e5;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;flex-shrink:0}.encrypt-contact-recent{font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#6366f1;background:#eef2ff;padding:.15rem .5rem;border-radius:9999px;flex-shrink:0}.fp-tooltip-anchor{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:#e0e7ff;color:#4f46e5;font-size:.6rem;font-weight:700;font-family:inherit;cursor:help;vertical-align:middle;margin-left:2px;border:1px solid #c7d2fe}.fp-tooltip-anchor:hover{background:#c7d2fe}.encrypt-panel{background:#fff;border:1px solid #c7d2fe;border-radius:.75rem;padding:1.25rem;box-shadow:0 1px 4px #6366f114}.encrypt-panel-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1rem}.encrypt-panel-label{font-size:.625rem;font-weight:600;color:#6366f1;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .2rem}.encrypt-panel-name{font-size:1rem;font-weight:600;color:#111827;margin:0 0 .15rem}.encrypt-panel-fp{font-size:.7rem;color:#6b7280;font-family:ui-monospace,monospace;margin:0}.notice-box{border-radius:.5rem;padding:.875rem 1rem}.notice-info{background:#eef2ff;border:1px solid #c7d2fe}.notice-warn{background:#fffbeb;border:1px solid #fde68a}.notice-success{background:#f0fdf4;border:1px solid #bbf7d0}.success-box{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.625rem;padding:1rem 1.25rem}.success-title{font-size:.875rem;font-weight:600;color:#14532d;margin:0 0 .25rem}.success-body{font-size:.8125rem;color:#166534;margin:0}.file-info{font-size:.875rem;color:#4b5563;background:#f9fafb;border:1px solid #e5e7eb;border-radius:.375rem;padding:.5rem .75rem}.divider{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:#9ca3af;margin:.75rem 0}.divider:before,.divider:after{content:"";flex:1;border-top:1px solid #e5e7eb}.key-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:500;padding:.25rem .625rem;border-radius:9999px}.key-badge-ok{background:#dcfce7;color:#15803d}.folder-bar{display:flex;align-items:center;justify-content:space-between;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;padding:.5rem .875rem}.folder-bar-inner{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#64748b;min-width:0;overflow:hidden}.folder-bar-inner strong{color:#334155;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.folder-bar-label{white-space:nowrap}.btn-xs{display:inline-flex;align-items:center;gap:.25rem;background:#fff;color:#4f46e5;border:1px solid #c7d2fe;font-size:.6875rem;font-weight:600;padding:.25rem .625rem;border-radius:.375rem;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap;flex-shrink:0}.btn-xs:hover{background:#eef2ff;border-color:#818cf8}.sign-row{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.code-block{background:#fff;border:1px solid #fde68a;border-radius:.375rem;padding:.75rem;font-size:.75rem;font-family:ui-monospace,monospace;color:#374151;white-space:pre-wrap}.wizard-progress{display:flex;align-items:center;justify-content:space-between;padding:.625rem 0;margin-bottom:1rem;border-bottom:1px solid #e5e7eb}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-5{margin-left:1.25rem}.mt-0\.5{margin-top:.125rem}.w-full{width:100%}.local-assurance-bar{display:flex;align-items:center;gap:.5rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.5rem;padding:.625rem .875rem;font-size:.8125rem;color:#166534}.local-assurance-bar svg{flex-shrink:0;color:#16a34a}.keys-section-label{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.75rem}.keys-private-label{color:#92400e}.keys-private-label svg{color:#d97706}.keys-public-label{color:#065f46}.keys-public-label svg{color:#059669}.keys-section-badge{font-size:.625rem;font-weight:600;text-transform:none;letter-spacing:.02em;padding:.15rem .5rem;border-radius:9999px}.keys-private-badge{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.keys-public-badge{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0}.private-key-card{background:#1c1917;border:1px solid #44403c;border-radius:.75rem;padding:1.25rem;color:#e7e5e4}.private-key-card-empty{background:#292524;border-color:#3c3835;text-align:center;padding:1.75rem 1.25rem}.private-key-vault-row{display:flex;align-items:center;gap:.875rem;margin-bottom:1rem}.private-key-vault-icon{width:44px;height:44px;background:#292524;border:1px solid #57534e;border-radius:.625rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#f59e0b}.private-key-vault-info{flex:1;min-width:0}.private-key-vault-status{flex-shrink:0}.private-key-uid{font-size:.9375rem;font-weight:600;color:#f5f5f4;margin:0 0 .2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.private-key-fp{font-size:.6875rem;font-family:ui-monospace,monospace;color:#a8a29e;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vault-loaded-badge{display:inline-flex;align-items:center;gap:.25rem;background:#14532d;color:#bbf7d0;border:1px solid #166534;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.2rem .5rem;border-radius:9999px}.private-key-warning-strip{display:flex;align-items:flex-start;gap:.5rem;background:#292524;border:1px solid #78350f;border-radius:.5rem;padding:.625rem .75rem;margin-bottom:1rem;font-size:.75rem;color:#fbbf24;line-height:1.4}.private-key-warning-strip strong{color:#fde68a}.private-key-actions{display:flex;gap:.5rem;flex-wrap:wrap}.private-key-empty-icon{width:52px;height:52px;background:#292524;border:1px solid #44403c;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto .875rem;color:#57534e}.private-key-empty-title{font-size:.9375rem;font-weight:600;color:#d6d3d1;margin:0 0 .375rem}.private-key-empty-body{font-size:.8125rem;color:#a8a29e;margin:0;line-height:1.5}.private-key-section-title{font-size:.875rem;font-weight:600;color:#f5f5f4;margin:0 0 .375rem}.private-key-section-body{font-size:.8125rem;color:#a8a29e;margin:0 0 .75rem;line-height:1.5}.private-key-section-body strong{color:#fde68a}.key-gen-local-note{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:#6ee7b7;background:#022c22;border:1px solid #065f46;border-radius:.375rem;padding:.375rem .625rem}.key-gen-local-note svg{color:#34d399;flex-shrink:0}.btn-vault-action{display:inline-flex;align-items:center;gap:.375rem;background:#292524;color:#fbbf24;border:1px solid #57534e;font-size:.8125rem;font-weight:600;padding:.5rem 1rem;border-radius:.5rem;cursor:pointer;transition:background .15s,border-color .15s}.btn-vault-action:hover{background:#3c3835;border-color:#78350f}.btn-vault-action:disabled{opacity:.4;cursor:not-allowed}.btn-vault-secondary{display:inline-flex;align-items:center;gap:.375rem;background:transparent;color:#a8a29e;border:1px solid #44403c;font-size:.8125rem;font-weight:500;padding:.5rem 1rem;border-radius:.5rem;cursor:pointer;transition:color .15s,border-color .15s}.btn-vault-secondary:hover{color:#d6d3d1;border-color:#57534e}.btn-vault-generate{display:inline-flex;align-items:center;gap:.375rem;background:#f59e0b;color:#1c1917;border:none;font-size:.875rem;font-weight:700;padding:.625rem 1.25rem;border-radius:.5rem;cursor:pointer;transition:background .15s}.btn-vault-generate:hover{background:#d97706}.public-key-card{background:#f0fdf4;border:1px solid #a7f3d0;border-radius:.75rem;padding:1.25rem}.public-key-intro{margin-bottom:.875rem}.public-key-desc{font-size:.8125rem;color:#065f46;margin:0 0 .5rem;line-height:1.5}.public-key-source-note{display:flex;align-items:flex-start;gap:.375rem;font-size:.75rem;color:#047857;line-height:1.4}.public-key-source-note svg{flex-shrink:0;margin-top:.1rem}.public-key-source-note strong{color:#065f46}.public-key-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.btn-public-action{display:inline-flex;align-items:center;gap:.375rem;background:#fff;color:#059669;border:1px solid #6ee7b7;font-size:.8125rem;font-weight:500;padding:.4375rem .875rem;border-radius:.5rem;cursor:pointer;transition:background .15s,border-color .15s}.btn-public-action:hover{background:#ecfdf5;border-color:#34d399}.btn-public-publish{display:inline-flex;align-items:center;gap:.375rem;background:#059669;color:#fff;border:none;font-size:.8125rem;font-weight:600;padding:.4375rem .875rem;border-radius:.5rem;cursor:pointer;transition:background .15s}.btn-public-publish:hover{background:#047857}.btn-public-publish:disabled{opacity:.5;cursor:not-allowed}.contact-key-row{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #a7f3d0}.contact-key-row:last-child{border-bottom:none}.contact-key-info{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;min-width:0}.contact-key-name{font-size:.8125rem;font-weight:600;color:#065f46}.contact-key-email{font-size:.75rem;color:#059669}.contact-key-fp{font-size:.6875rem;font-family:ui-monospace,monospace;color:#6ee7b7}.btn-contact-remove{background:none;border:none;cursor:pointer;color:#6ee7b7;padding:.25rem;border-radius:.25rem;transition:color .15s}.btn-contact-remove:hover{color:#dc2626}.btn-contact-refresh{background:none;border:none;cursor:pointer;color:#6ee7b7;font-size:.6875rem;font-weight:500;padding:.25rem .375rem;transition:color .15s}.btn-contact-refresh:hover{color:#34d399}.public-contacts-empty{display:flex;align-items:center;gap:.625rem;font-size:.8125rem;color:#059669;padding:.5rem 0}.public-contacts-empty svg{flex-shrink:0;color:#6ee7b7}.private-key-card .input{background:#292524;color:#e7e5e4;border-color:#57534e}.private-key-card .input::placeholder{color:#78716c}.private-key-card .input:focus{box-shadow:0 0 0 2px #f59e0b;border-color:#f59e0b}.private-key-card .drop-zone{border-color:#57534e;background:#292524}.private-key-card .drop-zone:hover{border-color:#f59e0b;background:#1c1917}.private-key-card .drop-zone p{color:#78716c}.keys-choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.keys-choice-card{background:#1c1917;border:2px solid #44403c;border-radius:.75rem;padding:1.25rem;text-align:center;cursor:pointer;transition:border-color .15s,box-shadow .15s}.keys-choice-card:hover{border-color:#f59e0b;box-shadow:0 4px 12px #f59e0b26}.keys-choice-icon{width:48px;height:48px;border-radius:.75rem;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem}.keys-choice-icon-generate{background:#292524;color:#f59e0b;border:1px solid #57534e}.keys-choice-icon-import{background:#292524;color:#a8a29e;border:1px solid #57534e}.keys-choice-title{font-size:.875rem;font-weight:600;color:#f5f5f4;margin:0 0 .25rem}.keys-choice-desc{font-size:.75rem;color:#a8a29e;margin:0;line-height:1.4}.keys-back-link{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;cursor:pointer;font-size:.8125rem;color:#a8a29e;padding:0;margin-bottom:.75rem;transition:color .15s}.keys-back-link:hover{color:#f59e0b}.public-key-card-empty{text-align:left}.public-key-empty-inner{display:flex;align-items:flex-start;gap:.75rem}.public-key-empty-inner svg{flex-shrink:0;color:#6ee7b7;margin-top:.1rem}.public-key-empty-title{font-size:.875rem;font-weight:600;color:#065f46;margin:0 0 .25rem}.public-key-empty-desc{font-size:.8125rem;color:#059669;margin:0;line-height:1.5}.lock-illustration{text-align:center;padding:1rem 0 .75rem}.lock-svg{width:180px;height:auto;display:block;margin:0 auto}.lock-body{fill:#1c1917;stroke:#57534e;stroke-width:2}.lock-keyhole{fill:#44403c}.lock-owner-text{font-size:12px;font-weight:600;fill:#a8a29e;font-family:ui-monospace,monospace;letter-spacing:.05em}.lock-shackle-path{fill:none;stroke:#a8a29e;stroke-width:8;stroke-linecap:round}.lock-key-bow{fill:none;stroke:#f59e0b;stroke-width:3}.lock-key-inner{fill:#f59e0b;stroke:none}.lock-key-shaft{stroke:#f59e0b;stroke-width:3;stroke-linecap:round}.lock-key-teeth{fill:none;stroke:#f59e0b;stroke-width:3;stroke-linecap:round}.lock-label{font-size:.8125rem;font-weight:600;color:#065f46;margin:.5rem 0 .15rem}.lock-hint{font-size:.6875rem;color:#6b7280;margin:0}.lock-lock .lock-shackle{animation:shackle-close .6s cubic-bezier(.34,1.56,.64,1) .5s both}.lock-lock .lock-key-group{animation:key-slide-in .5s ease-out both,key-dim 1.2s ease-out 1.1s both}.lock-lock .lock-body{animation:body-glow-lock .4s ease-out 1s both}.lock-unlock .lock-shackle{animation:shackle-open .6s cubic-bezier(.34,1.56,.64,1) .5s both}.lock-unlock .lock-key-group{animation:key-slide-in .5s ease-out both,key-glow .6s ease-out .8s both}.lock-unlock .lock-body{animation:body-glow-unlock .4s ease-out 1s both}@keyframes shackle-close{0%{transform:translateY(-18px)}70%{transform:translateY(2px)}to{transform:translateY(0)}}@keyframes shackle-open{0%{transform:translateY(0)}40%{transform:translateY(-2px)}to{transform:translateY(-18px)}}@keyframes key-slide-in{0%{transform:translate(30px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes key-dim{0%{opacity:1}to{opacity:.35}}@keyframes key-glow{0%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 8px rgba(245,158,11,.6))}to{filter:drop-shadow(0 0 3px rgba(245,158,11,.3))}}@keyframes body-glow-lock{0%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 10px rgba(22,163,74,.4))}to{filter:drop-shadow(0 0 0 transparent)}}@keyframes body-glow-unlock{0%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 10px rgba(245,158,11,.5))}to{filter:drop-shadow(0 0 3px rgba(245,158,11,.2))}}
