.signin-shell{min-height:calc(100vh - 57px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px}.signin-card{width:100%;max-width:420px;background:var(--dyss-surface);border:1px solid var(--dyss-border);border-radius:var(--radius-lg);padding:36px 32px;text-align:center}.signin-card h2{font-family:var(--font-brand);font-weight:300;font-size:28px;margin:0 0 8px;color:var(--dyss-white)}.signin-card p{color:var(--dyss-text-50);margin:0 0 24px;font-size:14px}.signin-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:13px 18px;background:var(--dyss-bg);border:1px solid var(--dyss-border);border-radius:var(--radius-md);color:var(--dyss-white);font-size:14px;font-family:var(--font-sans);cursor:pointer;transition:border-color .12s}.signin-btn:hover{border-color:var(--dyss-text-40)}.key-shell{min-height:calc(100vh - 57px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px}.key-card{width:100%;max-width:520px;background:var(--dyss-surface);border:1px solid var(--dyss-border);border-radius:var(--radius-lg);padding:36px 32px}.key-card h2{font-family:var(--font-brand);font-weight:300;font-size:28px;margin:0 0 6px;color:var(--dyss-white)}.key-card .lead{color:var(--dyss-text-50);margin:0 0 28px;font-size:14px;line-height:1.6}.key-display{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--dyss-bg);border:1px solid var(--dyss-border);border-radius:var(--radius-md);margin-bottom:16px}.key-display .key-text{flex:1;font-family:var(--font-mono);font-size:13px;color:var(--dyss-yellow);overflow-x:auto;white-space:nowrap}.key-display .copy-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--dyss-purple);color:#fff;border:none;border-radius:6px;font-size:12px;cursor:pointer;font-family:var(--font-sans)}.key-display .copy-btn:hover{filter:brightness(1.08)}.key-actions{display:flex;gap:12px}.key-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:var(--radius-md);font-size:14px;border:1px solid var(--dyss-border);background:var(--dyss-surface);color:var(--dyss-white);cursor:pointer;transition:all .15s;font-family:var(--font-sans);text-decoration:none}.key-btn:hover{border-color:var(--dyss-text-40)}.key-btn.primary{background:var(--dyss-purple);border-color:var(--dyss-purple);color:#fff}.key-btn.primary:hover{filter:brightness(1.08)}.key-btn.primary:disabled{opacity:.5;cursor:not-allowed;filter:none}.warning{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:var(--dyss-text-60);font-size:13px;margin-bottom:22px}.warning .icon{width:16px;height:16px;flex-shrink:0;margin-top:2px;color:var(--dyss-red)}.keys-page{max-width:960px;margin:0 auto;padding:40px 32px}.keys-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:32px}.keys-header h1{font-family:var(--font-brand);font-weight:300;font-size:28px;margin:0 0 6px;color:var(--dyss-white)}.keys-header p{color:var(--dyss-text-40);font-size:13px;line-height:1.6;margin:0;max-width:560px}.keys-empty{padding:48px 24px;text-align:center;border:1px dashed var(--dyss-border);border-radius:var(--radius-lg)}.keys-empty p{color:var(--dyss-text-40);font-size:14px;margin:0}.keys-table-wrap{border:1px solid var(--dyss-border);border-radius:var(--radius-lg);overflow:hidden}.keys-table{width:100%;border-collapse:collapse;font-size:13px}.keys-table thead{background:var(--dyss-surface)}.keys-table th{padding:10px 16px;text-align:left;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--dyss-text-30)}.keys-table td,.keys-table th{border-bottom:1px solid var(--dyss-border)}.keys-table td{padding:14px 16px;color:var(--dyss-text-60);vertical-align:middle}.keys-table tbody tr:last-child td{border-bottom:none}.keys-table tbody tr:hover{background:var(--dyss-surface)}.kt-name{color:var(--dyss-white);font-weight:500}.kt-key,.kt-name{white-space:nowrap}.kt-key{font-family:var(--font-mono);font-size:12px;color:var(--dyss-text-40)}.kt-copy,.kt-key span{vertical-align:middle}.kt-copy{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:8px;border:1px solid var(--dyss-border);border-radius:4px;background:transparent;color:var(--dyss-text-40);cursor:pointer;transition:all .12s}.kt-copy:hover{border-color:var(--dyss-text-50);color:var(--dyss-white)}.kt-tier{display:inline-block;padding:2px 8px;border-radius:4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;background:rgba(139,92,246,.1);color:var(--dyss-purple)}.kt-status{white-space:nowrap;color:var(--dyss-text-50);font-size:12px}.kt-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#22c55e;margin-right:8px;vertical-align:middle}.kt-date{font-family:var(--font-mono);font-size:11px;color:var(--dyss-text-30);white-space:nowrap}.kt-action{padding:4px 10px;border:1px solid var(--dyss-border);border-radius:4px;background:transparent;color:var(--dyss-text-50);font-size:12px;font-family:var(--font-sans);cursor:pointer;transition:all .12s}.kt-action:hover{border-color:var(--dyss-text-40);color:var(--dyss-white)}.kt-action.remove{border-color:rgba(239,68,68,.3);color:var(--dyss-red)}.kt-action.remove:hover{background:rgba(239,68,68,.08);border-color:var(--dyss-red)}.kt-confirm{display:inline-flex;gap:6px}