:root{color:#eefaff;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;background:#071725;font-family:Inter,ui-rounded,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none;min-width:280px;min-height:180px}button,input,textarea,select{font:inherit}.controller-shell{color:#eefaff;background:radial-gradient(circle at 50% 118%,#38bdf833,#0000 45%),linear-gradient(145deg,#07304c,#071725 68%);width:100%;height:100%;position:relative;overflow:hidden}.status-bar{z-index:3;top:max(12px, env(safe-area-inset-top));color:#eefaffdb;letter-spacing:.02em;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020f1a85;border:1px solid #ffffff21;border-radius:999px;align-items:center;gap:8px;padding:7px 13px;font-size:12px;font-weight:650;display:flex;position:absolute;left:50%;transform:translate(-50%)}.status-room{color:#eefaff80;text-transform:uppercase;border-left:1px solid #ffffff2e;padding-left:8px}.status-dot{color:#f59e0b;background:currentColor;border-radius:50%;width:7px;height:7px;box-shadow:0 0 10px}.status-dot--ready{color:#39dda2}.status-dot--error{color:#fb7185}.control-layout{grid-template-columns:1fr 1fr;width:100%;height:100%;display:grid}.control-zone{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;min-width:0;position:relative;overflow:hidden}.movement-zone{border-right:1px solid #ffffff14}.control-zone:after{content:"";pointer-events:none;border:1px solid #ffffff0f;border-radius:24px;position:absolute;inset:14px}.control-zone.is-active:after{background:#4dbeea0a;border-color:#6fd6ff59}.action-zone.is-active:after{background:0 0;border-color:#ffffff0f}.zone-label,.action-zone{flex-direction:column;justify-content:center;align-items:center;display:flex}.zone-label{opacity:.48;pointer-events:none;transition:opacity .12s;position:absolute;inset:0}.movement-zone.is-active .zone-label{opacity:.08}.control-zone strong{letter-spacing:.01em;margin-top:12px;font-size:clamp(14px,2.4vw,22px)}.control-zone small{color:#eefaff80;margin-top:4px;font-size:clamp(10px,1.5vw,13px)}.movement-icon{border:1px solid #ffffff40;border-radius:50%;place-items:center;width:54px;height:54px;font-size:28px;display:grid}.joystick-base{pointer-events:none;background:#1661846b;border:2px solid #b1e7ff7a;border-radius:50%;width:144px;height:144px;display:none;position:absolute;transform:translate(-50%,-50%);box-shadow:inset 0 0 30px #69d2ff1a}.movement-zone.is-active .joystick-base{display:block}.joystick-knob{background:#68d3ffbf;border:2px solid #ffffffb3;border-radius:50%;width:66px;height:66px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 7px 22px #000a1452}.action-zone{cursor:pointer}.pickup-button{background:linear-gradient(145deg,#ffcd5d,#f48532);border:3px solid #ffffffb3;border-radius:50%;place-items:center;width:clamp(82px,16vmin,138px);height:clamp(82px,16vmin,138px);transition:transform 75ms,box-shadow 75ms;display:grid;box-shadow:0 9px #843b14a6,0 18px 35px #00000047}.pickup-hand{color:#fff6d4;text-shadow:0 2px 6px #6a2c0e59;font-size:clamp(34px,7vmin,62px)}.action-zone.is-active .pickup-button{transform:translateY(7px)scale(.96);box-shadow:0 3px #843b14a6,0 10px 20px #00000038}.connection-overlay{z-index:10;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#010a12c4;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.connection-card{text-align:center;background:#051c2cf0;border:1px solid #ffffff24;border-radius:22px;flex-direction:column;align-items:center;width:min(390px,74vw);padding:25px 30px;display:flex;box-shadow:0 22px 70px #00000059}.connection-card h1{color:#fff;margin:13px 0 7px;font-size:clamp(21px,4vw,30px)}.connection-card p{color:#eefaffa6;margin:0;font-size:clamp(12px,2vw,15px);line-height:1.45}.connection-card small{color:#eefaff59;margin-top:14px}.connection-spinner{border:3px solid #ffffff2e;border-top-color:#68d3ff;border-radius:50%;width:23px;height:23px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.connection-spinner{animation-duration:1.8s}.pickup-button{transition:none}}@media (orientation:portrait){.controller-shell{transform-origin:0 0;width:100vh;height:100vw;position:absolute;top:0;left:0;transform:rotate(90deg)translateY(-100%)}}
