/* Explicit viewport geometry is supplied by layout.js; assets retain their ratio. */
html,body{width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
body{display:block;background:#020a13}
button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.viewport{position:absolute;left:0;top:0;width:100%;height:100dvh;overflow:hidden;background:#020a1355}
.app{position:absolute;width:100%;height:100%;padding:0;overflow:hidden;border:1px solid #235779;border-radius:22px;isolation:isolate;--header-height:110px;--controls-height:184px}
.scene{position:absolute;inset:0;height:100%;border:0;border-radius:0;box-shadow:none}
.scene #backdrop{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.flightViewport{position:absolute;top:var(--header-height);bottom:calc(var(--controls-height) + 8px);left:8px;right:8px;display:flex;align-items:center;justify-content:center;z-index:2;pointer-events:none;min-height:0;overflow:visible}
.scene #c{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.top{top:16px;left:24px;right:24px;height:calc(var(--header-height) - 20px);gap:16px;align-items:flex-start}
.topRight{gap:5px}.musicToggle{min-height:44px;font-size:11px}
.viewControls{display:flex;gap:6px;align-items:center;pointer-events:auto}
.fullscreenToggle{width:44px;min-width:44px;height:44px;padding:10px;border:1px solid #4c8baa88;border-radius:12px;background:#061b2bda;color:#b3edff;cursor:pointer}
.fullscreenToggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fullscreenToggle .collapseIcon{display:none}.fullscreenToggle[aria-pressed="true"] .expandIcon{display:none}.fullscreenToggle[aria-pressed="true"] .collapseIcon{display:block}
.fullscreenToggle:hover{border-color:#a3efff}.fullscreenToggle:disabled{opacity:.5}
.viewNotice{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:150;width:min(350px,calc(100% - 32px));padding:18px;border:1px solid #5286a6;border-radius:16px;background:#071e30f5;color:#cbf2ff;font-size:14px;line-height:1.5;text-align:center;pointer-events:none}
.viewNotice[hidden]{display:none}
.brand h1{font-size:30px}.brand h1 span{display:inline}.brand p{display:block;font-size:10px}
.balance{min-width:190px;padding:9px 14px;font-size:11px}.balance span{font-size:26px}.balance small{font-size:9px}
.controlBar{height:var(--controls-height);min-height:0;grid-template-columns:minmax(270px,1.1fr) minmax(260px,1.2fr) minmax(145px,.65fr);gap:22px;padding:16px 24px;align-items:center;border-radius:24px 24px 0 0}
.ticketHeader{margin-bottom:8px}.ticketTitle{font-size:12px}.ticketState{font-size:10px}
.ticketOption{min-height:48px;padding:6px 3px}.ticketOption strong{font-size:20px}.ticketOption small{font-size:11px;margin-top:2px}
.ticketSummary{font-size:11px;margin-top:6px}.ticketIdentity{font-size:10px;margin-top:3px;line-height:1.2}
.actions{grid-column:auto;grid-row:auto;grid-template-columns:1.2fr 1fr;gap:12px}
.action{height:64px;font-size:20px;border-radius:20px}.action.cash{font-size:18px}
.winBox{grid-column:auto;grid-row:auto}.winBox span{font-size:11px}.winBox strong{font-size:32px}.winBox small{font-size:11px}
.assetStatus{top:calc(var(--header-height) + 8px)}
.winCard{max-height:calc(100% - 16px);padding:22px}.winTitle{font-size:30px}.winAmount{font-size:34px;margin:14px 0}.winCollect{min-height:44px}
.safeAreaProbe{position:fixed;visibility:hidden;pointer-events:none;inset:0;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}
.rotatePrompt{position:absolute;z-index:120;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;background:radial-gradient(ellipse at 50% 40%,#0c3e55ee,#02111bf5 70%);border:1px solid #548cad66;border-radius:20px}
.rotatePrompt[hidden]{display:none}.rotatePrompt svg{width:80px;height:80px;fill:none;stroke:#89eaff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;margin-bottom:18px}
.rotatePrompt h2{font-size:clamp(20px,5vw,28px);max-width:360px;line-height:1.25;margin:0}.rotatePrompt p{font-size:15px;line-height:1.6;color:#a1cddd;max-width:360px;margin:16px 0 0}
.app[data-layout="portrait"]{visibility:hidden}
.app[data-layout="landscape"]{border-radius:14px}
.app[data-layout="landscape"] .top{top:3px;left:12px;right:12px;height:44px;align-items:center;gap:10px}
.app[data-layout="landscape"] .brand h1{font-size:20px;white-space:nowrap;letter-spacing:-.7px}
.app[data-layout="landscape"] .brand p{display:none}
.app[data-layout="landscape"] .topRight{flex-direction:row;align-items:center;gap:6px}
.app[data-layout="landscape"] .balance{min-width:0;padding:4px 9px;border-radius:10px;font-size:10px;letter-spacing:0}
.app[data-layout="landscape"] .balance span{font-size:19px}.app[data-layout="landscape"] .balance small{display:none}
.app[data-layout="landscape"] .musicToggle{font-size:10px;min-height:44px;padding:5px 8px;letter-spacing:0;max-width:125px}
.app[data-layout="landscape"] .musicToggle{font-size:0;width:44px;padding:0;min-width:44px}
.app[data-layout="landscape"] .musicToggle:before{content:'♫';font-size:20px}
.app[data-layout="landscape"] .controlBar{grid-template-columns:minmax(255px,1.1fr) minmax(235px,1fr) 105px;gap:12px;padding:8px 12px;border-radius:17px 17px 0 0}
.app[data-layout="landscape"] .ticketHeader{margin-bottom:4px}.app[data-layout="landscape"] .ticketTitle{font-size:11px;letter-spacing:.4px}.app[data-layout="landscape"] .ticketState{font-size:9px;padding:2px 4px}
.app[data-layout="landscape"] .ticketOptions{gap:5px}.app[data-layout="landscape"] .ticketOption{min-height:44px;padding:4px 2px;border-radius:8px}.app[data-layout="landscape"] .ticketOption strong{font-size:17px}.app[data-layout="landscape"] .ticketOption small{font-size:10px;margin-top:0}
.app[data-layout="landscape"] .ticketSummary{font-size:10px;margin-top:4px}.app[data-layout="landscape"] .ticketIdentity{display:none}
.app[data-layout="landscape"] .actions{gap:8px}.app[data-layout="landscape"] .action{height:52px;border-radius:14px;font-size:16px;border-bottom-width:4px;letter-spacing:0}.app[data-layout="landscape"] .action.cash{font-size:15px}
.app[data-layout="landscape"] .winBox span{font-size:10px;letter-spacing:0}.app[data-layout="landscape"] .winBox strong{font-size:23px}.app[data-layout="landscape"] .winBox small{font-size:10px}
.app[data-layout="landscape"] .winCard{padding:12px 20px;max-width:360px}.app[data-layout="landscape"] .winTitle{font-size:24px;margin-top:6px}.app[data-layout="landscape"] .winSub{margin-top:6px}.app[data-layout="landscape"] .winAmount{font-size:28px;margin:10px 0}.app[data-layout="landscape"] .winCollect{height:44px}
.app[data-layout="landscape"][data-compact="true"] .brand h1{font-size:16px}
 .app[data-layout="landscape"][data-compact="true"] .balance{font-size:0}.app[data-layout="landscape"][data-compact="true"] .balance span{font-size:17px}
 .app[data-layout="landscape"][data-compact="true"] .controlBar{grid-template-columns:minmax(220px,1.15fr) minmax(210px,1fr);grid-template-rows:auto auto;gap:5px 10px;padding:8px 10px}
 .app[data-layout="landscape"][data-compact="true"] .ticketBlock{grid-column:1;grid-row:1 / 3}
 .app[data-layout="landscape"][data-compact="true"] .actions{grid-column:2;grid-row:2}
 .app[data-layout="landscape"][data-compact="true"] .winBox{grid-column:2;grid-row:1;flex-direction:row;gap:6px}
 .app[data-layout="landscape"][data-compact="true"] .winBox strong{font-size:20px;margin:0}.app[data-layout="landscape"][data-compact="true"] .winBox span{font-size:10px}.app[data-layout="landscape"][data-compact="true"] .winBox small{margin:0}
 .app[data-layout="landscape"][data-compact="true"] .action{height:46px;font-size:14px}.app[data-layout="landscape"][data-compact="true"] .action.cash{font-size:14px}
