:root{--bg-from:#eef4f7;--bg-to:#e8f3ef;--bg-accent:#fff9dd;--ink:#1a2332;--ink-soft:#637381;--ink-muted:#919eab;--primary:#0d9488;--primary-dark:#0f766e;--primary-bg:#f0fdfa;--blue:#2563eb;--blue-dark:#1d4ed8;--orange:#ea580c;--red:#dc2626;--green:#16a34a;--purple:#7c3aed;--card:#ffffffdb;--card-solid:#fff;--line:#e2e8f0;--line-light:#f1f5f9;--radius-xl:20px;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--shadow-sm:0 1px 3px #0f172a0f,0 1px 2px #0f172a0a;--shadow-md:0 8px 24px #0f172a14,0 2px 8px #0f172a0d;--shadow-lg:0 18px 46px #0f172a1a,0 6px 18px #0f172a0f;--tr:.2s cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;height:100%}body{min-height:100%;color:var(--ink);background:radial-gradient(ellipse 900px 600px at 5% -5%,var(--bg-accent) 0%,transparent 50%),radial-gradient(ellipse 800px 500px at 95% 105%,#d1fae5 0%,transparent 50%),linear-gradient(145deg,var(--bg-from),var(--bg-to));background-attachment:fixed;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans SC,Microsoft YaHei,PingFang SC,sans-serif;font-size:14px;line-height:1.6}.header{-webkit-backdrop-filter:blur(20px)saturate(1.4);border-bottom:1px solid var(--line);z-index:100;background:#ffffffc7;align-items:center;gap:10px;padding:8px 20px;display:flex;position:sticky;top:0;box-shadow:0 2px 12px #0f172a0f}.header-icon{background:linear-gradient(135deg,var(--primary),var(--primary-dark));border-radius:var(--radius-sm);color:#fff;flex-shrink:0;place-items:center;width:30px;height:30px;display:grid;box-shadow:0 2px 8px #0d94884d}.header-title{white-space:nowrap;font-size:15px;font-weight:700}.header-desc{color:var(--ink-soft);white-space:nowrap;margin-left:auto;font-size:12px}.container{grid-template-columns:180px 1fr;align-items:start;gap:14px;max-width:1360px;margin:16px auto 32px;padding:0 16px;display:grid}.card{background:var(--card);-webkit-backdrop-filter:blur(16px)saturate(1.2);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);transition:box-shadow var(--tr)}.left{flex-direction:column;gap:12px;max-height:calc(100vh - 76px);padding:14px;display:flex;position:sticky;top:60px;overflow-y:auto}.left::-webkit-scrollbar{width:4px}.left::-webkit-scrollbar-track{background:0 0}.left::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.left::-webkit-scrollbar-thumb:hover{background:var(--ink-muted)}.panel-title{color:var(--ink-soft);text-transform:uppercase;letter-spacing:1px;align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.dropzone{border:2px dashed var(--line);border-radius:var(--radius-lg);background:var(--card-solid);text-align:center;cursor:pointer;transition:border-color var(--tr),background var(--tr),transform var(--tr);padding:24px 16px;position:relative}.dropzone:hover{border-color:var(--primary);background:var(--primary-bg)}.dropzone.drag-over{border-color:var(--primary);background:var(--primary-bg);transform:scale(1.01);box-shadow:0 0 0 4px #0d94881f}.dropzone-icon{width:48px;height:48px;color:var(--primary);transition:transform var(--tr);background:linear-gradient(135deg,#f0fdfa,#ccfbf1);border-radius:50%;place-items:center;margin:0 auto 10px;display:grid}.dropzone:hover .dropzone-icon{transform:translateY(-2px)}.dropzone-text{color:var(--ink);font-size:14px;font-weight:600}.dropzone-hint{color:var(--ink-muted);margin-top:4px;font-size:12px}.dropzone input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.file-tags{flex-wrap:wrap;gap:6px;min-height:28px;display:flex}.file-tag{color:var(--primary-dark);background:#f0fdfa;border:1px solid #99f6e4;border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 12px;font-size:12px;font-weight:500;animation:.3s fadeIn;display:inline-flex}.file-tag-remove{width:16px;height:16px;color:var(--primary-dark);cursor:pointer;transition:background var(--tr);background:#0d948826;border:none;border-radius:50%;place-items:center;padding:0;font-size:11px;line-height:1;display:grid}.file-tag-remove:hover{color:var(--red);background:#dc262626}.no-file{color:var(--ink-muted);padding:4px 0;font-size:12px}.actions{flex-direction:column;gap:8px;display:flex}.btn{border-radius:var(--radius-md);cursor:pointer;transition:transform var(--tr),box-shadow var(--tr),opacity var(--tr);color:#fff;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 16px;font-size:14px;font-weight:700;display:inline-flex;position:relative;overflow:hidden}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));box-shadow:0 4px 14px #0d94884d}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px #0d948866}.btn-secondary{background:linear-gradient(135deg,var(--blue),var(--blue-dark));box-shadow:0 4px 14px #2563eb40}.btn-secondary:hover:not(:disabled){box-shadow:0 6px 20px #2563eb59}.btn-outline{color:var(--ink-soft);border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;font-size:13px;font-weight:600}.btn-outline:hover:not(:disabled){border-color:var(--red);color:var(--red);background:#fef2f2}.btn-sm{border-radius:var(--radius-sm);padding:8px 14px;font-size:13px}.btn-icon{flex-shrink:0;font-size:16px}.btn .spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;display:none}.btn.loading .spinner{display:inline-block}.btn.loading .btn-icon{display:none}.btn.loading .btn-text{opacity:.7}.config-section{flex-direction:column;gap:8px;display:flex}.config-btn{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card-solid);cursor:pointer;transition:all var(--tr);color:var(--ink);align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.config-btn:hover{border-color:var(--primary);background:var(--primary-bg)}.config-btn .cfg-icon{border-radius:var(--radius-sm);flex-shrink:0;place-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:grid}.config-btn .cfg-icon.yellow{color:#a16207;background:#fef9c3}.config-btn .cfg-icon.blue{color:#1d4ed8;background:#dbeafe}.config-btn .cfg-label{font-weight:600}.config-btn .cfg-desc{color:var(--ink-muted);margin-top:1px;font-size:11px}.config-btn .cfg-badge{color:var(--ink-muted);white-space:nowrap;background:#f1f5f9;border-radius:999px;margin-left:auto;padding:2px 8px;font-size:10px;font-weight:700}.left .panel-title{letter-spacing:.4px;font-size:12px}.left .dropzone{padding:14px 8px}.left .dropzone-icon{width:36px;height:36px}.left .dropzone-text{font-size:12px}.left .dropzone-hint{font-size:11px}.left .file-tag{word-break:break-all;border-radius:10px;max-width:100%;padding:3px 8px;font-size:11px}.left .actions .btn{white-space:normal;text-align:center;padding:8px;font-size:12px;line-height:1.25}.left .actions .btn .btn-icon{width:13px;height:13px}.left .config-btn{grid-template-columns:24px 1fr;align-items:start;gap:6px;padding:8px;display:grid}.left .config-btn .cfg-icon{width:24px;height:24px;font-size:12px}.left .config-btn .cfg-label{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12px;line-height:1.25;overflow:hidden}.left .config-btn .cfg-desc{display:none}.left .config-btn .cfg-badge{justify-self:start;margin-left:0;padding:1px 6px;font-size:10px}.left .status-box{max-height:130px;padding:10px;font-size:11px}.left .info-list{font-size:11px;line-height:1.6}.status-box{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card-solid);min-height:70px;max-height:160px;color:var(--ink-soft);padding:12px;font-size:12px;line-height:1.7;overflow-y:auto}.status-box .log-line{align-items:flex-start;gap:6px;display:flex}.status-box .log-time{color:var(--ink-muted);flex-shrink:0;font-family:Consolas,Monaco,monospace;font-size:11px}.log-ok{color:var(--green)}.log-warn{color:var(--orange)}.log-error{color:var(--red)}.info-list{color:var(--ink-soft);font-size:12px;line-height:1.8;list-style:none}.info-list li:before{content:"";background:var(--primary);vertical-align:middle;border-radius:50%;width:5px;height:5px;margin-right:8px;display:inline-block}.right{flex-direction:column;gap:8px;min-height:80vh;padding:10px 12px;display:flex}.stats-section{flex-direction:column;gap:4px;display:flex}.stats-row{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;display:grid}.stats-summary{flex-wrap:nowrap;gap:6px;display:flex;overflow-x:auto}.stats-summary::-webkit-scrollbar{height:6px}.stats-summary::-webkit-scrollbar-thumb{background:#d5dee9;border-radius:999px}.stat{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card-solid);transition:transform var(--tr),box-shadow var(--tr);padding:12px}.stat:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-label{color:var(--ink-muted);white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;font-size:11px;font-weight:500;overflow:hidden}.stat-value{font-size:24px;font-weight:800;line-height:1.1}.stat-green .stat-value{color:var(--primary-dark)}.stat-blue .stat-value{color:var(--blue)}.stat-orange .stat-value{color:var(--orange)}.stat-red .stat-value{color:var(--red)}.stat-purple .stat-value{color:var(--purple)}.stat-wide{background:linear-gradient(135deg,#f0fdfa,#ecfdf5);border:1px solid #a7f3d0;border-radius:999px;flex:none;align-items:center;gap:8px;min-width:0;padding:4px 12px;display:inline-flex}.stat-wide .stat-label{color:var(--primary-dark);white-space:nowrap;margin:0;font-size:11px;font-weight:600}.stat-wide .stat-value{color:var(--primary-dark);font-size:13px;font-weight:800;line-height:1}.stat-chips{flex-wrap:nowrap;gap:6px;padding-bottom:2px;display:flex;position:relative;overflow:auto visible}.stat-chips::-webkit-scrollbar{height:6px}.stat-chips::-webkit-scrollbar-thumb{background:#d5dee9;border-radius:999px}.stats-more{vertical-align:middle;margin:0;display:inline-flex}.stats-more details{background:0 0;border:none;position:relative}.stats-more summary{cursor:pointer;color:var(--ink-soft);border:1px solid var(--line);white-space:nowrap;background:#f8fafc;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600;list-style:none}.stats-more summary::-webkit-details-marker{display:none}.stats-more .stats-more-panel{z-index:20;border:1px solid var(--line);min-width:560px;max-width:min(92vw,980px);box-shadow:var(--shadow-md);background:#fff;border-radius:12px;flex-wrap:wrap;gap:6px;padding:8px;display:flex;position:absolute;top:30px;right:0;overflow:visible}.tabs-more{flex:none;margin:0;position:relative}.tabs-more details{background:0 0;border:none}.tabs-more summary{cursor:pointer;color:var(--ink-soft);border:1px dashed var(--line);white-space:nowrap;transition:all var(--tr);background:#fff;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600;list-style:none}.tabs-more summary:hover{border-color:var(--primary);color:var(--primary-dark);background:#f0fdfa}.tabs-more details[open] summary{border-style:solid;border-color:var(--primary);color:var(--primary-dark);background:#f0fdfa}.tabs-more summary::-webkit-details-marker{display:none}.tabs-more-portal{z-index:1000;border:1px solid var(--line);min-width:240px;max-width:min(92vw,820px);box-shadow:var(--shadow-md);background:#fff;border-radius:12px;flex-wrap:wrap;gap:6px;max-height:none;padding:8px;display:none;position:fixed;overflow:visible}.tabs-more-portal.open{display:flex}.stat-chip{border:1px solid var(--line);background:var(--card-solid);white-space:nowrap;transition:transform var(--tr),box-shadow var(--tr);cursor:default;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:4px 10px 4px 8px;font-size:12px;display:inline-flex}.stat-chip:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.chip-dot{background:var(--ink-muted);border-radius:50%;flex-shrink:0;width:7px;height:7px}.chip-label{color:var(--ink-soft);font-size:11px;font-weight:500}.chip-val{font-size:14px;font-weight:800;line-height:1}.chip-green .chip-dot{background:var(--primary-dark)}.chip-green .chip-val{color:var(--primary-dark)}.chip-blue .chip-dot{background:var(--blue)}.chip-blue .chip-val{color:var(--blue)}.chip-orange .chip-dot{background:var(--orange)}.chip-orange .chip-val{color:var(--orange)}.chip-red .chip-dot{background:var(--red)}.chip-red .chip-val{color:var(--red)}.chip-purple .chip-dot{background:var(--purple)}.chip-purple .chip-val{color:var(--purple)}.tabs-shell{flex-direction:column;display:flex}.tabs-row{flex-wrap:nowrap;align-items:center;gap:6px;min-width:0;display:flex}.tabs-row>.tabs-wrap{flex:auto;min-width:0}.tabs-tools{flex-flow:row;flex:none;align-items:center;gap:5px;display:flex}.tab-search-input{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:#fff;outline:none;min-width:100px;max-width:130px;padding:5px 9px;font-size:12px}.tab-search-input:focus{border-color:var(--primary)}.tab-search-clear{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;transition:all var(--tr);background:#fff;padding:4px 9px;font-size:13px;line-height:1}.tab-search-clear:hover{color:var(--red);background:#fff5f5;border-color:#fecaca}.tab-rename-btn{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;transition:all var(--tr);white-space:nowrap;background:#fff;padding:5px 10px;font-size:12px}.tab-rename-btn:hover{border-color:var(--blue);color:var(--blue);background:#eff6ff}.tab-filter-stat,.tabs-quick,.tabs-quick-label{display:none}.sheet-select{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:#fff;outline:none;min-width:150px;max-width:190px;padding:6px 10px;font-size:12px}.sheet-select:focus{border-color:var(--primary)}.tabs-wrap{border:1px solid var(--line-light);background:#f8fafcb3;border-radius:10px;flex-wrap:nowrap;align-items:center;gap:6px;max-height:none;padding:3px 5px;display:flex;overflow:auto hidden}.tabs-wrap::-webkit-scrollbar{height:6px}.tabs-wrap::-webkit-scrollbar-thumb{background:#d5dee9;border-radius:999px}.tab{border:1px solid var(--line);background:var(--card-solid);color:var(--ink-soft);cursor:pointer;transition:all var(--tr);-webkit-user-select:none;user-select:none;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.tab:hover{border-color:var(--primary);color:var(--primary-dark)}.tab.active{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border-color:#0000;font-weight:700;box-shadow:0 2px 8px #0d948840}.tab-badge{border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:18px;padding:0 5px;font-size:10px;font-weight:700;display:inline-flex}.tab:not(.active) .tab-badge{color:var(--ink-muted);background:#f1f5f9}.tab.active .tab-badge{color:#fff;background:#ffffff40}.tab.tab-verify{border-color:#fde68a}.tab.tab-verify.active{background:linear-gradient(135deg,#d97706,#b45309)}.preview-container{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--card-solid);flex-direction:column;flex:1;min-height:340px;display:flex;overflow:hidden;box-shadow:inset 0 1px #ffffffbf}.preview-toolbar{border-bottom:1px solid var(--line);background:linear-gradient(#fcfdff,#f6f8fb);flex-wrap:nowrap;align-items:center;gap:6px;padding:5px 10px;display:flex;overflow:auto hidden}.preview-toolbar::-webkit-scrollbar{height:6px}.preview-toolbar::-webkit-scrollbar-thumb{background:#d5dee9;border-radius:999px}.preview-title{color:var(--ink);font-size:13px;font-weight:700}.preview-count{color:var(--ink-muted);margin-left:4px;font-size:11px}.preview-spacer{flex:1}.search-box{border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color var(--tr),box-shadow var(--tr);background:#fff;flex:none;align-items:center;gap:6px;padding:0 8px;display:flex}.search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #0d94881a}.search-box svg{color:var(--ink-muted);flex-shrink:0}.search-input{width:130px;color:var(--ink);background:0 0;border:none;outline:none;padding:4px 0;font-size:12px}.search-input::placeholder{color:var(--ink-muted)}.search-clear{color:var(--ink-muted);cursor:pointer;transition:all var(--tr);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:14px;line-height:1}.toolbar-btn{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-soft);cursor:pointer;transition:all var(--tr);white-space:nowrap;background:#fff;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.toolbar-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}.toolbar-btn.active{background:var(--primary);color:#fff;border-color:var(--primary-dark)}.qf-chip{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;transition:all var(--tr);background:#fff;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.qf-chip:hover{border-color:var(--primary);color:var(--primary-dark);background:var(--primary-bg)}.qf-chip.active{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;border-color:#0000;box-shadow:0 4px 12px #0d94883d}.qf-select{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);min-width:140px;transition:all var(--tr);background:#fff;outline:none;padding:4px 8px;font-size:12px}.qf-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0d94881f}.column-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;max-height:360px;padding:2px;display:grid;overflow:auto}.column-item{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.table-scroll{flex:1;overflow:auto}table{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}thead{z-index:3;position:sticky;top:0}th{border-bottom:2px solid var(--line);border-right:1px solid var(--line);text-align:center;color:var(--ink);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(#f8fafb,#eef2f6);padding:10px 12px;font-size:12px;font-weight:700}th:hover{background:linear-gradient(#eef2f6,#e2e8f0)}th .sort-arrow{color:var(--ink-muted);vertical-align:middle;margin-left:3px;font-size:10px;transition:transform .15s;display:inline-block}th .sort-arrow.asc{color:var(--primary)}th .sort-arrow.desc{color:var(--primary);transform:rotate(180deg)}td{border-bottom:1px solid var(--line-light);border-right:1px solid var(--line-light);white-space:nowrap;color:var(--ink);padding:8px 10px;font-size:13px}td.center{text-align:center}td.text-danger{font-weight:700;color:var(--red)!important}tbody tr{transition:background .12s,box-shadow .12s}tbody tr:nth-child(2n){background:#fafbfc}tbody tr:hover{background:#f0fdfa;box-shadow:inset 0 0 0 1px #99f6e4}tr.sum-row td{color:var(--red);border-top:2px solid #fca5a5;font-size:14px;font-weight:800;background:#fef2f2!important}.preview-table tfoot{z-index:4;position:sticky;bottom:0}tr.row-fail td{background:#fff1f2!important}tr.row-fail:hover td{background:#ffe4e6!important}tr.row-warn td{background:#fffbeb!important}tr.row-warn:hover td{background:#fef3c7!important}tr.row-pass td{background:#f0fdf4!important}tr.row-pass:hover td{background:#dcfce7!important}tr.row-fail td:first-child{box-shadow:inset 3px 0 #ef4444}tr.row-warn td:first-child{box-shadow:inset 3px 0 #f59e0b}tr.row-pass td:first-child{box-shadow:inset 3px 0 #22c55e}table.freeze-first th.first-col{z-index:5;background:linear-gradient(#f8fafb,#eef2f6);position:sticky;left:0;box-shadow:2px 0 #e5e7eb}table.freeze-first td.first-col{z-index:2;background:#fff;position:sticky;left:0;box-shadow:2px 0 #f1f5f9}table.freeze-first tbody tr:nth-child(2n) td.first-col{background:#fafbfc}table.freeze-first tbody tr:hover td.first-col{background:#f0fdfa}table.freeze-first tr.row-fail td.first-col{background:#fef2f2!important}table.freeze-first tr.row-warn td.first-col{background:#fefce8!important}table.freeze-first tr.row-pass td.first-col{background:#f0fdf4!important}table.freeze-first tr.sum-row td.first-col{background:#fef2f2!important}table.biz-compact{table-layout:fixed;width:100%;min-width:100%}table.biz-compact th,table.biz-compact td{padding:6px 7px;font-size:12px}table.biz-compact th.wrap-col,table.biz-compact td.wrap-col{white-space:normal;word-break:break-all;line-height:1.35}table.biz-compact th:not(.wrap-col),table.biz-compact td:not(.wrap-col){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}table.dense th,table.dense td{padding:5px 6px;font-size:12px}.badge-pass{color:#166534;background:#dcfce7;border:1px solid #86efac;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.badge-fail{color:#b91c1c;background:#fee2e2;border:1px solid #fca5a5;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.badge-warn{color:#92400e;background:#fef3c7;border:1px solid #fcd34d;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.badge-none{color:#475569;background:#e2e8f0;border:1px solid #cbd5e1;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.empty-state{color:var(--ink-muted);text-align:center;flex:1;place-items:center;padding:24px 16px;font-size:14px;line-height:1.8;display:grid}.empty-state svg{opacity:.4;width:40px;height:40px;margin-bottom:8px}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#00000073;place-items:center;animation:.2s fadeIn;display:none;position:fixed;inset:0}.modal-overlay.open{display:grid}.modal{border-radius:var(--radius-xl);background:#fff;flex-direction:column;width:min(680px,94vw);max-height:88vh;animation:.25s slideUp;display:flex;box-shadow:0 24px 72px #0f172a3d,0 8px 24px #0f172a24}.modal-header{border-bottom:1px solid var(--line);background:linear-gradient(#f8fafc,#f1f5f9);align-items:center;gap:10px;padding:18px 22px;display:flex}.modal-header h2{color:#0f172a;flex:1;font-size:16px;font-weight:700}.modal-close{border-radius:var(--radius-sm);cursor:pointer;width:32px;height:32px;color:var(--ink-soft);transition:all var(--tr);background:#e2e8f0;border:none;place-items:center;font-size:18px;display:grid}.modal-close:hover{color:var(--red);background:#fee2e2}.modal-body{flex:1;padding:20px 22px;overflow-y:auto}.modal-footer{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.rule-list{border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:16px;overflow:hidden}.rule-list-header{color:var(--ink-soft);background:#f8fafb;grid-template-columns:1fr 56px 48px 1fr 70px;gap:6px;padding:8px 14px;font-size:12px;font-weight:700;display:grid}.rule-item{border-top:1px solid var(--line-light);transition:background var(--tr);grid-template-columns:1fr 56px 48px 1fr 70px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;display:grid}.rule-item:hover{background:#f8fafb}.rule-item .rule-actions{gap:4px;display:flex}.rule-item .rule-actions button{cursor:pointer;color:var(--ink-muted);transition:all var(--tr);background:0 0;border:none;border-radius:4px;padding:4px;font-size:12px}.rule-item .rule-actions button:hover{color:var(--blue);background:#eff6ff}.rule-item .rule-actions button.del:hover{color:var(--red);background:#fef2f2}.rule-empty{text-align:center;color:var(--ink-muted);border-top:1px solid var(--line-light);padding:20px;font-size:13px}.form-section{border:1px solid var(--line);border-radius:var(--radius-md);background:#fafbfc;padding:16px}.form-section h3{color:var(--ink);margin-bottom:12px;font-size:14px;font-weight:700}.form-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.form-row label{color:var(--ink-soft);min-width:80px;font-size:12px;font-weight:600}.form-row input,.form-row select{border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color var(--tr);outline:none;padding:7px 10px;font-size:13px}.form-row input:focus,.form-row select:focus{border-color:var(--primary)}.form-row input{width:140px}.tier-table{border-collapse:collapse;width:100%;margin:8px 0}.tier-table th{text-align:center;border:1px solid var(--line);background:#eef2f6;padding:6px 10px;font-size:11px}.tier-table td{border:1px solid var(--line);text-align:center;padding:4px 6px}.tier-table input{text-align:center;border:1px solid var(--line);border-radius:4px;width:80px;padding:5px;font-size:12px}.tier-table .del-tier{color:var(--ink-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px}.tier-table .del-tier:hover{color:var(--red);background:#fef2f2}.spec-table{border-collapse:collapse;width:100%;margin:8px 0}.spec-table th{text-align:center;border:1px solid var(--line);background:#fef9c3;padding:6px 10px;font-size:11px}.spec-table td{border:1px solid var(--line);text-align:center;padding:4px 6px}.spec-table input{text-align:center;border:1px solid var(--line);box-sizing:border-box;border-radius:4px;width:100%;padding:5px;font-size:12px}.spec-table .del-spec{color:var(--ink-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px}.spec-table .del-spec:hover{color:var(--red);background:#fef2f2}.param-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;display:grid}.param-card{border:1px solid var(--line);border-radius:var(--radius-sm);text-align:center;background:#fff;padding:10px}.param-card label{color:var(--ink-muted);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.param-card input{text-align:center;border:1px solid var(--line);width:80px;color:var(--ink);border-radius:4px;padding:6px;font-size:15px;font-weight:700}.param-card .unit{color:var(--ink-muted);margin-top:2px;font-size:11px}.tabs-row{flex-wrap:nowrap!important;align-items:center!important;overflow:auto hidden!important}.tabs-row::-webkit-scrollbar{height:6px}.tabs-row::-webkit-scrollbar-thumb{background:#d5dee9;border-radius:999px}.tabs-tools{flex-flow:row!important;align-items:center!important;gap:5px!important;display:flex!important}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:.35s both fadeIn}.footer{text-align:center;color:var(--ink-muted);padding:16px;font-size:11px}@media (width<=980px){.container{grid-template-columns:1fr}.left{position:static}.right{min-height:auto}.stats-row{grid-template-columns:repeat(3,1fr)}.header-desc{display:none}.param-grid{grid-template-columns:1fr 1fr}}@media (width<=600px){.container{margin-top:8px;padding:0 8px}.stats-row{grid-template-columns:repeat(2,1fr)}.stats-summary{grid-template-columns:1fr}.search-input{width:100px}.left{padding:14px}.right{padding:8px}.param-grid{grid-template-columns:1fr}.tabs-row{flex-direction:column;align-items:stretch}.tabs-tools{justify-content:flex-start;align-items:stretch}.sheet-select{width:100%;min-width:0}.tab-search-input{flex:1;width:100%;min-width:0}.tabs-wrap{max-height:180px}}.modal-overlay{-webkit-backdrop-filter:blur(8px)saturate(1.2);z-index:1000;background:#0f172a73;place-items:center;animation:.25s cubic-bezier(.4,0,.2,1) both fadeIn;display:grid;position:fixed;inset:0}.modal{-webkit-backdrop-filter:blur(24px);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:1px solid var(--line);background:#fffffff2;flex-direction:column;max-width:calc(100vw - 48px);max-height:calc(100vh - 48px);animation:.3s cubic-bezier(.34,1.56,.64,1) both scaleUp;display:flex;overflow:hidden}.modal-lg{width:820px}.modal-xl{width:960px}.modal-head{border-bottom:1px solid var(--line);background:#ffffff80;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title{color:var(--ink);font-size:16px;font-weight:800}.modal-body{padding:20px;overflow-y:auto}.modal-close{color:var(--ink-muted);cursor:pointer;transition:color var(--tr);background:0 0;border:none;font-size:22px}.modal-close:hover{color:var(--red)}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field span{color:var(--ink-soft);font-size:12px;font-weight:700}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;transition:all var(--tr);background:#fff;outline:none;padding:8px 12px;font-size:13px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0d94881f}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.num{text-align:right;font-family:JetBrains Mono,Courier New,monospace;font-weight:600}.table-scroll{max-height:calc(100vh - 200px);overflow:auto}@keyframes scaleUp{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (width<=1390px){.header-brand,.container{width:100%;max-width:none}}.cm-layout{flex-direction:column;gap:16px;min-height:420px;padding:4px 0;display:flex}.cm-sheet-list{border-bottom:1px solid var(--line);flex-flow:wrap;gap:8px;margin-bottom:8px;padding-bottom:16px;display:flex}.cm-section-title{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.5px;width:100%;margin-bottom:8px;font-size:12px;font-weight:700}.cm-sheet-item{border:1px solid var(--line);cursor:pointer;text-align:left;transition:all var(--tr);background:#f1f5f999;border-radius:999px;outline:none;flex-direction:row;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.cm-sheet-item:hover{border-color:var(--primary);background:var(--primary-bg);transform:translateY(-1px)}.cm-sheet-item.active{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border-color:#0000;transform:none;box-shadow:0 4px 12px #0d948833}.cm-sheet-name{font-size:13px;font-weight:700}.cm-sheet-meta{color:var(--ink-soft);background:#0f172a0f;border-radius:999px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.cm-sheet-item.active .cm-sheet-meta{color:#fff;background:#fff3}.cm-cols-panel{flex-direction:column;gap:16px;padding-left:4px;display:flex}.cm-cols-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:8px;display:flex}.cm-cols-title{color:var(--ink);font-size:15px;font-weight:800}.cm-cols-actions{gap:12px;display:flex}.cm-link{color:var(--primary);cursor:pointer;transition:color var(--tr);background:0 0;border:none;font-size:12px;font-weight:700}.cm-link:hover{color:var(--primary-dark);text-decoration:underline}.cm-link.danger{color:var(--red)}.cm-link.danger:hover{color:#b91c1c}.cm-cols-grid{border:1px solid var(--line-light);border-radius:var(--radius-md);background:#f8fafc;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;max-height:260px;padding:6px;display:grid;overflow-y:auto}.cm-cols-grid::-webkit-scrollbar{width:4px}.cm-cols-grid::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.cm-col-chip{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--tr);-webkit-user-select:none;user-select:none;background:#fff;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.cm-col-chip:hover{border-color:var(--primary);background:var(--primary-bg)}.cm-col-chip.on{border-color:var(--primary);background:var(--primary-bg);color:var(--primary-dark);font-weight:600}.cm-col-chip input[type=checkbox]{accent-color:var(--primary);cursor:pointer}.cm-preset-area{border-top:1px solid var(--line);flex-direction:column;gap:10px;padding-top:14px;display:flex}.cm-preset-list{flex-wrap:wrap;gap:8px;display:flex}.cm-preset-item{border:1px solid var(--line);transition:all var(--tr);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:4px 12px;font-size:12px;display:inline-flex}.cm-preset-item:hover{box-shadow:var(--shadow-sm);border-color:var(--primary)}.cm-preset-name{color:var(--ink-soft);font-weight:600}.cm-preset-save{align-items:center;gap:8px;margin-top:4px;display:flex}.cm-preset-save input{border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color var(--tr);background:#fff;outline:none;flex:1;padding:8px 12px;font-size:12px}.cm-preset-save input:focus{border-color:var(--primary)}.hint{color:var(--ink-muted);font-size:12px}.tabs-more-portal{border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(20px)saturate(1.4);flex-wrap:wrap;gap:8px;min-width:240px;max-width:min(92vw,820px);padding:10px;animation:.2s fadeIn;position:fixed;overflow:visible;z-index:2000!important;background:#ffffffe6!important;border:1px solid #e2e8f0cc!important;box-shadow:0 20px 48px #0f172a26,0 8px 24px #0f172a14!important}
