:root{font-family:Segoe UI,Microsoft YaHei,PingFang SC,sans-serif;color:#293c3c;background:#f6f5f0;font-synthesis:none;font-size:14px;--orange: #e99b3f;--ink: #293c3c;--muted: #8c958e;--line: #e2e4dc;--green: #527968}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #e99b3f;outline-offset:4px}button{touch-action:none}button svg{flex-shrink:0}button[hidden],[hidden]{display:none!important}a{color:inherit;text-decoration:none}.topbar{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;background:#fafbf6;gap:24px}.brand{display:flex;align-items:center;gap:12px;font-weight:750;font-size:21px;letter-spacing:1px;white-space:nowrap}.brand small{display:block;font-size:9px;letter-spacing:2.2px;color:#8f988f;margin-top:4px;font-weight:650}.brand-icon{width:44px;height:44px;flex:0 0 44px;filter:drop-shadow(0 2px 2px #84602020)}.brand-icon img{display:block;width:100%;height:100%}.steps{display:flex;align-items:center;gap:22px;font-size:13px;color:#959d95}.steps span{display:flex;align-items:center;gap:10px;white-space:nowrap}.steps b{font-size:10px;border:1px solid #dce0d7;border-radius:50%;width:25px;height:25px;display:grid;place-items:center;font-weight:500}.steps .active{color:#405747;font-weight:600}.steps .active b{background:#527968;color:#fff;border:0}.steps i{width:50px;height:1px;background:#dce0d7}.top-actions{display:flex;align-items:center;gap:12px}.online{font-size:11px;color:#8c978d;margin-right:14px;white-space:nowrap}.online i,.little-dot,.live-dot{display:inline-block;width:6px;height:6px;background:#91a88d;border-radius:50%;margin-right:7px}.icon-button{background:none;border:0;display:inline-flex;align-items:center;justify-content:center;width:33px;height:33px;border-radius:8px}.icon-button:hover{background:#e9ece4}.layout{display:grid;grid-template-columns:255px minmax(0,1fr) 252px;min-height:0;height:calc(100dvh - 86px);max-height:1300px}.sidebar{min-height:0;overflow-y:auto;padding:20px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#f7f8f2}.eyebrow{font-size:9px;font-weight:650;letter-spacing:2px;color:#8b9689;margin-bottom:10px}.sidebar h1{font-size:21px;letter-spacing:-.5px;margin:0 0 9px}.muted{color:#919b91;line-height:1.8;font-size:11px}.sidebar>p{margin:0 0 24px;font-size:11px}#garage-panel{display:grid;gap:10px}.machine-card{width:100%;text-align:left;border:1.5px solid #dfe3d7;border-radius:12px;padding:14px;background:#f5f6ef;overflow:hidden;box-shadow:0 3px #e4e5db;transition:transform .2s}.machine-card.selected{border-color:#d1a863;background:#f2ecdd}.machine-card:hover{transform:translateY(-2px)}.card-top{display:flex;justify-content:space-between;align-items:center}.tag{display:inline-block;font-size:9px;letter-spacing:1px;color:#8f794d;background:#eae2cb;padding:5px 8px;border-radius:4px}.selected-dot{background:#536a52;color:#fff;border-radius:50%;width:18px;height:18px;display:none;place-items:center}.machine-card.selected .selected-dot{display:grid}.machine-thumbnail{height:123px;margin:4px -5px 6px;background:url(/assets/excavator-preview-DiEY0ydq.png) center 56% / cover;border-radius:6px;mix-blend-mode:multiply}.tower-thumbnail{background-image:url(/assets/tower-crane-preview-BlF9mtvs.png);background-position:center 50%;background-size:cover;background-repeat:no-repeat;background-color:#aaa9a3}.tower-art{background:url(/assets/tower-construction-preview-DqRXVjjN.png) center / cover}#mobile-machine-picker{display:none}#tower-task{margin:12px 0 20px;font-size:12px}#tower-materials{list-style:none;padding:0;margin:12px 0}#tower-materials li{padding:8px 0;border-bottom:1px solid var(--line)}#tower-materials span,#tower-materials small{display:block}#tower-materials small{margin-top:4px;color:#667362;font-size:10px}#tower-materials .done{color:#36744b}#tower-views{position:absolute;z-index:5;left:18px;right:18px;bottom:50px;pointer-events:none}.tower-view-buttons{display:flex;gap:6px;flex-wrap:wrap}.tower-view-buttons button{pointer-events:auto;padding:8px 12px;border:1px solid #cbd4c8;border-radius:8px;background:#f7f8f2ed;color:#344a39;font-size:12px}#tower-status{margin:8px 0 0;padding:8px 12px;border-radius:8px;background:#f7f8f2ed;color:#344a39;font-size:12px;max-width:440px}body[data-machine=tower] .drive-section{display:none}@media(max-width:850px){#mobile-machine-picker{display:flex;align-items:center;gap:4px;font-size:11px;pointer-events:auto}#machine-select{max-width:135px;padding:7px 3px;border:1px solid #ccd2c4;background:#fafbf2;border-radius:6px}#tower-views{left:10px;right:10px;bottom:40px}#tower-status{font-size:10px;padding:5px 7px}.tower-view-buttons button{font-size:10px;padding:6px 8px}}.crane-thumbnail{background-image:url(/assets/truck-crane-preview-BKI1DLv7.png);background-position:center 52%;background-size:cover;background-repeat:no-repeat;background-color:#aaa9a3}.machine-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.machine-title strong{font-size:15px;min-width:0}.machine-title>span{flex:0 0 auto;text-align:right;font-size:10px;color:#8b927c;letter-spacing:1px}.upcoming{display:flex;align-items:center;gap:10px;padding:17px 0;border-bottom:1px solid #e4e6de;color:#91998c}.mini-machine{display:grid;place-items:center;width:35px;height:35px;border-radius:8px;background:#eceee6;font-size:25px;color:#a4ac9d}.upcoming strong{font-size:12px;font-weight:550}.upcoming small{font-size:9px;display:block;margin-top:5px}.soon{margin-left:auto;font-size:8px;white-space:nowrap;border:1px solid #dfe3d8;padding:4px;border-radius:4px}.tip-card{display:flex;gap:10px;margin-top:30px;padding:16px 13px;border:1px dashed #d2d8ca;border-radius:8px;color:#89947e}.tip-card strong{font-size:11px;font-weight:550}.tip-card p{font-size:10px;line-height:1.85;margin:7px 0 0;color:#929b88}.sidebar-bottom{margin-top:auto;padding-top:28px;font-size:9px;color:#9aa391;white-space:nowrap}.stage{position:relative;overflow:hidden;background:#e9e6de;min-width:0}.stage-heading{position:absolute;top:30px;left:30px;right:27px;z-index:2;display:flex;justify-content:flex-end;pointer-events:none;gap:10px}.stage-heading .tool-button{pointer-events:auto}.stage-heading h2{font-size:27px;font-weight:550;letter-spacing:1px;margin:0 0 10px}.stage-heading p{font-size:11px;color:#92998d;line-height:1.6;margin:0}.view-badge{font-size:9px;display:flex;gap:6px;align-items:center;align-self:flex-start;border:1px solid #ced3c4;border-radius:5px;padding:7px 9px;color:#7f8b77;white-space:nowrap}.stage-heading .eyebrow{color:#97a08c}#viewport{position:absolute;inset:0}canvas{display:block;width:100%;height:100%}#labels{position:absolute;inset:0;z-index:3;pointer-events:none}.part-label{position:absolute;pointer-events:auto;width:16px;height:16px;border:2px solid #fffdf5;border-radius:50%;box-shadow:0 0 0 3px #dc9b39aa,0 3px 12px #47361e44;background:#e5a13d;padding:0;transform:translate(-50%,-50%);transition:transform .15s,box-shadow .15s}.part-label:hover,.part-label:focus-visible,.part-label.selected{transform:translate(-50%,-50%) scale(1.15);box-shadow:0 0 0 5px #e3a44866,0 4px 16px #47361e55}.part-tooltip{position:absolute;left:24px;top:50%;width:240px;padding:12px 14px;border:1px solid #d8decf;border-radius:8px;background:#fafbf5f5;color:#65725f;box-shadow:0 7px 24px #42553220;text-align:left;transform:translateY(-50%) scale(.96);transform-origin:left center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s,transform .15s}.part-tooltip strong,.part-tooltip>span{display:block}.part-tooltip strong{margin-bottom:6px;color:#735322;font-size:12px}.part-tooltip>span{font-size:10px;line-height:1.65}.part-label:hover .part-tooltip,.part-label:focus-visible .part-tooltip,.part-label.selected .part-tooltip{opacity:1;visibility:visible;transform:translateY(-50%) scale(1)}.part-label.align-right .part-tooltip{right:24px;left:auto;transform-origin:right center}.stage-overview{position:absolute;left:26px;top:30px;z-index:4}.tool-button{display:flex;align-items:center;gap:6px;border:1px solid #d3d8cb;background:#f6f7f0d9;color:#798570;border-radius:5px;padding:7px 9px;font-size:9px}.tool-button:hover,.tool-button.active{background:#fbfbf5;border-color:#b8c4ab;color:#4c684d}.part-note{position:absolute;bottom:71px;left:25px;right:25px;max-width:480px;display:flex;align-items:flex-start;gap:12px;background:#fafbf5ed;border:1px solid #d8decf;border-radius:9px;padding:17px 13px 16px 16px;z-index:3;box-shadow:0 5px 25px #42553208}.note-number{width:26px;height:26px;display:grid;place-items:center;background:#e9eee0;border-radius:50%;font-size:10px;color:#718661;flex-shrink:0}.part-note strong{font-size:12px;font-weight:600}.part-note p{font-size:10px;color:#8a9680;line-height:1.8;margin:7px 0 0}.part-note .icon-button{margin:-7px -5px 0 auto;flex-shrink:0}.camera-hint{position:absolute;bottom:27px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:11px;font-size:9px;color:#8e9983;pointer-events:none}.camera-hint i{font-style:normal;color:#b6bdad}.controls-panel{min-height:0;padding:22px 16px 18px;border-left:1px solid var(--line);background:#fafbf6;display:flex;flex-direction:column}.panel-title{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:600;padding:2px 2px 4px}.panel-title>span:first-child{display:flex;align-items:center;gap:8px}.panel-mode{padding:4px 6px;border-radius:4px;background:#edf0e8;color:#899486;font-size:8px;font-weight:500;letter-spacing:.4px}.control-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:10px}.control-label strong{font-weight:550}.control-label>span{font-size:9px;color:#99a090;font-family:Consolas,monospace}.drive-controls{display:grid;grid-template-columns:1fr 1fr;gap:7px}.drive-controls button{min-width:0;min-height:45px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;padding:8px}.drive-controls button>span{color:#56705a;font-size:17px}.drive-controls button>small{font-size:9px;text-align:left}.control-card{padding:13px;border:1px solid #e1e5da;border-radius:10px;background:#fdfdf9;box-shadow:0 2px 10px #43523b08}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px;font-size:11px}.section-heading strong{font-weight:600}.section-heading span{color:#99a090;font:8px Consolas,monospace}.drive-controls button,.button-pair button{border:1px solid #e0e4d8;background:#f4f6ee;border-radius:5px;transition:background .12s;-webkit-user-select:none;user-select:none}.drive-controls button:hover,.button-pair button:hover{background:#e9efde;border-color:#bdcbae}.drive-controls button.pressed,.button-pair button.pressed{background:#f2d69f;border-color:#d3a45d;transform:translateY(1px)}kbd{font:9px Consolas,monospace;color:#929c85;display:inline-grid;place-items:center;width:17px;height:17px;background:#fff9;border:1px solid #e0e5d7;border-radius:3px}.drive-section>small{display:block;font-size:9px;color:#a0a692;text-align:center;margin:9px 0 0}.controls-scroll{min-height:0;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px;padding-right:2px}.assist-controls{margin:0 0 12px}.assist-controls>button{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:8px 10px;border:1px solid #cbd6bf;border-radius:6px;background:#eef3e7;color:#55734c;font-size:11px}.assist-controls strong{font-weight:550}.assist-controls span{margin-left:auto;font-size:9px}#grab-key{box-sizing:border-box;width:auto;min-width:38px;height:18px;padding:0 5px;line-height:16px;flex:0 0 auto}.assist-controls button[aria-pressed=true]{background:#dceace;border-color:#85a775}.assist-controls small{display:block;margin-top:7px;color:#879679;font-size:9px;line-height:1.5}body[data-mode=showroom] .assist-controls{display:none}.joint-controls{border-top:1px solid #edf0e8;padding-top:12px}.joint-row{margin-bottom:11px}.joint-row:last-child{margin-bottom:0}.button-pair{display:grid;grid-template-columns:1fr 1fr;gap:7px}.button-pair button{display:flex;align-items:center;justify-content:space-between;min-height:34px;padding:7px 8px;font-size:10px}.text-button{background:none;border:0;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:10px;padding:7px 0;color:#7c8b70}.text-button:hover{color:#405c3f}.start-card{flex-shrink:0;padding-top:14px;margin-top:auto;border-top:1px solid var(--line)}.start-card>span{font-size:10px;color:#919b86;display:block;margin-bottom:10px}.primary-button{background:#e8a247;color:#fffdf4;border:1px solid #d69843;border-radius:7px;min-height:43px;display:flex;align-items:center;justify-content:center;gap:17px;width:100%;font-size:12px;font-weight:600;box-shadow:0 3px #c38c3730;transition:background .15s,transform .15s}.primary-button:hover{background:#d99032;transform:translateY(-1px)}.start-card small{display:block;text-align:center;font-size:9px;color:#a1a991;margin-top:11px}.loading{position:absolute;inset:0;background:#e9e6deef;z-index:8;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px}.loading strong{font-size:15px;font-weight:500}.loading small{font-size:11px;color:#87917e}.loader{width:31px;height:31px;border:2px solid #d5d9c9;border-top-color:#d39b47;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{border:1px solid #dfe3d7;border-radius:18px;background:#fafbf5;color:var(--ink);padding:38px;max-width:650px;width:calc(100% - 36px);box-shadow:0 25px 100px #223b3426}dialog::backdrop{background:#273c345a;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog h2{font-size:25px;font-weight:550;margin:12px 0 10px}dialog>p{font-size:12px;line-height:1.9;color:#829077}.dialog-close{position:absolute;right:15px;top:15px}.scene-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:25px}#scene-dialog{max-width:920px}.scene-card{text-align:left;background:#f3f4eb;border:1px solid #dce2cf;padding:14px;border-radius:10px;transition:transform .2s}.scene-card:hover{transform:translateY(-3px);border-color:#c7a568}.scene-card .tag{margin-top:14px}.scene-card h3{font-size:15px;margin:12px 0 6px}.scene-card p{font-size:10px;color:#8b957e;line-height:1.8}.scene-card strong{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#a0783f;margin-top:20px}.scene-art{aspect-ratio:16 / 9;min-height:112px;border-radius:8px;position:relative;overflow:hidden;background-position:center;background-size:cover;box-shadow:inset 0 0 0 1px #fff8;transition:transform .3s ease}.scene-card:hover .scene-art{transform:scale(1.018)}.city-art{background-image:url(/assets/city-construction-preview-BfFK4WMT.png)}.yard-art{background-image:url(/assets/materials-yard-preview-CK_dQBw9.png)}.crane-art{background-image:url(/assets/riverside-crane-preview-C5nFUTUL.png)}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:22px 0}.help-grid p{font-size:11px;margin:0;border:1px solid #e3e8d9;padding:12px;border-radius:5px;color:#839174}.help-grid b{display:block;font-family:Consolas,monospace;font-size:13px;margin-bottom:7px;color:#506645}.help-tip{background:#eef1e3;border-radius:8px;padding:14px}#success-dialog{text-align:center;max-width:460px}#success-dialog .text-button{margin-top:14px}.success-mark{display:grid;place-items:center;width:85px;height:85px;background:#f1e5be;color:#a67f3b;border-radius:50%;margin:0 auto 23px}.success-stats{display:flex;justify-content:space-around;padding:20px 0 26px}.success-stats b{display:block;font-size:25px;color:#ba9047}.success-stats span{display:block;font-size:10px;color:#909d80;margin-top:9px}.back-button{display:flex;align-items:center;gap:7px;border:0;background:none;padding:2px 0;font-size:10px;color:#71816e;margin:0 0 25px}.back-button svg{transform:rotate(180deg)}.back-button:hover{color:#405c3f}#mission-name{font-size:20px;line-height:1.6;margin:0 0 18px}.progress-caption{display:flex;justify-content:space-between;font-size:10px;color:#849175;margin-top:0;align-items:center}.progress-caption strong{font-weight:500;color:#6b805a}.progress-caption b{font-size:26px;color:#4f6f50;font-weight:600}.progress-track{height:6px;background:#e1e7d5;border-radius:6px;margin:9px 0 11px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:#809e71;transition:width .3s}.mission-steps{list-style:none;margin:22px 0 18px;padding:0;border-top:1px solid #e3e7dc}.mission-steps li{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid #e3e7dc;align-items:center}.mission-steps li>span{display:grid;place-items:center;flex-shrink:0;background:#e8eddc;width:22px;height:22px;border-radius:50%;font-size:9px;color:#829471}.mission-steps b{font-size:11px;font-weight:550}.status-toast{position:absolute;bottom:185px;left:50%;transform:translate(-50%);background:#354c42ed;color:#fff;padding:10px 16px;border-radius:7px;font-size:11px;z-index:9;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}.status-toast.visible{opacity:1}#target-label{position:absolute;z-index:2;pointer-events:none;transform:translate(-50%,-100%);color:#366d53;font-size:10px;font-weight:600;background:#f1f8e8db;padding:7px 10px;border-radius:6px;white-space:nowrap}#target-label span{display:block;text-align:center;font-size:15px;margin-top:2px}body[data-mode=site] .stage-heading{background:linear-gradient(#e4eee0db,transparent);margin:-30px -27px 0 -30px;padding:30px 27px 40px 30px}body[data-mode=site] .stage-heading p{color:#6f846b}body[data-mode=site] .view-badge{background:#f4f8ecaa}body[data-mode=site] .camera-hint{background:#f4f6e5d9;left:20%;right:20%;padding:9px;border-radius:20px}.paused-badge{position:absolute;inset:42% 20% auto;text-align:center;z-index:5;background:#fafbf0e8;padding:22px;border-radius:10px;font-size:15px}@media(min-width:1650px){.layout{grid-template-columns:285px minmax(0,1fr) 280px}.sidebar{padding:24px}.controls-panel{padding:35px 27px}.joint-row{margin-bottom:23px}.machine-thumbnail{height:145px}}@media(max-width:1150px){.topbar{padding:0 20px}.online{display:none}.layout{grid-template-columns:210px minmax(0,1fr) 218px}.sidebar{padding:16px}.controls-panel{padding:27px 15px}.sidebar h1{font-size:18px}.stage-heading{left:20px;right:20px}.stage-heading h2{font-size:22px}.stage-heading p{max-width:240px}.sidebar-bottom{font-size:8px}}@media(max-width:850px){.layout{grid-template-columns:minmax(0,1fr) 210px;height:calc(100dvh - 72px);min-height:0}.sidebar{display:none}.topbar{height:72px}.steps{gap:10px}.steps i{width:15px}.brand{font-size:17px}.top-actions{gap:3px}.stage-heading{top:24px}.stage-heading p{max-width:none}}@media(max-width:560px){.layout{display:flex;flex-direction:column;height:auto;min-height:0}.stage{height:65dvh;min-height:460px;order:0}.controls-panel{order:1;display:flex;padding:22px}.controls-scroll{display:flex;flex-direction:column;gap:15px;overflow:visible}.joint-controls{padding-top:12px}.joint-row{margin-bottom:13px}.start-card{margin-top:15px}.topbar{padding:0 15px}.steps{display:none}.brand{font-size:16px}.stage-heading h2{font-size:22px}.part-note{bottom:56px;left:15px;right:15px;padding:12px;gap:8px}.part-note p{font-size:9px}.camera-hint{bottom:19px}.scene-cards{grid-template-columns:1fr}.scene-art{min-height:96px}dialog{padding:28px}.help-grid{grid-template-columns:1fr 1fr}.status-toast{max-width:90%;white-space:normal;text-align:center}}.compact-mission,body[data-mode=site] .start-card{display:none}@media(max-width:850px){body[data-mode=site] .sidebar{display:block;grid-column:1 / -1;padding:10px 18px;border-bottom:1px solid var(--line)}body[data-mode=site] .layout{grid-template-rows:auto minmax(0,1fr)}body[data-mode=site] #mission-panel{display:flex;align-items:center;gap:18px}body[data-mode=site] #mission-panel .back-button{margin:0;white-space:nowrap}body[data-mode=site] #mission-name{margin:0;font-size:12px}body[data-mode=site] #mission-panel .mission-steps,body[data-mode=site] #mission-panel .progress-caption,body[data-mode=site] #mission-panel .progress-track{display:none}body[data-mode=site] #change-scene{margin-left:auto}}@media(max-width:560px){body[data-mode=site] .sidebar{order:-1}body[data-mode=site] #mission-name{display:none}}@media(max-width:850px){.compact-mission{display:block;position:absolute;bottom:64px;left:22px;z-index:4;border:1px solid #c3d0b6;background:#f5f8ecef;color:#55724c;border-radius:7px;padding:10px 13px;font-size:10px}body[data-mode=site] .camera-hint{left:15px;right:15px}.stage-heading p{font-size:10px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:850px){body[data-machine=tower] #tower-task{display:none}body[data-machine=tower] .compact-mission{inset:62px 12px auto;padding:7px;pointer-events:auto}body[data-mode=showroom] .stage-heading{flex-wrap:wrap;gap:6px}}.gamepad-help p{margin:8px 0 0;font-size:12px;line-height:1.65}.game-menu-actions{display:grid;gap:10px}.game-menu-actions button{padding:12px 18px;border:1px solid var(--line);border-radius:10px;text-align:left}.gamepad-focus{outline:3px solid #c77b20!important;outline-offset:3px}.gamepad-dialog-hint{font-size:13px;color:var(--green);margin-top:20px}body[data-input=gamepad] [data-action] kbd{min-width:42px;width:auto;white-space:nowrap}#start>kbd{margin-right:8px}#gamepad-guide{line-height:1.8}.gamepad-help #gamepad-status{font-weight:600}
