.chapter-dialog .game-shell{grid-template-rows:auto minmax(0,1fr) auto}.chapter-arena{background:none!important;overflow:hidden}.mini-world{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none}.mini-play{position:absolute;left:24%;right:4%;top:6%;bottom:4%;isolation:isolate;touch-action:none}.chapter-npc{left:12%;top:40%;height:27%;width:17%;max-height:175px;z-index:8}.chapter-hero{left:13%;top:47%;height:23%;z-index:9}.chapter-hub{position:absolute;inset:0;overflow:auto;padding:25px;background:#202a3b76;backdrop-filter:blur(3px)}.chapter-hub h3{text-align:center;color:#ffe3a1;font-size:28px;text-shadow:0 3px 2px #202637;margin:0 0 20px}.chapter-road{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;max-width:1100px;margin:auto}.lesson-node{position:relative;display:grid;grid-template-columns:36px 1fr;gap:8px;text-align:left;color:#fff0d2;min-height:100px;padding:13px;border:2px solid #c4a574;border-radius:13px;background:linear-gradient(135deg,#344c50,#302842);box-shadow:0 5px 0 #222233}.lesson-node small{grid-column:2;color:#b8cbd2;font-size:10px}.node-number{grid-row:span 2;border:1px solid #e3c181;background:#d4a967;color:#352b2a;border-radius:50%;width:34px;height:34px;display:grid;place-items:center}.lesson-node.completed{background:linear-gradient(135deg,#2f7067,#305346)}.lesson-node.locked{opacity:.7;color:#d2cbc3;background:#323944;box-shadow:none;filter:grayscale(.5)}
.lab-floor{position:absolute;left:0;right:0;bottom:0;height:38%;background:url('./experiment-table.png') center / contain no-repeat;z-index:-1;pointer-events:none;opacity:.97}.lab-object{position:absolute;left:26%;top:67%;transform:translate(-50%,-50%)!important;width:18%;height:18%;padding:0;border:0;background:none;box-shadow:none;min-height:30px;touch-action:none;cursor:grab;z-index:15;transition:none}.lab-object:hover,.lab-object:active{background:none;box-shadow:none}.lab-object img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 5px 3px #452f3650)}.lab-object.charged img,.lab-object.charged .object-art{filter:drop-shadow(0 0 8px #b296ff)}.lab-object.dragging{z-index:30;cursor:grabbing}.object-label{position:absolute;left:50%;top:100%;transform:translateX(-50%);padding:4px 7px;border-radius:5px;background:#273341ec;border:1px solid #a58c62;color:#ffdda8;font-size:11px;width:max-content;max-width:200px;pointer-events:none}.object-art{display:block;width:100%;height:100%;filter:drop-shadow(0 4px 2px #34293e40)}.lab-object.glass{width:25%;height:6%}.glass .object-art{background:linear-gradient(#def7ff95,#bceef9e8 40%,#ffffffab 60%,#70a8ba99);border:2px solid #cae8f1;border-radius:20px;transform:rotate(-12deg)}.lab-object.metal{width:25%;height:6%}.metal .object-art{background:linear-gradient(#f2f2f6,#7d8698 45%,#c4cfda 60%,#535e77);border-radius:15px;border:2px solid #737b90}.lab-object.connected{width:42%;height:5%}.cloth .object-art{background:linear-gradient(135deg,#dda4e4,#7955be 40%,#dbc0e9);border-radius:12px 25px 9px 20px;clip-path:polygon(5% 8%,94% 0,85% 93%,0 83%)}.charge-orb .object-art{width:80%;aspect-ratio:1;height:auto;margin:auto;border-radius:50%;background:radial-gradient(circle at 30% 28%,#fff7c6,#d19d41 65%,#78613b);border:2px solid #e8c474}.charge-orb.charged .object-art:after{content:'+';color:#fff;font-size:30px;display:grid;place-items:center;height:100%}.comb.lab-object{width:25%;height:12%}.wool-pad{position:absolute;left:50%;top:68%;transform:translate(-50%,-50%);width:32%;height:20%;background:repeating-radial-gradient(ellipse,#d7b48c 0 2px,#b98f62 3px 4px);border-radius:35%;box-shadow:0 5px 0 #74544b;z-index:1}.wool-pad span{position:absolute;bottom:-22px;left:40%;color:#573c34;font-size:12px;background:#fff5d7;border-radius:5px;padding:3px 8px}.straw{position:absolute;width:8%;height:2%;border-radius:5px;background:linear-gradient(#ffee97,#cca139);transform:translate(-50%,-50%) rotate(-20deg);border:1px solid #bc822a;box-shadow:0 3px 1px #61484d55}.straw.caught{opacity:.3}.mini-rub{position:absolute;bottom:1%;left:28%;width:45%;color:#4d392c;background:#fff0d5ed;padding:6px 10px;border-radius:6px;font-size:11px}.mini-rub progress{display:block;width:100%;height:7px;accent-color:#8556ca}.mini-toast{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:35;background:#244b42e8;border:1px solid #89c9ad;color:#d9ffe6;font-size:12px;padding:7px 14px;border-radius:7px;pointer-events:none}.experiment-tabs,.prediction-buttons,.material-picker,.part-buttons,.machine-parts{position:absolute;z-index:20;display:flex;gap:6px;flex-wrap:wrap}.experiment-tabs{top:0;left:15%;right:15%;justify-content:center}.mini-play button:not(.lab-object):not(.assembly-part):not(.crank-handle){font-size:11px;min-height:30px;padding:6px 10px;background:#334453ec;border:1px solid #c2a575;color:#ffdfac;box-shadow:0 2px 0 #24313d;border-radius:5px}.water-faucet{position:absolute;left:49%;top:13%;width:15%;height:10%;border:9px solid #789fa1;border-left:0;border-bottom:0;border-radius:0 20px 0 0;background:#436e7720;color:#e9f8f7;font-size:12px;text-align:center}.water-stream{position:absolute;left:38%;top:22%;width:30%;height:48%;overflow:visible;pointer-events:none}.water-stream path{fill:none;stroke:#5cc9f4;stroke-width:9;stroke-linecap:round;filter:drop-shadow(1px 0 0 #effaff);transition:d .3s}.water-basin{position:absolute;left:39%;top:69%;width:30%;height:12%;border:7px solid #dfc89d;background:#54abc3a0;border-radius:50%;box-shadow:0 5px 0 #9d7454}.silk-cloth{position:absolute;left:45%;top:45%;width:28%;height:25%;border-radius:15px 7px 25px 10px;background:linear-gradient(135deg,#eddcf2,#bb89d3,#7453b6);box-shadow:0 5px 0 #69467e;padding:9px;color:#fff4ff;transform:rotate(-5deg);font-size:13px}.silk-cloth b{position:absolute;right:10px;top:10px;background:#6b479e;border-radius:50%;width:25px;height:25px;text-align:center;line-height:25px}.silk-cloth.attracting{animation:float .6s infinite alternate}.neutral-bits{position:absolute;left:54%;top:73%;font-size:28px;color:#fff3d5;text-shadow:0 3px 1px #6b4c59}.dark-demonstration{position:absolute;inset:9% 0 0;background:#161829ad;border-radius:22px;z-index:-1}.hand-target{position:absolute;left:64%;top:45%;font-size:70px;transform:translateX(-50%)}.hand-target span{display:block;font-size:11px;color:#f8e9c9}.discharge-flash{position:absolute;left:58%;top:46%;font-size:110px;color:#ffed9b;text-shadow:0 0 18px white,0 0 35px #d3b4ff;z-index:30;animation:flash .15s infinite alternate;pointer-events:none}.sign-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;position:absolute;inset:6% 9% 23%}.material-sign-card{display:flex!important;position:relative;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:14px!important;background:#eff0e3dc!important;color:#493f4a!important;border:3px solid #c5a76e!important;border-radius:15px!important}.sign-material-art{display:block;width:60%;height:27%;border-radius:10px;background:linear-gradient(#d9f4ffb0,#93bcd7,#def4ff)}.material-sign-card.ebonite .sign-material-art{background:linear-gradient(#5a4b68,#211e30,#433951)}.material-sign-card.silk .sign-material-art{background:linear-gradient(135deg,#e5bde1,#9569bd,#f7d2eb);height:43%;border-radius:5px 20px}.material-sign-card.wool .sign-material-art{background:repeating-radial-gradient(ellipse,#e6c5a2 0 3px,#b5997a 3px 6px);height:43%;border-radius:20px}.assigned-sign{position:absolute;right:10px;top:8px;font-size:25px;color:#7959af}.sign-choice{position:absolute;bottom:9%;left:32%;display:flex;gap:15px}.sign-choice button{font-size:18px!important;touch-action:none}.pair-title{position:absolute;top:1%;left:25%;right:10%;text-align:center;background:#fff0d6e8;color:#6f4d39;padding:8px;font-size:13px;border-radius:7px}.suspended{position:absolute;left:58%;top:39%;width:23%;height:6%;border-radius:16px;transform:rotate(var(--swing,0deg));transition:transform .7s ease;transform-origin:center -100px;background:linear-gradient(#e8fbff,#9ecee0,#dffaff);border:1px solid #729fb5;box-shadow:0 5px 3px #5141563d}.suspended:before{content:'';position:absolute;width:1px;height:90px;bottom:100%;left:50%;background:#524556}.suspended span{position:absolute;right:10%;top:0%;font-size:22px;color:#8243ae}.suspended small{position:absolute;top:100%;left:0;right:0;background:#fff3dced;font-size:10px;color:#4f4052;padding:4px;text-align:center;white-space:nowrap}.ebony-rod{left:59%;top:66%;background:linear-gradient(#5f546f,#2d293d,#5a4c68);border-color:#4e415a}.ebony-rod span{color:#eee0ff}.prediction-buttons{left:21%;bottom:12%;right:16%;justify-content:center}.force-indicator{position:absolute;left:20%;bottom:1%;right:10%;font-size:12px;text-align:center;background:#fcf0d5ed;padding:8px;border-radius:6px;color:#534253}.live-device{position:absolute;width:25%;height:44%;transform:translate(-50%,-50%);max-width:225px;--angle:0deg;filter:drop-shadow(0 6px 3px #55455340)}.device-ball{position:absolute;left:40%;top:-6%;width:20%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 30% 25%,#ffedb3,#c49332 65%,#685035);border:2px solid #a78145;z-index:5}.device-plug{position:absolute;left:40%;top:20%;height:8%;width:20%;background:#835ec3;border-radius:6px;z-index:4}.device-stem{position:absolute;left:48%;top:11%;bottom:25%;width:4%;background:linear-gradient(90deg,#b78733,#ffdda1,#bb8e39);z-index:4}.device-body{position:absolute;inset:26% 6% 0;border:8px solid #579c9e;border-bottom-width:14px;border-radius:19px 19px 30px 30px;background:linear-gradient(120deg,#ffffffab,#d5f0f44d 40%,#ffffff95);box-shadow:inset 0 0 14px #ecffffa0}.leaf{position:absolute;left:48%;top:53%;width:7%;height:35%;border-radius:0 0 3px 3px;background:linear-gradient(90deg,#ac8d50,#fff0b1,#b89350);transform-origin:top center;z-index:7;transition:transform .5s}.leaf-left{transform:rotate(var(--angle))}.leaf-right{transform:rotate(calc(-1 * var(--angle)))}.device-sign{position:absolute;right:1%;top:-7%;background:#7451aa;border:1px solid #e8d3ff;color:white;min-width:23px;height:23px;text-align:center;border-radius:50%;font-weight:900}.needle{position:absolute;left:50%;bottom:16%;height:55%;width:3%;background:#8252b5;transform-origin:bottom center;transform:rotate(var(--angle));transition:transform .5s;z-index:5}.meter .device-body{border-radius:50%;background:radial-gradient(#fff7e5,#dfdbc8);border-color:#91653c}.dial-ticks{position:absolute;left:7%;right:7%;top:19%;font-size:9px;color:#635d56;text-align:center}.part-buttons{left:0;top:6%;max-width:33%;flex-direction:column}.device-note,.meter-reading{position:absolute;left:30%;right:0;bottom:8%;text-align:center;color:#483c46;background:#fff4dbe8;font-size:12px;border-radius:6px;padding:7px}.kind-7 .live-device,.kind-8 .live-device{height:26%;width:20%}.bridge-target{position:absolute;left:28%;top:33%;width:46%;height:8%;border:2px dashed #f8d57f;border-radius:9px;background:#e5e6e545;text-align:center;font-size:10px;color:#544954}.material-picker{left:10%;right:5%;top:0%;justify-content:center}.charge-readings{position:absolute;left:20%;right:5%;bottom:3%;display:flex;gap:16px;justify-content:center;font-size:12px;background:#f8efdcdd;padding:8px;color:#52454e;border-radius:6px}.machine-art{position:absolute;left:19%;top:12%;width:71%;height:73%;overflow:hidden}.machine-art>img{width:100%;height:100%;object-fit:contain}.spinning-disc{position:absolute;border:3px solid #c79e63;border-radius:50%;background:repeating-conic-gradient(#e9c18c70 0deg 8deg,transparent 8deg 30deg);aspect-ratio:1;width:40%;top:15%;opacity:.75}.disc-one{left:25%}.disc-two{left:39%;border-color:#9368aa}.crank-handle{position:absolute;left:75%;top:68%;width:50px;height:50px;border:4px solid #a48754;background:#8260ab;color:#ffe3a0;border-radius:50%;font-size:27px;padding:0;touch-action:none;box-shadow:0 4px 0 #60443c;z-index:18}.bank{position:absolute;top:73%;width:20%;color:#e5f9fd;font-size:9px;text-align:center;background:#293843d9;border:1px solid #b49669;border-radius:6px;padding:5px}.bank-plus{left:21%}.bank-minus{left:72%}.bank b{display:block;font-size:16px;color:#ffe0a0}.machine-parts{left:10%;right:5%;top:0;justify-content:center}.machine-spark{left:57%;top:10%;font-size:80px}.assembly-target{position:absolute;left:36%;top:13%;width:40%;height:48%;border:3px dashed #eac378;border-radius:20px;background:#e3f3e171;display:grid;place-items:center;padding:18px;font-size:14px;color:#53413a;text-align:center}.assembly-tray{position:absolute;left:6%;right:0;bottom:9%;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.assembly-part{min-width:95px;background:linear-gradient(#ede0c3,#d0b17c);border:2px solid #896549;color:#493a2d;font-size:11px;border-radius:8px;box-shadow:0 3px 0 #7d6452;touch-action:none;padding:10px}.assembly-part.dragging{filter:brightness(1.2);outline:3px solid #ebbc71}.assembly-status{position:absolute;bottom:0;left:38%;color:#fff2db;background:#3b3f48e8;padding:5px 12px;border-radius:6px;font-size:12px}.kind-10 #c-built{position:absolute;inset:0}.kind-10 .lab-object{z-index:20}.source-note,.model-note{font-size:12px!important;color:#765f45}.chapter-dialog .journal figure{margin:0 0 15px;display:grid;justify-items:center;gap:7px}.chapter-dialog .journal img{max-height:280px}.chapter-dialog .journal figcaption{font-size:12px}.video-local-label{display:block;background:#ece2ff;padding:13px;border-radius:9px}.video-local-label input{display:block;margin-top:10px;max-width:100%}#c-video{width:100%;max-height:65vh;margin-top:15px}.chapter-dialog .celebration{z-index:95}.chapter-dialog .journal{z-index:90}
@keyframes flash{to{opacity:.1;transform:scale(.92)}}
@media(max-width:700px){.chapter-dialog .quest{max-width:none}.chapter-road{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.chapter-hub{padding:15px 10px}.chapter-hub h3{font-size:22px}.lesson-node{min-height:95px;grid-template-columns:25px 1fr;padding:8px;gap:6px;font-size:11px;border-radius:10px}.node-number{width:25px;height:25px;font-size:10px}.lesson-node small{font-size:8px}.chapter-npc{left:13%;top:25%;height:18%;width:21%}.chapter-hero{left:23%;top:27%;height:15%}.mini-play{left:2%;right:2%;top:25%;bottom:2%}.lab-object{width:22%;height:20%}.object-label{font-size:9px;max-width:140px;padding:3px 5px}.glass.lab-object,.metal.lab-object{width:28%;height:6%}.lab-object.connected{width:42%}.comb.lab-object{width:26%;height:12%}.part-buttons{top:0%;left:0;max-width:32%}.part-buttons button{font-size:8px!important;padding:5px 6px!important;min-height:27px!important}.live-device{width:35%;height:44%}.device-body{border-width:5px;border-bottom-width:9px}.device-ball{border-width:1px}.device-sign{font-size:12px;min-width:20px;height:20px}.device-note,.meter-reading{font-size:9px;left:24%;bottom:0}.material-picker{left:0;right:0;top:0;gap:3px}.material-picker button{font-size:8px!important;padding:4px 6px!important;min-height:25px!important}.charge-readings{left:5%;right:5%;font-size:9px;gap:8px;padding:6px}.kind-7 .live-device,.kind-8 .live-device{width:24%;height:29%}.bridge-target{font-size:8px;left:25%;width:51%;height:9%}.dial-ticks{font-size:7px}.mini-play button:not(.lab-object):not(.assembly-part):not(.crank-handle){font-size:9px;min-height:27px;padding:5px 7px}.machine-art{left:9%;width:90%;top:15%;height:62%}.bank{top:73%;font-size:7px;width:26%}.bank-plus{left:15%}.bank-minus{left:70%}.bank b{font-size:12px}.crank-handle{width:38px;height:38px;font-size:22px;border-width:3px}.machine-parts{left:0;right:0}.machine-parts button{font-size:8px!important;padding:4px 6px!important}.assembly-target{left:29%;width:55%;font-size:11px}.assembly-tray{left:0;right:0;bottom:2%;gap:4px}.assembly-part{min-width:82px;min-height:32px;font-size:9px;padding:6px;box-shadow:0 2px 0 #74533e}.assembly-status{bottom:-3%;font-size:9px}.sign-grid{inset:4% 5% 26%;gap:10px}.material-sign-card{font-size:11px!important}.sign-choice{left:24%;bottom:9%}.pair-title{font-size:10px;left:12%;right:4%;padding:5px}.suspended small{font-size:8px}.suspended span{font-size:17px}.suspended:before{height:60px}.prediction-buttons{left:8%;right:0}.force-indicator{left:4%;right:0;font-size:9px}.hand-target{font-size:55px}.hand-target span{font-size:9px}.mini-rub{font-size:9px;left:25%;width:55%;padding:5px}.mini-toast{font-size:10px;max-width:90%;width:max-content;padding:5px 8px}.experiment-tabs{left:0;right:0}.water-faucet{font-size:9px;border-width:6px}.silk-cloth{font-size:10px}.water-basin{border-width:5px}}
@media(prefers-reduced-motion:reduce){.spinning-disc,.crank-handle{transition:none}.discharge-flash{animation:none}}

/* Transparent generated atlas; separate objects, never stretched scenery. */
.assembly-art,.sign-material-art{background-image:url('./lab-parts.png')!important;background-size:400% 200%!important;background-repeat:no-repeat!important;border:0!important;border-radius:0!important}
.sign-material-art{width:100%!important;height:75%!important;max-width:180px}
.material-sign-card.glass .sign-material-art{background-position:0% 0%}
.material-sign-card.ebonite .sign-material-art{background-position:33.333% 0%}
.material-sign-card.silk .sign-material-art{background-position:66.666% 0%}
.material-sign-card.wool .sign-material-art{background-position:100% 0%}
.assembly-part{display:flex;flex-direction:column;align-items:center;width:18%;max-width:125px;min-width:60px;padding:5px}
.assembly-art{display:block;width:65px;height:65px;flex:none}
.part-jar .assembly-art{background-position:0% 100%}.part-lid .assembly-art{background-position:33.333% 100%}.part-wire .assembly-art{background-position:66.666% 100%}.part-foil .assembly-art{background-position:100% 100%}
.part-ball .assembly-art{background-image:radial-gradient(circle at 30% 25%,#fff5bf,#bc903f 65%,#6b5740)!important;background-size:100% 100%!important;border-radius:50%!important;width:40px;height:40px;margin:12px}
.drag-ghost{position:fixed!important;transform:translate(-50%,-50%)!important;z-index:150!important;pointer-events:none!important;opacity:.95;box-shadow:0 8px 20px #21193488!important;width:100px!important}
.neutral-bits.attracted{animation:paper-to-cloth 1s ease-in-out forwards}@keyframes paper-to-cloth{to{transform:translate(-15%,-115px) rotate(-15deg)}}
@media(max-width:700px){.assembly-art{width:38px;height:38px}.assembly-part{font-size:8px;min-width:50px}.part-ball .assembly-art{width:25px;height:25px;margin:6px}.sign-material-art{max-width:100px}}

.paper-rub-pad{position:absolute;left:35%;top:66%;width:27%;height:14%;border-radius:5px;background:linear-gradient(#fffdf0,#dfd8c7);border:1px solid #baaa86;box-shadow:0 5px 0 #493d5080;padding:8px;text-align:center;color:#5a4551;font-size:11px;transform:rotate(-5deg)}

.assembled-preview{position:absolute;inset:5% 17% 10%;pointer-events:none}.assembly-instruction{position:absolute;bottom:4%;left:3%;right:3%;background:#fff7e8e8;padding:5px;border-radius:5px;font-size:11px}.placed-part{position:absolute;background:url('./lab-parts.png') no-repeat;background-size:400% 200%;animation:part-settle .4s ease-out}.placed-jar{inset:8% 0 0;background-position:0% 100%;z-index:1}.placed-lid{left:10%;right:10%;top:-4%;height:34%;background-position:33.333% 100%;z-index:5}.placed-wire{left:30%;right:30%;top:8%;height:65%;background-position:66.666% 100%;z-index:4}.placed-foil{left:30%;right:30%;top:46%;height:39%;background-position:100% 100%;z-index:3}.placed-ball{background:radial-gradient(circle at 30% 25%,#fff4b4,#ad8a52 70%,#655440);border-radius:50%;left:42%;width:16%;aspect-ratio:1;top:0;z-index:6}#c-built-scope .device-body{border:3px solid #96c9d6;border-bottom-width:7px;border-radius:9px 9px 16px 16px}#c-built-scope .device-plug{left:28%;width:44%;border-radius:7px;height:9%;background:#8055bb}@keyframes part-settle{from{translate:0 -20px;opacity:.1}to{translate:0 0;opacity:1}}
