:root{--brand: #12a594;--brand-600: #0e8c7f;--brand-700: #0b6f66;--brand-soft: #e6f7f4;--accent: #ff8a3d;--accent-soft: #fff2e8;--primary: #12a594;--success: #12b76a;--warning: #f79009;--danger: #f04438;--info: #4f7cff;--purple: #7a5af8;--cyan: #06aed4;--pink: #ee6a9a;--ink: #1f2a37;--ink-soft: #667085;--bg: #f4f6fa;--panel: #ffffff;--panel-2: #f8fafc;--line: #e7ecf3;--line-strong: #d7dee8;--sidebar-bg: #ffffff;--shadow: rgba(16, 24, 40, .08);--radius: 12px;--radius-sm: 9px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 4px 14px -6px rgba(16, 24, 40, .12), 0 1px 3px rgba(16, 24, 40, .04);--shadow-lg: 0 18px 48px -20px rgba(16, 24, 40, .28), 0 2px 8px rgba(16, 24, 40, .06);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;--font-num: "Inter", "DIN Alternate", "Segoe UI", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}html,body{overflow:hidden}body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--brand-soft);color:var(--brand-700)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d3dae5;border-radius:99px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#b9c3d3;background-clip:content-box;border:2px solid transparent}.px-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px;position:relative;transition:box-shadow .2s ease,transform .2s ease}.px-card:hover{box-shadow:var(--shadow-md)}.px-card--flat{box-shadow:none}.px-card-title{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;letter-spacing:.2px;color:var(--ink);margin-bottom:16px}.px-card-title>svg{color:var(--brand);flex-shrink:0}.px-btn{font-family:var(--font);display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;font-size:13px;font-weight:500;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;box-shadow:var(--shadow-sm);transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .08s ease}.px-btn:hover{background:#f8fafc;border-color:#c3ccda}.px-btn:active{transform:translateY(1px);box-shadow:none}.px-btn:focus-visible{outline:3px solid rgba(18,165,148,.2);outline-offset:1px}.px-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.px-btn--primary{background:linear-gradient(135deg,#17b8a5,var(--brand-600));border-color:transparent;color:#fff;box-shadow:0 4px 12px -4px #12a59480}.px-btn--primary:hover{background:linear-gradient(135deg,#14a897,var(--brand-700));border-color:transparent}.px-btn--success{background:var(--success);border-color:transparent;color:#fff}.px-btn--success:hover{background:#0f9f5d}.px-btn--warning{background:var(--warning);border-color:transparent;color:#fff}.px-btn--warning:hover{background:#e08106}.px-btn--danger{background:var(--danger);border-color:transparent;color:#fff}.px-btn--danger:hover{background:#d92d20}.px-btn--purple{background:var(--purple);border-color:transparent;color:#fff}.px-btn--ghost{background:transparent;border-color:transparent;box-shadow:none}.px-btn--ghost:hover{background:var(--panel-2);border-color:transparent}.px-btn--sm{height:28px;padding:0 10px;font-size:12px;border-radius:7px}.px-btn--lg{height:44px;padding:0 22px;font-size:15px;border-radius:11px}.px-input,.px-select{font-family:var(--font);font-size:13px;height:34px;padding:0 11px;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:var(--radius-sm);outline:none;transition:border-color .16s ease,box-shadow .16s ease}.px-select{padding-right:26px;cursor:pointer}.px-input:hover,.px-select:hover{border-color:#c3ccda}.px-input:focus,.px-select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #12a59424}.px-input::placeholder{color:#98a2b3}input[type=date].px-input,input[type=datetime-local].px-input{padding-right:6px}input[type=checkbox],input[type=radio]{accent-color:var(--brand);width:15px;height:15px;cursor:pointer}.px-tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;font-size:12px;font-weight:500;line-height:1;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-soft);white-space:nowrap}.px-tag--primary{background:var(--brand-soft);border-color:#b9e8e1;color:var(--brand-700)}.px-tag--success{background:#ecfdf3;border-color:#b5efcd;color:#067647}.px-tag--warning{background:#fffaeb;border-color:#fdead0;color:#b54708}.px-tag--danger{background:#fef3f2;border-color:#fbd5d1;color:#b42318}.px-tag--purple{background:#f4f2ff;border-color:#ded7ff;color:#5925dc}.px-tag--cyan{background:#ecfdff;border-color:#b6f0f9;color:#0e7090}.px-tag--plain{background:#fff;border-color:var(--line-strong);color:var(--ink-soft)}.px-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px #12b76a26;animation:pulse-dot 2s ease-in-out infinite;vertical-align:middle}.px-dot--off{background:#cdd5e0;box-shadow:none;animation:none}.px-dot--warn{background:var(--warning);box-shadow:0 0 0 3px #f7900926}.px-dot--err{background:var(--danger);box-shadow:0 0 0 3px #f0443826}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.45}}.px-table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.px-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.px-table th{position:sticky;top:0;z-index:2;background:#f8fafc;color:var(--ink-soft);font-weight:600;font-size:12px;text-align:left;padding:11px 12px;white-space:nowrap;border-bottom:1px solid var(--line)}.px-table td{padding:11px 12px;border-bottom:1px solid #f1f4f9;white-space:nowrap;color:var(--ink)}.px-table tbody tr:last-child td{border-bottom:none}.px-table tbody tr{transition:background .12s ease}.px-table tbody tr:hover td{background:#f8fbfb}.px-table .is-abnormal td{background:#fffcf2}.px-table .is-abnormal:hover td{background:#fff8e6}.px-table .num{font-variant-numeric:tabular-nums}.px-table td .px-btn+.px-btn{margin-left:6px}.px-pager{display:flex;align-items:center;gap:8px;padding:14px 2px 2px}.px-pager .px-btn.is-current{background:var(--brand-soft);border-color:#b9e8e1;color:var(--brand-700);font-variant-numeric:tabular-nums}.px-dialog-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f172a6b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fade-in .16s ease}.px-dialog{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(720px,92vw);max-height:88vh;display:flex;flex-direction:column;animation:dialog-in .22s cubic-bezier(.2,.9,.3,1.1);overflow:hidden}.px-dialog__head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);font-size:15px;font-weight:600}.px-dialog__head>span svg{color:var(--brand)}.px-dialog__head .px-btn{border:none;background:transparent;box-shadow:none;color:var(--ink-soft)}.px-dialog__head .px-btn:hover{background:#f2f5f9;color:var(--ink)}.px-dialog__body{padding:20px;overflow-y:auto;overflow-x:hidden;flex:1 1 auto;min-height:0;overscroll-behavior:contain}.px-dialog__foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;background:#fcfdff}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}@keyframes fade-in{0%{opacity:0}}.px-form{display:grid;gap:16px}.px-form-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.px-form-item{display:flex;align-items:center;gap:8px}.px-form-item>label{font-size:13px;color:var(--ink-soft);white-space:nowrap}@keyframes px-slide-up{0%{opacity:0;transform:translateY(10px)}}@keyframes px-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes px-flash{0%{background:#fff7e6}to{background:transparent}}@keyframes px-caret{50%{opacity:0}}@keyframes float-card{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes bar-grow{0%{transform:scaleY(0)}}.anim-bob{animation:float-card 5s ease-in-out infinite}.anim-shake{animation:px-shake .42s ease}.anim-slide-up{animation:px-slide-up .3s ease}.page-enter-active{animation:px-slide-up .26s ease}.page-leave-active{display:none}.flex{display:flex}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.text-soft{color:var(--ink-soft)}.text-bold{font-weight:600}.text-primary{color:var(--brand)}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.text-warning{color:#b54708}.text-center{text-align:center}
