:root{--canvas: #f7f8fa;--panel: #ffffff;--panel-soft: #f7f8fa;--panel-hover: #f0f7ff;--brand: #1987e0;--brand-ink: #1266ae;--brand-soft: #eaf4fd;--brand-line: #cfe6f7;--brand-dim: #bbd9f2;--ok: #12805c;--ok-soft: #e9f5f0;--warn: #b4770f;--warn-soft: #fdf3e2;--accent: #c4342b;--accent-soft: #fcedea;--ink: #2b2f33;--ink-2: #656969;--ink-3: #6e7278;--ink-4: #93989e;--line: #e8eaed;--line-2: #d5d7db;--r-xs: 2px;--r-sm: 4px;--r-md: 6px;--r-lg: 8px;--r-xl: 10px;--sh-panel: 0 2px 6px rgba(31, 56, 88, .06);--sh-pop: 0 16px 40px -16px rgba(23, 42, 64, .24), 0 2px 8px rgba(23, 42, 64, .06);--ease: cubic-bezier(.2, .7, .3, 1);--rail-w: 224px;--font: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, "Segoe UI", sans-serif;--mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace}*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,p,figure,dl,dd{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:2px}::selection{background:var(--brand);color:#fff}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:.01em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 16px;border:1px solid transparent;border-radius:var(--r-sm);background:var(--brand);color:#fff;font-size:14px;font-weight:500;white-space:nowrap;transition:background .14s var(--ease),border-color .14s var(--ease),color .14s var(--ease)}.btn:hover:not(:disabled){background:#1573c4}.btn:active:not(:disabled){background:var(--brand-ink)}.btn:disabled{background:#f2f5f8;border-color:var(--line);color:#a6adb4;cursor:not-allowed}.btn--ghost{background:var(--panel);border-color:var(--line-2);color:var(--ink)}.btn--ghost:hover:not(:disabled){background:#f7fbff;border-color:var(--brand);color:var(--brand-ink)}.btn--ghost:disabled{background:var(--panel-soft);border-color:var(--line);color:#b8bcc2}.btn--text{height:28px;padding:0 6px;background:none;color:var(--brand-ink);font-weight:400}.btn--text:hover:not(:disabled){background:none;color:var(--brand);text-decoration:underline;text-underline-offset:3px}.btn--danger{background:var(--panel);border-color:var(--line-2);color:var(--accent)}.btn--danger:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn--sm{height:28px;padding:0 10px;font-size:13px}.btn--icon{width:34px;padding:0;flex:none}.btn svg{width:14px;height:14px;flex:none}.field{display:block;min-width:0}.field__label{display:block;margin-bottom:6px;font-size:12px;font-weight:500;color:var(--ink-2)}.field__input{display:block;width:100%;height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--panel);font-size:14px;color:var(--ink);transition:border-color .14s var(--ease),box-shadow .14s var(--ease)}.field__input::placeholder{color:#b8bcc2}.field__input:hover:not(:disabled):not(:focus){border-color:#b8bcc2}.field__input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #1987e01a}.field__input:disabled{background:var(--panel-soft);color:var(--ink-3)}textarea.field__input{height:auto;padding:9px 12px;line-height:1.7;resize:vertical}.field__hint{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:6px;font-size:12px;line-height:1.55;color:var(--ink-3)}.field--bad .field__input{border-color:var(--accent)}.field--bad .field__input:focus{box-shadow:0 0 0 3px #c4342b1a}.field--bad .field__hint{color:var(--accent)}.panel{background:var(--panel);border-radius:var(--r-sm)}.panel__head{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:14px 24px;border-bottom:1px solid var(--line)}.panel__title{display:flex;align-items:baseline;gap:8px;font-size:16px;font-weight:600;line-height:22px;letter-spacing:0}.panel__sub{font-size:12px;font-weight:400;color:var(--ink-3)}.panel__body{padding:24px}.panel__foot{padding:12px 24px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-3)}.panel--table{padding:0 24px 24px}.panel--table>.panel__head{margin:0 -24px;padding:18px 24px 16px}.panel--table>.panel__foot{margin:16px -24px 0;padding:12px 24px 0}.filter-panel{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding:16px 24px;border:2px solid #fff;border-radius:var(--r-lg);background:linear-gradient(180deg,#e1f2fe,#f4faff);box-shadow:var(--sh-panel)}.filter-panel__spacer{flex:1;min-width:8px}.searchbar{display:flex;height:40px;width:340px;max-width:100%}.searchbar__input{flex:1;min-width:0;padding:0 20px;border:1px solid var(--brand);border-right:0;border-radius:var(--r-sm) 0 0 var(--r-sm);background:#fff;font-size:14px;color:var(--ink);outline:none}.searchbar__input::placeholder{color:#b8bcc2}.searchbar__input:focus{box-shadow:inset 0 0 0 1px #1987e066}.searchbar__input::-webkit-search-cancel-button{display:none}.searchbar__btn{width:76px;flex:none;border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--brand);color:#fff;font-size:14px;font-weight:500;transition:background .14s var(--ease)}.searchbar__btn:hover{background:#1573c4}.searchbar__btn:active{background:var(--brand-ink)}.search{display:flex;align-items:center;gap:8px;width:280px;height:34px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--panel);transition:border-color .14s var(--ease),box-shadow .14s var(--ease)}.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px #1987e01a}.search__icon{width:14px;height:14px;flex:none;color:var(--ink-4)}.search__input{width:100%;border:none;background:none;font-size:14px;outline:none}.search__input::placeholder{color:#b8bcc2}.search__input::-webkit-search-cancel-button{display:none}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-sm)}.seg__btn{height:28px;padding:0 14px;border-radius:3px;font-size:13px;color:var(--ink-2);white-space:nowrap;transition:background .14s var(--ease),color .14s var(--ease)}.seg__btn:hover{color:var(--ink);background:var(--panel-soft)}.seg__btn--on,.seg__btn--on:hover{background:var(--brand);color:#fff;font-weight:500}.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);white-space:nowrap}.status:before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:currentColor}.status--wait{color:var(--ink-3)}.status--busy{color:var(--warn)}.status--done{color:var(--ok)}.status--fail{color:var(--accent)}.status--off{color:var(--ink-4)}.status--off:before{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}.chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:var(--r-xs);background:var(--panel-soft);border:1px solid var(--line);font-size:12px;color:var(--ink-2);white-space:nowrap}.chip--ok{background:var(--ok-soft);border-color:transparent;color:var(--ok)}.chip--warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.chip--accent{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.chip--brand{background:var(--brand-soft);border-color:transparent;color:var(--brand-ink)}.tag{display:inline-block;padding:2px 8px;border-radius:var(--r-xs);background:#fffae8;font-size:12px;line-height:18px;font-weight:400;color:#b0740c;white-space:nowrap}.table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14px;color:var(--ink)}.table th{height:44px;padding:8px 12px;background:var(--panel-soft);border:1px solid var(--line);font-size:14px;font-weight:500;color:var(--ink);text-align:left;vertical-align:middle}.table td{height:48px;padding:8px 12px;border:1px solid var(--line);vertical-align:middle}.table tbody tr:nth-child(2n) td{background:var(--panel-soft)}.table tbody tr{transition:background .12s var(--ease)}.table tbody tr:hover td{background:var(--panel-hover)}.table .cell-num,.table .th-num{text-align:right}.table td.empty{background:var(--panel)}.table__scroll{overflow-x:auto;padding-bottom:1px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0 16px}.card-head__title{font-size:16px;font-weight:600;line-height:22px}.card-head__note{font-size:12px;color:var(--ink-3)}.alert{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:var(--r-sm);background:var(--panel);border-left:2px solid var(--line-2);font-size:13px;line-height:1.65;color:var(--ink-2)}.alert--error{background:var(--accent-soft);border-left-color:var(--accent);color:var(--accent)}.alert--warn{background:var(--warn-soft);border-left-color:var(--warn);color:var(--warn)}.alert--ok{background:var(--ok-soft);border-left-color:var(--ok);color:var(--ok)}.empty{padding:56px 24px!important;text-align:center}.empty__title{font-size:14px;font-weight:500;color:var(--ink)}.empty__hint{margin-top:4px;font-size:13px;color:var(--ink-3)}.empty__action{margin-top:16px}.sk{display:block;height:10px;border-radius:var(--r-xs);background:linear-gradient(90deg,#eef0f2 25%,#f7f8fa,#eef0f2 75%);background-size:200% 100%;animation:sweep 1.4s infinite linear}@keyframes sweep{0%{background-position:120% 0}to{background-position:-80% 0}}.page{max-width:1180px;margin-inline:auto;padding:24px 24px 56px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:16px}.page-head__title{font-size:18px;font-weight:600;line-height:26px;letter-spacing:0}.page-head__meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:4px;font-size:12px;line-height:18px;color:var(--ink-3)}.page-head__meta .dot{width:3px;height:3px;border-radius:50%;background:var(--line-2)}.page-head__actions{display:flex;align-items:center;gap:8px;flex:none;padding-top:4px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:24px;background:#172a405c;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px)}.modal{width:100%;max-width:420px;background:var(--panel);border-radius:var(--r-lg);box-shadow:var(--sh-pop);overflow:hidden}.modal__head{padding:24px 24px 0}.modal__title{font-size:16px;font-weight:600}.modal__desc{margin-top:6px;font-size:13px;line-height:1.7;color:var(--ink-3)}.modal__body{padding:16px 24px 24px}.modal__foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;background:var(--panel-soft);border-top:1px solid var(--line)}@media (max-width: 1080px){.page{padding:24px 24px 48px}}@media (max-width: 760px){.page{padding:16px 16px 40px}.page-head{flex-direction:column;gap:12px;margin-bottom:12px}.page-head__title{font-size:16px;line-height:24px}.page-head__actions{width:100%;padding-top:0}.filter-panel{padding:12px 16px;gap:8px}.filter-panel .searchbar{flex:1 1 auto;width:auto;min-width:0}.filter-panel__spacer{display:none}.searchbar__input{padding:0 12px}.searchbar__btn{width:64px}.panel{border-radius:var(--r-sm)}.panel__head{padding:12px 16px;min-height:48px}.panel--table{padding:0 16px 16px}.panel--table>.panel__head{margin:0 -16px;padding:14px 16px 12px}.panel--table>.panel__foot{margin:12px -16px 0;padding:10px 16px 0}.panel__body{padding:16px}.panel__foot{padding:10px 16px}.table th{height:40px;padding:6px 8px;font-size:13px}.table td{height:44px;padding:6px 8px;font-size:13px}.status{font-size:12px}.card-head{padding:14px 0 12px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
