html{height:-webkit-fill-available}#root,body,html{background:#4b4c3a;overflow-x:hidden}#root,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;max-width:100%;min-height:100vh;min-height:-webkit-fill-available;padding:0 0 env(safe-area-inset-bottom);width:100%}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.structure-detail{display:flex;flex-direction:column;margin:0 auto;max-width:1200px;min-height:100vh;padding:2rem}.structure-detail.error,.structure-detail.loading{align-items:center;display:flex;flex-direction:column;justify-content:center;text-align:center}.spinner{border:4px solid #0000001a;border-left-color:#007bff;height:36px;margin-bottom:1rem;width:36px}.detail-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.detail-header h1{color:#2c3e50;font-size:1.8rem;margin:0}.back-button{background-color:#6c757d;transition:background-color .2s}.back-button:hover{background-color:#5a6268}.view-controls{display:flex}.view-controls button{background-color:#f8f9fa;border:1px solid #ced4da;cursor:pointer;font-size:1rem;padding:.5rem 1rem;transition:all .2s}.view-controls button:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.view-controls button:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.view-controls button.active{background-color:#007bff;border-color:#007bff;color:#fff}.detail-content{background-color:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;flex:1 1;margin-bottom:2rem;overflow:hidden}.model-container{height:600px;width:100%}model-viewer{--poster-color:#0000;background-color:#f8f9fa;height:100%;width:100%}.ar-button{background-color:#007bff;border:none;border-radius:4px;color:#fff;padding:.5rem 1rem;position:absolute;right:16px;top:16px}.json-container{max-height:600px;overflow:auto;padding:1rem}.json-container pre{background-color:#f8f9fa;border-radius:4px;font-family:monospace;font-size:.9rem;margin:0;padding:1rem;white-space:pre-wrap}.detail-info{background-color:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;margin-bottom:2rem;padding:1.5rem}.detail-info h2{color:#2c3e50;font-size:1.5rem;margin-bottom:1rem;margin-top:0}.info-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.info-item{display:flex;flex-direction:column}.info-label{color:#6c757d;font-weight:700;margin-bottom:.25rem}.detail-actions{display:flex;flex-wrap:wrap;gap:1rem}.download-button{background-color:#28a745;border-radius:4px;color:#fff;display:inline-block;padding:.75rem 1.5rem;text-align:center;text-decoration:none;transition:background-color .2s}.download-button:hover{background-color:#218838}@media (max-width:768px){.structure-detail{padding:1rem}.detail-header{align-items:flex-start;flex-direction:column}.model-container{height:400px}.detail-actions{flex-direction:column}.download-button{width:100%}}.floor-plan-viewer{box-sizing:border-box;display:flex;flex-direction:column;height:100%;width:100%}.floor-plan-container{height:100%;overflow:hidden;position:relative;width:100%}.floor-plan-canvas{background-color:#f0f0f0;cursor:grab;height:100%;width:100%}.floor-plan-canvas:active{cursor:grabbing}.floor-plan-controls button{background-color:#fff;border:1px solid #ccc;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 12px;transition:background-color .2s,border-color .2s}.floor-plan-controls button:hover{background-color:#f0f0f0;border-color:#999}.floor-plan-controls button:active{background-color:#e0e0e0;transform:translateY(1px)}.floor-plan-details{background-color:#ffffffe6;border-radius:4px;box-shadow:0 2px 8px #00000026;max-height:calc(100% - 30px);overflow-y:auto;padding:15px;position:absolute;right:15px;top:15px;width:250px;z-index:10}.floor-plan-details h3{border-bottom:1px solid #ddd;color:#333;font-size:16px;margin-bottom:10px;margin-top:0;padding-bottom:5px}.floor-plan-details p{font-size:14px;line-height:1.4;margin:5px 0}.floor-plan-details strong{color:#555;font-weight:600}.item-attributes{border-top:1px dashed #eee;margin-top:10px;padding-top:5px}.item-attributes p{font-weight:600;margin-bottom:5px}.item-attributes ul{font-size:12px;list-style-type:disc;margin:5px 0 0;padding-left:20px}.item-attributes li{color:#666;margin-bottom:3px}.floor-plan-error,.floor-plan-loading{align-items:center;background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;display:flex;flex-direction:column;height:400px;justify-content:center}.floor-plan-error p,.floor-plan-loading p{color:#666;font-size:14px;margin-top:15px}.floor-plan-error p{color:#d32f2f;max-width:80%;text-align:center}.loading-spinner{border:4px solid #0000001a;margin-bottom:15px}.floor-plan-legend{background-color:#fffc;border-radius:4px;bottom:70px;box-shadow:0 2px 4px #0000001a;font-size:12px;left:15px;padding:10px;position:absolute;z-index:10}.legend-title{font-size:13px;font-weight:600;margin-bottom:5px}.legend-item{align-items:center;display:flex;margin-bottom:4px}.legend-color{border:1px solid #0003;height:12px;margin-right:5px;width:12px}.room-label{background-color:#ffffffb3;border-radius:2px;color:#555;font-size:12px;padding:3px 6px;pointer-events:none;position:absolute;-webkit-user-select:none;user-select:none}.floor-plan-tooltip{background-color:#000c;color:#fff;pointer-events:none;transition:opacity .2s;z-index:20}.floor-plan-tooltip,.scale-indicator{border-radius:3px;font-size:12px;padding:5px 8px;position:absolute}.scale-indicator{background-color:#fffc;bottom:15px;color:#666;right:15px}@media print{.floor-plan-controls,.floor-plan-details,.floor-plan-legend{display:none!important}.floor-plan-container{border:none;height:100vh;page-break-inside:avoid}.floor-plan-canvas{background-color:#fff}}.measurement-label-clickable{cursor:pointer;transition:fill .2s ease,opacity .2s ease}.measurement-label-clickable:hover{fill:#0052cc!important;opacity:.8}.measurement-bg-clickable{cursor:pointer;transition:fill .2s ease}.measurement-bg-clickable:hover{fill:#fff!important}.dimension-input-no-spinner::-webkit-inner-spin-button,.dimension-input-no-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.dimension-input-no-spinner[type=number]{-webkit-appearance:textfield;appearance:textfield}.wall-navigator-scroll::-webkit-scrollbar{width:8px}.wall-navigator-scroll::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.wall-navigator-scroll::-webkit-scrollbar-thumb{background:#0000004d;border-radius:4px}.wall-navigator-scroll::-webkit-scrollbar-thumb:hover{background:#00000080}.slide-in-panel-container{height:100vh;height:100dvh;left:0;pointer-events:none;position:fixed;top:0;width:420px;z-index:1999}.slide-in-panel-container.right{left:auto;right:0;width:350px}.slide-in-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffffa;box-shadow:4px 0 24px #00000026;box-sizing:border-box;display:flex;flex-direction:column;height:100%;left:0;overflow:hidden;pointer-events:auto;position:absolute;top:0;transform:translateX(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);width:100%}.slide-in-panel.open{transform:translateX(0)}.slide-in-panel-container.right .slide-in-panel{box-shadow:-4px 0 24px #00000026;transform:translateX(100%)}.slide-in-panel-container.right .slide-in-panel.open{transform:translateX(0)}.slide-in-panel-container.compact{height:calc(100vh - 80px);height:calc(100dvh - 80px);top:80px;width:350px}.slide-in-panel-container.compact .slide-in-panel{border-radius:12px 0 0 12px}.slide-in-panel-content{box-sizing:border-box;display:flex;flex:1 1;flex-direction:column;min-height:0;overflow:hidden;padding:24px}.slide-in-panel-header{border-bottom:1px solid #e5e7eb;margin-bottom:24px;padding-bottom:16px;position:relative}.slide-in-panel-title{color:#1f2937;font-size:22px;font-weight:600;margin:0;padding-right:40px}.slide-in-panel-close{align-items:center;background-color:initial;border:none;border-radius:50%;color:#6b7280;cursor:pointer;display:flex;font-size:24px;font-weight:300;height:36px;justify-content:center;position:absolute;right:-4px;top:-4px;transition:all .2s ease;width:36px}.slide-in-panel-close:hover{background-color:#f3f4f6;color:#374151}.slide-in-panel-body{-webkit-overflow-scrolling:touch;flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto;padding-bottom:40px;padding-right:8px}.slide-in-panel-body::-webkit-scrollbar{width:6px}.slide-in-panel-body::-webkit-scrollbar-track{background:#f3f4f6;border-radius:3px}.slide-in-panel-body::-webkit-scrollbar-thumb{background:#9ca3af;border-radius:3px}.slide-in-panel-body::-webkit-scrollbar-thumb:hover{background:#6b7280}.panel-info-section{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:20px;padding:16px}.panel-info-section-title{color:#374151;font-size:14px;font-weight:600;letter-spacing:.5px;margin-bottom:12px;text-transform:uppercase}.panel-info-item{align-items:baseline;color:#6b7280;display:flex;font-size:14px;margin-bottom:8px}.panel-info-item:last-child{margin-bottom:0}.panel-info-label{color:#374151;font-weight:600;margin-right:8px;min-width:80px}.panel-info-value{color:#6b7280;word-break:break-word}.panel-controls{border-top:1px solid #e5e7eb;display:flex;gap:12px;margin-top:20px;padding-top:20px}.panel-button{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;padding:10px 16px;transition:all .2s ease}.panel-button-primary{background-color:#3b82f6;color:#fff}.panel-button-primary:hover{background-color:#2563eb}.panel-button-secondary{background-color:#f3f4f6;border:1px solid #d1d5db;color:#374151}.panel-button-secondary:hover{background-color:#e5e7eb}.panel-button-danger{background-color:#ef4444;color:#fff}.panel-button-danger:hover{background-color:#dc2626}.keyboard-controls-help{background-color:#e0f2fe;border:1px solid #0891b2;border-radius:8px;margin-bottom:20px;padding:12px}.keyboard-controls-title{align-items:center;color:#0c4a6e;display:flex;font-size:14px;font-weight:600;gap:6px;margin-bottom:8px}.keyboard-controls-list{color:#075985;font-size:13px;line-height:1.6}.keyboard-control-item{margin-bottom:4px}.keyboard-key{background-color:#ffffff80;border-radius:3px;font-family:monospace;font-size:12px;font-weight:600;padding:2px 6px}.overlapping-items-section{background-color:#fef3c7;border:1px solid #fbbf24;border-radius:8px;margin-top:20px;padding:16px}.overlapping-items-title{color:#92400e;font-size:14px;font-weight:600;margin-bottom:12px}.overlapping-item{background-color:#fff;border:1px solid #fcd34d;border-radius:6px;cursor:pointer;margin-bottom:8px;padding:8px 12px;transition:all .2s ease}.overlapping-item:hover{background-color:#fffbeb;border-color:#f59e0b}.overlapping-item:last-child{margin-bottom:0}@media (max-width:768px){.slide-in-panel-container{max-width:380px;width:100%}}@media (max-width:480px){.slide-in-panel-container{max-width:none;width:100%}.slide-in-panel-content{padding:16px}}.confirm-dialog-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#0006;bottom:0;display:flex;isolation:isolate;justify-content:center;left:0;pointer-events:auto;position:fixed;right:0;top:0;z-index:10000}.confirm-dialog-content{animation:slideUp .3s ease-out;background:#f3e9d2;border-radius:16px;box-shadow:0 20px 60px #0003;max-width:420px;overflow:hidden;width:90%}.confirm-dialog-header{align-items:center;display:flex;justify-content:space-between;padding:1.5rem 1.5rem 0}.confirm-dialog-header h3{color:#54524f;font-size:1.25rem;font-weight:600;margin:0}.confirm-dialog-close{align-items:center;background:none;border:none;border-radius:50%;color:#999;cursor:pointer;display:flex;font-size:1.75rem;height:32px;justify-content:center;margin-right:-8px;transition:all .2s;width:32px}.confirm-dialog-close:hover{background-color:#0000000d;color:#666}.confirm-dialog-body{padding:1rem 1.5rem 1.5rem}.confirm-dialog-body p{color:#54524f;font-size:1rem;line-height:1.5;margin:0}.confirm-dialog-actions{background-color:#baa59433;border-top:1px solid #baa594;display:flex;gap:.75rem;padding:1.5rem}.confirm-dialog-button{border:none;border-radius:10px;box-shadow:0 2px 8px #0000001a;cursor:pointer;flex:1 1;font-size:.95rem;font-weight:600;outline:none;padding:.75rem 1.5rem;transition:all .2s ease}.cancel-button{background-color:#baa5944d;border:1px solid #baa594;color:#54524f}.cancel-button:hover{background-color:#e9ecef}.confirm-button{color:#f3e9d2}.confirm-primary{background-color:#dd9b4a}.confirm-primary:hover{background-color:#b67332}.confirm-danger{background-color:#ef4444}.confirm-danger:hover{background-color:#dc2626}.confirm-success{background-color:#10b981}.confirm-success:hover{background-color:#059669}@media (max-width:480px){.confirm-dialog-content{margin:0 auto;width:95%}.confirm-dialog-actions{flex-direction:column-reverse}.confirm-dialog-button{width:100%}}.chat-toggle-button{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:50%;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;color:#fff;cursor:pointer;display:flex;height:48px;justify-content:center;left:20px;position:fixed;top:20px;transition:all .3s ease;width:48px;z-index:1000}.chat-toggle-button:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:scale(1.05)}.chat-menu{animation:slideIn .3s ease;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;height:600px;left:20px;max-height:calc(100vh - 40px);max-width:calc(100vw - 40px);position:fixed;top:20px;width:400px;z-index:1001}.chat-menu.minimized{height:auto}.chat-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px 12px 0 0;color:#fff;display:flex;flex-shrink:0;justify-content:space-between;padding:16px}.chat-header-title{align-items:center;font-size:16px;font-weight:600}.chat-header-actions,.chat-header-title{display:flex;gap:8px}.chat-header-button{align-items:center;background:#fff3;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;height:32px;justify-content:center;transition:background .2s ease;width:32px}.chat-header-button:hover{background:#ffffff4d}.chat-messages{background:#f9fafb;flex:1 1;gap:12px;overflow-y:auto;padding:16px}.chat-empty,.chat-messages{display:flex;flex-direction:column}.chat-empty{align-items:center;color:#9ca3af;height:100%;justify-content:center;text-align:center}.chat-empty svg{color:#d1d5db;margin-bottom:12px}.chat-empty p{font-size:14px;margin:4px 0}.chat-empty-hint{color:#9ca3af;font-size:12px!important}.chat-message{animation:fadeIn .3s ease;display:flex;gap:8px}.chat-message.user{flex-direction:row-reverse}.chat-message-avatar{align-items:center;background:#e5e7eb;border-radius:50%;display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.chat-message.user .chat-message-avatar{background:#ddd6fe;color:#7c3aed}.chat-message.assistant .chat-message-avatar{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.chat-message-content{display:flex;flex-direction:column;gap:4px;max-width:75%}.chat-message-text{word-wrap:break-word;background:#fff;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;line-height:1.5;padding:8px 12px}.chat-message.user .chat-message-text{background:#7c3aed;border-color:#7c3aed;color:#fff}.chat-message-text strong{font-weight:600}.chat-message-text em{font-style:italic}.chat-message-text code{background:#f3f4f6;border-radius:4px;font-family:Courier New,monospace;font-size:13px;padding:2px 4px}.chat-message-text pre{background:#1f2937;border-radius:6px;color:#f3f4f6;margin:8px 0;overflow-x:auto;padding:12px}.chat-message-text pre code{background:#0000;color:inherit;padding:0}.chat-message-text pre{font-size:11px;line-height:1.3;max-height:600px;overflow-y:auto}.chat-message-text pre code{font-size:11px}.chat-message-tools{color:#6b7280;font-size:12px;padding-left:12px}.chat-message-time{color:#9ca3af;font-size:11px;padding-left:12px}.chat-message.user .chat-message-time{padding-left:0;padding-right:12px;text-align:right}.chat-progress{animation:fadeIn .3s ease;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px}.chat-progress-header{align-items:center;display:flex;gap:8px;margin-bottom:8px}.chat-progress-status{font-size:14px;font-weight:500}.chat-progress-bar{background:#e5e7eb;border-radius:2px;height:4px;margin-bottom:12px;overflow:hidden}.chat-progress-bar-fill{background:linear-gradient(90deg,#667eea,#764ba2);height:100%;transition:width .3s ease}.chat-progress-steps{display:flex;flex-direction:column;gap:6px}.chat-progress-step{align-items:center;display:flex;font-size:13px;gap:6px}.chat-progress-step-name{font-weight:500}.chat-error{animation:fadeIn .3s ease;background:#fee2e2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px;padding:8px 12px}.chat-input-container{background:#fff;border-radius:0 0 12px 12px;border-top:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:8px;padding:16px}.chat-input{border:1px solid #d1d5db;border-radius:6px;flex:1 1;font-family:inherit;font-size:14px;max-height:120px;min-height:40px;outline:none;padding:8px 12px;resize:none;transition:border-color .2s ease}.chat-input:focus{border-color:#7c3aed}.chat-input:disabled{background:#f9fafb;color:#9ca3af}.chat-send-button{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.chat-send-button:hover:not(:disabled){box-shadow:0 4px 6px -1px #0000001a;transform:scale(1.05)}.chat-send-button:disabled{cursor:not-allowed;opacity:.5}.animate-spin{animation:spin 1s linear infinite}@media (max-width:640px){.chat-menu{height:calc(100vh - 100px);width:calc(100vw - 40px)}.chat-message-content{max-width:85%}}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:#f3f4f6}.chat-messages::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.chat-messages::-webkit-scrollbar-thumb:hover{background:#9ca3af}.text-green-500{color:#10b981}.text-green-600{color:#059669}.text-blue-500{color:#3b82f6}.text-blue-600{color:#2563eb}.text-red-500{color:#ef4444}.text-red-600{color:#dc2626}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-purple-600{color:#9333ea}.clickable-logo{cursor:pointer;transition:transform .2s ease}.clickable-logo:hover{transform:scale(1.05)}.logo-popup-overlay{bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:1002}.logo-popup-content{animation:growFromLogo .15s ease-out;background:#f3e9d2;border-radius:12px;box-shadow:0 4px 20px #00000026;left:16px;overflow:visible;pointer-events:all;position:absolute;top:16px;transform-origin:48px 48px;width:400px}@keyframes growFromLogo{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.logo-popup-content.closing{animation:shrinkToLogo .15s ease-in}@keyframes shrinkToLogo{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}.logo-popup-header{position:absolute;right:-10px;top:-10px;z-index:1}.logo-popup-close{align-items:center;background:#f3e9d2;border:1px solid #baa594;border-radius:50%;box-shadow:0 2px 8px #0000001a;color:#54524f;cursor:pointer;display:flex;font-size:1.5rem;height:32px;justify-content:center;transition:all .2s;width:32px}.logo-popup-close:hover{background-color:#baa594;transform:scale(1.1)}.logo-popup-body{padding:80px 16px 16px;position:relative}.popup-logo-container{align-items:center;display:flex;gap:.75rem;margin-bottom:1rem}.popup-logo{height:48px;width:auto}.logo-text{color:#54524f;font-size:1.25rem;font-weight:600}.input-container{border:2px solid #baa594;border-radius:8px;margin-bottom:0;overflow:hidden;position:relative;transition:border-color .2s}.input-container:focus-within{border-color:#dd9b4a}.logo-popup-input{background:#f3e9d2;border:none;box-sizing:border-box;display:block;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;font-size:1rem;height:100%;margin:0;min-height:120px;outline:none;padding:1rem;resize:none;width:100%}.quick-command-hint{bottom:-20px;color:#888;font-size:11px;left:0;opacity:.7;position:absolute;right:0;text-align:center;transition:opacity .2s}.quick-command-hint:hover{opacity:1}.logo-popup-input:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;margin:0}.logo-popup-input:disabled::placeholder{color:#888;font-style:italic}.microphone-icon{color:#54524f;cursor:pointer;transition:all .2s}.microphone-icon:hover{opacity:.8;transform:scale(1.1)}.microphone-icon.recording{animation:pulse 1.5s infinite;color:red}.send-icon{cursor:pointer;transition:transform .2s ease,opacity .2s ease}.send-icon:hover{transform:scale(1.1)}.logo-popup-chat-container{display:flex;flex-direction:column;height:500px;margin-top:0}.logo-popup-messages{background:#ffffff4d;border-radius:8px;flex:1 1;margin-bottom:16px;min-height:0;overflow-y:auto;padding:16px}.logo-popup-input-wrapper{margin-top:auto;position:relative}.logo-popup-chat-input{background:#fff;border:1px solid #ddd;border-radius:8px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;max-height:120px;min-height:40px;outline:none;overflow-y:auto;padding:10px 40px;resize:none;transition:border-color .2s,height .1s ease;width:100%}.logo-popup-chat-input:focus{border-color:#007aff}.logo-popup-chat-input:disabled{background:#f5f5f5;cursor:not-allowed}.action-buttons-container{display:flex;flex-direction:column;gap:.5rem;left:0;margin-top:12px;position:absolute;top:100%;width:100%}.action-buttons{display:flex;flex-direction:row;gap:.5rem;width:100%}.logo-popup-content .action-button{align-items:center!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#f3e9d2!important;border:2px solid #f3e9d24d!important;border-radius:22px!important;box-shadow:0 2px 8px #0000001a!important;color:#dd9b4a!important;cursor:pointer;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;outline:none;padding:10px 20px!important;transition:all .15s ease!important;white-space:nowrap}.logo-popup-content .action-button:hover{background-color:#dd9b4a!important;box-shadow:0 4px 16px #00000026!important;color:#f3e9d2!important;transform:scale(1.02)!important}.action-button svg{flex-shrink:0}.logout-row{display:flex;width:100%}.logout-row .action-button{width:auto}.logo-popup-content .logout-action{color:#b67332!important}.logo-popup-content .logout-action:hover{background-color:#b67332!important;color:#f3e9d2!important}.logo-popup-content .admin-action-button{background-color:#7c3aed!important;border:2px solid #7c3aed!important;color:#fff!important}.logo-popup-content .admin-action-button:hover{background-color:#6b2fd6!important;border-color:#6b2fd6!important;color:#fff!important}.app-loading-container{align-items:center;background:#4b4c3a;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:99999}.loading-content{align-items:center;display:flex;flex-direction:column;gap:24px}.house-loader{height:60px;width:60px}.house-path{stroke-dasharray:200;stroke-dashoffset:200;animation:drawHouse 2s ease-in-out infinite}.loading-message{color:#f3e9d2;font-size:16px;font-weight:500;line-height:1.4;max-width:300px;text-align:center}.checkpoint-dialog-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.checkpoint-dialog-content{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:90%}.checkpoint-dialog-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px}.checkpoint-dialog-header h2{color:#111827;font-size:20px;font-weight:600;margin:0}.checkpoint-dialog-close{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;transition:all .2s ease;width:32px}.checkpoint-dialog-close:hover{background-color:#f3f4f6;color:#374151}.checkpoint-dialog-close:disabled{cursor:not-allowed;opacity:.5}.checkpoint-dialog-form{flex:1 1;overflow-y:auto;padding:24px}.form-group label{color:#374151}.form-group .optional{color:#6b7280;font-size:13px;font-weight:400}.form-group input,.form-group textarea{border:1px solid #d1d5db;border-radius:8px;font-family:inherit;font-size:14px;padding:10px 14px;transition:all .2s ease;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-group input:disabled,.form-group textarea:disabled{background-color:#f9fafb;color:#9ca3af;cursor:not-allowed}.form-help{color:#6b7280;display:block;font-size:13px;margin-top:6px}.checkpoint-dialog-actions{align-items:center;background-color:#f9fafb;border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:20px 24px}.btn-primary,.btn-secondary{align-items:center;-webkit-appearance:none;appearance:none;border:none;border-radius:22px;box-sizing:border-box;cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:500;height:44px;justify-content:center;line-height:1;margin:0;min-width:100px;padding:10px 24px;transition:all .2s ease;vertical-align:middle}.btn-primary{background-color:#3b82f6;border:1px solid #3b82f6}.btn-primary:hover{background-color:#2563eb;border-color:#2563eb;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(-1px)}.btn-primary:disabled{background-color:#9ca3af;box-shadow:none;cursor:not-allowed;transform:none}.btn-secondary{background-color:#fff;border:1px solid #d1d5db;box-sizing:border-box;color:#374151}.btn-secondary:hover{background-color:#f3f4f6;border-color:#9ca3af;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(-1px)}.btn-secondary:disabled{cursor:not-allowed;opacity:.5}.checkpoint-list{flex:1 1;min-height:200px;overflow-y:auto;padding:16px}.checkpoint-list-empty{color:#6b7280;padding:40px 20px;text-align:center}.checkpoint-list-empty p{font-size:14px;margin:8px 0}.checkpoint-item{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;margin-bottom:12px;padding:16px;transition:all .2s ease}.checkpoint-item:hover{border-color:#3b82f6;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(-1px)}.checkpoint-item-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:8px}.checkpoint-item-name{color:#111827;font-size:15px;font-weight:600;margin:0}.checkpoint-item-date{color:#6b7280;font-size:13px}.checkpoint-item-description{color:#4b5563;font-size:14px;line-height:1.5;margin:8px 0 0}.checkpoint-item-meta{color:#6b7280;display:flex;font-size:13px;gap:16px;margin-top:12px}.checkpoint-item-actions{display:flex;gap:8px;margin-top:12px}.checkpoint-item-actions button{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;color:#374151;cursor:pointer;font-size:13px;padding:6px 12px;transition:all .2s ease}.checkpoint-item-actions button:hover{background-color:#f3f4f6}.checkpoint-item-actions .btn-danger{border-color:#fecaca;color:#dc2626}.checkpoint-item-actions .btn-danger:hover{background-color:#fee2e2;border-color:#fca5a5}.checkpoint-initial{background-color:#f0f9ff;border-color:#bae6fd}.checkpoint-initial:hover{border-color:#38bdf8}.checkpoint-badge{background-color:#3b82f6;letter-spacing:.05em;text-transform:uppercase}.checkpoint-badge,.checkpoint-version{border-radius:12px;color:#fff;display:inline-block;font-size:11px;font-weight:500;margin-left:8px;padding:2px 8px}.checkpoint-version{background-color:#10b981;font-family:Monaco,Menlo,monospace}.checkpoint-protected-text{color:#6b7280;font-size:13px;font-style:italic;padding:6px 12px}.checkpoint-item-stats{background-color:#fff;border-radius:6px;display:flex;flex-wrap:wrap;font-size:12px;gap:8px;line-height:1.4;margin-top:8px;padding:8px 12px}.checkpoint-item-stats span{background-color:#f3f4f6;border-radius:4px;display:inline-block;padding:2px 6px}.checkpoint-item-stats .stats-label{background-color:initial;color:#4b5563;font-weight:600;padding-left:0}.checkpoint-item-stats .stats-label-admin{background-color:#8b5cf61a;border-radius:4px;color:#8b5cf6;font-weight:600;padding:2px 8px}.checkpoint-item-stats .stats-success{background-color:#d1fae5;color:#065f46}.checkpoint-item-stats .stats-warning{background-color:#fed7aa;color:#92400e}.checkpoint-item-stats .stats-info{background-color:#dbeafe;color:#1e40af}.not-found{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100vh;padding:2rem;text-align:center}.not-found h2{color:#f8d7da;font-size:5rem;margin:0}.not-found h1{color:#721c24;font-size:2rem;margin-bottom:1rem}.not-found p{color:#6c757d;margin-bottom:2rem;max-width:500px}.home-link{background-color:#007bff;border-radius:4px;color:#fff;display:inline-block;padding:.75rem 1.5rem;text-decoration:none;transition:background-color .2s ease}.home-link:hover{background-color:#0069d9}.login-container{align-items:center;background:#4b4c3a;display:flex;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;justify-content:center;min-height:100vh;position:relative}.login-box{background:#0000;border-radius:25px;max-width:400px;padding:2rem;width:100%;z-index:1}.logo-container{margin-bottom:1rem;text-align:center}.logo-container .logo{height:auto;max-width:300px;width:100%}.preview-title{color:#f3e9d2;font-size:1.25rem;font-weight:300;letter-spacing:.5px;margin:1rem 0 .5rem;text-align:center}.subtitle{color:#f3e9d2cc;font-size:.9rem;font-weight:400;margin:0 0 2rem;text-align:center}.subtitle-link{color:#dd9b4a;text-decoration:none;transition:opacity .3s}.subtitle-link:hover{opacity:.8}.login-box h2{color:#f3e9d2;font-size:1.75rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.form-group{margin-bottom:1rem}.input-icon-wrapper{align-items:center;display:flex;position:relative}.input-icon{color:#515d4980;height:20px;left:.75rem;pointer-events:none;position:absolute;width:20px;z-index:1}.form-group input{background-color:#f3e9d2f2;border:none;border-radius:12px;box-shadow:0 2px 8px #0000001a;color:#515d49;font-size:.9rem;padding:.75rem 3rem;transition:all .3s;width:100%}.form-group input::placeholder{color:#515d4980}.input-icon-wrapper input{padding-left:45px!important}.form-group input:focus{box-shadow:0 4px 12px #00000026;transform:translateY(-1px)}.form-group input:disabled{background-color:#f3e9d2b3}.password-toggle{align-items:center;background:none;border:none;cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:absolute;right:1rem;transition:opacity .2s}.password-toggle svg{color:#515d4980;height:20px;width:20px}.password-toggle:hover svg{color:#515d49b3}.password-toggle:focus{outline:none}button[type=submit]{background-color:#dd9b4a;border:none;border-radius:25px;box-shadow:0 4px 12px #00000026;color:#54524f;cursor:pointer;font-size:.85rem;font-weight:600;margin-top:.5rem;padding:.7rem;transition:all .3s;width:100%}button[type=submit]:hover:not(:disabled){box-shadow:0 6px 16px #0003;transform:translateY(-2px)}button[type=submit]:active:not(:disabled){box-shadow:0 2px 8px #00000026;transform:translateY(0)}button[type=submit]:disabled{background-color:#dd9b4a80;box-shadow:none;cursor:not-allowed}.error-message{background-color:#ff3b301a;border:1px solid #ff3b3033;color:#ff3b30;margin-bottom:1rem;padding:.75rem}.auth-link{border-top:1px solid #f3e9d21a;color:#f3e9d2cc;font-size:.95rem;margin-top:2rem;padding-top:1.5rem;text-align:center}.auth-link a{border:2px solid #dd9b4a;border-radius:25px;color:#dd9b4a;display:inline-block;font-weight:600;margin-top:.5rem;padding:.75rem 2rem;text-decoration:none;transition:all .3s}.auth-link a:hover{background-color:#dd9b4a1a;transform:translateY(-1px)}.divider{margin:2rem 0;position:relative;text-align:center}.divider:before{background-color:#f3e9d24d;content:"";height:1px;left:0;position:absolute;right:0;top:50%}.divider span{background:#4b4c3a;color:#f3e9d2cc;font-size:.85rem;font-weight:300;letter-spacing:.5px;padding:0 1rem;position:relative}.google-signin-button{align-items:center;background-color:#f3e9d2;border:none;border-radius:25px;box-shadow:0 4px 12px #00000026;color:#515d49;cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:.6rem;justify-content:center;margin-top:1.25rem;padding:.7rem;transition:all .3s;width:100%}.google-signin-button:hover:not(:disabled){box-shadow:0 6px 16px #0003;transform:translateY(-2px)}.apple-signin-button{align-items:center;background-color:#f3e9d2;border:none;border-radius:25px;box-shadow:0 4px 12px #00000026;color:#515d49;cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:.6rem;justify-content:center;margin-top:.75rem;padding:.7rem;transition:all .3s;width:100%}.apple-signin-button:hover:not(:disabled){box-shadow:0 6px 16px #0003;transform:translateY(-2px)}.google-signin-button:active:not(:disabled){box-shadow:0 2px 8px #00000026;transform:translateY(0)}.google-signin-button:disabled{box-shadow:none;cursor:not-allowed;opacity:.6}.apple-icon,.google-icon{height:18px;width:18px}.reset-description{color:#f3e9d2cc;font-size:.95rem;line-height:1.5;margin-bottom:1.5rem;text-align:center}.success-message{background-color:#34c7591a;border:1px solid #34c75933;border-radius:12px;color:#34c759;margin-bottom:1rem;padding:.75rem;text-align:center}.forgot-password-link{margin-bottom:.5rem;margin-top:-.25rem;text-align:right}.forgot-password-link a{color:#dd9b4a;font-size:.875rem;font-weight:400;text-decoration:none;transition:opacity .3s}.forgot-password-link a:hover{opacity:.8}.waitlist-button{background-color:initial;border:2px solid #dd9b4a;border-radius:25px;color:#dd9b4a;cursor:pointer;font-size:1.125rem;font-weight:600;margin-bottom:1rem;padding:1rem;transition:all .3s;width:100%}.waitlist-button:hover:not(:disabled){background-color:#dd9b4a1a;transform:translateY(-2px)}.waitlist-button:disabled{cursor:not-allowed;opacity:.6}.divider-text{color:#f3e9d2b3;font-size:.95rem;margin:1.5rem 0;text-align:center}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}.shake{animation:shake .5s ease-in-out}.waitlist-info{color:#f3e9d2cc;font-size:.95rem;line-height:1.5;margin:1.5rem 0 2rem;text-align:center}.sign-out-button{background-color:#baa5944d;border:1px solid #f3e9d24d;border-radius:25px;color:#f3e9d2;cursor:pointer;font-size:1.125rem;font-weight:600;padding:1rem;transition:all .3s;width:100%}.sign-out-button:hover{background-color:#baa59466;border-color:#f3e9d280}.text-button{background:none;border:none;color:#f3e9d2b3;cursor:pointer;font-size:.95rem;margin-top:1rem;padding:.5rem;transition:color .3s}.text-button:hover:not(:disabled){color:#f3e9d2e6;text-decoration:underline}.text-button:disabled{cursor:not-allowed;opacity:.5}@keyframes drawHouse{0%{stroke-dashoffset:200;opacity:.3}50%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:200;opacity:.3}}.welcome-content{max-width:400px;padding:2rem;text-align:center;width:100%;z-index:1}.welcome-tagline{color:#f3e9d2cc;font-size:1rem;font-weight:400;line-height:1.5;margin:.75rem 0 0}.welcome-dropdown{background-color:#dd9b4a;border-radius:25px;box-shadow:0 4px 12px #00000026;margin:4.5rem auto 0;overflow:hidden;transition:border-radius .3s ease,box-shadow .3s ease;width:220px}.welcome-dropdown-open{border-radius:18px;box-shadow:0 6px 20px #00000040}.welcome-dropdown-trigger{align-items:center;background:none;border:none;color:#54524f;cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:.4rem;justify-content:center;padding:.6rem 1.5rem;transition:background-color .2s;width:100%}.welcome-dropdown-trigger:hover{background-color:#0000000d}.welcome-dropdown-chevron{flex-shrink:0;height:16px;transition:transform .3s ease;width:16px}.welcome-dropdown-open .welcome-dropdown-chevron{transform:rotate(180deg)}.welcome-dropdown-options{background-color:#f3e9d2f2;max-height:0;overflow:hidden;transition:max-height .4s ease}.welcome-dropdown-open .welcome-dropdown-options{max-height:100px}.welcome-dropdown-option{border-top:1px solid #515d491f;color:#515d49;cursor:pointer;display:block;font-size:.85rem;font-weight:600;padding:.5rem 1.5rem;text-align:center;text-decoration:none;transition:background-color .2s;width:100%}.welcome-dropdown-option:hover{background-color:#515d4914}.welcome-contact{color:#f3e9d280;font-size:.8rem;font-weight:300;line-height:1.5;margin:.5rem 0 0}.welcome-contact a{color:#f3e9d2b3;text-decoration:none;transition:color .3s}.welcome-contact a:hover{color:#f3e9d2}.back-to-welcome{align-items:center;color:#f3e9d2b3;display:inline-flex;font-size:.9rem;font-weight:400;gap:.25rem;left:1.5rem;position:absolute;text-decoration:none;top:1.5rem;transition:color .3s;z-index:2}.back-to-welcome:hover{color:#f3e9d2}.back-to-welcome svg{height:16px;width:16px}*{box-sizing:border-box;margin:0;padding:0}body{background:#4b4c3a;color:#333;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;line-height:1.6;min-height:100vh}.App,.home-container{display:flex;flex-direction:column;min-height:100vh}.app-header{align-items:center;background-color:#2c3e50;box-shadow:0 2px 4px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:1rem 2rem}.app-header h1{font-size:1.8rem;font-weight:500}.user-info{gap:1rem}.logout-button{background-color:#e74c3c;border:none;border-radius:4px;color:#fff;font-size:.9rem;transition:background-color .3s}.logout-button:hover{background-color:#c0392b}.app-content{display:flex;flex:1 1;padding:1rem}@media (max-width:768px){.app-content{flex-direction:column}}.error-message{background-color:#f8d7da;max-width:500px}.app-footer{background-color:#f8f9fa;border-top:1px solid #e9ecef;color:#6c757d;font-size:.9rem;padding:1rem 2rem;text-align:center}.highlight-animation{animation:highlight 2s ease-in-out}@keyframes highlight{0%,to{background-color:initial}25%,75%{background-color:#7c3aed1a;box-shadow:0 0 10px #7c3aed4d}}.keyword-editor{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin:1rem 0;max-width:100%;overflow:hidden}.keyword-editor-loading{color:#666;padding:2rem;text-align:center}.keyword-editor-header{background:#f8f9fa;border-bottom:1px solid #e0e0e0;padding:1rem}.keyword-editor-header h3{color:#333;font-size:1.2rem;margin:0 0 .25rem}.keyword-editor-header p{color:#666;font-size:.85rem;margin:0}.keyword-tabs{background:#f0f0f0;border-bottom:1px solid #e0e0e0;display:flex}.keyword-tab{align-items:center;background:none;border:none;border-bottom:2px solid #0000;color:#666;cursor:pointer;display:flex;flex:1 1;font-size:.8rem;gap:.25rem;justify-content:center;padding:.6rem;transition:all .2s ease}.keyword-tab:hover{background:#e8e8e8;color:#333}.keyword-tab.active{background:#fff;border-bottom-color:#2196f3;color:#2196f3;font-weight:500}.tab-label{display:none}@media (min-width:400px){.tab-label{display:inline}}.keyword-content{max-height:350px;min-height:200px;overflow-y:auto;padding:.75rem}.keyword-list{margin-bottom:.75rem}.keyword-item{border-bottom:1px solid #f0f0f0;gap:.75rem;padding:.4rem 0}.keyword-item:last-child{border-bottom:none}.keyword-item.compact{padding:.3rem 0}.keyword-label{color:#333;flex:0 0 40%;font-size:.8rem;line-height:1.2;word-break:break-word}.keyword-control{align-items:center;display:flex;flex:1 1;gap:.5rem}.keyword-score{color:#2196f3;flex:0 0 2rem;font-size:.75rem;font-weight:600}.keyword-score.zero{color:#ccc}.no-keywords{color:#999;font-style:italic;padding:2rem;text-align:center}.keyword-slider{-webkit-appearance:none;appearance:none;border-radius:2px;cursor:pointer;height:3px;outline:none;width:100%}.keyword-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#2196f3;border-radius:50%;box-shadow:0 1px 2px #0000004d;cursor:pointer;height:12px;-webkit-transition:transform .2s ease;transition:transform .2s ease;width:12px}.keyword-slider::-webkit-slider-thumb:hover{background:#1976d2;transform:scale(1.15)}.keyword-slider::-moz-range-thumb{background:#2196f3;border:none;border-radius:50%;box-shadow:0 1px 2px #0000004d;cursor:pointer;height:12px;width:12px}.reset-button{background:#fff;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:.8rem;padding:.4rem .8rem;transition:all .2s ease;width:100%}.reset-button:hover{background:#f0f0f0;color:#333}.keyword-summary{background:#f8f9fa;border-top:1px solid #e0e0e0;padding:1rem}.summary-grid{display:flex;flex-direction:column;gap:.75rem}.summary-category{border-bottom:1px solid #e0e0e0;padding-bottom:.75rem}.summary-category:last-child{border-bottom:none;padding-bottom:0}.summary-header{align-items:center;display:flex;gap:.5rem;margin-bottom:.5rem}.summary-icon{font-size:.9rem}.summary-label{color:#555;font-size:.85rem;font-weight:500}.summary-keywords{display:flex;flex-wrap:wrap;gap:.25rem}.keyword-tag{background:#fff;border:1px solid #e0e0e0;border-radius:12px;color:#666;font-size:.75rem;padding:.2rem .5rem}.no-active{color:#999;font-size:.75rem;font-style:italic}.keyword-content::-webkit-scrollbar{width:6px}.keyword-content::-webkit-scrollbar-track{background:#f1f1f1}.keyword-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}.keyword-content::-webkit-scrollbar-thumb:hover{background:#999}.score-visualization{background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001a;margin:0 auto;max-width:1000px;padding:24px;position:relative}.visualization-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.visualization-header h3{color:#2c3e50;font-size:20px;margin:0}.close-button{color:#7f8c8d;transition:all .2s}.close-button:hover{background:#f1f1f1;color:#2c3e50}.visualization-nav{border-bottom:1px solid #e0e0e0;display:flex;gap:8px;margin-bottom:24px;padding-bottom:12px}.nav-button{background:none;border:none;border-radius:6px;color:#7f8c8d;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.nav-button:hover{background:#f5f5f5;color:#2c3e50}.nav-button.active{background:#3498db;color:#fff}.overview-section{display:flex;flex-direction:column;gap:24px}.stats-grid{grid-gap:16px;gap:16px}.stat-card{background:#f8f9fa}.stat-value{color:#2c3e50;font-size:32px;margin-bottom:4px}.stat-label{color:#7f8c8d;margin-bottom:4px}.stat-detail{color:#95a5a6;font-size:12px}.top-keywords{background:#f8f9fa;border-radius:8px;padding:20px}.top-keywords h4{color:#2c3e50;font-size:16px;margin:0 0 16px}.keyword-list{display:flex;flex-direction:column;gap:12px}.keyword-item{align-items:center;background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a;display:flex;gap:12px;padding:12px}.keyword-name{color:#2c3e50;flex:1 1;font-weight:500}.keyword-category{background:#ecf0f1;border-radius:4px;color:#7f8c8d;font-size:12px;padding:4px 8px}.keyword-score{color:#3498db;font-weight:700;min-width:40px;text-align:right}.category-overview{background:#f8f9fa;border-radius:8px;padding:20px}.category-overview h4{color:#2c3e50;font-size:16px;margin:0 0 16px}.category-bars{display:flex;flex-direction:column;gap:12px}.category-bar{align-items:center;display:flex;gap:12px}.bar-label{color:#2c3e50;font-size:14px;min-width:80px}.bar-container{background:#ecf0f1;border-radius:12px;flex:1 1;height:24px;overflow:hidden;position:relative}.bar-fill{background:linear-gradient(90deg,#3498db,#2980b9);border-radius:12px;height:100%;transition:width .3s ease}.bar-value{color:#2c3e50;font-size:12px;font-weight:700;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.chart-section{padding:20px}.chart-section h4{color:#2c3e50;font-size:16px;margin:0 0 20px;text-align:center}.chart-container{margin:0 auto;position:relative}.chart-container.radar{height:400px;max-width:400px}.chart-container.doughnut{height:300px;max-width:500px}.chart-container.bar{height:300px;max-width:600px}@media (max-width:768px){.score-visualization{padding:16px}.visualization-nav{-webkit-overflow-scrolling:touch;overflow-x:auto;scrollbar-width:none}.visualization-nav::-webkit-scrollbar{display:none}.nav-button{white-space:nowrap}.stats-grid{grid-template-columns:1fr}.chart-container.radar{height:300px;max-width:300px}.chart-container.doughnut{height:250px;max-width:300px}}.multi-image-analyzer{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;margin:20px 0;padding:20px}.multi-image-analyzer h3{align-items:center;color:#343a40;display:flex;font-size:18px;font-weight:600;gap:8px;margin-bottom:20px}.upload-section{margin-bottom:20px}.upload-label{cursor:pointer;display:block}.upload-box{background:#fff;border:2px dashed #cbd5e0;border-radius:8px;padding:40px;text-align:center;transition:all .3s ease}.upload-box:hover{background:#f7fafc;border-color:#4299e1}.upload-box.dragging{background:#e6f2ff;border-color:#4299e1;border-width:3px}.add-more-placeholder,.upload-placeholder{align-items:center;display:flex;flex-direction:column;gap:8px}.add-icon,.upload-icon{font-size:48px;opacity:.6}.add-icon{color:#4299e1;font-size:36px}.add-text,.upload-text{color:#2d3748;font-size:16px;font-weight:500}.add-hint,.upload-hint{color:#718096;font-size:14px}.upload-required{color:#e53e3e;font-size:12px;margin-top:4px}.file-input{display:none}.image-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin-bottom:20px}.image-item{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden;position:relative;transition:transform .2s}.image-item:hover{box-shadow:0 4px 6px #0000001a;transform:translateY(-2px)}.image-preview{aspect-ratio:1;overflow:hidden;position:relative}.image-preview img{height:100%;object-fit:cover;width:100%}.analyzing-overlay{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.analyzed-indicator{background:#48bb78;font-weight:700}.analyzed-indicator,.error-indicator{align-items:center;border-radius:50%;color:#fff;display:flex;font-size:14px;height:24px;justify-content:center;position:absolute;right:8px;top:8px;width:24px}.error-indicator{background:#f56565;cursor:help}.remove-button{background:#00000080;border-radius:50%;font-size:18px;height:24px;left:8px;line-height:1;opacity:0;position:absolute;top:8px;transition:opacity .2s;width:24px}.image-item:hover .remove-button{opacity:1}.remove-button:hover{background:#000c}.image-info{display:flex;flex-direction:column;gap:2px;padding:8px}.image-name{color:#2d3748;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-size{color:#718096;font-size:11px}.analyzer-controls{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.analyze-button{align-items:center;background:#4299e1;border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:16px;font-weight:500;gap:8px;justify-content:center;padding:12px 24px;transition:all .3s ease}.analyze-button:hover:not(:disabled){background:#3182ce;box-shadow:0 4px 6px #4299e14d;transform:translateY(-1px)}.analyze-button:disabled{background:#cbd5e0;box-shadow:none;cursor:not-allowed;transform:none}.analyze-button.analyzing{background:#805ad5}.analyze-button .spinner{animation:spin .8s linear infinite;border:2px solid #0000;border-radius:50%;border-top-color:#fff;height:16px;width:16px}.analyze-button .icon{font-size:18px}.error-message,.progress-message,.warning-message{align-items:center;border-radius:8px;display:flex;font-size:14px;gap:8px;padding:12px 16px}.warning-message{background:#fefcbf;border:1px solid #f6e05e;color:#744210}.progress-message{background:#e6fffa;border:1px solid #81e6d9;color:#234e52}.error-message{background:#fff5f5;border:1px solid #feb2b2;color:#742a2a}.error-icon,.progress-icon,.warning-icon{font-size:16px}.analyzer-info{background:#e6fffa;border:1px solid #81e6d9;border-radius:8px;margin-bottom:20px;padding:16px}.analyzer-info p{color:#234e52;font-weight:500;margin:0 0 8px}.analyzer-info ul{margin:0;padding-left:20px}.analyzer-info li{color:#2c5282;font-size:14px;margin-bottom:4px}.keyword-results-container{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.aggregation-note{align-items:center;background:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;color:#4a5568;display:flex;font-size:14px;gap:8px;margin-bottom:16px;padding:8px 12px}.note-icon{font-size:16px}.view-mode-toggle{gap:8px;margin-bottom:16px}.mode-button{align-items:center;background:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;color:#4a5568;display:flex;flex:1 1;font-size:14px;gap:6px;justify-content:center;padding:8px 16px}.mode-button:hover{background:#edf2f7;border-color:#cbd5e0}.mode-button.active{background:#4299e1;border-color:#4299e1;color:#fff}.mode-icon{font-size:16px}.glb-gallery-container{background-color:#f5f5f5;display:flex;flex-direction:column;min-height:100vh}.gallery-header{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 1px 3px #0000001a;color:#fff;padding:1.5rem 2rem}.gallery-header h1{font-size:1.75rem;font-weight:700;letter-spacing:-.3px;margin:0 0 .75rem}.gallery-controls{gap:1rem}.filter-select,.sort-select{background-color:#fffffff2;border:1px solid #ffffff4d;border-radius:6px;color:#1a1a1a;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .15s ease}.filter-select:hover,.sort-select:hover{background-color:#fff;border-color:#ffffff80}.filter-select:focus,.sort-select:focus{border-color:#fff;box-shadow:0 0 0 2px #fff3;outline:none}.defaults-toggle{align-items:center;cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:6px;opacity:.95;white-space:nowrap}.defaults-toggle input{cursor:pointer}.object-count{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border-radius:20px;font-size:1rem;font-weight:500;opacity:.95;padding:.375rem .75rem}.error-container,.loading-container{align-items:center;color:#666;display:flex;flex:1 1;font-size:1.2rem;justify-content:center}.error-container{color:#e74c3c}.objects-grid{grid-gap:1.25rem;display:grid;flex:1 1;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));padding:1.5rem}.object-card{border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;overflow:hidden;transition:all .2s ease}.object-card:hover{border-color:#c7d2fe;box-shadow:0 8px 16px #0000001a,0 2px 4px #0000000f}.object-card.disabled{filter:grayscale(100%);opacity:.5}.object-card.disabled:hover{opacity:.7}.object-preview{align-items:center;background:#f8f9fa;border-bottom:1px solid #eee;display:flex;flex-shrink:0;height:220px;justify-content:center;overflow:hidden;position:relative;width:100%}.object-card .default-badge{background:#fef3c7;border:1px solid #fde68a;border-radius:4px;color:#92400e;font-size:.65rem;font-weight:700;letter-spacing:.05em;padding:3px 8px;position:absolute;right:8px;top:8px;z-index:10}.object-card .disabled-overlay{background:#000000b3;border-radius:4px;color:#fff;font-size:14px;font-weight:700;left:50%;padding:8px 16px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:5}.object-card .disabled-badge{background:#6c757d;border-radius:3px;color:#fff;font-size:11px;margin-left:4px;padding:2px 6px}.object-info{background:#fff;display:flex;flex:1 1;flex-direction:column;padding:.85rem 1rem .6rem;width:100%}.object-info h3{color:#1a1a1a;font-size:1.05rem;font-weight:600;line-height:1.3;margin:0 0 .25rem}.object-type{align-self:flex-start;background:#eef2ff;border:1px solid #e0e7ff;border-radius:100px;color:#6366f1;display:inline-block;font-size:.62rem;font-weight:600;letter-spacing:.04em;margin:0 0 .4rem;max-width:100%;overflow:hidden;padding:2px 8px;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.object-meta{color:#b0b8c4;font-family:SF Mono,Monaco,Courier New,monospace;font-size:.68rem;font-weight:400;line-height:1.4;margin:0 0 .25rem}.card-meta-sep{color:#c5cbd3}.object-actions{align-items:stretch;display:flex;gap:0;margin-top:auto}.object-actions .action-btn{align-items:center;-webkit-appearance:none;appearance:none;background:#0000;border:none;border-radius:0;color:#bfc6ce;cursor:pointer;display:inline-flex;flex:1 1;justify-content:center;line-height:1;min-width:0;outline:none;padding:8px 0;transition:all .15s ease}.object-actions .action-btn svg{display:block}.object-actions .action-btn:last-child{border-bottom-right-radius:10px}.object-actions .action-btn:first-child{border-bottom-left-radius:10px}.object-actions .action-btn:hover{background:#f4f5f7;color:#6b7280}.edit-btn:hover{background:#ecfdf5;color:#059669}.remove-btn:hover{background:#fef2f2;color:#dc2626}.default-set-btn:hover{background:#ecfdf5;color:#059669}.default-unset-btn{color:#d97706}.default-unset-btn:hover{background:#fffbeb;color:#b45309}.enable-btn:hover{background:#ecfdf5;color:#059669}.delete-confirm{align-items:center;animation:slideIn .2s ease;display:flex;flex:1 1;gap:.4rem;justify-content:flex-start}.delete-text{color:#d32f2f;font-size:.875rem;font-weight:600;margin-right:.5rem}.action-btn.confirm-btn{background:#dc3545;color:#fff;font-size:.8rem;padding:.4rem .75rem}.action-btn.confirm-btn:hover{background:#c82333}.action-btn.cancel-btn{background:#6c757d;color:#fff;font-size:.8rem;padding:.4rem .75rem}.action-btn.cancel-btn:hover{background:#5a6268}.modal-overlay{padding:2rem}.glb-gallery-container .modal-content{background:#fff;border-radius:12px;box-shadow:0 25px 50px #00000040;display:flex;flex-direction:column;height:85vh;max-width:1400px!important;overflow:hidden;position:relative;width:95%!important}.modal-close{font-size:2rem;right:1rem;top:1rem;z-index:1}.modal-close:hover{background-color:#0000001a}.modal-nav-arrow{align-items:center;background:#ffffff26;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:3rem;height:80px;justify-content:center;position:fixed;top:50%;transform:translateY(-50%);transition:background-color .2s,transform .2s;-webkit-user-select:none;user-select:none;width:48px;z-index:1001}.modal-nav-arrow:hover{background:#ffffff4d}.modal-nav-prev{left:12px}.modal-nav-next{right:12px}.glb-gallery-container .modal-body{display:flex;flex:1 1;height:100%;overflow:hidden}.glb-gallery-container .modal-viewer{background:#f0f0f0;flex:1 1 70%;min-height:500px;min-width:0}.glb-gallery-container .modal-details{background:#fafafa;border-left:1px solid #e5e7eb;flex:0 0 30%;max-width:400px;min-width:300px;overflow-y:auto;padding:1.5rem}.modal-details h2{color:#111827;font-size:1.25rem;font-weight:700;line-height:1.3;margin:0 0 1.25rem}.detail-section{border-bottom:1px solid #e5e7eb;margin-bottom:1rem;padding-bottom:1rem}.detail-section:last-child{margin-bottom:0;padding-bottom:0}.detail-section h3{color:#6b7280;font-size:.7rem;letter-spacing:.05em;margin:0 0 .5rem}.detail-section p{color:#374151;font-size:.85rem;line-height:1.5;margin:.2rem 0}.detail-section strong{color:#4b5563;font-size:.8rem;font-weight:600}.projection-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.projection-link{background-color:#eef2ff;border:1px solid #c7d2fe;border-radius:4px;color:#4338ca;font-size:.8rem;padding:.25rem .6rem;text-decoration:none;transition:all .15s}.projection-link:hover{background-color:#e0e7ff;border-color:#a5b4fc}.view-projections-btn{background-color:#4f46e5;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:500;margin-top:.5rem;padding:.5rem .75rem;transition:background-color .15s;width:100%}.view-projections-btn:hover{background-color:#4338ca}.view-projections-btn:disabled{background-color:#c7d2fe;cursor:not-allowed}.view-projections-btn.secondary-btn{background-color:#e5e7eb;color:#374151}.view-projections-btn.secondary-btn:hover{background-color:#d1d5db}.projection-modal-content{background:#fff;border-radius:8px;display:flex;flex-direction:column;height:90vh;max-width:1400px;position:relative;width:95%}.projection-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:1rem 1.5rem;position:relative}.projection-header h2{color:#2c3e50;flex:1 1;font-size:1.5rem;margin:0 auto 0 1rem;text-align:left}.back-btn{background-color:#95a5a6;border:none;border-radius:4px;color:#fff;font-size:.9rem;padding:.5rem 1rem;transition:background-color .2s}.back-btn:hover{background-color:#7f8c8d}.projection-tabs{background-color:#e0e0e0;display:flex;gap:1px;overflow-x:auto;padding:0}.projection-tab{background-color:#f5f5f5;border:none;color:#666;cursor:pointer;font-size:.9rem;padding:.75rem 1.5rem;transition:background-color .2s,color .2s;white-space:nowrap}.projection-tab:hover{background-color:#e8e8e8;color:#333}.projection-tab.active{background-color:#fff;color:#2c3e50;font-weight:600}.projection-viewer-container{align-items:center;background-color:#f9f9f9;display:flex;flex:1 1;justify-content:center;overflow:hidden;position:relative}.projection-image-wrapper{align-items:center;display:flex;flex-direction:column;height:100%;padding:2rem;position:relative;width:100%}.projection-image{background:#fff;border:1px solid #e0e0e0;box-shadow:0 2px 8px #0000001a;height:auto;max-height:calc(100% - 100px);max-width:100%;width:auto}.projection-loading{color:#666;font-size:1.2rem;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.projection-info{align-items:center;background:#fff;border-radius:4px;box-shadow:0 1px 3px #0000001a;display:flex;gap:2rem;margin-top:1rem;padding:1rem}.projection-info p{color:#666;font-size:.9rem;margin:0}.download-btn{background-color:#27ae60;border-radius:4px;font-size:.9rem;padding:.5rem 1rem;text-decoration:none;transition:background-color .2s}.download-btn:hover{background-color:#229954}.no-projection{color:#666;font-size:1.1rem;text-align:center}.debug-btn{color:#9ca3af}.debug-btn:hover{background:#f3f4f6;color:#6b7280}.debug-modal-overlay{align-items:center;animation:fadeIn .2s ease;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.debug-modal{animation:slideUp .3s ease;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:85vh;max-width:800px;overflow:hidden;width:90%}.debug-modal-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #e5e5e5;color:#fff;display:flex;justify-content:space-between;padding:1.5rem}.debug-modal-header h2{font-size:1.5rem;margin:0}.debug-header-actions{align-items:center;display:flex;gap:1rem}.debug-modal-header .copy-btn{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;transition:all .2s}.debug-modal-header .copy-btn:hover{background:#ffffff4d}.debug-modal-header .close-btn{align-items:center;background:none;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:2rem;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.debug-modal-header .close-btn:hover{background-color:#fff3}.debug-modal-content{background-color:#f8f9fa;flex:1 1;overflow-y:auto;padding:1.5rem}.debug-info{max-width:100%}.debug-section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:1rem;padding:1rem}.debug-section h3{border-bottom:1px solid #eee;color:#333;font-size:1.1rem;margin:0 0 .75rem;padding-bottom:.5rem}.debug-field{align-items:flex-start;display:flex;font-family:Courier New,monospace;font-size:.9rem;margin-bottom:.5rem}.debug-key{color:#9c27b0;font-weight:600;margin-right:.5rem;min-width:120px}.debug-value{color:#2e7d32;flex:1 1;word-break:break-all}.debug-value.url-value{color:#1976d2;font-size:.85rem}.debug-json{background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#424242;font-family:Courier New,monospace;font-size:.85rem;margin:0;overflow-x:auto;padding:.75rem;white-space:pre}.debug-json.full-json{max-height:400px;overflow-y:auto}.debug-section details{margin-top:.5rem}.debug-section summary{background-color:#f8f9fa;border-radius:4px;color:#667eea;cursor:pointer;font-weight:600;padding:.5rem;-webkit-user-select:none;user-select:none}.debug-section summary:hover{background-color:#e8eaf6}code{background-color:#f5f5f5;border-radius:3px;color:#d32f2f;font-family:Courier New,monospace;padding:.25rem .5rem}.delete-modal-overlay{align-items:center;animation:fadeIn .2s ease;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.delete-modal{animation:slideUp .3s ease;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:80vh;max-width:500px;overflow:hidden;width:90%}.delete-modal-header{align-items:center;border-bottom:1px solid #e5e5e5;display:flex;justify-content:space-between;padding:1.5rem}.delete-modal-header h2{color:#d32f2f;font-size:1.5rem;margin:0}.delete-modal-header .close-btn{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:2rem;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.delete-modal-header .close-btn:hover{background-color:#f5f5f5;color:#333}.delete-modal-content{flex:1 1;overflow-y:auto;padding:1.5rem}.delete-warning{color:#333;font-size:1.1rem;margin-bottom:1.5rem}.delete-warning strong{color:#d32f2f}.files-to-delete{background-color:#f8f8f8;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:1rem;padding:1rem}.files-to-delete h3{color:#666;font-size:1rem;margin:0 0 .75rem}.file-list{list-style:none;margin:0 0 .75rem;padding:0}.file-item{background:#fff;border:1px solid #e5e5e5;font-size:.9rem;margin-bottom:.5rem;padding:.5rem}.file-type{font-weight:600;margin-right:.75rem;min-width:120px}.file-path{color:#999;font-size:.85rem}.file-count{border-top:1px solid #e0e0e0;color:#666;font-size:.9rem;font-weight:600;margin:0;padding-top:.5rem}.delete-note{color:#f44336;font-size:.9rem;font-style:italic;margin:1rem 0 0}.delete-modal-actions{border-top:1px solid #e5e5e5;display:flex;gap:1rem;justify-content:flex-end;padding:1.5rem}.delete-modal-actions .cancel-btn{background-color:#f5f5f5;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:all .2s}.delete-modal-actions .cancel-btn:hover:not(:disabled){background-color:#e0e0e0}.delete-modal-actions .confirm-delete-btn{background-color:#d32f2f;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s}.delete-modal-actions .confirm-delete-btn:hover:not(:disabled){background-color:#b71c1c}.delete-modal-actions button:disabled{cursor:not-allowed;opacity:.5}.viewer-overlay-btn{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe6;border:1px solid #00000026;border-radius:6px;color:#374151;cursor:pointer;font-size:.75rem;font-weight:500;padding:5px 10px;transition:all .15s}.viewer-overlay-btn:hover{background:#fff;border-color:#00000040}.detail-section .coord-value{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;color:#374151;display:block;font-family:SF Mono,Monaco,Courier New,monospace;font-size:.78rem;margin:3px 0;padding:4px 8px}.detail-section .hint-text{color:#9ca3af;font-size:.78rem;font-style:italic;margin-top:6px}@media (max-width:768px){.objects-grid{grid-template-columns:1fr;padding:1rem}.modal-body{flex-direction:column}.modal-viewer{min-height:300px}.modal-details{width:100%}.delete-modal{max-height:90vh;width:95%}}.ios-dialog-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.ios-dialog-content{animation:slideUp .3s ease-out;background:#f3e9d2;border-radius:16px;box-shadow:0 20px 60px #0003;max-height:90vh;max-width:500px;overflow-y:auto;position:relative;width:90%}.ios-dialog-close{align-items:center;background:none;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;font-size:2rem;height:40px;justify-content:center;position:absolute;right:1rem;top:1rem;transition:all .2s;width:40px;z-index:1}.ios-dialog-close:hover{background-color:#0000000d;transform:scale(1.1)}.ios-dialog-header{padding:3rem 2rem 1.5rem;text-align:center}.ios-dialog-icon{align-items:center;background:linear-gradient(135deg,#007aff,#0051d5);border-radius:20px;color:#fff;display:inline-flex;height:80px;justify-content:center;margin-bottom:1rem;width:80px}.ios-dialog-header h2{color:#1a1a1a;font-size:1.75rem;font-weight:600;margin:0}.ios-dialog-body{padding:0 2rem 2rem}.ios-dialog-body p{color:#555;font-size:1rem;line-height:1.6;margin-bottom:1.5rem}.ios-dialog-features{background:#f8f9fa;border-radius:12px;margin-bottom:2rem;padding:1.5rem}.ios-dialog-features h3{color:#333;font-size:1.1rem;margin:0 0 1rem}.ios-dialog-features ul{list-style:none;margin:0;padding-left:1.5rem}.ios-dialog-features li{color:#555;margin-bottom:.5rem;padding-left:1.5rem;position:relative}.ios-dialog-features li:before{color:#10b981;content:"✓";font-weight:700;left:0;position:absolute}.ios-dialog-download{text-align:center}.ios-dialog-download h3{color:#333;font-size:1.2rem;margin:0 0 1.5rem}.download-options{align-items:center;display:flex;flex-direction:column;gap:1.5rem}.app-store-button{align-items:center;display:inline-flex;transition:all .2s}.app-store-button:hover{opacity:.9;transform:translateY(-2px)}.app-store-button img{display:block}.qr-code-container{align-items:center;background:#f8f9fa;border-radius:12px;display:flex;flex-direction:column;gap:.5rem;padding:1rem}.qr-code-image{border-radius:8px;display:block}.qr-code-container small{color:#666;font-size:.875rem}.rename-dialog-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.rename-dialog{animation:dialogSlideIn .2s ease-out;background:#54524f;border-radius:12px;box-shadow:0 10px 40px #0000004d;max-width:400px;padding:24px;width:90%}@keyframes dialogSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.rename-dialog-title{color:#f3e9d2;font-size:20px;font-weight:600;margin:0 0 20px}.rename-dialog-content{margin-bottom:24px}.rename-dialog-input{background:#f3e9d21a;border:2px solid #f3e9d233;border-radius:8px;color:#f3e9d2;font-size:16px;outline:none;padding:12px 16px;transition:all .2s ease;width:100%}.rename-dialog-input:focus{background:#f3e9d226;border-color:#f3e9d266}.rename-dialog-input::placeholder{color:#f3e9d266}.rename-dialog-error{color:#ff6b6b;font-size:14px;margin-top:8px}.rename-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.rename-dialog-button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;min-width:80px;padding:10px 20px;transition:all .2s ease}.rename-dialog-cancel{background:#f3e9d21a;color:#f3e9d2}.rename-dialog-cancel:hover{background:#f3e9d233}.rename-dialog-confirm{background:#dd9b4a;color:#54524f}.rename-dialog-confirm:hover{background:#c88a3a;box-shadow:0 2px 8px #dd9b4a4d;transform:translateY(-1px)}.user-home-container{background:#4b4c3a;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;max-width:100%;min-height:100vh;overflow-x:hidden;width:100%}.user-home-header{background-color:initial;box-sizing:border-box;padding:2rem;width:100%}.header-content{max-width:100%;width:100%}.welcome-text{color:#f3e9d2;font-size:1.125rem;font-weight:300;letter-spacing:.5px}.user-home-main{box-sizing:border-box;flex:1 1;max-width:100%;overflow-x:hidden;padding:1.5rem 2rem;width:100%}.projects-section{background-color:initial;box-sizing:border-box;overflow:visible;width:100%}.section-header h2{color:#f3e9d2;font-size:1.25rem;font-weight:300;letter-spacing:.5px;margin:0}.empty-state{padding:4rem 2rem}.empty-state p{font-size:1.125rem}.empty-state-hint{font-size:1rem}.projects-list{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-top:1.5rem;padding-top:4px}.project-item{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#baa5944d;border:2px solid #f3e9d233;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;min-height:160px;padding:2rem;position:relative;text-align:center;transition:all .2s ease}.project-item:hover{background-color:#baa59466;border-color:#f3e9d24d;transform:translateY(-2px)}.project-icon{color:#f3e9d2;height:48px;margin-bottom:1rem;width:48px}.project-icon svg{height:100%;width:100%}.project-content{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:.5rem}.project-name{color:#f3e9d2!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:1rem;font-weight:500;line-height:1.4;margin:0}.project-date{color:#f3e9d2b3;font-size:.75rem;margin-top:auto}.new-project-item{background:#baa59426;border:2px dashed #f3e9d24d}.new-project-item:hover{background:#baa5944d;border-color:#f3e9d280}.new-project-item .project-icon{opacity:.7}.new-project-item:hover .project-icon{opacity:1}.project-menu-container{position:absolute;right:12px;top:12px;z-index:10}.project-menu-button{align-items:center;background:#0000;border:none;border-radius:4px;color:#f3e9d299;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.project-menu-button:hover{background-color:#f3e9d21a;color:#f3e9d2}.project-menu-dropdown{background-color:#54524f;border:1px solid #f3e9d233;border-radius:8px;box-shadow:0 4px 12px #0000004d;margin-top:4px;min-width:150px;overflow:hidden;position:absolute;right:0;top:100%;z-index:100}.menu-item{align-items:center;background:none;border:none;color:#f3e9d2;cursor:pointer;display:flex;font-size:14px;gap:8px;padding:10px 16px;text-align:left;transition:background-color .2s ease;width:100%}.menu-item:hover{background-color:#f3e9d21a}.menu-item.delete-item{color:#ff6b6b}.menu-item.delete-item:hover{background-color:#ff6b6b1a}.error-message{border-radius:6px;font-size:.875rem;margin-bottom:1.5rem;padding:1rem}@media (min-width:1400px){.projects-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}@media (max-width:1024px){.projects-list{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}@media (max-width:768px){.user-home-header{padding:1.5rem}.header-content{flex-wrap:wrap;gap:1rem}.header-left{flex:1 1}.header-logo{height:40px}.welcome-text{font-size:1rem}.header-actions{justify-content:space-between;width:100%}.projects-section,.user-home-main{padding:1rem}.projects-list{gap:1rem;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.project-item{min-height:140px;padding:1.5rem 1rem}.project-icon{height:40px;width:40px}.project-name{font-size:.9rem}}@media (max-width:480px){.projects-list{grid-template-columns:repeat(2,1fr)}}.admin-section{border-top:2px solid #e5e7eb;margin-top:3rem;padding-top:2rem}.admin-section .section-header{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.admin-only-badge{align-items:center;background-color:#8b5cf6;border-radius:12px;box-shadow:0 2px 4px #8b5cf64d;color:#fff;display:inline-flex;font-size:11px;font-weight:600;letter-spacing:.5px;padding:4px 10px;text-transform:uppercase}.admin-section-notice{align-items:center;background-color:#fef3c7;border:1px solid #fcd34d;border-radius:8px;color:#92400e;display:flex;font-size:.875rem;margin-bottom:1.5rem;padding:12px 16px}.other-project{background-color:#8b5cf605;border:2px solid #8b5cf633;position:relative}.other-project:hover{border-color:#8b5cf666;box-shadow:0 8px 24px #8b5cf626;transform:translateY(-3px)}.other-project .project-content{position:relative}.project-owner{color:#6b7280;display:block;font-size:.75rem;font-style:italic;margin-top:4px}@media (max-width:768px){.admin-section{margin-top:2rem}.admin-section-notice{font-size:.8rem;padding:10px 12px}}.shared-section{margin-top:3rem}.shared-badge{background:#f3e9d226;border:1px solid #f3e9d24d;border-radius:12px;color:#f3e9d2;font-size:.75rem;font-weight:500;padding:4px 12px;text-transform:uppercase}.shared-section-notice{align-items:center;background:#f3e9d20d;border:1px solid #f3e9d233;border-radius:8px;color:#f3e9d2cc;display:flex;font-size:.875rem;margin-bottom:1.5rem;padding:12px 16px}.shared-project{background:#baa59459;border:2px solid #f3e9d240;position:relative}.shared-project:hover{background:#baa59473;border-color:#f3e9d259}.shared-indicator{background:#f3e9d21a;border-radius:50%;color:#f3e9d2e6;padding:6px;position:absolute;right:12px;top:12px}.shared-indicator,.sharing-modal-overlay{align-items:center;display:flex;justify-content:center}.sharing-modal-overlay{animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#00000080;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000}.sharing-modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:90%}.sharing-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px}.sharing-modal-header h2{color:#111827;font-size:20px;font-weight:600;margin:0}.sharing-modal-close{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;transition:all .2s ease;width:32px}.sharing-modal-close:hover{background-color:#f3f4f6;color:#374151}.sharing-modal-body{flex:1 1;overflow-y:auto;padding:24px}.project-info{margin-bottom:24px}.project-info h3{color:#111827;font-size:18px;font-weight:600;margin:0 0 8px}.share-description{color:#6b7280;font-size:14px;line-height:1.5;margin:0}.alert{align-items:flex-start;border-radius:8px;display:flex;line-height:1.5}.alert-error{background-color:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.alert-success{background-color:#d1fae5;border:1px solid #6ee7b7;color:#065f46}.collaborators-section{margin-top:0}.add-viewer-section,.owner-section,.pending-invitations-section,.viewers-section{margin-bottom:24px}.collaborators-section h4{color:#374151;font-size:14px;font-weight:600;letter-spacing:.025em;margin:0 0 12px;text-transform:uppercase}.user-card{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:8px;padding:12px;transition:all .2s ease}.user-card:hover{background:#f3f4f6;border-color:#d1d5db}.user-info{align-items:center;display:flex;gap:12px}.user-avatar{background:#e5e7eb;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 2px 0 #0000000d;height:40px;object-fit:cover;width:40px}.user-name{color:#111827;font-size:14px;font-weight:500;margin-bottom:2px}.user-email{color:#6b7280;font-size:13px}.access-badge{border-radius:9999px;font-size:12px;font-weight:500;letter-spacing:.025em;padding:4px 10px;text-transform:uppercase}.access-badge.owner{background:#dbeafe;color:#1e40af}.access-badge.viewer{background:#e9d5ff;color:#7c3aed}.sharing-remove-button{background:#fff;border:1px solid #e5e7eb;border-radius:20px;color:#6b7280;cursor:pointer;flex-shrink:0;font-size:13px;font-weight:500;margin-left:auto;padding:6px 16px;transition:all .2s ease}.sharing-remove-button:hover{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.viewers-list{margin-top:0}.no-viewers{background:#f9fafb;border:1px dashed #e5e7eb;border-radius:8px;color:#9ca3af;font-size:14px;font-style:italic;margin:12px 0;padding:20px;text-align:center}.add-viewer-form{display:flex;flex-direction:column;gap:12px}.email-form-row{display:flex;gap:8px}.adding-message{color:#6b7280;flex:1 1;font-size:14px;font-style:italic;padding:10px 14px}.invite-option{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;margin-top:8px;padding:16px}.invite-suggestion{color:#0c4a6e;font-size:14px;line-height:1.4;margin:0 0 12px}.invite-button{background:#0ea5e9;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:all .2s ease}.invite-button:hover:not(:disabled){background:#0284c7;box-shadow:0 2px 4px -1px #0000001a;transform:translateY(-1px)}.invite-button:disabled{background:#94a3b8;cursor:not-allowed;transform:none}.email-input{background:#fff;border:1px solid #d1d5db;border-radius:8px;flex:1 1;font-size:14px;padding:10px 14px;transition:all .2s ease}.email-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.email-input::placeholder{color:#9ca3af}.add-button{border-radius:22px;color:#fff;font-size:14px;font-weight:500;padding:10px 24px;transition:all .2s ease;white-space:nowrap}.add-button:hover:not(:disabled){background:#2563eb;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform:translateY(-1px)}.add-button:disabled{background:#e5e7eb;color:#9ca3af;cursor:not-allowed;transform:none}@media (max-width:480px){.sharing-modal-content{max-height:85vh;width:95%}.sharing-modal-body,.sharing-modal-header{padding:20px}.add-viewer-form{flex-direction:column}.add-button{width:100%}}.parcel-map-container{border:1px solid #e0e0e0;border-radius:8px;margin-top:16px;overflow:hidden;position:relative;width:100%}.map-overlay-message{background:#ffffffe6;border-radius:8px;box-shadow:0 2px 8px #0000001a;color:#666;font-size:14px;left:50%;padding:16px 24px;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1000}.parcel-adjustment-controls{background:#fffffff2;border-radius:8px;bottom:20px;box-shadow:0 2px 10px #0000001a;padding:15px;position:absolute;right:20px;z-index:1000}.control-label{color:#333;font-size:12px;font-weight:600;margin-bottom:10px;text-align:center}.control-buttons{align-items:center;flex-direction:column}.control-buttons,.control-row{display:flex;gap:5px}.control-btn{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:all .2s ease;width:32px}.control-btn:hover{background:#f0f0f0;border-color:#999}.control-btn:active{background:#e0e0e0;transform:scale(.95)}.reset-btn{font-size:20px}.offset-indicator{color:#666;font-size:11px;font-style:italic;margin-top:8px;text-align:center}.distance-label{background:none!important;border:none!important}.distance-label-text{background:#fffffff2;border-radius:4px;box-shadow:0 1px 3px #0003;color:#333;font-size:12px;font-weight:600;padding:2px 8px;pointer-events:none;white-space:nowrap}.address-input-container{background:#f9fafbe6;border:1px solid #e5e7eb;border-radius:8px;padding:15px}.address-input-container h3{color:#374151;font-size:14px;font-weight:600;margin:0 0 10px}.address-form{gap:16px}.address-form,.form-group{display:flex;flex-direction:column}.form-group{flex:1 1;gap:6px}.form-group label{font-size:14px}.form-group input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:10px 12px;transition:border-color .2s}.form-group input:focus{border-color:#4caf50;outline:none}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-row{gap:12px}.form-group-small{max-width:80px}.error-message{color:#d32f2f;font-size:14px;margin-top:8px}.button-group{gap:12px;margin-top:8px}.save-button,.search-button{border:none;border-radius:4px;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;padding:10px 16px;transition:background-color .2s,opacity .2s}.save-button{background-color:#4caf50}.save-button:hover:not(:disabled){background-color:#45a049}.search-button{background-color:#2196f3;color:#fff}.search-button:hover:not(:disabled){background-color:#1976d2}.save-button:disabled,.search-button:disabled{cursor:not-allowed;opacity:.6}.property-info{border-top:1px solid #e0e0e0;margin-top:24px;padding-top:20px}.property-info h4{color:#333;font-size:16px;font-weight:600;margin:0 0 12px}.toggle-details{background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:13px;padding:6px 12px;transition:background-color .2s}.toggle-details:hover{background-color:#e8e8e8}.export-button{background-color:#1976d2;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;padding:6px 12px;transition:background-color .2s}.export-button:hover:not(:disabled){background-color:#1565c0}.export-button:disabled{cursor:not-allowed;opacity:.6}.export-button.parcel-button{background-color:#17a2b8}.export-button.parcel-button:hover:not(:disabled){background-color:#138496}.property-details{background-color:#f9f9f9;border-radius:4px;margin-top:16px;padding:16px}.detail-row{border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:8px 0}.detail-row:last-child{border-bottom:none}.detail-row .label{color:#666;font-size:14px;font-weight:500}.detail-row .value{color:#333;font-size:14px}.parcel-map-section{margin-top:20px}@media (max-width:600px){.form-row{flex-direction:column}.form-group-small{max-width:100%}.button-group{flex-direction:column}}.ai-renderings-container{width:100%}.ai-renderings-controls{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.group-by-controls{align-items:center;display:flex;gap:.75rem}.group-by-controls span{color:#f3e9d299;font-size:.875rem}.group-by-controls button{background:#0000;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2cc;cursor:pointer;font-size:.875rem;padding:.375rem .75rem;transition:all .2s ease}.group-by-controls button:hover{background:#baa59433;border-color:#f3e9d280}.group-by-controls button.active{background:#baa59466;border-color:#f3e9d299;color:#f3e9d2}.enhancement-count{color:#f3e9d299;font-size:.875rem}.ai-renderings-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-bottom:2rem}.ai-rendering-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#baa5944d;border:2px solid #f3e9d233;border-radius:12px;cursor:pointer;overflow:hidden;transition:all .2s ease}.ai-rendering-card:hover{background-color:#baa59466;border-color:#f3e9d24d;transform:translateY(-2px)}.ai-rendering-card img{display:block;height:200px;object-fit:cover;width:100%}.ai-rendering-info{padding:1rem}.ai-rendering-style{color:#f3e9d2;font-size:.9rem;font-weight:400;margin:0 0 .25rem;text-transform:capitalize}.ai-rendering-room{color:#f3e9d299;font-size:.8rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-renderings-grouped{width:100%}.ai-rendering-group{margin-bottom:2.5rem}.ai-rendering-group h3{border-bottom:1px solid #f3e9d233;color:#f3e9d2;font-size:1.1rem;font-weight:400;margin:0 0 1rem;padding-bottom:.5rem}.ai-renderings-error,.ai-renderings-loading,.ai-renderings-placeholder{background-color:#baa5944d;border:2px dashed #f3e9d233;border-radius:12px;padding:3rem;text-align:center}.ai-renderings-error p,.ai-renderings-loading p,.ai-renderings-placeholder p{color:#f3e9d2cc;font-size:1rem;margin:0}.ai-renderings-hint{color:#f3e9d299!important;font-size:.875rem!important;margin-top:.5rem!important}.ai-rendering-modal{align-items:center;background:#000000e6;bottom:0;display:flex;justify-content:center;left:0;padding:2rem;position:fixed;right:0;top:0;z-index:1000}.ai-rendering-modal-content{background:#2a2b22;border-radius:12px;display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow:hidden;position:relative}.close-modal{align-items:center;background:#00000080;border:none;border-radius:50%;color:#f3e9d2;cursor:pointer;display:flex;font-size:2rem;height:40px;justify-content:center;position:absolute;right:1rem;top:1rem;transition:all .2s ease;width:40px;z-index:1}.close-modal:hover{background:#000000b3;transform:scale(1.1)}.ai-rendering-modal-content img{max-height:70vh;max-width:100%;object-fit:contain}.modal-info{background:#0000004d;padding:1.5rem}.modal-info h3{color:#f3e9d2;font-size:1.25rem;font-weight:400;margin:0 0 .5rem;text-transform:capitalize}.modal-info p{color:#f3e9d2cc;font-size:.875rem;margin:0}.enhancement-prompt{color:#f3e9d299!important;font-style:italic;margin-top:1rem!important}@media (max-width:768px){.ai-renderings-grid{gap:1rem;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.ai-rendering-card img{height:150px}.ai-renderings-controls{align-items:flex-start;flex-direction:column;gap:1rem}.group-by-controls{width:100%}}.project-detail-container{background:#4b4c3a;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;min-height:100vh}.project-detail-header{background-color:initial;padding:2rem}.header-content{align-items:center;display:flex;justify-content:space-between}.header-left{gap:1rem}.header-logo{height:48px;width:auto}.project-detail-header h1{color:#f3e9d2;font-size:1.125rem;font-weight:300;letter-spacing:.5px;margin:0}.admin-warning-banner{align-items:center;background-color:#8b5cf6;border-bottom:2px solid #8b5cf633;color:#fff;display:flex;font-size:.875rem;font-weight:500;justify-content:center;padding:.75rem 2rem}.header-actions{align-items:center;gap:2rem}.logout-button{background-color:initial;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;font-weight:300;letter-spacing:.3px;padding:.5rem 1rem;transition:all .2s ease}.logout-button:hover{background-color:#baa5944d;border-color:#f3e9d280}.project-detail-main{flex:1 1;padding:1.5rem 2rem;width:100%}.project-overview{align-items:flex-start;display:flex;gap:2rem;margin-bottom:3rem}.project-image-container{flex-shrink:0;height:200px;width:300px}.project-image{border-radius:12px;object-fit:cover}.project-image,.project-image-placeholder{border:2px solid #f3e9d233;height:100%;width:100%}.project-image-placeholder{align-items:center;background-color:#baa5944d;border-radius:12px;display:flex;justify-content:center}.project-image-placeholder svg{color:#f3e9d266;height:60px;width:60px}.project-details{color:#f3e9d2;flex:1 1}.project-details h2{font-size:1.25rem;font-weight:300;letter-spacing:.5px;margin:0 0 1rem}.project-details p{color:#f3e9d2cc;font-size:1rem;line-height:1.6;margin:0}.content-section{margin-bottom:3rem;overflow:visible;position:relative}.content-section h2{color:#f3e9d2;font-size:1.25rem;font-weight:300;letter-spacing:.5px;margin:0 0 1.5rem}.collapsible-section{overflow:visible}.collapsible-section .collapsible-header{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-bottom:1.5rem;-webkit-user-select:none;user-select:none}.collapsible-section .collapsible-header:hover{opacity:.8}.collapsible-section .collapsible-header h2{margin:0}.collapsible-header-content{align-items:center;display:flex;gap:1.5rem}.saved-address{color:#f3e9d2b3;font-size:.9rem;font-weight:300;letter-spacing:.3px}.collapse-icon{color:#f3e9d2;transition:transform .3s ease}.collapse-icon.collapsed{transform:rotate(-90deg)}.structures-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.structure-card,.structures-grid{overflow:visible;position:relative}.structure-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#baa5944d;border:2px solid #f3e9d233;border-radius:12px;cursor:pointer;padding:0;transition:all .2s ease}.structure-card:has(.room-menu-dropdown),.structure-card:has(.structure-menu-dropdown){z-index:10}.structure-card:hover{background-color:#baa59466;border-color:#f3e9d24d;transform:translateY(-2px)}.structure-card-header{background-color:#2d4a2b;border-radius:10px 10px 0 0;margin:0;padding:1rem;position:relative}.structure-card-header h3{color:#f3e9d2;font-size:.9rem;font-weight:400;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.structure-thumbnail{border-radius:0;height:150px;object-fit:cover;width:100%}.structure-thumbnail-placeholder{align-items:center;background-color:#baa59426;border-radius:0;display:flex;height:150px;justify-content:center;width:100%}.structure-thumbnail-placeholder svg{color:#f3e9d24d;height:50px;width:50px}.structure-meta-info{border-radius:0 0 10px 10px;overflow:hidden;padding:.75rem 1rem}.structure-room-count{color:#f3e9d2cc;font-size:.875rem;font-weight:500;margin:0 0 .25rem}.structure-date{color:#f3e9d299;font-size:.75rem;margin:0}.new-room-scan-card{background:#baa59426;border:2px dashed #f3e9d24d}.new-room-scan-card:hover{background:#baa5944d;border-color:#f3e9d280}.new-room-scan-card .structure-thumbnail-placeholder{opacity:.7}.new-room-scan-card:hover .structure-thumbnail-placeholder{opacity:1}.room-menu-container,.structure-menu-container{position:absolute;right:8px;top:8px;z-index:20}.room-menu-button,.structure-menu-button{align-items:center;background:#0000;border:none;border-radius:4px;color:#f3e9d299;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.room-menu-button:hover,.structure-menu-button:hover{background-color:#f3e9d21a;color:#f3e9d2}.room-menu-dropdown,.structure-menu-dropdown{background-color:#54524f;border:1px solid #f3e9d233;border-radius:8px;box-shadow:0 4px 12px #0000004d;margin-top:4px;min-width:150px;overflow:hidden;position:absolute;right:0;top:100%;z-index:1000}.renderings-placeholder{background-color:#baa5944d;border:2px dashed #f3e9d233;border-radius:12px;padding:3rem;text-align:center}.renderings-placeholder p{color:#f3e9d2cc;font-size:1rem;margin:0}.renderings-hint{color:#f3e9d299!important;font-size:.875rem!important;margin-top:.5rem!important}.section-header{margin-bottom:1.5rem}.add-document-button{align-items:center;background-color:#baa5944d;border:1px solid #f3e9d24d;border-radius:8px;cursor:pointer;display:flex;height:36px;justify-content:center;padding:.5rem;transition:all .2s ease;width:36px}.add-document-button:hover{background-color:#baa59480;border-color:#f3e9d280;transform:scale(1.05)}.add-document-button svg{color:#f3e9d2}.scan-filter-controls{align-items:baseline;display:flex;gap:2rem}.data-source-toggle,.view-mode-toggle{align-items:baseline;display:flex;gap:.5rem}.scan-filter-controls span{color:#f3e9d299;font-size:.875rem;margin-right:.25rem}.project-detail-container .scan-filter-controls button,.project-detail-container .view-mode-toggle button,.scan-filter-controls button,.view-mode-toggle button{-webkit-appearance:none;appearance:none;background:none!important;background-color:initial!important;background-image:none!important;background:#4b4c3a00!important;border:1px solid #f3e9d24d!important;border-radius:6px;box-shadow:none;color:#f3e9d2cc!important;cursor:pointer;font-family:inherit;font-size:.875rem;font-weight:400;line-height:1.5;outline:none;padding:.375rem .75rem;text-transform:none;transition:all .2s ease}.data-source-toggle button:first-of-type,.view-mode-toggle button:first-of-type{border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.data-source-toggle button:last-of-type,.view-mode-toggle button:last-of-type{border-bottom-left-radius:0;border-top-left-radius:0}.project-detail-container .scan-filter-controls button:focus,.project-detail-container .view-mode-toggle button:focus,.scan-filter-controls button:focus,.view-mode-toggle button:focus{background:#0000!important;box-shadow:none!important;outline:none!important}.project-detail-container .scan-filter-controls button:hover,.project-detail-container .view-mode-toggle button:hover,.scan-filter-controls button:hover,.view-mode-toggle button:hover{background:#baa59433!important;background-color:#baa59433!important;border-color:#f3e9d280!important}.project-detail-container .scan-filter-controls button.active,.project-detail-container .view-mode-toggle button.active,.scan-filter-controls button.active,.view-mode-toggle button.active{background:#baa59466!important;background-color:#baa59466!important;border-color:#f3e9d299!important;color:#f3e9d2!important}.room-card .structure-card-header{min-height:75px}.room-meta-info{margin-top:.5rem}.room-structure-name{color:#f3e9d280;font-size:.75rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-debug-category{color:#f3e9d266;font-size:.7rem;font-style:italic;margin:.2rem 0 0}.documents-placeholder{background-color:#baa5944d;border:2px solid #f3e9d233;border-radius:12px;padding:2rem}.documents-placeholder p{color:#f3e9d299;font-size:.9rem;margin:0}.empty-state{color:#f3e9d2cc;padding:3rem 2rem}.empty-state p{font-size:1rem;margin:.5rem 0}.empty-state-hint{color:#f3e9d299;font-size:.875rem}.error-message{background-color:#ff00001a;border:1px solid #f003;border-radius:12px;color:#ff6b6b;margin:2rem auto;max-width:600px;padding:2rem;text-align:center}.error-message .back-button{background-color:initial;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;margin-top:1rem;padding:.5rem 1.25rem;transition:all .2s ease}.error-message .back-button:hover{background-color:#baa5944d;border-color:#f3e9d280}@media (max-width:1024px){.project-overview{flex-direction:column}.project-image-container{max-width:400px;width:100%}}@media (max-width:768px){.project-detail-header{padding:1.5rem}.header-content{flex-wrap:wrap;gap:1rem}.header-left{flex:1 1}.header-logo{height:40px}.project-detail-header h1{font-size:1rem}.project-detail-main{padding:1rem}.structures-grid{gap:1rem;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.structure-thumbnail,.structure-thumbnail-placeholder{height:120px}.section-header{align-items:flex-start;flex-direction:column;gap:1rem}.scan-filter-controls{flex-direction:column;gap:1rem;width:100%}.data-source-toggle,.view-mode-toggle{justify-content:center;width:100%}}.documents-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.construction-documents-section{background-color:#4b4c3a4d;border-top:2px solid #f3e9d233;margin-top:3rem;padding-top:2rem}.document-card{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#baa5944d;border:2px solid #f3e9d233;border-radius:12px;cursor:pointer;display:flex;gap:1rem;padding:1.5rem;transition:all .2s ease}.document-card:hover{background-color:#baa59466;border-color:#f3e9d24d;transform:translateY(-2px)}.document-card.cd-document{cursor:default;flex-direction:column;padding:0}.document-card.cd-document:hover{transform:none}.document-card.cd-document .document-content{align-items:center;border-radius:12px 12px 0 0;cursor:pointer;display:flex;gap:1rem;padding:1.5rem;transition:background-color .2s ease;width:100%}.document-card.cd-document .document-content:hover{background-color:#baa5941a}.document-actions{border-top:1px solid #f3e9d21a;display:flex;gap:.5rem;padding:.75rem 1.5rem}.document-actions .edit-button{align-items:center;background:#0000;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;display:flex;font-size:.875rem;gap:.375rem;padding:.375rem .75rem;transition:all .2s ease}.document-actions .edit-button:hover{background:#baa5944d;border-color:#f3e9d280}.document-icon{color:#f3e9d2;flex-shrink:0}.document-info{flex:1 1;min-width:0}.document-info h4{color:#f3e9d2;font-size:1rem;font-weight:400;margin:0 0 .25rem}.document-filename{color:#f3e9d2b3;font-size:.8rem;margin:0 0 .5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.document-date{color:#f3e9d299;font-size:.75rem;margin:0}.document-feature{color:#72945fe6;font-size:.75rem;font-style:italic;margin:.25rem 0 0}.documents-placeholder{color:#f3e9d299;padding:3rem 2rem;text-align:center}.documents-placeholder p{margin:0 0 .5rem}.documents-hint{color:#f3e9d280;font-size:.9rem}.admin-menu-item{justify-content:space-between}.admin-menu-item,.admin-menu-item span{align-items:center;display:flex;width:100%}.view-only-banner{align-items:center;background:linear-gradient(90deg,#7b1fa2,#9c27b0);box-shadow:0 2px 4px #0000001a;color:#fff;display:flex;font-size:14px;gap:16px;justify-content:center;padding:12px 24px}.view-only-label{background:#fff3;border-radius:12px;font-size:12px;font-weight:600;padding:4px 12px;text-transform:uppercase}.view-only-message{flex:1 1;text-align:center}.copy-project-button{background:#fff;border:none;border-radius:4px;color:#7b1fa2;cursor:pointer;font-weight:500;padding:6px 16px;transition:all .2s}.copy-project-button:hover{background:#f5f5f5;box-shadow:0 2px 8px #00000026;transform:translateY(-1px)}.header-right{align-items:center;display:flex;gap:12px}.share-button{background:#0000;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:14px;font-weight:400;padding:8px 20px;transition:all .2s}.share-button:hover{background:#f3e9d21a;border-color:#f3e9d280;box-shadow:0 2px 8px #f3e9d21a;transform:translateY(-1px)}.building-code-settings{padding:1rem 0}.building-code-settings .settings-description{color:#f3e9d2b3;font-size:.875rem;margin-bottom:1.5rem}.building-code-settings .setting-group{margin-bottom:1.5rem}.building-code-settings .setting-group>label{color:#f3e9d2;display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}.building-code-settings .setting-hint{color:#f3e9d299;font-size:.75rem;margin-bottom:.75rem}.building-code-settings select{-webkit-appearance:none;appearance:none;background:#0003;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23F3E9D2' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 1rem center;background-repeat:no-repeat;border:1px solid #f3e9d24d;border-radius:8px;color:#f3e9d2;cursor:pointer;font-size:.875rem;max-width:400px;padding:.75rem 1rem;width:100%}.building-code-settings select:focus{border-color:#f3e9d280;outline:none}.building-code-settings select:disabled{cursor:not-allowed;opacity:.6}.building-code-settings .scope-checkboxes{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.building-code-settings .scope-checkbox{align-items:flex-start;background:#00000026;border:1px solid #f3e9d226;border-radius:8px;cursor:pointer;display:flex;gap:.75rem;padding:.75rem;transition:all .2s ease}.building-code-settings .scope-checkbox:hover{background:#00000040;border-color:#f3e9d240}.building-code-settings .scope-checkbox input[type=checkbox]{accent-color:#baa594;cursor:pointer;height:18px;margin-top:2px;width:18px}.building-code-settings .scope-checkbox .scope-label{color:#f3e9d2;display:block;font-size:.875rem;font-weight:500}.building-code-settings .scope-checkbox .scope-description{color:#f3e9d299;display:block;font-size:.75rem;margin-top:.25rem}.building-code-settings .saving-indicator{color:#f3e9d2b3;font-size:.75rem;font-style:italic}.pre-transformed-viewer-modal{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.viewer-container{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;display:flex;flex-direction:column;height:90%;max-height:800px;max-width:1200px;width:90%}.viewer-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:16px 20px}.viewer-header h3{font-size:18px;font-weight:600;margin:0}.close-button{background:none;font-size:28px;padding:0;transition:background-color .2s}.close-button:hover{background-color:#f0f0f0}.viewer-canvas{flex:1 1;overflow:hidden;position:relative}.error-overlay,.loading-overlay{left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);z-index:10}.loading-spinner{border:3px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;height:40px;margin:0 auto 12px;width:40px}.error-overlay{color:#d32f2f;font-weight:500}.viewer-info{align-items:center;background-color:#f8f8f8;border-top:1px solid #e0e0e0;padding:12px 20px}.viewer-info p{color:#666;font-size:14px;margin:0}.viewer-controls{color:#999;font-size:12px}.ifc-export-dialog-overlay{align-items:center;animation:fadeIn .2s ease-out;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.ifc-export-dialog-content{animation:slideUp .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000026;max-width:480px;width:90%}.ifc-export-dialog-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px}.ifc-export-dialog-header h3{color:#333;font-size:20px;font-weight:600;margin:0}.ifc-export-dialog-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;line-height:1;padding:4px;transition:all .2s ease;width:32px}.ifc-export-dialog-close:hover{background-color:#f5f5f5;color:#333}.ifc-export-dialog-body{padding:24px}.ifc-export-dialog-subtitle{color:#666;font-size:15px;margin:0 0 20px}.ifc-export-source-options{display:flex;flex-direction:column;gap:12px}.ifc-export-source-option{align-items:flex-start;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;padding:16px;transition:all .2s ease}.ifc-export-source-option:hover{background-color:#f8f9fa;border-color:#1976d2}.ifc-export-source-option.selected{background-color:#e3f2fd;border-color:#1976d2}.ifc-export-source-option input[type=radio]{flex-shrink:0;margin-right:12px;margin-top:2px}.ifc-export-source-info{display:flex;flex-direction:column;gap:4px}.ifc-export-source-label{color:#333;font-size:15px;font-weight:600}.ifc-export-source-description{color:#666;font-size:13px;line-height:1.4}.ifc-export-dialog-actions{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;padding:20px 24px}.ifc-export-dialog-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:10px 20px;transition:all .2s ease}.ifc-export-dialog-button.cancel-button{background-color:#f5f5f5;color:#333}.ifc-export-dialog-button.cancel-button:hover{background-color:#e0e0e0}.ifc-export-dialog-button.export-button{background-color:#1976d2;color:#fff}.ifc-export-dialog-button.export-button:hover{background-color:#1565c0}.ifc-export-dialog-button:active{transform:scale(.98)}@media (max-width:480px){.ifc-export-dialog-content{margin:10px;width:95%}.ifc-export-dialog-body{padding:20px}.ifc-export-source-option{padding:12px}}.dxf-export-dialog-overlay{align-items:center;animation:fadeIn .2s ease-out;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dxf-export-dialog-content{animation:slideUp .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000026;max-height:90vh;max-width:520px;overflow-y:auto;width:90%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.dxf-export-dialog-header{align-items:center;background:#fff;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px;position:sticky;top:0;z-index:1}.dxf-export-dialog-header h3{color:#333;font-size:20px;font-weight:600;margin:0}.dxf-export-dialog-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;line-height:1;padding:4px;transition:all .2s ease;width:32px}.dxf-export-dialog-close:hover{background-color:#f5f5f5;color:#333}.dxf-export-dialog-body{padding:24px}.dxf-export-section{margin-bottom:28px}.dxf-export-section:last-child{margin-bottom:0}.dxf-export-dialog-subtitle{color:#666;font-size:15px;font-weight:500;margin:0 0 16px}.dxf-export-mode-options,.dxf-export-source-options{display:flex;flex-direction:column;gap:12px}.dxf-export-mode-option,.dxf-export-source-option{align-items:flex-start;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;padding:16px;transition:all .2s ease}.dxf-export-mode-option:hover,.dxf-export-source-option:hover{background-color:#fff8f3;border-color:#ff9800}.dxf-export-mode-option.selected,.dxf-export-source-option.selected{background-color:#fff3e0;border-color:#ff9800}.dxf-export-mode-option input[type=radio],.dxf-export-source-option input[type=radio]{accent-color:#ff9800;flex-shrink:0;margin-right:12px;margin-top:2px}.dxf-export-mode-info,.dxf-export-source-info{display:flex;flex-direction:column;gap:4px}.dxf-export-mode-label,.dxf-export-source-label{color:#333;font-size:15px;font-weight:600}.dxf-export-mode-description,.dxf-export-source-description{color:#666;font-size:13px;line-height:1.4}.dxf-export-dialog-actions{background:#fff;border-top:1px solid #e0e0e0;bottom:0;display:flex;gap:12px;justify-content:flex-end;padding:20px 24px;position:sticky}.dxf-export-dialog-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:10px 20px;transition:all .2s ease}.dxf-export-dialog-button.cancel-button{background-color:#f5f5f5;color:#333}.dxf-export-dialog-button.cancel-button:hover{background-color:#e0e0e0}.dxf-export-dialog-button.export-button{background-color:#ff9800;color:#fff}.dxf-export-dialog-button.export-button:hover{background-color:#f57c00}.dxf-export-dialog-button:active{transform:scale(.98)}@media (max-width:480px){.dxf-export-dialog-content{margin:10px;max-height:85vh;width:95%}.dxf-export-dialog-body{padding:20px}.dxf-export-mode-option,.dxf-export-source-option{padding:12px}.dxf-export-section{margin-bottom:24px}}.beta-sticker{animation:subtlePulse 3s ease-in-out infinite;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px;box-shadow:0 2px 4px #00000026;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:10px;font-weight:700;letter-spacing:.5px;line-height:1;padding:2px 6px;pointer-events:none;position:absolute;transform-origin:center;z-index:10}.beta-sticker--small{border-radius:3px;font-size:9px;padding:2px 5px}.beta-sticker--medium{border-radius:4px;font-size:11px;padding:3px 7px}.beta-sticker--large{border-radius:5px;font-size:13px;padding:4px 9px}.beta-sticker--top-right{right:-8px;top:-8px}.beta-sticker--top-left{left:-8px;top:-8px}.beta-sticker--bottom-right{bottom:-8px;right:-8px}.beta-sticker--bottom-left{bottom:-8px;left:-8px}.beta-sticker--top-right-inside{right:8px;top:4px}.beta-sticker--top-left-inside{left:8px;top:4px}.beta-sticker--bottom-right-inside{bottom:4px;right:8px}.beta-sticker--bottom-left-inside{bottom:4px;left:8px}.beta-sticker--inline{margin-left:8px;top:auto;vertical-align:middle}.beta-sticker--inline,.beta-sticker--inline-superscript{bottom:auto;display:inline-block;left:auto;position:relative;right:auto}.beta-sticker--inline-superscript{font-size:8px!important;margin-left:-5px;padding:1px 4px!important;top:-8px;vertical-align:initial;z-index:1}.beta-sticker--minimal{animation:none;background:#6b7280;box-shadow:0 1px 3px #0000001f}.beta-sticker--bold{animation:boldPulse 2s ease-in-out infinite;background:linear-gradient(135deg,#f093fb,#f5576c);box-shadow:0 3px 6px #f5576c4d}@keyframes subtlePulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes boldPulse{0%,to{transform:scale(1) rotate(0deg)}25%{transform:scale(1.1) rotate(2deg)}75%{transform:scale(1.1) rotate(-2deg)}}.beta-sticker-container{display:inline-block;position:relative}.beta-sticker--ribbon{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:0;box-shadow:0 3px 6px #0003;color:#fff;font-size:10px;font-weight:700;letter-spacing:.5px;padding:4px 30px;position:absolute;right:-30px;top:6px;transform:rotate(45deg)}.modal-overlay{background-color:#00000080}.modal-content{box-shadow:0 4px 20px #00000026;display:flex;flex-direction:column;max-width:600px}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#333;font-size:20px;font-weight:600;margin:0}.modal-close{background:none;border-radius:4px;color:#666;font-size:28px;height:32px;padding:0;transition:background-color .2s;width:32px}.modal-close:hover{background-color:#f0f0f0}.modal-body{flex:1 1;overflow-y:auto;padding:24px}.generation-type-selector{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr;margin-bottom:24px}.type-button{background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;padding:20px;text-align:center;transition:all .2s}.type-button:hover{background-color:#f8fbff;border-color:#4a90e2}.type-button.active{background-color:#e8f4ff;border-color:#4a90e2}.type-icon{font-size:36px;margin-bottom:8px}.type-label{color:#333;font-size:16px;font-weight:600;margin-bottom:4px}.type-description{color:#666;font-size:13px;line-height:1.4}.scan-selection-section{margin-top:8px}.scan-selection-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.scan-selection-header h3{color:#333;font-size:16px;font-weight:600;margin:0}.select-buttons{display:flex;gap:8px}.deselect-all-button,.select-all-button{background:none;border:1px solid #ddd;border-radius:4px;color:#4a90e2;cursor:pointer;font-size:13px;padding:6px 12px;transition:all .2s}.deselect-all-button:hover,.select-all-button:hover{background-color:#f0f0f0;border-color:#4a90e2}.scan-list{border:1px solid #e0e0e0;border-radius:6px;max-height:300px;overflow-y:auto;padding:8px}.scan-checkbox-label{align-items:center;border-radius:4px;cursor:pointer;display:flex;padding:12px;transition:background-color .2s}.scan-checkbox-label:hover{background-color:#f8f8f8}.scan-checkbox-label input[type=checkbox]{cursor:pointer;height:18px;margin-right:12px;width:18px}.scan-info{display:flex;flex:1 1;flex-direction:column}.scan-name{color:#333;font-size:14px;font-weight:500;margin-bottom:2px}.scan-metadata{color:#999;font-size:12px}.selection-summary{color:#666;font-size:13px;margin-top:12px;text-align:right}.no-scans-message{color:#999;font-size:14px;padding:32px;text-align:center}.progress-section{background-color:#f8f8f8;border-radius:6px;margin-top:24px;padding:16px}.progress-bar-container{background-color:#e0e0e0;border-radius:4px;height:8px;margin-bottom:8px;overflow:hidden;width:100%}.progress-bar-fill{background-color:#4a90e2;height:100%;transition:width .3s ease}.progress-text{color:#4a90e2;font-weight:600;text-align:center}.modal-footer{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.cancel-button,.generate-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 24px;transition:all .2s}.cancel-button{background-color:#f0f0f0;color:#666}.cancel-button:hover:not(:disabled){background-color:#e0e0e0}.generate-button{background-color:#4a90e2;color:#fff}.generate-button:hover:not(:disabled){background-color:#3a7bc8}.cancel-button:disabled,.generate-button:disabled{cursor:not-allowed;opacity:.5}.bathroom-analyzer{margin:0 auto;max-width:1200px;padding:20px}.bathroom-analyzer h1{color:#333;margin-bottom:20px}.controls{background-color:#f5f5f5;border-radius:8px;margin-bottom:30px;padding:20px}.controls label{font-weight:700;margin-right:10px}.controls select{border:1px solid #ddd;border-radius:4px;font-size:16px;min-width:250px;padding:8px 12px}.loading{font-size:18px}.error{background-color:#fee;border-radius:4px;color:#c00;margin:20px 0;padding:15px}.results{margin-top:30px}.results h2{color:#444;margin-bottom:20px}.bathrooms-list{grid-gap:20px;display:grid;gap:20px}.bathroom-card{background-color:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.bathroom-card h3{color:#333;margin-bottom:10px;margin-top:0}.bathroom-card p{color:#666;margin:5px 0}.wall-endpoints{margin-top:20px}.wall-endpoints h4{color:#555;margin-bottom:10px}.wall-endpoints table{border-collapse:collapse;margin-top:10px;width:100%}.wall-endpoints td,.wall-endpoints th{border:1px solid #ddd;padding:8px;text-align:left}.wall-endpoints th{background-color:#f5f5f5;font-weight:700}.wall-endpoints tr:nth-child(2n){background-color:#f9f9f9}.bathroom-visualization{margin-top:30px;text-align:center}.bathroom-visualization h4{color:#555;margin-bottom:15px}.wall-svg{background-color:#fafafa;border:1px solid #ddd;border-radius:4px}.analysis-mode-toggle{background-color:#f5f5f5;border-radius:8px;margin:20px 0;padding:15px}.analysis-mode-toggle label{color:#333;display:block;font-weight:700;margin-bottom:10px}.toggle-buttons{display:flex;gap:10px}.toggle-btn{background-color:#fff;border:2px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:10px 20px;transition:all .3s ease}.toggle-btn:hover{background-color:#f0f0f0}.toggle-btn.active{background-color:#007bff;border-color:#007bff;color:#fff}.toggle-btn.active:hover{background-color:#0056b3}.section-container{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;margin:20px 0;padding:20px}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.section-title{color:#333;font-size:1.25rem;font-weight:600;margin:0}.btn{border:none;border-radius:5px;cursor:pointer;font-size:16px;padding:10px 20px;transition:all .3s ease}.btn-primary{background-color:#2196f3;color:#fff}.btn-primary:hover{background-color:#1976d2}.btn-success{background-color:#4caf50;color:#fff}.btn-success:hover{background-color:#45a049}.btn-danger{background-color:#f44336;color:#fff}.btn-danger:hover{background-color:#da190b}.btn-warning{background-color:#ff9800;color:#fff}.btn-warning:hover{background-color:#e68900}.btn-small{font-size:14px;padding:5px 15px}.btn-icon{background-color:#f0f0f0;border:1px solid #ddd;color:#333;padding:5px 10px}.fixture-list{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:15px}.fixture-item{background-color:#fff;border:1px solid #ced4da;border-radius:6px;gap:8px;padding:8px 12px}.fixture-icon,.fixture-item{align-items:center;display:flex}.fixture-icon{font-size:18px}.fixture-name{font-weight:500}.fixture-remove{background:none;border:none;color:#dc3545;cursor:pointer;font-size:18px;margin-left:4px;padding:0}.control-group,.fixture-remove{align-items:center;display:flex}.control-group{flex-wrap:wrap;gap:10px;margin:10px 0}.control-label{align-items:center;cursor:pointer;display:flex;margin-left:10px}.control-label input[type=checkbox]{margin-right:5px}.slider-control{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.slider-input{width:150px}.slider-value{text-align:right;width:50px}.status-badge{border-radius:4px;padding:5px 10px}.status-success{background-color:#e8f5e9;border:1px solid #4caf50;color:#2e7d32}.status-warning{background-color:#fff3cd;border:1px solid #ffc107;color:#856404}.status-error{background-color:#ffebee;border:1px solid #f44336;color:#c62828}.status-info{border:1px solid #bde0ee}.score-display,.status-info{background-color:#e8f4f8;color:#333}.score-display{border:1px solid #bde0ee;border-radius:4px;font-size:12px;padding:4px 8px}.score-breakdown{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:5px;font-size:12px;margin-top:10px;padding:10px}.score-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-top:10px}.score-item{color:#666;font-size:11px}.gallery-container{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.gallery-item{background-color:#fff;border:1px solid #ddd;border-radius:8px;cursor:pointer;padding:10px;position:relative;transition:all .2s}.gallery-item:hover{box-shadow:0 4px 8px #0000001a;transform:scale(1.02)}.gallery-item-filtered{background-color:#fff8e1;border:2px solid #ffc107}.gallery-badge{background-color:#ffc107;border-radius:3px;color:#fff;font-size:10px;font-weight:700;padding:2px 6px;position:absolute;right:5px;top:5px}.notification{border-radius:4px;font-size:14px;margin-top:10px;padding:10px}.notification-warning{background-color:#fff3cd;border:1px solid #ffc107;color:#856404}.notification-info{background-color:#f5f5f5;border:1px solid #ddd;color:#333}.notification-success{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.settings-panel{background-color:#f5f5f5;border-radius:8px;padding:15px}.settings-panel,.settings-section{margin-bottom:20px}.settings-section h4{color:#555;margin-bottom:10px}.settings-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.settings-help{color:#666;font-size:12px;margin-top:5px}.progress-container{margin-top:10px}.progress-bar{background-color:#e0e0e0;border-radius:10px;height:20px;overflow:hidden;width:100%}.progress-fill{background-color:#2196f3;height:100%;transition:width .3s ease}.progress-text{color:#666;font-size:14px;margin-top:5px}.text-center{text-align:center}.text-small{font-size:12px}.text-muted{color:#666}.text-bold{font-weight:700}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-10{margin-bottom:10px}.mb-20{margin-bottom:20px}.p-10{padding:10px}.p-20{padding:20px}.gap-10{gap:10px}.flex-wrap{flex-wrap:wrap}.flex-center{justify-content:center}.flex-between,.flex-center{align-items:center;display:flex}.flex-between{justify-content:space-between}.style-preference-modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.style-preference-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;max-width:800px;width:90%}.style-preference-modal .modal-header{border-bottom:1px solid #e5e7eb;flex-shrink:0;padding:24px}.style-preference-modal .modal-header h2{color:#111827;font-size:24px;margin:0 0 8px}.style-preference-modal .modal-header p{color:#6b7280;font-size:14px;margin:0}.style-preference-modal .modal-content{flex:1 1;overflow-y:auto;padding:24px}.preference-section{margin-bottom:32px}.preference-section:last-child{margin-bottom:0}.preference-section h3{color:#374151;font-size:18px;font-weight:600;margin:0 0 16px}.options-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.option-button{align-items:center;background:#fff;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:16px;transition:all .2s}.option-button:hover{background:#eff6ff;border-color:#3b82f6}.option-button.selected{background:#3b82f6;border-color:#3b82f6;color:#fff}.option-icon{font-size:32px}.option-label{font-size:14px;font-weight:500;text-align:center}.style-preference-modal .modal-footer{background:#fff;border-top:1px solid #e5e7eb;display:flex;flex-shrink:0;gap:12px;justify-content:flex-end;padding:16px 24px}.style-preference-modal .btn{border-radius:6px;cursor:pointer;font-weight:500;padding:10px 24px;transition:all .2s}.style-preference-modal .btn-secondary{background:#f3f4f6;border:none;color:#374151}.style-preference-modal .btn-secondary:hover{background:#e5e7eb}.style-preference-modal .btn-primary{background:#3b82f6;border:none;color:#fff}.style-preference-modal .btn-primary:hover{background:#2563eb}.style-preference-modal .btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.shower-debug-page{background:#f1f5f9;min-height:100vh}.page-header{align-items:center;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 24px;position:sticky;top:0;z-index:100}.page-header h1{color:#1e293b;font-size:24px;font-weight:600;margin:0}.back-btn{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;color:#475569;cursor:pointer;font-size:14px;padding:8px 16px}.back-btn:hover{background:#e2e8f0}.page-content{margin:0 auto;max-width:1600px;padding:24px}.debug-layout{grid-gap:20px;display:grid;gap:20px;grid-template-columns:320px 1fr;grid-template-rows:auto auto}.access-denied,.loading{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:60vh;text-align:center}.access-denied h2{color:#dc2626;margin-bottom:8px}.access-denied button{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;margin-top:16px;padding:10px 20px}.panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:20px}.panel h2{border-bottom:1px solid #e2e8f0;color:#1e293b;font-size:18px;font-weight:600;margin:0 0 16px;padding-bottom:12px}.test-cases-panel{grid-column:1;grid-row:1/span 2;max-height:calc(100vh - 150px);overflow-y:auto}.control-group{margin-bottom:20px}.control-group label{color:#64748b;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.button-group{display:flex;flex-wrap:wrap;gap:6px}.button-group button{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#475569;cursor:pointer;font-size:13px;padding:8px 12px;transition:all .15s ease}.button-group button:hover{background:#e2e8f0;border-color:#cbd5e1}.button-group button.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.size-buttons{grid-gap:6px;display:grid;gap:6px;grid-template-columns:repeat(3,1fr)}.size-buttons button{padding:10px 8px;text-align:center}.render-mode-toggle{background:#f1f5f9;border-radius:8px;display:flex;gap:0;padding:4px}.render-mode-toggle button{background:#0000;border:none;border-radius:6px;flex:1 1}.render-mode-toggle button.active{background:#fff;box-shadow:0 1px 3px #0000001a}.glb-select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:14px;padding:10px 12px;width:100%}.glb-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.glb-info{color:#64748b;margin-top:6px}.loading-models,.no-models{background:#f8fafc;border-radius:6px;color:#64748b;font-size:13px;padding:12px;text-align:center}.no-models{color:#94a3b8}.mode-badge{border-radius:4px;font-size:12px;font-weight:600;padding:2px 8px}.mode-badge.procedural{background:#dbeafe;color:#1d4ed8}.mode-badge.glb{background:#dcfce7;color:#15803d}.loading-indicator{animation:pulse 1.5s ease-in-out infinite;color:#f59e0b;font-size:14px;font-weight:400}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.position-grid{grid-gap:6px;display:grid;gap:6px;grid-template-columns:1fr 1fr}.position-grid button{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#475569;cursor:pointer;font-size:12px;padding:10px 8px}.position-grid button:hover{background:#e2e8f0}.position-grid button.active{background:#3b82f6;border-color:#3b82f6;color:#fff}.current-config{background:#f8fafc;border-radius:8px;margin-top:20px;padding:16px}.current-config h3{color:#64748b;font-size:13px;font-weight:600;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.config-row{border-bottom:1px solid #e2e8f0;display:flex;font-size:13px;justify-content:space-between;padding:6px 0}.config-row:last-child{border-bottom:none}.config-row span:first-child{color:#64748b}.config-row span:last-child{color:#1e293b;font-family:monospace}.viewer-panel{grid-column:2;grid-row:1}.camera-controls{display:flex;gap:8px;margin-top:12px}.camera-controls button{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#475569;cursor:pointer;font-size:13px;padding:8px 16px;transition:all .15s ease}.camera-controls button:hover{background:#e2e8f0;border-color:#cbd5e1}.canvas-container{background:#f5f5f5;border-radius:8px;height:500px;overflow:hidden;width:100%}.canvas-container canvas{height:100%!important;width:100%!important}.viewer-info{color:#64748b;display:flex;font-size:12px;justify-content:space-between;margin-top:12px}.test-matrix{grid-column:2;grid-row:2}.matrix-info{color:#64748b;font-size:13px;margin:0 0 12px}.matrix-scroll{overflow-x:auto}.test-matrix table{border-collapse:collapse;font-size:13px;width:100%}.test-matrix td,.test-matrix th{border:1px solid #e2e8f0;padding:8px 12px;text-align:center}.test-matrix th{color:#475569}.size-cell,.test-matrix th{background:#f8fafc;font-weight:600}.type-cell{color:#64748b;font-size:11px}.matrix-cell{cursor:pointer;transition:background .15s ease}.matrix-cell:hover{background:#e2e8f0}.matrix-cell.active{background:#dcfce7}.cell-preview{color:#94a3b8;font-size:16px}.matrix-cell.active .cell-preview{color:#22c55e}.handedness-comparison{grid-column:1/-1;grid-row:3}.comparison-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(2,1fr)}.comparison-card{border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;padding:20px;text-align:center;transition:all .2s ease}.comparison-card:hover{background:#f8fafc;border-color:#94a3b8}.comparison-card.active{background:#eff6ff;border-color:#3b82f6}.comparison-card h3{color:#1e293b;font-size:16px;font-weight:600;margin:0 0 16px}.comparison-diagram{display:flex;justify-content:center;margin-bottom:12px}.comparison-card p{color:#64748b;font-size:13px;margin:0}.test-cases-panel h2{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.run-tests-btn{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:background .15s ease}.run-tests-btn:hover{background:#2563eb}.run-tests-btn:disabled{background:#94a3b8;cursor:not-allowed}.test-results-summary{align-items:center;background:#f8fafc;border-radius:8px;display:flex;gap:16px;margin-bottom:16px;padding:12px 16px}.results-passed{color:#16a34a;font-weight:600}.results-failed{color:#dc2626;font-weight:600}.results-total{color:#64748b}.test-cases-list{display:flex;flex-direction:column;gap:8px}.test-case-item{border:2px solid #e2e8f0;border-radius:8px;cursor:pointer;padding:12px;transition:all .15s ease}.test-case-item:hover{background:#f8fafc;border-color:#94a3b8}.test-case-item.selected{background:#eff6ff;border-color:#3b82f6}.test-case-item.passed{border-left:4px solid #16a34a}.test-case-item.failed{border-left:4px solid #dc2626}.test-case-header{align-items:center;display:flex;gap:8px;margin-bottom:4px}.test-case-status{font-size:16px;font-weight:600}.test-case-item.passed .test-case-status{color:#16a34a}.test-case-item.failed .test-case-status{color:#dc2626}.test-case-name{color:#1e293b;font-size:13px;font-weight:600}.test-case-description{color:#64748b;font-size:12px;margin-bottom:8px}.test-case-input{display:flex;flex-wrap:wrap;gap:8px}.test-case-input span{background:#e2e8f0;border-radius:4px;color:#475569;font-size:11px;padding:2px 6px}.test-details-panel{grid-column:2;grid-row:2}.test-details-panel h2{align-items:center;display:flex;gap:12px}.test-badge{border-radius:4px;font-size:12px;font-weight:700;padding:4px 12px;text-transform:uppercase}.test-badge.passed{background:#dcfce7;color:#16a34a}.test-badge.failed{background:#fee2e2;color:#dc2626}.test-details-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.details-section{background:#f8fafc;border-radius:8px;padding:16px}.details-section h3{color:#475569;font-size:14px;font-weight:600;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.details-table{font-size:13px;width:100%}.details-table td{padding:6px 0}.details-table td:first-child{color:#64748b;width:40%}.details-table td:last-child{color:#1e293b;font-weight:500}.checks-list{display:flex;flex-direction:column;gap:8px}.check-item{align-items:flex-start;background:#fff;border-radius:6px;display:flex;font-size:13px;gap:8px;padding:8px}.check-item.passed{border-left:3px solid #16a34a}.check-item.failed{border-left:3px solid #dc2626}.check-status{font-size:14px;font-weight:600}.check-item.passed .check-status{color:#16a34a}.check-item.failed .check-status{color:#dc2626}.check-name{color:#1e293b;font-weight:600;min-width:80px}.check-values{display:flex;flex-direction:column;font-size:12px;gap:2px}.check-values .expected{color:#64748b}.check-values .actual{color:#1e293b}.check-item.failed .check-values .actual{color:#dc2626;font-weight:600}.corners-section{grid-column:1/-1}.corners-diagram{display:flex;justify-content:center;margin-bottom:16px}.corners-diagram svg{background:#fff;border:1px solid #e2e8f0;border-radius:8px}.corners-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.corner-item{background:#fff;border:1px solid #e2e8f0;border-radius:6px;font-size:12px;gap:8px;padding:6px 12px}.corner-item,.corner-num{align-items:center;display:flex}.corner-num{background:#3b82f6;border-radius:50%;color:#fff;font-size:11px;font-weight:600;height:20px;justify-content:center;width:20px}.corner-item:first-child .corner-num{background:#16a34a}.corner-coords{color:#475569;font-family:monospace}@media (max-width:1024px){.debug-layout{grid-template-columns:1fr}.test-cases-panel{grid-column:1;grid-row:1;max-height:400px}.viewer-panel{grid-column:1;grid-row:2}.test-details-panel{grid-column:1;grid-row:3}}@media (max-width:768px){.page-content{padding:16px}.canvas-container{height:350px}.test-details-grid{grid-template-columns:1fr}.check-item{flex-direction:column}.check-values{margin-left:24px}.camera-controls{flex-wrap:wrap}}.add-elements-container{bottom:20px;position:fixed;right:20px;z-index:1000}.add-elements-container.ios-webview{bottom:30px;right:30px}.add-elements-container.ios-webview .add-button{height:64px;width:64px}.add-elements-container.ios-webview .add-icon-text{align-items:center!important;display:flex!important;font-size:40px!important;justify-content:center!important;line-height:1!important;margin-left:1px!important;margin-top:-6px!important}.add-elements-container.ios-webview .elements-panel{bottom:37px;right:100px}.add-elements-container.ios-webview .category-menu{bottom:78px}.add-button{align-items:center;background:#3b82f6;border:none;border-radius:50%;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;cursor:pointer;display:flex;height:56px;justify-content:center;position:relative;transition:all .3s ease;width:56px;z-index:1002}.add-button:hover{background:#2563eb;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transform:scale(1.05)}.add-button:active{transform:scale(.95)}.add-button.close-mode{background:#ef4444}.add-button.close-mode:hover{background:#dc2626}.add-icon{color:#fff;display:block!important;transition:transform .3s ease}.add-button svg.add-icon,.add-icon{height:36px!important;min-height:36px!important;min-width:36px!important;width:36px!important}.add-button .add-icon line{stroke-width:4!important;stroke:#fff!important;stroke-linecap:round!important}.category-menu{animation:fadeInUp .3s ease;bottom:70px;display:flex;flex-direction:column;gap:10px;position:absolute;right:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.category-button{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:28px;box-shadow:0 2px 4px #0000001a;cursor:pointer;display:flex;gap:8px;min-width:120px;padding:8px 16px;transition:all .2s ease;white-space:nowrap}.category-button:hover{background:#f9fafb;border-color:#3b82f6;box-shadow:0 4px 6px #0000001a;transform:translateX(-5px)}.category-icon{align-items:center;color:#6b7280;display:flex;height:20px;justify-content:center;width:20px}.category-button:hover .category-icon{color:#3b82f6}.category-label{color:#374151;font-size:14px;font-weight:500}.elements-panel{align-items:center;animation:slideInLeft .3s ease;bottom:20px;display:flex;gap:4px;left:auto;max-width:calc(100vw - 120px);overflow:visible;position:fixed;right:82px;z-index:1001}@keyframes slideInLeft{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.elements-row{align-items:center;display:flex;gap:4px;margin:-8px 0;overflow-x:auto;overflow-y:visible;padding:8px 4px;scrollbar-color:#e5e7eb #0000;scrollbar-width:thin}.elements-row::-webkit-scrollbar{height:6px}.elements-row::-webkit-scrollbar-track{background:#0000}.elements-row::-webkit-scrollbar-thumb{background-color:#e5e7eb;border-radius:3px}.elements-row::-webkit-scrollbar-thumb:hover{background-color:#d1d5db}.element-item{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff2;border:2px solid #e5e7eb;border-radius:50%;box-shadow:0 2px 4px #00000026;flex-direction:column;flex-shrink:0;height:56px;justify-content:center;padding:6px;width:56px}.element-item:hover{background:#f9fafbfa;box-shadow:0 4px 6px #0003;transform:translateY(-2px) scale(1.05)}.element-item.fixture-bathroom{border-color:#93c5fd}.element-item.fixture-bathroom:hover{background:#eff6ff;border-color:#3b82f6}.element-item.fixture-bathroom .element-icon{color:#3b82f6}.element-item.fixture-kitchen{border-color:#fed7aa}.element-item.fixture-kitchen:hover{background:#fff7ed;border-color:#f97316}.element-item.fixture-kitchen .element-icon{color:#f97316}.element-item.fixture-other{border-color:#bbf7d0}.element-item.fixture-other:hover{background:#f0fdf4;border-color:#22c55e}.element-item.fixture-other .element-icon{color:#22c55e}.element-item:active{transform:translateY(0)}.element-item.selected{background:#eff6fffa;border-color:#3b82f6;border-width:3px}.element-item.selected.element-structure{background:#f3f4fffa;border-color:#8b5cf6}.element-item.selected.element-furniture{background:#fef2f2fa;border-color:#ef4444}.element-item.selected.fixture-bathroom{background:#eff6fffa;border-color:#2563eb}.element-item.selected.fixture-kitchen{background:#fff7edfa;border-color:#ea580c}.element-item.selected.fixture-other{background:#f0fdf4fa;border-color:#16a34a}.element-icon{align-items:center;color:#6b7280;display:flex;height:20px;justify-content:center;margin-bottom:2px;width:20px}.element-item:hover .element-icon{color:#3b82f6}.element-icon svg{height:100%;width:100%}.element-name{color:#374151;font-size:8px;line-height:1.1;max-width:46px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}@media (max-width:768px){.add-elements-container{bottom:10px;right:10px}.add-button{height:48px;width:48px}.category-menu{bottom:60px}.elements-panel{bottom:10px;max-width:calc(100vw - 90px);right:60px}.element-item{height:48px;width:48px}.element-icon{height:18px;width:18px}.element-name{font-size:9px}}@media (max-width:768px) and (orientation:landscape){.elements-panel{bottom:5px}.category-menu{bottom:auto;flex-direction:row;gap:8px;right:70px}.category-button{min-width:auto;padding:6px 12px}}.layouts-modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2100}.layouts-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;max-width:800px;overflow:hidden;width:90%}.layouts-modal-header{align-items:center;background-color:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:16px 20px}.layouts-modal-header h3{color:#111827;font-size:18px;font-weight:600;margin:0}.layouts-modal-close{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;transition:background-color .2s,color .2s;width:32px}.layouts-modal-close:hover{background-color:#f3f4f6;color:#111827}.layouts-modal-content{flex:1 1;overflow-y:auto;padding:20px}.layouts-modal-empty,.layouts-modal-error,.layouts-modal-generating,.layouts-modal-loading{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.layouts-modal-generating .loading-spinner,.layouts-modal-loading .loading-spinner{animation:spin 1s linear infinite;border:3px solid #e5e7eb;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}.layouts-modal-empty p,.layouts-modal-error p,.layouts-modal-generating p,.layouts-modal-loading p{color:#6b7280;font-size:14px;margin:0}.progress-text{color:#9ca3af!important;font-size:12px!important;margin-top:8px!important}.layouts-modal-error p{color:#dc2626}.generate-button,.retry-button{background-color:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;margin-top:16px;padding:10px 20px;transition:background-color .2s}.generate-button:hover,.retry-button:hover{background-color:#2563eb}.layouts-count{color:#6b7280;font-size:13px;margin-bottom:16px;text-align:center}.layouts-pagination{align-items:center;background-color:#f3f4f6;border-radius:8px;display:flex;gap:16px;justify-content:center;margin-bottom:16px;padding:10px 16px}.pagination-btn{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:all .2s}.pagination-btn:hover:not(:disabled){background-color:#f9fafb;border-color:#3b82f6;color:#3b82f6}.pagination-btn:disabled{opacity:.4}.pagination-info{color:#4b5563;font-size:13px}.layouts-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}@media (max-width:700px){.layouts-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.layouts-grid{grid-template-columns:1fr}}.layout-card{background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;padding:12px;position:relative;transition:all .2s ease}.layout-card:hover{background:#f0f9ff;border-color:#3b82f6}.layout-card.selected{background:#eff6ff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.layout-rank{background:#3b82f6;border-radius:10px;color:#fff;font-size:11px;font-weight:600;left:8px;padding:2px 8px;pointer-events:none;position:absolute;top:8px;z-index:1}.layout-preview-container{align-items:center;display:flex;justify-content:center;margin-bottom:8px;min-height:140px;pointer-events:none}.layout-preview-container svg{height:auto;max-width:100%;pointer-events:none}.layout-score{background:#e8f4f8;border-radius:4px;color:#374151;font-size:12px;font-weight:600;padding:6px;pointer-events:none;text-align:center}.layouts-modal-actions{border-top:1px solid #e5e7eb;display:flex;justify-content:center;margin-top:20px;padding-top:16px}.apply-button{background-color:#10b981;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 32px;transition:background-color .2s,opacity .2s}.apply-button:hover:not(:disabled){background-color:#059669}.apply-button:disabled{cursor:not-allowed;opacity:.5}.shower-debug-tool{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;left:50%;max-height:90vh;max-width:600px;overflow-y:auto;position:fixed;top:50%;transform:translate(-50%,-50%);width:95%;z-index:10001}.debug-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e5e7eb;border-radius:12px 12px 0 0;display:flex;justify-content:space-between;padding:16px 20px;position:sticky;top:0}.debug-header h3{color:#1e293b;font-size:18px;font-weight:600;margin:0}.close-btn{align-items:center;background:none;border:none;border-radius:6px;color:#64748b;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;width:32px}.close-btn:hover{background:#e2e8f0;color:#1e293b}.debug-content{padding:20px}.debug-error,.debug-loading,.no-showers{color:#64748b;padding:40px;text-align:center}.debug-error{color:#dc2626}.shower-selector{margin-bottom:20px}.shower-selector label{color:#374151;display:block;font-weight:600;margin-bottom:8px}.shower-selector select{background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:14px;padding:10px 12px;width:100%}.section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:24px;padding:16px}.section h4{color:#475569;font-size:14px;font-weight:600;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.value-grid{display:flex;flex-direction:column;gap:8px}.value-item{display:flex;font-size:13px;gap:8px}.value-item .label{color:#64748b;font-weight:600;min-width:100px}.value-item .value{color:#1e293b;font-family:monospace;word-break:break-all}.control-group{margin-bottom:12px}.control-group label{color:#475569;display:block;font-size:13px;font-weight:500;margin-bottom:4px}.control-group input{border:1px solid #d1d5db;border-radius:4px;font-family:monospace;font-size:14px;padding:8px 10px;width:150px}.control-group .helper{color:#64748b;font-size:12px;margin-left:10px}.quick-rotate{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.quick-rotate button{background:#e0f2fe;border:1px solid #7dd3fc;border-radius:4px;color:#0369a1;cursor:pointer;font-size:12px;font-weight:500;padding:6px 12px}.quick-rotate button:hover{background:#bae6fd}.swap-btn{background:#fef3c7;border:1px solid #fcd34d;border-radius:4px;color:#92400e;cursor:pointer;font-size:13px;font-weight:500;margin-bottom:16px;padding:8px 16px}.swap-btn:hover{background:#fde68a}.wall-info .walls-list{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.wall-item{background:#fff;border:1px solid #e2e8f0;border-radius:6px;font-size:11px;padding:10px}.wall-item strong{color:#1e293b;display:block;margin-bottom:4px}.wall-item.parent-wall{background:#eff6ff;border-color:#3b82f6}.parent-badge{background:#3b82f6;border-radius:3px;color:#fff;display:inline-block;font-size:9px;font-weight:600;margin-left:6px;padding:2px 6px}.actions{border-top:1px solid #e2e8f0;display:flex;gap:12px;margin-top:20px;padding-top:16px}.save-btn{background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px 20px}.save-btn:hover:not(:disabled){background:#059669}.save-btn:disabled{cursor:not-allowed;opacity:.6}.reset-btn{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;color:#475569;cursor:pointer;font-size:14px;font-weight:500;padding:12px 20px}.reset-btn:hover{background:#e2e8f0}.schedule-modal-overlay,.shower-debug-overlay{background:#00000080;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000}.schedule-modal-overlay{align-items:center;display:flex;justify-content:center}.schedule-modal-content{animation:slideIn .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:80vh;max-width:1200px;width:90%}.schedule-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;flex-shrink:0;justify-content:space-between;padding:24px}.schedule-modal-header h2{color:#111827;font-size:24px;font-weight:600;margin:0}.schedule-modal-actions{align-items:center;display:flex;gap:12px}.schedule-export-button{align-items:center;background-color:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:6px;padding:8px 16px;transition:all .2s}.schedule-export-button:hover:not(:disabled){background-color:#2563eb}.schedule-export-button:disabled{background-color:#9ca3af;cursor:not-allowed;opacity:.7}.schedule-modal-close{align-items:center;background:none;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;font-size:32px;height:40px;justify-content:center;padding:0;transition:all .2s;width:40px}.schedule-modal-close:hover{background:#f3f4f6;color:#111827}.schedule-modal-body{flex:1 1;overflow-y:auto;padding:24px}.schedule-section{margin-bottom:32px}.schedule-section:last-child{margin-bottom:0}.schedule-section h3{color:#374151;font-size:18px;font-weight:600;margin:0 0 16px}.schedule-table-wrapper{border:1px solid #e5e7eb;border-radius:8px;overflow-x:auto}.schedule-table{border-collapse:collapse;font-size:14px;width:100%}.schedule-table thead{background:#f9fafb}.schedule-table th{border-bottom:1px solid #e5e7eb;color:#374151;font-weight:600;padding:12px 16px;text-align:left;white-space:nowrap}.schedule-table tbody tr{border-bottom:1px solid #f3f4f6;transition:background .15s}.schedule-table tbody tr:hover{background:#f9fafb}.schedule-table tbody tr:last-child{border-bottom:none}.schedule-table td{color:#374151;padding:12px 16px}.schedule-id{color:#6b7280;font-family:Courier New,monospace;font-size:13px;font-weight:500}.schedule-empty{color:#6b7280;font-style:italic;margin:0;padding:20px;text-align:center}@media (max-width:768px){.schedule-modal-content{border-radius:8px;max-height:90vh;width:95%}.schedule-modal-body,.schedule-modal-header{padding:16px}.schedule-table{font-size:12px}.schedule-table td,.schedule-table th{padding:8px 12px}}.uv-floor-plan-page{bottom:0;height:100%;left:0;overflow:hidden;position:fixed;right:0;top:0;width:100%}.floor-plan-header{align-items:center;display:flex;left:0;padding:1.5rem 2rem;position:absolute;top:0;z-index:1001}.floor-plan-header .header-left{align-items:center;display:flex;gap:1rem}.floor-plan-header .header-logo{cursor:pointer;height:48px;margin-bottom:.5rem;margin-top:.5rem;transition:transform .2s ease;width:48px}.floor-plan-header .header-logo:hover{transform:scale(1.05)}.back-button{background-color:#007bff;font-size:14px}.back-button:hover{background-color:#0056b3}.floor-plan-header h2{background-color:#ffffffe6;border-radius:8px;box-shadow:0 2px 4px #0000001a;color:#333;font-size:1.5rem;margin:0;padding:.5rem 1rem}.floor-plan-viewer-container{contain:layout style;height:100%;position:relative;width:100%}.uv-floor-plan-page .top-right-control-panel{pointer-events:none;position:absolute;right:20px;top:80px;z-index:1000}.uv-floor-plan-page .top-right-control-panel>*{pointer-events:auto}.uv-floor-plan-error{align-items:center;display:flex;flex-direction:column;height:100vh;justify-content:center;text-align:center}.uv-floor-plan-error h2{color:#dc3545;margin-bottom:1rem}.uv-floor-plan-error button{background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:1rem;padding:.5rem 1rem}.uv-floor-plan-error button:hover{background-color:#0056b3}@media (max-width:768px){.floor-plan-header .structure-name{display:none}}.elevations-viewer-page{background:linear-gradient(135deg,#f5f5f5,#e0e0e0);height:100vh;height:calc(100vh - env(safe-area-inset-bottom));overflow:hidden;position:relative;width:100vw}.elevations-viewer-container{height:100%;max-height:calc(100% - env(safe-area-inset-bottom));position:relative;width:100%}.error-page{align-items:center;display:flex;justify-content:center}.error-container{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;max-width:400px;padding:2rem;text-align:center}.error-container h2{color:#d32f2f;margin-bottom:1rem}.error-container p{color:#666;margin-bottom:1.5rem}.back-button{background:#1976d2;border:none;border-radius:4px;color:#fff;font-size:1rem;padding:.75rem 1.5rem;transition:background .3s ease}.back-button:hover{background:#1565c0}.elevations-viewer-page:fullscreen{height:100vh;width:100vw}:root{--react-pdf-annotation-layer:1;--annotation-unfocused-field-background:url('data:image/svg+xml;charset=utf-8,<svg width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="fill:rgba(0,54,255,.13)"/></svg>');--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:#0000;--input-disabled-border-color:#0000;--input-hover-border-color:#000;--link-outline:none}@media screen and (forced-colors:active){:root{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{left:0;pointer-events:none;position:absolute;top:0;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translateX(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{height:100%;position:absolute;width:100%}.annotationLayer section{box-sizing:border-box;margin:0;pointer-events:auto;position:absolute;text-align:left;text-align:initial;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:none;outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{font-size:1em;height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{background:#ff0;box-shadow:0 2px 10px #ff0;opacity:.2}.annotationLayer .textAnnotation img{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input,.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .textWidgetAnnotation :is(input,textarea){background-image:url('data:image/svg+xml;charset=utf-8,<svg width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="fill:rgba(0,54,255,.13)"/></svg>');background-image:var(--annotation-unfocused-field-background);border:2px solid #0000;border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px*var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled]{background:none;border:2px solid #0000;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border:2px solid #000;border:2px solid var(--input-hover-border-color)}.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border-radius:2px}.annotationLayer .choiceWidgetAnnotation select:focus,.annotationLayer .textWidgetAnnotation :is(input,textarea):focus{background:none;border:2px solid Highlight;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-color:initial;background-image:none}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid Highlight;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid Highlight;border:2px solid var(--input-focus-border-color);outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{font-size:calc(9px*var(--total-scale-factor));min-width:calc(180px*var(--total-scale-factor));pointer-events:none;position:absolute;width:100%}.annotationLayer .popup{word-wrap:break-word;background-color:#ff9;border-radius:calc(2px*var(--total-scale-factor));box-shadow:0 calc(2px*var(--total-scale-factor)) calc(5px*var(--total-scale-factor)) #888;cursor:pointer;font:message-box;margin-left:calc(5px*var(--total-scale-factor));max-width:calc(180px*var(--total-scale-factor));padding:calc(6px*var(--total-scale-factor));pointer-events:auto;position:absolute;white-space:normal}.annotationLayer .popup>*{font-size:calc(9px*var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px*var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid #333;margin-top:calc(2px*var(--total-scale-factor));padding-top:calc(2px*var(--total-scale-factor))}.annotationLayer .richText>*{font-size:calc(9px*var(--total-scale-factor));white-space:pre-wrap}.annotationLayer .caretAnnotation,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .fileAttachmentAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .highlightAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .lineAnnotation svg line,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .squareAnnotation svg rect,.annotationLayer .squigglyAnnotation,.annotationLayer .stampAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .underlineAnnotation{cursor:pointer}.annotationLayer section svg{height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer .annotationTextContent{color:#0000;height:100%;opacity:0;pointer-events:none;position:absolute;-webkit-user-select:none;user-select:none;width:100%}.annotationLayer .annotationTextContent span{display:inline-block;width:100%}:root{--react-pdf-text-layer:1;--highlight-bg-color:#b400aa;--highlight-selected-bg-color:#006400}@media screen and (forced-colors:active){:root{--highlight-bg-color:Highlight;--highlight-selected-bg-color:ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translateX(-100%)}.textLayer{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;inset:0;line-height:1;overflow:hidden;position:absolute;text-align:left;text-align:initial;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:#0000;cursor:text;margin:0;position:absolute;transform-origin:0 0;white-space:pre}.textLayer span.markedContent{height:0;top:0}.textLayer .highlight{background-color:#b400aa;background-color:var(--highlight-bg-color);border-radius:4px;margin:-1px;padding:1px}.textLayer .highlight.appended{position:static}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:#006400;background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:#0000}.textLayer .endOfContent{cursor:default;display:block;inset:100% 0 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:-1}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{display:none;height:0;left:0;position:absolute;top:0;width:0}.cd-editor-container{background:#4b4c3a;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Arial,sans-serif;height:100vh;overflow:hidden;-webkit-user-select:none;user-select:none}.cd-editor-header{background-color:#4b4c3af2;border-bottom:1px solid #f3e9d233;justify-content:space-between;padding:1rem 2rem}.cd-editor-header,.header-left{align-items:center;display:flex}.header-left{gap:1.5rem}.back-button{background:#0000;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:all .2s ease}.back-button:hover{background:#baa5944d;border-color:#f3e9d280}.cd-editor-header h1{color:#f3e9d2;font-size:1.25rem;font-weight:400;margin:0}.doc-name{color:#f3e9d2b3;font-size:.875rem;font-style:italic}.header-actions{display:flex;gap:1rem}.export-button,.save-button{background:#baa5944d;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;margin-left:.5rem;padding:.5rem 1.5rem;transition:all .2s ease}.export-button:hover,.save-button:hover{background:#baa59480;border-color:#f3e9d280}.export-button{background:#72945f4d;border-color:#72945f4d}.export-button:hover{background:#72945f80;border-color:#72945f80}.cd-editor-main{display:flex;flex:1 1;overflow:hidden}.cd-editor-sidebar{background:#4b4c3a80;border-right:1px solid #f3e9d233;flex-shrink:0;overflow-y:auto;padding:1.5rem;width:300px}.sidebar-section{margin-bottom:2rem}.sidebar-section h3{color:#f3e9d2;font-size:.875rem;font-weight:500;letter-spacing:.5px;margin-bottom:1rem;text-transform:uppercase}.upload-button{background:#baa5944d;border:2px dashed #f3e9d24d;border-radius:8px;color:#f3e9d2;cursor:pointer;display:block;padding:.75rem;text-align:center;transition:all .2s ease;width:100%}.upload-button:hover{background:#baa59466;border-color:#f3e9d280}.upload-button span{font-size:.875rem}.project-documents-list{display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto}.project-document-item{align-items:flex-start;background:#baa59433;border:1px solid #f3e9d233;border-radius:6px;color:#f3e9d2;cursor:pointer;display:flex;flex-direction:column;gap:.25rem;padding:.75rem;text-align:left;transition:all .2s ease;width:100%}.project-document-item:hover{background:#baa5944d;border-color:#f3e9d266}.doc-type-badge{background:#baa5944d;border-radius:3px;color:#f3e9d2e6;font-size:.75rem;font-weight:600;letter-spacing:.5px;padding:.125rem .375rem;text-transform:uppercase}.doc-name{color:#f3e9d2cc;font-size:.813rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.elements-list{display:flex;flex-direction:column;gap:.5rem}.element-item{align-items:center;background:#baa59433;border:1px solid #0000;border-radius:6px;color:#f3e9d2;cursor:pointer;display:flex;font-size:.875rem;justify-content:space-between;padding:.5rem .75rem;transition:all .2s ease}.element-item:hover{background:#baa5944d}.element-item.selected{background:#baa59466;border-color:#f3e9d280}.delete-btn{align-items:center;background:#0000;border:none;color:#f3e9d2b3;cursor:pointer;display:flex;font-size:1.25rem;height:20px;justify-content:center;padding:0;transition:color .2s ease;width:20px}.delete-btn:hover{color:#ff6b6b}.controls{gap:1rem}.controls,.controls label{display:flex;flex-direction:column}.controls label{color:#f3e9d2;font-size:.875rem;gap:.5rem}.controls input[type=range]{width:100%}.controls button{background:#baa5944d;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;padding:.5rem;transition:all .2s ease}.controls button:hover{background:#baa59466}.page-controls{align-items:center;display:flex;gap:.5rem;justify-content:space-between}.page-controls button{background:#baa5944d;border:1px solid #f3e9d24d;border-radius:4px;color:#f3e9d2;cursor:pointer;font-size:.75rem;padding:.25rem .5rem;transition:all .2s ease}.page-controls button:hover:not(:disabled){background:#baa59466}.page-controls button:disabled{cursor:not-allowed;opacity:.5}.page-controls span{color:#f3e9d2;font-size:.875rem}.cd-editor-canvas{background:#1e1e1980;flex:1 1;overflow:auto;padding:2rem;position:relative}.pdf-container{background:#fff;box-shadow:0 4px 24px #0000004d;display:inline-block;min-width:min-content;position:relative}.pdf-container.multi-page-view{align-items:center;background:#f5f5f5!important;box-shadow:none!important;display:flex;flex-direction:column;gap:3rem;padding:3rem 2rem}.pdf-page-wrapper{background:#fff;border:1px solid #ddd;box-shadow:0 4px 16px #00000026;margin-bottom:2rem}.elements-overlay{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.placed-element{border:2px solid #0000;cursor:move;pointer-events:all;position:absolute;transition:border-color .2s ease}.placed-element:hover{border-color:#baa59480}.placed-element.selected{border-color:#baa594;box-shadow:0 0 0 1px #baa5944d}.element-placeholder{align-items:center;background:#baa5941a;border:1px dashed #baa59466;color:#4b4c3a;display:flex;font-size:.875rem;height:100%;justify-content:center;padding:1rem;text-align:center;width:100%}.resize-handles{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.resize-handle{background:#baa594;border:1px solid #4b4c3a;cursor:nwse-resize;height:8px;pointer-events:all;position:absolute;width:8px}.resize-handle.nw{cursor:nw-resize;left:-4px;top:-4px}.resize-handle.ne{cursor:ne-resize;right:-4px;top:-4px}.resize-handle.sw{bottom:-4px;cursor:sw-resize;left:-4px}.resize-handle.se{bottom:-4px;cursor:se-resize;right:-4px}.resize-handle.n{cursor:n-resize;top:-4px}.resize-handle.n,.resize-handle.s{left:50%;transform:translateX(-50%);width:20px}.resize-handle.s{bottom:-4px;cursor:s-resize}.resize-handle.e{cursor:e-resize;right:-4px}.resize-handle.e,.resize-handle.w{height:20px;top:50%;transform:translateY(-50%)}.resize-handle.w{cursor:w-resize;left:-4px}.react-pdf__Document{align-items:center;display:flex;flex-direction:column}.react-pdf__Page{margin:0}.react-pdf__Page canvas{display:block}.cd-editor-canvas>div:first-child{color:#f3e9d2}.toggle-structures-btn{background:#baa59426;border:1px solid #f3e9d233;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;margin-bottom:.5rem;padding:.5rem 1rem;transition:all .2s ease;width:100%}.toggle-structures-btn:hover{background:#baa59440;border-color:#f3e9d24d}.structure-selector{background:#baa5941a;border-radius:6px;margin-bottom:.5rem;padding:.75rem}.structure-select-controls{display:flex;gap:.5rem;margin-bottom:.75rem}.structure-select-controls button{background:#baa59433;border:1px solid #f3e9d233;border-radius:4px;color:#f3e9d2;cursor:pointer;flex:1 1;font-size:.75rem;padding:.375rem .75rem;transition:all .2s ease}.structure-select-controls button:hover{background:#baa5944d}.structure-checkbox{align-items:center;color:#f3e9d2;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.375rem 0}.structure-checkbox input[type=checkbox]{cursor:pointer}.regenerate-btn{background:#baa59440;border:1px solid #f3e9d24d;border-radius:6px;color:#f3e9d2;cursor:pointer;font-size:.875rem;margin-top:.75rem;padding:.5rem 1rem;transition:all .2s ease;width:100%}.regenerate-btn:hover{background:#baa59459;border-color:#f3e9d266}.project-document-item.live-document{background:#72945f26;border-color:#72945f4d}.project-document-item.live-document:hover{background:#72945f40;border-color:#72945f66}.doc-metadata{color:#f3e9d2b3;font-size:.75rem;margin-left:.25rem}.initialize-keywords{background:#f8f9fa;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:2rem auto;max-width:600px;padding:2rem}.initialize-keywords h2{color:#333;margin-bottom:1.5rem;text-align:center}.info-box{background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:2rem;padding:1.5rem}.info-box ul{margin:1rem 0;padding-left:2rem}.info-box li{color:#555;margin:.5rem 0}.warning{align-items:center;color:#ff6b6b;display:flex;font-weight:500;gap:.5rem;margin-top:1rem}.initialize-button{background:#4caf50;border:none;border-radius:6px;color:#fff;cursor:pointer;display:block;font-size:1.1rem;font-weight:500;padding:1rem 2rem;transition:background .3s ease;width:100%}.initialize-button:hover{background:#45a049}.loading{padding:2rem}.spinner{border-top-color:#3498db;margin:0 auto 1rem}.error-message,.success-message{border-radius:6px;padding:2rem;text-align:center}.success-message{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.error-message{color:#721c24}.check-icon,.error-icon{display:inline-block;font-size:2rem;margin-bottom:.5rem}.check-icon{color:#28a745}.error-icon{color:#dc3545}.error-message button{background:#721c24;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:1rem;padding:.5rem 1rem}.error-message button:hover{background:#5a161c}.admin-layout{background-color:#f5f5f5;display:flex;height:100vh}.admin-sidebar{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:2px 0 10px #0000001a;color:#fff;display:flex;flex-direction:column;transition:width .3s ease;width:260px}.admin-sidebar.collapsed{width:70px}.admin-sidebar-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;min-height:70px;padding:20px}.admin-sidebar-header h2{font-size:20px;font-weight:600;margin:0;white-space:nowrap}.sidebar-toggle{align-items:center;background:#fff3;border:1px solid #ffffff4d;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:30px;justify-content:center;transition:all .3s ease;width:30px}.sidebar-toggle:hover{background:#ffffff4d;transform:scale(1.1)}.admin-nav{flex:1 1;padding:20px 0}.admin-nav-item{align-items:center;border-radius:8px;color:#fffc;display:flex;margin:4px 12px;padding:12px 20px;position:relative;text-decoration:none;transition:all .3s ease}.admin-nav-item:hover{background:#ffffff1a;color:#fff;transform:translateX(5px)}.admin-nav-item.active{background:#fff3;color:#fff}.admin-nav-item.active:before{background:#fff;border-radius:0 3px 3px 0;content:"";height:70%;left:0;position:absolute;top:50%;transform:translateY(-50%);width:3px}.nav-icon{align-items:center;display:flex;font-size:24px;justify-content:center;margin-right:15px;min-width:30px}.admin-sidebar.collapsed .nav-icon{margin-right:0}.nav-content{display:flex;flex-direction:column;white-space:nowrap}.nav-label{font-size:15px;font-weight:500;margin-bottom:2px}.nav-description{font-size:12px;opacity:.7}.admin-sidebar.collapsed .nav-content{display:none}.admin-sidebar-footer{border-top:1px solid #ffffff1a;padding:20px}.admin-user-info{margin-bottom:15px}.admin-badge{background:#fff3;border-radius:20px;font-size:12px;font-weight:600;letter-spacing:.5px;padding:4px 12px;text-transform:uppercase}.back-to-app{color:#fffc;font-size:14px;text-decoration:none;transition:color .3s ease}.back-to-app:hover{color:#fff}.admin-main{background-color:#f5f5f5;flex:1 1;overflow-y:auto}.admin-loading{align-items:center;color:#666;display:flex;font-size:18px;height:100vh;justify-content:center}@media (max-width:768px){.admin-sidebar{height:100%;position:fixed;z-index:1000}.admin-sidebar:not(.collapsed){width:100%}.admin-sidebar.collapsed{overflow:hidden;width:0}.admin-main{margin-left:0}.sidebar-toggle{background:#667eea;left:20px;position:fixed;top:20px;z-index:1001}.admin-sidebar.collapsed .sidebar-toggle{left:10px}}.admin-dashboard{margin:0 auto;max-width:1400px;padding:30px}.dashboard-header{margin-bottom:40px}.dashboard-header h1{color:#333;font-size:32px;font-weight:600;margin:0}.dashboard-subtitle{color:#666;font-size:16px;margin:5px 0 0}.dashboard-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));margin-bottom:30px}.dashboard-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden;padding:0;transition:transform .3s ease,box-shadow .3s ease}.dashboard-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.card-header{align-items:center;background:linear-gradient(135deg,#f5f7fa,#fff);border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:20px 25px}.card-header h2{color:#333;font-size:20px;font-weight:600;margin:0}.card-link{color:#667eea;font-size:14px;font-weight:500;text-decoration:none;transition:color .3s ease}.card-link:hover{color:#764ba2}.card-footer{background:#f8f9fa;border-top:1px solid #eee;color:#666;font-size:13px;padding:15px 25px}.stats-grid{grid-template-columns:repeat(2,1fr);padding:25px}.stat{text-align:center}.stat-value{color:#667eea;margin-bottom:5px}.stat-label{font-size:13px}.version-info{padding:25px}.version-item{border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:12px 0}.version-item:last-child{border-bottom:none}.version-label{color:#666;font-size:14px}.version-value{color:#333;font-size:15px;font-weight:600}.status-badge{border-radius:20px;font-size:12px;font-weight:600;letter-spacing:.5px;padding:4px 12px;text-transform:uppercase}.status-badge.active{background:#f44;color:#fff}.status-badge.inactive{background:#e8f5e9;color:#4caf50}.quick-actions{display:flex;flex-direction:column;gap:12px;padding:25px}.admin-dashboard .action-button{align-items:center;background:#f5f7fa;border:1px solid #e0e0e0;border-radius:8px;color:#333;display:flex;font-size:14px;font-weight:500;gap:12px;padding:14px 18px;text-decoration:none;transition:all .3s ease}.admin-dashboard .action-button:hover{background:#667eea;color:#fff;transform:translateX(5px)}.action-icon{font-size:20px}.green-dot{color:#4caf50;font-size:12px}.orange-dot{color:#ff9800;font-size:12px}.activity-indicator{align-items:center;display:flex;gap:6px}.activity-indicator,.info-text{color:#666;font-size:13px}.dashboard-footer{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;justify-content:space-between;padding:20px}.dashboard-footer p{color:#666;font-size:14px;margin:0}.refresh-button{background:#667eea;font-weight:500;padding:8px 20px;transition:background .3s ease}.refresh-button:hover{background:#764ba2}.loading-state{align-items:center;color:#666;display:flex;font-size:16px;justify-content:center;min-height:400px}@media (max-width:1024px){.dashboard-grid{grid-template-columns:1fr}}@media (max-width:768px){.admin-dashboard{padding:20px}.dashboard-header h1{font-size:24px}.stats-grid{gap:15px;grid-template-columns:1fr}.stat-value{font-size:28px}.dashboard-footer{flex-direction:column;gap:15px;text-align:center}}.version-management{margin:0 auto;max-width:1200px;padding:20px}.version-management-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:30px}.version-management-header h1{color:#333;margin:0}.refresh-button{background:#f0f0f0;border:1px solid #ddd}.refresh-button:hover:not(:disabled){background:#e0e0e0}.version-management-error,.version-management-loading{font-size:18px;padding:40px;text-align:center}.version-management-error{color:#dc3545}.alert{padding:12px 16px}.alert-error{background:#fee;border:1px solid #fcc;color:#c33}.alert-success{background:#efe;border:1px solid #cfc;color:#3c3}.version-management-content{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr 1fr}@media (max-width:768px){.version-management-content{grid-template-columns:1fr}}.stats-section{background:#fff;border:1px solid #ddd;border-radius:8px;padding:20px}.stats-section h2{color:#333;font-size:20px;margin-bottom:20px;margin-top:0}.version-stats{display:flex;flex-direction:column;gap:15px}.stat-item{background:#f8f9fa;border-radius:4px;display:flex;justify-content:space-between;padding:10px}.stat-label{font-weight:500}.version-breakdown{margin-top:20px}.version-breakdown h3{color:#333;font-size:16px;margin-bottom:15px}.version-item{grid-gap:10px;align-items:center;display:grid;gap:10px;grid-template-columns:80px 80px 1fr;margin-bottom:10px}.version-number{color:#333;font-weight:600}.version-count{color:#666;font-size:14px}.version-bar{background:#e0e0e0;border-radius:10px;height:20px;overflow:hidden}.version-bar-fill{background:linear-gradient(90deg,#4caf50,#45a049);height:100%;transition:width .3s ease}.config-section{background:#fff;border:1px solid #ddd;border-radius:8px;padding:20px}.config-section h2{color:#333;font-size:20px;margin-bottom:20px;margin-top:0}.form-group{margin-bottom:20px}.form-group label{color:#333;font-weight:500;margin-bottom:8px}.form-group input[type=number],.form-group input[type=text],.form-group textarea{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px;transition:border-color .2s;width:100%}.form-group input[type=number]:focus,.form-group input[type=text]:focus,.form-group textarea:focus{border-color:#4caf50;outline:none}.form-group textarea{font-family:inherit;resize:vertical}.checkbox-group label{align-items:center;cursor:pointer;display:flex}.checkbox-group input[type=checkbox]{cursor:pointer;margin-right:8px}.blocked-versions{display:flex;flex-direction:column;gap:10px}.blocked-version-item{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;justify-content:space-between;padding:8px 12px}.blocked-version-item span{font-weight:500}.remove-button{background:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;padding:4px 8px}.remove-button:hover{background:#c82333}.add-blocked-version{display:flex;gap:10px}.add-blocked-version input{flex:1 1}.add-blocked-version button{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px}.add-blocked-version button:hover{background:#45a049}.form-actions{border-top:1px solid #e0e0e0;margin-top:30px;padding-top:20px}.save-button{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;padding:12px 24px;transition:background .2s}.save-button:hover:not(:disabled){background:#45a049}.save-button:disabled{cursor:not-allowed;opacity:.5}.user-analytics{margin:0 auto;max-width:1400px;padding:20px}.user-analytics-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:15px}.user-analytics-header h1{color:#333;font-size:28px;margin:0}.refresh-button{background-color:#4caf50;transition:background-color .3s}.refresh-button:hover:not(:disabled){background-color:#45a049}.refresh-button:disabled{background-color:#ccc}.stats-summary{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:30px}.stat-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px;text-align:center}.stat-value{font-size:36px;margin-bottom:8px}.stat-label{letter-spacing:.5px;text-transform:uppercase}.search-section{margin-bottom:20px}.search-input{font-size:14px;max-width:400px;padding:10px 15px;transition:border-color .3s;width:100%}.search-input:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f31a;outline:none}.user-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.user-table{border-collapse:collapse;width:100%}.user-table thead{background-color:#f5f5f5}.user-table th{border-bottom:2px solid #e0e0e0;color:#333;cursor:pointer;font-size:14px;font-weight:600;padding:12px 15px;text-align:left;-webkit-user-select:none;user-select:none;white-space:nowrap}.user-table th:hover{background-color:#eee}.user-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s}.user-table tbody tr:hover{background-color:#f9f9f9}.user-table tbody tr.active-user{background-color:#e8f5e9}.user-table tbody tr.active-user:hover{background-color:#dcedc8}.user-table td{color:#555;font-size:14px;padding:12px 15px}.email-cell{font-weight:500}.user-id{color:#999;font-size:11px;margin-top:2px}.number-cell{font-weight:500;text-align:center}.scans-detail{font-size:13px}.project-scans{display:flex;flex-direction:column;gap:4px}.project-scan-item{background-color:#f5f5f5;border-radius:3px;display:flex;justify-content:space-between;padding:2px 4px}.project-link{align-items:center;color:inherit;display:flex;text-decoration:none;transition:color .2s}.project-link:hover{color:#2196f3}.project-link:hover .project-name{text-decoration:underline}.project-name{color:#666;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-count{color:#2196f3;font-weight:600}.active-login{color:#4caf50;font-weight:500}.platform-info{display:flex;gap:4px}.platform-badge{border-radius:12px;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase}.platform-badge.ios{background-color:#007aff;color:#fff}.platform-badge.web{background-color:#ff9800;color:#fff}.user-analytics-error,.user-analytics-loading{align-items:center;color:#666;display:flex;font-size:18px;justify-content:center;min-height:400px}.user-analytics-error{color:#f44336}.alert{border-radius:4px;font-size:14px;margin-bottom:20px;padding:12px 20px}.alert-error{background-color:#ffebee;border-left:4px solid #f44336;color:#c62828}.no-results{color:#999;font-size:16px;padding:40px;text-align:center}.pagination-controls{align-items:center;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;justify-content:space-between;margin-top:20px;padding:20px}.pagination-info{color:#666;font-size:14px}.pagination-buttons{align-items:center;display:flex;gap:8px}.pagination-btn,.pagination-number{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:14px;padding:8px 12px;transition:all .2s}.pagination-btn:hover:not(:disabled),.pagination-number:hover:not(.active){background:#f5f5f5;border-color:#999}.pagination-btn:disabled{cursor:not-allowed;opacity:.5}.pagination-number.active{background:#2196f3;border-color:#2196f3;color:#fff;font-weight:600}.pagination-ellipsis{color:#999;padding:0 4px}@media (max-width:768px){.user-analytics{padding:10px}.user-analytics-header{align-items:flex-start;flex-direction:column;gap:10px}.stats-summary{gap:10px;grid-template-columns:repeat(2,1fr)}.stat-card{padding:15px}.stat-value{font-size:28px}.user-table-container{overflow-x:auto}.user-table{min-width:800px}.user-table td,.user-table th{font-size:12px;padding:8px 10px}.pagination-controls{flex-direction:column;gap:12px;padding:15px}.pagination-info{font-size:12px}.pagination-buttons{flex-wrap:wrap;justify-content:center}.pagination-btn,.pagination-number{font-size:12px;padding:6px 10px}}.data-modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.data-modal{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;display:flex;flex-direction:column;max-height:80vh;max-width:900px;width:100%}.data-modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px}.data-modal-header h3{color:#333;font-size:18px;margin:0}.data-modal-actions{align-items:center;display:flex;gap:10px}.view-mode-toggle{background:#f0f0f0;border-radius:4px;display:flex;padding:2px}.mode-button{background:#0000;border:none;border-radius:3px;color:#666;cursor:pointer;font-size:12px;font-weight:500;padding:6px 12px;transition:all .2s}.mode-button:hover{color:#333}.mode-button.active{background:#fff;box-shadow:0 1px 3px #0000001a;color:#2196f3}.copy-button{background:#2196f3;border-radius:4px;color:#fff;font-size:14px;padding:6px 12px;transition:background .2s}.copy-button:hover{background:#1976d2}.copy-button.copied{background:#4caf50}.close-button{align-items:center;background:#0000;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;transition:background .2s;width:32px}.close-button:hover{background:#f5f5f5}.data-modal-content{background:#f8f9fa;flex:1 1;overflow:auto;padding:20px}.json-tree{color:#333;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.6}.json-item{align-items:baseline;display:flex;gap:6px;margin:2px 0}.json-item.expandable{display:block}.json-item-header{align-items:center;border-radius:3px;cursor:pointer;display:flex;gap:6px;padding:2px 4px;transition:background .2s}.json-item-header:hover{background:#2196f314}.json-key{color:#881391;font-weight:500}.json-value{color:#1a1aa6}.json-preview{color:#999;font-size:12px;font-style:italic}.json-bracket{color:#666;margin-left:2px}.json-bracket-close{color:#666;margin-left:18px}.json-nested{border-left:1px solid #e0e0e0;margin-bottom:2px;margin-left:20px;margin-top:2px;padding-left:12px}.json-display{word-wrap:break-word;background:#fff;border:1px solid #e0e0e0;border-radius:4px;color:#333;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5;margin:0;padding:15px;white-space:pre-wrap}@media (max-width:768px){.data-modal-overlay{padding:10px}.data-modal{max-height:90vh}.data-modal-header{padding:15px}.data-modal-header h3{font-size:16px}.data-modal-content{padding:15px}.json-display{font-size:11px;padding:10px}}.admin-project-details{margin:0 auto;max-width:1400px;padding:20px}.project-header{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px;padding:20px}.back-link{align-items:center;color:#2196f3;display:inline-flex;font-size:14px;margin-bottom:10px;text-decoration:none}.back-link:hover{text-decoration:underline}.project-header h1{color:#333;margin:10px 0}.project-meta{color:#666;display:flex;font-size:14px;gap:20px}.project-meta span{align-items:center;display:flex}.tabs{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;gap:4px;margin-bottom:20px;padding:4px}.tab{background:#0000;border:none;color:#666;font-size:14px;padding:10px 20px;transition:all .2s}.tab.active{background:#2196f3}.tab-content{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:30px}.stat-box{background:#f8f9fa;border-radius:8px;padding:20px;text-align:center}.stat-label{font-size:14px;margin-bottom:8px}.stat-value{font-size:28px}.project-info{margin-top:30px}.project-info h3{color:#333;margin-bottom:15px}.info-grid{gap:12px}.info-row{grid-template-columns:150px 1fr;padding:10px}.info-label{font-weight:600}.info-value{word-break:break-word}.data-table{border-collapse:collapse;margin-top:15px;width:100%}.data-table th{background:#f8f9fa;border-bottom:2px solid #e0e0e0;color:#666;font-weight:600;padding:12px;text-align:left}.data-table td{border-bottom:1px solid #e0e0e0;color:#333;padding:12px}.data-table tbody tr:hover{background:#f5f5f5}.id-cell{font-size:12px}.id-cell,.path-cell{color:#666;font-family:monospace}.path-cell{font-size:11px;word-break:break-all}.format-badges{display:flex;flex-wrap:wrap;gap:4px}.format-badge{background:#2196f3;border-radius:3px;color:#fff;display:inline-block;font-size:11px;font-weight:600;padding:2px 6px}.storage-summary{background:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:15px}.storage-summary p{color:#666;margin:5px 0}.storage-summary strong{color:#333}.file-link{color:#2196f3;text-decoration:none}.file-link:hover{text-decoration:underline}.source-cell{display:flex;flex-direction:column;gap:4px}.source-badge{border-radius:3px;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase;width:fit-content}.source-storage{background:#4caf50;color:#fff}.source-url{background:#ff9800;color:#fff}.source-details{color:#666;font-family:monospace;font-size:10px;line-height:1.4;margin-top:2px;max-width:400px;white-space:pre-line;word-break:break-word}.error-row{background:#ffebee}.data-icon,.data-icon-small{background:#0000;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:16px;margin-left:10px;padding:4px 8px;transition:all .2s;vertical-align:middle}.data-icon-small{font-size:14px;margin:0;padding:2px 6px}.data-icon-small:hover,.data-icon:hover{background:#f5f5f5;border-color:#2196f3;transform:scale(1.1)}.project-header h1{align-items:center;display:flex;gap:10px}.admin-project-details-error,.admin-project-details-loading{align-items:center;color:#666;display:flex;flex-direction:column;font-size:18px;gap:20px;justify-content:center;min-height:400px}.admin-project-details-error{color:#f44336}.admin-project-details-error button{background:#2196f3;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.admin-project-details-error button:hover{background:#1976d2}@media (max-width:768px){.admin-project-details{padding:10px}.project-meta{flex-direction:column;gap:8px}.tabs{flex-wrap:wrap}.tab{flex:1 1;font-size:12px;min-width:100px;padding:8px 10px}.info-row,.stats-grid{grid-template-columns:1fr}.info-row{gap:4px}.data-table{display:block;font-size:12px;overflow-x:auto}.data-table td,.data-table th{padding:8px}}.user-projects{margin:0 auto;max-width:1400px;padding:20px}.user-projects .header{border-bottom:2px solid #e0e0e0;margin-bottom:30px;padding-bottom:20px}.user-projects .back-link{color:#1976d2;display:inline-block;font-size:14px;margin-bottom:15px;text-decoration:none}.user-projects .back-link:hover{text-decoration:underline}.user-projects h1{color:#333;font-size:28px;margin:10px 0}.user-projects .user-info{color:#666;display:flex;font-size:14px;gap:20px;margin-top:10px}.user-projects .user-info span{align-items:center;display:flex}.user-projects-error,.user-projects-loading{color:#666;font-size:16px;padding:40px;text-align:center}.user-projects-error{color:#d32f2f}.user-projects-error button{background:#1976d2;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;margin-top:20px;padding:10px 20px}.user-projects-error button:hover{background:#1565c0}.projects-summary{background:#f5f5f5;border-radius:8px;font-size:16px;margin-bottom:20px;padding:15px 20px}.projects-summary strong{color:#333;font-weight:600}.no-projects{color:#666;font-size:16px;padding:40px;text-align:center}.projects-table-container{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-top:20px;overflow:hidden}.projects-table{border-collapse:collapse;width:100%}.projects-table thead{background:#f5f5f5}.projects-table th{border-bottom:2px solid #e0e0e0;color:#333;font-size:14px;font-weight:600;padding:12px 16px;text-align:left}.projects-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s}.projects-table tbody tr:hover{background:#f9f9f9}.projects-table tbody tr:last-child{border-bottom:none}.projects-table td{color:#666;font-size:14px;padding:12px 16px}.projects-table td.id-cell{color:#888;font-family:monospace;font-size:12px}.projects-table td.center{text-align:center}.projects-table .view-details-link{border-radius:4px;color:#1976d2;display:inline-block;font-weight:500;padding:6px 12px;text-decoration:none;transition:background-color .2s}.projects-table .view-details-link:hover{background:#e3f2fd;text-decoration:none}@media (prefers-color-scheme:dark){.user-projects{background:#1e1e1e;color:#e0e0e0}.user-projects .header{border-bottom-color:#444}.user-projects h1{color:#e0e0e0}.user-projects .user-info{color:#aaa}.projects-summary{background:#2a2a2a}.projects-table-container{background:#2a2a2a;border-color:#444}.projects-table thead{background:#333}.projects-table th{border-bottom-color:#555;color:#e0e0e0}.projects-table tbody tr{border-bottom-color:#444}.projects-table tbody tr:hover{background:#333}.projects-table td{color:#aaa}.projects-table .view-details-link:hover{background:#3a3a3a}}.project-copier{margin:0 auto;max-width:1600px;padding:20px}.project-copier .header{border-bottom:2px solid #e0e0e0;margin-bottom:30px;padding-bottom:20px}.project-copier .back-link{color:#1976d2;display:inline-block;font-size:14px;margin-bottom:15px;text-decoration:none}.project-copier .back-link:hover{text-decoration:underline}.project-copier h1{color:#333;font-size:28px;margin:10px 0}.project-copier .user-info{color:#666;display:flex;font-size:14px;gap:30px;margin-top:10px}.project-copier-error,.project-copier-loading{color:#666;font-size:16px;padding:40px;text-align:center}.project-copier-error{color:#d32f2f}.project-copier-error button{background:#1976d2;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;margin-top:20px;padding:10px 20px}.project-copier-error button:hover{background:#1565c0}.copier-content{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr auto 1fr;margin-top:30px}.source-column,.target-column{background:#f9f9f9;min-height:500px;padding:20px}.action-column{align-items:center;gap:20px;justify-content:center;min-width:200px}.column-header{border-bottom:1px solid #ddd;margin-bottom:20px;padding-bottom:15px}.column-header h2{color:#666;font-size:20px;margin:0 0 5px}.project-count{color:#666;font-size:14px;margin:0}.projects-list{max-height:600px;overflow-y:auto;padding-right:10px;width:100%}.project-card{background:#fff;border:2px solid #e0e0e0;border-radius:6px;box-sizing:border-box;cursor:pointer;display:block;margin-bottom:10px;padding:15px;transition:all .2s;width:100%}.project-card:hover:not(.readonly){border-color:#1976d2;box-shadow:0 2px 8px #0000001a}.project-card.selected{background:#e8f5e9;border-color:#4caf50}.project-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:8px}.project-name{color:#333;flex:1 1;font-size:16px;font-weight:600;margin-right:8px}.project-actions{display:flex;flex-shrink:0;gap:4px}.project-delete-button,.project-link-button{align-items:center;background:#f5f5f5;border:none;border-radius:4px;color:#666;cursor:pointer;display:inline-flex;flex-shrink:0;height:28px;justify-content:center;text-decoration:none;transition:all .2s ease;width:28px}.project-link-button:hover{background:#1976d2;box-shadow:0 2px 4px #0003;color:#fff;transform:translateY(-1px)}.project-delete-button:hover:not(:disabled){background:#f44336;box-shadow:0 2px 4px #0003;color:#fff;transform:translateY(-1px)}.project-delete-button:disabled{cursor:not-allowed;opacity:.5}.project-card.selected .project-link-button{background:#fff}.project-card.selected .project-link-button:hover{background:#1976d2;color:#fff}.project-details{color:#666;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;margin-bottom:5px;margin-top:8px}.project-id{font-family:monospace}.project-address{color:#888;font-size:13px;margin-top:5px}.environment-selector,.user-selector{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;width:100%}.environment-selector label,.user-selector label{color:#666;font-size:14px;font-weight:600}.environment-selector select,.user-selector select{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 12px}.user-selector{margin-top:10px}.loading-text{color:#666;font-size:12px;font-style:italic;margin-top:4px}.copy-button{background:#ddd;border:none;border-radius:6px;color:#666;cursor:pointer;font-size:16px;font-weight:600;margin:5px 0;padding:12px 30px;transition:all .3s}.copy-button.active:not(:disabled){background:#4caf50;color:#fff}.copy-button:hover:not(:disabled){transform:scale(1.05)}.copy-button.active:hover:not(:disabled){background:#45a049}.copy-button:disabled{background:#f0f0f0;color:#ccc;cursor:not-allowed;transform:none}.copy-button.reverse{background:#ddd}.copy-button.reverse.active:not(:disabled){background:#2196f3;color:#fff}.copy-button.reverse.active:hover:not(:disabled){background:#1976d2}.selected-project-info{background:#e3f2fd;border-radius:6px;padding:12px;text-align:center;width:100%}.selected-project-info h3{color:#1976d2;font-size:14px;margin:0 0 5px}.selected-project-info p{color:#333;font-size:13px;font-weight:600;margin:0}.loading,.no-projects,.no-selection{color:#999;font-style:italic;padding:40px;text-align:center}.modal-overlay{background:#00000080}.modal-content{border-radius:8px;box-shadow:0 4px 20px #0003;max-height:80vh;max-width:500px;overflow-y:auto;padding:30px;width:90%}.modal-content h2{color:#333;margin:0 0 20px}.copy-details,.copy-summary{margin-bottom:20px}.copy-summary{background:#f5f5f5;border-radius:6px;padding:15px}.copy-summary h3{color:#333;font-size:16px;margin:0 0 12px}.summary-item{border-bottom:1px solid #e0e0e0;display:flex;font-size:14px;justify-content:space-between;padding:6px 0}.summary-item:last-child{border-bottom:none}.summary-item .label{color:#666;font-weight:600}.summary-item .value{color:#333;flex:1 1;margin-left:20px;text-align:right}.summary-item .value.monospace{background:#fff;border:1px solid #ddd;border-radius:3px;font-family:monospace;font-size:13px;padding:2px 6px}.copy-details h3{color:#333;font-size:16px;margin:20px 0 10px}.items-list{background:#f9f9f9;border-radius:6px;margin-bottom:15px;max-height:250px;overflow-y:auto;padding:15px}.copy-details ul{margin:0;padding-left:20px}.copy-details li{color:#555;font-size:14px;line-height:1.5;margin:6px 0}.copy-details li.sub-item{color:#777;font-size:13px;margin-left:20px}.copy-details li.monospace{background:#fff;border-left:3px solid #1976d2;font-family:Courier New,monospace;font-size:12px;margin:4px 0;padding:4px 8px;word-break:break-all}.doc-category{margin-bottom:15px}.doc-category h4{border-bottom:1px solid #e0e0e0;color:#333;font-size:13px;font-weight:600;margin:0 0 8px;padding-bottom:4px}.doc-category ul{list-style:none;margin:0 0 0 10px;padding:0}.doc-category li{color:#666;font-size:11px;padding:2px 0;word-break:break-all}.id-preservation-note{background:#e3f2fd;border:1px solid #90caf9;border-radius:4px;color:#1565c0;font-size:13px;margin:15px 0;padding:12px}.warning{background:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404;font-size:13px;margin:20px 0;padding:12px}.overwrite-warning{background:#fee;border:2px solid #f44336;border-radius:6px;margin:20px 0;padding:15px}.overwrite-warning h3{color:#d32f2f;font-size:18px;margin:0 0 10px}.overwrite-warning h4{color:#b71c1c;font-size:14px;font-weight:600;margin:15px 0 8px}.overwrite-warning p{color:#b71c1c;font-size:14px;margin:10px 0}.overwrite-list{background:#fff;border:1px solid #ffcdd2;margin:10px 0;max-height:150px}.overwrite-item{background:#ffebee;border-left-color:#f44336;color:#d32f2f}.warning-note{font-weight:700;margin-top:15px;text-align:center}.modal-actions{justify-content:flex-end;margin-top:25px}.cancel-btn,.confirm-btn{border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:opacity .2s}.confirm-btn{background:#4caf50;color:#fff}.confirm-btn:hover:not(:disabled){background:#45a049}.cancel-btn{background:#f44336;color:#fff}.cancel-btn:hover:not(:disabled){background:#da190b}.cancel-btn:disabled,.confirm-btn:disabled{cursor:not-allowed;opacity:.5}.loading-spinner{align-items:center;background:#fff;border-radius:8px;display:flex;flex-direction:column;gap:20px;padding:30px}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#1976d2;height:40px;width:40px}.loading-spinner p{color:#333;font-size:16px;margin:0}@media (max-width:1200px){.copier-content{gap:20px;grid-template-columns:1fr}.action-column{background:#f9f9f9;border-radius:8px;flex-direction:row;justify-content:space-between;padding:20px}.projects-list{max-height:400px}}@media (prefers-color-scheme:dark){.project-copier{background:#1e1e1e;color:#e0e0e0}.project-copier .header{border-bottom-color:#444}.project-copier h1{color:#e0e0e0}.source-column,.target-column{background:#2a2a2a}.project-card{background:#333;border-color:#555}.project-card:hover:not(.readonly){border-color:#1976d2}.project-card.selected{background:#2e4a2f}.modal-content{background:#2a2a2a;color:#e0e0e0}.modal-content h2,.modal-content h3{color:#e0e0e0}.warning{background:#3d3000;border-color:#8b7000;color:#fc0}}.storage-index-manager{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;margin:10px 0;transition:all .3s ease}.storage-index-manager.collapsed{background:#fafafa}.index-header{align-items:center;cursor:pointer;display:flex;gap:10px;padding:10px 15px;transition:background .2s;-webkit-user-select:none;user-select:none}.index-header:hover{background:#f0f0f0}.collapse-icon{display:inline-block;font-size:12px;transition:transform .2s}.collapse-icon.expanded{transform:rotate(90deg)}.index-header h3{flex:1 1;font-size:14px;font-weight:600;margin:0}.index-status{background:#e3f2fd;border-radius:12px;color:#1976d2;font-size:12px;font-weight:500;padding:2px 8px}.index-content{border-top:1px solid #e0e0e0;padding:10px 15px}.index-description{color:#666;font-size:12px;margin:0 0 10px}.rebuild-btn.compact{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;padding:6px 12px;transition:background .2s}.rebuild-btn.compact:hover:not(:disabled){background:#45a049}.rebuild-btn.compact:disabled{cursor:not-allowed;opacity:.6}.status-message.compact{border-radius:4px;font-size:12px;margin:10px 15px;padding:8px 12px}.status-message.success{background:#e8f5e9;border:1px solid #4caf50;color:#2e7d32}.status-message.error{background:#ffebee;border:1px solid #f44336;color:#c62828}.storage-navigator{display:flex;flex-direction:column;height:calc(100vh - 20px);margin:0 auto;max-width:1600px;padding:10px}.storage-header{align-items:center;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;justify-content:space-between;margin-bottom:10px;padding:10px 15px}.storage-header h1{color:#333;font-size:20px;margin:0}.storage-stats{display:flex;gap:20px}.storage-stats .stat{align-items:center;display:flex;gap:6px}.stat-label{color:#666;font-size:12px}.stat-value{color:#2196f3;font-size:14px}.storage-controls{align-items:center;background:#fff;border-radius:6px;box-shadow:0 1px 2px #00000014;display:flex;gap:10px;margin-bottom:10px;padding:8px 12px}.search-box{flex:1 1;max-width:300px}.search-box input{border:1px solid #ddd;border-radius:4px;font-size:13px;padding:5px 10px;width:100%}.search-box input:focus{border-color:#2196f3;outline:none}.view-toggles{background:#f0f0f0;border-radius:4px;display:flex;padding:2px}.view-toggles button{background:#0000;border:none;border-radius:3px;color:#666;cursor:pointer;font-size:14px;padding:6px 16px;transition:all .2s}.view-toggles button:hover{color:#333}.view-toggles button.active{background:#fff;box-shadow:0 1px 3px #0000001a;color:#2196f3}.refresh-btn{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;padding:5px 10px;transition:background .2s}.refresh-btn:hover{background:#45a049}.storage-content{grid-gap:20px;display:grid;flex:1 1;gap:20px;grid-template-columns:1fr 1fr;min-height:0}.storage-browser,.storage-details{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:auto;padding:20px}.directory-tree{font-family:Monaco,Menlo,monospace;font-size:13px}.directory-node{margin:2px 0}.directory-header{align-items:center;border-radius:4px;cursor:pointer;display:flex;gap:8px;padding:4px 8px;transition:background .2s}.directory-header:hover{background:#f5f5f5}.directory-contents{border-left:1px solid #e0e0e0;margin-left:20px;padding-left:10px}.directory-contents .directory-node{margin-bottom:2px}.directory-contents .file-item{font-size:12px;opacity:.95}.directory-contents .file-item:first-child{margin-top:6px}.expand-icon{color:#666;display:inline-block;font-size:10px;transition:transform .2s;-webkit-user-select:none;user-select:none;width:12px}.expand-icon.expanded{transform:rotate(90deg)}.file-icon,.folder-icon{font-size:16px}.directory-name{color:#333;flex:1 1}.loading-spinner{animation:spin 1s linear infinite;font-size:12px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.item-count{background:#f0f0f0;color:#999;font-size:11px}.item-count,.reference-indicator{border-radius:3px;padding:2px 6px}.reference-indicator{cursor:help;font-size:12px;margin-left:4px}.reference-indicator.has-refs{background:#e8f5e9;color:#2e7d32}.reference-indicator.no-refs{background:#fff3e0;color:#e65100}.browser-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:15px;padding-bottom:10px}.browser-header h3{color:#333;font-size:16px;margin:0}.browser-hint{color:#999;font-size:12px;font-style:italic}.load-more-container{border-top:1px solid #e0e0e0;margin-top:10px;padding:10px;text-align:center}.load-more-btn{background:#f0f0f0;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:13px;padding:6px 16px;transition:all .2s}.load-more-btn:hover:not(:disabled){background:#e0e0e0;border-color:#2196f3}.load-more-btn:disabled{cursor:not-allowed;opacity:.6}.file-item{align-items:center;border-radius:4px;cursor:pointer;display:flex;gap:8px;margin:2px 0;padding:6px 12px;transition:background .2s}.file-item:hover{background:#f5f5f5}.file-item.selected{background:#e3f2fd;border:1px solid #2196f3}.file-name{color:#333;flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-type{background:#f0f0f0;border-radius:3px;color:#666;font-size:11px;padding:2px 6px}.file-size{color:#999;font-size:11px}.grouped-view{font-family:Monaco,Menlo,monospace;font-size:13px}.group-section{margin-bottom:10px}.group-header{align-items:center;background:#f8f9fa;border-radius:4px;cursor:pointer;display:flex;gap:8px;padding:8px 12px;transition:background .2s}.group-header:hover{background:#e9ecef}.group-title{color:#333;flex:1 1;font-weight:500}.group-contents{margin-top:5px;padding-left:30px}.type-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.type-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;padding:15px}.type-header{display:flex;justify-content:space-between;margin-bottom:10px}.type-name{color:#333;font-weight:500}.type-count{color:#666;font-size:12px}.type-size{color:#2196f3;font-size:20px;font-weight:700;margin-bottom:5px}.type-percent{color:#999;font-size:12px}.no-selection{align-items:center;display:flex;height:100%;justify-content:center}.file-details h2{color:#333;margin:0 0 20px;word-break:break-all}.details-section{margin-bottom:30px}.details-section h3{border-bottom:1px solid #e0e0e0;color:#666;font-size:16px;margin:0 0 15px;padding-bottom:8px}.info-grid{display:flex;flex-direction:column;gap:10px;margin-bottom:15px}.info-row{background:#f8f9fa;border-radius:4px;display:grid;grid-template-columns:120px 1fr;padding:8px}.info-label{color:#666;font-size:13px;font-weight:500}.info-value{color:#333;font-family:monospace;font-size:13px;word-break:break-all}.storage-navigator .action-buttons{display:flex;gap:10px;margin-top:15px}.data-btn,.download-btn{border:none;border-radius:4px;cursor:pointer;display:inline-block;font-size:14px;padding:8px 16px;text-decoration:none;transition:all .2s}.download-btn{background:#2196f3;color:#fff}.download-btn:hover{background:#1976d2}.data-btn{background:#f0f0f0;color:#333}.data-btn:hover{background:#e0e0e0}.loading-references{color:#666;padding:20px;text-align:center}.references-list{display:flex;flex-direction:column;gap:10px}.reference-item{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:12px}.ref-header{display:flex;justify-content:space-between;margin-bottom:8px}.ref-collection{color:#2196f3;font-weight:500}.ref-doc{color:#666}.ref-doc,.ref-fields{font-family:monospace;font-size:12px}.ref-fields{color:#333;margin-bottom:8px}.ref-metadata{color:#666;display:flex;font-size:11px;gap:15px;margin-bottom:8px}.ref-doc-link{background:#e8f5e9;border:1px solid #81c784;border-radius:4px;color:#2e7d32;cursor:pointer;font-size:13px;padding:4px 8px;text-decoration:none;transition:all .2s}.ref-doc-link:hover{background:#c8e6c9;box-shadow:0 2px 4px #0000001a;transform:translateY(-1px)}.ref-actions{display:flex;gap:8px;margin-top:8px}.view-doc-btn{border:1px solid #45a049;border-radius:3px;transition:all .2s}.view-ref-btn{background:#fff;border:1px solid #ddd;border-radius:3px;cursor:pointer;font-size:12px;padding:4px 10px;transition:all .2s}.view-ref-btn:hover{background:#f5f5f5;border-color:#2196f3}.no-references{background:#f8f9fa;border-radius:4px;color:#999;padding:20px;text-align:center}.error-message{background:#ffebee;border-radius:4px;color:#c62828;padding:10px}.storage-navigator-error,.storage-navigator-loading{align-items:center;color:#666;display:flex;flex-direction:column;font-size:18px;height:400px;justify-content:center}.storage-navigator-error{color:#f44336}.storage-navigator-error button{background:#2196f3;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:20px;padding:10px 20px}.storage-navigator-error button:hover{background:#1976d2}@media (max-width:1200px){.storage-content{grid-template-columns:1fr}.storage-details{min-height:400px}}@media (max-width:768px){.storage-navigator{padding:10px}.storage-stats{flex-wrap:wrap;gap:15px}.storage-controls{flex-direction:column;gap:10px}.search-box{width:100%}.view-toggles{justify-content:center;width:100%}}.cross-env-container{margin:0 auto;max-width:1600px;min-height:calc(100vh - 40px);padding:20px}.cross-env-header{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px;padding:20px}.cross-env-header h1{color:#333;margin:0 0 15px}.report-metadata{display:flex;flex-wrap:wrap;gap:30px}.meta-item{align-items:center;display:flex;gap:8px}.meta-label{color:#666;font-size:14px}.meta-value{color:#333;font-size:14px;font-weight:700}.current-env{background:#e8f5e9;color:#4caf50}.current-env,.total-refs{border-radius:4px;padding:2px 8px}.total-refs{background:#fbe9e7;color:#ff5722}.cross-env-success{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:60px 20px;text-align:center}.success-icon{font-size:72px;margin-bottom:20px}.cross-env-success h2{color:#4caf50;margin:0 0 10px}.cross-env-success p{color:#666;font-size:16px}.cross-env-content{grid-gap:20px;display:grid;gap:20px;grid-template-columns:300px 1fr;min-height:600px}.buckets-sidebar{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;max-height:calc(100vh - 200px);overflow-y:auto;padding:20px}.buckets-sidebar h3{color:#333;font-size:16px;margin:0 0 15px}.bucket-list{display:flex;flex-direction:column;gap:10px}.bucket-item{background:#f8f9fa;border-left:4px solid #ddd;border-radius:6px;cursor:pointer;padding:12px;transition:all .2s}.bucket-item:hover{background:#e9ecef;transform:translateX(2px)}.bucket-item.selected{background:#e3f2fd;border-left-width:4px}.bucket-name{align-items:center;color:#333;display:flex;font-weight:500;gap:8px;margin-bottom:5px}.bucket-icon{font-size:18px}.bucket-stats{color:#666;display:flex;font-size:12px;justify-content:space-between}.bucket-count{font-weight:700}.bucket-env{background:#0000000d;border-radius:3px;font-size:11px;padding:2px 6px}.references-panel{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;max-height:calc(100vh - 200px);overflow-y:auto;padding:20px}.panel-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.panel-header,.panel-header h2{align-items:center;display:flex}.panel-header h2{color:#333;gap:10px;margin:0}.env-badge{border-radius:4px;color:#fff;font-size:12px;font-weight:400;padding:3px 8px}.panel-stats{color:#666;font-size:14px}.samples-section{margin-bottom:30px}.samples-section h3{color:#333;font-size:15px;margin:0 0 15px}.samples-list{display:flex;flex-direction:column;gap:12px}.sample-item{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:15px;transition:all .2s}.sample-item:hover{box-shadow:0 2px 4px #0000001a;transform:translateY(-1px)}.sample-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.sample-location{align-items:center;display:flex;gap:10px}.collection-badge{background:#2196f3;border-radius:4px;color:#fff;font-size:12px;font-weight:500;padding:3px 8px}.document-id{color:#666;font-family:monospace;font-size:13px}.view-doc-btn{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;padding:4px 10px;transition:background .2s}.view-doc-btn:hover{background:#45a049}.sample-details{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.field-info,.url-info{display:flex;font-size:12px;gap:8px}.field-label,.url-label{color:#999;min-width:50px}.field-path{color:#e91e63;font-family:monospace}.url-path{color:#333;font-family:monospace;word-break:break-all}.sample-url{margin-top:8px}.url-link{align-items:center;color:#1976d2;display:inline-flex;font-size:12px;gap:4px;text-decoration:none}.url-link:hover{text-decoration:underline}.more-indicator{background:#fff3e0;border-radius:4px;color:#f57c00;font-size:13px;margin-top:15px;padding:10px;text-align:center}.action-section{background:#f5f5f5;border-radius:6px;padding:20px}.action-section h3{color:#333;font-size:15px;margin:0 0 15px}.action-list{color:#666;margin:0;padding-left:20px}.action-list li{font-size:14px;margin-bottom:8px}.warning-action{color:#ff5722;font-weight:500}.cross-env-empty,.cross-env-error,.cross-env-loading{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-top:20px;padding:40px;text-align:center}.cross-env-error{color:#f44336}.retry-btn{background:#2196f3;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:15px;padding:8px 16px}.retry-btn:hover{background:#1976d2}@media (max-width:768px){.cross-env-content{grid-template-columns:1fr}.buckets-sidebar{max-height:auto}.bucket-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.asset-copier{margin:0 auto;max-width:1600px;padding:20px}.asset-copier-header{border-bottom:2px solid #e0e0e0;margin-bottom:30px;padding-bottom:20px}.asset-copier-header h1{color:#333;font-size:28px;margin:0 0 10px}.asset-copier-header p{color:#666;font-size:14px;margin:0}.controls-section{background:#f9f9f9;border-radius:8px;margin-bottom:20px;padding:20px}.environment-selectors{align-items:center;display:flex;gap:20px;margin-bottom:20px}.environment-selector{flex:1 1}.environment-selector label{color:#555;display:block;font-size:14px;font-weight:600;margin-bottom:5px}.environment-selector select{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px;width:100%}.copy-arrow{color:#666;font-size:24px;padding-top:20px}.filter-controls{align-items:center;display:flex;gap:20px;margin-bottom:20px}.filter-input{flex:1 1}.filter-input input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px;width:100%}.asset-type-selector{display:flex;gap:20px}.asset-type-selector label{align-items:center;color:#555;cursor:pointer;display:flex;font-size:14px;gap:5px}.asset-type-selector input[type=radio]{cursor:pointer}.asset-copier .action-buttons{display:flex;gap:10px}.asset-copier .action-buttons button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.asset-copier .action-buttons button:hover:not(:disabled){background:#f0f0f0;border-color:#999}.asset-copier .action-buttons button:disabled{cursor:not-allowed;opacity:.5}.asset-copier .action-buttons .copy-button{background:#4caf50;border-color:#4caf50;color:#fff;font-weight:600}.asset-copier .action-buttons .copy-button:hover:not(:disabled){background:#45a049;border-color:#45a049}.message{border-radius:4px;margin-bottom:20px;padding:12px}.message.success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.message.error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.message.warning{background:#fff3cd;border:1px solid #ffeaa7;color:#856404}.loading{color:#666;font-size:16px;padding:40px;text-align:center}.assets-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));min-height:200px}.no-assets{color:#999;font-style:italic;grid-column:1/-1;padding:40px;text-align:center}.asset-card{background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:12px;position:relative;transition:all .2s}.asset-card:hover{border-color:#1976d2;box-shadow:0 2px 8px #0000001a;transform:translateY(-2px)}.asset-card.selected{background:#e8f5e9;border-color:#4caf50}.asset-card.selected .asset-type-badge{background:#4caf50}.asset-badges{align-items:flex-end;display:flex;flex-direction:column;gap:4px;position:absolute;right:8px;top:8px;z-index:1}.asset-type-badge{background:#666;border-radius:12px;color:#fff;font-size:11px;font-weight:600;padding:2px 8px}.asset-card.object .asset-type-badge{background:#2196f3}.asset-card.wallTexture .asset-type-badge{background:#ff9800}.asset-info{display:flex;flex-direction:column;gap:4px;padding-right:50px}.asset-header{align-items:center;display:flex;gap:8px;justify-content:space-between}.asset-name{color:#333;flex:1 1;font-size:14px;font-weight:600}.asset-id,.asset-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-id{color:#999;font-family:monospace;font-size:11px;margin-bottom:4px}.asset-category{background:#f0f0f0;border-radius:3px;color:#666;display:inline-block;font-size:12px;margin-top:4px;padding:2px 6px}.asset-has-file{color:#4caf50;font-size:11px;margin-right:8px}.asset-copier .asset-files{align-items:center;display:flex;font-size:11px;gap:8px}.asset-actions{align-items:center;display:flex;gap:4px}.asset-data-button{align-items:center;background:none;border:none;border-radius:3px;cursor:pointer;display:flex;font-size:16px;justify-content:center;line-height:1;padding:2px 4px;transition:all .2s}.asset-data-button:hover{background:#e3f2fd;transform:scale(1.1)}.asset-view-link{border:1px solid #1976d2;border-radius:3px;color:#1976d2;flex-shrink:0;font-size:11px;padding:1px 5px;text-decoration:none;transition:all .2s}.asset-view-link:hover{background:#1976d2;color:#fff}.copier-content{display:flex;gap:20px;position:relative}.source-column,.target-column{background:#fff;border-radius:8px;display:flex;flex:1 1;flex-direction:column;min-width:0;padding:10px}.action-column{align-self:flex-start;background:#f9f9f9;border-radius:8px;box-shadow:0 2px 8px #0000001a;display:flex;flex:0 0 200px;flex-direction:column;gap:15px;height:fit-content;padding:20px;position:sticky;top:20px}.column-header{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:15px;padding:15px}.column-header h2{color:#333;font-size:18px;margin:0 0 10px}.column-stats{color:#666;font-size:12px;margin-top:10px}.source-column .assets-grid,.target-column .assets-grid{padding:0 15px 15px}.asset-copier .action-button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:10px 16px;transition:all .2s;width:100%}.asset-copier .action-button:hover:not(:disabled){background:#f0f0f0;border-color:#999}.asset-copier .action-button:disabled{cursor:not-allowed;opacity:.5}.asset-copier .copy-button{background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:12px 20px;transition:all .2s;width:100%}.asset-copier .copy-button:hover:not(:disabled){background:#45a049}.asset-copier .copy-button.copy-reverse{background:#2196f3}.asset-copier .copy-button.copy-reverse:hover:not(:disabled){background:#1976d2}.copy-direction-section{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:12px}.copy-direction-section h3{color:#555;font-size:14px;font-weight:600;margin:0 0 10px}.asset-copier .copy-button:disabled{background:#999;cursor:not-allowed;opacity:.5}.selected-info{background:#fff;border:1px solid #ddd;border-radius:4px;padding:10px}.selected-count{color:#333;font-size:14px;font-weight:600;margin-bottom:5px}.selected-detail{color:#666;font-size:12px}.no-selection{color:#999;font-style:italic;padding:40px;text-align:center}.asset-exists-badge{background:#ffc107;border-radius:8px;color:#333;font-size:9px;font-weight:600;padding:1px 4px}.asset-card.existing{opacity:.9}@media (max-width:1200px){.copier-content{flex-direction:column}.action-column{flex:0 0 auto;margin:20px auto;max-width:500px;position:static;width:100%}}@media (max-width:768px){.environment-selectors{flex-direction:column}.copy-arrow{padding:10px 0;transform:rotate(90deg)}.filter-controls{align-items:stretch;flex-direction:column}.asset-type-selector{flex-direction:column;gap:10px}.action-buttons{flex-wrap:wrap}.assets-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}.asset-data-modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.asset-data-modal{background:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;display:flex;flex-direction:column;max-height:80vh;max-width:800px;width:90%}.asset-data-modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:16px 20px}.asset-data-modal-header h3{color:#333;font-size:18px;margin:0}.asset-data-modal-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.asset-data-modal-close:hover{background:#f0f0f0;color:#333}.asset-data-modal-body{background:#f9f9f9;flex:1 1;overflow:auto;padding:20px}.asset-data-modal-body pre{word-wrap:break-word;background:#fff;border:1px solid #e0e0e0;border-radius:4px;color:#333;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5;margin:0;overflow-x:auto;padding:16px;white-space:pre-wrap}.asset-data-modal-footer{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;padding:16px 20px}.asset-data-modal-footer button{border-radius:4px;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.asset-data-modal-footer button:first-child{background:#4caf50;border:none;color:#fff}.asset-data-modal-footer button:first-child:hover{background:#45a049}.asset-data-modal-footer button:last-child{background:#fff;border:1px solid #ddd;color:#666}.asset-data-modal-footer button:last-child:hover{background:#f0f0f0;border-color:#999}.preview-code-manager{margin:0 auto;max-width:1200px;padding:24px}.manager-header{margin-bottom:24px}.manager-header h1{color:#1f2937;font-size:28px;font-weight:600;margin:0 0 8px}.manager-header .subtitle{color:#6b7280;margin:0}.error-banner{align-items:center;background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;display:flex;justify-content:space-between;margin-bottom:16px;padding:12px 16px}.error-banner button{background:none;border:none;color:#dc2626;cursor:pointer;font-size:20px;padding:0 4px}.create-section{background:#f9fafb;border-radius:12px;margin-bottom:24px;padding:20px}.create-section h2{color:#374151;font-size:16px;font-weight:600;margin:0 0 16px}.create-form{display:flex;flex-wrap:wrap;gap:12px}.create-form input{border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;padding:10px 14px;transition:border-color .2s}.create-form input:focus{border-color:#7c3aed}.create-form input:first-child{font-family:monospace;text-transform:uppercase;width:200px}.create-form .note-input{flex:1 1;min-width:200px}.reusable-checkbox{align-items:center;color:#374151;cursor:pointer;display:flex;font-size:14px;gap:6px;white-space:nowrap}.reusable-checkbox input[type=checkbox]{cursor:pointer;height:16px;width:16px}.create-button{background-color:#7c3aed;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background-color .2s}.create-button:hover:not(:disabled){background-color:#6d28d9}.create-button:disabled{background-color:#9ca3af;cursor:not-allowed}.help-text{color:#6b7280;font-size:12px;margin:12px 0 0}.codes-section{margin-bottom:24px}.codes-section h2{color:#374151;font-size:18px;font-weight:600;margin:0 0 16px}.empty-state{background:#f9fafb;border-radius:8px;color:#9ca3af;font-style:italic;padding:20px;text-align:center}.codes-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden;width:100%}.codes-table td,.codes-table th{border-bottom:1px solid #e5e7eb;padding:12px 16px;text-align:left}.codes-table th{color:#6b7280;font-size:12px;font-weight:600;text-transform:uppercase}.codes-table tbody tr:hover,.codes-table th{background:#f9fafb}.codes-table .used-row{opacity:.7}.code-name{color:#1f2937;font-family:monospace;font-size:14px;font-weight:600}.note-cell{color:#6b7280;font-size:13px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{border-radius:4px;display:inline-block;font-size:11px;font-weight:600;padding:4px 8px;text-transform:uppercase}.badge-purple{background:#ede9fe;color:#7c3aed}.badge-blue{background:#dbeafe;color:#2563eb}.badge-gray{background:#f3f4f6;color:#6b7280}.action-btn{border:none;border-radius:6px;font-size:12px;font-weight:500;margin-right:8px;padding:6px 12px;transition:background-color .2s}.action-btn.invalidate{background:#fef3c7;color:#b45309}.action-btn.invalidate:hover:not(:disabled){background:#fde68a}.action-btn.revalidate{background:#d1fae5;color:#047857}.action-btn.revalidate:hover:not(:disabled){background:#a7f3d0}.action-btn.delete{background:#fee2e2;color:#dc2626}.action-btn.delete:hover:not(:disabled){background:#fecaca}.action-btn:disabled{cursor:not-allowed;opacity:.5}.no-actions{color:#9ca3af;font-size:12px;font-style:italic}.manager-footer{border-top:1px solid #e5e7eb;margin-top:24px;padding-top:16px}.refresh-button{background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;font-size:14px;transition:background-color .2s}.refresh-button:hover:not(:disabled){background:#e5e7eb}.refresh-button:disabled{cursor:not-allowed;opacity:.5}.loading-state{color:#6b7280;padding:40px;text-align:center}.kohler-catalog{max-width:1400px;padding:25px}.kohler-catalog-header{margin-bottom:25px}.kohler-catalog-header h1{color:#333;font-size:28px;font-weight:600;margin:0 0 8px}.kohler-catalog-header p{color:#666;font-size:14px;margin:0}.pipeline-instructions{background:#fff;border:1px solid #e0e0e0;border-radius:10px;margin-bottom:20px;overflow:hidden}.instructions-toggle{background:#f8f9fa;border:none;color:#555;cursor:pointer;font-size:14px;font-weight:600;padding:12px 20px;text-align:left;transition:background .2s;width:100%}.instructions-toggle:hover{background:#eef0f2}.instructions-content{border-top:1px solid #e0e0e0;padding:16px 20px 20px}.instructions-step{display:flex;gap:14px;margin-bottom:16px}.instructions-step:last-of-type{margin-bottom:0}.step-number{align-items:center;background:#667eea;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:14px;font-weight:700;height:28px;justify-content:center;margin-top:2px;width:28px}.step-body h4{color:#333;font-size:14px;font-weight:600;margin:0 0 4px}.step-body p{color:#555;font-size:13px;line-height:1.5;margin:0 0 6px}.step-body code{background:#f0f0f0;border-radius:6px;color:#333;display:block;font-family:Monaco,Menlo,monospace;font-size:12px;margin-bottom:6px;overflow-x:auto;padding:8px 12px;white-space:pre-wrap;word-break:break-all}.step-note{color:#888!important;font-size:12px!important}.step-note code{background:#eee;border-radius:3px;display:inline;font-size:11px;padding:1px 5px}.instructions-fields{border-top:1px solid #eee;margin-top:16px;padding-top:16px}.instructions-fields h4{color:#666;font-size:13px;font-weight:600;margin:0 0 10px;text-transform:uppercase}.field-grid{display:flex;flex-wrap:wrap;gap:6px}.field-tag{background:#e8f0fe;border-radius:4px;color:#1a56db;display:inline-block;font-family:Monaco,Menlo,monospace;font-size:12px;padding:3px 10px}.mount-type-filters{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.mount-type-label{color:#666;font-size:13px;font-weight:600;margin-right:4px}.mount-type-tag{background:#fff;border:1px solid #ddd;border-radius:16px;color:#555;cursor:pointer;font-size:12px;font-weight:500;padding:4px 12px;transition:all .2s}.mount-type-tag:hover{background:#f5f5f5;border-color:#aaa}.mount-type-tag.active{background:#667eea;border-color:#667eea;color:#fff}.mount-type-badge{border-radius:4px;display:inline-block;font-size:10px;font-weight:600;margin-bottom:4px;padding:2px 8px;text-transform:uppercase}.mount-type-badge.mount-type-wall-mount{background:#f3e5f5;color:#7b1fa2}.mount-type-badge.mount-type-centerset{background:#e3f2fd;color:#1565c0}.mount-type-badge.mount-type-widespread{background:#e8f5e9;color:#2e7d32}.mount-type-badge.mount-type-single-handle{background:#fff3e0;color:#e65100}.mount-type-badge.mount-type-tall-single-handle{background:#fce4ec;color:#ad1457}.mount-type-badge.mount-type-deck-mount{background:#e3f2fd;color:#1565c0}.mount-type-badge.mount-type-floor-mount{background:#fff3e0;color:#e65100}.mount-type-badge.mount-type-uncategorized{background:#f5f5f5;color:#999}.component-type-badge{border-radius:4px;display:inline-block;font-size:10px;font-weight:600;margin-bottom:4px;margin-left:4px;padding:2px 8px;text-transform:uppercase}.component-type-badge.component-type-complete{background:#e8f5e9;color:#2e7d32}.component-type-badge.component-type-spout-only{background:#e3f2fd;color:#1565c0}.component-type-badge.component-type-handles-only{background:#fff3e0;color:#e65100}.component-type-badge.component-type-other{background:#f5f5f5;color:#999}.mount-type-tag.component-type-complete{border-color:#a5d6a7;color:#2e7d32}.mount-type-tag.component-type-spout-only{border-color:#90caf9;color:#1565c0}.mount-type-tag.component-type-handles-only{border-color:#ffcc80;color:#e65100}.mount-type-tag.component-type-other{border-color:#ccc;color:#999}.catalog-controls{align-items:center;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:20px}.catalog-search{border:1px solid #ddd;border-radius:8px;flex:1 1;font-size:14px;min-width:250px;outline:none;padding:10px 14px;transition:border-color .2s}.catalog-search:focus{border-color:#667eea}.catalog-stats{align-items:center;color:#666;display:flex;font-size:13px;gap:15px}.catalog-stats span{white-space:nowrap}.catalog-actions{display:flex;gap:8px}.btn-deselect-all,.btn-download-selected,.btn-export-manifest,.btn-select-all{background:#fff;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:all .2s}.btn-deselect-all:hover,.btn-select-all:hover{background:#f5f5f5;border-color:#ccc}.btn-download-selected{background:#667eea;border-color:#667eea;color:#fff}.btn-download-selected:hover{background:#5a6fd6}.btn-download-selected:disabled{background:#ccc;border-color:#ccc;cursor:not-allowed}.btn-export-manifest{background:#4caf50;border-color:#4caf50;color:#fff}.btn-export-manifest:hover{background:#43a047}.btn-export-manifest:disabled{background:#ccc;border-color:#ccc;cursor:not-allowed}.catalog-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.catalog-card{background:#fff;border:2px solid #e0e0e0;border-radius:10px;cursor:pointer;overflow:hidden;transition:all .2s}.catalog-card:hover{border-color:#667eea;box-shadow:0 2px 12px #00000014;transform:translateY(-2px)}.catalog-card.selected{background:#f1f8e9;border-color:#4caf50}.catalog-card.selected:hover{border-color:#388e3c}.card-image{align-items:center;background:#f8f8f8;display:flex;height:160px;justify-content:center;overflow:hidden;position:relative}.card-image img{max-height:140px;max-width:90%;object-fit:contain}.card-image .no-image{color:#ccc;font-size:48px}.card-checkbox{align-items:center;background:#fff;border:2px solid #ccc;border-radius:4px;display:flex;font-size:14px;height:22px;justify-content:center;left:10px;position:absolute;top:10px;transition:all .2s;width:22px}.catalog-card.selected .card-checkbox{background:#4caf50;border-color:#4caf50;color:#fff}.uploaded-badge{background:#4caf50;font-size:10px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;z-index:1}.finish-count-badge,.uploaded-badge{border-radius:10px;color:#fff;padding:3px 8px;position:absolute;right:10px;top:10px}.finish-count-badge{background:#0009;font-size:11px}.uploaded-badge+.finish-count-badge{top:34px}.card-body{padding:14px}.card-brand{color:#333;font-size:15px;font-weight:600;margin:0 0 4px}.card-sku{color:#999;font-family:Monaco,Menlo,monospace;font-size:12px;margin:0 0 6px}.card-name{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#555;display:-webkit-box;font-size:13px;line-height:1.4;margin:0 0 10px;overflow:hidden}.card-finishes{display:flex;flex-wrap:wrap;gap:4px}.finish-swatch{border:1px solid #ddd;border-radius:50%;height:20px;position:relative;width:20px}.finish-swatch.discontinued{opacity:.4}.finish-swatch.discontinued:after{background:#999;content:"";height:1px;left:0;position:absolute;right:0;top:50%;transform:rotate(-45deg)}.card-detail{border-top:1px solid #eee;margin-top:10px;padding:0 14px 14px}.card-detail h4{color:#666;font-size:12px;font-weight:600;margin:12px 0 6px;text-transform:uppercase}.detail-finishes{display:flex;flex-direction:column;gap:4px}.detail-finish-row{align-items:center;color:#555;display:flex;font-size:12px;gap:8px}.detail-finish-row .sku{color:#999;font-family:Monaco,Menlo,monospace;font-size:11px}.detail-finish-row .discontinued-tag{color:#e57373;font-size:10px;font-weight:500}.detail-files{display:flex;flex-wrap:wrap;gap:6px}.file-badge{background:#e3f2fd;border-radius:4px;color:#1565c0;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px}.file-badge.available{background:#e8f5e9;color:#2e7d32}.file-badge.unavailable{background:#f5f5f5;color:#bbb;text-decoration:line-through}.catalog-error,.catalog-loading{color:#666;padding:60px 20px;text-align:center}.catalog-error{color:#d32f2f}.catalog-empty{color:#999;padding:60px 20px;text-align:center}.catalog-message{border-radius:8px;font-size:14px;margin-bottom:16px;padding:12px 16px}.catalog-message.success{background:#e8f5e9;color:#2e7d32}.catalog-message.error{background:#fce4ec;color:#c62828}.catalog-message.info{background:#e3f2fd;color:#1565c0}.download-status-summary{background:#fff;border:1px solid #e0e0e0;border-radius:10px;margin-bottom:20px;padding:16px 20px}.status-summary-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.status-summary-title{color:#333;font-size:14px;font-weight:600}.status-summary-updated{color:#999;font-size:12px}.status-summary-stats{display:flex;flex-wrap:wrap;gap:12px}.status-stat{background:#f8f8f8;border-radius:8px;min-width:80px;padding:8px 16px;text-align:center}.status-stat.clickable{cursor:pointer;transition:background .2s}.status-stat.clickable:hover{background:#eee}.stat-value{color:#333;display:block;font-size:22px;font-weight:700}.stat-label{color:#888;display:block;font-size:11px;margin-top:2px}.stat-downloaded{color:#4caf50}.stat-glb{color:#1565c0}.stat-pending{color:#ff9800}.stat-noobj{color:#e57373}.stat-uploaded{color:#4caf50}.stat-not-uploaded{color:#9e9e9e}.status-stat-divider{align-self:stretch;background:#ddd;margin:4px;width:1px}.status-filter-active{align-items:center;color:#555;display:flex;font-size:13px;gap:8px;margin-top:10px}.btn-clear-filter{background:#fff;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:12px;padding:3px 10px;transition:all .2s}.btn-clear-filter:hover{background:#f5f5f5;border-color:#ccc}.card-download-status{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.download-badge{border-radius:4px;display:inline-block;font-size:10px;font-weight:600;padding:2px 7px;text-transform:uppercase}.download-badge.badge-glb-ready{background:#e8f5e9;color:#2e7d32}.download-badge.badge-no-glb{background:#fff3e0;color:#e65100}.download-badge.badge-spec{background:#fce4ec;color:#ad1457}.download-badge.badge-images{background:#f1f8e9;color:#558b2f}.detail-download-info{display:flex;flex-direction:column;gap:4px}.detail-download-row{color:#555;display:flex;font-size:12px;justify-content:space-between;padding:2px 0}.detail-download-row .status-complete{color:#2e7d32;font-weight:500}.detail-download-row .status-partial{color:#e65100;font-weight:500}.detail-download-row .status-failed{color:#c62828;font-weight:500}.swatch-CP{background:linear-gradient(135deg,#e8e8e8,silver)}.swatch-BN{background:linear-gradient(135deg,#c4b998,#a89a7c)}.swatch-SN{background:linear-gradient(135deg,#d4cfc4,#b8b0a0)}.swatch-BL{background:#1a1a1a}.swatch-2BZ{background:linear-gradient(135deg,#8b6914,#6b4f10)}.swatch-AF{background:linear-gradient(135deg,gold,#daa520)}.swatch-BGD{background:linear-gradient(135deg,#b8860b,#8b6914)}.swatch-TT{background:linear-gradient(135deg,#8b8682,#6b6360)}.swatch-BV{background:linear-gradient(135deg,#8b7355,#6b5535)}.swatch-PB{background:linear-gradient(135deg,#d4a844,#b8922c)}.swatch-2MB{background:#2a2a2a}.swatch-RGD{background:linear-gradient(135deg,#e8c8a8,#d4a878)}.swatch-WB{background:#fff;border-color:#ddd}@media (max-width:768px){.catalog-controls{align-items:stretch;flex-direction:column}.catalog-search{min-width:0;min-width:auto}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}}.placement-rules{margin:0 auto;max-width:1400px;padding:30px}.placement-rules-header{margin-bottom:24px}.placement-rules-header h1{color:#333;font-size:28px;font-weight:600;margin:0 0 6px}.placement-rules-header p{color:#666;font-size:14px;margin:0}.placement-rules-controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.placement-rules-controls input[type=text]{border:1px solid #ddd;border-radius:8px;flex:1 1;font-size:14px;min-width:200px;outline:none;padding:10px 14px;transition:border-color .2s}.placement-rules-controls input[type=text]:focus{border-color:#667eea}.placement-rules-controls select{background:#fff;border:1px solid #ddd;border-radius:8px;cursor:pointer;font-size:14px;outline:none;padding:10px 14px;transition:border-color .2s}.placement-rules-controls select:focus{border-color:#667eea}.placement-rules-summary{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:32px}.summary-card{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:14px;min-width:160px;padding:18px 24px}.summary-icon{font-size:28px}.summary-text{display:flex;flex-direction:column}.summary-value{color:#333;font-size:24px;font-weight:700}.summary-label{color:#888;font-size:12px;letter-spacing:.5px;text-transform:uppercase}.placement-rules-section{margin-bottom:36px}.placement-rules-section h2{border-bottom:2px solid #eee;color:#333;font-size:20px;font-weight:600;margin:0 0 16px;padding-bottom:8px}.rules-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(400px,1fr))}.rule-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;flex-direction:column;overflow:hidden;transition:box-shadow .2s}.rule-card:hover{box-shadow:0 4px 16px #0000001f}.rule-card-header{align-items:center;display:flex;gap:12px;justify-content:space-between;padding:16px 20px 12px}.rule-card-header h3{color:#333;font-size:16px;font-weight:600;margin:0}.type-badge{border-radius:20px;flex-shrink:0;font-size:11px;font-weight:700;letter-spacing:.5px;padding:3px 10px}.type-badge.hard{background:#fce4e4;color:#c0392b}.type-badge.soft{background:#fff3e0;color:#e67e22}.rule-card-body{flex:1 1;padding:0 20px 16px}.rule-description{color:#555;font-size:13px;line-height:1.55;margin:0 0 14px}.rule-meta{display:flex;flex-direction:column;gap:10px}.rule-meta-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.meta-label{color:#999;letter-spacing:.4px;min-width:72px;text-transform:uppercase}.category-badge,.meta-label{font-size:11px;font-weight:600}.category-badge{border-radius:20px;padding:2px 10px}.category-badge.collision{background:#fce4e4;color:#c0392b}.category-badge.clearance{background:#e8f5e9;color:#2e7d32}.category-badge.aesthetic{background:#ede7f6;color:#5e35b1}.category-badge.spatial{background:#e3f2fd;color:#1565c0}.category-badge.alignment{background:#fff8e1;color:#f9a825}.fixture-tag{background:#f0f0f0;border-radius:4px;color:#555;font-size:11px;padding:2px 8px}.weight-bar-container{align-items:center;display:flex;flex:1 1;gap:8px}.weight-bar{background:#eee;border-radius:4px;flex:1 1;height:8px;max-width:120px;overflow:hidden}.weight-bar-fill{background:linear-gradient(90deg,#f6d365,#fda085);border-radius:4px;height:100%;transition:width .3s ease}.weight-value{color:#666;font-size:12px;font-weight:600;min-width:28px}.param-tag{background:#e8f5e9;color:#2e7d32}.dep-tag,.param-tag{border-radius:4px;font-size:11px;padding:2px 8px}.dep-tag{background:#e3f2fd;color:#1565c0}.rule-notes{color:#888;font-size:12px;font-style:italic;line-height:1.4;margin:10px 0 0}.rule-card-footer{align-items:center;border-top:1px solid #f0f0f0;display:flex;gap:8px;padding:10px 20px}.status-dot{border-radius:50%;height:8px;width:8px}.status-dot.planned{background:#ffc107}.status-dot.implemented{background:#4caf50}.status-text{color:#999;font-size:12px}.rules-empty{color:#999;font-size:14px;padding:40px 20px;text-align:center}.btn-add-rule{background:#667eea;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 18px;transition:background .2s;white-space:nowrap}.btn-add-rule:hover{background:#5a6fd6}.add-rule-form{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;margin-bottom:24px;padding:24px}.add-rule-form h3{color:#333;font-size:18px;font-weight:600;margin:0 0 20px}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1 1}.form-group{margin-bottom:16px}.form-group label{color:#555;display:block;font-size:13px;font-weight:600;margin-bottom:6px}.form-group input[type=text],.form-group select,.form-group textarea{border:1px solid #ddd;border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:14px;outline:none;padding:10px 12px;transition:border-color .2s;width:100%}.form-group input[type=text]:focus,.form-group select:focus,.form-group textarea:focus{border-color:#667eea}.form-group input.read-only{background:#f5f5f5;color:#999}.radio-group{display:flex;gap:16px}.radio-label{align-items:center;cursor:pointer;display:flex!important;font-weight:400!important;gap:6px}.fixture-checkboxes{display:flex;flex-wrap:wrap;gap:10px}.checkbox-label{align-items:center;background:#f5f5f5;border-radius:6px;cursor:pointer;display:flex!important;font-size:13px;font-weight:400!important;gap:6px;padding:4px 10px;transition:background .15s}.checkbox-label:hover{background:#eee}.weight-slider{accent-color:#667eea;width:100%}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.btn-cancel{background:#fff;border:1px solid #ddd;border-radius:8px;color:#666;cursor:pointer;font-size:14px;padding:10px 20px;transition:background .2s}.btn-cancel:hover{background:#f5f5f5}.btn-save{background:#667eea;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:background .2s}.btn-save:hover{background:#5a6fd6}.btn-save:disabled{background:#b0b8d9;cursor:not-allowed}@media (max-width:1024px){.rules-grid{grid-template-columns:1fr}}@media (max-width:768px){.placement-rules{padding:16px}.form-row,.placement-rules-controls{flex-direction:column}.form-row{gap:0}.placement-rules-summary{flex-direction:column}.summary-card{min-width:0;min-width:auto}}.object-gallery-container{background-color:#f5f5f5;min-height:100vh;padding:2rem}.object-gallery-header{margin-bottom:3rem;text-align:center}.object-gallery-header h1{color:#333;font-size:2.5rem;font-weight:600;margin-bottom:.5rem}.object-gallery-header p{color:#666;font-size:1.1rem}.object-gallery-content{margin:0 auto;max-width:1400px}.object-category-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:3rem;padding:2rem}.object-category-section h2{border-bottom:2px solid #e0e0e0;color:#444;font-size:1.8rem;margin-bottom:1.5rem;padding-bottom:.5rem}.object-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.object-card{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:1rem;transition:all .3s ease}.object-card:hover{border-color:#4169e1;box-shadow:0 4px 12px #4169e133;transform:translateY(-2px)}.object-card.selected{background-color:#f0f4ff;border-color:#4169e1;box-shadow:0 4px 12px #4169e14d}.object-canvas{background:#fff;border:1px solid #f0f0f0;border-radius:4px;margin-bottom:.75rem}.object-label{color:#333;font-size:1rem;font-weight:600;margin-bottom:.25rem}.object-dimensions{color:#888;font-family:Courier New,monospace;font-size:.85rem}.object-detail-panel{animation:slideIn .3s ease;background:#fff;border-radius:12px;box-shadow:0 8px 24px #00000026;padding:2rem;position:fixed;right:2rem;top:50%;transform:translateY(-50%);width:300px;z-index:1000}@keyframes slideIn{0%{opacity:0;right:-300px}to{opacity:1;right:2rem}}.object-detail-panel h3{border-bottom:2px solid #e0e0e0;color:#333;font-size:1.4rem;margin-bottom:1rem;padding-bottom:.5rem}.object-detail-panel p{color:#666;font-size:.95rem;margin-bottom:.75rem}.object-detail-panel button{background-color:#4169e1;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;margin-top:1rem;padding:.5rem 1rem;transition:background-color .3s ease;width:100%}.object-detail-panel button:hover{background-color:#3458c5}@media (max-width:768px){.object-gallery-container{padding:1rem}.object-grid{gap:1rem;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.object-card{padding:.75rem}.object-canvas{height:150px;width:150px}.object-detail-panel{animation:slideUp .3s ease;border-radius:12px 12px 0 0;bottom:0;left:0;position:fixed;right:0;top:auto;transform:none;width:100%}@keyframes slideUp{0%{bottom:-100%}to{bottom:0}}}@media (prefers-color-scheme:dark){.object-gallery-container{background-color:#1a1a1a}.object-category-section{background:#2a2a2a}.object-category-section h2{border-bottom-color:#444;color:#e0e0e0}.object-card{background:#333;border-color:#444}.object-card:hover{border-color:#6495ed}.object-card.selected{background-color:#2a3f5f}.object-label{color:#e0e0e0}.object-dimensions{color:#aaa}.object-detail-panel{background:#2a2a2a}.object-detail-panel h3{border-bottom-color:#444;color:#e0e0e0}.object-detail-panel p{color:#aaa}}.fixture-browser{background:#f5f5f5;min-height:100vh;padding:20px}.fixtures-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin-top:20px}.fixture-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;flex-direction:column;max-width:400px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.fixture-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-4px)}.fixture-preview{background:#f0f0f0;cursor:pointer;height:250px;position:relative;width:100%}.fixture-info{display:flex;flex:1 1;flex-direction:column;padding:16px}.fixture-info h3{color:#333;font-size:18px;font-weight:600;margin:0 0 8px}.fixture-manufacturer{color:#666;font-size:14px;margin:0 0 4px}.fixture-model{color:#888;font-size:13px;margin:0 0 4px}.fixture-type{color:#1976d2;font-size:13px;margin:0 0 12px;text-transform:capitalize}.fixture-metadata{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.completeness-badge{color:#fff;font-weight:500}.completeness-badge,.quality-score{border-radius:4px;font-size:12px;padding:4px 8px}.quality-score{background:#e3f2fd;color:#1976d2}.compliance-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.compliance-badge{background:#f5f5f5;border:1px solid #ddd;border-radius:3px;color:#666;font-size:11px;padding:3px 6px}.fixture-actions{display:flex;gap:10px;margin-top:auto}.action-btn{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;flex:1 1;font-size:14px;padding:8px 12px;transition:all .2s ease}.action-btn:hover{background:#f5f5f5}.action-btn.add-btn{background:#1976d2;border-color:#1976d2;color:#fff}.action-btn.add-btn:hover{background:#1565c0}.images-viewer{align-items:center;display:flex;flex-direction:column;gap:20px;padding:20px}.main-image{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;height:400px;max-width:600px;object-fit:contain;width:100%}.image-thumbnails{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.thumbnail{background:#fff;border:2px solid #ddd;border-radius:4px;cursor:pointer;height:100px;object-fit:cover;transition:all .2s ease;width:100px}.thumbnail:hover{border-color:#1976d2;transform:scale(1.05)}.thumbnail.active{border-color:#1976d2;box-shadow:0 0 0 3px #1976d233}.fixture-thumbnail{background:#fff;border-radius:4px;cursor:pointer;height:230px;margin:10px 10px 0;object-fit:contain;width:calc(100% - 20px)}.fixture-thumbnail.with-3d{position:relative}.fixture-thumbnail.with-3d:after{background:#1976d2;border-radius:4px;color:#fff;content:"3D";font-size:12px;font-weight:700;padding:4px 8px;position:absolute;right:10px;top:10px}.specs-viewer{max-height:600px;overflow-y:auto;padding:20px}.spec-section{margin-bottom:30px}.spec-section h3{border-bottom:2px solid #e0e0e0;color:#1976d2;margin-bottom:15px;padding-bottom:10px}.spec-section p{line-height:1.6;margin:8px 0}.spec-section strong{color:#333;font-weight:600}.downloads-viewer{padding:20px}.downloads-list{display:flex;flex-direction:column;gap:10px;margin-top:15px}.download-item{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;gap:15px;padding:12px;transition:background .2s ease}.download-item:hover{background:#f5f5f5}.download-format{background:#1976d2;border-radius:4px;color:#fff;font-size:12px;font-weight:700;min-width:45px;padding:4px 8px;text-align:center}.download-description{color:#333;flex:1 1}.download-link{border:1px solid #1976d2;border-radius:4px;color:#1976d2;font-weight:500;padding:6px 12px;text-decoration:none;transition:all .2s ease}.download-link:hover{background:#1976d2;color:#fff}.modal-tabs{background:#fafafa;border-bottom:1px solid #e0e0e0;display:flex;gap:10px;padding:15px}.tab{background:#fff;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer;padding:8px 16px;transition:all .2s ease}.tab:hover{background:#f5f5f5}.tab.active{background:#1976d2;border-color:#1976d2;color:#fff}.fixture-modal .modal-content-area{background:#fff;min-height:500px}.modal-viewer{height:600px;width:100%}.texture-gallery-container{background-color:#f5f5f5;margin:0 auto;max-width:1400px;min-height:100vh;padding:20px}.gallery-header{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.gallery-header h1{color:#333;margin:0 0 15px}.gallery-controls{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.filter-select,.sort-select{background:#fff;cursor:pointer}.filter-select,.search-input,.sort-select{border:1px solid #ddd;border-radius:4px;padding:8px 12px}.search-input{flex:1 1;min-width:200px}.refresh-button{background:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px;transition:background .2s}.refresh-button:hover{background:#0056b3}.add-texture-button{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px;transition:background .2s}.add-texture-button:hover{background:#218838}.texture-count{background:#e9ecef;border-radius:4px;color:#666;font-size:14px;padding:8px 12px}.texture-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(4,1fr);padding:20px 0}.texture-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;cursor:pointer;overflow:hidden;transition:transform .2s,box-shadow .2s}.texture-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.texture-card.disabled{filter:grayscale(100%);opacity:.5}.texture-card.disabled:hover{opacity:.7}.disabled-overlay{background:#000000b3;border-radius:4px;color:#fff;font-size:14px;font-weight:700;left:50%;padding:8px 16px;position:absolute;top:50%;transform:translate(-50%,-50%)}.disabled-badge{background:#6c757d;border-radius:3px;color:#fff;font-size:11px;margin-left:4px;padding:2px 6px}.modal-disable-btn{border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 16px;transition:opacity .2s}.modal-disable-btn:hover{opacity:.8}.texture-preview{background:#f0f0f0;height:200px;overflow:hidden;position:relative;width:100%}.texture-preview img{height:100%;object-fit:cover;width:100%}.no-preview{align-items:center;color:#999;display:flex;font-size:14px;height:100%;justify-content:center;width:100%}.texture-info{padding:15px}.texture-info h3{color:#333;font-size:16px;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.texture-meta{display:flex;gap:8px;margin-bottom:8px}.type-badge{border-radius:3px;display:inline-block;font-size:12px;font-weight:500;padding:2px 8px;text-transform:uppercase}.type-badge.vinyl,.type-badge.vinyl_plank,.type-badge.vinyl_tile{background:#17a2b8;color:#fff}.type-badge.carpet{background:#28a745;color:#fff}.type-badge.wood{background:#6c757d;color:#fff}.type-badge.ceramic,.type-badge.tile{background:#fd7e14;color:#fff}.type-badge.marble,.type-badge.stone{background:#6f42c1;color:#fff}.verified-badge{background:#28a745;border-radius:3px;color:#fff;display:inline-block;font-size:12px;font-weight:500;padding:2px 8px}.manufacturer{color:#666;font-size:14px;margin:4px 0}.product-id{color:#999;font-family:monospace;font-size:12px;margin:4px 0}.modal-overlay{align-items:center;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:12px;max-height:90vh;max-width:1200px;overflow:hidden;position:relative;width:100%}.texture-modal .modal-body{display:block;max-height:80vh;overflow-y:auto}.modal-close{align-items:center;background:#ffffffe6;border:none;border-radius:50%;cursor:pointer;display:flex;font-size:24px;height:40px;justify-content:center;position:absolute;right:15px;top:15px;transition:background .2s;width:40px;z-index:10}.modal-close:hover{background:#fff;box-shadow:0 2px 8px #0003}.modal-viewer{background:#f0f0f0;flex:1 1;min-height:100%}.modal-details{background:#fff;padding:30px;width:100%}.modal-details h2{color:#333;font-size:24px;margin:0 0 20px}.detail-section{border-bottom:1px solid #eee;margin-bottom:25px;padding-bottom:20px}.detail-section:last-child{border-bottom:none}.detail-section h3{color:#666;font-size:14px;font-weight:600;margin:0 0 12px;text-transform:uppercase}.detail-section p{color:#333;font-size:14px;margin:8px 0}.detail-section strong{color:#666;margin-right:8px}.file-path{background:#f5f5f5;border-radius:4px;font-family:monospace;font-size:12px;padding:8px;word-break:break-all}.error-message,.texture-gallery-loading{background:#fff;border-radius:8px;margin:20px;padding:40px;text-align:center}.error-message{background:#f8d7da;border:1px solid #f5c6cb;color:#dc3545}.modal-actions{display:flex;gap:10px;position:absolute;right:70px;top:15px;z-index:10}.modal-cancel-btn,.modal-delete-btn,.modal-edit-btn,.modal-save-btn{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s}.modal-edit-btn{background:#007bff;color:#fff}.modal-edit-btn:hover{background:#0056b3}.modal-delete-btn{background:#dc3545;color:#fff}.modal-delete-btn:hover{background:#c82333}.modal-save-btn{background:#28a745;color:#fff}.modal-save-btn:hover{background:#218838}.modal-cancel-btn{background:#6c757d;color:#fff}.modal-cancel-btn:hover{background:#5a6268}.edit-input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px;transition:border-color .2s;width:100%}.edit-input:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff1a;outline:none}.edit-input.edit-title{font-size:24px;font-weight:700;margin-bottom:20px;padding:10px}.edit-field{margin-bottom:15px}.edit-field label{color:#666;display:block;font-size:13px;font-weight:600;margin-bottom:5px}.edit-field input[type=checkbox]{margin-right:8px}.delete-confirm-overlay{align-items:center;background:#000c;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.delete-confirm-dialog{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0000004d;max-width:400px;padding:30px;width:90%}.delete-confirm-dialog h3{color:#333;font-size:20px;margin:0 0 20px}.delete-confirm-dialog p{color:#666;line-height:1.6;margin:10px 0}.delete-warning{color:#dc3545;font-weight:500;margin:15px 0}.delete-confirm-buttons{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.cancel-delete-btn,.confirm-delete-btn{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.confirm-delete-btn{background:#dc3545;color:#fff}.confirm-delete-btn:hover{background:#c82333;transform:translateY(-1px)}.cancel-delete-btn{background:#e9ecef;color:#333}.cancel-delete-btn:hover{background:#dee2e6}@media (max-width:768px){.texture-grid{gap:15px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.texture-modal .modal-body{flex-direction:column;height:auto}.modal-viewer{height:300px}.modal-details{width:100%}.gallery-controls{align-items:stretch;flex-direction:column}.search-input{min-width:100%}.modal-actions{justify-content:center;margin-top:10px;position:static}.delete-confirm-dialog{padding:20px}}.seamless-test-overlay{align-items:center;background:#000c;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:10002}.seamless-test-container{background:#fff;border-radius:10px;max-height:90vh;max-width:90%;overflow-y:auto;padding:30px;position:relative}.seamless-close{background:none;border:none;color:#666;cursor:pointer;font-size:32px;line-height:1;padding:5px 10px;position:absolute;right:10px;top:10px}.seamless-close:hover{color:#333}.seamless-test-container h3{color:#333;font-size:24px;margin-bottom:20px;margin-top:0;text-align:center}.seamless-preview-grid{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin-bottom:20px}.seamless-test-surface{text-align:center}.seamless-test-surface h4{color:#555;font-size:18px;margin-bottom:15px}.seamless-grid,.seamless-wall{background-color:#f5f5f5;box-shadow:0 4px 8px #0000001a}.seamless-info{background:#f9f9f9;border-radius:5px;margin-top:20px;padding:15px}.seamless-info p{color:#333;font-size:14px;margin:8px 0}.seamless-info strong{color:#555;margin-right:5px}.modal-test-btn{background:#4caf50;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.modal-test-btn:hover{background:#45a049;transform:translateY(-1px)}.bdr-summary{align-items:center;background:#ffffff1a;border-radius:6px;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px;padding:12px 16px}.bdr-summary-label{font-size:18px;font-weight:600}.bdr-summary-warn{color:#f9a825;font-size:13px}.bdr-summary-nolayout{color:#aaa;font-size:13px}.bdr-summary-meta{color:#ccc;font-size:13px;margin-left:auto}.bdr-layout{display:flex;gap:20px}.bdr-list{border:1px solid #fff3;border-radius:6px;flex-shrink:0;max-height:700px;overflow-y:auto;width:300px}.bdr-list-item{border-bottom:1px solid #ffffff1a;border-left:3px solid #0000;cursor:pointer;padding:10px 12px;transition:background .15s}.bdr-list-item:hover{background:#ffffff1a}.bdr-list-item.selected{background:#ffffff26}.bdr-list-item.pass{border-left-color:#4caf50}.bdr-list-item.warn{border-left-color:#f9a825}.bdr-list-item.error{border-left-color:#d32f2f}.bdr-list-item.nolayout{border-left-color:#666;opacity:.6}.bdr-list-info{min-width:0}.bdr-list-name{font-size:14px;font-weight:500}.bdr-list-struct{color:#aaa;font-size:12px;font-weight:400}.bdr-list-meta{color:#aaa;font-size:12px;margin-top:2px}.bdr-list-fixtures{display:flex;flex-direction:column;gap:3px;margin-top:6px}.bdr-list-fix{align-items:center;display:flex;gap:6px}.bdr-list-fix-label{color:#bbb;font-size:11px;min-width:50px}.bdr-stage-dots{align-items:center;display:flex;gap:3px}.bdr-stage-micro{color:#777;font-size:9px;font-weight:600;text-transform:uppercase}.bdr-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:8px;width:8px}.bdr-dot.bdr-pass{background:#4caf50}.bdr-dot.bdr-warn{background:#f9a825}.bdr-dot.bdr-error{background:#d32f2f}.bdr-dot.bdr-skip{background:#666}.bdr-detail{flex:1 1;min-width:0}.bdr-detail h2{color:#fff;margin-bottom:12px;margin-top:0}.bdr-ids{color:#ccc;font-size:13px;line-height:1.8;margin-bottom:10px}.bdr-id{background:#ffffff26;border-radius:3px;color:#fff;font-size:12px;padding:1px 6px;-webkit-user-select:all;user-select:all}.bdr-link{color:#64b5f6;font-size:12px;margin-left:8px;text-decoration:none}.bdr-link:hover{text-decoration:underline}.bdr-room-info{color:#ccc;display:flex;font-size:14px;gap:20px;margin-bottom:12px}.bdr-error{color:#d32f2f;font-weight:500}.bdr-nolayout-msg{color:#aaa;font-style:italic}.bdr-placeholder{color:#aaa;margin-top:40px;text-align:center}.bdr-svg{background:#fafafa;border:1px solid #ccc;border-radius:4px}.bdr-svg-placeholder{color:#999;padding:40px;text-align:center}.bdr-legend{display:flex;font-size:13px;gap:16px;margin-top:12px}.bdr-legend-item{align-items:center;display:flex;gap:6px}.bdr-legend-swatch{border-radius:2px;display:inline-block;height:12px;width:16px}.bdr-fixture-table{border-collapse:collapse;font-size:11px;line-height:1.3;margin-top:16px;width:100%}.bdr-fixture-table th{border-bottom:1px solid #ffffff26;color:#999;font-size:10px;font-weight:600;padding:2px 6px;text-align:left;text-transform:uppercase}.bdr-fixture-table td{padding:1px 6px;vertical-align:top}.bdr-fixture-table td:first-child{white-space:nowrap}.bdr-fixture-type-dot{border-radius:2px;display:inline-block;height:6px;margin-right:4px;vertical-align:middle;width:6px}.bdr-stage-label{color:#777;font-weight:600;margin-right:3px}.bdr-status-badge{font-weight:700;text-transform:uppercase}.bdr-status-badge.bdr-st-pass{color:#81c784}.bdr-status-badge.bdr-st-warn{color:#fdd835}.bdr-status-badge.bdr-st-error{color:#ef9a9a}.bdr-issue-line:before{border-radius:50%;content:"";display:inline-block;height:4px;margin-right:3px;vertical-align:middle;width:4px}.bdr-issue-line.bdr-sev-error:before{background:#d32f2f}.bdr-issue-line.bdr-sev-warning:before{background:#f9a825}.bdr-issue-line{color:#ccc;display:block;padding-left:20px}.bdr-no-issues{color:#555}.btr-page{color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.btr-page h1,.btr-page h2,.btr-page h3,.btr-page h4{color:#fff;margin-bottom:12px}.btr-layout{display:flex;gap:20px}.btr-list{border:1px solid #fff3;border-radius:6px;flex-shrink:0;max-height:700px;overflow-y:auto;width:300px}.btr-list-item{border-bottom:1px solid #ffffff1a;border-left:3px solid #0000;cursor:pointer;padding:10px 12px;transition:background .15s}.btr-list-item:hover{background:#ffffff1a}.btr-list-item.selected{background:#ffffff26}.btr-list-item.pass{border-left-color:#4caf50}.btr-list-item.warn{border-left-color:#f9a825}.btr-list-item.error{border-left-color:#d32f2f}.btr-list-item.nolayout{border-left-color:#666;opacity:.6}.btr-list-info{flex:1 1;min-width:0}.btr-list-name{font-size:14px;font-weight:500}.btr-list-struct{color:#aaa;font-size:12px;font-weight:400}.btr-list-meta{color:#aaa;font-size:12px;margin-top:2px}.btr-badge{border-radius:4px;display:inline-block;flex-shrink:0;font-size:11px;font-weight:700;margin-left:8px;padding:2px 8px;text-transform:uppercase}.btr-badge.pass{background:#c8e6c9;color:#2e7d32}.btr-badge.fail{background:#ffcdd2;color:#c62828}.btr-layout-badge{border-radius:3px;display:inline-block;font-size:11px;font-weight:600;margin-left:6px;padding:1px 6px}.btr-layout-badge.has-layout{background:#e8f5e9;color:#2e7d32}.btr-layout-badge.no-layout{background:#fff3e0;color:#e65100}.btr-detail{flex:1 1;min-width:0}.btr-detail h2{margin-bottom:12px;margin-top:0}.btr-ids{color:#ccc;font-size:13px;line-height:1.8;margin-bottom:10px}.btr-id{background:#ffffff26;border-radius:3px;color:#fff;font-size:12px;padding:1px 6px;-webkit-user-select:all;user-select:all}.btr-link{color:#64b5f6;font-size:12px;margin-left:8px;text-decoration:none}.btr-link:hover{text-decoration:underline}.btr-room-info{color:#ccc;display:flex;font-size:14px;gap:20px;margin-bottom:12px}.btr-section{border-bottom:1px solid #ffffff1a;margin-bottom:24px;padding-bottom:16px}.btr-section h3{align-items:center;display:flex}.btr-svg{background:#fafafa;border:1px solid #ccc;border-radius:4px}.btr-svg-placeholder{color:#999;padding:40px;text-align:center}.btr-errors{margin-top:12px}.btr-errors table{border-collapse:collapse;font-size:13px;width:100%}.btr-errors td,.btr-errors th{border:1px solid #fff3;padding:6px 10px;text-align:left}.btr-errors th{background:#ffffff1a;font-weight:600}.btr-error{color:#c62828;font-weight:500}.btr-placeholder{color:#aaa;margin-top:40px;text-align:center}.render-page{background:#fff;flex-direction:column;overflow:hidden;position:relative}.render-page,.render-page-error,.render-page-loading{align-items:center;display:flex;justify-content:center}.render-page-error,.render-page-loading{color:#666;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:18px;height:1080px;width:1920px}.render-page-error{color:#c00}.render-page-scale-label{bottom:20px;color:#666;font-size:14px;padding:4px 8px;right:20px}.render-page-scale-label,.render-page-wall-label{background:#ffffffe6;border-radius:4px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:absolute}.render-page-wall-label{color:#333;font-size:18px;font-weight:700;left:20px;padding:6px 12px;top:20px}.render-page canvas{max-height:100%;max-width:100%}
/*# sourceMappingURL=main.2e840a5f.css.map*/