.media-viewer{position:fixed;inset:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:1000;touch-action:pan-y}.viewer-content{max-width:90vw;max-height:90vh;display:flex;align-items:center;justify-content:center}.viewer-media{max-width:100%;max-height:90vh;object-fit:contain;border-radius:4px;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.viewer-close{position:absolute;top:20px;right:20px;width:44px;height:44px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;font-size:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.viewer-close:hover{background:#fff3}.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:80px;background:#ffffff1a;border:none;color:#fff;font-size:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;border-radius:4px}.viewer-nav:hover{background:#fff3}.viewer-prev{left:20px}.viewer-next{right:20px}.viewer-counter{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#0009;color:#fff;padding:8px 16px;border-radius:20px;font-size:14px;font-family:system-ui,-apple-system,sans-serif}@media(max-width:768px){.viewer-nav{width:40px;height:60px;font-size:28px}.viewer-prev{left:10px}.viewer-next{right:10px}.viewer-close{top:10px;right:10px;width:40px;height:40px}}@font-face{font-family:PixelFont;src:local("Press Start 2P"),local("VT323"),local("Courier New")}.gallery-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;image-rendering:pixelated}.gallery-frame{background:#6b4423;border:8px solid #3d2817;border-radius:4px;padding:16px;max-width:500px;width:90%;box-shadow:inset 0 0 0 4px #8b6914,inset 0 0 0 8px #3d2817,0 8px 32px #00000080;position:relative}.gallery-frame:before{content:"";position:absolute;inset:4px;border:2px solid #a0522d;pointer-events:none}.gallery-header{background:linear-gradient(180deg,#8b4513,#654321);border:4px solid #3d2817;border-radius:2px;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.gallery-title{color:gold;font-family:Courier New,monospace;font-size:16px;font-weight:700;text-shadow:2px 2px 0 #3d2817;letter-spacing:2px}.gallery-close{background:#8b0000;border:3px solid #3d2817;color:gold;width:28px;height:28px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:Courier New,monospace}.gallery-close:hover{background:#b22222}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:8px;background:#2d1810;border:4px solid #3d2817;border-radius:2px}.gallery-item{aspect-ratio:1;background:#1a0f0a;border:4px solid #3d2817;cursor:pointer;position:relative;transition:transform .1s}.gallery-item:before{content:"";position:absolute;inset:0;border:2px solid #654321;pointer-events:none}.gallery-item:hover{transform:scale(1.05);border-color:gold;box-shadow:0 0 8px gold}.gallery-item-inner{width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}.gallery-thumb{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.gallery-footer{text-align:center;margin-top:12px;color:#daa520;font-family:Courier New,monospace;font-size:12px;text-shadow:1px 1px 0 #3d2817}.gallery-pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:12px;padding:8px;border-top:2px solid #3d2817}.page-btn{background:linear-gradient(180deg,#8b4513,#654321);border:3px solid #3d2817;color:gold;width:32px;height:32px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.page-btn:hover:not(:disabled){background:linear-gradient(180deg,sienna,#8b4513)}.page-btn:disabled{opacity:.4;cursor:not-allowed}.page-info{color:gold;font-family:Courier New,monospace;font-size:14px;font-weight:700;text-shadow:1px 1px 0 #3d2817}.upload-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.upload-frame{background:#6b4423;border:8px solid #3d2817;border-radius:4px;padding:16px;max-width:450px;width:90%;box-shadow:inset 0 0 0 4px #8b6914,inset 0 0 0 8px #3d2817,0 8px 32px #00000080}.upload-header{background:linear-gradient(180deg,#8b4513,#654321);border:4px solid #3d2817;border-radius:2px;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.upload-title{color:gold;font-family:Courier New,monospace;font-size:14px;font-weight:700;text-shadow:2px 2px 0 #3d2817}.upload-close{background:#8b0000;border:3px solid #3d2817;color:gold;width:28px;height:28px;font-size:14px;cursor:pointer;font-family:Courier New,monospace}.upload-close:hover{background:#b22222}.upload-dropzone{background:#2d1810;border:4px dashed #654321;border-radius:4px;min-height:200px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.upload-dropzone:hover,.upload-dropzone.drag-over{border-color:gold;background:#3d2817}.upload-dropzone.has-preview{border-style:solid;cursor:default}.upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;color:#daa520;font-family:Courier New,monospace;font-size:12px}.upload-icon{font-size:32px}.preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px;width:100%}.preview-item{position:relative;aspect-ratio:1;border:2px solid #654321;border-radius:4px;overflow:hidden}.preview-thumb{width:100%;height:100%;object-fit:cover}.preview-remove{position:absolute;top:2px;right:2px;background:#8b0000;border:2px solid #3d2817;color:gold;width:20px;height:20px;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.preview-remove:hover{background:#b22222}.preview-add{aspect-ratio:1;border:2px dashed #654321;border-radius:4px;display:flex;align-items:center;justify-content:center;color:#daa520;font-size:24px;cursor:pointer}.preview-add:hover{border-color:gold;color:gold}.upload-actions{margin-top:16px;display:flex;justify-content:space-between;align-items:center}.upload-count{color:#daa520;font-family:Courier New,monospace;font-size:12px}.upload-btn{background:linear-gradient(180deg,#228b22,#006400);border:4px solid #3d2817;color:gold;padding:8px 24px;font-family:Courier New,monospace;font-size:14px;font-weight:700;cursor:pointer;text-shadow:1px 1px 0 #3d2817}.upload-btn:hover:not(:disabled){background:linear-gradient(180deg,#32cd32,#228b22)}.upload-btn:disabled{opacity:.5;cursor:not-allowed}.world-root{width:100vw;height:100vh;overflow:hidden;background-color:#87ceeb;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.loading-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#87ceeb,#5ba3c0);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.loading-card{background:#fffffff2;padding:40px 50px;border-radius:16px;box-shadow:0 10px 40px #0003;text-align:center;min-width:280px}.loading-title{font-size:24px;font-weight:700;color:#3e2723;margin-bottom:25px;font-family:Georgia,serif}.loading-bar{width:100%;height:12px;background:#e0e0e0;border-radius:6px;overflow:hidden;margin-bottom:15px;border:2px solid #8d6e63}.loading-progress{height:100%;background:linear-gradient(90deg,#4caf50,#8bc34a);border-radius:4px;transition:width .2s ease-out}.loading-text{font-size:18px;color:#5d4037;font-weight:700;font-family:monospace}@media(max-width:768px){.loading-card{padding:30px 35px;min-width:240px;margin:20px}.loading-title{font-size:20px;margin-bottom:20px}.loading-bar{height:10px}.loading-text{font-size:16px}}.world-root canvas{display:block;image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;image-rendering:pixelated}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#ffffffde;background-color:#0b0f1a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{background-color:#0b0f1a;overflow:hidden}
