*{margin:0;padding:0;box-sizing:border-box;font-family:Roboto,sans-serif}body{min-height:100vh;display:flex;justify-content:center;align-items:center;background:var(--md-sys-color-surface)}#authContainer{background:var(--md-sys-color-surface-container);padding:2.5rem;border-radius:var(--md-sys-shape-corner-large);box-shadow:var(--md-sys-elevation-2);width:100%;max-width:450px;margin:1rem;min-height:600px;display:flex;flex-direction:column;position:relative;z-index:1}.logo-container{text-align:center;margin-bottom:2rem}.auth-logo{max-width:200px;height:auto;margin:0 auto}.version-text{color:var(--md-sys-color-outline);font-size:var(--md-sys-typescale-body-small-size);text-decoration:none;font-weight:500;margin-top:0}#loginForm,#signupForm{flex:1;display:flex;flex-direction:column;gap:1.5rem}h2{color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-headline-small-size);font-weight:400;text-align:center;margin-bottom:1rem}.input-group{display:flex;flex-direction:column;gap:1rem;margin-bottom:.5rem}input{width:100%;padding:1rem;margin-bottom:0;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-body-large-size);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}input:focus{outline:none;border-color:var(--md-sys-color-primary)}button{width:100%;padding:16px;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border:none;border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-label-large-size);font-weight:500;cursor:pointer;transition:background-color .2s}button:hover{background:var(--md-sys-color-primary);filter:brightness(1.1)}.form-section{background:var(--md-sys-color-surface-container-low);padding:1.5rem;border-radius:var(--md-sys-shape-corner-medium);margin-bottom:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.form-section h3{color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-title-medium-size);font-weight:500;margin-bottom:.5rem}.name-group,.location-group{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:0}.form-header{display:none}.back-button{background:none;border:none;color:var(--md-sys-color-primary);font-size:var(--md-sys-typescale-label-large-size);padding:.5rem 1rem;width:auto}.back-button:hover{background:var(--md-sys-color-surface-variant);filter:none}.social-login{margin-top:auto;padding-top:2rem}.google-btn{display:flex;align-items:center;justify-content:center;gap:.75rem;background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);padding:.875rem}.google-btn:hover{background:var(--md-sys-color-surface-variant)}.google-btn img{width:24px;height:24px}.auth-switch{text-align:center;margin-top:1rem;color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size)}.auth-switch a{color:var(--md-sys-color-primary);text-decoration:none;font-weight:500}.auth-switch a:hover{text-decoration:underline}.error-message{color:#b3261e;font-size:var(--md-sys-typescale-body-small-size);min-height:1.25rem;opacity:0;transition:opacity .2s}.error-message.show{opacity:1}#signupForm .logo-container{display:none}canvas.p5Canvas{position:fixed;top:0;left:0;z-index:-1;pointer-events:none}.annotation{position:absolute;pointer-events:none;background:#ffffffe6;padding:8px 12px;border-radius:4px;font-family:Roboto,sans-serif;font-size:14px;line-height:1.4;transition:opacity .15s}.sun-hours-panel{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background-color:var(--md-sys-color-surface-container-high);border-radius:var(--md-sys-shape-corner-medium);box-shadow:var(--md-sys-elevation-1);padding:12px 20px;z-index:1000}.sun-hours-content{display:flex;align-items:center;gap:20px}.sun-hours-legend{display:flex;flex-direction:column;gap:8px}.legend-title{font-size:var(--md-sys-typescale-title-medium-size);font-weight:500;color:var(--md-sys-color-on-surface)}.legend-gradient{height:20px;width:300px;display:grid;grid-template-columns:repeat(13,1fr);gap:0;overflow:hidden}.legend-gradient div{height:100%}.legend-gradient div:nth-child(1){background:#00f}.legend-gradient div:nth-child(2){background:#2c00d3}.legend-gradient div:nth-child(3){background:#5900a6}.legend-gradient div:nth-child(4){background:#860079}.legend-gradient div:nth-child(5){background:#b2004d}.legend-gradient div:nth-child(6){background:#dd0222}.legend-gradient div:nth-child(7){background:#ff0c00}.legend-gradient div:nth-child(8){background:#ff3900}.legend-gradient div:nth-child(9){background:#ff6500}.legend-gradient div:nth-child(10){background:#ff9200}.legend-gradient div:nth-child(11){background:#ffbf00}.legend-gradient div:nth-child(12){background:#ffe700}.legend-gradient div:nth-child(13){background:#ff0}.legend-labels{display:flex;justify-content:space-between;font-size:14px;color:var(--md-sys-color-on-surface);padding:0 2px}:root{--md-sys-color-primary: #6750A4;--md-sys-color-primary-container: #EADDFF;--md-sys-color-on-primary: #FFFFFF;--md-sys-color-on-primary-container: #21005E;--md-sys-color-secondary: #625B71;--md-sys-color-secondary-container: #E8DEF8;--md-sys-color-on-secondary: #FFFFFF;--md-sys-color-on-secondary-container: #1E192B;--md-sys-color-surface: #FEF7FF;--md-sys-color-surface-variant: #E7E0EC;--md-sys-color-surface-container-low: #F7F2FA;--md-sys-color-surface-container: #F3EDF7;--md-sys-color-surface-container-high: #ECE6F0;--md-sys-color-on-surface: #1D1B20;--md-sys-color-on-surface-variant: #49454F;--md-sys-color-outline: #79747E;--md-sys-color-outline-variant: #CAC4D0;--md-sys-typescale-display-large-size: 57px;--md-sys-typescale-display-medium-size: 45px;--md-sys-typescale-display-small-size: 36px;--md-sys-typescale-headline-large-size: 32px;--md-sys-typescale-headline-medium-size: 28px;--md-sys-typescale-headline-small-size: 24px;--md-sys-typescale-title-large-size: 22px;--md-sys-typescale-title-medium-size: 16px;--md-sys-typescale-title-small-size: 14px;--md-sys-typescale-body-large-size: 16px;--md-sys-typescale-body-medium-size: 14px;--md-sys-typescale-body-small-size: 12px;--md-sys-elevation-1: 0px 1px 3px 1px rgba(0, 0, 0, .15);--md-sys-elevation-2: 0px 2px 6px 2px rgba(0, 0, 0, .15);--md-sys-elevation-3: 0px 4px 8px 3px rgba(0, 0, 0, .15);--md-sys-shape-corner-extra-small: 4px;--md-sys-shape-corner-small: 8px;--md-sys-shape-corner-medium: 12px;--md-sys-shape-corner-large: 16px;--md-sys-shape-corner-extra-large: 28px}#dashboardContainer{width:100%;height:100vh;display:flex;background:var(--md-sys-color-surface)}.sidebar{width:280px;background:var(--md-sys-color-surface-container);padding:0;box-shadow:var(--md-sys-elevation-1);display:flex;flex-direction:column}.sidebar-logo{padding:1.5rem 1rem;text-align:center;margin-bottom:1rem}.dashboard-logo{max-width:150px;height:auto;display:block;margin:0 auto}.profile-image{margin-bottom:1rem}.profile-image img{width:48px;height:48px;border-radius:50%;margin:0 auto}.user-info{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.user-info h3{margin:0;font-size:var(--md-sys-typescale-title-medium-size);color:var(--md-sys-color-on-surface)}.user-info p{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size)}.sidebar-nav ul{list-style:none;padding:0;margin:0}.sidebar-nav a{display:block;padding:12px 16px;margin-bottom:4px;border-radius:var(--md-sys-shape-corner-small);text-decoration:none;color:var(--md-sys-color-on-surface)}.sidebar-nav a:hover,.sidebar-nav a.active{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.main-content{flex:1;padding:2rem;overflow-y:auto}.dashboard-page{display:none}.dashboard-page.active{display:block}.page-header{display:none}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;padding-top:1rem}.project-card{background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-medium);padding:1.5rem;box-shadow:var(--md-sys-elevation-1);height:200px;display:flex;flex-direction:column;cursor:pointer;transition:all .2s ease-in-out;position:relative;overflow:hidden}.project-card>div:first-child{flex:1}.project-card h3{margin:0 0 .5rem;color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-title-medium-size)}.project-card p{color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size)}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;align-items:center;justify-content:center}.modal.show{display:flex}.modal-content{background:var(--md-sys-color-surface-container);padding:2rem;width:100%;max-width:600px;border-radius:var(--md-sys-shape-corner-large);position:relative;box-shadow:var(--md-sys-elevation-3);margin:2rem}.modal-content h2{color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-headline-small-size);margin-bottom:2rem;font-weight:400}.form-field{margin-bottom:1.5rem}.form-field label{display:block;color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size);margin-bottom:.5rem}.form-field input,.form-field textarea{width:100%;padding:1rem;border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-body-large-size);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.form-field textarea{resize:vertical;min-height:100px}.form-field input:focus,.form-field textarea:focus{outline:none;border-color:var(--md-sys-color-primary)}.modal-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem}.primary-button{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border:none;padding:.75rem 1.5rem;border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-label-large-size);font-weight:500;cursor:pointer;transition:background-color .2s}.secondary-button{background:transparent;color:var(--md-sys-color-primary);border:none;padding:.75rem 1.5rem;border-radius:var(--md-sys-shape-corner-small);font-size:var(--md-sys-typescale-label-large-size);font-weight:500;cursor:pointer;transition:background-color .2s}.primary-button:hover{background:var(--md-sys-color-primary);filter:brightness(1.1)}.secondary-button:hover{background:var(--md-sys-color-surface-variant)}.close-modal{position:absolute;right:1.5rem;top:1.5rem;font-size:1.5rem;cursor:pointer;color:var(--md-sys-color-on-surface-variant);border:none;background:none;padding:.5rem;line-height:1}.page-title{font-size:var(--md-sys-typescale-headline-medium-size);color:var(--md-sys-color-on-surface);margin-bottom:2rem;font-weight:400}.new-project-card{cursor:pointer;border:2px dashed var(--md-sys-color-outline);background:var(--md-sys-color-surface-container-low);transition:all .3s ease;display:flex;align-items:center;justify-content:center}.new-project-content{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.5rem;color:var(--md-sys-color-on-surface-variant)}.plus-icon{width:32px;height:32px;color:var(--md-sys-color-primary)}.new-project-content span{font-size:var(--md-sys-typescale-body-large-size)}.new-project-card:hover{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.new-project-card:hover .plus-icon,.new-project-card:hover .new-project-content{color:var(--md-sys-color-on-primary-container)}#sidebarLogoutBtn:hover{background:var(--md-sys-color-surface-variant);filter:none}.user-section{padding:0 2rem;margin-bottom:1rem;border-bottom:1px solid var(--md-sys-color-outline-variant)}.user-profile{padding:0 0 .5rem;display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:0}#sidebarLogoutBtn{width:100%;margin:.5rem 0 1rem;padding:.75rem;background:transparent;color:var(--md-sys-color-on-surface-variant);border:1px solid var(--md-sys-color-outline-variant);border-radius:var(--md-sys-shape-corner-small)}.sidebar-nav{padding:1rem;border-top:none}.project-address{margin-bottom:1rem;color:var(--md-sys-color-on-surface)}.project-description{color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-medium-size)}.project-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.project-header h3{margin:0}.delete-project-btn{background:none;border:none;padding:.25rem;cursor:pointer;color:var(--md-sys-color-on-surface-variant);opacity:.6;transition:all .2s ease}.delete-project-btn:hover{opacity:1;color:#dc362e}.trash-icon{width:20px;height:20px}.delete-warning{color:var(--md-sys-color-on-surface);margin-bottom:2rem}.delete-button{background-color:#dc362e!important}.delete-button:hover{filter:brightness(1.1)!important}.more-menu{position:relative}.more-menu-btn{background:none;border:none;padding:.25rem;cursor:pointer;color:var(--md-sys-color-on-surface-variant);opacity:.6;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.more-menu-btn:hover{opacity:1;background:var(--md-sys-color-surface-variant);border-radius:var(--md-sys-shape-corner-small)}.more-icon{width:20px;height:20px}.menu-items{position:absolute;top:100%;right:0;background:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-small);box-shadow:var(--md-sys-elevation-2);min-width:160px;display:none;z-index:1000}.menu-items.show{display:block}.menu-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;border:none;background:none;color:var(--md-sys-color-on-surface);cursor:pointer;font-size:var(--md-sys-typescale-body-medium-size);text-align:left}.menu-item:hover{background:var(--md-sys-color-surface-variant)}.menu-icon{width:18px;height:18px}.menu-item.delete-project-btn{color:#dc362e}.menu-item.delete-project-btn:hover{background:#dc362e14}.menu-item.delete-project-btn .menu-icon{color:#dc362e}.pac-container{background-color:var(--md-sys-color-surface-container);border-radius:var(--md-sys-shape-corner-small);border:1px solid var(--md-sys-color-outline-variant);box-shadow:var(--md-sys-elevation-2);margin-top:4px;font-family:Roboto,sans-serif}.pac-item{padding:.75rem 1rem;color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-body-medium-size);cursor:pointer}.pac-item:hover,.pac-item-selected{background-color:var(--md-sys-color-surface-variant)}.pac-matched{color:var(--md-sys-color-primary);font-weight:500}.modal-content.full-screen{width:90vw;height:90vh;max-width:none;padding:0;background:#1a1a1a;border-radius:var(--md-sys-shape-corner-extra-large);overflow:hidden}#modelViewerContainer{width:100%;height:100%;position:relative;border-radius:var(--md-sys-shape-corner-extra-large);overflow:hidden}.modal-content.full-screen .close-modal{color:#fff;z-index:1000}.project-card:hover{transform:translateY(-2px);box-shadow:var(--md-sys-elevation-2);background:var(--md-sys-color-surface-container-high)}.project-card:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:var(--md-sys-color-primary);opacity:0;transition:opacity .2s ease;pointer-events:none}.project-card:hover:after{opacity:.04}.project-card.new-project-card:hover{transform:none;background:var(--md-sys-color-primary-container)}.project-card.new-project-card:hover:after{opacity:0}.project-card.loading{cursor:default;opacity:.8}.project-content.non-clickable{pointer-events:none}.project-card .loading-indicator{display:flex;align-items:center;justify-content:center;gap:10px;margin:20px 0;color:var(--md-sys-color-on-surface-variant)}.spinner{width:20px;height:20px;border:2px solid var(--md-sys-color-outline);border-top-color:var(--md-sys-color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.view-model-indicator{display:flex;align-items:center;justify-content:center;margin:20px 0;color:var(--md-sys-color-primary);font-weight:500}.project-card:not(.loading):hover .view-model-indicator{color:var(--md-sys-color-on-primary-container)}.more-menu{pointer-events:auto}.initials-avatar{width:48px;height:48px;background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:500}.profile-image img,.profile-image .initials-avatar{width:48px;height:48px;border-radius:50%}.layers-button{position:absolute;top:70px;right:20px;width:40px;height:40px;background:var(--md-sys-color-surface-container-high);border:none;border-radius:var(--md-sys-shape-corner-medium);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:1000;box-shadow:var(--md-sys-elevation-1);padding:6px}.layers-button:hover{background:var(--md-sys-color-surface-container-highest);box-shadow:var(--md-sys-elevation-2)}.layers-button:active{background:var(--md-sys-color-surface-container)}.layers-button svg{width:28px;height:28px;color:var(--md-sys-color-on-surface);opacity:.87}.modal-content.full-screen .close-modal{position:absolute;top:20px;right:20px;width:40px;height:40px;background:var(--md-sys-color-surface-container-high);border:none;border-radius:var(--md-sys-shape-corner-medium);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:1000;box-shadow:var(--md-sys-elevation-1);color:var(--md-sys-color-on-surface);opacity:.87;padding:6px}.modal-content.full-screen .close-modal:hover{background:var(--md-sys-color-surface-container-highest);box-shadow:var(--md-sys-elevation-2)}.modal-content.full-screen .close-modal:active{background:var(--md-sys-color-surface-container)}.download-button{position:absolute;top:120px;right:20px;width:40px;height:40px;background:var(--md-sys-color-surface-container-high);border:none;border-radius:var(--md-sys-shape-corner-medium);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:1000;box-shadow:var(--md-sys-elevation-1);padding:6px}.download-button:hover{background:var(--md-sys-color-surface-container-highest);box-shadow:var(--md-sys-elevation-2)}.download-button:active{background:var(--md-sys-color-surface-container)}.download-button svg{width:28px;height:28px;color:var(--md-sys-color-on-surface);opacity:.87}.layers-panel{position:absolute;right:70px;top:70px;width:250px;background:var(--md-sys-color-surface-container-high);border-radius:var(--md-sys-shape-corner-medium);box-shadow:var(--md-sys-elevation-2);padding:16px;z-index:1000;display:none;color:var(--md-sys-color-on-surface);transform-origin:right top;animation:slideIn .2s ease-out}.layers-panel.show{display:block}@keyframes slideIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.layers-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--md-sys-color-outline-variant)}.layers-panel-header h3{margin:0;font-size:var(--md-sys-typescale-title-medium-size);font-weight:500}.layers-list{display:flex;flex-direction:column;gap:8px}.layer-item{display:flex;align-items:center;gap:8px;padding:4px 8px;min-height:24px}.layer-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border:1.5px solid var(--md-sys-color-outline);border-radius:2px;cursor:pointer;position:relative;transition:all .2s ease;flex-shrink:0;margin:0;padding:0;box-sizing:border-box}.layer-checkbox:checked{background:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary)}.layer-checkbox:checked:after{content:"";position:absolute;left:3px;top:1px;width:2px;height:5px;border:solid white;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.layer-name{font-size:14px;color:var(--md-sys-color-on-surface);-webkit-user-select:none;user-select:none;line-height:20px}.download-panel{position:absolute;right:70px;top:120px;width:250px;background:var(--md-sys-color-surface-container-high);border-radius:var(--md-sys-shape-corner-medium);box-shadow:var(--md-sys-elevation-2);padding:16px;z-index:1000;display:none;color:var(--md-sys-color-on-surface);transform-origin:right top;animation:slideIn .2s ease-out}.download-panel.show{display:block}.download-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--md-sys-color-outline-variant)}.download-panel-header h3{margin:0;font-size:var(--md-sys-typescale-title-medium-size);font-weight:500}.download-options{display:flex;flex-direction:column;gap:8px}.download-option{display:flex;align-items:center;gap:12px;padding:8px 12px;cursor:pointer;border-radius:var(--md-sys-shape-corner-small);transition:background-color .2s ease;-webkit-user-select:none;user-select:none}.download-option-name{font-size:14px;color:var(--md-sys-color-on-surface);line-height:20px}.download-button-container{margin-top:16px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.download-action-button{width:100%;padding:8px 16px;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border:none;border-radius:var(--md-sys-shape-corner-small);cursor:pointer;font-size:14px;font-weight:500;transition:background-color .2s ease}.download-action-button:hover{background:var(--md-sys-color-primary);filter:brightness(1.1)}.download-action-button:disabled{background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant);cursor:not-allowed}.download-option{display:flex;align-items:center;gap:8px;padding:8px;cursor:pointer;border-radius:var(--md-sys-shape-corner-small);transition:background-color .2s ease}.download-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border:2px solid var(--md-sys-color-outline);border-radius:50%;cursor:pointer;position:relative;transition:all .2s ease;flex-shrink:0;margin:0;padding:0;box-sizing:border-box;display:inline-block}.download-radio:checked{border-color:var(--md-sys-color-primary);border-width:2px}.download-radio:checked:after{content:"";position:absolute;left:2px;top:2px;width:6px;height:6px;border-radius:50%;background:var(--md-sys-color-primary)}.download-option:hover{background:var(--md-sys-color-surface-container-highest)}.download-option.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.download-radio:disabled{border-color:var(--md-sys-color-outline-variant);cursor:not-allowed}.download-option.disabled .download-option-name{color:var(--md-sys-color-on-surface-variant)}.project-info{position:absolute;top:20px;left:20px;z-index:100;color:var(--md-sys-color-on-surface);text-shadow:0 1px 2px rgba(0,0,0,.1)}.project-info .project-title{font-size:var(--md-sys-typescale-headline-medium-size);font-weight:500;margin:0;color:var(--md-sys-color-on-surface)}.project-info .project-address{font-size:var(--md-sys-typescale-title-medium-size);font-weight:400;margin:4px 0 0;color:var(--md-sys-color-on-surface-variant)}.model-viewer-container{width:100%;height:100%;position:relative;background:#f0f0f0}.modal.show .modal-content.full-screen{width:95vw;height:95vh;max-width:none;margin:2.5vh auto}.modal.show{display:flex;align-items:center;justify-content:center;background:#00000080}#modelViewerModal .loading-container{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--md-sys-color-surface-container);padding:2rem;border-radius:var(--md-sys-shape-corner-medium);box-shadow:var(--md-sys-elevation-2);z-index:1001;min-width:300px;text-align:center}.loading-bar-container{width:100%;height:4px;background:var(--md-sys-color-surface-variant);border-radius:2px;overflow:hidden;margin:1rem 0}.loading-bar{height:100%;width:0%;background:var(--md-sys-color-primary);transition:width .3s ease}.loading-text{color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-body-medium-size);margin-bottom:.5rem}.loading-size{color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-small-size)}#modelViewerModal .modal-content{position:relative}#modelLoadingContainer{display:none}#modelLoadingContainer.show{display:block}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.loading-content{background:var(--md-sys-color-surface-container);padding:2rem;border-radius:var(--md-sys-shape-corner-medium);min-width:300px;text-align:center}.loading-progress{width:100%;height:4px;background:var(--md-sys-color-surface-variant);border-radius:2px;overflow:hidden;margin:1rem 0}.progress-bar{height:100%;width:0;background:var(--md-sys-color-primary);transition:width .3s ease}.loading-status{color:var(--md-sys-color-on-surface);font-size:var(--md-sys-typescale-body-medium-size);margin-bottom:.5rem}.loading-details{color:var(--md-sys-color-on-surface-variant);font-size:var(--md-sys-typescale-body-small-size)}.loading-overlay.hidden{display:none}.error-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;margin:20px 0;color:var(--md-sys-color-error);text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;padding:0 20px}.error-icon{width:32px;height:32px;stroke:var(--md-sys-color-error);stroke-width:1.5}.error-indicator span{font-size:var(--md-sys-typescale-body-medium-size);font-weight:500}.project-card.error .project-content{position:relative;min-height:120px}.project-card.error .project-address,.project-card.error .project-description{opacity:.5}.project-card.error{cursor:not-allowed;opacity:.9}.project-card.error:hover{transform:none;box-shadow:var(--md-sys-elevation-1)}.project-card.error:after{opacity:0}.error-indicator .error-main{font-size:var(--md-sys-typescale-body-medium-size);font-weight:500;color:var(--md-sys-color-error)}.error-indicator .error-details{font-size:var(--md-sys-typescale-body-small-size);font-weight:400;color:var(--md-sys-color-on-surface-variant);margin-top:-4px}
