.viewer-container{position:relative;width:100%;height:100%;flex:1}.viewer-canvas{width:100%!important;height:100%!important;background:transparent!important;touch-action:none}.loading-indicator{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:1rem;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:1}.viewer-container.loading .loading-indicator{opacity:1}.loading-indicator p{color:#fff;font-size:1rem;text-shadow:0 2px 4px rgba(0,0,0,.5)}@media (max-width: 768px){.viewer-canvas{cursor:grab}.viewer-canvas:active{cursor:grabbing}}.app{width:100%;height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#faf8f5,#f0ebe3)}.app-header{padding:1.5rem 2.5rem;background:#ffffffd9;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid rgba(139,115,85,.15);box-shadow:0 2px 20px #8b735514;z-index:100}.app-header h1{font-size:2rem;font-weight:400;margin:0;color:#5a4a3a;letter-spacing:.5px;font-family:Georgia,serif}.subtitle{font-size:.85rem;color:#8b7355;margin-top:.4rem;letter-spacing:.3px}.app-main{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.upload-section{display:flex;flex-direction:column;align-items:center;gap:1.5rem;z-index:10}.upload-button{display:inline-flex;align-items:center;gap:.5rem;padding:1.2rem 2.5rem;font-size:1.2rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea66}.upload-button:hover{transform:translateY(-3px);box-shadow:0 6px 20px #667eea99}.upload-button:active{transform:translateY(-1px)}.loading-overlay{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;background:#000000b3;border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.loading-overlay p{color:#fff;font-size:1rem}.error-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#dc2626f2;color:#fff;padding:1.5rem 2rem;border-radius:12px;display:flex;flex-direction:column;gap:1rem;align-items:center;z-index:1000;box-shadow:0 8px 32px #0006;max-width:90%}.error-message p{margin:0;font-size:1rem}.error-message button{background:#fff;color:#dc2626;border:none;padding:.5rem 1.5rem;border-radius:6px;font-weight:600;cursor:pointer}.controls{position:absolute;bottom:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:1rem;z-index:10;width:90%;max-width:600px}.reset-button{background:#000000b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);padding:.8rem 1.5rem;font-size:1rem;border-radius:8px;color:#fff;cursor:pointer;transition:all .3s ease}.reset-button:hover{background:#000000d9;border-color:#fff6}.share-section{display:flex;flex-direction:column;gap:.8rem;background:#000000b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:1rem;border-radius:8px;border:1px solid rgba(255,255,255,.2)}.share-button{background:linear-gradient(135deg,#10b981,#059669);border:none;color:#fff;font-weight:600;padding:.8rem 1.5rem;border-radius:8px}.share-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #10b98166}.share-url{width:100%}.share-url input{width:100%;padding:.6rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fff;font-size:.85rem;font-family:monospace}.share-url input:focus{outline:none;border-color:#667eea;background:#ffffff26}.app-footer{padding:1rem 2.5rem;text-align:center;background:#ffffffe6;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid rgba(139,115,85,.15);box-shadow:0 -2px 20px #8b73550d}.app-footer p{margin:0;font-size:.85rem;color:#8b7355;letter-spacing:.3px}@media (max-width: 768px){.app-header h1{font-size:1.4rem}.upload-button{padding:1rem 2rem;font-size:1rem}.controls{bottom:60px;width:95%}.app-footer{font-size:.75rem;padding:.8rem}}@media (max-width: 480px){.app-header{padding:.8rem 1rem}.app-header h1{font-size:1.2rem}.subtitle{font-size:.8rem}.upload-button{padding:.9rem 1.5rem;font-size:.95rem}.controls{bottom:50px}.share-url input{font-size:.75rem}}*{margin:0;padding:0;box-sizing:border-box}:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,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}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;overflow:hidden}#root{width:100vw;height:100vh;margin:0 auto}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:all .25s;color:#fff}button:hover{border-color:#646cff;transform:translateY(-2px)}button:active{transform:translateY(0)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}button:disabled{cursor:not-allowed;opacity:.5}input[type=file]{display:none}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}button{background-color:#f9f9f9;color:#213547}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner{border:4px solid rgba(255,255,255,.3);border-radius:50%;border-top:4px solid #646cff;width:40px;height:40px;animation:spin 1s linear infinite}
