:root{--inv-bg: #f1f5f9;--inv-surface: #ffffff;--inv-text: #0f172a;--inv-muted: #64748b;--inv-border: #e2e8f0;--inv-primary: #2563eb;--inv-primary-soft: #eff6ff;--inv-danger: #dc2626;--inv-warning: #d97706;--inv-success: #059669;--inv-radius: 10px;--inv-shadow: 0 1px 2px rgba(15, 23, 42, .04);--inv-header-h: 56px;--inv-font: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;max-width:100%;overflow-x:hidden}#root>.ant-app{height:100%}body{background:var(--inv-bg);color:var(--inv-text);font-family:var(--inv-font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%}a{color:inherit;text-decoration:none}.app-layout.ant-layout{display:flex;flex-direction:column;height:100%;min-height:100%;background:var(--inv-bg)}.app-header.ant-layout-header{flex-shrink:0;display:flex;align-items:center;gap:20px;height:var(--inv-header-h);line-height:var(--inv-header-h);padding:0 20px;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));background:var(--inv-surface);border-bottom:1px solid var(--inv-border);z-index:20}.app-header__brand{display:flex;align-items:center;gap:10px;flex-shrink:0;margin:0!important;line-height:1.2!important;font-size:15px!important;font-weight:650!important;color:var(--inv-text);letter-spacing:-.01em}.app-header__mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(145deg,#1d4ed8,#0ea5e9);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700;letter-spacing:.02em}.app-header__menu.ant-menu{flex:1;min-width:0;border:none!important;background:transparent;line-height:calc(var(--inv-header-h) - 2px)}.app-header__menu.ant-menu .ant-menu-item{padding-inline:14px!important;margin:0 2px!important;border-radius:8px!important;color:var(--inv-muted)!important}.app-header__menu.ant-menu .ant-menu-item-selected{color:var(--inv-primary)!important;background:var(--inv-primary-soft)!important;font-weight:600}.app-header__menu.ant-menu .ant-menu-item:after{display:none!important}.app-header__spacer{flex:1;min-width:0}.app-header__actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.app-header__user{display:flex;align-items:center;gap:10px;margin-left:4px;padding-left:12px;border-left:1px solid var(--inv-border);min-width:0}.app-header__name{max-width:120px;color:var(--inv-muted)!important;font-size:13px}.app-layout__content{flex:1;min-height:0;width:100%;max-width:1280px;margin:0 auto;padding:20px;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));display:flex;flex-direction:column;overflow:hidden}.app-layout__content--wide{max-width:none;width:100%}.app-layout__content--detail{max-width:none;width:100%;padding-bottom:12px}.app-layout__content--with-tabbar{padding-bottom:8px}.app-tabbar{position:sticky;bottom:0;z-index:100;flex-shrink:0;display:grid;grid-template-columns:repeat(5,1fr);background:var(--inv-surface);border-top:1px solid var(--inv-border);padding-bottom:env(safe-area-inset-bottom,0)}.app-tabbar__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:6px 2px;color:var(--inv-muted);font-size:11px;line-height:1.2}.app-tabbar__icon{font-size:18px;line-height:1}.app-tabbar__item--active{color:var(--inv-primary);font-weight:600}.page{display:flex;flex-direction:column;gap:16px;flex:1 1 auto;min-height:0;max-height:100%;height:100%;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;flex-shrink:0}.page-head__title{margin:0!important;font-size:18px!important;font-weight:650!important;letter-spacing:-.02em;color:var(--inv-text)}.page-head__meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.page-head__sub{margin:0;color:var(--inv-muted);font-size:13px}.panel{background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius);box-shadow:var(--inv-shadow)}.panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--inv-border)}.panel__title{margin:0;font-size:14px;font-weight:600;color:var(--inv-text)}.panel__body{padding:16px}.panel__body--flush{padding:0}.rules-tip{flex-shrink:0;padding:10px 14px;font-size:13px;line-height:1.5;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--inv-radius)}.rules-panel{flex:1 1 auto;min-height:0;background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius);padding:4px 12px 12px;overflow:auto}.rules-toolbar{margin-bottom:10px}.rules-row--selected>td{background:var(--inv-primary-soft)!important}.kpi-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;flex-shrink:0}.kpi-item{background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius);padding:14px 14px 12px;box-shadow:var(--inv-shadow);min-width:0}.kpi-item__label{font-size:12px;color:var(--inv-muted);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-item__value{font-size:22px;font-weight:700;letter-spacing:-.03em;color:var(--inv-text);font-variant-numeric:tabular-nums;line-height:1.1}.kpi-item--danger .kpi-item__value{color:var(--inv-danger)}.kpi-item--warn .kpi-item__value{color:var(--inv-warning)}.status-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:550;line-height:22px;border:1px solid transparent}.status-tag--oos{color:#991b1b;background:#fef2f2;border-color:#fecaca}.status-tag--alert{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.status-tag--low{color:#a16207;background:#fefce8;border-color:#fde68a}.status-tag--ok{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.status-tag--full{color:#1e40af;background:#eff6ff;border-color:#bfdbfe}.status-tag--over{color:#6b21a8;background:#faf5ff;border-color:#e9d5ff}.status-tag--dead{color:#475569;background:#f8fafc;border-color:#e2e8f0}.status-tag--mode{color:#1e40af;background:#eff6ff;border-color:#bfdbfe}.empty-hero{flex:1;min-height:0;max-height:100%;height:100%;display:grid;place-items:center;overflow:auto}.empty-hero__card{width:min(100%,480px);text-align:center;padding:40px 28px;background:var(--inv-surface);border:1px dashed #cbd5e1;border-radius:16px}.empty-hero__icon{width:52px;height:52px;margin:0 auto 16px;border-radius:14px;display:grid;place-items:center;background:var(--inv-primary-soft);color:var(--inv-primary);font-size:24px}.empty-hero__title{margin:0 0 8px!important;font-size:18px!important;font-weight:650!important}.empty-hero__desc{margin:0 0 20px!important;color:var(--inv-muted);font-size:14px;line-height:1.55}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px;background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius)}.filter-bar__checks{display:flex;flex-wrap:wrap;gap:12px 16px;width:100%;padding-top:4px;border-top:1px dashed var(--inv-border);margin-top:4px}.detail-shell{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0;height:100%;max-height:100%;overflow:hidden}.detail-shell .page-head,.detail-shell .filter-bar{flex-shrink:0}.detail-table-host{flex:1 1 auto;min-height:0;height:100%;overflow:hidden;display:flex;flex-direction:column;background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius)}.detail-table-host .ant-table-wrapper{flex:1 1 auto;min-height:0;height:100%;display:flex;flex-direction:column}.detail-table-host .ant-spin-nested-loading,.detail-table-host .ant-spin-container{flex:1 1 auto;min-height:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.detail-table-host .ant-table{flex:1 1 auto;min-height:0}.detail-table-host .ant-table-container{border-inline-start:none!important;border-top:none!important}.detail-table-host .ant-pagination{flex-shrink:0;margin:10px 12px!important}.detail-shell .ant-table{font-size:12.5px}.detail-meta{color:var(--inv-muted);font-size:13px}.dash-page{overflow:hidden}.dash-layout{display:flex;gap:12px;flex:1 1 auto;min-height:0;align-items:stretch}.dash-main{flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column;gap:16px;overflow:auto}.dash-side{flex:0 0 300px;width:300px;min-height:0;display:flex;flex-direction:column}.dash-side .history-side{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.history-side__body{flex:1 1 auto;min-height:0;overflow:auto}.history-side__item{align-items:flex-start!important;padding:10px 12px!important;border-block-end:1px solid var(--inv-border)!important;cursor:pointer;transition:background .15s ease}.history-side__item:hover{background:#f8fafc}.history-side__item--active{background:var(--inv-primary-soft)!important;box-shadow:inset 3px 0 0 var(--inv-primary)}.history-table-row--active>td{background:var(--inv-primary-soft)!important}.history-side__main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}.history-side__file{font-size:13px;font-weight:550;color:var(--inv-text)}.history-side__meta{display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:var(--inv-muted)}.history-side__danger{color:var(--inv-danger)}.history-side__actions{flex-shrink:0;display:flex;align-items:center}.dash-main>.empty-hero{flex:1 1 auto;height:auto;max-height:none;min-height:260px}.dash-body{display:flex;gap:12px;flex:1 1 auto;min-height:280px;align-items:stretch}.dash-grid{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(0,1.4fr);gap:12px;flex:1 1 auto;min-height:0;min-width:0;width:100%}.dash-grid .panel{min-height:0;display:flex;flex-direction:column;overflow:hidden}.dash-grid .panel .panel__body--flush{flex:1;min-height:0;overflow:auto}.warn-list{margin:0;padding-left:18px;color:#92400e;font-size:13px;line-height:1.55}.warn-list li+li{margin-top:8px}.form-panel{max-width:640px}.form-panel .ant-form-item{margin-bottom:14px}.settings-form{flex:1 1 auto;min-height:0}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.settings-card{background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:var(--inv-radius);padding:14px 16px 6px}.settings-card__title{margin:0 0 4px;font-size:14px;font-weight:650;color:var(--inv-text)}.settings-card__hint{margin:0 0 12px;font-size:12px;color:var(--inv-muted)}.settings-card__sum--ok{color:var(--inv-success)}.settings-card__sum--bad{color:var(--inv-danger);font-weight:600}.settings-form .ant-form-item{margin-bottom:12px}.settings-form .ant-form-item-extra{font-size:12px}@media(max-width:900px){.settings-grid{grid-template-columns:1fr}}.login-page{min-height:100%;min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 10% -10%,#dbeafe 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#e0f2fe 0%,transparent 50%),var(--inv-bg)}.login-page__card{width:min(100%,420px);background:var(--inv-surface);border:1px solid var(--inv-border);border-radius:16px;box-shadow:0 10px 30px #0f172a0f;padding:28px 24px 24px}.login-qr{position:relative;min-height:300px;display:flex;align-items:center;justify-content:center}.login-qr__overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;background:#ffffffeb}.login-qr__frame{max-width:100%}.login-page__brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login-page__brand h1{margin:0;font-size:18px;font-weight:650;letter-spacing:-.02em}.login-page__brand p{margin:2px 0 0;color:var(--inv-muted);font-size:13px}.login-page__divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--inv-muted);font-size:12px}.login-page__divider:before,.login-page__divider:after{content:"";flex:1;height:1px;background:var(--inv-border)}.ant-table-thead>tr>th{background:#f8fafc!important;color:#475569!important;font-weight:600!important;font-size:12px!important}.ant-card{border-radius:var(--inv-radius)!important;border-color:var(--inv-border)!important;box-shadow:var(--inv-shadow)}@media(max-width:1100px){.kpi-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.dash-grid{grid-template-columns:1fr}.dash-layout{flex-direction:column}.dash-side{flex:0 0 auto;width:100%;max-height:320px}}@media(max-width:720px){.app-header{gap:10px;padding:0 12px}.app-layout__content{padding:12px}.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-item__value{font-size:20px}.detail-shell{overflow:hidden}.app-header__name{display:none}}
