*{margin:0;padding:0;box-sizing:border-box}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#fffffff2;background-color:#0a0a0a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden}#app{width:100vw;height:100vh;overflow:hidden}.page-container{width:100%;height:100%;display:flex;flex-direction:column}.nav{background:linear-gradient(135deg,#1a1a1a,#2a2a2a);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #333;box-shadow:0 4px 6px #0000004d;z-index:100}.nav h1{font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0}.nav-links{display:flex;gap:1rem}.nav-link{color:#ffffffb3;text-decoration:none;padding:.5rem 1rem;border-radius:8px;transition:all .3s ease;font-weight:500}.nav-link:hover{color:#fff;background:#ffffff1a}.nav-link.active{color:#fff;background:linear-gradient(135deg,#667eea,#764ba2)}.back-link{position:fixed;top:1.5rem;left:1.5rem;color:#ffffffe6;text-decoration:none;padding:.75rem 1.25rem;background:#00000038;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:8px;border:1px solid rgba(255,255,255,.12);font-weight:600;font-size:.95rem;transition:all .3s ease;z-index:100;box-shadow:0 4px 12px #0000004d}.back-link:hover{color:#fff;background:#ffffff24;transform:none;box-shadow:0 4px 12px #0000004d}.instructions-panel{left:1rem;right:auto;bottom:1rem;width:360px;z-index:89}.imported-models-panel{left:1rem;right:auto;top:1rem;bottom:auto;width:220px!important;max-height:232px;z-index:89}.imported-models-panel .wall-controls-body{max-height:96px;overflow:hidden;display:flex;flex-direction:column}.imported-models-panel.collapsed{width:220px!important;max-height:106px}.imported-models-panel .wall-controls-body.is-collapsed{display:none!important}.imported-models-actions{margin-top:.45rem;padding-top:.35rem;padding-bottom:.8rem;border-top:1px solid rgba(255,255,255,.12)}.imported-models-actions .wall-panel-btn{margin-top:0}.wall-controls-panel.model-pieces-panel{left:1rem;right:auto;top:1rem;bottom:auto;width:320px;max-height:220px;overflow:hidden;z-index:89}.model-pieces-panel .wall-controls-body{max-height:150px;overflow:auto}.wall-controls-panel.model-pieces-panel.collapsed{width:320px}.model-pieces-list{margin:0;padding-left:1.1rem;list-style:disc;font-size:.78rem;color:#ffffffd1}.model-pieces-list li+li{margin-top:.2rem}.model-pieces-empty{list-style:none;margin-left:-1.1rem;color:#fff9}.instructions-text{margin:0;text-align:left;font-size:.78rem;color:#ffffffd1}.instructions-list{margin:0;padding-left:1.1rem;list-style:disc;text-align:left;font-size:.78rem;color:#ffffffd1}.instructions-list li+li{margin-top:.2rem}.fps-display{position:absolute;left:.65rem;bottom:.45rem;color:inherit;font-size:.78rem;font-weight:600;line-height:1;z-index:1;pointer-events:none}.user-info-panel{position:fixed;top:1rem;right:1rem;min-width:170px;max-width:260px;padding:.45rem .65rem 2rem;border-radius:8px;border:1px solid rgba(255,255,255,.24);background:linear-gradient(140deg,#fff3,#72b6ff1f 28%,#ff92f11a 60%,#ffffff14);backdrop-filter:saturate(1.5) blur(14px);-webkit-backdrop-filter:saturate(1.5) blur(14px);z-index:87;pointer-events:none;box-shadow:0 12px 28px #0000004d;overflow:hidden;isolation:isolate}.user-info-label{font-size:.64rem;letter-spacing:.03em;line-height:1.1;opacity:.86}.user-info-name{margin-top:.18rem;font-size:.82rem;font-weight:600;line-height:1.2;word-break:break-word}.user-info-email{margin-top:.12rem;font-size:.72rem;line-height:1.2;opacity:.9;word-break:break-word}.model-info{position:fixed;top:1rem;left:1.5rem;right:auto;background:linear-gradient(145deg,#fff3,#7abfff1f 32%,#ff9ef61a 62%,#ffffff12);backdrop-filter:saturate(1.5) blur(16px);-webkit-backdrop-filter:saturate(1.5) blur(16px);padding:1rem 1.5rem;border-radius:12px;border:1px solid rgba(255,255,255,.26);box-shadow:0 18px 34px #00000057;z-index:50;max-width:340px;text-align:left;overflow:hidden;isolation:isolate}.model-info-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.model-info h2{font-size:1.25rem;margin:0;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.model-back-inline{color:#ffffffe6;text-decoration:none;padding:.35rem .55rem;border-radius:7px;border:1px solid rgba(255,255,255,.2);background:#ffffff14;font-size:.78rem;line-height:1}.model-back-inline:hover{background:#ffffff24}.model-info p{font-size:.75rem;color:#ffffff80;line-height:1.4;margin:0}.model-children-section{margin-top:.75rem}.model-children-section h3{margin:0 0 .4rem;font-size:.75rem;font-weight:600;color:#ffffffd1}.model-children-list{margin:0;padding-left:0;list-style:none;max-height:180px;overflow:auto;font-size:.72rem;color:#ffffffd1}.model-children-list li+li{margin-top:.16rem}.model-children-item{width:100%;text-align:left;padding:.3rem .45rem;border:1px solid rgba(255,255,255,.14);border-radius:6px;background:#ffffff0f;color:#ffffffe6;font-size:.72rem;cursor:pointer}.model-children-item:hover{background:#ffffff1f}.model-children-item.is-selected{border-color:#ff2ebd99;background:#ff2ebd2e}.model-children-empty{list-style:none;margin-left:0;color:#fff9}.bom-status{margin-top:.45rem;font-size:.72rem;color:#ffffffbf}.bom-model-meta{margin-top:.35rem;font-size:.64rem;line-height:1.35;color:#ffffff9e;word-break:break-word}#canvas-container{flex:1;position:relative;overflow:hidden;background:#0a0a0a}#canvas-container canvas{display:block;width:100%;height:100%}.wall-controls-panel{position:fixed;right:1rem;bottom:1rem;width:260px;padding:.9rem;border:1px solid rgba(255,255,255,.26);border-radius:10px;background:linear-gradient(145deg,#fff3,#7abfff1f 34%,#ff9ef61a 65%,#ffffff12);backdrop-filter:saturate(1.45) blur(15px);-webkit-backdrop-filter:saturate(1.45) blur(15px);z-index:90;box-shadow:0 16px 30px #00000052;overflow:hidden;isolation:isolate}.wall-controls-panel:before,.model-info:before,.user-info-panel:before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:radial-gradient(120% 65% at 0% 0%,#97e1ff3d,#97e1ff00 60%),radial-gradient(120% 70% at 100% 100%,#ff9af133,#ff9af100 62%);opacity:.9;pointer-events:none;z-index:-1}.wall-controls-panel,.wall-controls-panel *,.model-info,.model-info *,.user-info-panel,.user-info-panel *{color:#2f3438}.model-info h2{background:none;-webkit-text-fill-color:#2f3438}.wall-controls-panel h3{margin:0 0 .6rem;font-size:.9rem;color:#ffffffe6}.wall-controls-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.wall-controls-header h3{margin:0}.wall-controls-toggle{border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#ffffffd9;border-radius:6px;width:28px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer}.wall-controls-toggle:hover{background:#ffffff24}.wall-controls-caret{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid rgba(255,255,255,.9)}.wall-controls-toggle.is-collapsed .wall-controls-caret{border-top:0;border-bottom:7px solid rgba(255,255,255,.9)}.wall-controls-body{margin-top:.4rem}.controls-section+.controls-section{margin-top:.75rem;padding-top:.6rem;border-top:1px solid rgba(255,255,255,.12)}.controls-section h4{margin:0 0 .35rem;font-size:.78rem;font-weight:600;letter-spacing:.02em;color:#ffffffd1}.wall-controls-panel.collapsed{width:190px}.wall-controls-panel.imported-models-panel.collapsed{width:220px!important}.wall-controls-panel.imported-models-panel.collapsed #imported-models-body{display:none!important;max-height:0!important;overflow:hidden!important;margin-top:0!important}.wall-control{display:grid;grid-template-columns:1fr auto;gap:.35rem .6rem;align-items:center;margin-top:.5rem}.wall-control span{grid-column:1 / -1;font-size:.8rem;color:#fffc}.wall-control input[type=range]{width:100%}.wall-control output{min-width:2.8rem;text-align:right;font-size:.8rem;color:#ffffffe6}.wall-control-file{display:flex;flex-direction:column;gap:.35rem;margin-top:.5rem}.wall-control-file span{font-size:.8rem;color:#fffc}.wall-control-file input[type=file]{font-size:.75rem;color:#ffffffe6}.wall-control-file output{font-size:.75rem;color:#ffffffd9}.inline-grid-controls{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.5rem}.wall-control-inline{display:flex;align-items:center;justify-content:space-between;gap:.4rem;font-size:.8rem;color:#fffc}.wall-control-inline input{width:70px;padding:.2rem .35rem;border:1px solid rgba(255,255,255,.25);border-radius:6px;background:#ffffff14;color:#fffffff2}.wall-checkbox-control{display:flex;align-items:center;gap:.45rem;margin-top:.5rem;color:#ffffffdb;font-size:.8rem}.wall-checkbox-control input{width:14px;height:14px}.wall-panel-btn{width:100%;margin-top:.55rem;padding:.42rem .55rem;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:#ffffff14;color:#ffffffe6;font-size:.78rem;cursor:pointer}.wall-panel-btn:hover{background:#ffffff24}.wall-panel-btn.subtle{margin-top:.4rem}.file-btn{position:relative;overflow:hidden}.file-btn input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.model-controls{position:fixed;right:1rem;bottom:1rem;width:260px;padding:.9rem;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:#00000038;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:90}.model-controls h3{margin:0 0 .6rem;font-size:.9rem;color:#ffffffe6}.model-controls .control-btn{width:100%;margin-top:.45rem;padding:.42rem .55rem;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:#ffffff14;color:#ffffffe6;font-size:.78rem;box-shadow:none}.model-controls .control-btn:hover{transform:none;box-shadow:none;background:#ffffff24}.model-controls .control-btn.active{background:#ff2ebd38;border-color:#ff2ebd73;box-shadow:none}.model-hdri-load{margin-top:.75rem}.control-btn{padding:.75rem 1.5rem;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 8px #667eea4d}.control-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea80}.control-btn:active{transform:translateY(0)}.control-btn.active{background:linear-gradient(135deg,#f093fb,#f5576c);box-shadow:0 2px 8px #f5576c4d}@media(max-width:768px){.nav{flex-direction:column;gap:1rem;padding:1rem}.nav h1{font-size:1.25rem}.back-link{top:1rem;left:1rem;padding:.6rem 1rem;font-size:.85rem}.instructions-panel{left:.75rem;bottom:.75rem;width:min(300px,calc(100vw - 1.5rem))}.imported-models-panel{left:.75rem;top:.75rem;width:min(210px,calc(100vw - 1.5rem))!important;max-height:217px}.imported-models-panel.collapsed{width:min(210px,calc(100vw - 1.5rem))!important;max-height:100px}.wall-controls-panel.imported-models-panel.collapsed{width:min(210px,calc(100vw - 1.5rem))!important}.wall-controls-panel.model-pieces-panel{left:.75rem;top:.75rem;width:min(280px,calc(100vw - 1.5rem));max-height:190px}.wall-controls-panel.model-pieces-panel.collapsed{width:min(280px,calc(100vw - 1.5rem))}.instructions-text,.instructions-list,.model-pieces-list{font-size:.72rem}.model-pieces-panel .wall-controls-body{max-height:120px}.fps-display{left:.55rem;bottom:.4rem;font-size:.72rem}.user-info-panel{top:.75rem;right:.75rem;min-width:150px;max-width:220px;padding:.4rem .55rem 1.85rem}.user-info-label{font-size:.6rem}.user-info-name{font-size:.74rem}.user-info-email{font-size:.68rem}.model-info{top:.75rem;left:1rem;right:auto;max-width:250px;padding:.75rem 1rem}.model-info h2{font-size:1.1rem}.model-info p{font-size:.7rem}.model-controls{right:.75rem;bottom:.75rem;width:220px;padding:.75rem}.wall-controls-panel{right:.75rem;bottom:.75rem;width:220px}.control-btn{padding:.6rem 1rem;font-size:.85rem}}.loading{display:flex;justify-content:center;align-items:center;height:100%;font-size:1.2rem;color:#ffffffb3}.route-loading{flex-direction:column;gap:.75rem}.route-loading-overlay{position:fixed;inset:0;z-index:2000;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .14s ease;background:#0a0a0a}.route-loading-overlay.is-visible{opacity:1;visibility:visible}.model-loading-overlay{position:fixed;inset:0;z-index:2100;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .14s ease;background:#0a0a0ae6}.model-loading-overlay.is-visible{opacity:1;visibility:visible}.route-loading-spinner{width:28px;height:28px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:#ff2ebd;animation:routeSpin .9s linear infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes routeSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.page-container{animation:fadeIn .3s ease-out}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#00000061;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;justify-content:center;align-items:center;animation:fadeIn .2s ease-out}.modal-content{position:relative;background:linear-gradient(145deg,#fff3,#7abfff1f 34%,#ff9ef61a 65%,#ffffff12);backdrop-filter:saturate(1.45) blur(15px);-webkit-backdrop-filter:saturate(1.45) blur(15px);border-radius:16px;border:1px solid rgba(255,255,255,.26);box-shadow:0 16px 30px #00000052;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;overflow-x:hidden;isolation:isolate}.modal-content:before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:radial-gradient(120% 65% at 0% 0%,#97e1ff3d,#97e1ff00 60%),radial-gradient(120% 70% at 100% 100%,#ff9af133,#ff9af100 62%);opacity:.9;pointer-events:none;z-index:-1}.modal-header{position:absolute;top:.55rem;right:.55rem;left:.55rem;display:flex;justify-content:flex-end;align-items:center;padding:0;border-bottom:none;pointer-events:none}.modal-header h2{margin:0;font-size:1.5rem;color:#2f3438}.modal-close{pointer-events:auto;background:none;border:none;color:#2f3438;font-size:2rem;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border-radius:4px}.modal-close:hover{color:#1f2428;background:#ffffff42}.modal-body{padding:1.5rem}.modal-body h3{margin-top:0;margin-bottom:1rem;font-size:1.1rem;color:#fffffff2}.modal .wall-control input[type=text]{width:100%;padding:.4rem .55rem;border:1px solid rgba(255,255,255,.28);border-radius:8px;background:#0000004d;color:#fffffff5}.modal .wall-control input[type=text]::placeholder{color:#fff9}.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}.model-card{background:#0006;border:2px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem 1rem;cursor:pointer;transition:all .3s ease;text-align:center}.model-card:hover{border-color:#667eea;background:#667eea33;transform:translateY(-2px);box-shadow:0 4px 12px #667eea4d}.model-card-name{font-size:1rem;font-weight:600;margin-bottom:.5rem;color:#ffffffe6}.model-card-btn{font-size:.85rem;color:#667eea;font-weight:500}.divider{text-align:center;margin:2rem 0;color:#fff6;font-size:.9rem;position:relative}.divider:before,.divider:after{content:"";position:absolute;top:50%;width:40%;height:1px;background:#fff3}.divider:before{left:0}.divider:after{right:0}.upload-area{position:relative}.upload-area input[type=file]{position:absolute;opacity:0;width:0;height:0}.upload-label{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;border:2px dashed rgba(255,255,255,.3);border-radius:12px;cursor:pointer;transition:all .3s ease;background:#0000004d}.upload-label:hover{border-color:#667eea;background:#667eea1a}.upload-icon{font-size:3rem}.upload-label span:last-child{color:#ffffffb3;font-size:.95rem}.imported-models-section{margin-top:1rem}.imported-models-toggle{width:100%;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:#ffffff14;color:#ffffffe6;text-align:left;cursor:pointer}.imported-models-list{margin-top:0;max-height:none;flex:1 1 auto;overflow:auto;display:flex;flex-direction:column;gap:.4rem}.imported-model-item{width:100%;padding:.35rem .5rem;border:1px solid rgba(255,255,255,.14);border-radius:7px;background:#ffffff0f;color:#ffffffe6;text-align:left;cursor:pointer;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.2}.imported-model-item:hover{background:#ffffff1f}.imported-model-empty{padding:.4rem .2rem;color:#ffffff8c;font-size:.85rem}@media(max-width:768px){.modal-content{width:95%;max-height:90vh}.modal-header{top:.45rem;right:.45rem;left:.45rem;padding:0}.modal-header h2{font-size:1.25rem}.modal-body{padding:1.2rem}.model-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.75rem}.model-card{padding:1rem .75rem}}.wall-controls-panel h3,.wall-controls-panel h4,.wall-controls-panel span,.wall-controls-panel label,.wall-controls-panel output,.wall-controls-panel button,.wall-controls-panel .instructions-list,.wall-controls-panel .instructions-list li,.wall-controls-panel .wall-control-inline,.wall-controls-panel .wall-control-file,.wall-controls-panel .wall-checkbox-control,.wall-controls-panel input[type=file],.wall-controls-panel input[type=number]{color:#2f3438!important}.wall-controls-toggle,.wall-controls-toggle:hover{color:#2f3438!important}.wall-controls-caret{border-top-color:#2f3438!important}.wall-controls-toggle.is-collapsed .wall-controls-caret{border-bottom-color:#2f3438!important}.model-info,.model-info p,.model-info .bom-status,.model-info .bom-model-meta,.model-info .bom-model-meta div,.model-info .model-children-section h3,.model-info .model-children-list,.model-info .model-children-empty,.model-info .model-children-item,.model-info .model-children-item:hover,.model-info .model-children-item.is-selected,.model-info .model-back-inline,.model-info .model-back-inline:hover{color:#2f3438!important}.model-info h2{-webkit-text-fill-color:#2f3438!important}.user-info-panel,.user-info-panel *{color:#2f3438!important}.wall-controls-panel.is-on-dark-bg h3,.wall-controls-panel.is-on-dark-bg h4,.wall-controls-panel.is-on-dark-bg span,.wall-controls-panel.is-on-dark-bg label,.wall-controls-panel.is-on-dark-bg output,.wall-controls-panel.is-on-dark-bg button,.wall-controls-panel.is-on-dark-bg .instructions-list,.wall-controls-panel.is-on-dark-bg .instructions-list li,.wall-controls-panel.is-on-dark-bg .wall-control-inline,.wall-controls-panel.is-on-dark-bg .wall-control-file,.wall-controls-panel.is-on-dark-bg .wall-checkbox-control,.wall-controls-panel.is-on-dark-bg input[type=file],.wall-controls-panel.is-on-dark-bg input[type=number],.wall-controls-panel.is-on-dark-bg{color:#fffffff0!important}.wall-controls-panel.is-on-dark-bg .wall-controls-toggle,.wall-controls-panel.is-on-dark-bg .wall-controls-toggle:hover{color:#fffffff0!important}.wall-controls-panel.is-on-dark-bg .wall-controls-caret{border-top-color:#fffffff0!important}.wall-controls-panel.is-on-dark-bg .wall-controls-toggle.is-collapsed .wall-controls-caret{border-bottom-color:#fffffff0!important}.model-info.is-on-dark-bg,.model-info.is-on-dark-bg p,.model-info.is-on-dark-bg .bom-status,.model-info.is-on-dark-bg .bom-model-meta,.model-info.is-on-dark-bg .bom-model-meta div,.model-info.is-on-dark-bg .model-children-section h3,.model-info.is-on-dark-bg .model-children-list,.model-info.is-on-dark-bg .model-children-empty,.model-info.is-on-dark-bg .model-children-item,.model-info.is-on-dark-bg .model-children-item:hover,.model-info.is-on-dark-bg .model-children-item.is-selected,.model-info.is-on-dark-bg .model-back-inline,.model-info.is-on-dark-bg .model-back-inline:hover{color:#fffffff0!important}.model-info.is-on-dark-bg h2{-webkit-text-fill-color:rgba(255,255,255,.94)!important}.user-info-panel.is-on-dark-bg,.user-info-panel.is-on-dark-bg *{color:#fffffff0!important}
