/* Native glass art scales with the board; vessel numbers belong only to accessible labels. */
body[data-kd-game="laboratorium"]{min-height:0;height:100dvh;overflow:hidden;background:#234e47}
body[data-kd-game="laboratorium"] .app{height:100dvh;max-width:1600px;padding:8px 16px 50px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.topbar{padding:0;flex:none}.topbar h1{font-size:22px}.top-actions{flex-wrap:nowrap!important;gap:6px!important}
.game{min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}
.difficulty,.speech,.character>span,.rule-note,.bench-plaque,footer>span,.campaign-track,.experiment-name #current-tier{display:none!important}
.experiment-bar{flex:none;padding:7px 14px}.experiment-name strong{font-size:17px}.stats{gap:14px}.stats>div:nth-child(3){display:none}
.stage,.stage:has(.dense),.stage.master-stage{min-height:0!important;padding:24px 165px 34px!important;flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;background-position:center 60%}
.stage:before{background:linear-gradient(#15382d08,#173f3230 50%,#13392c55)}
.play-area,.master-stage .play-area{padding:28px 14px 14px;width:100%;max-width:1100px;min-height:0;margin:0;background:linear-gradient(120deg,#244c3ce8,#315c45ee);border:1px solid #ddbc7ca0;border-bottom:9px solid #a07545;border-radius:28px 28px 20px 20px;box-shadow:inset 0 1px 0 #fce7ba88,0 5px 0 #58482d,0 22px 25px #132b2799;backdrop-filter:none}
.tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:1;display:flex;justify-content:center;align-items:flex-end;flex-wrap:wrap;gap:22px 12px;max-width:none}
.tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:1.45;gap:22px 20px}
.tube-button{width:auto;min-width:44px;padding:8px 0 0;align-self:flex-end;touch-action:manipulation}
.tube-button .tube,.flying-tube{width:calc(var(--vessel-width) * var(--vessel-scale));height:calc(var(--vessel-height) * var(--vessel-scale));border:0!important;border-radius:0;background:none;box-shadow:none!important;overflow:visible}
.tube:before,.tube:after{display:none!important}.vessel-svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(2px 6px 3px #0c241b35)}
.tube-button.selected .vessel-svg{filter:drop-shadow(0 0 8px #ffe5a8)}
.tube-button.valid .tube{outline:0}.tube-button.valid .vessel-svg{filter:drop-shadow(0 0 5px #a5ffd4)}
.tube-button.valid:after{content:'↓';position:absolute;top:-25px;font-size:26px;font-weight:900;color:#ceffe9}
.vessel-check{display:block;min-height:20px;line-height:20px;font-size:19px;font-weight:900;color:#c4ffb5}
.command-deck{flex:none;padding:8px 14px 10px}.under-board{min-height:0}.progress-track{margin:0 auto 6px}
#status:not(.notice){position:absolute!important;width:1px!important;height:1px!important;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.controls{display:flex;gap:8px}.controls .action{padding:8px 12px;min-height:44px}.controls #new{display:none}
.character{position:absolute!important;display:flex!important;justify-content:center;align-items:flex-end;bottom:15px!important;margin:0;width:150px!important;pointer-events:none}
.character .lab-actor{display:block;object-fit:contain;object-position:center bottom;width:auto;max-width:100%;height:260px;filter:drop-shadow(0 8px 4px #1a362f50);animation:none!important}
.kumka{left:7px;right:auto}.dumka{right:7px;left:auto}.kumka .lab-actor{height:65px}
footer{padding:0;min-height:0}.save-note:empty{display:none}.save-note[data-issue="true"]{margin:0;color:#ffe2b4}
@media(max-width:1100px){
 .stage,.stage:has(.dense),.stage.master-stage{padding:18px 105px 28px!important}
 .character{width:95px!important}.character .lab-actor{height:200px}.kumka .lab-actor{height:50px}
 .tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.8;gap:14px 6px}
 .tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:1.15;gap:14px 10px}
}
@media(max-width:700px){
 body[data-kd-game="laboratorium"] .app{padding:6px 8px 48px;gap:4px}
 .topbar{gap:4px;flex-wrap:nowrap}.brand .kd-logo{display:none}.topbar h1{font-size:17px;line-height:1.1}.top-actions{width:auto}.top-actions .map-button{font-size:0;padding:6px;min-width:44px}.map-button span{display:block;font-size:23px}.map-button b{display:none}.icon-button{width:44px;height:44px;flex:none}
 .stage,.stage:has(.dense),.stage.master-stage{padding:20px 7px 118px!important;align-items:center;background-position:48% center}
 .play-area,.master-stage .play-area{padding:18px 5px 7px;border-radius:20px 20px 12px 12px;border-bottom-width:6px}
 .tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.56;gap:12px 3px}
 .tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:.78;gap:14px 4px}
 .tube-button{padding:7px 0 0}.vessel-check{min-height:14px;line-height:14px;font-size:14px}
 .experiment-bar{padding:6px 9px;gap:5px}.experiment-name strong{font-size:14px}.stats{gap:7px}.stats strong{font-size:18px}.stats>div:nth-child(2){display:none}
 .controls{flex-wrap:nowrap;gap:5px}.controls .action{font-size:12px;padding:7px}.command-deck{padding:5px 7px 8px}
 .character{bottom:3px!important;width:80px!important}.character .lab-actor{height:112px}.kumka .lab-actor{height:28px}.kumka{left:calc(50% - 90px)}.dumka{right:calc(50% - 90px)}
}
@media(max-width:365px){.topbar h1{font-size:14px}.top-actions{gap:3px!important}.tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:.7}.tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.5}}
@media(max-height:650px){.stage,.stage:has(.dense),.stage.master-stage{padding-top:10px!important;padding-bottom:12px!important}.tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.55;gap:8px 3px}.tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:.8}.character .lab-actor{height:120px}.kumka .lab-actor{height:30px}}
@media(max-height:500px) and (orientation:landscape){
 body[data-kd-game="laboratorium"] .app{padding:4px 8px 42px;gap:2px}.stage,.stage:has(.dense),.stage.master-stage{padding:4px 64px!important}.play-area,.master-stage .play-area{padding:4px}.tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.45;gap:4px}.tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:.7}.tube-button{padding:2px}.vessel-check{min-height:0;height:0}.experiment-bar{padding:2px 10px}.topbar h1{font-size:17px}.character{width:60px!important}.character .lab-actor{height:100px}.kumka .lab-actor{height:25px}.kumka{left:2px}.dumka{right:2px}.command-deck{padding:4px}.progress-track{display:none}
}
@media(prefers-reduced-motion:reduce){.tube-button.hinted{animation:none;outline:3px solid #ffdf81}.tube-button{transition:none}}
/* Canonical alpha bounds: KD01 height 1170/1340; KD02 height 1329/1145.
   Width ratio 0.3323 keeps visible full-body heights 25:100 without cropping. */
.character .lab-actor{width:100%;height:auto!important;max-width:100%}
.kumka .lab-actor{width:33.23%}
.top-actions .icon-button{min-width:44px;min-height:44px}
@media(max-width:365px) and (max-height:650px){
 .stage,.stage:has(.dense),.stage.master-stage{padding:4px 7px!important;align-items:safe center}
 .play-area,.master-stage .play-area{padding:6px 5px 3px}
 .tube-grid,.tube-grid.dense,.tube-grid.master-board{--vessel-scale:.45;gap:8px 2px}
 .tube-grid[data-count="3"],.tube-grid[data-count="4"]{--vessel-scale:.7}
 .character{width:48px!important;bottom:3px!important}.kumka{left:0}.dumka{right:0}
 .controls .action{gap:3px;font-size:11px;padding:6px 4px}
}
.character{z-index:4}

/* WD212: equal cylinders stay equal; double capacity stays visibly longer. */
.tube-grid,.tube-grid.dense,.tube-grid.master-board{display:grid;align-items:end;justify-content:center;gap:12px 6px}
#board .tube-button{min-width:44px;min-height:44px}
.lab-settings{border:0;border-top:1px solid #ddd;padding:15px 0;margin:15px 0;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.lab-settings label{display:flex;align-items:center;gap:6px}.lab-settings input{width:24px;height:24px}
.lab-settings button{min-height:44px;border:1px solid #bcb4cc;border-radius:12px;padding:8px 12px;background:#fff;color:#30204a;font:inherit}
.lab-settings p{width:100%;font-size:14px;margin:0}.lab-settings p:empty{display:none}
@media(max-width:700px){.stage,.stage:has(.dense),.stage.master-stage{padding-bottom:74px!important}.character{width:58px!important}.play-area,.master-stage .play-area{padding-top:8px}}
@media(max-height:650px){.stage,.stage:has(.dense),.stage.master-stage{padding:4px 6px!important}.character{width:40px!important;bottom:0!important}}

#light-experiment{height:62px;max-width:480px;margin:4px auto 0;pointer-events:none}#light-experiment svg{height:100%;width:100%;overflow:visible}.light-cell.charged circle:first-of-type{filter:drop-shadow(0 0 4px var(--beam))}.lit .experiment-prism{filter:drop-shadow(0 0 12px #fff3a3)}.stage.solved:after{content:'';position:absolute;inset:0;pointer-events:none;background:conic-gradient(from 225deg at 50% 80%,transparent,#ed63883b,#30b8aa45,#8863d13b,#f1b9425b,transparent);mix-blend-mode:screen;animation:experiment-light 1.5s ease-out both}@keyframes experiment-light{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}
@media(max-height:500px){#light-experiment{height:30px;margin:0}.play-area{padding-bottom:2px!important}}

@media(max-height:500px) and (min-width:650px){
 .game{display:grid;grid-template-columns:minmax(0,1fr) 145px;grid-template-rows:62px minmax(0,1fr)}
 .stage,.stage:has(.dense),.stage.master-stage{grid-column:1;grid-row:1/3;padding:4px 8px!important;border-right:1px solid #89ad8e55}
 .experiment-bar{grid-column:2;grid-row:1;padding:4px;justify-content:center}.experiment-name{gap:6px}.experiment-name strong{font-size:12px;max-width:74px}.stats{display:none}
 .command-deck{grid-column:2;grid-row:2;padding:4px}.controls{display:grid;grid-template-columns:1fr;gap:5px}.controls #previous{display:none}.controls .action{padding:4px;min-height:44px}.command-deck .under-board{display:none}
 .play-area{padding:5px!important}.character{width:35px!important}
}

/* Three static expression frames; original approved coat remains the neutral frame.
   Equal frame widths preserve full bodies. No transform bounce used as acting. */
.character .reaction-art{width:100%;aspect-ratio:627 / 836;background-image:url('assets/Dumka-lab-reactions-wd212.png');background-repeat:no-repeat;background-size:300% 100%;background-position:0% 0;filter:drop-shadow(0 8px 4px #1a362f50)}
.character.kumka .reaction-art{width:32.7%;aspect-ratio:1;background-image:url('assets/Kumka-lab-reactions-wd212.png')}
.character[data-expression="surprised"] .reaction-art{background-position:50% 0}
.character[data-expression="joy"] .reaction-art{background-position:100% 0}
.character .lab-actor[hidden],.character .reaction-art[hidden]{display:none!important}
