:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}html,body,#root{height:100%;margin:0;width:100%;background:linear-gradient(135deg,#f5f7fa,#e8ecf1)}.App{margin:0 auto;padding:2rem;text-align:center}.weather-section{margin-top:2rem}button{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:16px;margin-top:1rem}button:hover{background-color:#45a049}.error{color:red}.page{display:flex;flex-direction:column;height:100vh;width:100vh}.header{height:60px;background:linear-gradient(135deg,#f5f7fa,#e8ecf1);flex-shrink:0;top:40vh}.footer{height:auto;background:linear-gradient(135deg,#f5f7fa,#e8ecf1);flex-shrink:0;max-height:300px;overflow-y:auto}.viewer{flex:1;background:#fff;position:relative;z-index:auto}.viewer canvas{width:100%!important;height:100%!important;display:block}.reset-camera-btn{position:absolute;top:16px;right:16px;width:44px;height:44px;background:#fffffff2;border:1px solid #ddd;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1001;transition:all .2s ease;box-shadow:0 2px 8px #0000001a;padding:0;margin:0}.reset-camera-btn:hover{background:#fff;box-shadow:0 4px 12px #00000026;transform:translateY(-1px);border:1px solid orange}.reset-camera-btn:active{transform:translateY(0);box-shadow:0 2px 6px #0000001a}.reset-camera-btn svg{color:#333}.main-content{flex:1;display:flex;gap:1.5rem;padding:1.5rem;max-width:1600px;width:100%;margin:0 auto;padding-left:0}.viewer-column{min-width:0;flex:1;background:#fff;position:relative;box-sizing:border-box;overflow:hidden;height:70vh;border:1px solid #ddd;box-shadow:0 10px 30px #00000040;border-radius:10px;margin:10px 10px 10px 0;z-index:100;width:100%!important}.data-column{flex:0 0 400px;display:flex;flex-direction:column;gap:1rem}.card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 4px #0000001a}.card-title{font-size:1.25rem;font-weight:600;color:#1f2937;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:2px solid #e5e7eb}.device-table{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse}thead{background:#f9fafb}th{padding:.75rem;text-align:left;font-size:.875rem;font-weight:600;color:#6b7280;text-transform:uppercase;border-bottom:2px solid #e5e7eb}td{padding:.875rem .75rem;border-bottom:1px solid #f3f4f6;font-size:.875rem}tbody tr:hover{background:#f9fafb}.status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:600}.status-dot{width:6px;height:6px;border-radius:50%}.device-id{font-weight:600;color:#667eea}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.stat-card{background:#f9fafb;padding:1rem;border-radius:8px;border-left:4px solid #667eea}.stat-label{font-size:.75rem;color:#6b7280;text-transform:uppercase;font-weight:600;margin-bottom:.25rem}.stat-value{font-size:1.5rem;font-weight:700;color:#1f2937}@media(max-width:1024px){.main-content{flex-direction:column;padding:1rem;gap:1rem}.viewer-column{order:1}.data-column{order:2;flex:1;width:100%}.viewer{height:400px}.header h1{font-size:1.25rem}.header,.card{padding:1rem}.stats-grid{grid-template-columns:1fr}}@media(max-width:640px){.viewer{height:300px}.device-table{font-size:.75rem}th,td{padding:.5rem .375rem}.card-title{font-size:1rem}.stat-value{font-size:1.25rem}}.dxf-canvas{position:absolute!important;top:0!important;left:0!important;width:100%!important;height:100%!important}.bms-header{background:#fff;color:#1e293b;box-shadow:0 1px 3px #0000001a;border-bottom:1px solid #e2e8f0}.bms-header-container{padding:1rem 1.5rem}.bms-header-content{display:flex;align-items:center;justify-content:space-between;gap:1rem}.bms-header-left{display:flex;align-items:center;gap:1rem}.bms-logo{background:#2563eb;padding:.5rem;border-radius:.5rem;box-shadow:0 1px 2px #0000000d;display:flex;align-items:center;justify-content:center}.bms-logo-icon{width:1.5rem;height:1.5rem;color:#fff}.bms-title-section{display:flex;flex-direction:column}.bms-title{font-size:1.5rem;font-weight:700;margin:0;letter-spacing:-.025em}.bms-subtitle{font-size:.875rem;color:#64748b;margin:0}.bms-status-desktop{display:none;align-items:center;gap:.5rem;background:#f8fafc;padding:.5rem 1rem;border-radius:.5rem;border:1px solid #e2e8f0}@media(min-width:768px){.bms-status-desktop{display:flex}}.bms-status-dot{width:.5rem;height:.5rem;border-radius:50%}.bms-status-dot.connected{background:#22c55e;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.bms-status-dot.disconnected{background:#ef4444}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.bms-status-text{font-size:.875rem;font-weight:500;color:#334155}.bms-actions{display:flex;align-items:center;gap:.5rem}.bms-icon-btn{padding:.5rem;background:transparent;border:none;border-radius:.5rem;cursor:pointer;color:#64748b;transition:all .2s;display:flex;align-items:center;justify-content:center}.bms-icon-btn:hover{background:#f1f5f9;color:#0f172a}.bms-icon{width:1.25rem;height:1.25rem}.bms-mobile-menu{display:none}@media(max-width:767px){.bms-mobile-menu{display:flex}}.bms-mobile-status{margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0}@media(min-width:768px){.bms-mobile-status{display:none}}.bms-status-mobile{display:flex;align-items:center;gap:.5rem;background:#f8fafc;padding:.5rem 1rem;border-radius:.5rem;border:1px solid #e2e8f0;margin-bottom:.75rem}@media(max-width:640px){.bms-title{font-size:1.125rem}.bms-subtitle{font-size:.75rem}.bms-header-container{padding:.75rem 1rem}}
