: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}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;min-width:320px;min-height:100vh;overflow:hidden}#root{width:100vw;height:100vh;margin:0;padding:0}h1{font-size:3.2em;line-height:1.1}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}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.auth-container{position:absolute;top:20px;right:20px;z-index:20;background:#000000e6;border-radius:8px;padding:1.5rem;min-width:300px;box-shadow:0 4px 6px #0000004d}.auth-form h3{margin:0 0 1rem;color:#fff;font-size:1.2rem}.auth-form input{width:100%;padding:.75rem;margin-bottom:.75rem;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:#ffffff1a;color:#fff;font-size:.9rem;box-sizing:border-box}.auth-form input::placeholder{color:#ffffff80}.auth-form input:focus{outline:none;border-color:#0af}.auth-form button[type=submit]{width:100%;padding:.75rem;background:#0af;color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .3s ease;margin-bottom:.5rem}.auth-form button[type=submit]:hover:not(:disabled){background:#08c}.auth-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.toggle-auth{width:100%;padding:.5rem;background:transparent;color:#0af;border:none;border-radius:4px;font-size:.85rem;cursor:pointer;transition:color .3s ease;text-decoration:underline}.toggle-auth:hover:not(:disabled){color:#08c}.toggle-auth:disabled{opacity:.6;cursor:not-allowed}.auth-message{margin-top:.75rem;padding:.5rem;background:#0af3;border-radius:4px;color:#fff;font-size:.85rem;text-align:center}.auth-button-container{display:flex;align-items:center;gap:.5rem;background:#000000b3;padding:.4rem .75rem;border-radius:6px;font-size:.8rem}.user-email{color:#fff;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.sign-out-button{padding:.4rem .75rem;background:#f44;color:#fff;border:none;border-radius:4px;font-size:.75rem;cursor:pointer;transition:background .3s ease;white-space:nowrap}@media(max-width:768px){.user-email{max-width:80px;font-size:.75rem}.sign-out-button{padding:.35rem .6rem;font-size:.7rem}}.sign-out-button:hover{background:#c00}.subscription-status{display:flex;align-items:center;gap:.4rem;font-size:.8rem}.pro-badge{display:flex;align-items:center;gap:.4rem;padding:.4rem .75rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:16px;font-size:.75rem;font-weight:500}.pro-icon{font-size:1rem}.subscription-info{font-size:.75rem;opacity:.9;margin-left:.25rem}.upgrade-button{padding:.4rem .75rem;background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;border:none;border-radius:16px;font-size:.75rem;font-weight:500;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;white-space:nowrap}.upgrade-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #f5576c66}.upgrade-button:active{transform:translateY(0)}.subscription-loading{color:#aaa;font-size:.85rem}.subscription-modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000}.subscription-modal{background:#2a2a2a;padding:2rem;border-radius:12px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000080;position:relative}.subscription-modal-close{position:absolute;top:1rem;right:1rem;background:transparent;border:none;color:#aaa;font-size:2rem;cursor:pointer;line-height:1;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.subscription-modal-close:hover{color:#fff}.subscription-modal h2{color:#fff;margin:0 0 1.5rem;font-size:1.5rem}.subscription-features{margin-bottom:1.5rem}.subscription-features h3{color:#fff;margin:0 0 1rem;font-size:1.1rem}.subscription-features ul{list-style:none;padding:0;margin:0}.subscription-features li{color:#ccc;padding:.5rem 0;font-size:.95rem;border-bottom:1px solid rgba(255,255,255,.1)}.subscription-features li:last-child{border-bottom:none}.subscription-pricing{text-align:center;margin:2rem 0;padding:1.5rem;background:#ffffff0d;border-radius:8px}.price{color:#fff;font-size:2.5rem;font-weight:700}.period{font-size:1rem;font-weight:400;color:#aaa;margin-left:.5rem}.subscribe-button{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;margin-bottom:1rem}.subscribe-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.subscribe-button:disabled{opacity:.6;cursor:not-allowed}.subscription-error{color:#f5576c;font-size:.85rem;margin:.5rem 0;text-align:center}.subscription-note{color:#aaa;font-size:.85rem;text-align:center;margin:0;line-height:1.5}.manage-subscription-button{padding:.25rem .5rem;background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:8px;font-size:.7rem;font-weight:500;cursor:pointer;transition:background .2s ease,transform .2s ease;margin-left:.5rem;white-space:nowrap}.manage-subscription-button:hover{background:#ffffff4d;transform:translateY(-1px)}.manage-subscription-button:active{transform:translateY(0)}.app-container{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden;display:flex;flex-direction:column}.storage-bar{position:relative;width:100%;background:#000000d9;border-bottom:1px solid rgba(255,255,255,.1);z-index:100;padding:.5rem 1rem;display:flex;align-items:center;justify-content:center}.storage-bar-content{width:100%;max-width:1200px;display:flex;align-items:center;gap:1rem}.storage-label{color:#fff;font-size:.85rem;font-weight:500;white-space:nowrap;min-width:fit-content}.storage-progress-container{flex:1;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden;position:relative}.storage-progress-bar{height:100%;background:#0af;border-radius:4px;transition:width .3s ease,background-color .3s ease}@media(max-width:768px){.storage-bar{padding:.4rem .75rem}.storage-bar-content{gap:.75rem}.storage-label{font-size:.75rem}.storage-progress-container{height:6px}}.drop-zone{width:100%;flex:1;position:relative;background:#1a1a1a;transition:background-color .3s ease;overflow:hidden}.drop-zone.dragging{background:#2a4a6a;border:3px dashed #00aaff}.drop-zone-content{width:100%;height:100%;position:relative}.viewer-container{width:100%;height:100%;position:absolute;top:0;left:0}.viewer-container canvas{display:block;width:100%;height:100%}.drop-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;z-index:10;pointer-events:none;background:#000000b3;padding:2rem 3rem;border-radius:12px;border:2px dashed #666;transition:all .3s ease}.drop-zone.dragging .drop-message{border-color:#0af;background:#00aaff1a}.drop-text{font-size:1.5rem;color:#fff;margin:0 0 1rem;font-weight:500}.drop-subtext{font-size:1rem;color:#aaa;margin:.5rem 0}.file-input-label{display:inline-block;margin-top:1rem;padding:.75rem 1.5rem;background:#0af;color:#fff;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:background .3s ease;pointer-events:auto}.file-input-label:hover{background:#08c}.file-input{display:none}.file-info{position:absolute;bottom:20px;left:20px;background:#000000d9;color:#fff;padding:.5rem 2.75rem .5rem 1rem;border-radius:6px;z-index:10;font-size:.85rem;max-width:350px;max-height:calc(100vh - 120px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;box-shadow:0 4px 12px #00000080;transition:max-height .3s ease,padding .3s ease}.file-info>*{padding-right:0}.file-info.collapsed{max-height:2.5rem;padding:.5rem 2.75rem .5rem .5rem;overflow:hidden;min-height:2.5rem}.file-info.collapsed>p:not(.collapsed-filename),.file-info.collapsed .model-dimensions,.file-info.collapsed .controls-grid{display:none}.collapsed-filename{margin:0!important;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 3rem);padding-right:.5rem;box-sizing:border-box}.menu-toggle-button{position:absolute;top:.5rem;right:.5rem;background:#ffffff26;border:none;color:#fff;font-size:.9rem;width:1.75rem;height:1.75rem;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease;z-index:11;touch-action:manipulation;-webkit-tap-highlight-color:transparent;flex-shrink:0;box-sizing:border-box;margin:0;padding:0}.menu-toggle-button:hover{background:#ffffff40}@media(max-width:768px){.file-info{padding:.5rem 3rem .5rem .75rem}.menu-toggle-button{width:2rem;height:2rem;font-size:1rem}.file-info.collapsed{padding:.5rem 3rem .5rem .5rem;min-height:2.5rem}.collapsed-filename{max-width:calc(100% - 3.5rem)}}.share-icon-button{background:#0af!important}.share-icon-button:hover{background:#08c!important}.share-button-inline{display:flex;align-items:center;justify-content:center;gap:.3rem;background:#0af;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:500;padding:.4rem .6rem;min-height:2.2rem;transition:background .2s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent;white-space:nowrap;width:100%;grid-column:1 / -1}.share-button-inline:hover{background:#08c}@media(max-width:768px){.share-button-inline{min-height:2.5rem;font-size:.8rem;padding:.5rem .7rem}}@media(max-width:768px){.file-info{bottom:10px;left:10px;right:10px;max-width:none;width:auto;padding:.5rem .75rem;font-size:.8rem;max-height:calc(100vh - 80px)}}.file-info p{margin:0 0 .3rem;line-height:1.3}.model-dimensions{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.2)}.dimensions-label{font-size:.75rem;color:#aaa;margin:0 0 .3rem!important}.dimensions-values{display:flex;gap:1rem;flex-wrap:wrap}.dimensions-values span{font-size:.9rem;color:#fff;font-family:monospace;background:#ffffff1a;padding:.25rem .5rem;border-radius:4px}@media(max-width:768px){.dimensions-values{gap:.5rem}.dimensions-values span{font-size:.8rem;padding:.3rem .6rem}}.share-link-container{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.2)}.share-label{font-size:.85rem;color:#aaa;margin-bottom:.5rem!important}.share-link-input-group{display:flex;gap:.5rem;align-items:center}.share-link-input{flex:1;padding:.5rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff;font-size:.85rem;font-family:monospace;min-width:0}.share-link-input:focus{outline:none;border-color:#0af}.copy-button{padding:.5rem 1rem;background:#0af;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:background .3s ease;white-space:nowrap}.copy-button:hover{background:#08c}.copy-button:active{background:#069}.share-button{width:100%;padding:.5rem .75rem;background:#0af;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:background .3s ease;margin-top:.5rem;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.share-button:hover:not(:disabled){background:#08c}.share-button:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.share-button,.share-my-own-button{min-height:44px;font-size:.95rem;padding:.85rem 1rem}.copy-button{min-height:44px;padding:.6rem 1.2rem}.password-input{font-size:16px;min-height:44px;padding:.75rem}}.sign-in-button{position:absolute;top:20px;right:20px;z-index:20;padding:.75rem 1.5rem;background:#0af;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .3s ease;box-shadow:0 2px 4px #0000004d;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.sign-in-button:hover{background:#08c}@media(max-width:768px){.sign-in-button{top:10px;right:10px;padding:.6rem 1rem;font-size:.85rem;min-height:44px}}.auth-top-right{position:absolute;top:10px;right:10px;z-index:20;display:flex;flex-direction:row;align-items:center;gap:.5rem;flex-wrap:wrap;max-width:calc(100% - 20px)}@media(max-width:768px){.auth-top-right{top:5px;right:5px;gap:.4rem;max-width:calc(100% - 10px)}}.shared-file-notice{font-size:.85rem;color:#aaa;font-style:italic;margin:.5rem 0 0!important}.controls-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-top:.5rem}.icon-button{width:100%;padding:.4rem;background:#4a4a4a;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1.1rem;font-weight:500;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-height:2.2rem;line-height:1;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.icon-button.active{background:#0af}.icon-button:hover{background:#5a5a5a;transform:scale(1.05)}.icon-button.active:hover{background:#08c}.icon-button:active{transform:scale(.95)}.button-icon{width:1.2rem;height:1.2rem;object-fit:contain;filter:brightness(0) invert(1)}.icon-button.active .button-icon{filter:brightness(0) invert(1)}@media(max-width:768px){.controls-grid{grid-template-columns:repeat(4,1fr);gap:.4rem}.icon-button{min-height:3rem;font-size:1.4rem;padding:.6rem;border-radius:6px}.button-icon{width:1.5rem;height:1.5rem}}.share-my-own-button{width:100%;padding:.75rem 1rem;background:#0af;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .3s ease;margin-top:.75rem}.share-my-own-button:hover{background:#08c}.password-protection-container{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.2)}.password-checkbox-label{display:flex;align-items:center;gap:.5rem;color:#fff;font-size:.9rem;cursor:pointer;margin-bottom:.5rem}.password-checkbox{width:18px;height:18px;cursor:pointer}.password-input{width:100%;padding:.5rem;margin-top:.5rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff;font-size:.9rem;font-family:inherit}.password-input::placeholder{color:#ffffff80}.password-input:focus{outline:none;border-color:#0af}.password-prompt-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.password-prompt-container{background:#2a2a2a;padding:2rem;border-radius:12px;max-width:400px;width:90%;box-shadow:0 4px 20px #00000080;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch}@media(max-width:768px){.password-prompt-overlay{padding:.5rem}.password-prompt-container{padding:1.5rem;width:calc(100% - 1rem);max-width:none;border-radius:8px}.password-prompt-container h3{font-size:1.1rem}.password-prompt-input{font-size:16px;padding:1rem;min-height:44px}.password-prompt-buttons{flex-direction:column;gap:.5rem}.password-submit-button,.password-cancel-button{width:100%;padding:1rem;min-height:44px;font-size:1rem}}.password-prompt-container h3{color:#fff;margin:0 0 .5rem;font-size:1.25rem}.password-prompt-container p{color:#aaa;margin:0 0 1.5rem;font-size:.9rem}.password-prompt-input{width:100%;padding:.75rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fff;font-size:1rem;font-family:inherit;margin-bottom:1rem;box-sizing:border-box}.password-prompt-input::placeholder{color:#ffffff80}.password-prompt-input:focus{outline:none;border-color:#0af}.password-prompt-buttons{display:flex;gap:.75rem;justify-content:flex-end}.password-submit-button{padding:.75rem 1.5rem;background:#0af;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .3s ease}.password-submit-button:hover:not(:disabled){background:#08c}.password-submit-button:disabled{opacity:.6;cursor:not-allowed}.password-cancel-button{padding:.75rem 1.5rem;background:#4a4a4a;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background .3s ease}.password-cancel-button:hover:not(:disabled){background:#5a5a5a}.password-cancel-button:disabled{opacity:.6;cursor:not-allowed}.pro-feature-badge{color:#f5576c;font-size:.75rem;font-weight:600;margin-left:.25rem}.pro-feature-notice{font-size:.8rem;color:#aaa;margin:.5rem 0 0;line-height:1.4}.inline-upgrade-link{background:none;border:none;color:#0af;text-decoration:underline;cursor:pointer;font-size:inherit;padding:0;margin-left:.25rem;font-weight:500}.inline-upgrade-link:hover{color:#08c}.share-modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem}.share-modal{background:#2a2a2a;padding:1.5rem;border-radius:12px;max-width:450px;width:100%;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 4px 20px #00000080;position:relative}.share-modal-close{position:absolute;top:1rem;right:1rem;background:transparent;border:none;color:#aaa;font-size:2rem;cursor:pointer;line-height:1;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;transition:color .2s ease;z-index:1}.share-modal-close:hover{color:#fff}.share-modal h2{color:#fff;margin:0 0 1.5rem;font-size:1.5rem}@media(max-width:768px){.share-modal-overlay{padding:.5rem}.share-modal{padding:1.25rem;max-width:none;width:calc(100% - 1rem);border-radius:8px}.share-modal h2{font-size:1.25rem;margin-bottom:1rem}}@media(max-width:768px){button,.file-input-label{min-height:44px;min-width:44px}*{-webkit-overflow-scrolling:touch}button{-webkit-user-select:none;user-select:none}.file-info p{margin:0 0 .4rem}.model-dimensions,.password-protection-container{margin-top:.5rem;padding-top:.5rem}}
