:root{--ink:#3a3230;--ink-2:#4a403c;--ink-3:#2a2321;--paper:#fcf8e6;--container:#fffbef;--paper-2:#f3ecd7;--ruby:#9e1b2f;--ruby-deep:#730f1e;--amber:#eb9c3c;--jade:#2e7d4f;--muted:#857a63;--border:#d9cfb4;--amber-soft:color-mix(in srgb, var(--amber) 30%, var(--paper));--ruby-soft:color-mix(in srgb, var(--ruby) 13%, var(--paper));--jade-soft:color-mix(in srgb, var(--jade) 17%, var(--paper));--gray-soft:color-mix(in srgb, var(--ink) 8%, var(--paper));--font-mono:"Cascadia Code", ui-monospace, "SF Mono", Consolas, "Courier New", monospace;--font-body:"Segoe UI", "Microsoft YaHei UI", "PingFang SC", system-ui, sans-serif;--shadow-hard:4px 4px 0 var(--ink);--side-text:#cfc4ac;--side-line:#fcf8e624}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;background:repeating-conic-gradient(#3a32300d 0 25%, transparent 0 50%) 0 0 / 8px 8px;position:fixed;inset:0}img{image-rendering:pixelated}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim{color:var(--muted)}.cell-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:focus-visible{outline:3px solid var(--amber);outline-offset:2px}::selection{background:var(--amber-soft)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--ink);border:3px solid var(--paper)}.admin-app{z-index:1;grid-template-columns:240px 1fr;height:100dvh;display:grid;position:relative}.sidebar{background:var(--ink-3);color:var(--paper);background-image:repeating-conic-gradient(#ffffff08 0 25%, transparent 0 50%) 0 0 / 8px 8px;flex-direction:column;display:flex;overflow-y:auto}.brand{border-bottom:2px solid var(--side-line);align-items:center;gap:10px;padding:16px 14px 12px;display:flex}.brand-mark{background:var(--ruby);width:34px;height:34px;color:var(--paper);border:2px solid #fcf8e659;flex:none;place-items:center;display:grid;box-shadow:3px 3px #0006}.brand-name{font-family:var(--font-mono);letter-spacing:.04em;font-size:15px;font-weight:700;line-height:1.2}.brand-sub{font-family:var(--font-mono);color:var(--side-text);letter-spacing:.12em;margin-top:2px;font-size:10px}.side-nav{flex:1;padding-top:8px}.side-user{border-top:2px solid var(--side-line);align-items:center;gap:10px;padding:12px 14px;display:flex}.side-user .who{flex:1;min-width:0}.side-user .who b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.side-user .who span{font-family:var(--font-mono);color:var(--side-text);text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.main{flex-direction:column;min-width:0;height:100dvh;display:flex}.topbar{background:var(--paper);border-bottom:2px solid var(--ink);z-index:5;flex:none;align-items:center;gap:12px;height:58px;padding:0 20px;display:flex;position:relative}.topbar h1{font-family:var(--font-mono);letter-spacing:.02em;margin:0;font-size:17px}.topbar .spacer{flex:1}.topbar-user{align-items:center;gap:8px;display:inline-flex}.content{flex:1;padding:20px 22px 32px;overflow:auto}.burger{display:none}.view-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.view-head h2{font-family:var(--font-mono);letter-spacing:.01em;margin:0;font-size:21px}.view-head p{color:var(--muted);margin:2px 0 0;font-size:13px}.view-head-extra{flex:none}.vx-panel{background:var(--container);border:2px solid var(--ink);box-shadow:var(--shadow-hard);flex-direction:column;min-width:0;display:flex}.vx-panel-h{background:var(--paper-2);border-bottom:2px solid var(--ink);font-family:var(--font-mono);letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:8px;padding:9px 12px;font-size:13px;font-weight:700;display:flex}.vx-panel-h .px-ic{color:var(--ruby)}.vx-panel-h .extra{align-items:center;gap:8px;margin-left:auto;font-weight:400;display:flex}.vx-panel-b{flex:1;min-width:0;padding:14px 16px}.vx-grid{gap:16px;display:grid}.vx-split{grid-template-columns:2fr 1fr;gap:16px;display:grid}.vx-split-even{grid-template-columns:1fr 1fr;gap:16px;display:grid}.stats-row{grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:16px;display:grid}.stat{padding:14px 16px 12px}.stat .top{justify-content:space-between;align-items:center;gap:8px;display:flex}.stat .lab{font-family:var(--font-mono);letter-spacing:.1em;color:var(--muted);font-size:11.5px}.stat .ico{border:2px solid var(--ink);width:30px;height:30px;box-shadow:2px 2px 0 var(--ink);place-items:center;display:grid}.stat .val{font-family:var(--font-mono);letter-spacing:-.01em;margin-top:6px;font-size:31px;font-weight:700;line-height:1.15}.stat .foot{color:var(--muted);align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.tagx{border:2px solid var(--ink);white-space:nowrap;background:var(--gray-soft);color:var(--ink);box-shadow:1.5px 1.5px 0 var(--ink);align-items:center;gap:4px;padding:0 6px;font-size:11.5px;font-weight:700;line-height:19px;display:inline-flex}.tagx.ok{background:var(--jade-soft);color:#1e5e3a}.tagx.warn{background:var(--amber-soft);color:#7c4a08}.tagx.bad{background:var(--ruby-soft);color:var(--ruby)}.tagx.off{color:var(--muted)}.login-page{z-index:1;justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex;position:relative}.login-card{background:var(--container);border:2px solid var(--ink);width:380px;max-width:100%;box-shadow:6px 6px 0 var(--ink);padding:26px 26px 22px}.login-card .brand-mark{border-color:var(--ink);box-shadow:3px 3px 0 var(--ink)}.login-head{align-items:center;gap:12px;margin-bottom:22px;display:flex}.login-title{font-family:var(--font-mono);letter-spacing:.02em;margin:0;font-size:20px}.login-sub{color:var(--muted);margin:2px 0 0;font-size:13px}.table-scroll{overflow:auto}.ant-table-thead>tr>th{font-family:var(--font-mono)!important;letter-spacing:.08em!important;font-size:11.5px!important}.ant-btn{box-shadow:3px 3px 0 var(--ink);font-weight:600;transition:translate 60ms steps(2,end),box-shadow 60ms steps(2,end),background .15s;border:2px solid var(--ink)!important;border-radius:0!important}.ant-btn-default{background:var(--container)!important}.ant-btn-primary{background:var(--ruby)!important}.ant-btn-primary:not(:disabled):hover{background:var(--ruby-deep)!important}.ant-btn-default:not(:disabled):hover{background:var(--amber-soft)!important}.ant-btn-text,.ant-btn-link{box-shadow:none!important;border-color:#0000!important}.ant-btn-text:not(:disabled):hover{background:var(--gray-soft)!important}.ant-btn:not(:disabled):hover{box-shadow:4px 4px 0 var(--ink);translate:-1px -1px}.ant-btn:not(:disabled):active{box-shadow:0 0 0 var(--ink);translate:3px 3px}.ant-btn-sm{box-shadow:2px 2px 0 var(--ink)}.ant-btn-sm:not(:disabled):hover{box-shadow:3px 3px 0 var(--ink)}.ant-btn-sm:not(:disabled):active{box-shadow:0 0 0 var(--ink);translate:2px 2px}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-select-selector,.ant-picker,.ant-input-number-group-wrapper .ant-input-number-group-addon{border-color:var(--ink)!important;border-radius:0!important}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-picker{border-style:solid;border-width:2px!important}.ant-select .ant-select-selector{border-width:2px!important}.ant-input-affix-wrapper:not(:disabled):hover,.ant-input:hover,.ant-select:not(:disabled):hover .ant-select-selector,.ant-input-number:not(:disabled):hover,.ant-picker:hover{background:var(--amber-soft);border-color:var(--ink)!important}.ant-input-affix-wrapper-focused,.ant-input:focus,.ant-select-focused .ant-select-selector,.ant-input-number-focused,.ant-picker-focused{border-color:var(--ink)!important;box-shadow:3px 3px 0 var(--amber)!important;background:var(--container)!important}.ant-select-dropdown,.ant-picker-dropdown .ant-picker-panel-container{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:0!important}.ant-select-item-option-selected:not(.ant-select-item-option-disabled){background:var(--amber-soft)!important}.ant-card,.ant-modal-container,.ant-drawer-section,.ant-popover .ant-popover-container,.ant-message-notice,.ant-upload-wrapper .ant-upload-drag{border-radius:0!important}.ant-modal-container{border:2px solid var(--ink)!important;box-shadow:6px 6px 0 var(--ink)!important}.ant-modal-header{background:var(--paper-2)!important;border-bottom:2px solid var(--ink)!important;border-radius:0!important;margin:0!important;padding:14px 20px!important}.ant-modal-title{font-family:var(--font-mono);letter-spacing:.02em}.ant-drawer-section{border-left:2px solid var(--ink)!important;box-shadow:-5px 0 0 var(--ink)!important}.ant-drawer-header{background:var(--paper-2)!important;border-bottom:2px solid var(--ink)!important}.ant-drawer-title{font-family:var(--font-mono)}.ant-popover .ant-popover-container{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)!important}.ant-message-notice{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)!important;background:var(--container)!important}.ant-upload-wrapper .ant-upload-drag{border:2px dashed var(--ink)!important;background:var(--container)!important}.ant-upload-wrapper .ant-upload-drag:hover{border-color:var(--ruby)!important;background:var(--amber-soft)!important}.ant-tooltip-container{border:2px solid var(--ink);font-family:var(--font-mono);font-size:12px;border-radius:0!important}.ant-popconfirm-message{max-width:260px}.ant-tag{box-shadow:1.5px 1.5px 0 var(--ink);margin-inline-end:0;padding-inline:6px;font-weight:700;border:2px solid var(--ink)!important;border-radius:0!important}.ant-switch{border:2px solid var(--ink);min-width:46px;border-radius:0!important}.ant-switch .ant-switch-handle:before{border-radius:0!important}.ant-checkbox{border:2px solid var(--ink)!important;border-radius:0!important}.ant-checkbox-checked{background:var(--ruby)!important;border-color:var(--ink)!important}.ant-segmented{border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:var(--paper-2)!important;border-radius:0!important}.ant-segmented .ant-segmented-item{border-radius:0!important}.ant-segmented-thumb{background:var(--ink)!important;border-radius:0!important}.ant-segmented-item-selected{color:var(--paper)!important}.ant-avatar{border:2px solid var(--ink);background:var(--amber);color:var(--ink);font-weight:800;border-radius:0!important}.ant-pagination .ant-pagination-item,.ant-pagination .ant-pagination-prev .ant-pagination-item-link,.ant-pagination .ant-pagination-next .ant-pagination-item-link{box-shadow:2px 2px 0 var(--ink);background:var(--container);border:2px solid var(--ink)!important;border-radius:0!important}.ant-pagination .ant-pagination-item-active{background:var(--ruby)!important;border-color:var(--ink)!important}.ant-pagination .ant-pagination-item-active a{color:var(--paper)!important}.ant-pagination-mini .ant-pagination-item,.ant-pagination-options .ant-select-selector{box-shadow:none!important}.ant-empty-description{color:var(--muted)}.ant-alert{border:2px solid var(--ink)!important;border-radius:0!important}.ant-steps-item-title{font-size:13px!important}.side-nav .ant-menu{background:0 0!important;border-inline-end:0!important}.side-nav .ant-menu-item{width:auto;margin:3px 10px!important}.side-nav .ant-menu-dark .ant-menu-item-selected{font-weight:800;box-shadow:3px 3px #00000080;background:var(--amber)!important;color:var(--ink-3)!important}.side-nav .ant-menu-dark .ant-menu-item:hover{color:var(--paper)!important}@media (width<=1100px){.stats-row{grid-template-columns:repeat(2,1fr)}.vx-split,.vx-split-even{grid-template-columns:1fr}}@media (width<=920px){.admin-app{grid-template-columns:1fr}.sidebar{z-index:50;width:250px;transition:transform .18s steps(3,end);position:fixed;top:0;bottom:0;left:0;transform:translate(-105%)}.sidebar.open{transform:translate(0);box-shadow:6px 0 #00000059}.burger{display:inline-flex}.nav-mask{z-index:40;background:#2a232180;position:fixed;inset:0}.content{padding:14px 14px 28px}}@media (width<=680px){.stats-row{grid-template-columns:1fr}}.crt{background:var(--ink-3);border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--paper);padding:10px 12px;font-size:12px;line-height:1.9;position:relative;overflow:hidden}.crt:after{content:"";pointer-events:none;background:repeating-linear-gradient(to bottom, color-mix(in srgb, var(--paper) 5%, transparent) 0 1px, transparent 1px 3px);position:absolute;inset:0}.crt .ln{z-index:1;white-space:nowrap;text-overflow:ellipsis;position:relative;overflow:hidden}.crt .ln.dim2{color:var(--side-text)}.crt .ln.ok{color:color-mix(in srgb, var(--jade) 55%, var(--paper))}.crt .ln.warn{color:color-mix(in srgb, var(--amber) 70%, var(--paper))}.health{margin-top:10px}.health .row{border-top:1px dashed var(--border);align-items:center;gap:8px;padding:6px 0;font-size:12.5px;display:flex}.health .row b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.dot{border:1.5px solid var(--ink);flex:none;width:8px;height:8px}.dot.g{background:var(--jade)}.dot.a{background:var(--amber)}.mini-log .row{border-top:1px dashed var(--border);align-items:center;gap:10px;padding:7px 0;font-size:12.5px;display:flex}.mini-log .row:first-child{border-top:0}.mini-log .t{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);flex:none;font-size:11px}.mini-log .o{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}
