/* Generated from assets/style.css by tools/build_machine_styles.py */
.machine-stage{flex:1;min-height:590px;position:relative;isolation:isolate;display:grid;place-items:center;background:#d9c19c url("backgrounds/lotto-playroom-table-v1.webp") center center/cover no-repeat;overflow:hidden}
.machine-stage:before{content:"";position:absolute;inset:-3%;z-index:-2;background:radial-gradient(ellipse at 50% 43%,rgba(20,48,61,.34) 0,rgba(25,55,65,.2) 28%,transparent 58%),linear-gradient(to bottom,rgba(255,247,222,.04),rgba(23,31,35,.13));filter:blur(8px);pointer-events:none}
.machine-stage:after{content:"";position:absolute;z-index:-1;left:50%;bottom:12%;width:min(48%,430px);height:42px;transform:translateX(-50%);border-radius:50%;background:rgba(42,25,13,.42);filter:blur(18px);opacity:.68;pointer-events:none}
.machine-frame{height:470px;width:360px;position:relative;z-index:1;display:flex;align-items:center;flex-direction:column;transform:scale(1.1);filter:drop-shadow(0 24px 32px rgba(5,12,37,.3))}
.machine-frame:before{content:"";position:absolute;width:352px;height:352px;top:40px;border-radius:50%;border:4px double rgba(235,248,255,.8);box-shadow:inset 0 0 0 9px rgba(215,239,250,.08),0 0 0 1px rgba(35,78,130,.2);z-index:0;pointer-events:none}.machine-frame:after{display:none}
.chamber.resonating{animation:vacuumResonanceGlow 2.9s ease-out}@keyframes vacuumResonanceGlow{0%{filter:drop-shadow(0 0 0 rgba(210,245,255,0))}8%{filter:drop-shadow(0 0 18px rgba(210,245,255,.92))}42%{filter:drop-shadow(0 0 11px rgba(210,245,255,.52))}100%{filter:drop-shadow(0 0 2px rgba(210,245,255,0))}}
.machine-frame.extracting .hopper{filter:drop-shadow(0 0 12px rgba(190,239,255,.82))}
.machine-frame.extracting .hopper span:after{opacity:.12;transform:translateX(-50%);background:#d8f6ff;box-shadow:0 0 12px rgba(174,235,255,.95)}
.machine-frame.extracting .air-column{opacity:.96;filter:drop-shadow(0 -8px 8px rgba(194,240,255,.58))}
.machine-frame.extracting .air-column i{height:96%;animation-duration:.22s;background:linear-gradient(to top,rgba(218,247,255,.05),rgba(235,252,255,.96),rgba(160,221,255,.08))}
.outer-transit-ball{position:absolute;z-index:9;width:27px;height:27px;display:grid;place-items:center;border-radius:50%;color:#141414;font-size:9px;font-weight:900;box-shadow:inset -5px -5px 7px rgba(0,0,0,.3),inset 4px 4px 5px rgba(255,255,255,.62),0 0 9px rgba(206,244,255,.75);pointer-events:none;will-change:left,top,transform}
.outer-transit-ball[hidden]{display:none}
.hopper{height:70px;width:74px;border:2px solid rgba(235,248,255,.9);border-bottom:0;clip-path:polygon(18% 0,82% 0,100% 100%,0 100%);background:linear-gradient(90deg,rgba(80,118,150,.5),rgba(240,250,255,.86) 50%,rgba(70,105,140,.48));position:relative;z-index:3;box-shadow:inset 8px 0 12px rgba(255,255,255,.35)}
.hopper span{position:absolute;inset:10px 16px;background:#11161d;border:1px solid #939ca8}
.hopper span:after{content:"";position:absolute;left:50%;bottom:-14px;width:18px;height:5px;transform:translateX(-50%);border-radius:2px;background:#161c24;border:1px solid #8993a0;transition:.2s}.machine-frame.loading .hopper span:after{transform:translateX(-50%) rotate(70deg);background:#b9c3ce}.machine-frame.loading .hopper{filter:drop-shadow(0 0 8px rgba(190,220,235,.35))}
.chamber{width:300px;height:300px;border-radius:50%;border:5px double rgba(238,250,255,.88);background:radial-gradient(circle at 36% 23%,rgba(255,255,255,.36),rgba(255,255,255,.035) 24%,rgba(77,147,208,.035) 65%,rgba(255,255,255,.18));box-shadow:inset 12px 9px 16px rgba(255,255,255,.5),inset -12px -9px 18px rgba(42,95,151,.18),0 0 0 8px rgba(220,242,252,.2),0 18px 35px rgba(5,22,65,.24);position:relative;overflow:hidden;z-index:2;backdrop-filter:blur(.4px)}
.chamber:before{content:"";position:absolute;inset:7px;border-radius:50%;z-index:4;pointer-events:none;border:1px solid rgba(255,255,255,.72);background:linear-gradient(105deg,transparent 8%,rgba(255,255,255,.32) 13%,transparent 20% 72%,rgba(255,255,255,.22) 78%,transparent 84%)}
.air-column{position:absolute;z-index:2;left:50%;bottom:15px;width:176px;height:260px;transform:translateX(-50%);pointer-events:none;opacity:0;transition:opacity .25s}.machine-frame.air-on .air-column{opacity:.8}.air-column i{position:absolute;bottom:0;width:2px;height:82%;border-radius:50%;background:linear-gradient(to top,rgba(218,247,255,.08),rgba(226,249,255,.88),rgba(160,221,255,.04));filter:blur(.35px);animation:airRise .34s linear infinite}.air-column i:nth-child(1){left:12%;height:78%}.air-column i:nth-child(2){left:31%;height:94%;animation-delay:-.18s}.air-column i:nth-child(3){left:50%;height:100%;animation-delay:-.31s}.air-column i:nth-child(4){left:69%;height:92%;animation-delay:-.08s}.air-column i:nth-child(5){left:88%;height:76%;animation-delay:-.24s}
.machine-webgl{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;z-index:3}.chamber.webgl-render-ready .machine-ball{display:none}.chamber.webgl-active:after{content:"AIR MIX · 45 BALLS";position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:5;color:rgba(10,40,80,.58);font-size:7px;font-weight:700;letter-spacing:.17em;white-space:nowrap;pointer-events:none}
.machine-ball{width:25px;height:25px;border-radius:50%;position:absolute;display:grid;place-items:center;color:#171717;font-size:8px;font-weight:800;box-shadow:inset -4px -5px 6px rgba(0,0,0,.25),inset 3px 3px 4px rgba(255,255,255,.55);transition:transform .5s cubic-bezier(.2,.7,.3,1)}
.chamber.mixing .machine-ball{animation:mix var(--speed,1.1s) infinite ease-in-out alternate}
.air-intake{position:absolute;top:342px;left:50%;width:76px;height:43px;transform:translateX(-50%);border:4px double rgba(238,250,255,.9);border-radius:50% 50% 12px 12px;background:linear-gradient(90deg,rgba(82,139,181,.35),rgba(245,252,255,.76),rgba(82,139,181,.35));z-index:5;box-shadow:0 7px 13px rgba(12,35,75,.2)}.air-intake i{position:absolute;left:50%;top:8px;width:38px;height:19px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,#5d7890 0 16%,#ddecf4 19% 36%,#7c9bb0 39% 48%,transparent 51%)}.machine-frame.air-on .air-intake{box-shadow:0 0 22px rgba(181,235,255,.8)}
.lower-extractor{position:absolute;left:50%;top:352px;width:284px;height:76px;transform:translateX(-50%);z-index:6;pointer-events:none}.extract-neck{position:absolute;left:126px;top:-8px;width:34px;height:42px;border:4px double rgba(241,251,255,.88);border-top:0;background:linear-gradient(90deg,rgba(255,255,255,.12),rgba(255,255,255,.48),rgba(90,150,200,.12));transform:skewX(-10deg)}.extract-rail{position:absolute;left:16px;right:0;bottom:5px;height:31px;border:4px double rgba(239,250,255,.9);border-radius:4px 4px 16px 4px;background:linear-gradient(rgba(255,255,255,.38),rgba(102,165,210,.12));box-shadow:0 6px 12px rgba(15,49,93,.2)}.extract-rail i{position:absolute;left:126px;top:-24px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;color:#111;font-size:8px;font-style:normal;font-weight:800;box-shadow:inset -4px -4px 5px rgba(0,0,0,.28),inset 3px 3px 4px rgba(255,255,255,.5);animation:extractDown .72s cubic-bezier(.25,.8,.3,1) forwards;animation-delay:var(--delay)}
.extract-rail:after{content:attr(data-game);position:absolute;right:8px;top:5px;color:rgba(255,255,255,.82);font-size:6px;font-weight:900;letter-spacing:.08em}.extract-rail.game-pop{animation:railPulse .42s ease-out}@keyframes railPulse{50%{filter:drop-shadow(0 0 9px rgba(244,211,94,.9));transform:scale(1.025)}}
.machine-base{width:244px;height:62px;margin-top:-3px;border-radius:6px;background:linear-gradient(90deg,rgba(70,115,157,.38),rgba(239,249,253,.58) 46%,rgba(60,105,150,.38));border:2px solid rgba(235,248,255,.82);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 18px 30px rgba(3,20,58,.2);z-index:1;backdrop-filter:blur(2px)}
.machine-base span{font-size:15px;letter-spacing:.3em}
.machine-base small{font-size:7px;letter-spacing:.22em;margin-top:7px;color:#dce1e7}
.catch-tube{display:none}
@keyframes airRise{0%{transform:translateY(28px) scaleX(.45);opacity:0}25%{opacity:.95}100%{transform:translateY(-42px) scaleX(1.7);opacity:0}}
@keyframes extractDown{0%{transform:translate(0,-28px) scale(.65);opacity:.2}45%{transform:translate(0,23px) scale(1);opacity:1}100%{transform:translate(var(--slot-x),23px) scale(1);opacity:1}}
.machine-webgl{cursor:pointer;touch-action:none}.machine-webgl:focus-visible{outline:2px solid rgba(255,255,255,.9);outline-offset:-8px}.machine-webgl.interactive-hit{animation:chamberTouch .48s ease-out}@keyframes chamberTouch{0%{box-shadow:inset 0 0 0 0 rgba(255,255,255,.9)}45%{box-shadow:inset 0 0 0 18px rgba(176,229,255,.34)}100%{box-shadow:inset 0 0 0 42px transparent}}
.outer-transit-ball{width:31px;height:31px;border:2px solid rgba(255,255,255,.94);color:#111820;font-size:13px;font-weight:1000;line-height:1;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff;box-shadow:inset -5px -5px 7px rgba(0,0,0,.3),inset 4px 4px 5px rgba(255,255,255,.62),0 0 12px rgba(206,244,255,.95)}
.hopper-window-number{position:absolute;left:50%;top:50%;z-index:2;display:grid;place-items:center;width:40px;height:40px;transform:translate(-50%,-50%) scale(.55);border:3px solid #fff;border-radius:50%;color:#111820;font-size:21px;font-weight:1000;line-height:1;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff;box-shadow:0 0 0 2px rgba(20,28,38,.8),0 0 18px rgba(218,247,255,.95),inset -6px -7px 8px rgba(0,0,0,.25);opacity:0}
.hopper-window-number.visible{animation:hopperNumberPop 1.05s cubic-bezier(.18,1.35,.35,1) both}
@keyframes hopperNumberPop{0%{opacity:0;transform:translate(-50%,25%) scale(.35)}24%,78%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:.88;transform:translate(-50%,-50%) scale(.92)}}
.machine-ball{width:28px;height:28px;border:2px solid rgba(255,255,255,.92);color:#111820;font-size:12px;font-weight:1000;line-height:1;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}
.extract-rail i{width:29px;height:29px;border:2px solid rgba(255,255,255,.94);color:#111820;font-size:12px;font-weight:1000;line-height:1;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}
