:root{--world:#b7d9e6;--ink:#234450;--accent:#c9583e;--panel:#fff5df;--muted:#435963;--line:#8c9d99}body{background:var(--world);color:var(--ink);font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif}.world-backdrop{position:fixed;inset:0;z-index:-1;background-image:url('assets/scene.svg');background-size:cover;background-position:center top;pointer-events:none}main.game-screen{width:min(100% - 32px,920px);margin:0 auto;padding:18px 0 30px;min-height:100dvh}.game-top{display:flex;align-items:center;gap:15px;margin:0 0 16px;padding:8px 16px;background:#fff6e4f5;border-radius:12px;box-shadow:0 5px 16px #233b4520}.game-top h1{font-family:"Microsoft YaHei",sans-serif;font-size:22px;margin:0;letter-spacing:0;line-height:1.4}.game-top .place{font-size:12px;margin:2px 0 0;color:#455b60}.game-top .hall-link{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:10px;margin:0;color:var(--ink);border-radius:8px;background:#d3dfd74d;text-decoration:none}.game-top #help{margin-left:auto;background:var(--ink);color:#fff5df;display:flex;align-items:center;gap:7px}.ui-icon{width:19px;height:19px;flex:none;vertical-align:middle}.game-stage{width:min(100%,640px);margin:auto}.mission{padding:10px 16px 11px;background:#fff6e4f5;border-radius:12px;margin-bottom:10px}.mission strong{display:block;font-size:16px;line-height:1.55}.mission .levelbar{margin:6px 0 0;gap:9px}.levelbar select{min-height:44px;max-width:200px;padding:8px;border-color:#aab4a4;background:#fff9eb;color:var(--ink)}.levelbar span{font-size:12px;margin-left:auto;color:#455b60}.levelbar #progress{margin-left:0}.coach{display:flex;gap:12px;align-items:center;background:#fff9ebfa;border-radius:12px;padding:10px 13px;margin:0 0 10px;box-shadow:0 4px 12px #233b4515}.coach-art{flex:0 0 112px}.coach-art svg{display:block;width:100%;height:70px}.coach-body{flex:1;min-width:0}.coach h2{font-size:14px;margin:0 0 4px}.coach p{font-size:12px;line-height:1.7;margin:0;color:#3e5359}.coach-actions{display:flex;gap:9px;margin-top:7px;align-items:center}.coach-actions button{min-height:44px;padding:7px 10px;font-size:12px;background:var(--accent);color:#fff}.coach-actions #coach-dismiss{background:transparent;color:var(--ink);text-decoration:underline;text-underline-offset:3px}.stage{border-radius:14px;background:#f3ecd7e8;box-shadow:0 7px 25px #19353e30;overflow:hidden}.stage>svg{background:transparent}.scroll-board{max-height:590px;scrollbar-color:#6e8791 #dce4db}.scroll-board svg{display:block;touch-action:pan-x pan-y}.direction-controls{background:#e7dfcb;gap:10px;padding:10px}.direction-controls button{background:#fff6df;min-width:52px;color:var(--ink);border-radius:8px;box-shadow:0 3px 7px #34434d15}.direction-controls .primary{background:var(--accent);color:#fff}.stage .object{transition:filter 140ms}.stage .object:hover{filter:brightness(1.08)}.stage .object.selected{filter:drop-shadow(0 1px 3px #293c69);stroke:#fff8d5;stroke-width:.065px}.stage .object.hinted{filter:drop-shadow(0 1px 2px #fff);stroke:#fef5cb;stroke-width:.095px;stroke-dasharray:.12 .075;animation:hint-shine 1.2s ease-in-out infinite}.stage .object:focus-visible{stroke:#fff8dc;stroke-width:.08px;filter:drop-shadow(0 1px 3px #263045)}.toolbar{margin-top:11px;display:flex;justify-content:center;gap:7px;flex-wrap:wrap}.toolbar button{display:flex;gap:6px;align-items:center;justify-content:center;background:#fff5dff5;color:var(--ink);box-shadow:0 3px 9px #223d4620;min-height:46px;padding:10px 13px;font-size:13px}.toolbar .primary{background:var(--accent);color:#fff}.toolbar button:hover,.direction-controls button:hover{filter:brightness(1.07)}.tools{margin-top:10px;border:0;padding:0;background:#fff5dfeb;border-radius:10px;justify-content:center;gap:10px;padding:6px 10px}.tools button{background:transparent;padding:8px;font-size:12px;display:flex;gap:4px;align-items:center}.tools label{font-size:12px;gap:5px}.tools input{accent-color:var(--accent)}#message{color:var(--ink);background:#fff8e6e8;border-radius:8px;min-height:0;padding:0 12px;margin:8px 0;line-height:1.7;font-size:13px}#message:not(:empty){padding:9px 12px}#outcome{background:#fff2c6;box-shadow:0 5px 18px #233b4526;text-align:center;margin:8px 0;animation:complete-in 420ms cubic-bezier(.16,1,.3,1)}#pause-note{position:absolute;inset:0;border-radius:14px;display:grid;place-items:center;background:#243e4ae8;color:#fff7df;font-size:18px;pointer-events:none;padding:18px}.local-note{font-size:11px;line-height:1.7;color:var(--ink);background:#fff5dfda;padding:8px 12px;border-radius:8px;margin:12px 0 0}.parts-tray{background:#e8debf;padding:10px 12px 12px}.tray-title{font-size:13px;font-weight:700;padding:9px 12px 2px;color:#314b57;display:flex;justify-content:space-between;gap:8px}.tray-title span{font-weight:400;font-size:11px;color:#50646b}.status-row{padding:9px 12px;gap:10px}.parts-box{background:var(--part);color:#fff8dc;min-width:128px;max-width:220px;flex:1;border-radius:6px 6px 11px 11px;position:relative;padding:8px 14px 5px;box-shadow:inset 0 -5px 0 #23384135,0 4px 7px #23384120}.parts-box:before{content:'';position:absolute;left:-3px;right:-3px;top:-1px;height:9px;background:#fff5d130;border-radius:3px}.box-label{font-size:12px;font-weight:700;display:block}.box-screws{display:flex;justify-content:center;gap:6px}.mini-part{width:38px!important;height:38px!important;touch-action:auto!important;overflow:visible}.empty-part{opacity:.23;filter:grayscale(1)}.parts-box small{display:block;text-align:right;font-size:10px}.next-boxes{font-size:11px;line-height:1.8;text-align:center;color:#405a60;margin:6px 0}.next-boxes span{font-weight:700;background:#fff5dd;padding:2px 5px;border-radius:3px;display:inline-block}.buffer-tray{display:flex;justify-content:center;padding:6px;gap:12px;background:#ae9c7e;border-radius:8px}.buffer-pocket{width:52px;height:44px;display:grid;place-items:center;background:#6e6d62;border-radius:6px;box-shadow:inset 0 3px 7px #24384140;color:#fff6dd;font-size:10px}.machine-work{background:#8c8068}.mission-meter{display:flex;gap:10px;justify-content:space-between;padding:9px 12px;background:#d9dfce;font-size:11px;color:#2d4d59}.robot-bays,.bus-bays{padding:8px 12px}.robot-card{display:flex;flex-direction:column;align-items:center;min-width:72px;border-radius:8px;padding:4px 6px;background:#dae4df;color:#244451;box-shadow:0 3px 5px #31495320}.robot-card svg{height:54px!important;width:52px!important;touch-action:auto!important;overflow:visible}.robot-card span{font-size:10px;white-space:nowrap;margin-top:2px}.robot-card:disabled{filter:grayscale(.7);opacity:.5}.robot-card.hinted{outline:3px dashed #314c59}.robot-space{width:72px;min-height:83px;background:#d2dacf;color:#4f6469;display:grid;place-items:center;font-size:11px;border-radius:8px;box-shadow:inset 0 3px 5px #31495320}.robot-queue{background:#cad5cf;gap:9px}.bus-bay{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#d4dcca;min-width:64px;flex:1;border-radius:7px;height:86px;color:#354f57;box-shadow:inset 0 3px 7px #31495315}.bus-bay svg{width:90px!important;height:53px!important;touch-action:auto!important}.bus-bay span{font-size:10px}.bus-bay .bay-number{font-size:27px;font-weight:700;color:#769086}.bus-bay small{font-size:10px}.passenger-line{background:#d0d7c3;gap:12px;align-items:center}.passenger{min-width:32px;text-align:center}.passenger svg{height:52px!important;width:38px!important;touch-action:auto!important}.passenger span{font-size:10px;display:block;color:#3b5359}.flower-beds{aspect-ratio:1;padding:12px;gap:2px;background:#799263;min-width:0}.flower-beds .cell{background:var(--soil);border-radius:2px;min-width:44px;min-height:44px;overflow:hidden}.cell .soil-texture{position:absolute;inset:0;width:100%;height:100%;opacity:.8}.cell .region-number{color:#344a35;background:#fff9dfc9;padding:1px 4px;border-radius:3px;z-index:2;font-size:9px;top:3px;left:3px}.flower-grown{position:absolute;inset:5px;display:flex;align-items:center;justify-content:center}.cell .flower{width:90%;height:90%;position:relative;overflow:visible}.cell.marked:after{inset:33%;background:transparent;border:2px solid #425b3b;border-radius:0;transform:rotate(45deg);opacity:.65}.cell.conflict{outline-color:#a92e32;outline-width:4px}.cell.hinted{outline:4px solid #275440;outline-offset:-4px}.bottles.lab-rack{padding:18px 15px 25px;gap:18px 14px;background:#bdd0d6;grid-template-columns:repeat(5,1fr);background-image:linear-gradient(transparent 86%,#748f97 86%,#748f97 89%,transparent 89%)}.lab-rack .bottle{height:auto;aspect-ratio:80/184;min-height:0;padding:0;border:0;border-radius:10px;background:transparent;overflow:visible;display:block}.bottle .glass-vial{width:100%;height:100%;overflow:visible;touch-action:auto;pointer-events:none}.bottle small{position:absolute;bottom:-13px;left:0;right:0;font-size:11px;color:#294e60;font-weight:700}.lab-rack .bottle:hover{background:#e7f0e33d}.lab-rack .bottle.selected{outline:2px solid var(--accent);outline-offset:0;background:#e8f1e9b8}.lab-rack .bottle.hinted{outline:3px dashed #436476;outline-offset:0;background:#e8f1e99c}.help-dialog{width:min(100% - 28px,600px);max-height:min(86dvh,760px);overflow:auto;background:#fff5df;color:var(--ink);border:0;border-radius:14px;padding:20px 24px;box-shadow:0 18px 70px #122d4550}.help-dialog::backdrop{background:#1c394ac7}.help-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.help-head h2{font-size:20px;margin:0}.help-head button{background:#dbe1d0;padding:9px 14px}.help-demo{width:220px;margin:5px auto 15px}.help-demo svg{display:block;width:100%}.help-dialog ol{padding-left:22px;margin:0}.help-dialog li{padding-left:5px;margin:0 0 14px;font-size:14px;line-height:1.8}.help-dialog p{font-size:12px;line-height:1.8}.help-dialog .primary{background:var(--accent);color:#fff}.help-footer{display:flex;align-items:center;gap:14px;justify-content:space-between;border-top:1px solid #cad0ba;padding-top:14px;margin-top:20px}.help-footer span{font-size:11px;color:#486066}#effects{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}.motion-ghost{pointer-events:none!important;z-index:30}.motion-effect{pointer-events:none;z-index:31}.clean-beam{position:fixed;height:3px;border-radius:3px;transform-origin:left center;box-shadow:0 0 6px #fff8cf}.ui-icon path{vector-effect:non-scaling-stroke}.page-hidden *{animation-play-state:paused!important}.reduced *{animation:none!important;transition:none!important}.reduced .tutorial-art{filter:none}.demo-slide{animation:demo-slide 2.8s ease-in-out infinite}.demo-fly{animation:demo-fly 2.8s cubic-bezier(.16,1,.3,1) infinite}.demo-unscrew{transform-origin:center;transform-box:fill-box;animation:demo-unscrew 3s ease-in-out infinite}.demo-robot{animation:demo-robot 2.4s ease-in-out infinite}.demo-beam{animation:demo-beam 2.4s ease-in-out infinite}.demo-bus{animation:demo-bus 3s ease-in-out infinite}.demo-ring{animation:demo-ring 3s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.demo-flower{animation:demo-flower 2.8s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.demo-pour{animation:demo-pour 3s ease-in-out infinite;transform-origin:top right;transform-box:fill-box}@keyframes demo-slide{0%,20%{translate:0}70%,90%{translate:105px 0}100%{translate:0}}@keyframes demo-fly{0%,20%{translate:0;opacity:1}70%,85%{translate:105px -5px;opacity:0}100%{translate:0;opacity:1}}@keyframes demo-unscrew{0%,15%{rotate:0deg;translate:0}65%,85%{rotate:360deg;translate:95px 10px;scale:.7}100%{rotate:0deg;translate:0;scale:1}}@keyframes demo-robot{0%,20%{translate:0}60%,80%{translate:0 -18px}100%{translate:0}}@keyframes demo-beam{0%,25%,80%,100%{opacity:0}40%,60%{opacity:1}}@keyframes demo-bus{0%,20%{translate:0}70%,85%{translate:80px 0}100%{translate:0}}@keyframes demo-ring{0%,15%{rotate:-90deg;translate:0}45%{rotate:0deg;translate:0}75%,85%{rotate:0deg;translate:0 -50px;opacity:.1}100%{rotate:-90deg;translate:0;opacity:1}}@keyframes demo-flower{0%,15%{scale:.3;opacity:.1}50%,90%{scale:1;opacity:1}100%{scale:.3;opacity:.1}}@keyframes demo-pour{0%,15%{rotate:0deg;translate:0}45%,75%{rotate:55deg;translate:55px -12px}100%{rotate:0deg;translate:0}}@keyframes hint-shine{0%,100%{filter:drop-shadow(0 1px 2px #fff)}50%{filter:drop-shadow(0 2px 4px #fff1af)}}@keyframes complete-in{from{clip-path:inset(0 45%);opacity:.3}to{clip-path:inset(0 0);opacity:1}}@media(max-width:700px){main.game-screen{width:calc(100% - 20px);padding:10px 0 20px}.game-top{padding:6px 10px;gap:10px;margin-bottom:10px}.game-top h1{font-size:18px}.game-top .place{font-size:10px}.game-top #help{font-size:12px;padding:9px}.game-top .hall-link{padding:9px;min-width:44px}.mission{padding:9px 11px}.mission strong{font-size:14px}.levelbar{gap:7px}.levelbar select{max-width:162px;font-size:12px}.levelbar span{font-size:10px}.coach{gap:8px;padding:8px 10px}.coach-art{flex-basis:82px}.coach-art svg{height:65px}.coach p{font-size:11px}.coach h2{font-size:13px}.coach-actions{gap:3px;margin-top:3px}.coach-actions button{padding:8px;font-size:11px}.stage{border-radius:11px}.scroll-board{max-height:56dvh}.toolbar{gap:6px}.toolbar button{min-width:63px;padding:9px 11px;font-size:12px}.toolbar .ui-icon{width:17px;height:17px}.tools{gap:6px;padding:3px 6px}.tools label{font-size:10px;min-height:44px}.tools button{font-size:11px;min-height:44px}.tools .ui-icon{width:16px;height:16px}.tray-title{font-size:11px;padding-top:7px}.tray-title span{font-size:9px}.parts-box{min-width:100px;padding:8px}.box-screws{gap:3px}.buffer-tray{gap:10px}.robot-card{min-width:64px}.robot-card svg{height:47px!important;width:44px!important}.robot-space{width:64px;min-height:73px}.robot-bays,.bus-bays{gap:6px;padding:7px 9px}.bus-bay{min-width:59px;height:76px}.bus-bay svg{width:72px!important;height:45px!important}.mission-meter{font-size:9px;padding:8px}.bottles.lab-rack{grid-template-columns:repeat(4,1fr);gap:22px 9px;padding:14px 10px 26px}.help-dialog{padding:18px;max-height:88dvh}.help-dialog li{font-size:13px}.help-footer{align-items:start;flex-wrap:wrap}.help-demo{width:190px}.local-note{font-size:10px}.direction-controls button{font-size:12px;min-height:44px}.world-backdrop{background-size:auto 100dvh;background-position:center top}}@media(prefers-reduced-motion:reduce){.tutorial-art *,.object,#outcome{animation:none!important}.motion-effect,.motion-ghost{display:none!important}}
