:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17202a;background:#f5f7f9;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled,select:disabled{cursor:not-allowed;opacity:.58}.app-shell{min-height:100vh;padding:18px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 4px 18px}.topbar h1,.panel h2,.model-editor h3,.plan-output h3{margin:0}.topbar h1{font-size:clamp(1.55rem,2.2vw,2.2rem);line-height:1.08}.eyebrow{margin:0 0 4px;color:#5c6f7f;font-size:.76rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.topbar-actions,.panel-actions,.folder-toolbar,.inline-field,.editor-title,.plan-title,.execution-controls,.job-heading,.external-link{display:flex;align-items:center;gap:10px}.status-pill,.count-badge{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 12px;border:1px solid #cfd8df;border-radius:999px;background:#fff;color:#526272;font-weight:700;white-space:nowrap}.status-pill.ready{border-color:#9ac9ae;color:#196b3b;background:#eef8f2}.primary-button,.ghost-button,.icon-button,.folder-toolbar button,.inline-field button,.mini-button,.add-discipline button,.discipline-bar>button,.segmented-control button,.add-model-slot button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;border-radius:6px;border:1px solid #b9c5ce;background:#fff;color:#20303d;font-weight:700}.primary-button{border-color:#176b87;background:#176b87;color:#fff;padding:0 14px}.ghost-button,.folder-toolbar button,.inline-field button{padding:0 12px}.ghost-button.danger,.icon-button.danger{border-color:#d8a6a1;color:#9f2f25}.icon-button{width:38px;padding:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.status-strip{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:54px;padding:10px 14px;border:1px solid #d7e0e7;border-radius:8px;background:#fff}.status-strip div{display:grid;gap:3px}.status-strip span{color:#617284;font-size:.9rem}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.workspace-grid{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(460px,1.35fr);gap:16px;margin-top:16px;align-items:start}.panel{border:1px solid #d7e0e7;border-radius:8px;background:#fff;padding:16px;min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.browser-panel,.links-panel,.plan-panel{min-height:360px}.field-stack,.form-grid{display:grid;gap:12px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:grid;gap:6px;color:#536574;font-size:.86rem;font-weight:700}input,select{width:100%;min-height:38px;border:1px solid #bdc8d1;border-radius:6px;padding:0 10px;background:#fff;color:#17202a}.inline-field{align-items:stretch}.inline-field input{min-width:0}.folder-toolbar{margin:14px 0}.folder-list{display:grid;gap:6px;max-height:410px;overflow:auto;padding-right:3px}.folder-list button,.content-row button:first-child{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;width:100%;min-height:36px;border:1px solid #e2e8ed;border-radius:6px;background:#f9fbfc;color:#21313f;text-align:left;padding:8px}.folder-list span,.content-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.mini-button{min-height:36px;padding:0 10px;background:#f3f0e8}.target-grid,.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.target-grid>div,.summary-grid>div{display:grid;gap:4px;min-height:76px;padding:10px;border:1px solid #e0e7ec;border-radius:6px;background:#f8fafb}.meta-label{color:#627485;font-size:.76rem;font-weight:700;text-transform:uppercase}code{overflow:hidden;color:#6c7c8a;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.discipline-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0}.discipline-bar>button{min-width:54px;padding:0 10px}.discipline-bar>button.active{border-color:#176b87;background:#e8f4f7;color:#0f5770}.add-discipline{display:grid;grid-template-columns:74px 38px;gap:6px}.model-editor{border-top:1px solid #e1e8ed;padding-top:14px}.editor-title{justify-content:space-between;margin-bottom:12px}.switch{display:inline-flex;grid-template-columns:auto;align-items:center;gap:8px;color:#293846;white-space:nowrap}.switch input{width:17px;min-height:17px;accent-color:#176b87}.field-switch{align-content:end;min-height:64px}.model-schedule{display:grid;gap:12px;margin-top:14px}.model-schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.model-schedule-toolbar>div:first-child{display:grid;gap:4px}.add-model-slot{display:grid;grid-template-columns:110px 120px 38px;gap:6px}.model-schedule-scroll{overflow:auto;border:1px solid #d9e3ea;border-radius:8px}.model-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0}.model-table th,.model-table td{min-width:92px;border-right:1px solid #e0e7ec;border-bottom:1px solid #e0e7ec;padding:6px;vertical-align:middle}.model-table th{background:#f7fafb;color:#425467;font-size:.76rem;font-weight:800;text-align:left}.model-table th:first-child,.model-table td:first-child,.model-table th:nth-child(12),.model-table td:nth-child(12){min-width:58px;text-align:center}.model-table th:nth-child(6),.model-table td:nth-child(6){min-width:68px}.model-table th:nth-child(9),.model-table td:nth-child(9),.model-table th:nth-child(10),.model-table td:nth-child(10){min-width:150px}.model-table input{min-width:0;min-height:34px}.model-table .switch{justify-content:center}.model-table .selected-row td{background:#f1f8fa}.row-actions{display:flex;align-items:center;gap:6px}.selected-model-summary{display:flex;align-items:center;gap:10px;min-height:42px;padding:9px 10px;border:1px solid #e0e7ec;border-radius:6px;background:#f8fafb;color:#526272;font-size:.86rem}.selected-model-summary strong{color:#20303d}.link-matrix-scroll{overflow:auto;max-height:310px;border:1px solid #d9e3ea;border-radius:8px}.link-matrix{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0}.link-matrix th,.link-matrix td{min-width:96px;height:48px;border-right:1px solid #e0e7ec;border-bottom:1px solid #e0e7ec;padding:6px;text-align:center;vertical-align:middle}.link-matrix th{background:#f7fafb;color:#425467;font-size:.78rem;font-weight:800}.link-matrix thead th{position:sticky;top:0;z-index:1}.link-matrix tbody th{position:sticky;left:0;z-index:1;display:grid;gap:2px;min-width:118px;text-align:left}.link-matrix tbody th span,.link-matrix tbody th small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-matrix tbody th small{color:#6b7b88;font-size:.72rem;font-weight:600}.matrix-corner{left:0;z-index:2;min-width:118px}.self-cell{background:#f2f5f7;color:#91a0ad;font-weight:800}.link-toggle{width:100%;min-height:34px;padding:0 8px;border:1px solid #c8d3dc;border-radius:6px;background:#fff;color:#485a69;font-size:.76rem;font-weight:800}.link-toggle.row-to-column,.link-toggle.column-to-row{border-color:#95c6d8;background:#e8f4f7;color:#0f5770}.link-toggle.both{border-color:#9ac9ae;background:#eef8f2;color:#196b3b}.matrix-legend,.link-detail-list{display:grid;gap:8px;margin-top:10px}.matrix-legend{display:flex;flex-wrap:wrap;align-items:center;color:#637485;font-size:.82rem;font-weight:700}.matrix-legend span{display:inline-flex;align-items:center;gap:6px}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:999px;border:1px solid #b7c5cf;background:#fff}.legend-dot.one{border-color:#95c6d8;background:#e8f4f7}.legend-dot.both{border-color:#9ac9ae;background:#eef8f2}.link-detail-list{max-height:260px;overflow:auto}.link-row{display:grid;grid-template-columns:minmax(95px,.7fr) minmax(130px,1fr) minmax(115px,.9fr) auto;gap:8px;align-items:center;min-height:42px;padding:8px;border:1px solid #e0e7ec;border-radius:6px;background:#fbfcfd}.link-row strong{overflow:hidden;color:#293846;font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.link-row input,.link-row select{min-height:34px}.summary-grid{grid-template-columns:repeat(4,minmax(70px,1fr))}.summary-grid>div{min-height:66px}.summary-grid strong{font-size:1.3rem}.summary-grid span{color:#687887;font-size:.84rem}.execution-controls{justify-content:space-between;align-items:stretch;margin:14px 0;padding:10px;border:1px solid #dce5eb;border-radius:8px;background:#f8fafb}.execution-mode-block{display:flex;align-items:center;gap:10px;min-width:0}.segmented-control{display:inline-grid;grid-template-columns:repeat(3,minmax(92px,1fr));gap:4px;min-width:min(100%,340px);padding:4px;border:1px solid #cbd6de;border-radius:8px;background:#fff}.segmented-control button{min-height:34px;padding:0 10px;border-color:transparent;background:transparent;color:#536574;white-space:nowrap}.segmented-control button.active{border-color:#176b87;background:#e8f4f7;color:#0f5770}.execution-mode-note{color:#687887;font-size:.82rem;font-weight:800}.job-panel{display:grid;gap:10px;margin-bottom:14px;padding:12px;border:1px solid #dce5eb;border-radius:8px;background:#fbfcfd}.job-heading{justify-content:space-between}.job-heading>div{display:flex;align-items:center;gap:8px;min-width:0}.job-heading strong{overflow:hidden;color:#293846;font-size:.88rem;text-overflow:ellipsis;white-space:nowrap}.job-status{border-radius:999px;padding:3px 8px;background:#eef2f5;color:#516373;font-size:.76rem;font-weight:800;text-transform:uppercase}.job-status.succeeded{background:#eef8f2;color:#196b3b}.job-status.failed,.job-status.rejected{background:#fff0ee;color:#9f2f25}.job-meta{display:flex;flex-wrap:wrap;gap:8px;color:#637485;font-size:.8rem;font-weight:700}.job-meta span{overflow:hidden;max-width:100%;border-radius:999px;background:#eef2f5;padding:3px 8px;text-overflow:ellipsis;white-space:nowrap}.timeline-list,.log-list{display:grid;gap:6px;max-height:220px;overflow:auto}.timeline-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:8px;align-items:start;padding:8px;border:1px solid #e0e7ec;border-radius:6px;background:#fff}.timeline-icon{display:inline-flex;align-items:center;justify-content:center;color:#6b7b88}.timeline-row.succeeded .timeline-icon{color:#2f9360}.timeline-row.failed .timeline-icon,.timeline-row.rejected .timeline-icon{color:#b23a31}.timeline-row.warning .timeline-icon,.timeline-row.skipped .timeline-icon{color:#b2701e}.timeline-row strong{color:#293846;font-size:.86rem}.timeline-row p{margin:2px 0 0;color:#647687;font-size:.82rem}.timeline-row time,.log-row time{color:#758694;font-size:.76rem;font-weight:700;white-space:nowrap}.log-list{max-height:150px}.log-row{display:grid;grid-template-columns:74px 58px minmax(0,1fr);gap:8px;align-items:start;min-height:30px;padding:6px 8px;border-radius:6px;background:#f4f7f9}.log-row span{color:#536574;font-size:.72rem;font-weight:800;text-transform:uppercase}.log-row.warning{background:#fff7ea}.log-row.error{background:#fff0ee}.log-row p{margin:0;color:#293846;font-size:.82rem;overflow-wrap:anywhere}.plan-output{display:grid;gap:10px}.plan-title{justify-content:space-between;padding-top:4px}.plan-title span{border-radius:999px;background:#f3f0e8;padding:4px 9px;color:#6e5a22;font-size:.8rem;font-weight:700}.warning-line{margin:0;border-left:3px solid #ce8a2a;padding:8px 10px;background:#fff7ea;color:#6d4a16}.ready-line{margin:0;border-left:3px solid #2f9360;padding:8px 10px;background:#eef8f2;color:#196b3b;font-weight:700}.step-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.step-list li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;padding:10px;border:1px solid #e0e7ec;border-radius:6px}.step-list li>span{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:#e8f4f7;color:#0f5770;font-weight:800}.step-list p{margin:3px 0 0;color:#647687}.external-link{color:#176b87;font-weight:800;text-decoration:none}.empty-state{display:grid;place-items:center;gap:8px;min-height:140px;color:#6a7b89;border:1px dashed #c7d2da;border-radius:8px;background:#fafbfc}.empty-state.compact{min-height:74px}@media (max-width: 1180px){.workspace-grid{grid-template-columns:1fr}.target-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){.app-shell{padding:10px}.topbar,.topbar-actions{align-items:stretch;flex-direction:column}.form-grid,.target-grid,.summary-grid,.model-schedule-toolbar,.add-model-slot,.link-row,.execution-controls,.execution-mode-block,.timeline-row,.log-row{grid-template-columns:1fr}.execution-controls,.execution-mode-block,.model-schedule-toolbar,.selected-model-summary{align-items:stretch;flex-direction:column}.segmented-control{grid-template-columns:1fr}}
