/* Derived layout preview, linked to six locked neon-master families. */
#ui.touch-ui{position:fixed;inset:0;width:100%;height:100%;z-index:10}
.touch-ui button,.touch-ui a{min-height:44px;touch-action:manipulation}
.touch-ui .topbar{position:fixed;left:112px;right:112px;top:6px;width:auto;height:34px;padding:3px 6px;gap:8px}
.touch-ui .topbar .brand,.touch-ui .topbar .spacer{display:none}
.touch-ui .topbar .chapter-name{font-size:12px;white-space:nowrap;margin-right:auto}
.touch-ui .stat{font-size:14px;min-width:0;gap:3px}.touch-ui .stat img{width:20px;height:20px}.touch-ui .stat small{font-size:10px!important}
.touch-ui .topbar .iconbutton{position:fixed;right:8px;top:6px;width:48px;height:44px;min-height:44px;padding:4px;font-size:13px}
.touch-ui .topbar [data-action=pause]{right:62px}.touch-ui .iconbutton img{width:25px;height:25px}
.touch-ui .dock{position:fixed;left:6px;top:6px;bottom:6px;width:104px;height:auto;padding:4px;gap:3px;display:flex;flex-direction:column;box-shadow:none}
.touch-ui .dock:before{content:'部署炮塔';font-size:12px;line-height:16px;height:16px;flex:none;color:#91d6e4}
.touch-ui .tower-card,.touch-ui .tower-card.selected{width:94px;height:auto;min-height:44px;max-height:58px;flex:1;padding:4px 3px 4px 37px;border-width:1px;font-size:11px;clip-path:polygon(5px 0,calc(100% - 5px) 0,100% 5px,100% calc(100% - 5px),calc(100% - 5px) 100%,5px 100%,0 calc(100% - 5px),0 5px)}
.touch-ui .tower-card img{left:2px;top:50%;transform:translateY(-50%);width:34px;height:39px}.touch-ui .tower-card b{font-size:12px;margin:0}.touch-ui .tower-card span{font-size:10px;margin-top:4px;white-space:nowrap}.touch-ui .dock-divider{display:none}
.touch-ui .skill,.touch-ui .launch{position:fixed;right:8px;left:auto;width:104px;min-width:0;flex:none;height:56px;font-size:14px;padding:3px}
.touch-ui .launch{bottom:8px}.touch-ui .launch small{font-size:10px;margin-top:3px}.touch-ui .skill{bottom:72px}.touch-ui .skill b{font-size:17px;margin:0 0 2px}
.touch-ui .wave-panel,.touch-ui .wave-ribbon{position:fixed;left:auto;right:8px;top:60px;width:104px;height:auto;min-height:114px;display:block;padding:8px;gap:0}
.touch-ui .wave-title,.touch-ui .wave-ribbon .wave-title{font-size:12px;white-space:normal;line-height:17px}.touch-ui .wave-title>img{display:none}
.touch-ui .wave-panel .composition{height:auto;display:grid;grid-template-columns:1fr 1fr;gap:4px 1px;margin-top:5px}.touch-ui .wave-kind,.touch-ui .wave-ribbon .wave-kind{flex-direction:row;gap:1px}.touch-ui .wave-panel .composition img{width:23px;height:25px}.touch-ui .wave-kind small{font-size:10px}.touch-ui .wave-panel p{font-size:10px;line-height:15px;white-space:normal;margin:5px 0 0}
.touch-ui .map-instruction{position:fixed;left:116px;right:116px;top:auto;bottom:6px;width:auto;height:auto;min-height:30px;max-height:55px;padding:4px 7px;font-size:11px;line-height:17px;display:flex;justify-content:center;gap:4px}
.touch-ui .inspect-resume{font-size:11px;min-height:44px;white-space:nowrap;padding:4px 7px;margin:0}
.touch-ui .detail{position:fixed;left:auto;right:8px;top:60px;width:104px;height:auto;min-height:0;max-height:calc(100% - 68px);overflow:auto;padding:6px;display:flex;flex-direction:column;gap:2px}
.touch-ui .detail-portrait{display:none}.touch-ui .detail h3,.touch-ui .detail .detail-stats{margin:0}.touch-ui .detail h3{font-size:12px;line-height:14px}.touch-ui .detail h3 span{display:block;font-size:11px!important}.touch-ui .detail .detail-stats{font-size:10px;line-height:14px;margin:2px 0}
.touch-ui .detail-actions{margin:0;display:flex;flex-direction:column;gap:4px}.touch-ui .detail-actions button{flex:none;width:100%;min-height:44px;padding:4px 2px;font-size:11px}
.touch-ui .detail-close{position:static;order:5;width:100%;height:44px;min-height:44px;font-size:23px;line-height:28px;background:#102e40;margin-top:1px}
.touch-ui:has(.detail) .wave-panel,.touch-ui:has(.detail) .skill,.touch-ui:has(.detail) .launch{display:none}
.touch-ui .socket-hit{border-radius:50%}
.touch-ui .home-copy{position:fixed;left:26px;top:22px;width:435px}.touch-ui .home-copy .eyebrow{font-size:10px;letter-spacing:3px}.touch-ui .wordmark{font-size:48px;letter-spacing:3px;margin:6px 0}.touch-ui .home-copy p{font-size:13px;line-height:1.55;margin:7px 0}.touch-ui .home-copy p.small{font-size:11px;line-height:1.5}.touch-ui .home-actions{margin-top:12px;gap:8px;flex-wrap:wrap}.touch-ui .home-actions .primary{min-width:160px}.touch-ui .home-actions button{font-size:13px;padding:8px 12px;min-height:44px}.touch-ui .home-copy>div:last-child{margin-top:8px!important;display:flex;align-items:center;gap:8px}.touch-ui .home-copy>div:last-child button,.touch-ui .home-copy>div:last-child a{font-size:12px!important;display:flex;align-items:center;padding:7px 9px}
.touch-ui .home-footer{position:fixed;left:0;right:0;bottom:0;width:100%;min-height:26px;height:26px;font-size:10px;gap:22px}.touch-ui .home-footer span:nth-child(2){display:none}.touch-ui .scene-glow{display:none}
.touch-ui .chapter-pick{position:fixed;inset:12px 30px 16px}.touch-ui .chapter-heading{margin:0 0 10px}.touch-ui .chapter-heading h1{font-size:24px;letter-spacing:2px}.touch-ui .chapter-heading .eyebrow{font-size:9px;letter-spacing:3px}.touch-ui .chapter-heading button{font-size:12px;padding:7px 12px}.touch-ui .chapters{gap:10px;grid-template-columns:1fr 1fr}.touch-ui .chapter{min-height:116px;height:116px;padding:0}.touch-ui .chapter .route-preview{float:left;width:132px;height:70px;margin:8px 12px 5px 8px}.touch-ui .chapter .title{font-size:17px;margin:20px 0 0}.touch-ui .chapter .number{top:7px;right:10px;font-size:18px}.touch-ui .chapter p{display:none}.touch-ui .chapter .bottom{position:absolute;bottom:0;left:0;right:0;font-size:10px;padding:4px 8px}.touch-ui .chapter-pick>p{font-size:10px;margin:8px 0 0}
.touch-ui .modal-shade{position:fixed;inset:0}.touch-ui .modal{position:relative;left:auto;top:auto;transform:none;width:min(600px,calc(100vw - 28px));height:auto;min-height:0;max-height:calc(100dvh - 24px);padding:20px 24px;overflow:auto}
.touch-ui .modal h1{font-size:27px;line-height:1.2;margin:6px 0 12px;letter-spacing:2px}.touch-ui .modal .eyebrow{font-size:10px;letter-spacing:3px;max-width:calc(100% - 35px)}.touch-ui .modal p,.touch-ui .modal .small{font-size:12px;line-height:1.65;margin:8px 0}.touch-ui .modal .actions{gap:7px;margin-top:12px}.touch-ui .modal .primary,.touch-ui .modal .secondary,.touch-ui .modal .danger,.touch-ui .modal .ghost{font-size:12px;min-height:44px;padding:8px 12px}.touch-ui .modal-close{width:44px;height:44px;right:7px;top:5px;font-size:26px;min-height:44px!important;padding:3px!important}.touch-ui .modal img.hero{width:64px;height:64px;margin-right:10px}.touch-ui .result-award{width:70px;height:70px;margin-right:8px}.touch-ui .result-metrics{padding:12px 0;margin:10px 0;gap:18px}.touch-ui .result-metrics b{font-size:22px}.touch-ui .result-metrics span{font-size:11px}
.touch-ui .modal .setting-row{grid-template-columns:105px minmax(0,1fr) 40px;gap:10px;margin:6px 0;padding-bottom:6px;font-size:14px;min-height:44px}.touch-ui .setting-icon{font-size:20px;width:18px}.touch-ui .setting-row label{gap:7px}.touch-ui .setting-row output{font-size:13px}.touch-ui .setting-row:has(input[type=checkbox]){grid-template-columns:1fr 44px}.touch-ui .setting-row input[type=checkbox]{width:44px;height:44px}.touch-ui .modal .setting-row input[type=range]{height:44px;border:0;background:linear-gradient(to right,#59ecf7 var(--value),#173047 var(--value)) center/100% 6px no-repeat}.touch-ui .setting-row input[type=range]::-webkit-slider-thumb{width:25px;height:25px}.touch-ui .recovery-warning{padding:8px 12px;font-size:12px!important}
@media(max-height:350px){.touch-ui .home-copy{top:12px}.touch-ui .wordmark{font-size:39px}.touch-ui .home-copy p.small{display:none}.touch-ui .chapter{height:100px;min-height:100px}.touch-ui .chapter .route-preview{height:56px}.touch-ui .chapter-heading{margin-bottom:6px}}

/* Runtime host only; complete world remains centered independently. */
.touch-landscape #toast{position:fixed;top:52px;left:50%;font-size:12px;padding:8px 12px;max-width:calc(100vw - 240px);z-index:30}

/* Minor text adaptation: real enemy names and touch instructions. */
.touch-ui .wave-panel .wave-kind{display:grid;grid-template-columns:23px auto;gap:0 1px}.touch-ui .wave-name{display:block;grid-column:1/-1;font-size:9px;line-height:12px;text-align:center;color:#b7d2de}.touch-ui .topbar .stat[aria-label]:before{content:attr(aria-label);font-size:10px;color:#8fb4c4}

.touch-ui .detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:0 2px}.touch-ui .detail-role{grid-column:1/-1}.touch-ui .detail-line,.touch-ui .detail-dot{display:none}.touch-ui .wave-panel .composition img{height:23px}.touch-ui .wave-name{line-height:11px}.touch-ui .wave-panel p{font-size:9px;line-height:13px;margin-top:4px}.touch-landscape:has([role=dialog]) #toast{top:auto;bottom:12px}

.touch-ui .modal:has(#music){padding-top:18px;padding-bottom:18px}

/* Native tap feedback must not linger over a replaced loading/dialog scene. */
.touch-landscape button,.touch-landscape a,.touch-landscape input{-webkit-tap-highlight-color:transparent}
@media(max-height:350px){
 .touch-ui .modal:has(#music){padding:10px 20px}
 .touch-ui .modal:has(#music) h1{font-size:23px;margin:3px 0 5px}
 .touch-ui .modal:has(#music) .setting-row{margin:2px 0;padding-bottom:0}
 .touch-ui .modal:has(#music)>p{font-size:10px;line-height:14px;margin:4px 0}
 .touch-ui .modal:has(#music) .actions{margin-top:6px;gap:5px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
 .touch-ui .modal:has(#music) .actions button{padding:6px 4px}
}
.touch-ui .detail .level-badge{width:16px;height:16px}
