:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#000000de;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}#root{width:100%;height:100vh}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}}.ifc-viewer-container{display:flex;flex-direction:column;width:100%;height:100vh}.ifc-upload-section{padding:16px;background-color:#f0f0f0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.ifc-upload-label{display:inline-block;padding:8px 16px;background-color:#2c76c7;color:#fff;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s}.ifc-controls{display:flex;align-items:center;gap:16px}.ifc-tabs{display:flex;gap:2px}.ifc-tabs button{padding:8px 16px;background-color:#040404;border:1px solid #ddd;border-radius:4px 4px 0 0;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent}.ifc-tabs button.active{background-color:#000;border-bottom:2px solid #2c76c7;font-weight:500}.ifc-tabs button:hover:not(.active){background-color:#000}.ifc-controls button:not(.ifc-tabs button){padding:8px 16px;background-color:#0c0c0c;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:background-color .2s}.ifc-controls button:not(.ifc-tabs button):hover{background-color:#e5e5e5}.ifc-viewer-content{flex:1;min-height:0}.app-container{display:flex;width:100%;height:100vh;position:relative}.viewer-container{flex:1;height:100%;position:relative}.controls-panel{position:absolute;right:0;top:0;width:300px;height:100%;background-color:#ffffffe6;padding:15px;box-shadow:-2px 0 10px #0003;overflow-y:auto;z-index:10}.file-input-section,.actions-section,.filters-section{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ddd}.checkbox-container{display:flex;flex-direction:column;max-height:200px;overflow-y:auto;margin-bottom:15px;padding:5px;border:1px solid #eee;border-radius:4px}.checkbox-label{display:flex;align-items:center;margin-bottom:6px;font-size:14px}.checkbox-label input{margin-right:8px}button{padding:8px 16px;margin-right:10px;margin-bottom:10px;background-color:#4a90e2;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}button:hover{background-color:#357abd}button:disabled{background-color:#ccc;cursor:not-allowed}h2{margin-top:0;font-size:20px;margin-bottom:15px}h3{font-size:16px;margin-top:10px;margin-bottom:10px}input[type=file]{width:100%;margin-bottom:10px}.mobile-toggle{display:none}@media (max-width: 768px){.controls-panel{transform:translateY(100%);transition:transform .3s ease-in-out;top:auto;bottom:0;width:100%;height:70%;max-height:80vh}.controls-panel.mobile-visible{transform:translateY(0)}.mobile-toggle{display:block;position:absolute;bottom:20px;right:20px;width:50px;height:50px;border-radius:50%;background-color:#4a90e2;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px #0000004d;z-index:20}}.app-container{display:flex;flex-direction:column;width:100%;height:100vh;overflow:hidden}.app-header{background-color:#1a1a1a;color:#fff;padding:10px 20px;text-align:center}.app-header h1{margin:0;font-size:1.5rem}main{flex:1;min-height:0}.ifc-viewer-container{width:100%;height:100%;display:flex;flex-direction:column;position:relative;overflow-x:hidden}.ifc-viewer-container.dark-mode{color:#f0f0f0;background-color:#222}.ifc-viewer-container.light-mode{color:#333;background-color:#fff}.ifc-viewer-content{flex:1;min-height:400px;position:relative}.ifc-upload-section{padding:10px;background-color:#f5f5f5;display:flex;align-items:center;justify-content:space-between}.dark-mode .ifc-upload-section{background-color:#333}.ifc-upload-label{display:inline-block;padding:5px 15px;background-color:#2c76c7;color:#fff;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s;margin-right:10px}.ifc-upload-label:hover{background-color:#1b5ba3}.toolbarx{display:flex;gap:12px;align-items:center;width:100%}.theme-toggle{padding:5px 15px;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s}.theme-toggle.light{background-color:#f5f5f5;color:#333;border:1px solid #ccc}.theme-toggle.dark{background-color:#555;color:#fff;border:1px solid #777}.standard-button{padding:5px 15px;background-color:#4285f4;color:#fff;border:none;border-radius:4px;cursor:pointer;margin-right:10px}.standard-button:hover{background-color:#3367d6}.dark-mode .standard-button{background-color:#555;color:#fff}.reload-button{padding:5px 15px;background-color:#4285f4;color:#fff;border:none;border-radius:4px;cursor:pointer}.reload-button:hover{background-color:#3367d6}.reload-button:disabled{background-color:#ccc;cursor:not-allowed}.ifc-controls{display:flex;justify-content:center;align-items:center;gap:16px;margin:0!important}.ifc-tabs{display:flex;gap:5px}.ifc-tabs button{padding:5px 15px;background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:all .2s}.ifc-tabs button.active{background-color:#4285f4;color:#fff;border-color:#4285f4}.ifc-tabs button:hover:not(.active){background-color:#e8e8e8}.dark-mode .ifc-tabs button{background-color:#444;border-color:#555;color:#f0f0f0}.dark-mode .ifc-tabs button.active{background-color:#4285f4;color:#fff;border-color:#2a5db0}.dark-mode .ifc-tabs button:hover:not(.active){background-color:#555}.ifc-buttons{display:flex;gap:5px}.ifc-buttons button{padding:5px 15px;border:1px solid #ccc;background:none;border-radius:4px;cursor:pointer}.dark-mode .ifc-buttons button{border-color:#555;color:#ddd}.dark-mode .ifc-controls button:not(.ifc-tabs button){background-color:#444;border-color:#555;color:#f0f0f0}.dark-mode .ifc-controls button:not(.ifc-tabs button):hover{background-color:#555}.status-message{font-style:italic;color:#666}.dark-mode .status-message{color:#aaa}.error-message{background-color:#ffebee;color:#c62828;padding:10px;margin:10px 0;border-radius:4px;display:flex;justify-content:space-between;align-items:center}.error-message button{background-color:transparent;border:1px solid #c62828;color:#c62828;padding:4px 8px;border-radius:4px;cursor:pointer}.dark-mode .error-message{background-color:#4a0000;color:#ffcdd2}.dark-mode .error-message button{border-color:#ffcdd2;color:#ffcdd2}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;z-index:0}.loading-spinner{border:4px solid rgba(255,255,255,.3);border-radius:50%;border-top:4px solid white;width:40px;height:40px;animation:spin 1s linear infinite;margin-bottom:10px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.hider-toggle-button{position:absolute;top:200px;right:70px;z-index:1000;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;background-color:#2c76c7;color:#fff;box-shadow:0 2px 10px #0003;cursor:pointer}.info-toggle-button{position:absolute;top:280px;right:70px;z-index:100;width:50px;height:50px;border-radius:50%}.floating-toggle-button{position:absolute;z-index:1000;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:#2c76c7;color:#fff;box-shadow:0 2px 10px #0003;cursor:pointer;border-radius:50%;border:none}.floating-toggle-button:hover{background-color:#1b5ba3}.floating-panel{position:absolute;z-index:999;display:none;box-shadow:0 4px 12px #00000026;border-radius:8px;background-color:#fff;overflow-y:auto;max-height:500px}.floating-panel.visible{display:block}.properties-toggle-button{top:20px;right:70px}.attributes-toggle-button{top:20px;right:120px}.properties-panel{top:70px;right:70px;width:350px}.attributes-panel{top:70px;right:120px;width:350px}.hider-panel{position:fixed;top:80px;right:20px;width:300px;max-height:500px;overflow-y:auto;z-index:999;display:none;box-shadow:0 4px 12px #00000026;border-radius:8px;transition:right .3s ease-in-out}.hider-panel.visible{display:block}.dark-mode{color:#fff}.light-mode{color:#333}.dark-mode .floating-panel{background-color:#333;color:#f0f0f0}bim-checkbox{margin-bottom:8px}.switch-container{display:flex;align-items:center;margin-right:15px}.switch-container label{margin-right:8px}.toggle-switch{position:relative;width:50px;height:24px;background-color:#ccc;border-radius:12px;cursor:pointer;transition:background-color .3s}.toggle-switch.active{background-color:#4285f4}.toggle-slider{position:absolute;top:2px;left:2px;width:20px;height:20px;background-color:#fff;border-radius:50%;transition:transform .3s}.toggle-switch.active .toggle-slider{transform:translate(26px)}.dark-mode .toggle-switch{background-color:#555}.dark-mode .toggle-switch.active{background-color:#4285f4}.tab-switch-container{display:flex;justify-content:center}.tab-switch{position:relative;display:flex;background-color:#dfdfdf;border-radius:20px;padding:2px;width:fit-content;margin:0 auto}.dark-mode .tab-switch{background-color:#444}.tab-option{position:relative;z-index:2;padding:6px 16px;cursor:pointer;text-align:center;font-weight:500;border-radius:18px;transition:color .3s ease;min-width:100px}.tab-option.active{color:#fff}.tab-slider{position:absolute;height:calc(100% - 4px);border-radius:18px;background-color:#4285f4;transition:.3s ease;z-index:1;top:2px;left:2px;width:calc(50% - 2px)}.tab-option:nth-child(2).active~.tab-slider{transform:translate(calc(100% + 2px))}.ifc-tabs{display:none}.ifc-viewer-wrapper{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.fullscreen-button{display:flex;align-items:center;justify-content:center;padding:4px;background-color:transparent;color:#4a5568;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;margin-left:8px}.fullscreen-button:hover{background-color:#c9c9c9}.ifc-viewer-wrapper:fullscreen{width:100vw;height:100vh;overflow:hidden;padding:0;background-color:#fff}.ifc-viewer-wrapper.dark-mode:fullscreen{background-color:#333}.ifc-viewer-wrapper:fullscreen .ifc-viewer-container{height:100vh}.ifc-viewer-wrapper:fullscreen .ifc-viewer-content{height:calc(100vh - 60px)}.fullscreen-icon{display:flex;align-items:center;justify-content:center}.fullscreen-icon svg{width:16px;height:16px;stroke:#fff}.upload-button{display:flex;align-items:center;gap:8px;background-color:#4a6bff;color:#fff;border:none;border-radius:4px;padding:8px 12px;cursor:pointer;font-weight:500;transition:background-color .2s}.upload-button:hover{background-color:#3451d1}.model-info{background-color:#f0f0f0;padding:8px 12px;border-radius:4px;font-size:.9rem;display:flex;align-items:center;color:#333;border:1px solid #ddd;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dark-mode .model-info{background-color:#444;color:#eee;border-color:#555}.toolbarx{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.dark-mode .toolbarx{background-color:#333;border-bottom:1px solid #444}.upload-button.loading{background-color:gray;cursor:not-allowed}.upload-button.loading:after{content:"";display:inline-block;width:12px;height:12px;margin-left:8px;border:2px solid #fff;border-radius:50%;border-top-color:transparent;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.file-upload-container{display:inline-block;margin-right:10px}.upload-button{background-color:#4a69bd;color:#fff;border:none;padding:8px 12px;border-radius:4px;cursor:pointer;transition:background-color .3s}.upload-button:hover{background-color:#384d9c}.file-upload-container{display:inline-block;margin-left:8px}.file-upload-container input[type=file]{display:none}
