/* 字号体系：全站只用这几档。meta 与表头≥12px，正文与表格≥14px；改字号请改这里，不要在规则里写死 px。 */
:root{--fs-meta:12px;--fs-sm:13px;--fs-body:14px;--fs-md:15px;--fs-title:16px;--fs-lg:18px;--fs-xl:20px;--fs-2xl:24px;--fs-h1:28px;--fs-metric:32px}
:root{font-family:var(--ui-font-family);color:var(--ui-ink);background:var(--ui-ground);font-size:var(--ui-font-body);line-height:var(--ui-line-body);font-synthesis:none;text-rendering:optimizeLegibility;--navy:#122a3d;--navy2:#193a51;--teal:#159b9b;--teal-dark:var(--ui-primary);--blue:#3476c5;--muted:var(--ui-muted);--line:var(--ui-line);--soft:var(--ui-surface-alt);--success:var(--ui-success);--warning:var(--ui-warn);--danger:var(--ui-danger);--shadow:none}*{box-sizing:border-box}small{font-size:var(--fs-meta)}body{margin:0;min-width:320px;background:var(--ui-ground);color:var(--ui-ink)}button{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--ui-focus);outline-offset:2px}a{color:var(--ui-primary)}.application{min-height:100vh;display:flex}.sidebar{width:244px;flex:none;background:var(--navy);color:#e8f1f5;display:flex;flex-direction:column;position:sticky;top:0;align-self:flex-start;height:100vh;overflow-y:auto;overscroll-behavior:contain;padding:20px 14px 16px}.brand{display:flex;align-items:center;gap:11px;padding:3px 10px 23px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(145deg,#2cb6ae,#1686a3);display:grid;place-items:center;color:#fff;font-weight:800;font-size:18px;box-shadow:0 5px 14px rgba(13,151,160,.25)}.brand strong{display:block;font-size:var(--fs-md);letter-spacing:.2px}.brand small{display:block;color:#a8c0cc;font-size:var(--fs-meta);margin-top:4px}.workspace-label{font-size:var(--fs-meta);letter-spacing:1.3px;color:#83a0ae;margin:23px 10px 8px}.main-nav{display:grid;gap:var(--ui-gap-control)}.nav-item{border:0;background:transparent;color:#bdd0d9;text-align:left;border-radius:var(--ui-radius-control);min-height:var(--ui-control);padding:0 10px;display:flex;gap:11px;align-items:center;font-size:var(--fs-md);transition:background .15s,color .15s}.nav-item:hover{background:rgba(255,255,255,.08);color:white}.nav-item.active{background:#20495d;color:#fff;box-shadow:inset 3px 0 #39c0b4}.nav-icon{width:20px;text-align:center;font-size:16px;color:#8fb3c1}.nav-item.active .nav-icon{color:#52d0c4}.sidebar-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:16px 10px 0;color:#bdd0d9;font-size:var(--fs-sm)}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#41c796;margin-right:7px;box-shadow:0 0 0 3px rgba(65,199,150,.14)}.sidebar-version{color:#7e9aa8;margin:10px 0 0;font-size:var(--fs-meta)}.main-column{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:66px;background:var(--ui-surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10}.crumb{display:flex;align-items:center;gap:10px;min-width:0;color:var(--ui-muted);font-size:var(--fs-body);white-space:nowrap}.crumb strong{color:var(--ui-ink);font-weight:650;overflow:hidden;text-overflow:ellipsis}.crumb-sep{color:var(--ui-faint)}.top-actions{display:flex;align-items:center;gap:12px}.today{font-size:var(--fs-sm);color:var(--ui-muted)}.top-divider{height:20px;width:1px;background:var(--line)}.avatar{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#e1f3f2;color:#087d83;font-size:var(--fs-sm);font-weight:700}.user-name{font-size:var(--fs-body);color:var(--ui-ink)}.icon-button.menu-toggle{display:none}.content{width:100%;max-width:1600px;margin:0 auto;padding:27px 32px 42px;flex:1}.view{display:none}.view.active{display:block}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--ui-space-5);margin-bottom:var(--ui-space-6)}.page-heading h1{font-size:var(--ui-font-title);line-height:1.3;margin:4px 0 8px;color:var(--ui-ink);letter-spacing:0}.page-heading .muted{margin:0;font-size:var(--fs-body);max-width:60em}.eyebrow{font-size:var(--fs-meta);font-weight:750;letter-spacing:1.3px;color:var(--ui-primary);margin:0 0 4px}.muted{color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--ui-control);border:1px solid transparent;border-radius:var(--ui-radius-control);padding:0 16px;font-weight:650;font-size:var(--fs-body);line-height:1.2;white-space:nowrap;transition:background .15s,border .15s,transform .15s}.button:active{transform:translateY(1px)}.button.primary{background:var(--ui-primary);color:var(--ui-primary-ink)}.button.primary:hover{background:var(--ui-primary-hover)}.button.secondary{background:var(--ui-surface);border-color:var(--ui-line-strong);color:var(--ui-ink)}.button.secondary:hover{border-color:var(--ui-primary-line);color:var(--ui-primary)}.button.quiet{color:var(--ui-muted);background:transparent;border-color:transparent}.button.quiet:hover{background:var(--ui-hover)}.button.danger-outline{border-color:var(--ui-danger-line);color:var(--ui-danger);background:var(--ui-surface)}.button.danger-outline:hover{background:var(--ui-danger-soft)}.button.small{min-height:var(--ui-control-sm);padding:0 12px;font-size:var(--fs-sm)}.button.full{width:100%}.text-button,.inline-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:var(--ui-control-sm);border:0;border-radius:var(--ui-radius-control);background:transparent;color:var(--ui-primary);padding:0 8px;font-size:var(--fs-body);font-weight:650;line-height:1.2;white-space:nowrap}.text-button:hover,.inline-button:hover{background:var(--ui-primary-soft)}.icon-button{display:inline-grid;place-items:center;flex:none;border:0;background:transparent;color:var(--ui-muted);font-size:18px;line-height:1;border-radius:var(--ui-radius-control);width:var(--ui-control-sm);height:var(--ui-control-sm);padding:0}.icon-button:hover{background:var(--ui-hover)}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gap-card);margin-bottom:var(--ui-gap-section)}.metric-card{position:relative;background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:var(--ui-radius-card);padding:var(--ui-gutter);box-shadow:none;min-height:112px}.metric-label{font-size:var(--fs-body);color:var(--ui-muted)}.metric-value{font-size:var(--fs-metric);font-weight:700;color:#243e52;margin-top:8px;line-height:1}.metric-foot{font-size:var(--fs-meta);color:var(--ui-muted);margin-top:8px}.metric-icon{position:absolute;right:17px;top:18px;width:31px;height:31px;border-radius:9px;display:grid;place-items:center;font-size:16px}.metric-icon.blue{color:#4288cb;background:#eaf3fb}.metric-icon.teal{color:#138e90;background:#e6f6f4}.metric-icon.amber{color:#bc7b26;background:#fff4e5}.panel{background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:var(--ui-radius-card);box-shadow:none;padding:var(--ui-gutter);margin-bottom:var(--ui-gap-section);min-width:0}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--ui-space-3);margin-bottom:var(--ui-gap-card)}.panel-heading :is(.inline-filter,.batch-controls,.inline-controls){--ui-control:var(--ui-control-sm);--ui-control-pad:8px}.panel-heading h2,.panel h2{font-size:var(--fs-title);color:var(--ui-ink);margin:0;font-weight:700;line-height:1.5}.panel-heading p{font-size:var(--fs-sm);color:var(--ui-muted);margin:4px 0 0;line-height:1.6}.table-wrap{overflow-x:auto;margin:0 calc(var(--ui-gutter) * -1) -4px}.table-wrap table{border-collapse:collapse;width:100%;min-width:680px;text-align:left}.table-wrap th{font-size:var(--fs-sm);font-weight:650;color:var(--ui-muted);background:var(--ui-surface-alt);padding:10px 16px;border-top:1px solid var(--ui-line);border-bottom:1px solid var(--ui-line);white-space:nowrap}.table-wrap td{font-size:var(--fs-body);color:var(--ui-ink-soft);padding:12px 16px;border-bottom:1px solid var(--ui-line-soft);vertical-align:middle}.table-wrap :is(th,td):first-child{padding-left:var(--ui-gutter)}.table-wrap :is(th,td):last-child{padding-right:var(--ui-gutter)}.table-wrap tbody tr:last-child td{border-bottom:0}.table-wrap tbody tr:hover td{background:var(--ui-surface-alt)}.table-primary{display:block;color:var(--ui-ink);font-weight:650}.table-secondary{display:block;color:var(--ui-muted);font-size:var(--fs-meta);margin-top:4px}.empty-cell{text-align:center!important;padding:28px!important;color:var(--ui-muted)!important}.pill{display:inline-flex;align-items:center;border-radius:20px;padding:4px 8px;font-size:var(--fs-meta);line-height:1.2;font-weight:650;white-space:nowrap}.pill.success{background:#e7f6f0;color:#178060}.pill.warning{background:#fff4e4;color:#a76513}.pill.danger{background:#ffeded;color:#b44143}.pill.info{background:#eaf3fb;color:#3977b2}.pill.neutral{background:#eef2f5;color:#6b7d89}.dashboard-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.compact-list{display:grid}.compact-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--ui-line-soft);padding:12px 0}.compact-row:first-child{border-top:0;padding-top:1px}.compact-row strong{display:block;font-size:var(--fs-body);color:#374d5c}.compact-row small{display:block;font-size:var(--fs-sm);color:#8b99a3;margin-top:4px}.workflow-list{list-style:none;padding:0;margin:0;display:grid;gap:12px}.workflow-list li{display:flex;align-items:center;gap:10px}.workflow-list li>span{width:23px;height:23px;border:1px solid var(--ui-line);border-radius:50%;display:grid;place-items:center;color:#168c8d;font-size:var(--fs-meta);font-weight:700;flex:none}.workflow-list strong{display:block;font-size:var(--fs-body);color:var(--ui-ink)}.workflow-list small{display:block;font-size:var(--fs-sm);color:var(--ui-muted);margin-top:3px}.app-footer{height:37px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 32px;font-size:var(--fs-meta);color:var(--ui-muted);background:var(--ui-surface)}.stepper{display:flex;align-items:center;gap:var(--ui-space-3);padding:var(--ui-space-3) var(--ui-gutter);background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:var(--ui-radius-card);margin-bottom:var(--ui-gap-section);box-shadow:none}.step{display:flex;align-items:center;gap:8px;color:#98a5ad;font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.step span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#edf1f4;color:#80909a;font-size:var(--fs-meta)}.step.active{color:#087f87}.step.active span,.step.done span{background:#ddf3f0;color:#087f87}.step.done{color:#38877f}.stepper i{height:1px;background:#e4ebef;flex:1;min-width:15px}.workbench-grid{display:grid;grid-template-columns:minmax(0,1fr) 265px;gap:16px;align-items:start}.workbench-main{min-width:0}.workbench-side{min-width:0}.workbench-side h2{margin-bottom:15px}.sticky-panel{position:sticky;top:83px}.form-row{display:flex;align-items:flex-end;gap:var(--ui-gap-control);margin-bottom:var(--ui-gap-field)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 13px}label{display:grid;align-content:start;gap:var(--ui-gap-label);color:var(--ui-ink-soft);font-size:var(--fs-sm);font-weight:600}label input:not([type=checkbox],[type=radio]),label select,label textarea,.search-box input{width:100%;font-weight:400}label textarea{resize:vertical;line-height:1.6}.grow{flex:1}.align-end{align-self:end}.span-2{grid-column:span 2}.form-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}.form-actions .muted{font-size:var(--fs-sm)}.drop-zone{border:1px dashed #a9c9ce;border-radius:var(--ui-radius-control);background:var(--ui-surface-alt);padding:22px 15px;text-align:center;color:var(--ui-ink-soft);transition:.15s}.drop-zone.dragover{background:var(--ui-primary-soft);border-color:#159b9b}.upload-symbol{width:35px;height:35px;border-radius:10px;background:#e2f4f2;color:#118889;font-size:20px;display:grid;place-items:center;margin:0 auto 8px}.drop-zone strong{font-size:var(--fs-body)}.drop-zone small{display:block;color:var(--ui-muted);font-size:var(--fs-sm);margin-top:6px}.file-list{margin-top:9px;max-height:140px;overflow:auto}.file-row{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--ui-line-soft);padding:8px 0;color:var(--ui-ink-soft);font-size:var(--fs-body)}.file-row:last-child{border:0}.file-type{min-width:40px;height:28px;padding:0 4px;flex:none;border-radius:6px;background:#eaf3fb;color:#3979b8;display:grid;place-items:center;font-size:var(--fs-meta);font-weight:750}.file-meta{min-width:0;flex:1}.file-meta strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-body);font-weight:600}.file-meta small{display:block;color:var(--ui-muted);font-size:var(--fs-meta);margin-top:3px}.remove-file{border:0;background:transparent;color:var(--ui-muted);font-size:16px}.empty-state{padding:18px 10px;text-align:center;color:var(--ui-muted);font-size:var(--fs-body)}.summary-strip{display:flex;flex-wrap:wrap;gap:10px;background:var(--ui-surface-alt);border:1px solid var(--ui-line-soft);border-radius:var(--ui-radius-control);padding:10px 12px;margin-bottom:var(--ui-space-3);color:var(--ui-ink-soft);font-size:var(--fs-sm)}.summary-strip strong{color:var(--ui-ink)}.issue-list{display:grid;gap:7px;margin-bottom:10px}.issue-item{border:1px solid #f0e3d0;background:#fffaf2;border-radius:7px;padding:9px 11px;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start}.issue-item.error{background:#fff7f7;border-color:#f1d9d9}.issue-icon{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#ffefda;color:#ad6719;font-size:var(--fs-meta);font-weight:750}.issue-item.error .issue-icon{background:#fde7e7;color:#b34849}.issue-body strong{display:block;color:#5b4b35;font-size:var(--fs-body)}.issue-body p{margin:4px 0;color:#887c68;font-size:var(--fs-sm);line-height:1.5}.issue-detail{color:#8d8170;font-size:var(--fs-meta)}.model-editor-label{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:15px 0 6px}.model-editor-label span{font-weight:400;color:var(--ui-muted);font-size:var(--fs-meta)}.code-editor{display:block;width:100%;min-height:180px;max-height:420px;resize:vertical;background:#172b3a;color:#d4e6eb;border:1px solid #263f50;border-radius:7px;padding:12px;font:var(--fs-sm)/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:2}.code-editor:disabled{opacity:.56}.tip-block{display:flex;gap:9px;padding:9px 0;border-top:1px solid var(--ui-line-soft)}.tip-block>span{color:#1a9796;font:700 var(--fs-meta) ui-monospace,monospace;margin-top:1px}.tip-block p{color:var(--ui-muted);font-size:var(--fs-sm);line-height:1.55;margin:0}.side-divider{height:1px;background:var(--ui-line-soft);margin:10px 0}.side-meta{display:flex;justify-content:space-between;gap:7px;padding:6px 0;font-size:var(--fs-sm);color:var(--ui-muted)}.side-meta strong{color:var(--ui-ink-soft);font-weight:600;text-align:right}.check-field{display:flex;align-items:center;gap:8px;min-height:var(--ui-control);color:var(--ui-ink);font-weight:400}.check-field input{margin:0}.job-progress{margin-top:15px;border:1px solid #e5edef;border-radius:8px;background:#f9fbfc;padding:13px}.progress-head{display:flex;justify-content:space-between;gap:10px;color:#435a68;font-size:var(--fs-sm)}.progress-track{height:6px;background:#e5edf0;border-radius:6px;overflow:hidden;margin:9px 0}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,#17a7a0,#438aca);transition:width .3s}.branch-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.branch-card{border:1px solid var(--ui-line);border-radius:8px;padding:11px}.branch-card h3{font-size:var(--fs-body);margin:0 0 7px;color:var(--ui-ink)}.branch-card p{font-size:var(--fs-sm);color:var(--ui-muted);margin:4px 0;line-height:1.5}.results-layout{display:grid;grid-template-columns:265px minmax(0,1fr);gap:16px;align-items:start}.plan-sidebar{padding:13px;position:sticky;top:82px}.search-box{display:block}.search-box input{padding-left:36px;background:var(--ui-surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%238a93a2' stroke-width='1.6' stroke-linecap='round'><circle cx='7' cy='7' r='4.8'/><path d='M11 11l3.5 3.5'/></svg>") no-repeat 12px center}.plan-list{margin-top:9px;max-height:calc(100vh - 215px);overflow:auto}.plan-list-item{display:block;width:100%;font:inherit;color:var(--ui-ink);cursor:pointer;text-align:left;border:0;border-top:1px solid var(--ui-line-soft);padding:11px 7px;background:var(--ui-surface)}.plan-list-item:hover{background:var(--ui-surface-alt)}.plan-list-item.selected{background:var(--ui-primary-soft);border-left:3px solid var(--ui-primary);padding-left:4px}.plan-list-item strong{display:block;color:var(--ui-ink);font-size:var(--fs-body)}.plan-list-item small{display:block;color:var(--ui-muted);font-size:var(--fs-meta);margin-top:5px}.plan-list-tags{display:flex;gap:5px;margin-top:6px}.plan-detail{min-width:0}.empty-plan{text-align:center;padding:65px 20px}.empty-plan h2{margin:12px 0 7px}.empty-plan p{color:var(--ui-muted);font-size:var(--fs-body)}.empty-illustration{font-size:30px;color:var(--ui-faint)}.plan-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.plan-title-row h2{font-size:var(--fs-lg);color:var(--ui-ink);margin:0}.plan-title-row p{font-size:var(--fs-sm);color:var(--ui-muted);margin:5px 0 0}.plan-actions{display:flex;gap:var(--ui-gap-control);flex-wrap:wrap}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:13px 0}.tab-button{min-height:var(--ui-control);border:0;background:transparent;color:var(--ui-muted);padding:0 12px;font-size:var(--fs-body);border-bottom:2px solid transparent;white-space:nowrap}.tab-button.active{color:var(--ui-primary);border-color:var(--ui-primary);font-weight:700}.tab-pane{display:none}.tab-pane.active{display:block}.diagram-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:10px 0}.segmented{display:inline-flex;border:1px solid var(--ui-line-strong);border-radius:var(--ui-radius-control);overflow:hidden}.segmented button{min-height:var(--ui-control-sm);border:0;background:var(--ui-surface);color:var(--ui-muted);padding:0 12px;font-size:var(--fs-body)}.segmented button.active{background:var(--ui-primary-soft);color:var(--ui-primary);font-weight:700}.diagram-search{max-width:230px}.duty-table th{font-size:var(--fs-sm);color:var(--ui-muted);background:var(--ui-surface-alt);text-align:left;padding:9px;border-bottom:1px solid var(--line)}.duty-table td{font-size:var(--fs-body);color:var(--ui-ink-soft);vertical-align:top;padding:10px 9px;border-bottom:1px solid var(--ui-line-soft);line-height:1.5}.duty-name{font-weight:700;color:var(--ui-ink)}.nowrap{white-space:nowrap}
.subtle{font-size:var(--fs-meta);color:var(--ui-muted)}.transition-card{border:1px solid var(--line);border-radius:8px;padding:11px;margin-bottom:9px}.transition-card h3{font-size:var(--fs-body);color:var(--ui-ink);margin:0 0 8px}.transition-pair{display:grid;grid-template-columns:1fr auto 1fr;gap:9px;align-items:center;border-top:1px solid var(--ui-line-soft);padding:9px 0}.transition-pair:first-of-type{border-top:0}.transition-duty{font-size:var(--fs-sm);color:var(--ui-ink-soft)}.transition-duty strong{display:block;color:#314b5c;font-size:var(--fs-body)}.transition-arrow{color:#70a9aa}.validation-banner{display:flex;gap:9px;align-items:flex-start;padding:12px;border-radius:8px;margin-bottom:12px}.validation-banner.ok{background:#eaf7f1;color:#226f56}.validation-banner.fail{background:#fff1ef;color:#a3433f}.validation-banner.pending{background:#f3f6f8;color:#657783}.validation-banner strong{display:block;font-size:var(--fs-body)}.validation-banner p{margin:4px 0 0;font-size:var(--fs-sm);line-height:1.5}.validation-issue{border:1px solid var(--ui-line-soft);border-radius:7px;padding:9px 10px;margin:7px 0}.validation-issue strong{font-size:var(--fs-body);color:var(--ui-ink-soft)}.validation-issue p{font-size:var(--fs-sm);color:var(--ui-muted);line-height:1.5;margin:5px 0}.validation-meta{font-size:var(--fs-meta);color:var(--ui-muted)}.review-block{white-space:pre-wrap;color:var(--ui-ink-soft);line-height:1.7;font-size:var(--fs-body);background:var(--ui-surface-alt);border:1px solid var(--line);border-radius:7px;padding:12px}.template-layout{display:grid;grid-template-columns:minmax(250px,.75fr) minmax(0,1.25fr);gap:16px;align-items:start}.template-list{display:grid}.template-row{display:flex;align-items:center;gap:var(--ui-space-3);border-top:1px solid var(--ui-line-soft);padding:10px 0}.template-row:first-child{border-top:0;padding-top:0}.template-row.selected{background:var(--ui-primary-soft);margin:0 -12px;padding:10px 12px;border-radius:var(--ui-radius-control)}.template-row-main{flex:1;min-width:0}.template-row-main strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ui-ink);font-size:var(--fs-body)}.template-row-main small{display:block;color:var(--ui-muted);font-size:var(--fs-meta);margin-top:4px}.template-editor>label{margin-bottom:13px}.template-json{min-height:330px}.callout{border-radius:7px;padding:10px 12px;font-size:var(--fs-sm);line-height:1.55;margin-top:12px}.callout.info{background:#f0f7fb;color:#587383;border:1px solid #deebf1}.callout.warning{background:#fff8eb;color:#87632c;border:1px solid #f4e8cf}.settings-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--ui-gap-card);align-items:start}.settings-layout>.panel{max-width:56rem}.settings-field{margin:15px 0}.settings-field>label{display:flex;align-items:center;gap:8px;margin-bottom:6px}.settings-field>label .muted{font-size:var(--fs-meta)}.field-help{font-size:var(--fs-meta);color:var(--ui-muted);display:block;margin-top:5px}.inline-controls{display:flex;gap:8px}.inline-controls select{flex:1}.switch-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ui-space-4);padding:12px 0;border-bottom:1px solid var(--ui-line-soft);font-weight:400}.switch-row strong{display:block;font-size:var(--fs-body);line-height:21px;color:var(--ui-ink)}.switch-row small{display:block;font-size:var(--fs-meta);color:var(--ui-muted);margin-top:4px}.switch-row input{appearance:none;flex:none;margin:0;width:37px;height:21px;min-height:0;border:0;background:#ccd5da;border-radius:16px;position:relative;transition:.2s;cursor:pointer}.switch-row input:before{content:"";position:absolute;width:15px;height:15px;left:3px;top:3px;background:var(--ui-surface);border-radius:50%;box-shadow:0 1px 3px #0002;transition:.2s}.switch-row input:checked{background:#149b91}.switch-row input:checked:before{transform:translateX(16px)}.switch-row input:disabled{opacity:.6;cursor:not-allowed}.setting-note{border-top:1px solid var(--ui-line-soft);padding:12px 1px}.setting-note strong{font-size:var(--fs-body);color:var(--ui-ink)}.setting-note p{font-size:var(--fs-sm);color:var(--ui-muted);line-height:1.6;margin:4px 0 0}.global-alert{margin:12px 32px 0;padding:10px 14px;border-radius:7px;background:#fff3e4;border:1px solid #f3dfbe;color:#855816;font-size:var(--fs-body)}.global-alert.error{background:#fff0f0;border-color:#efd4d4;color:#a53d3e}.toast-region{position:fixed;right:20px;bottom:20px;z-index:50;display:grid;gap:8px;max-width:min(390px,calc(100vw - 40px))}.toast{background:#183346;color:#fff;border-radius:8px;box-shadow:0 7px 25px #18334630;padding:11px 14px;font-size:var(--fs-body);line-height:1.5;animation:toast-in .2s ease}.toast.error{background:#87383a}.toast.success{background:#176a57}@keyframes toast-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.auth-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 24% 12%,#e4f4f2 0,transparent 33%),#f1f5f7}.auth-card{width:min(410px,100%);background:var(--ui-surface);border:1px solid var(--line);border-radius:13px;padding:32px 34px;box-shadow:0 16px 55px rgba(28,62,81,.1)}.auth-card .brand-mark{margin-bottom:22px;width:45px;height:45px}.auth-card h1{font-size:var(--fs-2xl);margin:0 0 8px;color:#233e51}.auth-card>.muted{font-size:var(--fs-body);margin:0 0 24px}.stack{display:grid;gap:14px}.stack label{gap:7px}.error-text{font-size:var(--fs-body);color:#b34040;margin:0}.modal{border:0;border-radius:var(--ui-radius-card);width:min(480px,calc(100% - 30px));padding:var(--ui-space-6);box-shadow:var(--ui-shadow-pop)}.modal::backdrop{background:#10273770;backdrop-filter:blur(2px)}.modal-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--ui-space-3);margin-bottom:var(--ui-space-2)}.modal-heading h2{font-size:var(--fs-xl);color:var(--ui-ink);margin:0}.modal-heading .muted{font-size:var(--fs-sm);margin:6px 0 0}.modal label{margin:var(--ui-gap-field) 0 0}.modal .form-actions{justify-content:flex-end}.issue-badge{font-size:var(--fs-meta);color:#9b641d;background:#fff3de;border-radius:10px;padding:3px 6px}.toast-region:empty{display:none}@media(max-width:1050px){.content{padding-left:21px;padding-right:21px}.workbench-grid{grid-template-columns:minmax(0,1fr) 230px}.results-layout{grid-template-columns:235px minmax(0,1fr)}.sidebar{width:220px}.topbar{padding:0 21px}}@media(max-width:820px){.sidebar{position:fixed;left:0;top:0;bottom:0;height:auto;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:10px 0 35px #162f4122}.sidebar.open{transform:translateX(0)}.icon-button.menu-toggle{display:inline-grid;margin-right:10px}.topbar{justify-content:flex-start}.crumb{flex:1}.top-actions{gap:7px}.today,.top-divider{display:none}.workbench-grid{grid-template-columns:1fr}.workbench-side{order:-1}.sticky-panel{position:static}.workbench-side .panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}.workbench-side h2,.side-divider,.side-meta{grid-column:1/-1}.workbench-side .tip-block{border-top:1px solid var(--ui-line-soft)}.results-layout{grid-template-columns:1fr}.plan-sidebar{position:static}.plan-list{display:flex;gap:4px;max-height:none;overflow:auto}.plan-list-item{min-width:165px;border:1px solid var(--ui-line-soft);border-radius:6px}.template-layout,.settings-layout{grid-template-columns:1fr}}@media(max-width:620px){.content{padding:19px 13px 30px}.topbar{height:56px;padding:0 13px}.crumb{font-size:var(--fs-sm);gap:6px}.crumb>span{display:none}.user-name{display:none}.top-actions .button{padding:0 10px}.page-heading{align-items:flex-start;margin-bottom:17px}.page-heading>.button{margin-top:18px}.metric-grid{gap:var(--ui-gap-control)}.metric-card{min-height:104px}.metric-value{font-size:var(--fs-2xl)}.metric-icon{width:24px;height:24px;right:10px;top:11px}.metric-label{padding-right:22px;font-size:var(--fs-sm)}.metric-foot{font-size:var(--fs-meta)}.dashboard-bottom{grid-template-columns:1fr;gap:0}.panel{margin-bottom:var(--ui-gap-card)}.table-wrap th,.table-wrap td{padding-left:10px;padding-right:10px}.form-row{align-items:flex-end}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.form-actions{align-items:flex-start;flex-wrap:wrap}.stepper{gap:6px}.step{gap:5px;font-size:var(--fs-meta)}.step span{width:19px;height:19px}.stepper i{min-width:6px}.branch-results{grid-template-columns:1fr}.plan-title-row{display:block}.plan-actions{margin-top:12px}.diagram-search{max-width:145px}.app-footer{padding:0 13px;font-size:var(--fs-meta)}.global-alert{margin:8px 13px 0}.auth-card{padding:25px 23px}.check-field{padding-top:0}.template-editor .form-actions{justify-content:flex-end}}
:is(.business-fields,.business-section){min-width:0}.business-fields{display:grid;grid-template-columns:1fr;gap:var(--ui-gap-control);margin:var(--ui-gap-field) 0}.business-section{border:1px solid var(--ui-line-soft);border-radius:var(--ui-radius-control);margin:0;padding:var(--ui-space-3) var(--ui-space-4) var(--ui-space-4);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:var(--ui-gap-field) var(--ui-gap-field-x)}.business-section legend{padding:0 6px;margin-left:-6px;color:var(--ui-primary);font-size:var(--fs-sm);font-weight:700}.business-field{min-width:0}.business-input{display:flex;align-items:stretch}.business-input input{flex:1 1 auto;width:100%;min-width:0}.business-input.has-suffix input{border-top-right-radius:0;border-bottom-right-radius:0}.business-input input[type=number]{-moz-appearance:textfield;appearance:textfield}.business-input input::-webkit-inner-spin-button,.business-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.field-suffix{flex:none;display:flex;align-items:center;justify-content:center;min-width:3.4rem;padding:0 var(--ui-control-pad);border:1px solid var(--ui-line-strong);border-left:0;border-radius:0 var(--ui-radius-control) var(--ui-radius-control) 0;background:var(--ui-surface-alt);color:var(--ui-muted);font-size:var(--fs-sm)}.field-unit{font-size:var(--fs-meta);line-height:18px;color:var(--ui-muted);font-weight:400}.field-unit:empty{display:none}.field-unit.is-override{color:var(--teal-dark);font-weight:650}.field-unit.is-invalid{color:var(--danger)}.compact-fields{margin:9px 0}.requirements-main{margin-bottom:11px}.requirements-main textarea{font-size:var(--fs-body);min-height:100px}.run-options{padding-top:8px;border-top:1px solid var(--ui-line-soft)}.advanced-json{margin-top:12px;border-top:1px solid var(--ui-line-soft);padding-top:10px}.advanced-json summary{cursor:pointer;color:var(--ui-ink-soft);font-size:var(--fs-sm);font-weight:650}.advanced-json summary:hover{color:var(--ui-primary)}.advanced-json>p{font-size:var(--fs-meta);margin:8px 0}.advanced-json .model-editor-label{margin-top:10px}.model-summary{margin:10px 0 14px}.model-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-gap-control)}.model-summary-item{border:1px solid var(--ui-line-soft);background:var(--ui-surface-alt);border-radius:var(--ui-radius-control);padding:9px 12px}.model-summary-item small{display:block;color:var(--ui-muted);font-size:var(--fs-meta)}.model-summary-item strong{display:block;margin-top:4px;color:var(--ui-ink);font-size:var(--fs-body);overflow-wrap:anywhere}.source-summary-title{font-size:var(--fs-meta);color:var(--ui-muted);margin:10px 0 5px}.source-chips{display:flex;flex-wrap:wrap;gap:var(--ui-gap-control)}.source-chip{border:1px solid #e1e9ed;background:#f8fafb;border-radius:14px;padding:4px 8px;color:#667b87;font-size:var(--fs-meta);max-width:100%;overflow-wrap:anywhere}.batch-controls{align-items:center}.batch-controls select{min-width:160px;width:26rem;max-width:100%}@media(max-width:620px){.business-section{grid-template-columns:1fr}.model-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-controls{display:flex;flex-wrap:wrap;justify-content:flex-start}.batch-controls select{max-width:none;min-width:0;flex:1 1 100%}}
:is(.direction-choice){border:1px solid var(--ui-line);border-radius:var(--ui-radius-control);padding:4px 12px;margin:var(--ui-gap-field) 0 0}.direction-choice legend{font-size:var(--fs-sm);font-weight:700;color:var(--ui-ink-soft);padding:0 6px;margin-left:-6px}.modal .direction-choice label,.direction-choice label{display:flex;margin:0;align-items:flex-start;gap:var(--ui-space-3);padding:10px 0;font-weight:400;border-top:1px solid var(--ui-line-soft);cursor:pointer}.direction-choice label:first-of-type{border-top:0}.direction-choice input{flex:none;margin:3px 0 0}.direction-choice strong{display:block;color:#3d5968;font-size:var(--fs-body)}.direction-choice small{display:block;color:var(--ui-muted);font-size:var(--fs-sm);font-weight:400;margin-top:4px}
[hidden]{display:none!important}

.template-layout{grid-template-columns:minmax(0,1fr)}.template-layout>.panel{min-width:0}.template-row{min-width:0;gap:12px}.template-row-main{min-width:0;flex:1}.template-row-main strong{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.6}.template-row>.text-button{flex:0 0 auto}.compact-row>div{min-width:0}.compact-row strong{overflow-wrap:anywhere}
@media(max-width:900px){.template-layout{grid-template-columns:minmax(0,1fr)}}

/* ===== 单点登录与角色改造新增（第 1B 步） ===== */
a.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.auth-card .button{margin-top:10px;width:100%}
.auth-card>.muted{line-height:1.7}
.user-chip{display:flex;align-items:center;gap:8px;min-width:0}
.user-name{display:inline}
.role-tag{font-size:var(--fs-meta);font-weight:650;color:#087d83;background:#e1f3f2;border-radius:20px;padding:3px 8px;white-space:nowrap}
.role-tag:empty{display:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-meta);word-break:break-all}
.small-text{font-size:var(--fs-meta);margin:0}
.clickable{cursor:pointer}
.clickable:hover{background:var(--ui-surface-alt)}
.callout.error{background:#fff1ef;color:#a3433f;border:1px solid #f0d3d0}
.callout.warning[hidden],.callout.info[hidden]{display:none}
.plan-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.plan-badges:empty{display:none}
.plan-list-tags{flex-wrap:wrap}
.pager-bar{flex-wrap:wrap;justify-content:flex-start;--ui-control:var(--ui-control-sm);--ui-control-pad:8px}.muted-block{opacity:.55}
.inline-filter{min-width:130px}.overrides-reason,.template-reason{margin-top:12px}
.overrides-reason textarea,.template-reason textarea{min-height:56px}

/* 设置页：输入框不在 label 里，补上与 label 内输入框一致的样式 */
.settings-field input,.settings-field select{width:100%;font-weight:400}.settings-layout .inline-controls{flex-wrap:wrap}
.settings-layout .inline-controls select{min-width:0;flex:1 1 180px}
.inline-filter select{width:100%}

/* 正在使用的交路表 */
.inuse-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ui-gap-card);margin-bottom:var(--ui-gap-section)}.inuse-card{background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:var(--ui-radius-card);padding:var(--ui-gutter);box-shadow:none;min-width:0}.inuse-card.empty{background:var(--soft);border-style:dashed;box-shadow:none}
.inuse-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.inuse-head h3{margin:0;font-size:var(--fs-lg);color:var(--ui-ink)}
.inuse-plan{font-size:var(--fs-md);font-weight:650;color:var(--ui-ink);margin:10px 0 2px;overflow-wrap:anywhere}
.inuse-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 12px;font-size:var(--fs-body);margin:10px 0 0}
.inuse-facts dt{color:var(--ui-muted)}
.inuse-facts dd{margin:0;color:var(--ui-ink);overflow-wrap:anywhere}
.inuse-actions{display:flex;flex-wrap:wrap;gap:var(--ui-gap-control);margin-top:var(--ui-gap-card)}#dashboard-inuse .inuse-grid{margin-bottom:0}

/* 审计筛选 */
.audit-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;align-items:end}
.audit-filters>label{min-width:0}
.audit-filters input{min-width:0}
.audit-buttons{display:flex;gap:8px;grid-column:1/-1}
.audit-brief{font-size:var(--fs-sm);color:var(--ui-ink);margin-bottom:4px;overflow-wrap:anywhere}
.audit-table .review-block{max-height:260px;overflow:auto;font-size:var(--fs-sm)}
.audit-table td{vertical-align:top;line-height:22px}.audit-table .advanced-json{margin-top:0;border-top:0;padding-top:0}.audit-table .advanced-json summary{line-height:22px}/* 交路时间线（原先写在脚本里的行内样式） */
.tl-wrap{overflow-x:auto}
.tl-chart{--tl-label:158px;min-width:900px;padding-top:22px}
.tl-axis{height:22px;position:relative;border-bottom:1px solid #dfe7eb;margin-left:var(--tl-label)}
.tl-tick{position:absolute;left:calc(var(--at) * 1%);transform:translateX(-50%);top:3px}
.tl-line{height:30px;position:relative;border-bottom:1px solid #f0f3f5}
.tl-label{position:absolute;left:0;width:calc(var(--tl-label) - 8px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-meta);color:#536b79;top:8px}
.tl-bar{position:absolute;left:calc(var(--tl-label) + var(--l) * (100% - var(--tl-label)) / 100);width:calc(var(--w) * (100% - var(--tl-label)) / 100);top:7px;height:15px;border-radius:4px;background:#46aaa4;min-width:7px}
.tl-bar.night{background:#6279a7}
.tl-bar.peak{background:#bf9b5a}

@media(max-width:900px){
  .audit-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:820px){
  .inuse-grid{grid-template-columns:1fr}
}

/* 手机（车队长常用）：触控尺寸、16px 输入、表格改成“标签：值”卡片 */
@media(max-width:620px){
  .role-tag{display:none}
  .audit-filters{grid-template-columns:1fr}
  .tabs{overflow-x:auto;white-space:nowrap}
  .tab-button{flex:0 0 auto}.plan-list-item{min-height:64px}
  .plan-list-item strong{font-size:var(--fs-body)}
  .panel-heading{flex-wrap:wrap}
  .table-wrap .stack-table{min-width:0}
  .stack-table thead{display:none}
  .stack-table,.stack-table tbody,.stack-table tr,.stack-table td{display:block;width:100%}
  .stack-table tr{border:1px solid var(--line);border-radius:8px;margin:0 14px 10px;width:auto;padding:6px 12px;background:var(--ui-surface)}
  .stack-table td{border:0!important;padding:6px 0!important;font-size:var(--fs-body)}
  .stack-table td[data-label]::before{content:attr(data-label);display:block;font-size:var(--fs-meta);color:var(--ui-muted);margin-bottom:2px}
  .stack-table td.empty-cell{padding:20px 0!important}
  .stack-table td.empty-cell::before{display:none}
  .modal{padding:16px}
  .toast-region{left:12px;right:12px;bottom:12px;max-width:none}
}
@media(min-width:621px){
  /* 字号放大后，窄列（时长、里程）不许一个字一行地断开；宽屏放不下时表格自己横向滚动 */
  .duty-table th{white-space:nowrap}
  .audit-table{min-width:880px!important}
  .audit-table td:not(:last-child){white-space:nowrap}.audit-table td:last-child{min-width:12rem}.audit-table .review-block{display:block;white-space:pre;overflow:auto;contain:inline-size;width:100%;margin:0}.audit-table .audit-extra td{padding-top:0;white-space:normal}.audit-table .audit-extra:hover td{background:transparent}
}
.segmented button{white-space:nowrap}
@media(max-width:620px){
  .diagram-toolbar{flex-wrap:wrap}
  .diagram-search{max-width:none;flex:1 1 140px}
}

/* 发布与统计不完整提示 */
.stat-banner{border:1px solid #f0cf94;border-left:4px solid var(--warning);background:#fff6e5;color:#6f4510;border-radius:8px;padding:13px 16px;margin-bottom:15px;min-width:0}
.stat-banner strong{display:block;font-size:var(--fs-md);line-height:1.6;overflow-wrap:anywhere}
.stat-banner ul{margin:8px 0 0;padding-left:18px;font-size:var(--fs-body);line-height:1.7}
.stat-banner li{overflow-wrap:anywhere}
.stat-banner.compact{padding:9px 12px;margin:10px 0 0}
.stat-banner.compact strong{font-size:var(--fs-body)}
.stat-banner.compact ul{font-size:var(--fs-sm);margin-top:6px}
.plan-action-note{font-size:var(--fs-meta);color:var(--ui-muted);line-height:1.6;margin:8px 0 0;overflow-wrap:anywhere}.plan-action-note+.plan-action-note{margin-top:2px}
.dialog-text{white-space:pre-line;font-size:var(--fs-body);line-height:1.7;color:var(--ui-ink);margin:4px 0 12px;overflow-wrap:anywhere}
@media(max-width:620px){
  .stat-banner{padding:11px 12px}
  .stat-banner strong{font-size:var(--fs-body)}
  .stat-banner ul{padding-left:16px}
}

/* 合规水印：与主站（exam-platform 的 compliance.css）一致的颜色、透明度、旋转与尺寸。
   z-index 24：高于页面内容与顶栏(10)，低于手机端抽屉导航(30)、提示条(50)；对话框在浏览器顶层，永远在它之上。 */
.compliance-watermark-layer{position:fixed;z-index:24;inset:0;display:grid;overflow:hidden;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:205px;align-items:center;justify-items:center;pointer-events:none;user-select:none;-webkit-user-select:none}
.compliance-watermark-layer>span{display:block;color:rgba(126,44,39,.075);font-size:17px;font-weight:850;letter-spacing:.08em;line-height:1.4;text-align:center;white-space:nowrap;transform:rotate(-24deg)}
.compliance-watermark-layer small{display:block;margin-top:3px;color:rgba(126,44,39,.065);font-size:9px;font-weight:700;letter-spacing:.04em}
@media(max-width:760px){
  .compliance-watermark-layer{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:170px}
  .compliance-watermark-layer>span{font-size:13px}
  .compliance-watermark-layer small{font-size:8px}
}
@media(max-width:420px){
  .compliance-watermark-layer{grid-auto-rows:150px;margin:0 -35px}
  .compliance-watermark-layer>span{font-size:12px}
}
@media print{
  .compliance-watermark-layer{position:fixed;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:55mm}
  .compliance-watermark-layer>span{color:rgba(126,44,39,.13);print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .compliance-watermark-layer small{color:rgba(126,44,39,.11)}
}

/* ===== 方案详情的宽度与密集表格 ===== */
/* 方案列表可收起：选中方案后默认收起，详情独占整行；手机宽度下列表本来就在详情上方，不适用 */
.page-heading-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.button[hidden]{display:none}
@media(min-width:821px){
  .results-layout.list-collapsed{grid-template-columns:minmax(0,1fr)}
  .results-layout.list-collapsed .plan-sidebar{display:none}
}
@media(max-width:820px){
  #toggle-plan-list{display:none}
}
.plan-title-row>div:first-child{flex:1 1 300px;min-width:0}
.plan-actions{flex:0 1 auto;justify-content:flex-end}

/* 活动：一条一行 = 类别徽标 + 车次 + 起止时间 + 起点→终点；换行只发生在块与块之间 */
.activity-list{display:grid;gap:1px}
.activity-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:1px 8px;font-size:var(--fs-body);color:var(--ui-ink-soft);line-height:1.55}
.act-badge{display:inline-block;min-width:3.6em;text-align:center;border-radius:4px;padding:0 6px;font-size:var(--fs-meta);font-weight:650;line-height:1.5;background:#e1f2f1;color:#0c6a6e}
.act-standby{background:#e8effa;color:#2a5696}
.act-deadhead{background:#fdefd9;color:#935510}
.act-rest{background:#edf0f2;color:#586873}
.act-walking,.act-transfer,.act-other{background:#f0ebf7;color:#5a4784}
.act-train{font-weight:650;color:#3d5766}
.act-time,.act-route{white-space:nowrap}
.act-time{font-variant-numeric:tabular-nums}
.act-route{color:#566d7a}
.activity-list.folded .act-extra{display:none}
.act-toggle{margin-top:3px;padding:3px 0;font-size:var(--fs-sm)}

/* 司机交路表：除“驾驶与接续”和“说明”外，其余列按内容收窄，活动列拿走剩余宽度 */
.duty-wrap{container:duty/inline-size}
.duty-table{border-collapse:collapse;width:100%}
.duty-table :is(.c-id,.c-drive,.c-work,.c-km){white-space:nowrap}
.duty-table .c-notes{overflow-wrap:anywhere}
@media(min-width:621px){
  .duty-table :is(.c-id,.c-time,.c-pick,.c-drive,.c-work,.c-km){width:1%}
  .duty-table .c-notes{width:1%;min-width:112px}
}
.duty-table .time-range,.duty-table .stamp{font-variant-numeric:tabular-nums}
.duty-table .c-drive .subtle,.duty-table .c-km .subtle{white-space:nowrap}

/* 放不下一整行表格时（收起列表前的 1440、1280 等），每条交路改成一张卡片：
   第一行是编号/出退勤/接交车/说明，第二行活动按多列排开，第三行是三项统计。用容器宽度判断，不看视口。 */
@media(min-width:621px){
  @container duty (max-width:1099px){
    .duty-wrap .duty-table,.duty-table tbody{display:block;width:auto;min-width:0}
    .duty-table thead{display:none}
    .duty-table tr{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1.3fr) minmax(0,1.5fr);grid-template-areas:"id time pick notes" "acts acts acts acts" "drive drive work km";gap:8px 18px;margin:0 19px 10px;padding:12px 16px;border:1px solid var(--line);border-radius:8px;background:var(--ui-surface)}
    .duty-wrap .duty-table td{display:block;border:0;padding:0;width:auto;white-space:normal;min-width:0;max-width:none}
    .duty-table .c-id{grid-area:id}
    .duty-table .c-time{grid-area:time}
    .duty-table .c-pick{grid-area:pick}
    .duty-table .c-notes{grid-area:notes}
    .duty-table .c-acts{grid-area:acts;border-top:1px solid var(--ui-line-soft);padding-top:8px}
    .duty-table .c-drive{grid-area:drive}
    .duty-table .c-work{grid-area:work}
    .duty-table .c-km{grid-area:km}
    .duty-table :is(.c-time,.c-pick,.c-notes,.c-drive,.c-work,.c-km)::before{content:attr(data-label);display:block;font-size:var(--fs-meta);color:var(--ui-muted)}
    .duty-table .c-acts .activity-list{display:block;column-width:360px;column-gap:22px}
    .duty-table .c-acts .activity-item{break-inside:avoid;margin-bottom:1px}
    .duty-table :is(.c-drive,.c-work,.c-km)::before{display:inline;margin-right:8px}
    .duty-table :is(.c-drive,.c-work,.c-km) .subtle{display:inline;margin-left:6px}
  }
  @container duty (max-width:820px){
    .duty-table tr{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1.3fr);grid-template-areas:"id time pick" "acts acts acts" "drive work km" "notes notes notes"}
  }
  @container duty (max-width:700px){
    .duty-table tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"id time" "pick notes" "acts acts" "drive work" "km km";margin-left:14px;margin-right:14px}
  }
}

.tl-chart{min-width:520px;padding-right:34px}
.validation-issues{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:8px 14px}
.validation-issues>.validation-issue{margin:0}
.transition-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:8px 14px;margin-top:6px}
.transition-grid>.transition-pair{border:1px solid var(--ui-line-soft);border-radius:7px;padding:9px 12px;background:var(--ui-surface-alt)}
.transition-pair.compact{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.tl-tick{white-space:nowrap}

/* 基础数据（导入改造第 2 步） */
.basedata-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:start}.basedata-version{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:var(--ui-space-4) 0 var(--ui-space-3);font-size:var(--fs-body)}.basedata-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--ui-gap-control);margin:0 0 var(--ui-space-3);--ui-control:var(--ui-control-sm);--ui-control-pad:8px}.basedata-table{table-layout:fixed;--ui-control:var(--ui-control-sm);--ui-control-pad:8px}.basedata-table th,.basedata-table td{padding-left:8px;padding-right:8px}.basedata-table td{vertical-align:top;padding-top:10px;padding-bottom:10px}.basedata-table .c-pair{width:184px}.basedata-table .c-meters{width:96px}.basedata-table .c-kind{width:128px}.basedata-table .c-value{width:184px}.basedata-table .c-through{width:96px;text-align:center}.basedata-table .c-op{width:88px}.basedata-table td.c-pair strong{display:flex;align-items:center;min-height:var(--ui-control);overflow-wrap:anywhere}.basedata-table td>*+*{margin-top:var(--ui-gap-control)}.basedata-pair-edit{display:flex;align-items:center;gap:var(--ui-gap-control)}.basedata-pair-edit .basedata-dash{margin:0}.basedata-through{display:flex;align-items:center;justify-content:center;min-height:var(--ui-control)}.basedata-table .c-op{white-space:normal}.basedata-table .c-op .text-button{white-space:nowrap}.basedata-input{width:100%;min-width:0}.basedata-table select{width:100%;max-width:100%}.basedata-text{display:block;resize:none;overflow:hidden;min-height:var(--ui-control);padding-top:4px;padding-bottom:4px;line-height:1.5}.basedata-evidence{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--ui-gap-control)}.basedata-evidence select{flex:0 0 9rem;width:9rem}.basedata-evidence .basedata-input{flex:1 1 10rem;min-width:10rem}.basedata-missing{background:#fff8ee}
.basedata-deleted td{background:#fff5f5;color:var(--muted)}
.basedata-deleted td:first-child strong{text-decoration:line-through}
.field-error{margin-top:4px;color:var(--ui-danger);font-size:var(--fs-sm);line-height:1.5}.basedata-delete-summary{margin:8px 0 0;color:var(--danger);font-size:var(--fs-body);font-weight:600}
.basedata-dash{display:inline-block;margin:0;color:var(--ui-muted)}.basedata-reason-label{display:block;margin:var(--ui-gap-field) 0 var(--ui-gap-label);font-weight:600;font-size:var(--fs-sm);color:var(--ui-ink-soft)}.basedata-reason{display:block;width:100%}.basedata-fixed{margin:4px 0 12px;padding-left:20px;color:var(--muted);font-size:var(--fs-body)}
.basedata-prefixes{display:grid;gap:var(--ui-gap-control);--ui-control:var(--ui-control-sm);--ui-control-pad:8px}.basedata-prefix{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-gap-control)}.basedata-prefix .basedata-input:first-child{width:88px}.basedata-prefix select{width:14rem}.basedata-prefix .basedata-input:nth-child(3){width:18rem;max-width:100%}.basedata-history-list{margin:0;padding-left:20px;display:grid;gap:var(--ui-space-3);font-size:var(--fs-body)}.basedata-history-list p{margin:2px 0 0;color:var(--muted)}
.issue-action{margin-top:8px}
@media (max-width:900px){.basedata-layout{grid-template-columns:minmax(0,1fr)}}
.basedata-from-latest,.basedata-from-latest td{background:#f2f8ff}
.basedata-conflict-row,.basedata-conflict-row td{background:#fff1f0}
.basedata-conflict-list{margin:6px 0 8px 18px;padding:0}

/* ===== 导入检查页（工作台“导入数据核对”）===== */
.import-check{display:grid;gap:14px;margin:12px 0 6px}
.check-card{display:grid;gap:14px;background:var(--ui-surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}
.check-diagram{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.check-diagram-name{font-size:var(--fs-title);color:var(--navy)}
.check-diagram-facts{font-size:var(--fs-body);color:var(--ui-ink)}
.check-diagram-files{flex-basis:100%;color:var(--muted);font-size:var(--fs-meta)}
.check-counts{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px 30px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.check-count{display:inline-flex;align-items:baseline;gap:7px;font-size:var(--fs-body);color:#455967}
.check-count strong{font-size:var(--fs-2xl);line-height:1}
.check-count.danger .check-mark,.check-count.danger strong{color:var(--danger)}
.check-count.warning .check-mark,.check-count.warning strong{color:var(--warning)}
.check-count.info .check-mark,.check-count.info strong{color:var(--blue)}
.check-next{display:grid;justify-items:start;gap:var(--ui-gap-control);text-align:left}
.check-next-button{font-size:var(--fs-md);padding:8px 28px;white-space:normal;max-width:100%}.check-hint{max-width:760px;margin:0;color:var(--muted);font-size:var(--fs-sm);line-height:1.6}
.check-pending{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:10px;font-size:var(--fs-sm);color:var(--warning)}
.check-revoked{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left}
.check-revoked-list{margin:0;padding-left:1.2em;font-size:var(--fs-sm)}
.check-confirm-entry{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--ui-space-3);text-align:left}
.check-legacy{margin-top:0}
.check-legacy p{margin:6px 0 10px}
.check-group{display:grid;gap:9px}
.check-group-title{display:flex;align-items:center;gap:9px;margin:0;font-size:var(--fs-md);font-weight:700;color:var(--ui-ink)}
summary.check-group-title{cursor:pointer;list-style:none}
summary.check-group-title::-webkit-details-marker{display:none}
summary.check-group-title::after{content:"收起";margin-left:auto;font-size:var(--fs-sm);font-weight:600;color:var(--teal-dark)}
details.check-auto:not([open]) summary.check-group-title::after{content:"展开"}
.check-auto>.check-group-title{margin-bottom:9px}
.check-letter{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--navy);color:#fff;font-size:var(--fs-sm);font-weight:700;flex:none}
.check-auto-list{list-style:none;margin:0;padding:0;display:grid;gap:2px;background:var(--ui-surface);border:1px solid var(--line);border-radius:8px}
.check-auto-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:10px 14px;border-bottom:1px solid var(--ui-line-soft)}
.check-auto-item:last-child{border-bottom:0}
.check-tick{color:var(--success);font-weight:800}
.check-auto-body strong{font-size:var(--fs-body);color:#2f4a5a}
.check-auto-body p{margin:3px 0 0;font-size:var(--fs-sm);line-height:1.6;color:var(--ui-ink-soft);overflow-wrap:anywhere}
.check-item{display:grid;gap:7px;background:#fff;border:1px solid var(--line);border-left:4px solid #b9c6ce;border-radius:8px;padding:12px 14px}
.check-item.danger{border-left-color:var(--danger);background:#fffafa}
.check-item.warning{border-left-color:var(--warning)}
.check-item.info{border-left-color:var(--blue)}
.check-item-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.check-item-head strong{font-size:var(--fs-title);color:#2d4352}
.check-msg{margin:0;font-size:var(--fs-body);line-height:1.65;color:var(--ui-ink);overflow-wrap:anywhere}
.check-fix{margin:0;font-size:var(--fs-sm);line-height:1.6;color:#587383;background:var(--soft);border-radius:6px;padding:8px 10px;overflow-wrap:anywhere}
.check-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:var(--fs-sm);color:var(--success);font-weight:600}
.check-action{justify-self:start}
.issue-fix{margin:4px 0;color:#587383;font-size:var(--fs-sm);line-height:1.5}
.tech-details{margin-top:2px}
.tech-details>summary{cursor:pointer;color:var(--ui-muted);font-size:var(--fs-sm);font-weight:600}
.tech-details>summary:hover{color:var(--teal-dark)}
.tech-row{margin:6px 0 0;padding:7px 9px;background:var(--soft);border-radius:6px;overflow-wrap:anywhere}
.tech-row code{font:var(--fs-sm)/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;color:#2f4a5a}
.tech-row p{margin:3px 0 0;font-size:var(--fs-sm);color:#587383;line-height:1.5}
.tech-row small{display:block;margin-top:3px;color:var(--muted)}
.tech-item{margin:10px 0 0}
.tech-item>strong{font-size:var(--fs-sm);color:#2f4a5a}
.tech-heading{margin:16px 0 8px;font-size:var(--fs-body);color:var(--ui-ink)}
.check-technical{margin-top:14px}
@media(max-width:620px){
  .check-card{padding:14px}
  .check-counts{justify-content:flex-start}
  .check-next-button{width:100%}
  .check-item{padding:11px 12px}
  .check-action{justify-self:stretch}
}

/* ===== 本批站内确认编辑器（备车、外放、首轮接车）===== */
.confirm-modal{width:min(1240px,calc(100% - 24px));max-width:none;max-height:calc(100vh - 24px);padding:20px 22px}
.confirm-modal[open]{display:flex;flex-direction:column}
.confirm-modal .modal-heading{flex:none;margin-bottom:8px}
.cf-body{flex:1;min-height:0;overflow-y:auto;padding-right:2px}
.cf-body.is-busy{opacity:.6;pointer-events:none}
.confirm-modal label{margin:0}
.cf-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px}
.cf-diagram{max-width:320px;margin:0 0 10px}
.cf-tabs{margin:6px 0 8px}
.cf-files{margin:0 0 10px}
.cf-rule{margin:0 0 12px;padding:9px 12px;background:var(--soft);border:1px solid var(--line);border-radius:7px;color:#587383;font-size:var(--fs-sm);line-height:1.65}
.cf-invalid{margin:0 0 12px}
.cf-invalid-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:8px}
.cf-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:14px}
.cf-table{width:100%;border-collapse:collapse;text-align:left}
.cf-table th{font-size:var(--fs-sm);font-weight:650;color:var(--ui-muted);background:var(--ui-surface-alt);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.cf-table td{font-size:var(--fs-body);color:var(--ui-ink);padding:11px 12px;border-bottom:1px solid var(--ui-line-soft);vertical-align:top;overflow-wrap:anywhere}
.cf-table tbody tr:last-child td{border-bottom:0}
.cf-row.done td{background:#f6fbf9}
.cf-row.gone td{background:#f7f8f9;color:var(--muted)}
.cf-status{display:grid;justify-items:start;gap:4px;margin-top:6px}
.cf-main{line-height:1.5}
.cf-check{margin-top:4px;font-size:var(--fs-sm);color:#587383;line-height:1.5}
.cf-problem-list{margin:0;padding-left:16px;color:var(--danger);font-size:var(--fs-sm);line-height:1.5}
.cf-actions{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start}
.cf-actions .field-error{flex-basis:100%}
.cf-source summary{cursor:pointer;color:var(--teal-dark);font-size:var(--fs-sm);font-weight:650}
.cf-source p{margin:6px 0 0;font-size:var(--fs-sm);color:#587383;line-height:1.6}
.cf-edit-row td{background:var(--ui-primary-soft);padding:14px}
.cf-panel{display:grid;gap:10px;padding:2px 0}
.cf-panel-title{font-size:var(--fs-body);color:var(--ui-ink)}
.cf-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:10px 12px}
.cf-field input,.cf-reason textarea{width:100%}
.cf-panel-actions{display:flex;flex-wrap:wrap;gap:8px}
.cf-block{display:grid;gap:10px;margin:0 0 14px}
.cf-block h3{margin:0;font-size:var(--fs-md);color:var(--ui-ink)}
.cf-card{display:grid;gap:7px;padding:12px 14px;background:var(--ui-surface);border:1px solid var(--line);border-radius:8px;justify-items:start}
.cf-card.done{background:var(--ui-success-soft)}
.cf-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.cf-card .cf-panel{width:100%}
.cf-text{margin:0;font-size:var(--fs-body);line-height:1.7;color:var(--ui-ink);overflow-wrap:anywhere}
.cf-startup{margin-bottom:10px}
@media(max-width:900px){
  .cf-wrap{border:0;overflow:visible}
  .cf-table thead{display:none}
  .cf-table,.cf-table tbody,.cf-table tr,.cf-table td{display:block;width:100%}
  .cf-table tr{border:1px solid var(--line);border-radius:8px;margin:0 0 10px;padding:6px 12px;background:var(--ui-surface)}
  .cf-table td{border:0;padding:6px 0}
  .cf-table td[data-label]::before{content:attr(data-label);display:block;font-size:var(--fs-meta);color:var(--ui-muted);margin-bottom:2px}
    .cf-table td.cf-actions::before{flex-basis:100%}
  .cf-edit-row{padding:0!important}
  .cf-edit-row td{padding:10px 0}
}
@media(max-width:620px){
  .confirm-modal{width:100%;height:100%;max-height:100%;margin:0;border-radius:0;padding:14px 12px}
  .confirm-modal .modal-heading h2{font-size:var(--fs-lg)}
  .cf-fields{grid-template-columns:1fr}
  .cf-actions .button{flex:1 1 auto}
  .cf-panel-actions .button{flex:1 1 auto}
  .cf-card .button{width:100%}
}

/* ===== 界面优化（B2）：补充规则 ===== */
.table-secondary+.text-button{margin:4px 0 0}
.table-wrap td .text-button{padding-left:0;padding-right:0}
.panel-heading>.batch-controls{min-width:0;max-width:100%}
.panel>.tabs:first-child{margin-top:0}
@media(max-width:620px){
  .basedata-table :is(.c-pair,.c-meters,.c-kind,.c-value,.c-through,.c-evidence,.c-op){width:100%;text-align:left}
  .basedata-through{justify-content:flex-start}
  .basedata-evidence select{flex:0 0 46%;width:46%}
  .page-heading{flex-direction:column;align-items:flex-start;gap:var(--ui-space-3)}
  .page-heading>.button{margin-top:0}
}
.form-actions.pager-bar{align-items:center}
.panel-heading>.text-button{padding:0;flex:none}
@media(max-width:620px){
  .form-actions>.muted:not(:empty){flex:1 1 100%}
  .settings-layout .inline-controls select{flex:1 1 100%}
}
.form-actions.pager-bar{margin-top:0}
.form-actions.pager-bar{margin-bottom:var(--ui-space-3)}
.plan-sidebar{padding:var(--ui-gutter)}
.plan-list-tags{gap:var(--ui-space-2)}
@media(max-width:620px){
  .plan-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-content:stretch}
  .plan-actions .button{padding:0 8px}
  .overrides-reason textarea,.template-reason textarea{min-height:100px}
}
/* 站间距表：1600px 以上一行一段，七列自动按内容分宽（区间列按最长站名、不折行，依据列拿走剩下的宽度）；
   窄一点的窗口（1024、1280、1440 带侧栏）改成每段一张卡片，三行：区间与操作 / 距离、类型、数值、勾选 / 依据，
   不横向滚动、站名不折行、依据说明占满整行；620px 以下是手机的“标签：值”卡片 */
@media(min-width:1600px){
  .table-wrap .basedata-table{min-width:1096px;table-layout:auto}
  .basedata-table .c-pair{width:1%;white-space:nowrap}
  .basedata-table td.c-pair strong{white-space:nowrap;overflow-wrap:normal}
  .basedata-pair-edit .basedata-input{width:9rem}
  .basedata-evidence select{flex:0 0 9rem}
  .basedata-evidence .basedata-input{flex:1 1 16rem;min-width:16rem}
}
@media(min-width:621px) and (max-width:1599px){
  .table-wrap .basedata-table{min-width:0;table-layout:auto}
  .basedata-table,.basedata-table tbody{display:block;width:100%}
  .basedata-table thead{display:none}
  .basedata-table tr{display:grid;grid-template-columns:96px 128px minmax(0,1fr) 96px;grid-template-areas:"pair pair pair op" "meters kind value through" "ev ev ev ev";gap:10px 16px;padding:14px var(--ui-gutter);border-bottom:1px solid var(--ui-line-soft)}
  .table-wrap .basedata-table td{display:block;width:auto;min-width:0;padding:0;border:0}
  .basedata-table td.c-pair{grid-area:pair}
  .basedata-table td.c-pair strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:var(--ui-control)}
  .basedata-table td.c-op{grid-area:op;text-align:right}
  .basedata-table td.c-meters{grid-area:meters}
  .basedata-table td.c-kind{grid-area:kind}
  .basedata-table td.c-value{grid-area:value}
  .basedata-table td.c-through{grid-area:through;text-align:left}
  .basedata-table td.c-evidence{grid-area:ev}
  .basedata-table td.empty-cell{grid-area:1/1/2/-1}
  .basedata-table td[data-label]::before{content:attr(data-label);display:block;margin-bottom:4px;font-size:var(--fs-meta);color:var(--ui-muted)}
  .basedata-table td.c-pair::before,.basedata-table td.c-op::before{display:none}
  .basedata-through{justify-content:flex-start}
}

/* 终审后补：网格里的面板不再带自己的下外边距（和网格间距叠成 32），提示条在网格里不再自带上外边距 */
:is(.settings-layout,.template-layout,.results-layout,.workbench-grid,.dashboard-bottom,.basedata-layout)>.panel,.workbench-side>.panel{margin-bottom:0}
.form-grid>.callout,.import-check>.callout{margin:0}
.tip-block p,.metric-label,.metric-foot,.switch-row small,.settings-field small,.check-diagram strong{text-wrap:pretty}
@media(max-width:620px){
  .metric-grid{grid-template-columns:minmax(0,1fr)}
  .metric-card{min-height:0}
  .metric-label{padding-right:34px}
}
.run-options .business-fields{margin-top:0}
