@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(./outfit-variable-Bc-8i84L.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(./plus-jakarta-sans-variable-eXO_dkmS.woff2) format("woff2")}:root{--font-title: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-primary: #f5f4ef;--bg-secondary: rgba(247, 245, 240, .82);--bg-panel: rgba(255, 254, 250, .88);--border-color: rgba(45, 41, 37, .09);--border-hover: rgba(181, 158, 122, .6);--color-text-main: #2d2925;--color-text-muted: #7c7267;--accent-primary: #b59e7a;--accent-secondary: #0ea5e9;--accent-gradient: linear-gradient(135deg, #d0ba98 0%, #b59e7a 100%);--accent-glow: 0 4px 20px rgba(181, 158, 122, .25);--danger-color: #c2410c;--danger-gradient: linear-gradient(135deg, #ea580c 0%, #c2410c 100%);--success-color: #166534}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--color-text-main);height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}#app{display:flex;flex-direction:column;height:100vh;width:100vw}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background-color:#f5f4efe6;border-bottom:1px solid var(--border-color);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);z-index:10}.logo-container{display:flex;align-items:center;gap:.75rem}.logo-icon{width:32px;height:32px;background:var(--accent-gradient);border-radius:8px;position:relative;box-shadow:var(--accent-glow)}.logo-icon:before{content:"";position:absolute;top:6px;left:6px;width:20px;height:20px;border:2px solid white;border-radius:4px;transform:rotate(45deg)}.app-header h1{font-family:var(--font-title);font-size:1.5rem;font-weight:800;letter-spacing:-.02em}.app-header .accent{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.status-indicator{display:flex;align-items:center;gap:.5rem;background:#00000008;padding:.5rem 1rem;border-radius:50px;border:1px solid var(--border-color);font-size:.85rem;font-weight:600;color:var(--color-text-main)}.pulse-dot{width:8px;height:8px;background-color:var(--success-color);border-radius:50%;box-shadow:0 0 10px var(--success-color);animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #166534b3}70%{transform:scale(1);box-shadow:0 0 0 8px #16653400}to{transform:scale(.95);box-shadow:0 0 #16653400}}.app-content{display:flex;flex:1;overflow:hidden;position:relative}.control-panel{width:380px;background-color:var(--bg-secondary);border-right:1px solid var(--border-color);padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;overflow-y:auto;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:5}.panel-section{display:flex;flex-direction:column;gap:.75rem}.panel-section h2{font-family:var(--font-title);font-size:1.1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.mode-buttons{display:flex;flex-direction:column;gap:.5rem}.mode-btn{display:flex;align-items:center;gap:.75rem;background:#fff6;border:1px solid var(--border-color);padding:.85rem 1rem;border-radius:12px;color:var(--color-text-main);font-family:var(--font-body);font-weight:600;font-size:.95rem;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);text-align:left}.mode-btn:hover{background:#fffc;border-color:var(--border-hover);transform:translate(4px)}.mode-btn.active{background:var(--accent-gradient);border-color:transparent;color:#fff;box-shadow:var(--accent-glow)}.viewmode-toggle{display:flex;gap:.5rem}.viewmode-btn{flex:1;background:#fff6;border:1px solid var(--border-color);color:var(--color-text-main);padding:.75rem .5rem;border-radius:10px;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .2s ease;text-align:center}.viewmode-btn:hover{background:#fffc;border-color:var(--border-hover)}.viewmode-btn.active{background:#1665341a;border-color:var(--success-color);color:var(--success-color)}.edit-controls{display:flex;flex-direction:column;gap:.65rem}.edit-label{font-size:.85rem;color:var(--color-text-muted);font-weight:600}.row-buttons{display:flex;gap:.5rem}.row-buttons .action-btn{flex:1}.wall-state-btn{display:flex;align-items:center;gap:.5rem;background:#fff6;border:1px solid var(--border-color);color:var(--color-text-muted);padding:.75rem 1rem;border-radius:10px;cursor:pointer;text-align:left;font-weight:600;font-size:.9rem;transition:all .2s ease}.wall-state-btn:hover{background:#fffc;color:var(--color-text-main)}.wall-state-btn.active{color:var(--color-text-main)}.wall-state-btn[data-state=existing].active{background:#ffffffe6;border-color:var(--color-text-muted)}.wall-state-btn[data-state=proposed].active{background:#0ea5e91a;border-color:#0ea5e9;color:#0369a1}.wall-state-btn[data-state=demolish].active{background:#c2410c1a;border-color:var(--danger-color);color:var(--danger-color)}.storage-buttons{display:flex;gap:.5rem}.storage-buttons .action-btn{flex:1;padding:.85rem .5rem;font-size:.9rem;border-radius:12px}.save-btn:hover{border-color:var(--accent-primary);background:#b59e7a26}.load-btn:hover{border-color:var(--accent-secondary);background:#0ea5e926}.status-msg{font-size:.8rem;text-align:center;height:16px;color:var(--success-color);font-weight:600;transition:opacity .3s ease}.furniture-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.furniture-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#fff6;border:1px solid var(--border-color);padding:1rem;border-radius:12px;color:var(--color-text-main);cursor:pointer;transition:all .25s ease}.furniture-item:hover{background:#b59e7a1f;border-color:var(--accent-primary);transform:translateY(-2px)}.furniture-icon{width:52px;height:52px;margin:0 auto;background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:8px;transition:transform .2s ease}.furniture-item:hover .furniture-icon{transform:scale(1.15)}.furniture-item span{font-size:.85rem;font-weight:600}.action-btn{background:#ffffff73;border:1px solid var(--border-color);color:var(--color-text-main);padding:.75rem;border-radius:8px;cursor:pointer;font-weight:600;transition:all .2s ease}.action-btn:hover{background:#ffffffd9;border-color:var(--border-hover)}.action-btn.danger{background:#c2410c1a;border-color:#c2410c4d;color:var(--danger-color)}.action-btn.danger:hover{background:var(--danger-gradient);border-color:transparent;color:#fff;box-shadow:0 4px 12px #c2410c4d}.connection-guide{margin-top:auto;font-size:.85rem;color:var(--color-text-muted)}.connection-guide ol{padding-left:1.25rem;margin:.5rem 0;display:flex;flex-direction:column;gap:.4rem}.connection-guide code{display:block;background:#0000000a;padding:.5rem;border-radius:6px;font-family:monospace;color:#0369a1;border:1px solid var(--border-color);margin-top:.25rem;word-break:break-all}.canvas-container{flex:1;position:relative;background-color:#eae9e3}#threejs-canvas-container{width:100%;height:100%}.desktop-help{position:absolute;bottom:20px;left:20px;right:20px;background:var(--bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:.75rem 1.25rem;font-size:.85rem;display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);pointer-events:none;box-shadow:0 4px 20px #0000000d}.desktop-help p{color:var(--color-text-muted)}.desktop-help strong{color:var(--color-text-main)}#mode-instructions{color:var(--accent-primary)!important;font-weight:600}.loader-container{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--bg-primary);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;z-index:100;transition:opacity .5s ease}.spinner{width:50px;height:50px;border:4px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#ARButton{background:var(--accent-gradient)!important;color:#fff!important;border:none!important;border-radius:50px!important;padding:12px 24px!important;font-family:var(--font-title)!important;font-weight:600!important;letter-spacing:.05em!important;text-transform:uppercase!important;font-size:.9rem!important;box-shadow:var(--accent-glow)!important;transition:transform .2s ease!important;bottom:30px!important}#ARButton:hover{transform:scale(1.05)!important}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0000000d}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#fff3}.color-btn{border:1px solid var(--border-color);border-radius:6px;padding:.5rem .25rem;font-size:.75rem;cursor:pointer;font-weight:600;transition:all .2s ease;flex:1;text-align:center}.color-btn:hover{transform:scale(1.05);box-shadow:0 0 8px #fff6}.color-btn.active{border-color:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary)}.pattern-btn{background:#ffffff0d;border:1px solid var(--border-color);color:#fff;padding:.5rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.8rem;transition:all .2s ease;flex:1;text-align:center}.pattern-btn:hover{background:#ffffff1a;border-color:var(--color-text-muted)}.pattern-btn.active{background:#8b5cf626;border-color:var(--accent-primary);color:#a78bfa}.stats-panel-desktop{background:#8b5cf60a;border:1px solid rgba(139,92,246,.15);box-shadow:0 4px 20px #0003}.stats-grid-desktop{display:flex;flex-direction:column;gap:.6rem}.stat-item{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;padding:.25rem 0;border-bottom:1px solid rgba(255,255,255,.03)}.stat-label{color:var(--color-text-muted)}.stat-value{font-weight:700;font-family:var(--font-title);color:#fff}.highlight-cost .stat-label{color:#a78bfa;font-weight:700}.highlight-cost .stat-value{color:#c084fc;font-size:1.05rem;text-shadow:0 0 10px rgba(139,92,246,.3)}.slot-btn,.snap-btn,.floor-mat-btn,.daylight-btn{background:#ffffff08;border:1px solid var(--border-color);color:var(--color-text-muted);padding:.5rem .2rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.75rem;transition:all .2s ease;flex:1;text-align:center}.slot-btn:hover,.snap-btn:hover,.floor-mat-btn:hover,.daylight-btn:hover{background:#ffffff14;color:#fff}.daylight-btn.active{background:#f59e0b26;border-color:#f59e0b;color:#d97706}.variant-btn{background:#ffffff08;border:1px solid var(--border-color);border-radius:8px;padding:4px;cursor:pointer;flex:1;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.variant-btn:hover{border-color:var(--border-hover);transform:translateY(-1px)}.variant-chip{display:block;width:100%;height:20px;border-radius:5px;border:1px solid rgba(45,41,37,.15)}.variant-chip-original{background:linear-gradient(135deg,#d9cbb5 50%,#8a7a66 50%)}.slot-btn.active{background:#10b98126;border-color:var(--success-color);color:#34d399}.snap-btn.active{background:#8b5cf626;border-color:var(--accent-primary);color:#a78bfa}.floor-mat-btn.active{background:#06b6d426;border-color:var(--accent-secondary);color:#22d3ee}.scale-btn{background:#fff6;border:1px solid var(--border-color);color:var(--color-text-main);padding:.5rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.8rem;transition:all .2s ease;flex:1;text-align:center}.scale-btn:hover{background:#fffc;border-color:var(--color-text-muted)}.price-inputs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem .5rem;margin-top:.5rem}.price-input-group{display:flex;align-items:center;justify-content:space-between;font-size:.85rem;color:var(--color-text-muted)}.price-input-group span{white-space:nowrap;margin-right:.25rem}.price-input-group input{width:65px;background:#fff9;border:1px solid var(--border-color);color:var(--color-text-main);padding:.35rem;border-radius:6px;text-align:right;font-weight:600;font-size:.8rem;transition:border-color .2s}.price-input-group input:focus{border-color:var(--accent-primary);outline:none}.slot-btn,.snap-btn,.floor-mat-btn,.opacity-btn{background:#fff6;border:1px solid var(--border-color);color:var(--color-text-muted);padding:.5rem .2rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.75rem;transition:all .2s ease;flex:1;text-align:center}.opacity-btn:hover{background:#fffc;color:var(--color-text-main)}.opacity-btn.active{background:#b59e7a33;border-color:var(--accent-primary);color:#856a43}.mapping-inputs{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.mapping-group{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--color-text-muted)}.mapping-group select{width:160px;background:#fff9;border:1px solid var(--border-color);color:var(--color-text-main);padding:.35rem;border-radius:6px;font-weight:600;font-size:.8rem;cursor:pointer;outline:none;transition:border-color .2s}.mapping-group select:focus{border-color:var(--accent-primary)}.library-category{background:#ffffff4d;border:1px solid var(--border-color);border-radius:12px;margin-bottom:.75rem;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.library-category[open]{background:#ffffffb3;border-color:#b59e7a4d;box-shadow:0 4px 20px #0000000d}.library-category summary{padding:.85rem 1.2rem;font-family:var(--font-title);font-weight:600;font-size:.95rem;color:var(--color-text-main);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;transition:background .2s;-webkit-user-select:none;user-select:none}.library-category summary::-webkit-details-marker{display:none}.library-category summary:after{content:"▼";font-size:.7rem;color:var(--color-text-muted);transition:transform .3s ease}.library-category[open] summary:after{transform:rotate(-180deg);color:var(--accent-primary)}.library-category summary:hover{background:#ffffff0a}.library-category[open] summary{border-bottom:1px solid rgba(255,255,255,.05)}.library-category .furniture-grid{padding:1rem;display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.control-panel::-webkit-scrollbar{width:6px}.control-panel::-webkit-scrollbar-track{background:transparent}.control-panel::-webkit-scrollbar-thumb{background:#00000014;border-radius:10px}.control-panel::-webkit-scrollbar-thumb:hover{background:#b59e7a66}.furniture-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#fff6;border:1px solid var(--border-color);padding:.75rem .5rem;border-radius:12px;color:var(--color-text-main);cursor:pointer;transition:all .2s ease;min-height:80px}.furniture-item:hover{background:#b59e7a1f;border-color:var(--border-hover);transform:translateY(-2px);box-shadow:0 4px 12px #b59e7a26}.furniture-item.selected{background:#b59e7a40;border-color:var(--accent-primary);color:#856a43;box-shadow:0 0 15px #b59e7a40}.furniture-icon{font-size:1.8rem}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#2d292559;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;justify-content:center;align-items:center;z-index:2000;animation:fadeIn .25s ease}.modal-content{width:90%;max-width:440px;background:#fffefaf2;border:1px solid var(--border-hover);box-shadow:0 12px 40px #2d292526,inset 0 1px 2px #fffc;border-radius:20px;padding:1.75rem;position:relative;animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1);color:var(--color-text-main)}.modal-close{position:absolute;top:1rem;right:1.25rem;background:transparent;border:none;color:var(--color-text-muted);font-size:1.75rem;cursor:pointer;transition:color .2s ease}.modal-close:hover{color:#c2410c}.modal-divider{height:1px;background:var(--border-color);margin:1rem 0 1.25rem}.scan-stats-grid{display:flex;flex-direction:column;gap:.85rem}.scan-stat-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:#00000005;border:1px solid rgba(0,0,0,.04);border-radius:10px}.scan-stat-label{color:var(--color-text-muted);font-size:.9rem;font-weight:500}.scan-stat-val{color:var(--color-text-main);font-size:1.05rem;font-weight:700}.primary-glow{background:var(--accent-gradient)!important;color:#fff!important;border:none!important;box-shadow:0 4px 15px #b59e7a66!important;font-weight:700!important}.primary-glow:hover{opacity:.95;box-shadow:0 6px 20px #b59e7a99!important}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}
