:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.mobile-controls{position:fixed;bottom:0;left:0;right:0;height:200px;display:flex;justify-content:space-between;pointer-events:none;z-index:100;padding:20px}.joystick-zone{width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:auto;touch-action:none}.joystick-base{width:100px;height:100px;background:#ffffff26;border:2px solid rgba(255,255,255,.3);border-radius:50%;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.joystick-stick{width:50px;height:50px;background:#3b82f6b3;border:2px solid rgba(255,255,255,.5);border-radius:50%;transition:transform .05s ease-out;box-shadow:0 2px 10px #0000004d}.joystick-stick.active{background:#3b82f6e6;box-shadow:0 2px 15px #3b82f680}.joystick-label,.camera-label{color:#fff9;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-top:8px}.camera-zone{width:150px;height:150px;background:#ffffff1a;border:2px dashed rgba(255,255,255,.3);border-radius:12px;display:flex;align-items:center;justify-content:center;pointer-events:auto;touch-action:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.mobile-hint{position:fixed;bottom:210px;left:50%;transform:translate(-50%);display:flex;gap:20px;pointer-events:none}.mobile-hint span{color:#ffffff80;font-size:11px;background:#0000004d;padding:4px 10px;border-radius:4px}@media(min-width:769px){.mobile-controls{display:none}}@media(max-height:600px){.mobile-controls{height:150px;padding:10px}.joystick-zone,.camera-zone{width:120px;height:120px}.joystick-base{width:80px;height:80px}.joystick-stick{width:40px;height:40px}.mobile-hint{bottom:160px}}.game-container{width:100%;height:100vh;position:relative;overflow:hidden}.game-hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:15px 20px;z-index:50;pointer-events:none}.game-hud>*{pointer-events:auto}.back-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#0009;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.back-btn:hover{background:#000c;border-color:#fff6}.player-name{position:absolute;left:50%;transform:translate(-50%)}.name-tag{background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;padding:8px 20px;border-radius:20px;font-weight:700;font-size:16px;letter-spacing:2px;box-shadow:0 4px 15px #3b82f666;border:2px solid rgba(255,255,255,.3)}.model-count{background:#00000080;padding:8px 14px;border-radius:6px;color:#fffc;font-size:13px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.controls-help{position:absolute;bottom:20px;left:20px;display:flex;flex-direction:column;gap:8px;z-index:50}.help-item{display:flex;align-items:center;gap:8px;color:#ffffffb3;font-size:12px;background:#0006;padding:6px 10px;border-radius:6px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.help-item kbd{background:#fff3;padding:2px 6px;border-radius:4px;font-family:monospace;font-size:11px;border:1px solid rgba(255,255,255,.3)}@media(max-width:768px){.controls-help{display:none}.game-hud{padding:10px 15px}.back-btn{padding:8px 12px;font-size:13px}.name-tag{padding:6px 14px;font-size:14px}.model-count{font-size:11px;padding:6px 10px}}@media(max-width:400px){.player-name{display:none}}*{box-sizing:border-box}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.header{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;background:linear-gradient(135deg,#1a1a2e,#16213e);border-bottom:1px solid rgba(59,130,246,.2)}.logo{display:flex;align-items:center;gap:.75rem}.logo svg{color:#3b82f6}.logo h1{font-size:1.5rem;font-weight:600;margin:0;background:linear-gradient(135deg,#3b82f6,#60a5fa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header-actions{display:flex;align-items:center;gap:.75rem}.reset-btn,.save-btn,.world-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:8px;color:#60a5fa;font-size:.875rem;cursor:pointer;transition:all .2s ease}.reset-btn:hover,.save-btn:hover{background:#3b82f633;border-color:#3b82f680}.save-btn{background:#22c55e1a;border-color:#22c55e4d;color:#4ade80}.save-btn:hover{background:#22c55e33;border-color:#22c55e80}.world-btn{background:linear-gradient(135deg,#8b5cf633,#3b82f633);border-color:#8b5cf666;color:#a78bfa;position:relative}.world-btn:hover{background:linear-gradient(135deg,#8b5cf64d,#3b82f64d);border-color:#8b5cf699}.model-badge{background:#8b5cf6;color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .4rem;border-radius:10px;margin-left:.25rem}.main{flex:1;display:flex;position:relative;overflow:hidden}.file-upload{flex:1;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#1a1a2e,#16213e);padding:2rem}.upload-content{display:flex;flex-direction:column;align-items:center;padding:3rem 4rem;border:2px dashed rgba(59,130,246,.4);border-radius:16px;background:#3b82f60d;text-align:center;transition:all .3s ease;max-width:500px}.file-upload:hover .upload-content,.upload-content:hover{border-color:#3b82f6b3;background:#3b82f61a}.upload-icon{color:#3b82f6;margin-bottom:1.5rem;opacity:.8}.upload-content h2{font-size:1.5rem;margin:0 0 .5rem;color:#e2e8f0}.upload-content p{margin:0 0 .5rem;color:#94a3b8;font-size:.95rem}.upload-content .formats{font-size:.8rem;color:#64748b;margin-bottom:1.5rem}.upload-content input[type=file]{display:none}.upload-button{display:inline-block;padding:.75rem 2rem;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;font-weight:500;border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:1rem}.upload-button:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.viewer-container{flex:1;position:relative;display:flex;flex-direction:column}.viewer-container canvas{flex:1}.viewer-controls{position:absolute;top:1rem;left:1rem;display:flex;gap:.5rem;z-index:10}.control-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#1a1a2ecc;border:1px solid rgba(59,130,246,.3);border-radius:8px;color:#94a3b8;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.control-btn:hover{background:#3b82f633;color:#60a5fa;border-color:#3b82f680}.control-btn.active{background:#3b82f64d;color:#60a5fa;border-color:#3b82f6}.model-info{position:absolute;top:1rem;right:1rem;display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;z-index:10;padding:.75rem 1rem;background:#1a1a2ecc;border-radius:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(59,130,246,.2)}.file-name{color:#e2e8f0;font-size:.9rem;font-weight:500;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{color:#64748b;font-size:.75rem}.viewer-instructions{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);display:flex;gap:1.5rem;padding:.5rem 1rem;background:#1a1a2ecc;border-radius:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(59,130,246,.2);z-index:10}.viewer-instructions span{color:#64748b;font-size:.75rem}.footer{padding:.75rem 2rem;background:linear-gradient(135deg,#1a1a2e,#16213e);border-top:1px solid rgba(59,130,246,.2);text-align:center}.footer p{margin:0;color:#64748b;font-size:.85rem}@media(max-width:768px){.header{padding:.75rem 1rem;flex-wrap:wrap;gap:.75rem}.logo h1{font-size:1.1rem}.header-actions{gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.reset-btn,.save-btn,.world-btn{padding:.4rem .75rem;font-size:.75rem}.reset-btn span:last-child,.save-btn span:last-child{display:none}.upload-content{padding:2rem;margin:1rem}.viewer-instructions{flex-wrap:wrap;justify-content:center;gap:.75rem}.model-info{max-width:150px}}@media(max-width:480px){.logo h1{font-size:.95rem}.world-btn span:last-of-type:not(.model-badge){display:none}.header-actions{width:100%;justify-content:flex-end}}
