*{box-sizing:border-box}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#17202a;background:#eef2f5;font-synthesis:none}body{margin:0;min-width:320px}.app-shell{min-height:100vh;background:#eef2f5}button{font:inherit}button:disabled{cursor:not-allowed;opacity:.45}.topbar{height:78px;background:#101820;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid #26313a}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#e7a91a;color:#101820;font-size:22px;font-weight:900}.brand-title{font-size:15px;letter-spacing:1.2px;font-weight:800}.brand-subtitle{font-size:11px;color:#9ba8b3;margin-top:3px}.machine-state{font-size:11px;font-weight:800;letter-spacing:.8px;display:flex;gap:8px;align-items:center}.state-dot{width:9px;height:9px;background:#42bd75;border-radius:50%;display:inline-block;box-shadow:0 0 0 4px #42bd751f}.content{max-width:1180px;margin:0 auto;padding:32px 24px 40px}.progress-panel,.stage-card{background:#fff;border:1px solid #dce2e7;border-radius:16px;box-shadow:0 6px 20px #1018200d}.progress-panel{padding:24px 28px 20px}.progress-head{display:flex;justify-content:space-between;align-items:center}.eyebrow{color:#7c8994;font-size:10px;font-weight:900;letter-spacing:1.5px}h1,h2,h3,p{margin-top:0}h1{font-size:24px;margin:5px 0 0}h2{font-size:22px;margin:5px 0 6px}.progress-number{font-size:26px;font-weight:900;color:#9a6c00}.progress-line{height:5px;background:#e8ecef;border-radius:10px;margin:20px 0 18px;overflow:hidden}.progress-line>span{height:100%;display:block;background:#d99a12;transition:width .3s ease}.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.step{border:0;background:transparent;text-align:left;display:flex;gap:9px;align-items:center;padding:6px;cursor:pointer;border-radius:10px}.step:hover{background:#f4f6f7}.step-circle{width:28px;height:28px;flex:0 0 28px;border:2px solid #c9d1d7;color:#7b8790;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:900}.step.active .step-circle{border-color:#d99a12;background:#d99a12;color:#fff}.step.done .step-circle{border-color:#3eae70;background:#3eae70;color:#fff}.step-text{display:flex;flex-direction:column;gap:1px}.step-text b{font-size:10px;letter-spacing:.7px}.step-text small{color:#8a959e;font-size:10px}.workspace{margin-top:20px}.stage-card{min-height:500px;padding:30px}.stage-intro{display:flex;align-items:flex-start;gap:15px;padding-bottom:24px;border-bottom:1px solid #e8ecef}.icon-box{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#f6e9c6;color:#936600;font-weight:900;flex:0 0 42px}.stage-intro p,.operation-head p{color:#7d8993;font-size:13px;margin:0}.status-badge{margin-left:auto;background:#f1f3f4;color:#7d8993;padding:7px 10px;border-radius:999px;font-size:9px;font-weight:900;letter-spacing:.8px;white-space:nowrap}.status-badge.complete{background:#e5f5eb;color:#26814f}.check-list{margin-top:20px;display:grid;gap:9px}.check-row{border:1px solid #dfe5e9;background:#fff;border-radius:11px;min-height:66px;display:flex;align-items:center;gap:14px;padding:10px 14px;text-align:left;cursor:pointer}.check-row:hover{border-color:#b9c4cc}.check-row.confirmed{border-color:#9fd3b5;background:#f8fcf9}.check-icon{width:28px;font-size:22px;color:#a1abb3;text-align:center}.confirmed .check-icon{color:#29945b}.row-copy{display:flex;flex-direction:column;gap:4px;flex:1}.row-copy strong{font-size:13px}.row-copy small{color:#8a959d;font-size:11px}.row-status{font-size:9px;font-weight:900;color:#9a6c00}.row-status.ok{color:#29945b}.completion-bar{display:flex;align-items:center;gap:15px;margin-top:18px;font-size:11px;color:#7d8993}.completion-bar>div{height:5px;background:#e8ecef;border-radius:5px;flex:1;overflow:hidden}.completion-bar>div>span{display:block;height:100%;background:#3eae70;transition:width .25s}.program-strip{display:flex;gap:40px;background:#f6f8f9;border:1px solid #e4e9ec;border-radius:10px;padding:14px 16px;margin:20px 0}.program-strip span{display:flex;flex-direction:column;gap:4px}.program-strip small{color:#8a959d;font-size:9px;font-weight:800;letter-spacing:.8px}.program-strip b{font-size:13px}.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.tool-card{text-align:left;background:#fff;border:1px solid #dfe5e9;border-radius:12px;padding:18px;cursor:pointer}.tool-card:hover{border-color:#b7c1c8}.tool-card.confirmed{background:#f8fcf9;border-color:#9fd3b5}.tool-top{display:flex;justify-content:space-between;color:#7c8994;font-weight:900}.tool-number{color:#9a6c00;font-size:12px}.tool-card h3{margin:24px 0 5px;font-size:16px}.tool-card p{color:#8a959d;font-size:11px;min-height:32px}.tool-action{border-top:1px solid #e8ecef;padding-top:12px;color:#9a6c00;font-size:9px;font-weight:900;letter-spacing:.7px}.tool-action.ok{color:#29945b}.setup-layout{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:25px}.setup-visual{background:#f4f6f7;border:1px solid #e0e5e8;border-radius:12px;min-height:310px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#7f8a93;font-size:11px}.fixture{width:270px;height:160px;background:#59636b;border-radius:10px;position:relative;box-shadow:inset 0 -10px #0000001f}.part{position:absolute;width:130px;height:85px;background:#c7cdd1;left:70px;top:38px;border-radius:5px;display:grid;place-items:center;color:#5e6972;font-size:12px;font-weight:900}.clamp{position:absolute;width:45px;height:18px;background:#303a41;top:71px}.c1{left:20px}.c2{right:20px}.axis{position:absolute;right:10px;bottom:8px;color:#e7a91a;font-size:10px;font-weight:900}.details{border:1px solid #e0e5e8;border-radius:12px;overflow:hidden}.detail-row{display:flex;justify-content:space-between;gap:20px;padding:15px 17px;border-bottom:1px solid #e8ecef;font-size:12px}.detail-row:last-child{border-bottom:0}.detail-row>span{color:#89949d}.detail-row strong{text-align:right;max-width:70%}.detail-row .highlight{color:#9a6c00}.confirm-large{width:100%;margin-top:18px;padding:16px;border:1px solid #d6dde1;border-radius:10px;background:#f8f9fa;color:#6f7b84;font-size:11px;font-weight:900;letter-spacing:.7px;cursor:pointer}.confirm-large.confirmed{background:#e7f6ed;border-color:#9fd3b5;color:#26814f}.ready-card{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.ready-symbol{width:70px;height:70px;display:grid;place-items:center;border-radius:50%;background:#e2f5e9;color:#29945b;font-size:34px;font-weight:800;margin-bottom:18px}.ready-card p{color:#7d8993;font-size:13px}.review-list{width:min(620px,100%);margin:22px 0;border:1px solid #e0e5e8;border-radius:12px;overflow:hidden}.review-row{display:grid;grid-template-columns:35px 1fr auto;align-items:center;padding:14px 16px;border-bottom:1px solid #e8ecef;text-align:left}.review-row:last-child{border-bottom:0}.review-check{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#fff0df;color:#a86700;font-size:12px;font-weight:900}.review-check.ok{background:#e2f5e9;color:#29945b}.review-row>span:last-child{font-size:9px;font-weight:900;color:#29945b}.ready-state{padding:10px 18px;background:#e4f6eb;color:#25814e;border-radius:999px;font-size:11px;font-weight:900;display:flex;gap:9px;align-items:center}.ready-state.not-ready{background:#fff0df;color:#a86700}.operation-card{padding:0;overflow:hidden}.operation-head{padding:30px;display:flex;justify-content:space-between;border-bottom:1px solid #e3e8eb}.big-status{padding:10px 16px;height:fit-content;border-radius:8px;background:#fff4d9;color:#956800;font-weight:900;font-size:11px;letter-spacing:1px}.big-status.running{background:#e1f5e9;color:#27814f}.big-status.stopped{background:#f2e4e4;color:#a64b4b}.operation-display{padding:25px 30px;display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.machine-screen{min-height:230px;background:#111a20;border-radius:12px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.screen-label{color:#8d9aa3;font-size:9px;letter-spacing:1.5px;font-weight:900}.run-indicator{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:#46360d;color:#e7a91a;font-size:25px;margin:10px}.run-indicator.running{background:#16482e;color:#50ce85}.run-indicator.stopped{background:#4a2222;color:#e27676}.machine-screen strong{font-size:16px}.machine-screen span{color:#8d9aa3;font-size:11px}.operation-stats{border:1px solid #e0e5e8;border-radius:12px;overflow:hidden;align-self:stretch}.operation-actions{padding:22px 30px 30px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.start-btn,.stop-btn,.reset-btn,.primary-btn,.secondary-btn{border:0;border-radius:10px;min-height:50px;font-weight:900;cursor:pointer;letter-spacing:.3px}.start-btn{background:#2d9b5c;color:#fff}.stop-btn{background:#b94b4b;color:#fff}.reset-btn{background:#eef1f3;color:#59656e;padding:0 22px}.actionbar{margin-top:14px;background:#101820;border-radius:14px;padding:13px;display:flex;gap:12px;align-items:center}.secondary-btn,.primary-btn{padding:0 22px}.secondary-btn{background:#28343d;color:#fff}.primary-btn{background:#e0a119;color:#17202a}.action-info{flex:1;color:#fff;display:flex;flex-direction:column;gap:2px;padding:0 8px}.action-info strong{font-size:12px}.action-info span{color:#91a0aa;font-size:10px}.error-banner{margin-top:14px;background:#fff0f0;border:1px solid #e5b6b6;color:#9a3e3e;border-radius:10px;padding:12px 15px;font-size:12px}.fullscreen{min-height:100vh;display:grid;place-items:center;background:#eef2f5;padding:20px}.loading-box{background:#fff;border:1px solid #dce2e7;border-radius:16px;padding:35px;max-width:430px;text-align:center;box-shadow:0 6px 20px #1018200d}.loading-box .brand-mark{margin:0 auto}.loading-box p{color:#7d8993;font-size:13px}.loading-box .primary-btn{padding:0 20px;background:#e0a119}.loading-box h2{margin-top:18px}@media (max-width:760px){.topbar{padding:0 18px}.machine-state{display:none}.content{padding:18px 12px 25px}.progress-panel,.stage-card{border-radius:12px;padding:18px}.steps{overflow-x:auto;grid-template-columns:repeat(5,minmax(105px,1fr))}.step-text small{display:none}.stage-intro{flex-wrap:wrap}.status-badge{margin-left:57px;margin-top:-8px}.tool-grid,.setup-layout,.operation-display{grid-template-columns:1fr}.setup-visual{min-height:250px}.operation-head{padding:20px;gap:12px;flex-direction:column}.operation-display,.operation-actions{padding:18px}.actionbar{flex-wrap:wrap}.action-info{order:3;flex-basis:100%;padding:8px}.primary-btn,.secondary-btn{flex:1}.check-row{align-items:flex-start}.row-status{display:none}.program-strip{gap:20px;flex-wrap:wrap}}
