.login-page[data-v-6b770c20]{background:var(--surface);grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);min-height:100vh;display:grid}.brand-panel[data-v-6b770c20]{color:#fff;background:var(--primary);flex-direction:column;justify-content:space-between;padding:clamp(32px,6vw,80px);display:flex}.brand-lockup[data-v-6b770c20]{align-items:center;gap:16px;display:flex}.brand-logo[data-v-6b770c20]{border-radius:8px;width:68px;height:68px}h1[data-v-6b770c20],h2[data-v-6b770c20],p[data-v-6b770c20]{margin:0}h1[data-v-6b770c20]{font-size:32px;line-height:1.15}.brand-lockup p[data-v-6b770c20]{color:#ffffffc7;margin-top:6px;font-size:15px}.brand-message[data-v-6b770c20]{color:#ffffffe0;border-top:1px solid #ffffff38;gap:12px;max-width:430px;padding-top:28px;line-height:1.7;display:flex}.brand-message svg[data-v-6b770c20]{color:#80cbc4;flex:none}.login-panel[data-v-6b770c20]{place-items:center;padding:32px;display:grid}.login-form[data-v-6b770c20]{width:min(100%,400px)}.form-heading[data-v-6b770c20]{align-items:center;gap:14px;margin-bottom:36px;display:flex}.form-icon[data-v-6b770c20]{width:44px;height:44px;color:var(--primary);background:var(--primary-container);border-radius:8px;place-items:center;display:grid}h2[data-v-6b770c20]{color:var(--ink);font-size:24px;line-height:1.3}.form-heading p[data-v-6b770c20]{color:var(--muted);margin-top:4px;font-size:14px}label[data-v-6b770c20]{color:var(--text);margin:18px 0 8px;font-size:14px;font-weight:600;display:block}input[data-v-6b770c20]{border:1px solid var(--border);width:100%;height:44px;color:var(--ink);background:#fff;border-radius:6px;padding:0 13px}input[data-v-6b770c20]:hover:not(:disabled){border-color:var(--border-strong)}input[data-v-6b770c20]:focus{border-color:var(--primary)}input[data-v-6b770c20]:disabled{color:var(--muted);background:var(--surface-subtle)}.password-field[data-v-6b770c20]{position:relative}.password-field input[data-v-6b770c20]{padding-right:48px}.icon-button[data-v-6b770c20]{width:38px;height:38px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid;position:absolute;top:3px;right:3px}.icon-button[data-v-6b770c20]:hover{color:var(--ink);background:var(--surface-subtle)}.form-error[data-v-6b770c20]{color:var(--danger);margin-top:14px;font-size:14px;line-height:1.5}.submit-button[data-v-6b770c20]{color:#fff;background:var(--brand);cursor:pointer;border:0;border-radius:6px;width:100%;height:44px;margin-top:24px;font-weight:700}.submit-button[data-v-6b770c20]:hover:not(:disabled){background:var(--primary-hover)}.submit-button[data-v-6b770c20]:disabled{opacity:.65;cursor:wait}@media (width<=760px){.login-page[data-v-6b770c20]{grid-template-columns:1fr}.brand-panel[data-v-6b770c20]{min-height:auto;padding:24px}.brand-logo[data-v-6b770c20]{width:52px;height:52px}h1[data-v-6b770c20]{font-size:25px}.brand-message[data-v-6b770c20]{display:none}.login-panel[data-v-6b770c20]{align-items:start;padding:48px 24px}}.portal-shell[data-v-90c794f5]{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.sidebar[data-v-90c794f5]{z-index:30;height:100vh;color:var(--ink);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;display:flex;position:sticky;top:0}.sidebar-brand[data-v-90c794f5]{border-bottom:1px solid var(--border);align-items:center;gap:11px;height:64px;padding:0 16px;display:flex}.sidebar-brand img[data-v-90c794f5]{border-radius:6px;width:36px;height:36px}.sidebar-brand div[data-v-90c794f5]{gap:2px;display:grid}.sidebar-brand strong[data-v-90c794f5]{font-size:16px}.sidebar-brand span[data-v-90c794f5],.sidebar-foot[data-v-90c794f5]{color:var(--muted);font-size:12px}nav[data-v-90c794f5]{gap:4px;padding:24px 16px;display:grid}.nav-link[data-v-90c794f5]{min-height:40px;color:var(--text);border-radius:5px;align-items:center;gap:11px;padding:0 12px;font-size:14px;text-decoration:none;display:flex}.nav-link[data-v-90c794f5]:hover{color:var(--primary-container-ink);background:var(--primary-container)}.nav-link.router-link-active[data-v-90c794f5]{color:#fff;background:var(--primary)}.sidebar-foot[data-v-90c794f5]{border-top:1px solid var(--border);align-items:center;gap:9px;margin-top:auto;padding:20px 22px;display:flex}.main-column[data-v-90c794f5]{min-width:0}.topbar[data-v-90c794f5]{z-index:20;color:#fff;background:var(--primary);border-bottom:0;justify-content:space-between;align-items:center;height:64px;padding:0 16px;display:flex;position:sticky;top:0}.topbar-title[data-v-90c794f5]{align-items:center;gap:12px;display:flex}h1[data-v-90c794f5]{color:#fff;margin:0;font-size:20px}.menu-button[data-v-90c794f5],.mobile-close[data-v-90c794f5]{display:none}.user-menu-wrap[data-v-90c794f5]{position:relative}.user-button[data-v-90c794f5]{color:#fff;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:9px;height:42px;padding:0 9px 0 5px;display:flex}.user-button[data-v-90c794f5]:hover,.user-button[aria-expanded=true][data-v-90c794f5]{background:#ffffff1f;border-color:#ffffff47}.avatar[data-v-90c794f5]{color:#fff;background:var(--secondary-strong);border-radius:50%;place-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:grid}.username[data-v-90c794f5]{text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:14px;overflow:hidden}.user-dropdown[data-v-90c794f5]{border:1px solid var(--border);background:#fff;border-radius:6px;width:156px;padding:6px;position:absolute;top:calc(100% + 7px);right:0;box-shadow:0 8px 24px #0003}.user-dropdown button[data-v-90c794f5]{width:100%;min-height:38px;color:var(--danger);cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:9px;padding:0 10px;display:flex}.user-dropdown button[data-v-90c794f5]:hover{background:var(--danger-container)}.page-content[data-v-90c794f5]{width:100%;padding:24px}.nav-backdrop[data-v-90c794f5]{display:none}@media (width<=840px){.portal-shell[data-v-90c794f5]{grid-template-columns:1fr}.sidebar[data-v-90c794f5]{width:min(280px,86vw);transition:transform .18s;position:fixed;left:0;transform:translate(-100%)}.sidebar.open[data-v-90c794f5]{transform:translate(0)}.mobile-close[data-v-90c794f5],.menu-button[data-v-90c794f5]{width:38px;height:38px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.mobile-close[data-v-90c794f5]{margin-left:auto}.mobile-close[data-v-90c794f5]:hover{color:var(--primary-container-ink);background:var(--primary-container)}.menu-button[data-v-90c794f5]:hover{background:#ffffff1f}.nav-backdrop[data-v-90c794f5]{z-index:25;background:#1f293785;border:0;display:block;position:fixed;inset:0}.topbar[data-v-90c794f5]{padding:0 18px}.page-content[data-v-90c794f5]{padding:20px 16px}}@media (width<=520px){.username[data-v-90c794f5]{display:none}}:root{color:#1f2937;font-synthesis:none;text-rendering:optimizelegibility;--primary:#673ab7;--primary-strong:#512da8;--primary-hover:#5e35b1;--primary-container:#ede7f6;--primary-container-ink:#311b92;--secondary:#009688;--secondary-strong:#00796b;--brand:var(--primary);--brand-strong:var(--primary-strong);--ink:#1f2937;--text:#374151;--muted:#697386;--surface:#fff;--surface-subtle:#f4f5f7;--background:#f5f7fa;--border:#d8dde6;--border-strong:#c9ced6;--success:#0b6e20;--success-container:#ddf6e4;--success-border:#7cb98b;--warning:#7a4e00;--warning-container:#fff3cd;--warning-border:#d7a100;--danger:#a31414;--danger-container:#fde2e1;--danger-border:#e28b86;--focus:#9b8ba8;letter-spacing:0;background:#f5f7fa;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{min-width:320px;min-height:100%;margin:0}body{background:var(--background);min-height:100vh}button,input,select,textarea{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb, var(--focus) 65%, transparent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
