:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:#1d1d1f;background:#f5f5f7;font-synthesis:none;text-rendering:optimizeLegibility;--background: #f5f5f7;--surface: #ffffff;--surface-secondary: #f9f9fb;--text: #1d1d1f;--secondary: #6e6e73;--tertiary: #8e8e93;--separator: #d2d2d7;--separator-soft: #e8e8ed;--accent: #0071e3;--accent-hover: #0077ed;--accent-soft: #e8f2fd;--success: #248a3d;--success-soft: #eaf6ed;--warning: #9a6700;--warning-soft: #fff6db;--danger: #d70015;--danger-soft: #fff0f1;--focus: #0071e3;--shadow: 0 14px 38px rgba(0, 0, 0, .08)}*{box-sizing:border-box}html{min-width:320px;background:var(--background)}body{margin:0;min-width:320px;min-height:100vh;background:var(--background)}button,input{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}button{border:0}a{color:inherit;text-decoration:none}:focus-visible{outline:3px solid color-mix(in srgb,var(--focus) 65%,transparent);outline-offset:2px}.app-loading{min-height:100vh;display:grid;place-items:center;color:var(--secondary);font-size:15px}.login-layout{min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:var(--background)}.login-panel{width:min(100%,380px);background:var(--surface);border:1px solid var(--separator-soft);border-radius:8px;padding:36px;box-shadow:var(--shadow)}.app-mark{width:48px;height:48px;display:grid;place-items:center;color:#fff;background:var(--accent);border-radius:11px;margin-bottom:24px}.login-panel h1{margin:0 0 8px;font-size:26px;line-height:1.2;letter-spacing:0}.login-panel h1+.login-form{margin-top:28px}.login-form{display:grid;gap:18px}label{display:grid;gap:7px;color:var(--text);font-size:13px;font-weight:600}input{width:100%;height:42px;border:1px solid var(--separator);border-radius:6px;padding:0 12px;color:var(--text);background:var(--surface);font-size:15px}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.primary-button,.secondary-button{min-height:36px;border-radius:6px;padding:8px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,opacity .15s ease}.primary-button{color:#fff;background:var(--accent)}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.secondary-button{color:var(--text);background:var(--surface);border:1px solid var(--separator)}.secondary-button:hover:not(:disabled){background:var(--surface-secondary)}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.45}.login-button{width:100%;min-height:42px;margin-top:4px}.icon-button{width:32px;height:32px;border-radius:6px;display:grid;place-items:center;color:var(--secondary);background:transparent;cursor:pointer}.icon-button:hover{color:var(--text);background:var(--separator-soft)}.topbar{position:sticky;top:0;z-index:10;min-height:52px;padding:0 max(20px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--surface) 92%,transparent);border-bottom:1px solid var(--separator-soft);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px)}.brand,.account-area{display:flex;align-items:center;gap:9px}.brand{font-size:14px;font-weight:650}.brand svg{color:var(--accent)}.account-area{color:var(--secondary);font-size:13px}.workspace{width:min(1240px,calc(100% - 40px));margin:0 auto;padding:38px 0 64px}.workspace-title{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.workspace-title h1{margin:0 0 7px;font-size:30px;line-height:1.18;letter-spacing:0}.workspace-title p,.section-heading p{margin:0;color:var(--secondary);font-size:14px;line-height:1.5}.download-button{flex:none}.upload-section,.progress-section,.results-section,.tree-section,.history-section{background:var(--surface);border:1px solid var(--separator-soft);border-radius:8px}.upload-section{padding:24px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.section-heading h2,.progress-title-row h2{margin:0 0 4px;font-size:17px;line-height:1.3;letter-spacing:0}.drop-zone{min-height:150px;display:grid;place-items:center;border:1.5px dashed var(--separator);border-radius:7px;background:var(--surface-secondary);transition:border-color .15s ease,background-color .15s ease}.drop-zone.is-dragging{border-color:var(--accent);background:var(--accent-soft)}.drop-action{min-width:260px;min-height:70px;padding:14px;display:flex;align-items:center;justify-content:center;gap:14px;color:var(--accent);background:transparent;cursor:pointer}.drop-action span{display:grid;gap:4px;text-align:left}.drop-action strong{color:var(--text);font-size:15px}.drop-action small{color:var(--secondary);font-size:13px}.selected-file{width:min(100%,520px);min-height:70px;display:flex;align-items:center;gap:13px;padding:12px 14px;border:1px solid var(--separator-soft);border-radius:7px;background:var(--surface)}.file-icon{width:40px;height:40px;flex:none;display:grid;place-items:center;color:var(--success);background:var(--success-soft);border-radius:7px}.file-meta{min-width:0;flex:1;display:grid;gap:3px}.file-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.file-meta span{color:var(--secondary);font-size:12px}.upload-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.inline-error,.global-error,.error-detail{color:var(--danger);background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 22%,transparent);border-radius:6px;padding:9px 11px;font-size:13px;line-height:1.45}.inline-error{margin-top:12px}.global-error{margin-bottom:18px}.progress-section{padding:22px 24px;margin-top:18px}.progress-section.is-error{border-color:color-mix(in srgb,var(--danger) 35%,var(--separator-soft))}.progress-title-row{display:flex;align-items:center;gap:12px}.progress-title-row>div:nth-child(2){flex:1}.progress-title-row p{margin:0;color:var(--secondary);font-size:13px}.status-icon{width:34px;height:34px;display:grid;place-items:center;color:var(--accent);background:var(--accent-soft);border-radius:50%}.is-error .status-icon{color:var(--danger);background:var(--danger-soft)}.progress-number{font-variant-numeric:tabular-nums;font-size:14px}.progress-track{height:5px;margin-top:18px;overflow:hidden;border-radius:3px;background:var(--separator-soft)}.progress-fill{height:100%;background:var(--accent);transition:width .35s ease}.is-error .progress-fill{background:var(--danger)}.progress-detail{margin:9px 0 0;color:var(--secondary);font-size:12px}.background-note{margin:5px 0 0;color:var(--secondary);font-size:12px}.error-detail{margin-top:14px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.retry-button{margin-top:12px}.summary-band{margin:18px 0;display:grid;grid-template-columns:repeat(3,1fr);background:var(--surface);border:1px solid var(--separator-soft);border-radius:8px;overflow:hidden}.summary-item{min-height:76px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:16px 20px;border-right:1px solid var(--separator-soft)}.summary-item:last-child{border-right:0}.summary-item svg{color:var(--secondary)}.summary-item span{color:var(--secondary);font-size:13px}.summary-item strong{font-size:24px;font-variant-numeric:tabular-nums}.warning-box{margin-bottom:18px;padding:11px 13px;color:var(--warning);background:var(--warning-soft);border:1px solid color-mix(in srgb,var(--warning) 22%,transparent);border-radius:6px;font-size:13px}.results-section,.tree-section{margin-top:18px;overflow:hidden}.results-section .section-heading,.tree-section .section-heading{padding:20px 22px 0}.table-scroll{overflow:auto;border-top:1px solid var(--separator-soft)}table{width:100%;border-collapse:collapse;min-width:1000px;font-size:13px}th{position:sticky;top:0;z-index:1;padding:10px 12px;color:var(--secondary);background:var(--surface-secondary);border-bottom:1px solid var(--separator);font-weight:600;text-align:left;white-space:nowrap}td{padding:11px 12px;border-bottom:1px solid var(--separator-soft);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-secondary)}.code-cell{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}.wide-cell{max-width:310px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.number-cell{text-align:right;font-variant-numeric:tabular-nums}.classification,.machine-label,.cycle-label{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:5px;font-size:12px;font-weight:600;white-space:nowrap}.c-单机用物料,.machine-label{color:var(--success);background:var(--success-soft)}.c-系统用物料{color:var(--accent);background:var(--accent-soft)}.c-呆滞物料,.cycle-label{color:var(--warning);background:var(--warning-soft)}.tree-list{border-top:1px solid var(--separator-soft)}.tree-group{border-bottom:1px solid var(--separator-soft)}.tree-group:last-child{border-bottom:0}.tree-group>summary{min-height:50px;padding:10px 18px;display:grid;grid-template-columns:76px 130px minmax(160px,1fr) auto;align-items:center;gap:12px;cursor:pointer;list-style:none;font-size:13px}.tree-group>summary::-webkit-details-marker,.tree-node-content+ul{display:none}.tree-group>summary:hover{background:var(--surface-secondary)}.row-index{color:var(--secondary);font-variant-numeric:tabular-nums}.tree-root,.tree-root ul{list-style:none;margin:0;padding:0}.tree-root{padding:8px 18px 18px 28px;background:var(--surface-secondary);border-top:1px solid var(--separator-soft)}.tree-root ul{margin-left:16px;padding-left:18px;border-left:1px solid var(--separator)}.tree-root summary{list-style:none;cursor:pointer}.tree-root summary::-webkit-details-marker{display:none}.tree-node-content{min-height:42px;display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:5px}.tree-node-content:hover{background:var(--surface)}.tree-node-icon{width:22px;flex:none;display:grid;place-items:center;color:var(--secondary)}.tree-node-content.is-machine .tree-node-icon{color:var(--success)}.tree-node-content.is-cycle .tree-node-icon{color:var(--warning)}.tree-node-main{min-width:0;flex:1;display:flex;align-items:baseline;gap:9px}.tree-node-main strong{font:600 12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}.tree-node-main span{overflow:hidden;color:var(--secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.tree-node-meta{color:var(--secondary);font-size:12px;font-variant-numeric:tabular-nums}.bottom-actions{margin-top:22px;display:flex;justify-content:flex-end;gap:10px}.pagination{min-height:56px;padding:9px 16px;display:flex;align-items:center;justify-content:flex-end;gap:12px;border-top:1px solid var(--separator-soft);color:var(--secondary);font-size:12px}.history-section{margin-top:18px;overflow:hidden}.history-section .section-heading{padding:20px 22px 0}.history-list{border-top:1px solid var(--separator-soft)}.history-row{width:100%;min-height:50px;padding:8px 16px;display:grid;grid-template-columns:24px minmax(210px,1.5fr) minmax(110px,1fr) 50px 150px;align-items:center;gap:10px;color:var(--secondary);background:transparent;border-bottom:1px solid var(--separator-soft);text-align:left;cursor:pointer;font-size:12px}.history-row:last-child{border-bottom:0}.history-row:hover,.history-row.is-selected{background:var(--surface-secondary)}.history-row.is-selected{box-shadow:inset 3px 0 var(--accent)}.history-status{display:grid;place-items:center;color:var(--secondary)}.history-status.s-succeeded{color:var(--success)}.history-status.s-failed{color:var(--danger)}.history-status.s-running{color:var(--accent)}.history-file{min-width:0;display:flex;align-items:center;gap:8px;color:var(--text)}.history-file strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-progress{text-align:right;font-variant-numeric:tabular-nums}@media(max-width:720px){.topbar{padding:0 14px;min-height:50px}.account-area>span{display:none}.icon-button{width:44px;height:44px}.workspace{width:calc(100% - 28px);padding:26px 0 44px}.workspace-title{align-items:stretch;flex-direction:column}.workspace-title h1{font-size:26px}.download-button{align-self:flex-start}.upload-section{padding:18px}.drop-zone{min-height:136px}.drop-action{min-width:0;width:100%}.primary-button,.secondary-button{min-height:44px}.upload-actions{display:grid;grid-template-columns:1fr 1fr}.summary-band{grid-template-columns:1fr}.summary-item{min-height:62px;border-right:0;border-bottom:1px solid var(--separator-soft)}.summary-item:last-child{border-bottom:0}.tree-group>summary{min-height:62px;grid-template-columns:auto 1fr;gap:5px 10px}.tree-group>summary>span:nth-child(3){grid-column:2;color:var(--secondary)}.tree-group>summary .classification{grid-column:2;justify-self:start}.tree-root{padding-left:12px}.tree-root ul{margin-left:8px;padding-left:9px}.tree-node-main{align-items:flex-start;flex-direction:column;gap:2px}.tree-node-meta{flex:none}.machine-label,.cycle-label{display:none}.bottom-actions{display:grid;grid-template-columns:1fr}.pagination{justify-content:space-between}.history-row{min-height:66px;grid-template-columns:24px 1fr auto}.history-row>span:nth-child(3),.history-row time{display:none}}@media(prefers-color-scheme:dark){:root{color:#f5f5f7;background:#161617;--background: #161617;--surface: #242426;--surface-secondary: #2c2c2e;--text: #f5f5f7;--secondary: #aeaeb2;--tertiary: #8e8e93;--separator: #48484a;--separator-soft: #38383a;--accent: #0a84ff;--accent-hover: #409cff;--accent-soft: #112d49;--success: #30d158;--success-soft: #183622;--warning: #ffd60a;--warning-soft: #3a3211;--danger: #ff453a;--danger-soft: #441b1c;--focus: #0a84ff;--shadow: 0 16px 42px rgba(0, 0, 0, .32)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
