:root{--orange: #FF6B35;--orange-light: #FF8C5A;--orange-pale: rgba(255, 107, 53, .12);--orange-glow: rgba(255, 107, 53, .35);--dark: #1a1a2e;--dark2: #16213e;--bg: #f0f2f5;--card: #ffffff;--border: #e2e8f0;--border2: #cbd5e1;--text1: #1e293b;--text2: #475569;--text3: #94a3b8;--success: #22c55e;--success-bg: #f0fdf4;--warning: #f59e0b;--warning-bg: #fffbeb;--error: #ef4444;--error-bg: #fef2f2;--info: #3b82f6;--info-bg: #eff6ff;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 3px rgba(0,0,0,.08), 0 4px 16px rgba(0,0,0,.06);--shadow-lg: 0 8px 32px rgba(0,0,0,.12);--transition: all .2s ease}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,sans-serif;background:var(--bg);color:var(--text1);min-height:100vh;-webkit-font-smoothing:antialiased}.app-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.main-content{display:flex;flex:1;overflow:hidden;gap:0}.shelter-area{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:16px;gap:12px}.header{background:var(--dark);height:56px;display:flex;align-items:center;padding:0 20px;gap:16px;flex-shrink:0;border-bottom:2px solid var(--orange)}.header-logo{display:flex;align-items:center;gap:8px;text-decoration:none}.header-logo-icon{width:28px;height:28px;background:var(--orange);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff}.header-logo-text{font-size:15px;font-weight:700;color:#fff;letter-spacing:.5px}.header-logo-text span{color:var(--orange)}.header-sep{width:1px;height:24px;background:#ffffff26}.header-device{display:flex;align-items:center;gap:8px;cursor:pointer}.header-device-label{font-size:12px;color:#ffffff80}.header-device-id{font-size:13px;font-weight:600;color:#fff}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text3);transition:var(--transition)}.status-dot.connected{background:var(--success);box-shadow:0 0 6px var(--success);animation:pulse 2s infinite}.status-dot.connecting{background:var(--warning);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.status-label{font-size:12px;color:#fff9}.status-label.connected{color:var(--success)}.status-label.connecting{color:var(--warning)}.header-spacer{flex:1}.header-btn{background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);color:#ffffffb3;padding:6px 12px;font-size:12px;cursor:pointer;transition:var(--transition)}.header-btn:hover{background:#ffffff24;color:#fff}.sensor-bar{display:flex;gap:10px;flex-shrink:0}.sensor-chip{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:8px 14px;flex:1;min-width:0;transition:var(--transition);box-shadow:var(--shadow)}.sensor-chip:hover{border-color:var(--orange);transform:translateY(-1px)}.sensor-chip-icon{font-size:18px;flex-shrink:0}.sensor-chip-data{display:flex;flex-direction:column;min-width:0}.sensor-chip-label{font-size:10px;color:var(--text3);font-weight:500}.sensor-chip-value{font-size:15px;font-weight:700;color:var(--text1);white-space:nowrap}.sensor-chip-sub{font-size:10px;color:var(--text2)}.sensor-chip.no-conn .sensor-chip-value{color:var(--text3)}.shelter-map-container{flex:1;background:var(--card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.shelter-map-container svg{width:100%;height:100%;max-width:960px}.zone-clickable{cursor:pointer;transition:all .18s ease}.zone-clickable:hover rect,.zone-clickable:hover path,.zone-clickable:hover circle{filter:brightness(.92)}.zone-active rect{filter:brightness(.88)}.control-panel{width:0;background:var(--card);border-left:1px solid var(--border);overflow:hidden;transition:width .25s cubic-bezier(.4,0,.2,1);flex-shrink:0;display:flex;flex-direction:column}.control-panel.open{width:340px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.panel-header-left{display:flex;align-items:center;gap:10px}.panel-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:var(--orange-pale)}.panel-title{font-size:15px;font-weight:700;color:var(--text1)}.panel-subtitle{font-size:11px;color:var(--text3);margin-top:1px}.panel-close{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--text2);transition:var(--transition)}.panel-close:hover{background:var(--bg)}.panel-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:14px}.ctrl-section{display:flex;flex-direction:column;gap:8px}.ctrl-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.5px}.ctrl-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.pwr-btn{width:52px;height:52px;border-radius:50%;border:2px solid var(--border2);background:var(--bg);cursor:pointer;font-size:22px;display:flex;align-items:center;justify-content:center;transition:var(--transition);flex-shrink:0}.pwr-btn.on{background:var(--orange);border-color:var(--orange);box-shadow:0 0 16px var(--orange-glow);color:#fff}.pwr-btn:hover{transform:scale(1.05)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600}.badge.on{background:var(--success-bg);color:var(--success)}.badge.off{background:var(--bg);color:var(--text3)}.badge.err{background:var(--error-bg);color:var(--error)}.badge.warn{background:var(--warning-bg);color:var(--warning)}.btn-group{display:flex;gap:6px;flex-wrap:wrap}.btn-group-btn{flex:1;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border2);background:var(--bg);font-size:12px;font-weight:600;color:var(--text2);cursor:pointer;transition:var(--transition);text-align:center;white-space:nowrap}.btn-group-btn.active{background:var(--orange);border-color:var(--orange);color:#fff}.btn-group-btn:hover:not(.active){border-color:var(--orange);color:var(--orange)}.range-wrap{display:flex;flex-direction:column;gap:6px}.range-row{display:flex;align-items:center;gap:10px}.range-input{flex:1;height:4px;accent-color:var(--orange);cursor:pointer}.range-val{font-size:13px;font-weight:700;color:var(--text1);min-width:36px;text-align:right}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.stat-item{background:var(--bg);border-radius:var(--radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:2px}.stat-item-label{font-size:10px;color:var(--text3);font-weight:500}.stat-item-value{font-size:18px;font-weight:700;color:var(--text1)}.stat-item-unit{font-size:10px;color:var(--text2)}.ch-grid{display:grid;gap:8px}.ch-grid-2{grid-template-columns:repeat(2,1fr)}.ch-grid-3{grid-template-columns:repeat(3,1fr)}.ch-grid-5{grid-template-columns:repeat(5,1fr)}.ch-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--bg);cursor:pointer;transition:var(--transition)}.ch-btn.on{border-color:var(--success);background:var(--success-bg)}.ch-btn.on .ch-btn-num{color:var(--success)}.ch-btn.on .ch-btn-led{background:var(--success);box-shadow:0 0 6px var(--success)}.ch-btn:hover:not(.on){border-color:var(--orange);background:var(--orange-pale)}.ch-btn-num{font-size:13px;font-weight:700;color:var(--text2)}.ch-btn-led{width:8px;height:8px;border-radius:50%;background:var(--text3)}.ch-btn-watt{font-size:9px;color:var(--text3)}.toggle-wrap{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg);border-radius:var(--radius-sm)}.toggle-text{font-size:13px;font-weight:500;color:var(--text1)}.toggle-sub{font-size:11px;color:var(--text3)}.toggle{position:relative;width:40px;height:22px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border2);border-radius:22px;cursor:pointer;transition:var(--transition)}.toggle-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:var(--transition)}.toggle input:checked+.toggle-slider{background:var(--orange)}.toggle input:checked+.toggle-slider:before{transform:translate(18px)}.divider{height:1px;background:var(--border);margin:4px 0}.no-conn-msg{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0;color:var(--text3);font-size:13px}.no-conn-icon{font-size:32px;opacity:.4}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--card);border-radius:var(--radius);padding:24px;width:420px;max-width:90vw;box-shadow:var(--shadow-lg)}.modal-title{font-size:16px;font-weight:700;margin-bottom:20px;color:var(--text1)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.form-label{font-size:12px;font-weight:600;color:var(--text2)}.form-input{padding:9px 12px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:13px;color:var(--text1);background:var(--bg);outline:none;transition:var(--transition);font-family:inherit}.form-input:focus{border-color:var(--orange);background:#fff}.form-hint{font-size:11px;color:var(--text3)}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.btn-primary{padding:9px 20px;background:var(--orange);color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition)}.btn-primary:hover{background:var(--orange-light)}.btn-secondary{padding:9px 20px;background:var(--bg);color:var(--text2);border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition)}.btn-secondary:hover{background:var(--border)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}@media (max-width: 768px){.sensor-bar{flex-wrap:wrap}.sensor-chip{min-width:calc(50% - 5px);flex:none}.control-panel.open{position:fixed;right:0;top:56px;bottom:0;z-index:100;width:300px!important;box-shadow:var(--shadow-lg)}}
