/* Physical controls and a small continuous SVG rig; all effects are cosmetic. */
.button,.speed,.dock-item,.stock-shortcut,.icon-button{transition:background-color .12s,box-shadow .12s,translate .1s,filter .12s;will-change:auto}
.button:not(:disabled):hover,.speed:not(:disabled):hover,.stock-shortcut:not(:disabled):hover{filter:brightness(1.055);translate:0 -1px}
.button:not(:disabled):active,.speed:not(:disabled):active,.stock-shortcut:not(:disabled):active,.dock-item:not(:disabled):active{translate:0 3px;box-shadow:0 0 0 #15343e;filter:brightness(.96)}
.machine:active:not(:disabled){filter:brightness(.95)}
.game-time .feel-control{min-width:25px;padding:2px 5px;font-size:17px}.feel-control[aria-pressed=false]{opacity:.6}
.inspector{animation:panel-arrive .19s cubic-bezier(.2,.8,.3,1)}
.machine.selected{box-shadow:inset 0 0 0 2px #ffdf84}.machine-progress i,.kpi-track i,.today-kpi-track i{transition:width .3s linear}
.worker-action{position:absolute;top:11px;left:50%;translate:-50% 0;background:#fff6d3;border:1px solid #15343e;border-radius:7px;padding:1px 5px;font-size:8px;font-style:normal;white-space:nowrap;opacity:0;pointer-events:none}
.worker:hover .worker-action,.worker:focus-visible .worker-action{opacity:1}
.worker[data-fx-moving=true] .worker-action{opacity:0}
.worker .toon-body{animation:feel-breathe 2.6s ease-in-out infinite;animation-delay:var(--toon-delay);transform-origin:48px 96px}
.worker.mood-panic .toon-body{animation:feel-breathe 1.3s ease-in-out infinite}
.worker .toon-head{animation:feel-look 3.8s ease-in-out infinite;animation-delay:var(--toon-delay)}
.toon-eyes{transform-origin:48px 38px;animation:feel-blink 5.1s linear infinite;animation-delay:var(--toon-delay)}
.worker .toon-leg{animation:none;transform-origin:48px 87px}
.worker .toon-action-arms{transform-origin:38px 72px}
.worker[data-work-action=maintain] .toon-body,.worker[data-work-action=repair] .toon-body{animation:feel-kneel 1.2s ease-in-out infinite;animation-delay:var(--toon-delay)}
.worker[data-work-action=maintain] .toon-action-arms{animation:feel-wipe .8s ease-in-out infinite alternate;animation-delay:var(--toon-delay)}
.worker[data-work-action=repair] .toon-action-arms{animation:feel-wrench .7s ease-in-out infinite alternate;animation-delay:var(--toon-delay)}
.worker[data-work-action=diagnose] .toon-head{animation:feel-diagnose 1.7s ease-in-out infinite;animation-delay:var(--toon-delay)}
.worker[data-work-action=diagnose] .toon-action-arms{animation:feel-wrench 1.4s ease-in-out infinite alternate}
.worker[data-work-action=inspect] .toon-action-arms,.worker[data-work-action=teach] .toon-action-arms{animation:feel-write 1.2s ease-in-out infinite;animation-delay:var(--toon-delay)}
.worker[data-work-action=install] .toon-action-arms{animation:feel-plug 1.3s ease-in-out infinite;animation-delay:var(--toon-delay)}
.worker[data-work-action=phone] .toon-head{animation:feel-phone .9s ease-in-out infinite}
.worker[data-work-action=wait] .leg-right{animation:feel-tap 1.3s ease-in-out infinite;transform-origin:58px 98px}
.worker[data-work-action=tired] .toon-action-arms{animation:feel-stretch 3s ease-in-out infinite}
.worker[data-work-action=angry] .leg-right{animation:feel-stomp 1.4s ease-in-out infinite}
.office-workers .toon-action-arms{animation:feel-write .9s ease-in-out infinite;animation-delay:var(--toon-delay)}
.office-workers [data-work-action=handover] .toon-action-arms{animation:feel-plug 1.5s ease-in-out infinite}
.worker[data-fx-facing=left]>.portrait{scale:-1 1}
.worker[data-fx-moving=true] .toon-body{animation:none!important;transform:translateY(var(--walk-bob,0px)) rotate(var(--walk-lean,0deg));transform-origin:48px 100px}
.worker[data-fx-moving=true] .leg-left{animation:none!important;transform:translateY(var(--walk-lift-left,0px)) rotate(var(--walk-left,0deg));transform-origin:40px 86px}
.worker[data-fx-moving=true] .leg-right{animation:none!important;transform:translateY(var(--walk-lift-right,0px)) rotate(var(--walk-right,0deg));transform-origin:57px 86px}
.worker[data-fx-moving=true] .toon-action-arms{animation:none!important;transform:rotate(var(--walk-arm,0deg))}
.worker[data-fx-moving=true] .toon-head{animation:none!important;transform:rotate(calc(var(--walk-arm,0deg) * -.12))}
.worker .portrait.small{width:72px;height:88px}
.worker{width:76px;height:100px}
.worker:after{content:'';position:absolute;bottom:8px;width:34px;height:5px;border-radius:50%;background:#15343e20;z-index:-1;pointer-events:none}
.worker[data-fx-moving=true]>.toon-reaction{opacity:.5;scale:.8}
.doodle-tool.processing .toon-wafer{animation:feel-process 2.3s linear infinite;transform-origin:76px 77px}
.doodle-tool.processing .toon-lamp{animation:feel-lamp 2s ease-in-out infinite}
.oht-cart{transition:none!important}.oht-cable,.oht-grip{transition:none!important}
.office-coffee:after{content:'⌁';position:absolute;left:13px;top:-17px;font-size:23px;color:#628b8d;animation:feel-steam 3s ease-in-out infinite}
.game-fx-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:120}
.game-float{position:absolute;color:#245d55;font-weight:900;font-size:18px;border:2px solid #15343e;border-radius:8px 5px;padding:4px 9px;background:#ffe09a;box-shadow:3px 3px #15343e22;animation:feel-float 1s cubic-bezier(.2,.8,.3,1) forwards}
.game-float.bad{background:#ffb79d;color:#942c20}
.game-float.output{font-size:21px;color:#206956;background:#f4fff0;border-color:#4c9981;box-shadow:0 2px 0 #15343e33;white-space:nowrap}
@keyframes panel-arrive{from{opacity:.5;translate:22px 0}to{opacity:1;translate:0 0}}
@keyframes feel-breathe{50%{transform:translateY(-1px) scaleY(1.015)}}
@keyframes feel-look{35%{transform:rotate(-2deg)}70%{transform:rotate(2deg)}}
@keyframes feel-blink{0%,92%,96%,100%{transform:scaleY(1)}94%{transform:scaleY(.08)}}
@keyframes feel-kneel{0%,100%{transform:translate(2px,10px) rotate(9deg) scaleY(.89)}50%{transform:translate(4px,12px) rotate(12deg) scaleY(.87)}}
@keyframes feel-wrench{to{transform:rotate(-14deg) translate(-2px,1px)}}
@keyframes feel-wipe{to{transform:translate(7px,-5px) rotate(-7deg)}}
@keyframes feel-diagnose{30%{transform:translate(4px,2px) rotate(8deg)}70%{transform:translate(-2px,0) rotate(-5deg)}}
@keyframes feel-write{35%{transform:translate(1px,-2px) rotate(-4deg)}70%{transform:translate(-1px,0) rotate(2deg)}}
@keyframes feel-plug{20%,80%{transform:translate(5px,0) rotate(-8deg)}50%{transform:translate(1px,2px)}}
@keyframes feel-phone{50%{transform:rotate(7deg) translateY(1px)}}
@keyframes feel-tap{20%,40%{transform:rotate(-9deg)}30%,50%{transform:rotate(0)}}
@keyframes feel-stretch{50%{transform:translateY(-4px) scaleX(1.08)}}
@keyframes feel-stomp{20%{transform:translateY(-5px) rotate(-8deg)}30%{transform:translateY(2px)}}
@keyframes feel-walk-bob{0%,50%,100%{transform:translateY(0) rotate(-2deg)}25%,75%{transform:translateY(-3px) rotate(1deg)}}
@keyframes feel-stride{0%,100%{transform:rotate(25deg)}50%{transform:rotate(-22deg)}}
@keyframes feel-swing{0%,100%{transform:rotate(8deg)}50%{transform:rotate(-9deg)}}
@keyframes feel-process{50%{transform:rotate(15deg)}}
@keyframes feel-lamp{50%{opacity:.65}}
@keyframes feel-steam{0%{translate:0 3px;opacity:0}40%{opacity:.7}100%{translate:3px -12px;opacity:0}}
@keyframes feel-float{0%{opacity:0;translate:-50% 5px;scale:.7}18%{opacity:1;scale:1.08}35%{scale:1}80%{opacity:1}100%{opacity:0;translate:-50% -52px}}
#app.simulation-paused .world *,#app .worker[data-fx-paused=true] *{animation-play-state:paused!important}
html.reduced-motion *,html.reduced-motion #app *,html.reduced-motion *:before,html.reduced-motion *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
.reduced-motion .game-fx-layer{display:none}
@media(prefers-reduced-motion:reduce){#app *,*:before,*:after{animation:none!important;transition:none!important}}
@media(max-width:700px){.game-time .feel-control{min-width:22px;font-size:15px;padding:1px 3px}.game-time>div{gap:2px}.worker-action{font-size:8px}}
@media(max-width:560px){.game-time>strong{display:block;font-size:16px;margin:1px 0 0}.game-time>div{margin-top:2px}.game-brand{min-width:130px}.hud-metrics span{margin-bottom:2px}}
