/* Mobile layout is opt-in via device detection; desktop styles remain unchanged. */
#v1Touch[hidden],#v1Touch [hidden]{display:none!important}.v1-menu-touch-tip{display:none}.v1-touch-help{font-size:12px;line-height:1.9;color:#b0c5b3;border:1px solid #718e7166;padding:13px;border-radius:8px;margin:16px 0}.v1-touch-help b{color:#e2e9c9}
#v1Touch{position:absolute;inset:0;z-index:20;pointer-events:none;color:#dcebd0}.v1-touch-top{position:absolute;top:calc(env(safe-area-inset-top,0px) + 10px);left:calc(env(safe-area-inset-left,0px) + 12px);right:calc(env(safe-area-inset-right,0px) + 12px);display:flex;align-items:center;justify-content:space-between;gap:12px}
.v1-touch-top button{width:44px;height:44px;min-width:44px;border:1px solid #71938270;border-radius:10px;color:#d4e5c6;background:#15313de8;font-size:23px;pointer-events:auto;touch-action:manipulation}.v1-touch-top span{font-size:12px;letter-spacing:2px;color:#d0dfbd}
.v1-stick{position:absolute;width:118px;height:118px;border:1px solid #74978888;border-radius:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 35px);background:radial-gradient(circle,#304e4caa,#112d3890);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;box-shadow:inset 0 0 0 8px #76988a0b;isolation:isolate}
.v1-move{left:calc(env(safe-area-inset-left,0px) + 18px)}.v1-skill{right:calc(env(safe-area-inset-right,0px) + 18px);border-color:#b6c68890;background:radial-gradient(circle,#66835b55,#213c3ad9)}
.v1-stick small{position:absolute;bottom:9px;left:0;width:100%;text-align:center;font-size:10px;color:#bed2b7;pointer-events:none}.v1-knob{position:absolute;left:calc(50% - 24px);top:calc(50% - 24px);width:48px;height:48px;border:1px solid #a7c5ae70;background:#abc9ae28;border-radius:50%;display:grid;place-items:center;font-size:23px;color:#c8dcb7;pointer-events:none;will-change:transform}
.v1-stick-axis{position:absolute;inset:23px;border:1px solid #aac3ac22;border-radius:50%}.v1-stick-axis:before,.v1-stick-axis:after{content:'';position:absolute;background:#b3cbb62e;left:50%;top:0;bottom:0;width:1px}.v1-stick-axis:after{left:0;right:0;top:50%;bottom:auto;width:100%;height:1px}
.v1-skill>svg{position:absolute;left:calc(50% - 27px);top:calc(50% - 28px);width:54px;height:54px;pointer-events:none;opacity:.85}.v1-skill .v1-knob{background:transparent;opacity:0}.v1-skill.held .v1-knob{opacity:1;background:#c6db9a35}.v1-skill strong{position:absolute;inset:0;display:grid;place-items:center;font:600 28px Georgia,serif;color:#e6edbd;text-shadow:0 2px 8px #071920;pointer-events:none}
.v1-stick.held{border-color:#d6e4b2;box-shadow:0 0 20px #a3cda01f,inset 0 0 0 8px #b6cd9514}.v1-stick.cooling>svg{opacity:.25}#v1TouchPads.unavailable{opacity:.42}.v1-stick.cancelled{border-color:#ef9a83;background:#733b4b90}
#v1TouchCancel{position:absolute;right:calc(env(safe-area-inset-right,0px) + 15px);bottom:calc(env(safe-area-inset-bottom,0px) + 178px);border:1px dashed #d59c8faa;border-radius:12px;background:#352d34dd;padding:8px 13px;min-width:139px;height:58px;display:flex;align-items:center;gap:10px;color:#e1b3a3}#v1TouchCancel b{font-size:30px;font-weight:400}#v1TouchCancel span{font-size:11px}#v1TouchCancel.cancelled{background:#7b3f4aee;border-color:#ffc4a5}
#v1TouchAim{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 158px);white-space:nowrap;border:1px solid #aac69544;border-radius:20px;background:#0b2630df;padding:6px 12px;font-size:11px;color:#dce6b6}
#v1RotateHint{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 3px);display:flex;align-items:center;gap:4px;white-space:nowrap;font-size:10px;color:#a5bbaa;pointer-events:auto}#v1RotateHint button{width:40px;height:32px;background:transparent;color:#bbcdad;font-size:20px;touch-action:manipulation}
body.v1-touch{height:100dvh;overscroll-behavior:none}.v1-touch button,.v1-touch a,.v1-touch select{touch-action:manipulation}.v1-touch .small-screen-note,.v1-touch .menu-controls,.v1-touch .hero-caption{display:none!important}.v1-touch .v1-menu-touch-tip{display:block;font-size:11px;color:#acc1aa;margin-top:14px;line-height:1.7}
.v1-touch .topbar{top:calc(env(safe-area-inset-top,0px) + 12px);left:16px;right:calc(env(safe-area-inset-right,0px) + 12px)}.v1-touch .brand{display:none}.v1-touch .top-actions{margin-left:auto;flex-direction:row;gap:6px}.v1-touch .icon-button{width:44px;height:44px;min-width:44px}.v1-touch .v1-site-return{top:calc(env(safe-area-inset-top,0px) + 16px);left:12px;min-height:36px;padding:10px 9px;font-size:11px}
.v1-touch .menu-layer{background:linear-gradient(90deg,#081e28eb,#091f27c9 75%,#091f2780)}.v1-touch .menu-panel{top:calc(env(safe-area-inset-top,0px) + 74px);left:5%;width:90%;max-width:420px;transform:none;max-height:calc(var(--v1-vh,100dvh) - env(safe-area-inset-top,0px) - 91px);padding:5px 5px 18px;overflow-x:hidden;overflow-y:auto;touch-action:pan-y;overscroll-behavior:contain}.v1-touch .menu-panel h1{font-size:43px;margin:8px 0}.v1-touch .menu-tagline{font-size:16px;letter-spacing:2px}.v1-touch .menu-description{margin:12px 0 20px;font-size:12px}.v1-touch .menu-footer{display:none}
.v1-touch .difficulty-selector button{min-height:44px;padding:10px 0}.v1-touch .difficulty-description{font-size:11px;line-height:1.7}.v1-touch .start-button{height:62px;font-size:19px}.v1-touch .net-menu{margin-top:15px}.v1-touch .net-menu>label{font-size:11px}.v1-touch .net-menu>input{width:calc(100% - 69px);height:44px;font-size:16px}.v1-touch .net-entry-grid button{height:64px;font-size:15px}.v1-touch .net-entry-grid small{font-size:10px;line-height:1.5}
.v1-touch .net-layer,.v1-touch .modal-layer{top:var(--v1-vtop,0px);bottom:auto;height:var(--v1-vh,100dvh);padding:calc(env(safe-area-inset-top,0px) + 10px) calc(env(safe-area-inset-right,0px) + 10px) calc(env(safe-area-inset-bottom,0px) + 10px) calc(env(safe-area-inset-left,0px) + 10px);align-items:center}.v1-touch .net-shell,.v1-touch .dialog{max-height:100%;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:20px 16px}.v1-touch .net-header h2{font-size:23px}.v1-touch .net-header .icon-button{flex-shrink:0}
.v1-touch input,.v1-touch select,.v1-touch .setting-row select{font-size:16px!important;min-height:44px}.v1-touch .setting-row{gap:12px;flex-wrap:wrap}.v1-touch .setting-row select{max-width:100%;padding:9px}.v1-touch .setting-row b{font-size:13px}.v1-touch .setting-row small{font-size:11px;line-height:1.5}.v1-touch .close-button{width:44px;height:44px;right:6px;top:4px}.v1-touch .toggle{width:42px;min-width:42px;height:32px;padding:8px}
.v1-touch .net-shell .primary,.v1-touch .net-shell .secondary,.v1-touch .net-shell .text-button,.v1-touch .dialog .text-button{min-height:44px;height:auto}.v1-touch .net-toolbar input{min-width:120px;max-width:100%}.v1-touch .net-toolbar{flex-wrap:wrap}.v1-touch .net-toolbar button{padding:0 14px}.v1-touch .net-room-row>div{min-width:0;overflow-wrap:anywhere}.v1-touch .net-note{font-size:11px;line-height:1.8}.v1-touch .net-check input{min-height:22px;width:22px;flex-shrink:0}.v1-touch .net-shell .net-check{font-size:12px;line-height:1.6;align-items:center}.v1-touch .net-messages{user-select:text}
.v1-touch-battle{--v1-stage-top:calc(env(safe-area-inset-top,0px) + 116px);--v1-stage-bottom:calc(env(safe-area-inset-bottom,0px) + 172px);--v1-stage-left:env(safe-area-inset-left,0px);--v1-stage-right:env(safe-area-inset-right,0px)}.v1-touch-battle #world,.v1-touch-battle #labels{inset:auto;top:var(--v1-stage-top);left:var(--v1-stage-left);width:calc(100% - var(--v1-stage-left) - var(--v1-stage-right));height:calc(100% - var(--v1-stage-top) - var(--v1-stage-bottom));touch-action:none}
.v1-touch-battle .topbar,.v1-touch-battle .v1-site-return,.v1-touch-battle .ability-panel,.v1-touch-battle .bottom-help,.v1-touch-battle .live-stats{display:none!important}.v1-touch-battle .scoreboard{left:12px;right:12px;top:calc(env(safe-area-inset-top,0px) + 61px);transform:none;width:auto;padding:9px;gap:4px;border-radius:10px}.v1-touch-battle .score-avatar{display:none}.v1-touch-battle .score-name{font-size:11px;gap:4px}.v1-touch-battle .score-name span{font-size:9px}.v1-touch-battle .score-name b{max-width:100%;min-width:0}.v1-touch-battle .score-info small{font-size:8px}.v1-touch-battle .clock{width:69px;padding:0 4px}.v1-touch-battle .clock>span{font-size:22px}.v1-touch-battle .clock>small{font-size:8px;letter-spacing:1px}.v1-touch-battle #v1Connection{top:calc(env(safe-area-inset-top,0px) + 122px);font-size:9px;z-index:21}.v1-touch-battle .countdown{padding-bottom:58px;z-index:18}.v1-touch-battle .countdown>small{font-size:10px;letter-spacing:2px}.v1-touch-battle .toast{max-width:calc(100% - 30px);white-space:normal;text-align:center;bottom:160px}
@media(orientation:landscape){
 .v1-touch .menu-panel{left:calc(env(safe-area-inset-left,0px) + 50px);top:calc(env(safe-area-inset-top,0px) + 64px);width:calc(100% - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 100px);max-width:820px;max-height:calc(var(--v1-vh,100dvh) - 74px);display:grid;grid-template-columns:1fr 1fr;column-gap:24px;padding:0 10px 12px;align-content:start}
 .v1-touch .menu-panel>.eyebrow{grid-column:1;grid-row:1;font-size:8px;letter-spacing:1.5px}.v1-touch .menu-panel h1{grid-column:1;grid-row:2;font-size:37px;margin:6px 0}.v1-touch .menu-tagline{grid-column:1;grid-row:3;font-size:13px}.v1-touch .menu-description{grid-column:1;grid-row:4;font-size:10px;line-height:1.6;margin:8px 0}.v1-touch .difficulty-label{grid-column:1;grid-row:5;font-size:10px;margin-bottom:5px}.v1-touch .difficulty-selector{grid-column:1;grid-row:6}.v1-touch .difficulty-description{grid-column:1;grid-row:7;margin:6px 0;font-size:10px}
 .v1-touch .menu-panel #startBtn{grid-column:2;grid-row:1 / span 3;align-self:start;margin-top:0;height:64px}.v1-touch .net-menu{grid-column:2;grid-row:4 / span 4;margin-top:0}.v1-touch .v1-menu-touch-tip{grid-column:1/-1;margin-top:7px;font-size:10px}.v1-touch .net-entry-grid{grid-template-columns:1fr;gap:0}.v1-touch .net-entry-grid button{margin-top:8px;height:50px;display:flex;justify-content:space-between;align-items:center;padding:0 12px;font-size:13px}.v1-touch .net-entry-grid small{font-size:9px;margin:0}
 .v1-touch-battle{--v1-stage-top:calc(env(safe-area-inset-top,0px) + 78px);--v1-stage-bottom:calc(env(safe-area-inset-bottom,0px) + 12px);--v1-stage-left:calc(env(safe-area-inset-left,0px) + 104px);--v1-stage-right:calc(env(safe-area-inset-right,0px) + 104px)}
 .v1-touch-battle .scoreboard{left:50%;right:auto;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + 10px);width:min(520px,calc(100% - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 146px));padding:8px 11px}.v1-touch-battle .v1-touch-top>span{display:none}.v1-touch-battle #v1Connection{top:calc(env(safe-area-inset-top,0px) + 72px)}
 .v1-stick{width:108px;height:108px;bottom:calc(env(safe-area-inset-bottom,0px) + 17px)}.v1-move{left:calc(env(safe-area-inset-left,0px) + 12px)}.v1-skill{right:calc(env(safe-area-inset-right,0px) + 12px)}.v1-stick small{font-size:9px}.v1-stick .v1-knob{width:44px;height:44px;left:calc(50% - 22px);top:calc(50% - 22px)}
 #v1TouchCancel{right:calc(env(safe-area-inset-right,0px) + 10px);bottom:calc(env(safe-area-inset-bottom,0px) + 141px);width:124px;min-width:124px;height:53px;padding:8px;gap:6px}#v1TouchCancel span{font-size:10px}#v1TouchAim{bottom:calc(env(safe-area-inset-bottom,0px) + 12px);font-size:10px}
 .v1-touch .net-layer,.v1-touch .modal-layer{padding:6px calc(env(safe-area-inset-right,0px) + 14px) 6px calc(env(safe-area-inset-left,0px) + 14px)}.v1-touch .net-shell,.v1-touch .dialog{padding:16px 20px}.v1-touch .net-seats{grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.v1-touch .net-seat{padding:10px}.v1-touch .net-header h2{font-size:21px;margin:6px 0}.v1-touch .match-orbit{width:48px;height:48px;font-size:26px;margin:8px auto}.v1-touch #netMatching{padding:0}.v1-touch #netMatching h3{font-size:19px;margin:10px 0}.v1-touch #matchingSeconds{font-size:30px}
}
@media(max-width:360px) and (orientation:portrait){.v1-touch .top-actions{gap:4px}.v1-touch .top-actions .icon-button{width:40px;min-width:40px;height:40px}.v1-touch .v1-site-return{font-size:10px}.v1-stick{width:108px;height:108px}.v1-move{left:12px}.v1-skill{right:12px}.v1-touch-battle .scoreboard{left:6px;right:6px;padding:7px}.v1-touch-battle .score-name{font-size:9px}.v1-touch-battle .clock{width:58px}.v1-touch .net-shell{padding:16px 12px}}
@media(prefers-reduced-motion:reduce){.v1-stick,.v1-knob{transition:none}}
