/* Small physical cues accompany the exact supplied ALPHA machines. */
[data-mechanics="on"] .green-switch{transition:transform .12s ease,filter .12s ease;transform-origin:center}
[data-mechanics="on"] .green-switch:active{transform:translateY(2px) scale(.94);filter:brightness(.85);box-shadow:inset 0 3px 5px #003f1b,0 0 7px #36ff5b}
[data-mechanics="on"][data-state="opening"] .green-switch{animation:mechanicalPress .32s ease both}
@keyframes mechanicalPress{0%{transform:translateY(2px) scale(.94)}100%{transform:none}}
.metal-reflection{position:absolute;pointer-events:none;z-index:4;mix-blend-mode:screen;opacity:.28;background:linear-gradient(115deg,transparent 20%,#ffdc9410 34%,#ffe9ad7a 38%,transparent 43%,transparent 60%,#ff464435 69%,transparent 74%);background-size:220% 100%;animation:metalLightSweep var(--beam-cycle,7s) ease-in-out infinite;filter:brightness(var(--light-intensity,1))}
.bonus-scene>.metal-reflection{left:13%;top:27.5%;width:72%;height:55%;clip-path:polygon(3% 9%,14% 0,89% 0,100% 8%,100% 88%,96% 100%,4% 100%,0 91%);mask-image:linear-gradient(90deg,#000 0 5%,transparent 8% 87%,#000 92%),linear-gradient(#000 0 3%,transparent 6% 91%,#000 95%);mask-composite:add}
.grand-machine>.metal-reflection{inset:4% 2% 8%;border-radius:10px;mask-image:linear-gradient(90deg,#000 0 10%,transparent 14% 86%,#000 90%),linear-gradient(#000 0 9%,transparent 13% 86%,#000 90%);mask-composite:add}
@keyframes metalLightSweep{0%,100%{background-position:100% 0;opacity:.13}50%{background-position:0 0;opacity:.36}}
[data-lighting="off"] .metal-reflection,[data-zone-machine="off"] .metal-reflection,[data-zone-lamps="off"] .metal-reflection{opacity:0!important;animation:none}
[data-light-mode="single"] .metal-reflection{background-image:linear-gradient(115deg,transparent 28%,var(--light-color) 38%,transparent 46%);opacity:.16}
[data-mechanics="on"].printer-bonus .feed-window{overflow:hidden;filter:none;perspective:none}
[data-mechanics="on"].printer-bonus .feed-window .receipt-paper,[data-mechanics="on"].printer-bonus .paper-curl{animation:none!important}
[data-mechanics="on"].printer-bonus .feed-window .receipt-paper{transform:none;clip-path:inset(0 0 100%)}
[data-mechanics="on"].printer-bonus[data-mechanics-phase="feeding"] .feed-window .receipt-paper{visibility:visible;clip-path:none;transform:translateY(calc((var(--feed-progress,0) - 1)*100%))}
[data-mechanics="on"].printer-bonus[data-mechanics-phase="attached"] .feed-window .receipt-paper,[data-mechanics="on"].printer-bonus[data-state="printed"] .feed-window .receipt-paper,[data-mechanics="on"].printer-bonus[data-state="cutting"] .feed-window .receipt-paper{visibility:visible;transform:none;clip-path:inset(0)}
[data-mechanics="on"].printer-bonus .paper-curl{display:none}
[data-mechanics="on"].printer-bonus[data-mechanics-phase="feeding"] .paper-curl{display:block;top:auto;bottom:0;height:5px;opacity:.65;background:linear-gradient(transparent,#fff0c520,#0a090742);border-radius:0 0 40% 40%}
[data-mechanics="on"].printer-bonus .feed-roller{animation:none;opacity:.85;background-size:100% 8px;background-position:0 var(--feed-distance,0px)}
[data-mechanics="on"].printer-bonus[data-feed-moving="yes"] .scene-closed{transform:translateY(var(--motor-shift,0px))}
[data-mechanics="on"].printer-bonus[data-feed-moving="yes"] .feed-roller{filter:brightness(1.16)}
[data-mechanics="on"].printer-bonus .feed-lip{height:6px;background:linear-gradient(#040404,transparent);z-index:14;box-shadow:0 -1px 1px #c8aa6f36}
[data-mechanics="on"] .cutter-blade{animation:none!important;box-shadow:0 0 4px #dbe6ea}
[data-mechanics-phase="hanging"] .feed-window .receipt-paper{transform:perspective(900px) rotateX(var(--paper-hang,0deg))!important;transform-origin:top center}
[data-mechanics-phase="hanging"] .feed-lip{background:repeating-linear-gradient(110deg,#d4b96c 0 2px,#17120b 2px 5px);height:2px}
.paper-contact-shadow{position:absolute;pointer-events:none;left:34%;width:32%;height:18px;bottom:75px;background:radial-gradient(ellipse,#0c0807a6,transparent 68%);opacity:0;z-index:0;filter:blur(4px)}
[data-mechanics-phase="falling"] .paper-contact-shadow{opacity:var(--landing-opacity,0)}
[data-mechanics-phase="settled"] .paper-contact-shadow{opacity:.5}
.printer-grand .board-frame,.printer-grand .board-frame .banner-window,.printer-grand .board-frame .receipt-paper{perspective:none;filter:none;transform:none;clip-path:none}
.printer-grand .board-frame .banner-window{overflow:hidden;transition:none}
.printer-grand .board-frame .receipt-paper{animation:none!important}
.printer-grand[data-state="opening"]:not([data-mechanics-phase="unrolling"]):not([data-mechanics-phase="displayed"]) .banner-window{max-height:0}
[data-mechanics="on"].printer-grand[data-mechanics-phase="unrolling"] .paper-roll{background:repeating-linear-gradient(180deg,#e3bb66 0,#fff1ba 3px,#8b5b16 7px,#281807 11px,#f7d891 16px);background-size:100% 16px;border-radius:50%/20%;box-shadow:0 4px 8px #0008,inset 0 -3px 5px #1e100c88}
[data-mechanics="on"].printer-grand[data-mechanics-phase="unrolling"] .upper-roller{background-position:0 calc(var(--unroll-progress,0)*120px)}
[data-mechanics="on"].printer-grand[data-mechanics-phase="displayed"] .receipt-paper{clip-path:none}
@media(prefers-reduced-motion:reduce){.metal-reflection{animation:none;opacity:.12}[data-mechanics="on"] .green-switch{transition:none}[data-mechanics="on"] .scene-closed{transform:none!important}}

/* Bonus prints only the decoded artwork: loading or retrying never exposes a blank strip. */
.printer-bonus[data-image-ready="no"] .feed-window{visibility:hidden}
/* A static, pending or failed Grand preview also keeps its empty banner hidden. */
.printer-grand:not([data-image-ready="yes"]) .banner-window{visibility:hidden;max-height:0!important}
.printer-reveal[data-image-ready="no"] .receipt-image,
.printer-reveal[data-image-ready="no"] .detached-image{opacity:0!important}
.printer-reveal[data-motion-complete="yes"] .feed-window .receipt-paper{clip-path:inset(0)!important}
.printer-grand[data-motion-complete="yes"] .receipt-paper{clip-path:none!important}
.printer-reveal[data-image-ready="no"] .cut-trigger{display:none!important}
