:root{--bg: #f4f6fb;--panel: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #64748b;--accent: #1d4ed8;--accent-2: #2563eb;--positive: #059669;--negative: #dc2626;--radius: 10px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#0f172a;color:#e2e8f0;display:flex;flex-direction:column;padding:16px 12px;gap:8px;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:1.2rem;padding:8px 10px 16px;color:#fff}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar nav a{color:#cbd5e1;text-decoration:none;padding:9px 10px;border-radius:8px;font-size:.92rem}.sidebar nav a:hover{background:#1e293b;color:#fff}.sidebar nav a.active{background:var(--accent-2);color:#fff}.sidebar-footer{border-top:1px solid #1e293b;padding-top:10px;font-size:.85rem}.user-name{color:#fff;margin-bottom:4px}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}.portfolio-switcher{display:flex;align-items:center;gap:8px}.portfolio-switcher .label{color:var(--muted);font-size:.85rem}.selected-user{font-weight:600}.selected-user .role{color:var(--muted);font-weight:400}.content{padding:20px;max-width:1200px;width:100%}.page-head{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head h2{margin:0}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.kpi-label{color:var(--muted);font-size:.78rem;margin-bottom:6px}.kpi-value{font-size:1.4rem;font-weight:700}.kpi.total .kpi-value{color:var(--accent)}.kpi.result .kpi-value{color:var(--positive)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:.9rem}.table th{background:#f8fafc;color:var(--muted);font-weight:600}.table tr:last-child td{border-bottom:none}button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-size:.9rem;cursor:pointer}button:hover{background:var(--accent-2)}button.small{padding:5px 10px;font-size:.8rem}button.danger{background:var(--negative)}button.secondary{background:#475569}button.secondary:hover{background:#334155}button.link{background:none;color:#93c5fd;padding:0}.btn-group{display:inline-flex;gap:6px;margin-right:10px}.actions{display:flex;gap:6px;flex-wrap:nowrap;align-items:center}input,select{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:8px;font-size:.9rem;margin:4px 0 12px;background:#fff}.row{display:flex;gap:8px;align-items:center}.row input,.row select{margin:4px 0}label{font-size:.82rem;color:var(--muted)}.muted{color:var(--muted);font-size:.85rem}.error{color:var(--negative);background:#fef2f2;border:1px solid #fecaca;padding:10px;border-radius:8px;margin-bottom:12px}.success{color:var(--positive);background:#ecfdf5;border:1px solid #a7f3d0;padding:10px;border-radius:8px;margin-bottom:12px}.loading{padding:40px;color:var(--muted)}.flags{display:flex;gap:8px;flex-wrap:wrap}.flag{background:#fef3c7;color:#92400e;border-radius:999px;padding:3px 10px;font-size:.75rem}.positive{color:var(--positive)}.negative{color:var(--negative)}.stepper{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 18px}.step{padding:6px 12px;border-radius:999px;background:#e2e8f0;color:var(--muted);font-size:.8rem}.step.active{background:var(--accent);color:#fff}.step.done{background:#dbeafe;color:var(--accent)}.form{max-width:520px}.kv{list-style:none;padding:0}.kv li{padding:6px 0;border-bottom:1px solid var(--border)}.kv li.row{justify-content:space-between}.kv b{font-weight:600}input[type=checkbox]{width:auto;margin:0 6px 0 0}.empty-state{max-width:560px;text-align:center;padding:40px 24px}.empty-state h3{margin-top:0}.empty-state button{margin-top:8px}.auth-page{min-height:100vh;display:flex;align-items:stretch;background:#0b1120;background-image:radial-gradient(60rem 40rem at 110% -10%,rgba(37,99,235,.28),transparent 60%),radial-gradient(50rem 36rem at -20% 110%,rgba(16,185,129,.16),transparent 60%)}.auth-panel{flex:1;display:none;flex-direction:column;justify-content:space-between;padding:48px;color:#e2e8f0}.auth-brand{display:flex;align-items:center;gap:14px}.auth-logo{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,#2563eb,#4f46e5);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.4rem;color:#fff}.auth-brand h1{margin:0;font-size:1.5rem;color:#fff}.auth-brand p{margin:2px 0 0;color:#94a3b8;font-size:.9rem}.auth-features{display:flex;flex-direction:column;gap:18px;margin:48px 0}.auth-feature{display:flex;gap:14px;align-items:flex-start}.auth-feature .feat-icon{width:40px;height:40px;border-radius:10px;background:#2563eb26;border:1px solid rgba(37,99,235,.3);color:#93c5fd;display:flex;align-items:center;justify-content:center;flex-shrink:0}.auth-feature h3{margin:0;font-size:1rem;color:#f1f5f9}.auth-feature p{margin:2px 0 0;font-size:.86rem;color:#94a3b8}.auth-footer{color:#475569;font-size:.8rem;margin:0}.auth-card-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 16px}.auth-card{width:100%;max-width:400px;background:#fff;border-radius:18px;padding:36px 32px;box-shadow:0 24px 60px #02061780}.auth-card--mfa{max-width:460px}.auth-card--center{text-align:center}.auth-card h2{margin:0 0 6px;font-size:1.45rem}.auth-sub{color:var(--muted);font-size:.92rem;margin:0 0 24px;line-height:1.5}.auth-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;background:#eff6ff;color:#1d4ed8}.auth-icon--otp{background:#ecfdf5;color:#059669}.auth-icon--success{background:#ecfdf5;color:#059669;margin-left:auto;margin-right:auto}.field{display:block;margin-bottom:16px}.field>span,.field-label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:6px;font-weight:500}.field-label{margin-top:4px}.input-wrap{position:relative}.input-wrap .input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#94a3b8;display:flex;pointer-events:none}.input-wrap input{padding-left:40px;margin:0;height:46px;border-radius:10px}.input-wrap input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb2e}.toggle-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:#94a3b8;cursor:pointer;padding:6px;display:flex}.toggle-eye:hover{color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;padding:11px 16px;border-radius:10px;font-size:.92rem;transition:background .15s ease,opacity .15s ease}.btn--primary{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}.btn--primary:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af)}.btn--primary:disabled{opacity:.55;cursor:not-allowed}.btn--block{width:100%}.btn--ghost{background:#f1f5f9;color:#1e293b}.btn--ghost:hover{background:#e2e8f0}.btn--small{padding:6px 12px;font-size:.8rem;border-radius:8px}.auth-link{background:none;border:none;color:var(--muted);font-size:.86rem;cursor:pointer;padding:0;margin-top:16px;width:100%;text-align:center}.auth-link:hover{color:var(--accent)}.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px;font-size:.88rem;display:flex;align-items:flex-start;gap:8px;line-height:1.4}.alert--error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.alert svg{flex-shrink:0;margin-top:1px}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner--dark{border-color:#0f172a40;border-top-color:#1d4ed8}@keyframes spin{to{transform:rotate(360deg)}}.otp-input{display:flex;gap:8px;justify-content:space-between;margin-bottom:18px}.otp-cell{width:46px;height:54px;text-align:center;font-size:1.35rem;font-weight:700;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--text);margin:0;padding:0}.otp-cell:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2563eb2e}.otp-cell:disabled{opacity:.6}.mfa-notice{display:flex;gap:10px;align-items:flex-start;background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:12px 14px;border-radius:10px;font-size:.86rem;margin-bottom:20px;line-height:1.4}.mfa-notice svg{flex-shrink:0;margin-top:1px}.mfa-steps{list-style:none;padding:0;margin:0 0 18px;display:flex;flex-direction:column;gap:12px}.mfa-steps li{display:flex;gap:12px;align-items:flex-start}.step-num{width:26px;height:26px;border-radius:999px;background:var(--accent);color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mfa-steps strong{font-size:.92rem}.mfa-steps p{margin:2px 0 0;font-size:.84rem;color:var(--muted)}.mfa-qr{display:flex;justify-content:center;margin:6px 0 20px}.mfa-qr svg{border:1px solid var(--border);border-radius:14px;padding:10px;background:#fff}.mfa-secret{margin-bottom:20px}.mfa-secret>span{display:block;font-size:.8rem;color:var(--muted);margin-bottom:8px}.secret-row{display:flex;align-items:center;gap:8px}.secret-row code{flex:1;font-size:.85rem;letter-spacing:.08em;background:#f8fafc;border:1px dashed var(--border);padding:10px 12px;border-radius:8px;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media (min-width: 900px){.auth-panel{display:flex}}@media (max-width: 420px){.auth-card{padding:28px 20px;border-radius:16px}.otp-input{gap:6px}.otp-cell{width:40px;height:50px;font-size:1.2rem}.secret-row{flex-direction:column;align-items:stretch}}@media (max-width: 800px){.sidebar{position:fixed;bottom:0;top:auto;width:100%;height:auto;flex-direction:row;overflow-x:auto;z-index:10}.sidebar nav{flex-direction:row}.sidebar-footer,.brand{display:none}.main{padding-bottom:60px}.topbar{flex-direction:column;align-items:flex-start;gap:8px}}
