@import "https://fonts.googleapis.com/css2?family=Fira+Code:wght@500;600;700&family=Fira+Sans:wght@400;500;600;700&display=swap";:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#080b12;--surface:#0e131d;--surface-raised:#131a26;--surface-hover:#182131;--border:#202a3a;--border-strong:#304057;--text:#f4f7fb;--text-muted:#9aa7ba;--text-dim:#6f7d91;--primary:#8b5cf6;--primary-bright:#a78bfa;--blue:#3b82f6;--green:#10b981;--amber:#f59e0b;--red:#ef4444;--radius-sm:8px;--radius:12px;--radius-lg:18px;--shadow:0 24px 64px #00000052;--ease:cubic-bezier(.2,.8,.2,1);font-family:Fira Sans,system-ui,sans-serif}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);min-height:100dvh;color:var(--text);margin:0;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}[hidden]{display:none!important}.login-view{background:radial-gradient(circle at 15% 10%, #8b5cf624, transparent 28rem), radial-gradient(circle at 90% 90%, #3b82f614, transparent 24rem), var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.login-shell{border:1px solid var(--border);width:min(440px,100%);box-shadow:var(--shadow);animation:reveal .38s var(--ease) both;background:linear-gradient(145deg,#131a26fa,#0c111afa);border-radius:24px;padding:34px}.brand-lockup{align-items:center;gap:12px;display:flex}.brand-mark{color:#fff;background:linear-gradient(145deg, var(--primary-bright), #6d3de8);border-radius:11px;place-items:center;width:38px;height:38px;font:600 20px Fira Code;display:grid;box-shadow:0 8px 24px #8b5cf640}.brand-lockup div{line-height:1.05;display:grid}.brand-lockup strong{letter-spacing:-.03em;font:600 15px Fira Code}.brand-lockup span:not(.brand-mark){color:var(--text-dim);margin-top:4px;font-size:12px}.login-copy{margin:40px 0 28px}.eyebrow{color:var(--primary-bright);letter-spacing:.12em;text-transform:uppercase;margin:0 0 8px;font:600 11px Fira Code}.login-copy h1{letter-spacing:-.05em;margin:0 0 14px;font:600 clamp(26px,6vw,32px)/1.16 Fira Code}.login-copy>p:last-child{color:var(--text-muted);margin:0;font-size:14px;line-height:1.55}.auth-tabs{border:1px solid var(--border);background:#080b1299;border-radius:12px;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:18px;padding:4px;display:grid}.auth-tab{height:38px;color:var(--text-dim);transition:all .15s var(--ease);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.auth-tab:hover{color:var(--text);background:#ffffff08}.auth-tab.active{color:#fff;background:var(--surface-raised);border-color:var(--border-strong);box-shadow:0 4px 12px #00000040}.auth-switch-text{text-align:center;color:var(--text-dim);margin:16px 0 4px;font-size:13px}.link-btn{color:var(--primary-bright);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline;transition:color .14s}.link-btn:hover{color:#fff}.login-form{gap:10px;display:grid}.login-form label{color:#c8d1de;margin-top:8px;font-size:13px;font-weight:600}.input-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);background:#080b1280;align-items:center;gap:11px;height:48px;padding:0 13px;transition:border-color .18s,box-shadow .18s;display:flex}.input-wrap:focus-within{border-color:var(--primary);background:#080b12d9;box-shadow:0 0 0 3px #8b5cf61f}.input-wrap svg{width:17px;color:var(--text-dim)}.input-wrap input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1}.form-error{color:#fca5a5;min-height:20px;margin:4px 0 0;font-size:13px}.security-note{color:var(--text-dim);justify-content:center;align-items:center;gap:7px;margin:24px 0 0;font-size:12px;display:flex}.security-note svg{width:15px;color:var(--green)}.primary-button,.secondary-button,.danger-button{border-radius:var(--radius-sm);justify-content:center;align-items:center;gap:9px;min-height:46px;padding:0 18px;font-weight:600;transition:filter .18s,background .18s,border-color .18s,opacity .18s;display:inline-flex}.primary-button{color:#fff;background:linear-gradient(135deg, var(--primary), #7445de);border:0;box-shadow:0 9px 24px #8b5cf633}.primary-button:hover{filter:brightness(1.09)}.primary-button:active{filter:brightness(.94)}.primary-button.full{width:100%;margin-top:14px}.secondary-button{border:1px solid var(--border);color:var(--text-muted);background:var(--surface)}.secondary-button:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface-hover)}.secondary-button.compact{min-height:38px;padding:0 12px;font-size:13px}.danger-button{color:#fff;background:#c93838;border:0}.icon-button{border:1px solid var(--border);width:38px;height:38px;color:var(--text-dim);background:var(--surface);border-radius:8px;place-items:center;transition:all .14s;display:grid}.icon-button:hover{color:#fff;border-color:var(--border-strong);background:var(--surface-hover)}.icon-button.small{width:32px;height:32px}.icon-button.inline{background:0 0;border:0;width:40px;height:40px;margin-right:-10px}.button-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:none}.primary-button[aria-busy=true] .button-spinner{display:inline-block}.primary-button[aria-busy=true] .submit-icon{display:none}.primary-button:disabled,button:disabled{cursor:wait;opacity:.5}.portal-shell{flex-direction:column;min-height:100dvh;display:flex}.portal-topbar{border-bottom:1px solid var(--border);background:#0a0e16;justify-content:space-between;align-items:center;height:68px;padding:0 clamp(16px,4vw,48px);display:flex}.topbar-actions{align-items:center;gap:14px;display:flex}.user-chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:10px;padding:5px 12px 5px 5px;display:flex}.user-chip>span{color:#ddd1ff;background:#8b5cf633;border-radius:50%;place-items:center;width:32px;height:32px;font:600 12px Fira Code;display:grid}.user-chip div{display:grid}.user-chip strong{text-overflow:ellipsis;white-space:nowrap;max-width:170px;font-size:13px;overflow:hidden}.user-chip span:last-child{color:var(--green);font-size:10px}.portal-content{flex:1;width:100%;max-width:980px;margin:0 auto;padding:28px clamp(16px,3vw,32px) 60px}.license-banner{border-radius:var(--radius-lg);box-shadow:var(--shadow);background:linear-gradient(135deg,#8b5cf61a,#0e131de6);border:1px solid #8b5cf640;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;padding:24px;display:flex}.license-banner h2{margin:2px 0 12px;font:600 22px Fira Code}.banner-badges{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.status-pill{border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font:600 12px Fira Sans;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.status-pill.active{color:#6ee7b7;background:#10b98124}.status-pill.pending{color:#fcd34d;background:#f59e0b24}.status-pill.suspended,.status-pill.revoked{color:#fca5a5;background:#ef444424}.plan-pill{border:1px solid var(--border);color:var(--text);background:var(--surface);text-transform:uppercase;border-radius:999px;padding:4px 10px;font:600 11px Fira Code}.devices-pill{color:#c4b5fd;background:#8b5cf61f;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font:500 11px Fira Code;display:inline-flex}.devices-pill svg{width:13px;height:13px}.banner-expiry{text-align:right;justify-items:end;gap:4px;display:grid}.banner-expiry span{color:var(--text-dim);font-size:12px}.banner-expiry strong{color:var(--text);font:600 16px Fira Code}.portal-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:24px;box-shadow:0 8px 30px #0000001f}.card-header{align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.header-icon{width:38px;height:38px;color:var(--primary-bright);background:#8b5cf624;border-radius:10px;flex-shrink:0;place-items:center;display:grid}.header-icon svg{width:18px}.card-header h3{margin:0 0 4px;font:600 16px Fira Code}.card-header p{color:var(--text-dim);margin:0;font-size:13px}.activation-form{gap:8px;display:grid}.activation-form label{color:#cbd5e1;margin-top:6px;font-size:13px;font-weight:600}.code-input-wrap{align-items:center;gap:8px;display:flex}.code-input-wrap input{border:1px solid var(--border);border-radius:var(--radius-sm);color:#fff;letter-spacing:.08em;text-transform:uppercase;background:#080b12b3;flex:1;height:50px;padding:0 14px;font:700 18px Fira Code;transition:border-color .16s,box-shadow .16s}.code-input-wrap input:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 3px #8b5cf624}.inline-btn{border:1px solid var(--border);border-radius:var(--radius-sm);height:50px;color:var(--text-muted);background:var(--surface-raised);align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.inline-btn:hover{border-color:var(--primary);color:#fff;background:var(--surface-hover)}.inline-btn svg{width:15px}.input-hint{color:var(--text-dim);margin-top:-2px;font-size:11px}.form-feedback{min-height:20px;margin:8px 0 0;font-size:13px;font-weight:500}.form-feedback.success{color:#6ee7b7}.form-feedback.error{color:#fca5a5}.devices-list{gap:10px;max-height:380px;display:grid;overflow-y:auto}.device-item{border:1px solid var(--border);background:#080b1266;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:14px;transition:border-color .16s;display:flex}.device-item:hover{border-color:var(--border-strong)}.device-item-info{gap:4px;min-width:0;display:grid}.device-item-info strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.device-item-info code{color:var(--text-dim);font:500 11px Fira Code}.device-item-info small{color:var(--text-dim);font-size:11px}.device-item-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.revoke-btn{color:#fca5a5;background:#ef444414;border:1px solid #ef444440;border-radius:6px;padding:5px 10px;font:600 11px Fira Sans;transition:all .14s}.revoke-btn:hover{border-color:var(--red);color:#fff;background:#ef444433}.device-state-badge{border-radius:999px;padding:4px 8px;font:600 10px Fira Code}.device-state-badge.active{color:#6ee7b7;background:#10b9811f}.device-state-badge.revoked{color:#94a3b8;background:#94a3b81f}.empty-devices{text-align:center;color:var(--text-dim);place-items:center;gap:6px;padding:32px 16px;font-size:13px;display:grid}.empty-devices svg{width:28px;color:var(--text-dim);margin-bottom:4px}.crypto-footer{border:1px solid var(--border);border-radius:var(--radius);background:#090d1499;align-items:flex-start;gap:14px;margin-top:24px;padding:18px 22px;display:flex}.crypto-footer svg{width:20px;height:20px;color:var(--primary-bright);flex-shrink:0;margin-top:2px}.crypto-footer strong{color:var(--text);font-size:13px}.crypto-footer p{color:var(--text-dim);margin:4px 0 0;font-size:12px;line-height:1.5}.confirm-dialog{border:1px solid var(--border-strong);width:min(390px,100% - 32px);color:var(--text);background:var(--surface-raised);box-shadow:var(--shadow);border-radius:16px;padding:24px}.confirm-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#000000a6}.confirm-dialog form{text-align:center;justify-items:center;display:grid}.dialog-icon{color:#fca5a5;background:#ef444424;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.dialog-icon svg{width:22px}.confirm-dialog h2{margin:16px 0 8px;font:600 18px Fira Code}.confirm-dialog p{color:var(--text-muted);margin:0 0 20px;font-size:13px;line-height:1.5}.dialog-actions{grid-template-columns:1fr 1fr;gap:10px;width:100%;display:grid}.toast-region{z-index:300;pointer-events:none;gap:8px;display:grid;position:fixed;top:18px;right:18px}.toast{border:1px solid var(--border-strong);min-width:min(340px,100vw - 36px);color:var(--text);box-shadow:var(--shadow);animation:toast-in .22s var(--ease);background:#151c28;border-radius:10px;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.toast.success{border-color:#10b98173}.toast.error{border-color:#ef444473}.toast svg{flex-shrink:0;width:18px}.toast.success svg{color:var(--green)}.toast.error svg{color:var(--red)}.skeleton-list{gap:8px;display:grid}.skeleton-list span{background:linear-gradient(90deg, var(--surface-raised), var(--surface-hover), var(--surface-raised));background-size:200% 100%;border-radius:8px;height:42px;animation:1.3s linear infinite shimmer}.ml-auto{margin-left:auto}@keyframes reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes toast-in{0%{opacity:0;transform:translate(14px)}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=768px){.portal-grid{grid-template-columns:1fr}.license-banner{flex-direction:column;align-items:flex-start}.banner-expiry{text-align:left;justify-items:start}.user-chip strong{max-width:110px}}
