:root{--bg:#f7f9fc;--apricot:#ffd29d;--cool:#a0cfff;--primary:#2868d8;--primary-strong:#1f56b6;--primary-soft:#e8f0ff;--ink:#202c40;--muted:#5b6d85;--line:#202c401a;--line-strong:#202c402e;--ok:#16844a;--ok-soft:#e4f7ed;--warn:#a8620c;--warn-soft:#fdf1e0;--danger:#c0392f;--danger-soft:#fdecea;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--radius-surface:20px;--radius-surface-sm:18px;--radius-control:11px;--radius-pill:999px;--glass-nav:linear-gradient(145deg, #ffffff9e, #ffffff57);--glass-card:linear-gradient(145deg, #ffffffc7, #ffffff6b);--glass-modal:linear-gradient(145deg, #fffffff7, #ffffffed);--glass-line:#ffffffd1;--blur-sticky:blur(10px) saturate(120%);--solid-well:#fbfdff;--shadow-glass:inset 0 1px 0 #ffffffd6, 0 18px 48px #37537624;--shadow-soft:inset 0 1px 0 #fffc, 0 10px 28px #3753761a;--shadow-modal:inset 0 1px 0 #ffffffe6, 0 30px 80px #14285052;--control-fill:#ffffffdb;--focus-ring:0 0 0 3px #2868d847;--font:"PingFang SC", "Microsoft YaHei", Inter, system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{max-width:100%}html{background:var(--bg)}body{min-height:100vh;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;background:0 0;margin:0;font-size:14px;line-height:1.55}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(70rem 45rem at -8% 6%,#ffd29d75,#0000 55%),radial-gradient(70rem 44rem at 108% 9%,#a0cfff80,#0000 58%);position:fixed;inset:0;transform:translateZ(0)}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,p{margin:0}h1{letter-spacing:.01em;font-size:20px;font-weight:650}h2{font-size:15px;font-weight:650}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-control)}::selection{background:#2868d829}.adminLayout{gap:var(--space-4);padding:var(--space-4);grid-template-columns:236px minmax(0,1fr);align-items:start;min-height:100vh;display:grid}.sidebar{top:var(--space-4);height:calc(100vh - var(--space-4) * 2);gap:var(--space-4);padding:var(--space-4);background:var(--glass-nav);border:1px solid var(--glass-line);box-shadow:var(--shadow-glass);border-radius:22px;flex-direction:column;display:flex;position:sticky;overflow:hidden auto}.brand{align-items:center;gap:var(--space-3);padding:var(--space-2);display:flex}.brandMark{background:linear-gradient(145deg, #3d7ce8, var(--primary-strong));color:#fff;border-radius:13px;flex:none;place-items:center;width:40px;height:40px;font-size:18px;font-weight:800;display:grid;box-shadow:0 8px 18px #2868d852}.brandText{min-width:0;font-size:15px;font-weight:650}.brandText small{color:var(--muted);margin-top:2px;font-size:11px;font-weight:500;display:block}.sidebarNav{gap:4px;display:grid}.sidebarNav a{align-items:center;gap:var(--space-3);padding:10px var(--space-3);border-radius:var(--radius-control);color:var(--ink);border:1px solid #0000;font-size:13.5px;text-decoration:none;transition:background-color .16s,border-color .16s;display:flex}.sidebarNav a b{border:1px solid var(--line);width:26px;height:26px;color:var(--primary);background:#ffffffb8;border-radius:9px;flex:none;place-items:center;font-size:12px;font-weight:650;display:grid}.sidebarNav a:hover{border-color:var(--glass-line);background:#fff9}.sidebarNav a.active{border-color:var(--glass-line);box-shadow:var(--shadow-soft);background:linear-gradient(145deg,#fffffff2,#ffffffc7);font-weight:650}.sidebarNav a.active b{background:var(--primary);color:#fff;border-color:#0000}.logout{min-height:40px;padding:10px var(--space-3);border-radius:var(--radius-control);border:1px solid var(--line-strong);background:var(--control-fill);color:var(--muted);cursor:pointer;margin-top:auto;font-size:13px}.logout:hover{color:var(--danger);border-color:#c0392f5c}.workspace{gap:var(--space-4);align-content:start;min-width:0;display:grid}.topbar{top:var(--space-4);z-index:5;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-surface-sm);border:1px solid var(--glass-line);box-shadow:var(--shadow-glass);-webkit-backdrop-filter:var(--blur-sticky);backdrop-filter:var(--blur-sticky);background:linear-gradient(145deg,#ffffffdb,#ffffffb3);display:flex;position:sticky}.topbar div{min-width:0}.topbar p{color:var(--muted);margin-top:2px;font-size:12.5px}.envBadge{padding:6px var(--space-3);border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--primary-strong);border:1px solid #2868d824;flex:none;font-size:12px}.content{gap:var(--space-4);min-width:0;display:grid}.card,.panel,.tableCard,.detailCard,.metricCard,.userCard{border-radius:var(--radius-surface-sm);background:var(--glass-card);border:1px solid var(--glass-line);box-shadow:var(--shadow-soft)}.panel,.detailCard{padding:var(--space-4);gap:var(--space-3);display:grid}.sectionTitle{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.sectionTitle p,.panel>p,.detailCard>p{color:var(--muted);margin-top:3px;font-size:12.5px}.hint{color:var(--muted);font-size:12.5px}.well{padding:var(--space-3);border-radius:var(--radius-control);border:1px solid var(--line);background:var(--solid-well);color:#43506a;white-space:pre-wrap;word-break:break-word;max-height:420px;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;overflow:auto}.metricGrid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.metricCard{padding:var(--space-4);align-content:start;gap:6px;display:grid}.metricCard span{color:var(--muted);font-size:12.5px}.metricCard strong{letter-spacing:-.01em;font-size:26px;font-weight:650}.metricCard i{color:var(--muted);font-size:11.5px;font-style:normal}.toolbar{align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-surface-sm);background:var(--glass-nav);border:1px solid var(--glass-line);box-shadow:var(--shadow-soft);flex-wrap:wrap;display:flex}.toolbar.plain{box-shadow:none;background:0 0;border:0;padding:0}input,select,textarea{min-height:38px;padding:8px var(--space-3);border-radius:var(--radius-control);border:1px solid var(--line-strong);background:var(--control-fill);transition:border-color .16s,box-shadow .16s}input::placeholder,textarea::placeholder{color:#93a1b5}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:var(--focus-ring);outline:none}input:disabled{color:#9aa7ba;background:#f0f4fae6}.searchField{flex:240px;min-width:0}.searchInput{width:100%}.costInput{text-align:right;font-variant-numeric:tabular-nums;width:6.5rem}.segmented{border-radius:var(--radius-control);border:1px solid var(--line);background:#f0f4fadb;gap:2px;padding:3px;display:flex}.segmented button{min-height:32px;padding:6px var(--space-3);color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;font-size:12.5px}.segmented button[aria-pressed=true]{color:var(--primary-strong);background:#fff;font-weight:650;box-shadow:0 3px 10px #1b39661f}.chipRow{flex-wrap:wrap;gap:6px;display:flex}.chip{min-height:32px;padding:6px var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line-strong);background:var(--control-fill);color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:12.5px;transition:border-color .16s,background-color .16s,color .16s;display:inline-flex}.chip:hover{border-color:#2868d866}.chip[aria-pressed=true]{background:var(--primary-soft);color:var(--primary-strong);border-color:#2868d86b;font-weight:650}.chip .count{color:var(--muted);font-variant-numeric:tabular-nums}.chip[aria-pressed=true] .count{color:var(--primary-strong)}.primary,.ghost,.iconButton{border-radius:var(--radius-control);cursor:pointer;min-height:38px;transition:background-color .16s,border-color .16s,color .16s}.primary{padding:9px var(--space-4);background:linear-gradient(145deg, #3a78e0, var(--primary));color:#fff;border:1px solid #0000;font-weight:650}.primary:hover:not(:disabled){background:linear-gradient(145deg, #3370d8, var(--primary-strong))}.primary:disabled{cursor:not-allowed;background:#2868d857}.ghost{padding:9px var(--space-3);border:1px solid var(--line-strong);background:var(--control-fill);color:var(--ink)}.ghost:hover:not(:disabled){color:var(--primary-strong);border-color:#2868d86b}.iconButton{border:1px solid var(--line-strong);background:var(--control-fill);width:38px;color:var(--muted);flex:none;place-items:center;padding:0;font-size:15px;line-height:1;display:grid}.iconButton:hover{color:var(--primary-strong);border-color:#2868d86b}.iconButton.on{color:var(--warn);background:var(--warn-soft);border-color:#a8620c66}.wide{width:100%}.linkButton{color:var(--primary);cursor:pointer;background:0 0;border:0;padding:6px;text-decoration:underline}.switch{min-height:32px;padding:6px var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line-strong);color:var(--muted);cursor:pointer;background:#f0f4fae6;font-size:12.5px}.switch.on{background:var(--ok-soft);color:var(--ok);border-color:#16844a52;font-weight:650}.tableCard{overflow:auto}table{border-collapse:collapse;width:100%}th,td{padding:11px var(--space-4);text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;font-size:13px}th{z-index:1;color:var(--muted);white-space:nowrap;background:#f8fbfff5;font-size:12px;font-weight:600;position:sticky;top:0}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:#ffffff9e}td small{color:var(--muted);margin-top:3px;font-size:11.5px;display:block}td.num{font-variant-numeric:tabular-nums}.badge{padding:4px var(--space-2);border-radius:var(--radius-pill);background:var(--ok-soft);color:var(--ok);white-space:nowrap;font-size:12px;display:inline-block}.badge.off,.badge.disabled{background:var(--danger-soft);color:var(--danger)}.badge.neutral{color:var(--muted);background:#f0f4faf0}.badge.warn{background:var(--warn-soft);color:var(--warn)}.userGrid{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.userCard{padding:var(--space-4);gap:var(--space-3);align-content:start;min-width:0;display:grid}.userCardHead{justify-content:space-between;align-items:flex-start;gap:var(--space-2);min-width:0;display:flex}.userCardHead>div{min-width:0}.userCardHead b{overflow-wrap:anywhere;font-size:14px;font-weight:650;display:block}.userCardHead small{color:var(--muted);overflow-wrap:anywhere;font-size:11.5px}.userMeta{gap:4px;margin:0;font-size:12.5px;display:grid}.userMeta>div{justify-content:space-between;gap:var(--space-2);min-width:0;display:flex}.userMeta dt{color:var(--muted);flex:none}.userMeta dd{text-align:right;overflow-wrap:anywhere;margin:0}.state{padding:var(--space-4);text-align:center;color:var(--muted);font-size:12.5px}.note{padding:var(--space-3);border-radius:var(--radius-control);border:1px solid var(--line);background:var(--solid-well);color:var(--muted);font-size:12.5px}.note b{color:var(--ink)}.notice{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-surface-sm);background:linear-gradient(145deg,#ffffffeb,#e8f0ffdb);border:1px solid #2868d838;flex-wrap:wrap;font-size:13px;display:flex}.notice.error{color:var(--danger);background:linear-gradient(145deg,#fffffff0,#fdeceae6);border-color:#c0392f4d}.emptyState{gap:var(--space-2);padding:var(--space-6) var(--space-4);border-radius:var(--radius-surface-sm);border:1px dashed var(--line-strong);text-align:center;background:#ffffff8f;justify-items:center;display:grid}.emptyState strong{font-size:14px;font-weight:650}.emptyState p{max-width:46ch;color:var(--muted);font-size:12.5px}.whoami{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.whoami b{overflow-wrap:anywhere;font-size:14px}.dialogOverlay{width:min(560px, calc(100vw - var(--space-4) * 2));max-width:none;max-height:calc(100dvh - var(--space-4) * 2);border:1px solid var(--glass-line);border-radius:var(--radius-surface);background:var(--glass-modal);box-shadow:var(--shadow-modal);color:var(--ink);margin:auto;padding:0;overflow:auto}.dialogOverlay[open]{place-items:center;display:grid}.dialogOverlay::backdrop{-webkit-backdrop-filter:blur(6px)saturate(120%);backdrop-filter:blur(6px)saturate(120%);background:#121e3266}.dialog{gap:var(--space-4);width:100%;padding:var(--space-6);display:grid}.dialog p{color:var(--muted);font-size:13px}.dialog footer{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.dialog footer button{min-height:40px;padding:9px var(--space-4);border-radius:var(--radius-control);cursor:pointer}.dialog footer button:not(.primary){border:1px solid var(--line-strong);background:var(--control-fill)}.dialog footer button:not(.primary):hover{color:var(--primary-strong);border-color:#2868d86b}.field{gap:6px;font-size:13px;font-weight:650;display:grid}.field input,.field select,.field textarea{width:100%;min-height:42px;font-weight:400}.field textarea{resize:vertical;min-height:104px}.field small{color:var(--muted);font-size:11.5px;font-weight:400}.field input[aria-invalid=true]{border-color:var(--danger)}.fieldError{color:var(--danger);align-items:baseline;gap:6px;font-size:12.5px;display:flex}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.row.between{justify-content:space-between}.stack{gap:var(--space-2);display:grid}.grow{flex:auto;min-width:0}.nowrap{white-space:nowrap}.tabular{font-variant-numeric:tabular-nums}.visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:1180px){.userGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1024px){.adminLayout{grid-template-columns:72px minmax(0,1fr)}.sidebar{padding:var(--space-3) var(--space-2);align-items:center}.brand{padding:var(--space-2) 0}.brandText,.sidebarNav a span{display:none}.sidebarNav a{justify-content:center;padding:8px}.logout{width:100%;padding:var(--space-2) 0;font-size:0}.logout:before{content:"退";font-size:13px}}@media (max-width:768px){.userGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{align-items:stretch}.searchField{flex-basis:100%}}@media (max-width:640px){.adminLayout{gap:var(--space-3);padding:var(--space-2);grid-template-columns:minmax(0,1fr)}.sidebar{align-items:center;gap:var(--space-3);height:auto;padding:var(--space-3);grid-template-columns:minmax(0,1fr) auto;display:grid;position:static;overflow:visible}.brand{grid-area:1/1;padding:0}.brandText,.sidebarNav a span{display:block}.sidebarNav{-webkit-overflow-scrolling:touch;scrollbar-width:thin;grid-area:2/1/auto/-1;grid-auto-columns:max-content;grid-auto-flow:column;gap:6px;padding-bottom:2px;overflow-x:auto}.sidebarNav a{padding:8px var(--space-3);justify-content:flex-start}.sidebarNav a b{width:22px;height:22px;font-size:11px}.sidebarNav a span{white-space:nowrap}.logout{width:auto;padding:8px var(--space-3);grid-area:1/2;justify-self:end;margin:0;font-size:13px}.logout:before{content:none}.topbar{padding:var(--space-3);flex-wrap:wrap;position:static}.envBadge{order:3}.content{gap:var(--space-3)}.userGrid,.metricGrid{grid-template-columns:minmax(0,1fr)}.toolbar>*,.toolbar .segmented,.toolbar .chipRow{flex:100%}.segmented button{flex:1 1 0}.chip,.segmented button,.switch,.ghost,.primary,.iconButton{min-height:38px}.dialog{padding:var(--space-4)}.dialog footer{justify-content:stretch}.dialog footer button{flex:auto}}@media (max-width:420px){.topbar{gap:var(--space-2)}.envBadge{font-size:11px}.userCard,.metricCard{padding:var(--space-3)}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.sidebar,.topbar,.toolbar,.loginCard,.card,.panel,.tableCard,.detailCard,.metricCard,.userCard,.dialogOverlay{background:#fff}}@media (prefers-reduced-transparency:reduce){.sidebar,.topbar,.toolbar,.loginCard,.card,.panel,.tableCard,.detailCard,.metricCard,.userCard,.dialogOverlay{background:#fff}.topbar,.dialogOverlay,.dialogOverlay::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}.dialogOverlay::backdrop{background:#121e3299}}@media (prefers-contrast:more){:root{--muted:#3d4c63;--line:#202c4052;--line-strong:#202c408c}.sidebar,.topbar,.toolbar,.loginCard,.card,.panel,.tableCard,.detailCard,.metricCard,.userCard,.dialogOverlay{border-color:var(--line-strong);background:#fff}.topbar,.dialogOverlay,.dialogOverlay::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}th,td,.field input,.field select,.field textarea,input,select,textarea,.chip,.switch,.ghost,.iconButton,.segmented{border-color:var(--line-strong)}.sidebarNav a.active{border-color:var(--primary)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
.loginPage{align-items:center;gap:var(--space-6);min-height:100vh;padding:var(--space-6);grid-template-columns:minmax(0,1fr) min(420px,100%);display:grid}.loginBrand{gap:var(--space-3);padding:var(--space-4);justify-items:start;min-width:0;display:grid}.loginBrand .brandMark{border-radius:18px;width:56px;height:56px;font-size:24px}.loginBrand h1{letter-spacing:.01em;font-size:30px;font-weight:700}.loginBrand p{max-width:42ch;color:var(--muted);font-size:13.5px}.loginCard{gap:var(--space-4);padding:var(--space-6);border-radius:var(--radius-surface);background:var(--glass-card);border:1px solid var(--glass-line);box-shadow:var(--shadow-glass);display:grid}.loginCard>header h2{font-size:18px}.loginCard>header p{color:var(--muted);margin-top:3px;font-size:12.5px}.loginTabs{border-radius:var(--radius-control);border:1px solid var(--line);background:#f0f4fadb;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:3px;display:grid}.loginTabs button{min-height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 6px;font-size:13px;transition:background-color .16s,color .16s}.loginTabs button[aria-selected=true]{color:var(--primary-strong);background:#fff;font-weight:650;box-shadow:0 3px 10px #1b39661f}.loginBody{min-height:296px}.fieldStack{gap:var(--space-4);display:grid}.fieldStack .primary{min-height:42px}.inputAction{border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--control-fill);align-items:stretch;display:flex;overflow:hidden}.inputAction:focus-within{border-color:var(--primary);box-shadow:var(--focus-ring)}.inputAction input{background:0 0;border:0;border-radius:0;flex:auto;min-width:0;min-height:40px}.inputAction input:focus{box-shadow:none;outline:none}.inputAction button{padding:0 var(--space-3);border:0;border-left:1px solid var(--line);color:var(--primary);cursor:pointer;background:#ffffffb8;flex:none;font-size:13px}.inputAction button:disabled{color:#9aa7ba;cursor:not-allowed}.wechatLogin{gap:var(--space-2);text-align:center;padding-top:var(--space-2);justify-items:center;display:grid}.qrFrame{width:200px;height:200px;margin-bottom:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-control);background:var(--solid-well);color:var(--muted);place-items:center;font-size:12.5px;display:grid;overflow:hidden}.qrFrame img{object-fit:contain;width:100%;height:100%;display:block}.wechatLogin strong{font-size:14px}.wechatLogin p{font-size:12.5px}@media (max-width:900px){.loginPage{padding:var(--space-4);grid-template-columns:minmax(0,1fr);justify-items:center}.loginBrand{text-align:center;padding:0 0 var(--space-2);justify-items:center}.loginBrand h1{font-size:24px}.loginCard{width:min(420px,100%);padding:var(--space-4)}}@media (max-width:420px){.loginPage{padding:var(--space-2)}.loginTabs button{padding:8px 2px;font-size:12px}.qrFrame{width:168px;height:168px}}
