#portraitTurboButton,.portraitControlInk { display:none; }
html[data-slot-orientation="portrait"] #portraitTurboButton { display:block; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot {
 left:var(--portrait-control-x);top:var(--portrait-control-y);
 width:max(44px,calc(var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px));
 height:max(44px,calc(var(--portrait-face-height) * var(--slot-cabinet-scale) * 1px));
 transform:translate(-50%,-50%);margin:0;padding:0;border:0;background:transparent;
 border-radius:0;isolation:isolate;filter:none;transition:none;touch-action:manipulation;
}
/* Faces and their bezels are baked into the single authored cabinet. Only ink
   and transient interaction shading are allowed over that artwork. */
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot::before { content:none;display:none; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot::after {
 content:"";position:absolute;left:50%;top:50%;
 width:calc(var(--portrait-face-width) * .84 * var(--slot-cabinet-scale) * 1px);
 height:calc(var(--portrait-face-height) * .84 * var(--slot-cabinet-scale) * 1px);
 transform:translate3d(-50%,-50%,0);border:0;border-radius:50%;opacity:0;
 background:#000;box-shadow:none;filter:none;transition:none;pointer-events:none;z-index:0;
}
html[data-slot-orientation="portrait"] #gameShell .controls #portraitTurboButton::after,
html[data-slot-orientation="portrait"] #gameShell .controls #maxBetButton::after {
 width:calc(var(--portrait-face-width) * .84 * var(--slot-cabinet-scale) * 1px);
 height:calc(var(--portrait-face-height) * .72 * var(--slot-cabinet-scale) * 1px);
 border-radius:calc(4 * var(--slot-cabinet-scale) * 1px);
}
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot:active::after,
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot.isPressed::after { opacity:.18; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot:disabled::after { opacity:.22; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot:disabled .portraitControlInk { opacity:.55; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot:focus-visible { outline:2px solid #e6ff88;outline-offset:2px; }
html[data-slot-orientation="portrait"] #gameShell .controls .hotspot > span:not(.spinAutoplayCount):not(.turboToggleFeedback) {
 inset:auto;width:1px;height:1px;margin:-1px;padding:0;clip:rect(0,0,0,0);overflow:hidden;pointer-events:none;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk {
 position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0);
 width:calc(var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px);
 height:calc(var(--portrait-face-height) * var(--slot-cabinet-scale) * 1px);
 display:flex;flex-direction:column;align-items:center;justify-content:center;
 gap:calc(5 * var(--slot-cabinet-scale) * 1px);margin:0;padding:0;z-index:1;
 color:#fff6d9;fill:currentColor;filter:none;opacity:1;pointer-events:none;overflow:visible;
 font-style:normal;line-height:1;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlLabel,
html[data-slot-orientation="portrait"] #gameShell .portraitTurboState {
 display:block;padding:0;margin:0;color:inherit;white-space:nowrap;
 font:700 max(10px,calc(27 * var(--slot-cabinet-scale) * 1px))/1 'Micro Pixel',monospace;
 letter-spacing:0;text-shadow:1px 1px 0 #170821;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlIcon {
 display:block;width:calc(48 * var(--slot-cabinet-scale) * 1px);height:calc(48 * var(--slot-cabinet-scale) * 1px);
 flex:none;overflow:visible;fill:currentColor;filter:drop-shadow(1px 1px 0 #170821);image-rendering:pixelated;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-minus .portraitControlIcon,
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-plus .portraitControlIcon { width:calc(44 * var(--slot-cabinet-scale) * 1px);height:calc(44 * var(--slot-cabinet-scale) * 1px); }
/* Center the visible pixel glyphs, excluding the font's final blank column.
   A seven-cell line box and tight SVG viewBoxes make the entire ink group
   symmetrical without nudging the button or changing its touch target. */
html[data-slot-orientation="portrait"] #gameShell :is(.portraitControlInk-menu,.portraitControlInk-auto,.portraitControlInk-max) { top:calc(50% + .5px);gap:calc(8 * var(--slot-cabinet-scale) * 1px); }
html[data-slot-orientation="portrait"] #gameShell :is(.portraitControlInk-menu,.portraitControlInk-auto,.portraitControlInk-max) .portraitControlLabel {
 font:400 max(10px,calc(32 * var(--slot-cabinet-scale) * 1px))/.875 'Micro Pixel',monospace;
 font-synthesis:none;padding-left:.125em;text-shadow:none;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-menu .portraitControlIcon { width:calc(31.5 * var(--slot-cabinet-scale) * 1px);height:calc(30 * var(--slot-cabinet-scale) * 1px);filter:none; }
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-auto .portraitControlIcon { width:calc(46.5 * var(--slot-cabinet-scale) * 1px);height:calc(36.75 * var(--slot-cabinet-scale) * 1px);filter:none; }
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-turbo {
 gap:max(1px,calc(3 * var(--slot-cabinet-scale) * 1px));color:#28113e;
}
html[data-slot-orientation="portrait"] #gameShell .portraitControlInk-turbo .portraitControlIcon {
 width:calc(39 * 47 / 58 * var(--slot-cabinet-scale) * 1px);
 height:calc(39 * var(--slot-cabinet-scale) * 1px);filter:none;
}
html[data-slot-orientation="portrait"] #gameShell .portraitTurboState {
 font-weight:400;font-synthesis:none;line-height:1;text-shadow:none;
 /* Micro Pixel advances one blank pixel after each glyph. Compensate for the
    final blank column so ON and OFF have the same visible horizontal center. */
 padding-left:.125em;
}
/* A permanent text/icon layer and no-op sync prevent raster changes on Spin. */
html[data-slot-orientation="portrait"] #gameShell .controls #portraitTurboButton .portraitControlInk { will-change:transform;transform:translate3d(-50%,-50%,0);opacity:1;filter:none; }
html[data-slot-orientation="portrait"] #gameShell .controls #portraitTurboButton::after { opacity:0; }
html[data-slot-orientation="portrait"] #gameShell #portraitTurboButton[aria-pressed="true"] .portraitControlInk { color:#28113e; }
/* Reuse the actual landscape artwork, registered to the circular socket. */
html[data-slot-orientation="portrait"] #gameShell .portraitSpinArt {
 position:absolute;left:50%;top:50%;width:calc(234.35 * var(--slot-cabinet-scale) * 1px);height:auto;max-width:none;
 transform:translate(-50%,-47.55555556%);clip-path:ellipse(50% 47.55555556% at 50% 47.55555556%);
 image-rendering:pixelated;pointer-events:none;
}
html[data-slot-orientation="portrait"] #gameShell #spinButton.isStop .portraitControlInk-spin {visibility:hidden;}
html[data-slot-orientation="portrait"] #gameShell #spinButton .stopControlArt {
 display:block;left:50%;top:50%;width:calc(276.8 * var(--slot-cabinet-scale) * 1px);height:auto;max-width:none;
 transform:translate(-49.96012759%,-49.00318979%);opacity:0;transition:none;filter:none;
}
html[data-slot-orientation="portrait"] #gameShell #spinButton.isStop .stopControlArt {opacity:1;}
html[data-slot-orientation="portrait"] #gameShell #spinButton .spinAutoplayCount {
 left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;
 width:calc(100 * var(--slot-cabinet-scale) * 1px);height:calc(100 * var(--slot-cabinet-scale) * 1px);
 margin:0;padding:0;clip:auto;overflow:visible;color:#25331a;text-shadow:none;
 font:700 max(14px,calc(44 * var(--slot-cabinet-scale) * 1px))/1 'Micro Pixel',monospace;
 letter-spacing:0;
}
html[data-slot-orientation="portrait"] #gameShell #spinButton.autoplayLargeCount .spinAutoplayCount { font-size:max(11px,calc(30 * var(--slot-cabinet-scale) * 1px)); }
/* The authored main wells are shallow and wide. A label/value row provides
   actual breathing room; amount sizing only responds to unusually long credit
   strings, without a scale transform or condensed numeric glyphs. */
html[data-slot-orientation="portrait"] #gameShell .cabinetMeter {
 --portrait-meter-label-size:max(8px,calc(22 * var(--slot-cabinet-scale) * 1px));
 --portrait-meter-gap:max(3px,calc(10 * var(--slot-cabinet-scale) * 1px));
 --portrait-meter-padding:max(2px,calc(7 * var(--slot-cabinet-scale) * 1px));
 --portrait-meter-label-chars:7;
 left:var(--portrait-control-x);top:var(--portrait-control-y);
 width:calc(var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px);
 height:calc(var(--portrait-face-height) * var(--slot-cabinet-scale) * 1px);
 transform:translate(-50%,-50%);z-index:6;box-sizing:border-box;
 display:flex;flex-direction:row;align-items:center;justify-content:space-between;
 gap:var(--portrait-meter-gap);padding:0 var(--portrait-meter-padding);
 color:#fff6d9;font-family:'Micro Pixel',monospace;font-weight:400;font-synthesis:none;
 font-size:min(max(13px,calc(36 * var(--slot-cabinet-scale) * 1px)),calc((var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px - 2 * var(--portrait-meter-padding) - var(--portrait-meter-label-chars) * .75 * var(--portrait-meter-label-size) - var(--portrait-meter-gap)) / (var(--portrait-value-length,4) * .75)));
 font-variant-numeric:tabular-nums;letter-spacing:0;line-height:1.125;
 text-shadow:none;white-space:nowrap;
}
html[data-slot-orientation="portrait"] #gameShell .cabinetMeter::before {
 content:var(--portrait-meter-label);display:block;flex:none;color:#cbd0a5;
 font:400 var(--portrait-meter-label-size)/1.125 'Micro Pixel',monospace;
 letter-spacing:0;text-shadow:none;
}
html[data-slot-orientation="portrait"] #balanceMeter { --portrait-meter-label:'BALANCE'; }
html[data-slot-orientation="portrait"] #gameShell #winMeter { --portrait-meter-label:'WIN';--portrait-meter-label-chars:3; }
html[data-slot-orientation="portrait"] #gameShell #betMeter {
 --portrait-meter-label:'TOTAL BET';
 flex-direction:column;justify-content:center;gap:1px;padding:0;
 font-size:min(max(11px,calc(31 * var(--slot-cabinet-scale) * 1px)),calc((var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px - 6px) / (var(--portrait-value-length,4) * .75)));
 line-height:1;
}
html[data-slot-orientation="portrait"] #gameShell #betMeter::before { line-height:1; }
html[data-slot-orientation="portrait"] #gameShell .controls #portraitTurboButton .turboToggleFeedback {
 position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
 width:calc(var(--portrait-face-width) * var(--slot-cabinet-scale) * 1px);
 height:calc(var(--portrait-face-height) * var(--slot-cabinet-scale) * 1px);
 margin:0;padding:0;overflow:visible;clip:auto;z-index:4;
 pointer-events:none;border:0;color:#dfff87;
}
.turboToggleFeedback svg { display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 3px #acff39); }
.turboToggleFeedback path { fill:none;stroke:currentColor;stroke-width:3;stroke-linejoin:miter;stroke-dasharray:45 18 12 9;animation:portraitElectric 260ms linear 2; }
.turboToggleFeedback path + path { animation-direction:reverse;stroke:#fffde0;stroke-width:1.7; }
.turboToggleFeedback[data-enabled="false"] { color:#d3b8ff; }
.turboToggleFeedback[data-motion="reduced"] { outline:2px solid #dfff87;outline-offset:2px; }
@keyframes portraitElectric { 0% { stroke-dashoffset:150;opacity:.25; } 15%,70% { opacity:1; } 100% { stroke-dashoffset:0;opacity:.1; } }
