:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172027;background:#eef2f4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:1024px;min-height:100vh;background:#eef2f4}button,input{font:inherit}.app-shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}.site-login-shell{display:grid;min-height:100vh;place-items:center;padding:28px;background:#eef2f4}.site-login-box{width:min(460px,100%);padding:26px;border:1px solid #d9e2e6;border-radius:8px;background:#fff;box-shadow:0 18px 48px #12202824}.site-login-head{display:flex;align-items:center;gap:14px;margin-bottom:24px}.site-login-head h1{margin:4px 0 0;color:#172027;font-size:24px}.sidebar{display:flex;flex-direction:column;gap:24px;padding:28px 20px;border-right:1px solid #d9e2e6;background:#f8fafb}.brand,.status-panel{display:flex;align-items:center;gap:14px}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:8px;background:#173640;color:#fff;font-weight:800;letter-spacing:0}.brand h1,.brand p,.topbar h2,.topbar p,.panel h3,.panel p{margin:0}.brand h1{font-size:20px}.brand p,.status-panel small,.hint,.empty,.current-step{color:#66767e;font-size:13px}.status-panel{padding:14px;border:1px solid #dae3e7;border-radius:8px;background:#fff}.status-panel strong,.status-panel small{display:block}.status-dot{width:10px;height:10px;border-radius:50%;background:#d97706}.status-dot.ok{background:#0f766e}.side-list{display:flex;flex-direction:column;gap:8px}.sidebar-logout{margin-top:auto;width:100%}.side-list button{min-height:42px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:#46555d;text-align:left;cursor:pointer}.side-list button.active{background:#e4ecef;color:#132c34;font-weight:700}.content{padding:28px;overflow:auto}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}.eyebrow{color:#60727b;font-size:13px;font-weight:700}.topbar h2{margin-top:4px;font-size:28px;letter-spacing:0}.actions,.inline-field{display:flex;gap:10px;align-items:center}.actions{flex-wrap:wrap;justify-content:flex-end}.language-toggle{display:inline-grid;grid-template-columns:1fr 1fr;min-width:148px;padding:4px;border:1px solid #d2dde1;border-radius:8px;background:#f1f5f7}.language-toggle button{min-height:32px;padding:0 10px;border:0;border-radius:6px;background:transparent;color:#4f6169;cursor:pointer}.language-toggle button.active{background:#fff;color:#172027;font-weight:700;box-shadow:0 1px 2px #1220281f}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:0 16px;border-radius:8px;border:1px solid transparent;cursor:pointer}.primary{background:#0f766e;color:#fff}.secondary{background:#fff;color:#21323b;border-color:#cfd9dd}.compact{min-height:32px;padding:0 8px}button:disabled,input:disabled{cursor:not-allowed;opacity:.55}.grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-bottom:16px}.panel{min-width:0;padding:18px;border:1px solid #d9e2e6;border-radius:8px;background:#fff}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}.panel h3{font-size:17px}.field{display:grid;gap:7px;margin-bottom:13px;color:#52636b;font-size:13px;font-weight:700}.field input,.inline-field input{width:100%;min-width:0}input{min-height:38px;padding:0 11px;border:1px solid #ccd7dc;border-radius:8px;background:#fbfcfd;color:#18242a}.two-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px}.segmented{display:grid;grid-template-columns:1fr 1fr;padding:4px;border:1px solid #d2dde1;border-radius:8px;background:#f1f5f7}.segmented button{min-height:34px;border:0;border-radius:6px;background:transparent;color:#4f6169;cursor:pointer}.segmented button.active{background:#fff;color:#172027;box-shadow:0 1px 2px #1220281f}.check-row{display:flex;align-items:center;gap:9px;margin-bottom:13px;color:#52636b;font-size:13px;font-weight:800}.check-row input{width:16px;min-height:16px;height:16px;margin:0;accent-color:#0f766e}.signing-form{margin-top:16px}.pill{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;background:#edf2f4;color:#52636b;font-size:12px;font-weight:800}.pill.good,.pill.success{background:#dff3ee;color:#0f766e}.pill.bad,.pill.failed{background:#fde8e8;color:#b91c1c}.pill.running{background:#e1eefc;color:#1d4f91}.kv{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px 12px;align-items:start;font-size:13px}.compact-kv{grid-template-columns:100px minmax(0,1fr)}.kv span{color:#6b7b82}.kv strong{min-width:0;overflow-wrap:anywhere;color:#172027;font-weight:700}.embedded-info{margin-top:18px;padding-top:16px;border-top:1px solid #e1e8eb}.embedded-info h4{margin:0 0 12px;color:#172027;font-size:14px}.warnings{margin:14px 0 0;padding-left:18px;color:#9a4f00;font-size:13px}.run-panel{margin-bottom:24px}.progress-row{display:grid;grid-template-columns:1fr 52px;gap:12px;align-items:center}.progress-track{height:10px;overflow:hidden;border-radius:999px;background:#e3eaed}.progress-fill{height:100%;border-radius:inherit;background:#0f766e;transition:width .18s ease}.progress-fill.failed{background:#b91c1c}.current-step{margin:10px 0 14px}.log-box{height:260px;overflow:auto;padding:12px;border-radius:8px;background:#101820;color:#d6e6ea}.log-box pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.result-bar{display:grid;gap:4px;margin-top:12px;padding:12px;border-radius:8px;font-size:13px}.result-bar.ok{background:#e3f4ef;color:#0f5f59}.result-bar.info{background:#e8f0fb;color:#1d4f8f}.result-bar.bad{background:#fde8e8;color:#991b1b}.button-link{gap:6px;text-decoration:none}.icon-action{width:34px;min-width:34px;padding:0}.button-icon{width:15px;height:15px;flex:0 0 auto;stroke-width:2.3}.btn-icon{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:6px;background:#ffffff2e;font-size:11px;font-weight:900;line-height:1}.secondary .btn-icon,.button-link .btn-icon{background:#edf3f5;color:#36515b}.factory-page{background:#eef2f4}.factory-topbar{align-items:flex-start}.factory-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.metric-cell{display:grid;gap:6px;min-height:86px;padding:16px;border:1px solid #d7e2e6;border-radius:8px;background:#fff}.metric-cell span{color:#62747c;font-size:12px;font-weight:800}.metric-cell strong{color:#172027;font-size:28px;line-height:1}.factory-notice{margin:0 0 14px}.factory-progress,.factory-live-progress{display:grid;gap:8px;min-width:0}.factory-progress{margin-top:8px}.factory-live-progress{margin-bottom:12px}.factory-progress-head{display:flex;justify-content:space-between;gap:12px;align-items:center;color:inherit}.factory-progress-head span,.factory-progress-head strong{min-width:0;overflow-wrap:anywhere}.factory-progress-head strong{font-variant-numeric:tabular-nums}.factory-login{display:grid;min-height:420px;place-items:center}.factory-login-box{width:min(440px,100%);padding:24px;border:1px solid #d9e2e6;border-radius:8px;background:#fff;box-shadow:0 16px 42px #1220281f}.factory-login-head{display:flex;align-items:center;gap:14px;margin-bottom:22px}.factory-login-head h3{margin:4px 0 0;color:#172027;font-size:22px}.factory-login-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#173640;color:#fff}.factory-login-mark .button-icon{width:18px;height:18px}.factory-login-error{margin:4px 0 14px;padding:10px 12px;border:1px solid #f2c9c9;border-radius:8px;background:#fff5f5;color:#991b1b;font-size:13px;font-weight:700}.factory-login-actions{display:flex;justify-content:flex-end}.factory-workspace,.factory-live{min-width:0;padding:18px;border:1px solid #d9e2e6;border-radius:8px;background:#fff}.factory-workspace{margin-bottom:16px}.factory-toolbar{display:grid;grid-template-columns:minmax(280px,420px) auto;justify-content:space-between;gap:16px;align-items:end;margin-bottom:16px}.factory-search{display:grid;gap:7px;color:#52636b;font-size:13px;font-weight:800}.factory-filter{display:inline-grid;grid-auto-flow:column;gap:4px;padding:4px;border:1px solid #d2dde1;border-radius:8px;background:#f1f5f7}.factory-filter button{min-height:34px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:#4f6169;cursor:pointer}.factory-filter button.active{background:#fff;color:#172027;font-weight:800;box-shadow:0 1px 2px #1220281f}.factory-empty{display:grid;gap:6px;min-height:180px;place-content:center;border:1px dashed #cbd8dd;border-radius:8px;background:#f8fafb;color:#60727b;text-align:center}.factory-empty strong{color:#172027;font-size:18px}.factory-table{overflow:hidden;border:1px solid #dce5e8;border-radius:8px}.factory-table-head,.factory-row{display:grid;grid-template-columns:minmax(160px,1.05fr) 120px minmax(150px,.85fr) minmax(210px,1.25fr) 208px;gap:10px;align-items:center}.factory-table-head{min-height:42px;padding:0 14px;background:#f3f7f8;color:#60727b;font-size:12px;font-weight:900}.factory-row{min-height:116px;padding:14px;border-top:1px solid #e1e8eb;background:#fff}.factory-row:hover{background:#fbfcfd}.factory-template-cell,.factory-output-cell,.factory-config-cell{display:grid;gap:5px;min-width:0}.factory-template-cell strong,.factory-output-cell strong{min-width:0;overflow-wrap:anywhere;color:#172027}.factory-template-cell span,.factory-template-cell small,.factory-output-cell span,.factory-config-cell span,.cell-note{min-width:0;overflow-wrap:anywhere;color:#66767e;font-size:12px}.factory-fixed-link{min-width:0;overflow-wrap:anywhere;color:#0a8f45;font-size:12px;font-weight:800;text-decoration:none}.factory-fixed-link:hover{text-decoration:underline}.factory-config-cell span{display:inline-flex;width:fit-content;max-width:100%;min-height:24px;align-items:center;padding:0 8px;border-radius:6px;background:#edf3f5;color:#41545c;font-weight:800}.cell-note{display:block;margin-top:8px}.factory-actions{display:flex;justify-content:flex-end;gap:6px;align-items:center;flex-wrap:wrap}.danger-button{color:#991b1b;border-color:#f2c9c9}.factory-live{margin-bottom:16px}.factory-live .panel-head{margin-bottom:12px}.factory-log{height:220px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:start center;overflow:auto;padding:56px 24px;background:#0e191f7a}.modal-box{width:min(760px,100%);max-height:calc(100vh - 112px);overflow:auto;padding:20px;border:1px solid #d9e2e6;border-radius:8px;background:#fff;box-shadow:0 18px 50px #12202838}.factory-modal{display:grid;gap:18px}.modal-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid #e1e8eb}.modal-head h3{margin:4px 0 0;font-size:20px}.icon-button{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #cfd9dd;border-radius:8px;background:#fff;color:#33454e;font-weight:900;cursor:pointer}.icon-button .button-icon{width:16px;height:16px}.factory-form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 14px}.factory-form-grid .field{margin-bottom:14px}.factory-form-grid .field small{min-width:0;overflow-wrap:anywhere;color:#66767e;font-weight:600}.native-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.file-picker{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;min-height:38px;overflow:hidden;border:1px solid #ccd7dc;border-radius:8px;background:#fbfcfd;color:#18242a;cursor:pointer}.file-picker.disabled{opacity:.7;cursor:not-allowed}.file-picker-button{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border-right:1px solid #ccd7dc;background:#fff;color:#18242a;font-weight:800}.file-picker-name{min-width:0;padding:0 13px;overflow:hidden;color:#52636b;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.compact-field input{max-width:180px}.factory-options{padding:12px 14px;border:1px solid #dde6e9;border-radius:8px;background:#f8fafb}.factory-options .check-row{margin-bottom:0}.modal-actions{display:flex;justify-content:flex-end;gap:10px;align-items:center;padding-top:14px;border-top:1px solid #e1e8eb}@media (max-width: 1180px){.factory-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.factory-toolbar{grid-template-columns:1fr}.factory-table{overflow-x:auto}.factory-table-head,.factory-row{min-width:1040px}}
