.nav-cta[data-v-31bfa6e6]{background:var(--primary);color:#fff!important;padding:6px 14px;border-radius:8px;font-weight:700}.nav-cta[data-v-31bfa6e6]:hover{opacity:.9}.comm-select[data-v-a57c30f3]{padding:6px 8px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--text);font-size:13px}.bell-wrap[data-v-a57c30f3]{position:relative}.icon-btn[data-v-a57c30f3]{position:relative;font-size:16px;padding:6px 10px}.badge-count[data-v-a57c30f3]{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;line-height:16px;padding:0 4px;border-radius:9px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;text-align:center}.bell-backdrop[data-v-a57c30f3]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.bell-panel[data-v-a57c30f3]{position:absolute;top:46px;right:0;width:340px;max-height:60vh;overflow:auto;background:var(--card, #fff);border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 48px #0f172a38;z-index:50}.bp-head[data-v-a57c30f3]{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-weight:700;font-size:13px}.bp-list[data-v-a57c30f3]{padding:6px}.bp-empty[data-v-a57c30f3]{padding:24px;text-align:center;color:var(--muted);font-size:13px}.bp-item[data-v-a57c30f3]{position:relative;padding:10px 12px;border-radius:10px;cursor:pointer}.bp-item[data-v-a57c30f3]:hover{background:var(--hover, #f1f5f9)}.bp-item.un[data-v-a57c30f3]{background:#2563eb0f}.bp-title[data-v-a57c30f3]{font-weight:700;font-size:13.5px;color:var(--text)}.bp-body[data-v-a57c30f3]{font-size:12.5px;color:var(--muted);margin:3px 0;line-height:1.5}.bp-time[data-v-a57c30f3]{font-size:11px;color:#94a3b8}.bp-dot[data-v-a57c30f3]{position:absolute;top:12px;right:12px;width:10px;height:10px;border-radius:50%;background:#2563eb;border:none;cursor:pointer}[data-theme=dark] .bell-panel[data-v-a57c30f3]{background:#0f172a}.src.ro[data-v-a57c30f3]{color:#fca5a5;font-weight:700}.login-wrap[data-v-7b7a7bce]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 70% -10%,rgba(56,189,248,.18),transparent),linear-gradient(160deg,#eef4fb,#e7eefb);padding:24px}.login-card[data-v-7b7a7bce]{width:420px;max-width:100%;background:#fff;border-radius:22px;padding:34px 32px;box-shadow:0 24px 70px #1f3a5f24}.login-brand[data-v-7b7a7bce]{display:flex;gap:14px;align-items:center;margin-bottom:22px}.bm[data-v-7b7a7bce]{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#2563eb,#38bdf8);color:#fff;font-weight:800;display:grid;place-items:center;font-size:20px;letter-spacing:.5px}.login-brand h2[data-v-7b7a7bce]{margin:0;font-size:21px}.sub[data-v-7b7a7bce]{font-size:12.5px;color:#64748b}.field[data-v-7b7a7bce]{display:block;margin:14px 0 4px}.field span[data-v-7b7a7bce]{display:block;font-size:13px;color:#475569;margin-bottom:6px;font-weight:600}.field input[data-v-7b7a7bce],.field select[data-v-7b7a7bce]{width:100%;padding:11px 13px;border:1.5px solid #d8e2f0;border-radius:11px;font-size:14px;background:#f8fbff;outline:none}.field input[data-v-7b7a7bce]:focus,.field select[data-v-7b7a7bce]:focus{border-color:#38bdf8;background:#fff}.role-grid[data-v-7b7a7bce]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:14px 0}.role-opt[data-v-7b7a7bce]{padding:12px 8px;border:1.5px solid #d8e2f0;border-radius:12px;background:#f8fbff;cursor:pointer;text-align:center;transition:.15s}.role-opt .r[data-v-7b7a7bce]{font-weight:700;font-size:13.5px;color:#1e3a5f}.role-opt .d[data-v-7b7a7bce]{font-size:11px;color:#64748b;margin-top:4px;line-height:1.4}.role-opt.active[data-v-7b7a7bce]{border-color:#2563eb;background:linear-gradient(135deg,#2563eb14,#38bdf814);box-shadow:0 6px 18px #2563eb1f}.btn.primary[data-v-7b7a7bce]{width:100%;margin-top:18px;padding:13px;border:none;border-radius:12px;background:linear-gradient(135deg,#2563eb,#38bdf8);color:#fff;font-size:15px;font-weight:700;cursor:pointer}.btn.primary[data-v-7b7a7bce]:hover{box-shadow:0 12px 28px #2563eb4d}.demo-btn[data-v-7b7a7bce]{width:100%;margin-top:10px;border:1.5px dashed #38bdf8;color:#0369a1;background:#f0f9ff;font-weight:700}.demo-btn[data-v-7b7a7bce]:hover{background:#e0f2fe}.quick-row[data-v-7b7a7bce]{display:flex;align-items:center;gap:8px;margin:12px 0 2px;flex-wrap:wrap}.quick-label[data-v-7b7a7bce]{font-size:12.5px;color:#64748b}.quick-chip[data-v-7b7a7bce]{padding:6px 12px;border:1.5px solid #d8e2f0;border-radius:20px;background:#f1f6fd;font-size:12.5px;cursor:pointer;color:#1e3a5f}.quick-chip[data-v-7b7a7bce]:hover{border-color:#38bdf8;background:#e8f3ff}.err[data-v-7b7a7bce]{color:#dc2626;font-size:13px;margin:8px 0 0}.hint[data-v-7b7a7bce]{margin-top:18px;font-size:12px;color:#64748b;line-height:1.6;border-top:1px dashed #dce6f3;padding-top:14px}.hint code[data-v-7b7a7bce]{background:#eef4fb;padding:1px 5px;border-radius:5px;font-size:11.5px}:root{--bg: #f4f7fc;--bg-2: #eef2f9;--panel: #ffffff;--ink: #0f172a;--ink-2: #334155;--muted: #64748b;--line: #e7ecf3;--line-2: #f0f4f9;--primary: #2563eb;--primary-600: #1d4ed8;--primary-50: #eef4ff;--accent: #0ea5e9;--violet: #7c3aed;--teal: #0d9488;--ok: #16a34a;--warn: #d97706;--danger: #e11d48;--info: #2563eb;--brand-grad: linear-gradient(135deg, #1e3a8a 0%, #2563eb 55%, #0ea5e9 100%);--brand-grad-soft: linear-gradient(135deg, #eef4ff, #e0f2fe);--accent-grad: linear-gradient(135deg, #0ea5e9, #2563eb);--sidebar-grad: linear-gradient(180deg, #0b1437 0%, #0f1f47 60%, #111c44 100%);--sh-sm: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);--sh: 0 4px 14px rgba(16,24,40,.07);--sh-md: 0 10px 30px rgba(16,24,40,.1);--sh-lg: 0 20px 55px rgba(16,24,40,.18);--radius: 14px;--radius-sm: 10px;--radius-xs: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--table-bg: #ffffff;--table-head: #f8fafc;--row-hover: #f6f9ff;--callout-bg: #eef4ff;--callout-bd: #cfe2ff;--callout-fg: #1e40af;--toast-bg: #0f172a;--toast-fg: #ffffff;--portal-nav-bg: #ffffff}[data-theme=dark]{--bg: #0a0f1e;--bg-2: #111a30;--panel: #131c30;--ink: #e6edf7;--ink-2: #b6c2d6;--muted: #8a99b3;--line: #243049;--line-2: #1b2840;--primary: #4f86ff;--primary-600: #6b9bff;--primary-50: #16233f;--accent: #38bdf8;--violet: #a78bfa;--teal: #2dd4bf;--ok: #34d399;--warn: #fbbf24;--danger: #fb7185;--info: #60a5fa;--brand-grad-soft: linear-gradient(135deg, #16233f, #15263f);--table-bg: #131c30;--table-head: #0f1828;--row-hover: #1a2540;--callout-bg: #16233f;--callout-bd: #2a3c5e;--callout-fg: #93c5fd;--toast-bg: #1c2740;--toast-fg: #e6edf7;--portal-nav-bg: #131c30;--sh-sm: 0 1px 2px rgba(0,0,0,.4);--sh: 0 4px 14px rgba(0,0,0,.45);--sh-md: 0 10px 30px rgba(0,0,0,.55);--sh-lg: 0 20px 55px rgba(0,0,0,.65)}[data-theme=dark] .portal-top{background:#0f172ad1;border-bottom-color:var(--line)}[data-theme=dark] .portal-nav a:hover{background:var(--bg-2);color:var(--ink)}[data-theme=dark] .portal-admin-link{color:var(--muted);border-color:var(--line)}[data-theme=dark] .portal-admin-link:hover{color:var(--primary);border-color:var(--primary)}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit}a{color:inherit}::selection{background:#2563eb2e}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:99px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.page-enter-active,.page-leave-active{transition:opacity .22s ease,transform .22s ease}.page-enter-from{opacity:0;transform:translateY(8px)}.page-leave-to{opacity:0;transform:translateY(-6px)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.anim{animation:rise .45s cubic-bezier(.21,.6,.35,1) both}.layout{display:flex;min-height:100vh}.sidebar{width:244px;background:var(--sidebar-grad);color:#cbd5e1;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex:none;box-shadow:4px 0 24px #0b14372e}.brand{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:12px}.brand-mark{width:40px;height:40px;border-radius:11px;flex:none;background:var(--brand-grad);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:15px;letter-spacing:.5px;box-shadow:0 6px 16px #2563eb73}.brand-text{line-height:1.25}.brand-text b{font-size:15px;color:#fff;font-weight:800;display:block}.brand-text span{font-size:11px;color:#93a4c4;font-weight:400}.side-scroll{flex:1;overflow-y:auto;padding:12px 12px 8px}.nav-group{margin-bottom:6px}.nav-group-title{font-size:11px;letter-spacing:.08em;color:#6b7a9c;padding:14px 12px 6px;font-weight:700;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;margin-bottom:3px;border:none;background:transparent;color:#b8c4dc;text-align:left;border-radius:var(--radius-xs);cursor:pointer;font-size:13.5px;position:relative;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:linear-gradient(90deg,#2563eb52,#2563eb1a);color:#fff}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:0 3px 3px 0;background:#60a5fa;box-shadow:0 0 10px #60a5facc}.nav-item .ico{width:20px;text-align:center;font-size:15px;flex:none}.nav-item.hl{background:linear-gradient(90deg,#f59e0b47,#f59e0b0f);color:#ffd9a0;font-weight:700;margin-bottom:6px}.nav-item.hl:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:0 3px 3px 0;background:#f59e0b;box-shadow:0 0 10px #f59e0bcc}.side-foot{padding:14px 18px;font-size:11.5px;color:#5e6e90;border-top:1px solid rgba(255,255,255,.07)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:62px;background:#ffffffeb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.topbar .title{font-size:17px;font-weight:800;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}.topbar .title:before{content:"";width:8px;height:18px;border-radius:99px;background:var(--brand-grad);display:inline-block}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;flex:none;background:var(--brand-grad);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px #2563eb59}.user-chip .uname{font-size:13px;font-weight:700;color:var(--ink);line-height:1.2}.user-chip .urole{font-size:11px;color:var(--muted);line-height:1.2}.content{padding:28px 32px;overflow:auto;flex:1}.scope-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 24px;background:#0a1124;color:#c3cee3;font-size:12px;border-bottom:1px solid rgba(255,255,255,.05)}.scope-bar .src{padding:3px 11px;border-radius:999px;font-weight:700;font-size:11.5px}.scope-bar .src.mock{background:#4a2c0a;color:#fcd34d}.scope-bar .src.live{background:#053b2c;color:#6ee7b7}.scope-bar .spacer{flex:1}.scope-bar a{color:#93c5fd;text-decoration:none}.scope-bar a:hover{text-decoration:underline}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:20px;margin-bottom:26px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px 22px 20px;box-shadow:var(--sh-sm);position:relative;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.kpi:after{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--brand-grad);opacity:.85}.kpi:hover{transform:translateY(-3px);box-shadow:var(--sh-md)}.kpi .label{color:var(--muted);font-size:12.5px;font-weight:600}.kpi .val{font-size:27px;font-weight:800;margin-top:10px;letter-spacing:-.02em;line-height:1.1}.kpi .val small{font-size:13px;font-weight:600;color:var(--muted);margin-left:2px}.kpi .sub{font-size:12px;margin-top:7px;display:inline-flex;align-items:center;gap:4px}.kpi .sub.up{color:var(--ok);font-weight:600}.kpi .sub.down{color:var(--danger);font-weight:600}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin-bottom:22px;box-shadow:var(--sh-sm)}.card h3{margin:0 0 16px;font-size:15px;font-weight:800;letter-spacing:-.01em}.card h3 .accent-bar{display:inline-block;width:6px;height:14px;border-radius:99px;background:var(--brand-grad);margin-right:8px;vertical-align:-2px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}@media (max-width: 980px){.grid2,.grid3{grid-template-columns:1fr}}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto;box-shadow:var(--sh-sm)}table{width:100%;border-collapse:collapse;font-size:13px;background:var(--table-bg)}th,td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line-2)}th{color:var(--muted);font-weight:700;background:var(--table-head);white-space:nowrap;font-size:12.5px;letter-spacing:.01em}tbody tr{transition:background .12s}tbody tr:hover{background:var(--row-hover)}tbody tr:last-child td{border-bottom:none}td .name{font-weight:700;color:var(--ink)}tbody tr.active{background:var(--primary-50)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;line-height:1.5}.badge.ok{background:#dcfce7;color:#15803d}.badge.warn{background:#fef3c7;color:#b45309}.badge.danger{background:#ffe4e6;color:#be123c}.badge.info{background:#dbeafe;color:#1d4ed8}.badge.teal{background:#ccfbf1;color:#0f766e}.badge.violet{background:#ede9fe;color:#6d28d9}.badge.muted{background:#eef2f7;color:#475569}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 15px;border-radius:var(--radius-xs);border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);transition:all .15s ease}.btn:hover{border-color:#c7d2e6;background:#f8fafc}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--brand-grad);color:#fff;border-color:transparent;box-shadow:0 6px 16px #2563eb4d}.btn.primary:hover{filter:brightness(1.06);box-shadow:0 8px 22px #2563eb66}.btn.ghost{background:transparent;border-color:transparent;color:var(--primary)}.btn.ghost:hover{background:var(--primary-50)}.btn.danger{background:#fff1f2;color:var(--danger);border-color:#fecdd3}.btn.danger:hover{background:#ffe4e6}.btn.sm{padding:5px 11px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible,.tab:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.tab{padding:8px 15px;border-radius:99px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);transition:all .15s ease}.tab:hover{color:var(--ink);border-color:#cdd7ea}.tab.active{background:var(--brand-grad);color:#fff;border-color:transparent;box-shadow:0 4px 12px #2563eb47}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search{padding:9px 13px;border:1px solid var(--line);border-radius:var(--radius-xs);min-width:230px;font-size:13px;background:#fff;transition:border-color .15s,box-shadow .15s}.search:focus,.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb24}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:12.5px;color:var(--muted);font-weight:600}.field input,.field select,.field textarea{padding:9px 11px;border:1px solid var(--line);border-radius:var(--radius-xs);font-size:13px;font-family:inherit;background:#fff;color:var(--ink)}.muted{color:var(--muted)}.pill{font-size:12px;padding:3px 9px;border-radius:7px;background:#eef2f7;color:#475569;font-weight:500}.chip{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:99px;font-size:12px;font-weight:600;background:var(--primary-50);color:var(--primary-600)}.bars{display:flex;align-items:flex-end;gap:16px;height:190px;padding-top:12px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}.bar{width:58%;border-radius:7px 7px 0 0;background:linear-gradient(180deg,#38bdf8,#2563eb);box-shadow:0 -2px 8px #2563eb40 inset;transition:height .6s cubic-bezier(.21,.6,.35,1)}.bar-label{font-size:12px;color:var(--muted);margin-top:7px}.bar-val{font-size:12px;font-weight:700;margin-bottom:5px;color:var(--ink-2)}.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:var(--muted)}.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:middle}.provider-card h3{margin:0 0 14px}.prov-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.prov{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;background:var(--bg-2)}.prov-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.prov .sm{font-size:12px;margin-top:4px}.usage-bar{background:var(--bg-2);border-radius:999px;height:8px;overflow:hidden;min-width:90px;display:inline-block;vertical-align:middle;margin-right:8px}.usage-bar .fill{height:100%;background:var(--accent-grad);border-radius:999px;transition:width .8s cubic-bezier(.21,.6,.35,1)}.progress-cell{white-space:nowrap;font-weight:600}.progress-mini{height:6px;background:var(--bg-2);border-radius:99px;overflow:hidden;margin-top:5px}.progress-mini .fill{height:100%;background:var(--brand-grad);border-radius:99px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b122880;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:60;animation:fade .2s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:16px;width:540px;max-width:94vw;padding:24px 26px;box-shadow:var(--sh-lg);animation:pop .25s cubic-bezier(.21,.7,.4,1.2);max-height:90vh;overflow-y:auto}@keyframes pop{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}.modal h3{margin:0 0 16px;font-size:16px;font-weight:800;display:flex;align-items:center;gap:8px}.modal h3:before{content:"";width:5px;height:16px;border-radius:99px;background:var(--brand-grad)}.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.detail-head{display:flex;align-items:center;gap:14px;margin-bottom:16px}.logo{width:46px;height:46px;border-radius:12px;background:var(--brand-grad);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;flex:none;box-shadow:0 6px 14px #2563eb4d}.tag-row{display:flex;gap:6px;flex-wrap:wrap}.section-title{font-size:12.5px;font-weight:800;color:var(--muted);margin:18px 0 10px;letter-spacing:.04em;text-transform:uppercase}.kv{display:grid;grid-template-columns:110px 1fr;gap:9px 14px;font-size:13px}.kv .k{color:var(--muted)}.kv .v{color:var(--ink);font-weight:500}.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%);background:var(--toast-bg);color:var(--toast-fg);padding:12px 22px;border-radius:12px;z-index:99;box-shadow:var(--sh-lg);font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:8px;animation:rise .3s ease}.callout{background:var(--callout-bg);border:1px solid var(--callout-bd);color:var(--callout-fg);border-radius:12px;padding:13px 16px;font-size:13px;margin-bottom:16px;display:flex;gap:10px;align-items:flex-start}.callout:before{content:"💡"}.global-error{position:sticky;top:0;z-index:200;cursor:pointer;background:#fef2f2;color:#991b1b;border-bottom:1px solid #fecaca;padding:10px 18px;font-size:13px;font-weight:600;text-align:center;box-shadow:0 2px 8px #0000000f}[data-theme=dark] .global-error{background:#3b1d1d;color:#fca5a5;border-bottom-color:#7f1d1d}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 20% -10%,#1d2c66 0%,transparent 60%),radial-gradient(900px 500px at 100% 110%,#0b3a5e 0%,transparent 55%),linear-gradient(135deg,#0b1437,#0f1f47);padding:20px;position:relative;overflow:hidden}.login-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:38px 38px;opacity:.6}.login-card{width:460px;max-width:94vw;background:#fff;border-radius:18px;padding:30px 30px 26px;box-shadow:var(--sh-lg);position:relative;z-index:1}.login-card .login-brand{display:flex;align-items:center;gap:12px;margin-bottom:16px}.login-card .login-brand .bm{width:42px;height:42px;border-radius:12px;background:var(--brand-grad);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px #2563eb66}.login-card h2{margin:0;font-size:20px;font-weight:800}.login-card .sub{color:var(--muted);margin:4px 0 20px;font-size:13px}.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.role-opt{border:1.5px solid var(--line);border-radius:12px;padding:13px;cursor:pointer;text-align:left;background:#fff;transition:all .15s ease;position:relative}.role-opt:hover{border-color:#bcd0f5;background:#f9fbff}.role-opt.active{border-color:var(--primary);background:var(--primary-50);box-shadow:0 0 0 3px #2563eb1f}.role-opt .r{font-weight:800;font-size:14px}.role-opt .d{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.4}.login-card .btn.primary{width:100%;justify-content:center;padding:12px;margin-top:6px;font-size:14.5px}.login-card .hint{font-size:12px;color:var(--muted);margin-top:16px;line-height:1.7;background:#f8fafc;border-radius:10px;padding:11px 13px}.login-card .hint code{background:#eef2f7;padding:1px 6px;border-radius:5px;font-size:11.5px}.portal{background:var(--bg);min-height:100vh}.portal-top{position:sticky;top:0;z-index:30;background:#ffffffe0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:11px 24px;box-shadow:0 1px #10182805}.portal-logo{font-weight:800;color:var(--primary);font-size:16px;line-height:1.15;display:flex;align-items:center;gap:9px}.portal-logo .bm{width:30px;height:30px;border-radius:8px;background:var(--brand-grad);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px #2563eb59}.portal-logo small{display:block;font-size:10.5px;color:var(--muted);font-weight:500;letter-spacing:.02em}.portal-nav{display:flex;gap:2px;flex:1;overflow-x:auto}.portal-nav::-webkit-scrollbar{height:0}.portal-nav a{white-space:nowrap;padding:8px 13px;border-radius:99px;color:var(--ink-2);text-decoration:none;font-size:13.5px;font-weight:600;transition:all .15s ease}.portal-nav a:hover{background:#eef2f9;color:var(--ink)}.portal-nav a.router-link-active{background:var(--primary-50);color:var(--primary-600)}.portal-admin-link{font-size:13px;color:var(--muted);text-decoration:none;white-space:nowrap;border:1px solid var(--line);padding:7px 14px;border-radius:99px;font-weight:600;transition:all .15s}.portal-admin-link:hover{color:var(--primary);border-color:#c7d2e6}.hero{position:relative;overflow:hidden;background:radial-gradient(900px 500px at 80% -20%,#1e3a8a 0%,transparent 55%),linear-gradient(135deg,#0b1437,#142a66 55%,#0e5a86);color:#fff;padding:100px 24px 88px;text-align:center}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(700px 400px at 50% 30%,#000 30%,transparent 75%);mask-image:radial-gradient(700px 400px at 50% 30%,#000 30%,transparent 75%)}.hero-badge{position:relative;display:inline-block;padding:6px 15px;border-radius:999px;background:#ffffff1f;border:1px solid rgba(255,255,255,.2);font-size:12.5px;font-weight:600;margin-bottom:18px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hero h1{position:relative;margin:0 0 14px;font-size:clamp(28px,6vw,44px);letter-spacing:.5px;font-weight:800;line-height:1.25}.hero h1 .hl{background:linear-gradient(90deg,#7dd3fc,#38bdf8);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{position:relative;margin:0 auto 26px;max-width:760px;opacity:.9;line-height:1.9;font-size:clamp(14px,3.6vw,16px)}.hero-cta{position:relative;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.hero-cta a{padding:12px 26px;border-radius:12px;font-weight:700;text-decoration:none;font-size:14.5px;transition:all .18s ease}.hero-cta .a1{background:#fff;color:var(--primary-600);box-shadow:0 10px 30px #00000040}.hero-cta .a1:hover{transform:translateY(-2px);box-shadow:0 14px 38px #00000052}.hero-cta .a2{border:1.5px solid rgba(255,255,255,.5);color:#fff}.hero-cta .a2:hover{background:#ffffff1f;transform:translateY(-2px)}.portal-section{max-width:1160px;margin:0 auto;padding:66px 30px}.portal-section.tight{padding-top:26px;padding-bottom:26px}.sec-head{margin-bottom:34px}.sec-eyebrow{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--primary-600);background:var(--primary-50);padding:4px 12px;border-radius:999px;margin-bottom:12px}.sec-title{font-size:30px;font-weight:800;margin:0;letter-spacing:-.02em;line-height:1.35}.sec-title .accent{background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.sec-lead{color:var(--muted);margin:10px 0 0;font-size:14.5px;line-height:1.7;max-width:760px}.portal-section>h2{font-size:24px;margin:0 0 6px;font-weight:800}.portal-section>.lead{color:var(--muted);margin:0 0 22px;font-size:14px}.pgrid{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(255px,1fr))}.pcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;box-shadow:var(--sh-sm);position:relative;overflow:hidden}.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-md);border-color:#dbe5f6}.pcard .ic{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:13px;font-size:24px;margin-bottom:14px;background:var(--brand-grad-soft);box-shadow:inset 0 0 0 1px #2563eb14}.pcard h3{margin:0 0 7px;font-size:16px;font-weight:800}.pcard p{color:var(--muted);font-size:13px;line-height:1.7;margin:0}.pcard .tags{margin-top:12px;display:flex;gap:6px;flex-wrap:wrap}.pcard.feature{border-top:3px solid transparent}.pcard.feature:hover{border-top-color:var(--accent)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px}.stat-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:28px 18px;text-align:center;box-shadow:var(--sh-sm);transition:transform .2s ease,box-shadow .2s ease}.stat-box:hover{transform:translateY(-3px);box-shadow:var(--sh-md)}.stat-box .v{font-size:32px;font-weight:800;background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:-.02em}.stat-box .l{color:var(--muted);font-size:13px;margin-top:6px;font-weight:500}.ent-card{display:flex;gap:14px;align-items:center}.ent-card .logo{flex:none}.ent-card .meta{min-width:0}.ent-card .meta .nm{font-weight:800;font-size:15px}.ent-card .meta .line{color:var(--muted);font-size:12.5px;margin-top:3px}.form-card{max-width:720px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px;box-shadow:var(--sh-sm)}.invest-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 640px){.invest-grid{grid-template-columns:1fr}}.portal-footer{background:linear-gradient(180deg,#0b1437,#0a1024);color:#9fb0cf;padding:40px 24px;text-align:center;font-size:13px}.portal-footer a{color:#93c5fd;text-decoration:none}.portal-footer .f-brand{font-weight:800;color:#fff;font-size:15px;margin-bottom:10px}.portal-footer .f-links{display:flex;gap:18px;justify-content:center;margin:16px 0;flex-wrap:wrap}.portal-footer .f-links a{color:#b8c4dc;font-size:13px}.portal-footer .f-links a:hover{color:#fff}.price-compare{margin:12px 0 6px;display:flex;flex-direction:column;gap:3px}.price-compare .market{font-size:12px;color:var(--muted);text-decoration:line-through}.price-compare .tenant{font-size:13px;color:var(--ink-2)}.price-compare .tenant b{color:var(--primary-600);font-size:18px}.divider{height:1px;background:var(--line);margin:4px 0}.empty{text-align:center;color:var(--muted);padding:32px;font-size:13px}.kpi,.pcard,.stat-box{animation:rise .42s cubic-bezier(.21,.6,.35,1) both}.kpis .kpi:nth-child(1){animation-delay:.02s}.kpis .kpi:nth-child(2){animation-delay:.06s}.kpis .kpi:nth-child(3){animation-delay:.1s}.kpis .kpi:nth-child(4){animation-delay:.14s}.kpis .kpi:nth-child(5){animation-delay:.18s}.kpis .kpi:nth-child(6){animation-delay:.22s}.pgrid .pcard:nth-child(1){animation-delay:.03s}.pgrid .pcard:nth-child(2){animation-delay:.07s}.pgrid .pcard:nth-child(3){animation-delay:.11s}.pgrid .pcard:nth-child(4){animation-delay:.15s}.pgrid .pcard:nth-child(5){animation-delay:.19s}.pgrid .pcard:nth-child(6){animation-delay:.23s}.stat-row .stat-box:nth-child(1){animation-delay:.02s}.stat-row .stat-box:nth-child(2){animation-delay:.06s}.stat-row .stat-box:nth-child(3){animation-delay:.1s}.stat-row .stat-box:nth-child(4){animation-delay:.14s}.stat-row .stat-box:nth-child(5){animation-delay:.18s}.stat-row .stat-box:nth-child(6){animation-delay:.22s}.menu-btn{display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:18px;color:var(--ink-2);flex:none;margin-right:6px;transition:background .15s ease}.menu-btn:hover{background:#f1f5fb}.portal-menu-btn{display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:18px;color:var(--primary);flex:none}.portal-theme-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--portal-nav-bg);cursor:pointer;font-size:17px;color:var(--primary);flex:none;transition:background .15s ease}.portal-theme-btn:hover{background:var(--bg-2)}.portal-nav-overlay,.side-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease}.portal-nav-overlay{background:#0b122859;z-index:35}.side-overlay{background:#0b122880;z-index:45}.portal-nav-overlay.show,.side-overlay.show{opacity:1;visibility:visible}@media (max-width: 900px){.content{padding:18px}.topbar{padding:0 16px}.topbar .title{font-size:15px}.menu-btn{display:inline-flex}.sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;z-index:50;transform:translate(-100%);transition:transform .26s cubic-bezier(.21,.6,.35,1);box-shadow:var(--sh-lg)}.sidebar.open{transform:translate(0)}}@media (max-width: 768px){.portal-top{padding:10px 14px;gap:10px}.portal-logo{font-size:14px;gap:8px}.portal-logo .bm{width:28px;height:28px;font-size:11px;border-radius:7px}.portal-menu-btn{display:inline-flex}.portal-admin-link{display:none}.portal-nav{position:fixed;top:0;left:0;right:0;z-index:40;flex-direction:column;align-items:stretch;gap:2px;background:var(--portal-nav-bg);padding:64px 16px 20px;box-shadow:var(--sh-lg);transform:translateY(-110%);transition:transform .28s cubic-bezier(.21,.6,.35,1);max-height:86vh;overflow-x:hidden;overflow-y:auto}.portal-nav.open{transform:translateY(0)}.portal-nav a{padding:13px 14px;border-radius:10px;font-size:15px}.portal-nav a:hover{background:#eef2f9}.portal-section{padding:44px 18px}.portal-section.tight{padding-top:18px;padding-bottom:18px}.sec-title{font-size:23px}.sec-eyebrow{margin-bottom:10px}.portal-footer{padding:32px 18px}.form-card{padding:22px 18px}.invest-grid{grid-template-columns:1fr}.hero{padding:72px 18px 64px}.hero-cta a{padding:11px 20px;font-size:14px}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.kpi{padding:18px 16px}.kpi .val{font-size:24px}}@media (max-width: 380px){.content{padding:14px}.portal-section{padding:38px 14px}.grid2,.grid3{gap:16px}}@media (prefers-reduced-motion: reduce){.kpi,.pcard,.stat-box,.page-enter-active,.page-leave-active{animation:none!important;transition:none!important}}
