:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{width:100%;height:100%}body{margin:0}.app{width:100vw;height:100vh}.stage{width:100%;height:100%;position:relative;overflow:hidden;background:#000;-webkit-user-select:none;user-select:none}.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.sprite{position:absolute;height:auto}.printerLayer{position:absolute}.printerImage{width:100%;height:auto;display:block}.printerHotZone{position:absolute;left:50%;transform:translate(-50%);background:var(--hot-zone-bg, transparent)}.printerHotZone--bottomCenter{bottom:0}.printerHotZone--topCenter{top:0}.hotZoneHintAnchor{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.concentricHint{position:absolute;inset:0}.concentricHintOuter{position:absolute;width:var(--concentric-outer-d);height:var(--concentric-outer-d);left:50%;top:50%;transform:translate(-50%,-50%);border-radius:9999px;background:var(--concentric-outer-color);animation:concentricOuterPulse var(--concentric-duration, 1.2s) ease-in-out infinite}.concentricHintInner{position:absolute;width:var(--concentric-inner-d-min);height:var(--concentric-inner-d-min);left:50%;top:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center;border-radius:9999px;background:var(--concentric-inner-color);animation:concentricInnerRadiusPulse var(--concentric-duration, 1.2s) ease-in-out infinite}@media(prefers-reduced-motion:reduce){.concentricHintOuter,.concentricHintInner{animation:none}}@keyframes concentricOuterPulse{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}@keyframes concentricInnerRadiusPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.85}50%{transform:translate(-50%,-50%) scale(var(--concentric-inner-scale-max));opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:.85}}.clickHintsLayer{position:fixed;inset:0;pointer-events:none;z-index:55}.clickHint{position:absolute;transform:translate(-50%,-50%)}.clickHintFade{animation:clickHintFade .6s ease-out forwards}@keyframes clickHintFade{0%{opacity:1}70%{opacity:1}to{opacity:0}}.hotZoneHintOverlay{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50;opacity:0;transition:opacity .2s ease}.hotZoneHintOverlay--visible{opacity:1}.hotZoneHintLine{fill:none;stroke:#6969ff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.hotZoneTooltip{z-index:51;background:#ffffff80;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;padding:10px 16px;color:#000000e6;font-size:16px;font-weight:500;max-width:320px;line-height:1.25;opacity:0;pointer-events:none;transition:opacity .2s ease}.hotZoneTooltip--visible{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.hotZoneHintOverlay,.hotZoneTooltip{transition:none}}.retryButton{position:fixed;top:48px;right:48px;border-radius:12px;padding:12px 20px;background:#fff;border:1px solid #6969ff;color:#6969ff;font-size:16px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:60}.retryButton:focus-visible{outline:2px solid #6969ff;outline-offset:2px}.draggable{cursor:grab;touch-action:none}.draggable:active{cursor:grabbing}
