:root{--paper:#f5f2e9;--ink:#213f3c;--muted:#75817b;--line:#d9ded2;--deep:#346b5a;--yellow:#f1c94e;--white:#fffef9;font-family:"Noto Sans TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;cursor:pointer;background:none;touch-action:manipulation}button:disabled{opacity:.32;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #e3942e;outline-offset:3px}button:hover:not(:disabled){filter:brightness(.96)}button:active:not(:disabled){transform:translateY(1px)}svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-library{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}#app{max-width:1800px;margin:auto;padding:0 28px}.header{height:98px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit;font-size:21px;font-weight:800;letter-spacing:.12em;white-space:nowrap}.brand-mark{width:49px;height:49px;display:grid;place-items:center;border-radius:50%;background:var(--yellow);transform:rotate(-12deg)}.brand-mark svg{width:34px;height:34px;stroke-width:2.3}.brand small{display:block;font-size:8px;letter-spacing:.18em;font-weight:600;margin-top:6px}.header-tools{display:flex;gap:4px}.icon-btn{width:48px;height:48px;border-radius:50%;display:inline-grid;place-items:center;flex-shrink:0}.icon-btn svg{width:24px;height:24px}#sound[aria-pressed=false]{opacity:.48}#sound[aria-pressed=true]{background:#e6eadf}.garage{display:flex;gap:5px;padding:4px;border:1px solid var(--line);border-radius:100px;background:#ebece1}.garage button{display:flex;align-items:center;gap:10px;border-radius:100px;min-width:119px;height:52px;padding:6px 20px;font-size:14px;font-weight:700}.garage button[aria-pressed=true]{background:var(--white);box-shadow:0 2px 5px #31412c0c}.vehicle-art{position:relative;width:37px;height:33px;display:block;flex-shrink:0}.drill-art:before{content:"";position:absolute;width:35px;height:8px;border-radius:7px;background:var(--ink);bottom:0;left:0}.drill-art:after{content:"";position:absolute;left:2px;bottom:8px;background:#e4b824;width:24px;height:12px;border-radius:3px}.drill-art i{position:absolute;right:5px;top:0;background:#ddb124;width:5px;height:28px}.drill-art i:before{content:"";position:absolute;width:9px;height:8px;background:var(--yellow);left:3px;top:3px}.drill-art i:after{content:"";position:absolute;width:4px;height:21px;background:repeating-linear-gradient(160deg,#8c9a8e 0 3px,var(--ink) 3px 5px);left:6px;top:10px}.crane-art:before{content:"";position:absolute;width:34px;height:11px;background:#e4b824;bottom:6px;border-radius:3px}.crane-art:after{content:"";position:absolute;width:9px;height:9px;background:var(--ink);border-radius:50%;bottom:0;left:3px;box-shadow:20px 0 var(--ink)}.crane-art i{position:absolute;width:28px;height:5px;background:#e4b824;transform:rotate(-50deg);top:9px;left:0}.crane-art i:after{content:"";width:10px;height:7px;border-right:2px solid var(--ink);position:absolute;right:-3px;top:4px;transform:rotate(50deg)}
.modes{display:flex;justify-content:center;gap:12px;margin:0 auto 18px}.modes button{display:flex;align-items:center;justify-content:center;gap:10px;min-width:128px;height:50px;border-radius:100px;color:#687970;font-weight:700;font-size:14px}.modes button[aria-pressed=true]{background:var(--ink);color:var(--white)}.modes button svg{width:23px;height:23px}.workshop{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;min-height:570px;height:calc(100svh - 218px);max-height:1040px}.stage-shell{position:relative;overflow:hidden;border-radius:24px;background:#dfebe2;background-image:radial-gradient(ellipse at 35% 28%,#f0f4e8 0,transparent 70%);isolation:isolate}.stage-shell:after{content:"";position:absolute;inset:15px;border:1px solid #aac3af60;border-radius:15px;pointer-events:none;z-index:-1}#stage{position:absolute;inset:0;touch-action:none}#stage canvas{display:block;width:100%;height:100%;outline:0}#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;font-size:14px}#loading svg{animation:turn 5s linear infinite;width:38px;height:38px}.stage-top,.stage-bottom{position:absolute;left:27px;right:27px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.stage-top{top:19px}.stage-bottom{bottom:22px}.stage-top button,.stage-bottom button{pointer-events:auto}.stage-top>.icon-btn{background:#fffdf6b3}.model-badge{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:.12em}.model-badge i{width:7px;height:7px;border-radius:50%;background:#73977d}.view-tools{background:#fffdf4d9;backdrop-filter:blur(8px);display:flex;align-items:center;gap:1px;padding:3px;border-radius:100px;pointer-events:auto}.view-tools .icon-btn{width:42px;height:42px}.view-tools>span{height:20px;width:1px;background:var(--line);margin:0 4px}.top-view svg{transform:rotate(-90deg)}.gesture{display:flex;align-items:center;gap:9px;opacity:.6;font-size:12px}.gesture svg{width:24px;height:24px}.bench{background:#fffcf4;border:1px solid #e3e4d6;border-radius:24px;overflow:hidden;display:flex;min-height:0}.panel{padding:27px 24px;width:100%;display:flex;flex-direction:column;min-height:0;gap:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-number{font-size:10px;letter-spacing:.16em;color:#7c8d7e;font-weight:600}.little-star{font-size:29px;color:#e1b341}h1{font-size:31px;font-weight:800;letter-spacing:.045em;line-height:1.48;margin:0 0 4px}h2{margin:0;font-size:19px;letter-spacing:.06em}.detail-parts{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:auto}.detail-parts button{padding:0 0 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600}.detail-parts img{width:100%;height:83px;object-fit:contain;display:block;margin:0 auto 8px}.detail-parts button[aria-pressed=true]{border-color:var(--deep);background:#dce8db80;border-radius:10px 10px 0 0}.explode-control{background:#e6ecde;border-radius:17px;padding:6px 16px 18px}.explode-control button{display:flex;gap:13px;align-items:center;padding:12px 0;font-size:15px;font-weight:700;width:100%}.explode-control svg{width:24px;height:24px}input[type=range]{appearance:none;-webkit-appearance:none;display:block;width:100%;height:34px;margin:0;background:transparent;touch-action:pan-y;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:6px;background:#bdcbbb}input[type=range]::-moz-range-track{height:5px;border-radius:6px;background:#bdcbbb}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;margin-top:-9px;width:23px;height:23px;border-radius:50%;background:var(--deep);border:4px solid #fffcf4;box-shadow:0 1px 3px #243e3c30}input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--deep);border:4px solid #fffcf4}input:disabled{opacity:.35;cursor:default}.big-action{display:flex;align-items:center;gap:13px;min-height:63px;padding:12px 15px;border-radius:18px;background:var(--yellow);font-weight:700;font-size:16px;flex-shrink:0}.big-action svg:last-child{margin-left:auto;width:23px;height:23px}.big-action[aria-pressed=true]{background:#d8e5ce}.big-action[aria-pressed=false]>svg:last-child{opacity:.25}#count{font-size:12px;letter-spacing:.07em;color:#849482;font-variant-numeric:tabular-nums}.progress{height:4px;border-radius:4px;background:#e8edde;overflow:hidden;flex-shrink:0}.progress i{display:block;height:100%;width:0;background:var(--deep);transition:width .3s}.parts-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow:auto;min-height:0;align-content:start;overscroll-behavior:contain;padding:3px 2px 8px;scrollbar-width:thin;scrollbar-color:#afc1a8 transparent}.part-card{position:relative;height:100px;display:flex;justify-content:center;align-items:center;border:2px solid transparent;border-radius:15px;padding:4px;background:#f1f0e3;user-select:none;-webkit-user-select:none;touch-action:pan-y}.part-card img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 5px 3px #31483612)}.part-card[aria-pressed=true]{border-color:#4d8468;background:#dfebd8}.part-card.expected:after{content:"";position:absolute;bottom:5px;left:calc(50% - 3px);width:6px;height:6px;border-radius:50%;background:#c39729}.part-card.installed{background:transparent;box-shadow:inset 0 0 0 1px #dfe5d5}.part-card.installed img{opacity:.14;filter:grayscale(1)}.part-check{position:absolute;width:18px;height:18px;right:5px;bottom:5px;color:#83977b}.part-card:focus-visible{outline-offset:-3px}.assembly-actions{display:flex;align-items:center;gap:7px;margin-top:auto;padding-top:5px;flex-shrink:0}.assembly-actions .icon-btn{background:#e9eedf}#reference-wrap{height:192px;position:relative;flex-shrink:0;background:#e5ecde;border-radius:18px}#reference{width:100%;height:100%;object-fit:contain}.snap-target{position:absolute;width:48px;height:48px;margin:-24px 0 0 -24px;border:2px solid #ffffff;background:#437e59df;color:white;border-radius:50%;box-shadow:0 0 0 7px #56996826;z-index:4;animation:breathe 1.8s ease-in-out infinite}.snap-target svg{width:26px;height:26px}.drag-bubble{position:fixed;width:110px;height:100px;z-index:100;pointer-events:none;transform:translate(-50%,-70%);background:#fffef0dd;border:2px solid #5f8f6c;border-radius:20px;box-shadow:0 10px 30px #213f3c33;object-fit:contain}#toast{position:absolute;left:50%;bottom:88px;transform:translateX(-50%);border-radius:50px;background:#224039ed;color:#fffef4;padding:10px 20px;font-size:14px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .2s}#toast.show{opacity:1}#celebrate{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:20px;background:#fffbea;padding:23px 35px;border-radius:80px;box-shadow:0 8px 40px #163f3922;white-space:nowrap;animation:arrive .4s ease-out}#celebrate strong{font-size:29px;letter-spacing:.12em}#celebrate span{font-size:39px;color:#d8a82d}.play-steps{display:flex;align-items:center;justify-content:space-between;margin:8px 0 12px}.play-steps span{display:grid;place-items:center;background:#edeee1;width:48px;height:48px;border-radius:50%;opacity:.45}.play-steps span.done{background:#d8e7cd;opacity:1}.play-steps i{color:#bfcdb8;letter-spacing:3px}#drill-controls,#crane-controls{display:flex;flex-direction:column;gap:16px}.machine-slider{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:13px 16px;background:#e9eedf;border-radius:18px;font-size:14px;font-weight:600}.machine-slider svg{width:22px;height:22px}.machine-slider input{flex-basis:100%}.play-reset{margin:auto auto 0;background:#eeefe2}footer{height:47px;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.09em;color:#82917e}#saved{display:flex;align-items:center;gap:8px}#saved i{height:5px;width:5px;background:#89a582;border-radius:50%}dialog{border:1px solid var(--line);border-radius:24px;padding:38px;color:var(--ink);background:var(--white);max-width:520px;width:calc(100vw - 36px);line-height:1.9;box-shadow:0 18px 60px #1226222e}dialog::backdrop{background:#16342c66;backdrop-filter:blur(5px)}dialog p{font-size:14px;color:#637666}dialog h2{margin:10px 0 15px;font-size:24px}.dialog-close{position:absolute;right:10px;top:10px}.dialog-actions{display:flex;gap:12px}.dialog-actions button{flex:1;padding:12px;border-radius:30px;background:#e9eedf}.dialog-actions button:last-child{background:var(--yellow)}@keyframes turn{to{transform:rotate(360deg)}}@keyframes breathe{50%{box-shadow:0 0 0 12px #56996809}}@keyframes arrive{from{opacity:0;transform:translate(-50%,-50%) scale(.7)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media(min-width:1500px){.workshop{grid-template-columns:minmax(0,1fr) 350px}.panel{padding:32px}h1{font-size:36px}.part-card{height:115px}}
@media(max-width:1100px){#app{padding:0 18px}.header{height:84px;gap:10px}.modes{margin-bottom:13px}.workshop{height:calc(100svh - 198px);min-height:530px;gap:13px;grid-template-columns:minmax(0,1fr) 282px}.panel{padding:22px 18px;gap:14px}h1{font-size:27px}.stage-top,.stage-bottom{left:20px;right:20px}.gesture span{display:none}.garage button{min-width:106px;padding:6px 13px}.brand{font-size:19px}.brand-mark{width:43px;height:43px}#reference-wrap{height:170px}.part-card{height:87px}.big-action{font-size:14px;min-height:58px}}
@media(max-width:760px){#app{padding:0 12px}.header{height:80px;gap:8px}.brand{font-size:16px;gap:8px;letter-spacing:.05em}.brand small{font-size:6px}.brand-mark{width:35px;height:35px}.brand-mark svg{width:27px;height:27px}.garage{gap:2px;padding:3px}.garage button{min-width:0;width:55px;height:48px;padding:5px 9px}.garage button>span:last-child{display:none}.header-tools{gap:0}.header-tools .icon-btn{width:35px;height:40px}.header-tools svg{width:21px;height:21px}.modes{gap:5px;margin-bottom:12px;justify-content:space-between}.modes button{min-width:0;flex:1;height:47px;gap:6px;font-size:12px}.modes button svg{width:22px;height:22px}.workshop{grid-template-columns:1fr;height:auto;max-height:none;gap:12px;min-height:0}.stage-shell{height:52svh;min-height:330px;border-radius:20px}.stage-top{top:12px}.stage-top,.stage-bottom{left:17px;right:17px}.stage-bottom{bottom:15px}.model-badge{font-size:10px}.bench{border-radius:20px}.panel{padding:20px;gap:14px}.panel-head{gap:12px}#look-panel{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:14px 20px}#look-panel .panel-head{grid-column:1/-1}h1{font-size:25px}#look-panel .detail-parts{margin:0}#look-panel .detail-parts img{height:65px;margin-bottom:5px}#look-panel .detail-parts button{font-size:10px}#look-panel .explode-control{padding:4px 13px 8px}#look-panel .explode-control button{font-size:13px;gap:6px}#look-panel .big-action{font-size:13px;padding:12px;gap:8px}.big-action>svg{width:24px;height:24px}.big-action>svg:last-child{width:18px;height:18px}#assembly-panel{display:grid;grid-template-columns:1fr 1fr;gap:13px}#assembly-panel .panel-head,#assembly-panel .progress{grid-column:1/-1}#reference-wrap{height:160px}#assembly-panel .parts-tray{height:160px;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;align-items:center}#assembly-panel .part-card{height:90px;padding:0;border-radius:12px}.assembly-actions{grid-column:1/-1;padding:0}.assembly-actions .icon-btn{width:48px;height:48px}#play-panel{display:grid;grid-template-columns:1fr 1fr;gap:14px}#play-panel .panel-head{grid-column:1/-1}.play-steps{margin:0}#play-panel h1{font-size:23px}#play-panel #feet{align-self:start}#drill-controls,#crane-controls{gap:12px}#play-reset{margin:0;grid-column:1}#finish-play{grid-column:1/-1}footer{height:42px;font-size:9px}.view-tools .icon-btn{width:37px;height:37px}.gesture svg{width:21px;height:21px}}
@media(max-height:700px) and (min-width:761px){.header{height:70px}.modes{margin-bottom:10px}.modes button{height:44px}.workshop{height:calc(100svh - 166px);min-height:465px}.panel{gap:11px;padding:20px}h1{font-size:25px}.detail-parts img{height:61px}.big-action{min-height:52px}#reference-wrap{height:135px}.part-card{height:77px}.play-steps{margin:0}.play-steps span{width:40px;height:40px}.machine-slider{padding:8px 12px}#crane-controls{gap:8px}}#play-panel{overflow:auto;scrollbar-width:thin;scrollbar-color:#afc1a8 transparent}#app[data-vehicle=crane] #play-panel{gap:13px}#app[data-vehicle=crane] #play-title{font-size:25px}#app[data-vehicle=crane] .play-steps{margin:0}#app[data-vehicle=crane] .machine-slider{padding:8px 13px}#crane-controls{gap:9px}
#crane-controls .machine-slider{display:grid;grid-template-columns:22px 30px minmax(0,1fr);padding:10px 12px;gap:8px}#crane-controls .machine-slider input{width:100%;min-width:0}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Restore the classic labelled controls and two activities. */
.parts-tray{flex:1}
.header{height:80px}.garage{margin-right:auto}.modes{margin-bottom:16px}.modes button{min-width:144px}.workshop{height:calc(100svh - 188px)}
.home-button,.secondary-action{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid #cbdacc;background:#fffdf4;border-radius:15px;min-height:46px;padding:0 14px;font-size:13px;font-weight:600}.home-button svg,.secondary-action svg{width:21px;height:21px}.home-button{pointer-events:auto}.view-tools>[data-view]{height:42px;padding:0 14px;font-size:12px;font-weight:600}
#reference-wrap{position:relative;flex-shrink:0;padding-top:24px}.reference-caption{position:absolute;top:10px;left:12px;font-size:12px;color:#6d8678}.tray-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:#728779;flex-shrink:0}
.assembly-actions{margin:0;padding:0;gap:8px}.reset-action{margin-top:auto;min-height:38px;flex-shrink:0;color:#758779;font-size:12px}#play-panel #play-reset{margin-top:auto}.panel{gap:14px}.parts-tray{min-height:88px}.reference-caption~#reference{height:100%;object-fit:contain}
@media(max-width:1100px){.header{height:72px}.modes{margin-bottom:12px}.workshop{height:calc(100svh - 176px);min-height:560px}.panel{gap:10px;padding:20px 17px}#reference-wrap{height:165px}.part-card{height:82px}}
@media(max-width:760px){.header{height:72px}.garage button{width:auto;min-width:108px;gap:9px;padding:6px 14px}.garage button>span:last-child{display:inline}.modes{gap:4px}.modes button{min-width:0;font-size:13px;gap:7px}.modes button svg{width:20px;height:20px}.workshop{height:auto;min-height:0}.home-button{min-height:40px;padding:0 10px}.gesture{display:none}#assembly-panel{display:flex;gap:12px}#reference-wrap{height:195px}#assembly-panel .parts-tray{height:108px;flex:none}#assembly-panel .part-card{height:100px;padding:6px}#play-panel{display:flex;gap:14px}.play-steps{max-width:260px}#play-panel h1{font-size:26px}.machine-slider input{height:36px}#crane-controls .machine-slider{grid-template-columns:24px 40px minmax(0,1fr)}.assembly-actions{display:flex}}

/* One compact removal tool; installation happens on the model. */
.assembly-actions{justify-content:flex-end}
.assembly-actions .remove-part,.assembly-actions .reset-parts{flex:0 0 52px;width:52px;height:52px;padding:0;border:1px solid #bbcec5;border-radius:14px;background:#e5eee7;color:#365f54}
.assembly-actions .remove-part svg,.assembly-actions .reset-parts svg{width:25px;height:25px}
.assembly-actions .remove-part:hover:not(:disabled){background:#d4e4da;border-color:#789b8b}
.assembly-actions .remove-part:active:not(:disabled){background:#c4dacc;transform:translateY(1px)}
.assembly-actions .remove-part:disabled{opacity:1;color:#a5b4aa;background:#f0f2e9;border-color:#e3e8dd}

.assembly-actions .reset-parts{background:#f9f8f0;border-color:#d1dacd;color:#687d70}
.assembly-actions .reset-parts:hover{background:#ecefe3}
.assembly-actions .reset-parts:active{transform:translateY(1px)}
#home[aria-pressed=true]{background:#e0ebdf;border-color:#a6bdab}
#app .garage button{width:76px;min-width:76px;height:52px;padding:8px 14px;justify-content:center;gap:0}
#app .garage button .vehicle-art{display:block;transform:scale(1.12)}
