: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}.app-body{display:flex;flex:1;overflow:hidden}.app-content{flex:1;display:flex;flex-direction:column;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}.nav-sidebar{width:68px;background:var(--dark2);border-right:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;align-items:center;padding:10px 0;gap:4px;flex-shrink:0}.nav-item{width:52px;height:52px;border-radius:12px;border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;transition:var(--transition);color:#fff6}.nav-item:hover{background:#ffffff0f;color:#fffc}.nav-item.active{background:var(--orange-pale);color:var(--orange)}.nav-item-icon{font-size:20px;line-height:1}.nav-item-label{font-size:10px;font-weight:600;letter-spacing:.2px}.nav-bottom{margin-top:auto;padding-bottom:8px}.nav-status{display:flex;align-items:center;justify-content:center;width:36px;height:36px}.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)}.map-page{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg)}.map-stats-bar{display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--card);border-bottom:1px solid var(--border);flex-shrink:0}.map-stat{display:flex;align-items:center;gap:6px}.map-stat-num{font-size:22px;font-weight:800;color:var(--text1);line-height:1}.map-stat-label{font-size:11px;color:var(--text3);font-weight:500}.map-stat.ok .map-stat-num{color:#16a34a}.map-stat.warn .map-stat-num{color:#d97706}.map-stat.off .map-stat-num{color:var(--text3)}.map-stats-spacer{flex:1}.map-add-btn{padding:8px 16px;font-size:13px;flex-shrink:0}.map-body{display:flex;flex:1;overflow:hidden}.map-list{width:240px;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}.map-list-title{padding:14px 16px 10px;font-size:12px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);flex-shrink:0}.map-list-empty{padding:24px 16px;font-size:12px;color:var(--text3);text-align:center;line-height:1.6}.map-list-item{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:var(--transition)}.map-list-item:hover{background:var(--bg)}.map-list-item.selected{background:var(--orange-pale);border-left:3px solid var(--orange)}.map-list-item-top{display:flex;align-items:center;gap:6px}.map-list-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.map-list-name{flex:1;font-size:13px;font-weight:600;color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-list-del{background:none;border:none;cursor:pointer;color:var(--text3);font-size:12px;padding:2px 4px;border-radius:4px;opacity:0;transition:var(--transition)}.map-list-item:hover .map-list-del{opacity:1}.map-list-del:hover{background:var(--error-bg);color:var(--error)}.map-list-id{font-size:10px;color:var(--text3);margin-top:3px;padding-left:14px}.map-list-addr{font-size:11px;color:var(--text2);margin-top:2px;padding-left:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-kakao-wrap{flex:1;position:relative;overflow:hidden}.map-kakao{width:100%;height:100%}.map-popup{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--border);min-width:280px;z-index:10;overflow:hidden}.map-popup-header{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg)}.map-popup-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.map-popup-name{flex:1;font-size:14px;font-weight:700;color:var(--text1)}.map-popup-close{background:none;border:none;cursor:pointer;color:var(--text3);font-size:14px;padding:2px 6px;border-radius:4px}.map-popup-close:hover{background:var(--border)}.map-popup-rows{padding:12px 16px;display:flex;flex-direction:column;gap:8px}.map-popup-row{display:flex;justify-content:space-between;font-size:12px;gap:12px}.map-popup-row span:first-child{color:var(--text3);flex-shrink:0}.map-popup-row span:last-child{color:var(--text1);font-weight:600;text-align:right}.history-page{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:20px 24px;gap:16px;background:var(--bg)}.history-header{display:flex;align-items:center;gap:12px;flex-shrink:0}.history-title{font-size:18px;font-weight:700;color:var(--text1)}.history-count{font-size:12px;color:var(--text3);background:var(--border);padding:3px 10px;border-radius:20px}.history-empty{color:var(--text3);font-size:13px;text-align:center;padding:40px}.history-list{display:flex;flex-direction:column;gap:8px;overflow-y:auto}.history-item{display:flex;align-items:flex-start;gap:12px;background:var(--card);border-radius:var(--radius-sm);padding:12px 16px;border:1px solid var(--border)}.history-badge{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;flex-shrink:0;margin-top:1px}.history-item-body{display:flex;flex-direction:column;gap:3px;min-width:0}.history-msg{font-size:13px;color:var(--text1);font-weight:500}.history-meta{font-size:11px;color:var(--text3)}.demo-badge{display:flex;align-items:center;gap:5px;background:#f59e0b2e;border:1px solid rgba(245,158,11,.4);border-radius:20px;padding:4px 10px;font-size:11px;font-weight:700;color:var(--warning);letter-spacing:.8px;cursor:pointer;margin-right:8px;transition:var(--transition)}.demo-badge:hover{background:#f59e0b47}.demo-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--warning);animation:pulse 1.5s infinite}.modal-wide{width:500px;padding:0;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px 0}.modal-close{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:none;cursor:pointer;color:var(--text3);font-size:14px;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.modal-close:hover{background:var(--bg);color:var(--text1)}.modal-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:12px 24px 0}.modal-tab{padding:8px 16px;font-size:13px;font-weight:600;color:var(--text3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:var(--transition);margin-bottom:-1px}.modal-tab.active{color:var(--orange);border-bottom-color:var(--orange)}.modal-tab:hover:not(.active){color:var(--text1)}.modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:14px;max-height:60vh;overflow-y:auto}.status-card{background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--border);padding:12px 16px;display:flex;flex-direction:column;gap:8px}.status-card-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.status-card-label{font-size:12px;color:var(--text3);font-weight:500}.status-card-value{font-size:12px;font-weight:600;color:var(--text1);display:flex;align-items:center;gap:6px}.status-card-value.mono{font-family:monospace;font-size:11px;color:var(--text2);word-break:break-all;text-align:right;max-width:260px}.demo-section{background:var(--warning-bg);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-sm);padding:14px 16px;display:flex;flex-direction:column;gap:8px}.demo-section-title{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;color:var(--text1)}.demo-section-desc{font-size:12px;color:var(--text2);line-height:1.5}.toggle-switch{width:40px;height:22px;background:var(--border2);border-radius:22px;cursor:pointer;position:relative;transition:var(--transition);flex-shrink:0}.toggle-switch:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:var(--transition)}.toggle-switch.on{background:var(--warning)}.toggle-switch.on:before{transform:translate(18px)}.info-section{background:var(--bg);border-radius:var(--radius-sm);overflow:hidden}.info-row{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;font-size:12px;border-bottom:1px solid var(--border)}.info-row:last-child{border-bottom:none}.info-row span:first-child{color:var(--text3)}.info-row span:last-child{color:var(--text2);font-weight:600}.form-hint-box{background:var(--bg);border-radius:var(--radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:5px}.form-hint-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text2)}.form-hint-badge{padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700;flex-shrink:0}.form-hint-badge.local{background:#e0e7ff;color:#4338ca}.form-hint-badge.dev{background:#fef3c7;color:#92400e}.form-hint-badge.prod{background:#dcfce7;color:#15803d}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-row .form-group{margin-bottom:0}.form-required{color:var(--error);font-weight:700;margin-left:2px}.form-optional{color:var(--text3);font-size:10px;font-weight:400;margin-left:4px}.warn-box{background:var(--warning-bg);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-sm);padding:10px 12px;font-size:11px;color:var(--text2);line-height:1.6}.warn-box code{display:block;margin-top:4px;font-size:10px;color:var(--text1);background:#0000000d;padding:3px 6px;border-radius:4px}.warn-box-blue{background:var(--info-bg);border-color:#3b82f64d}.btn-outline-orange{padding:7px 14px;background:none;border:1.5px solid var(--orange);color:var(--orange);border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;transition:var(--transition);align-self:flex-start}.btn-outline-orange:hover{background:var(--orange);color:#fff}.btn-primary.saved{background:var(--success)}.sensor-chip.chip-ok{border-color:#bbf7d0}.sensor-chip.chip-warn{border-color:#fde68a}.sensor-chip.chip-bad{border-color:#fecaca}.sensor-chip.chip-idle{border-color:var(--border)}.sensor-chip.chip-offline{border-color:var(--border);opacity:.65}.sensor-chip.chip-ok .sensor-chip-value{color:#15803d}.sensor-chip.chip-bad .sensor-chip-value{color:#dc2626}.sensor-chip.chip-offline .sensor-chip-value{color:var(--text3)}::-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)}}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,var(--dark) 0%,var(--dark2) 60%,#0f0c29 100%);display:flex;align-items:center;justify-content:center;z-index:9999}.login-card{background:var(--card);border-radius:20px;padding:40px 36px 32px;width:360px;box-shadow:0 24px 80px #0006;display:flex;flex-direction:column;align-items:center;gap:0}.login-logo{display:flex;align-items:center;gap:10px;margin-bottom:6px}.login-logo-icon{font-size:28px;line-height:1}.login-logo-text{font-size:22px;font-weight:800;color:var(--text1);letter-spacing:.5px}.login-subtitle{font-size:13px;color:var(--text3);margin-bottom:28px;font-weight:500}.login-form{width:100%;display:flex;flex-direction:column;gap:14px}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{font-size:12px;font-weight:600;color:var(--text2)}.login-field input{padding:11px 14px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:14px;color:var(--text1);background:var(--bg);outline:none;transition:var(--transition);font-family:inherit}.login-field input:focus{border-color:var(--orange);background:#fff;box-shadow:0 0 0 3px var(--orange-pale)}.login-field input:disabled{opacity:.6;cursor:not-allowed}.login-error{background:var(--error-bg);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px;color:var(--error);font-weight:500}.login-btn{margin-top:4px;padding:13px;background:var(--orange);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:700;cursor:pointer;transition:var(--transition);letter-spacing:.3px}.login-btn:hover:not(:disabled){background:var(--orange-light);box-shadow:0 4px 16px var(--orange-glow)}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:24px;font-size:11px;color:var(--text3);letter-spacing:.3px}.header-shelter-selector{display:flex;align-items:center}.shelter-selector{position:relative}.shelter-selector.single{display:flex;align-items:center;gap:6px;padding:5px 10px;background:#ffffff12;border-radius:var(--radius-sm)}.shelter-selector-btn{display:flex;align-items:center;gap:6px;padding:5px 10px;background:#ffffff12;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);color:#ffffffd9;cursor:pointer;font-size:13px;font-weight:600;font-family:inherit;transition:var(--transition)}.shelter-selector-btn:hover{background:#ffffff1f;border-color:#fff3}.shelter-selector-icon{font-size:14px}.shelter-selector-name{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffffffe6;font-size:13px;font-weight:600}.shelter-selector-arrow{font-size:9px;color:#ffffff80;margin-left:2px}.shelter-selector-list{position:absolute;top:calc(100% + 6px);left:0;min-width:200px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:1000;list-style:none;overflow:hidden;animation:dropDown .15s ease}@keyframes dropDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.shelter-selector-item{width:100%;padding:10px 14px;text-align:left;background:none;border:none;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:var(--transition);font-family:inherit;border-bottom:1px solid var(--border)}.shelter-selector-item:last-child{border-bottom:none}.shelter-selector-item:hover{background:var(--bg)}.shelter-selector-item.active{background:var(--orange-pale)}.shelter-item-name{font-size:13px;font-weight:600;color:var(--text1)}.shelter-selector-item.active .shelter-item-name{color:var(--orange)}.shelter-item-id{font-size:10px;color:var(--text3);font-family:monospace}.nav-logout{color:#ffffff4d}.nav-logout:hover{background:#ef44441f;color:#f87171}.admin-page{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.admin-header{display:flex;align-items:center;gap:16px;padding:16px 24px;background:var(--card);border-bottom:1px solid var(--border);flex-shrink:0}.admin-title{font-size:18px;font-weight:800;color:var(--text1)}.admin-tabs{display:flex;gap:4px;padding:0 24px;background:var(--card);border-bottom:2px solid var(--border);flex-shrink:0;overflow-x:auto}.admin-tab{padding:10px 16px;font-size:13px;font-weight:600;color:var(--text3);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;margin-bottom:-2px;font-family:inherit;transition:var(--transition)}.admin-tab:hover:not(.active){color:var(--text1)}.admin-tab.active{color:var(--orange);border-bottom-color:var(--orange)}.admin-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px}.admin-card{background:var(--card);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden}.admin-card-header{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--bg)}.admin-card-title{font-size:14px;font-weight:700;color:var(--text1);flex:1}.admin-card-meta{font-size:11px;color:var(--text3);font-weight:500}.admin-card-body{padding:16px 18px}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:12px}.admin-table th{text-align:left;padding:8px 10px;background:var(--bg);border-bottom:2px solid var(--border);color:var(--text3);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.admin-table td{padding:9px 10px;border-bottom:1px solid var(--border);color:var(--text1);font-size:12px;vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--bg)}.admin-table td code{font-family:monospace;font-size:11px;background:var(--bg);padding:2px 6px;border-radius:4px;color:var(--text2);border:1px solid var(--border)}.admin-form{display:flex;flex-direction:column;gap:12px}.admin-form-row{display:flex;align-items:center;gap:10px}.admin-form-row>label{font-size:12px;font-weight:600;color:var(--text2);min-width:70px;flex-shrink:0}.admin-form-row>input,.admin-form-row>select,.admin-form-row>div{flex:1;padding:7px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--text1);background:var(--bg);outline:none;transition:var(--transition);font-family:inherit}.admin-form-row>input:focus,.admin-form-row>select:focus{border-color:var(--orange);background:#fff}.admin-form-row>.admin-shelter-checks{padding:0;border:none;background:none}.admin-field{display:flex;flex-direction:column;gap:5px}.admin-field label{font-size:11px;font-weight:600;color:var(--text2)}.admin-field input,.admin-field select{padding:8px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--text1);background:var(--bg);outline:none;transition:var(--transition);font-family:inherit}.admin-field input:focus,.admin-field select:focus{border-color:var(--orange);background:#fff}.admin-checkbox-group{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:var(--bg);border:1.5px solid var(--border2);border-radius:var(--radius-sm);max-height:100px;overflow-y:auto}.admin-checkbox-item{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text1);cursor:pointer;white-space:nowrap}.admin-checkbox-item input[type=checkbox]{accent-color:var(--orange)}.admin-badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700}.admin-badge.ok{background:#dcfce7;color:#15803d}.admin-badge.warn{background:var(--warning-bg);color:#92400e}.admin-badge.error{background:var(--error-bg);color:#991b1b}.admin-badge.info{background:var(--info-bg);color:#1d4ed8}.admin-badge.neutral{background:var(--bg);color:var(--text2);border:1px solid var(--border2)}.admin-filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-filter-bar input,.admin-filter-bar select{padding:7px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--text1);background:var(--bg);outline:none;transition:var(--transition);font-family:inherit}.admin-filter-bar input:focus,.admin-filter-bar select:focus{border-color:var(--orange)}.admin-stats-row{display:flex;flex-wrap:wrap;gap:8px}.admin-stat-chip{display:flex;align-items:center;gap:5px;padding:5px 10px;background:var(--bg);border:1px solid var(--border);border-radius:20px;font-size:11px;color:var(--text2)}.admin-stat-chip strong{color:var(--text1);font-weight:700}.admin-pagination{display:flex;align-items:center;gap:8px;justify-content:center;padding-top:8px}.admin-pagination button{padding:5px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.admin-pagination button:hover:not(:disabled){background:var(--orange-pale);border-color:var(--orange);color:var(--orange)}.admin-pagination button:disabled{opacity:.4;cursor:not-allowed}.admin-pagination-info{font-size:11px;color:var(--text3);min-width:80px;text-align:center}.admin-ip-bar{display:flex;align-items:center;gap:10px;font-size:12px;padding:6px 0;border-bottom:1px solid var(--border)}.admin-ip-bar:last-child{border-bottom:none}.admin-ip-addr{font-family:monospace;font-size:12px;color:var(--text1);font-weight:600;min-width:110px}.admin-ip-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.admin-ip-fill{height:100%;background:var(--orange);border-radius:3px;transition:width .4s ease}.admin-ip-count{font-size:11px;color:var(--text3);min-width:40px;text-align:right}.admin-topic-chip{display:inline-block;padding:3px 8px;background:#f1f5f9;border:1px solid var(--border);border-radius:4px;font-family:monospace;font-size:11px;color:var(--text2);word-break:break-all}.admin-col-list{display:flex;flex-direction:column;gap:3px}.admin-col-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px}.admin-col-name{font-weight:700;color:var(--text1);min-width:130px;font-family:monospace}.admin-col-type{color:var(--info);font-family:monospace;font-size:11px;min-width:80px}.admin-col-pk{padding:1px 6px;background:var(--orange-pale);color:var(--orange);border-radius:4px;font-size:10px;font-weight:700}.admin-col-notnull{padding:1px 6px;background:#f1f5f9;color:var(--text3);border-radius:4px;font-size:10px;font-weight:600}.admin-alert{padding:10px 14px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;border:1px solid}.admin-alert.error{background:var(--error-bg);border-color:#ef44444d;color:#991b1b}.admin-alert.warn{background:var(--warning-bg);border-color:#f59e0b4d;color:#92400e}.btn-sm{padding:5px 10px;font-size:11px;font-weight:600;border-radius:6px;border:1px solid var(--border2);background:var(--bg);color:var(--text2);cursor:pointer;font-family:inherit;transition:var(--transition)}.btn-sm:hover{background:var(--border)}.btn-sm.danger{border-color:#fca5a5;color:var(--error)}.btn-sm.danger:hover{background:var(--error-bg)}.btn-sm.primary{background:var(--orange);color:#fff;border-color:var(--orange)}.btn-sm.primary:hover{background:var(--orange-light)}.admin-empty{text-align:center;padding:32px;color:var(--text3);font-size:13px}.admin-loading{text-align:center;padding:24px;color:var(--text3);font-size:13px}.admin-section-title{font-size:12px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.admin-sql{background:#1e293b;color:#e2e8f0;border-radius:var(--radius-sm);padding:10px 14px;font-family:monospace;font-size:11px;line-height:1.6;overflow-x:auto;white-space:pre;border:1px solid rgba(255,255,255,.08)}.admin-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}.admin-btn-primary{padding:7px 14px;background:var(--orange);color:#fff;border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.admin-btn-primary:hover{background:var(--orange-light)}.admin-btn{padding:6px 12px;background:var(--bg);color:var(--text2);border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.admin-btn:hover{background:var(--border)}.admin-btn:disabled{opacity:.4;cursor:not-allowed}.admin-btn-danger{padding:4px 10px;background:none;color:var(--error);border:1px solid #fca5a5;border-radius:var(--radius-sm);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.admin-btn-danger:hover{background:var(--error-bg)}.admin-input,.admin-select{padding:6px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--text1);background:var(--bg);outline:none;font-family:inherit;transition:var(--transition)}.admin-input:focus,.admin-select:focus{border-color:var(--orange);background:#fff}.admin-count{font-size:11px;color:var(--text3);font-weight:500}.admin-msg{font-size:12px;color:var(--success);font-weight:600}.admin-date{font-family:monospace;font-size:11px;color:var(--text3);white-space:nowrap}.admin-payload-cell{max-width:240px}.admin-payload{font-family:monospace;font-size:11px;color:var(--text2);word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;max-width:220px}.admin-topic{font-family:monospace;font-size:11px;color:var(--info);word-break:break-all}.admin-dir{font-size:11px;color:var(--text3);white-space:nowrap}.admin-meta{font-size:12px;color:var(--text2);margin-bottom:14px;display:flex;align-items:center;gap:4px}.admin-schema{display:flex;flex-direction:column;gap:16px}.admin-schema-group{display:flex;flex-direction:column;gap:8px}.admin-schema-group h3{font-size:13px;font-weight:700;color:var(--text1);display:flex;align-items:center;gap:6px}.admin-row-count{font-size:11px;color:var(--text3);font-weight:500}.admin-json{background:#1e293b;color:#e2e8f0;border-radius:var(--radius-sm);padding:10px 14px;font-family:monospace;font-size:11px;line-height:1.6;overflow-x:auto;white-space:pre;border:1px solid rgba(255,255,255,.08)}.admin-sql-detail{margin-top:4px}.admin-sql-detail summary{font-size:11px;color:var(--text3);cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0}.admin-sql-detail summary:hover{color:var(--text1)}.admin-error{padding:12px 16px;background:var(--error-bg);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);font-size:12px;color:#991b1b;font-weight:600}.admin-role-badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700}.admin-role-badge.superadmin{background:var(--orange-pale);color:var(--orange)}.admin-role-badge.manager{background:var(--info-bg);color:#1d4ed8}.admin-all-badge{display:inline-block;padding:2px 8px;background:#dcfce7;color:#15803d;border-radius:20px;font-size:10px;font-weight:700}.admin-shelter-badge{display:inline-block;margin:1px 3px 1px 0;padding:1px 7px;background:var(--bg);border:1px solid var(--border2);border-radius:20px;font-size:10px;color:var(--text2)}.admin-toggle{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;border:1px solid;cursor:pointer;font-family:inherit;transition:var(--transition)}.admin-toggle.on{background:#dcfce7;color:#15803d;border-color:#86efac}.admin-toggle.off{background:var(--bg);color:var(--text3);border-color:var(--border2)}.admin-shelter-checks{display:flex;flex-wrap:wrap;gap:8px;padding:8px;background:var(--bg);border:1.5px solid var(--border2);border-radius:var(--radius-sm)}.admin-check-label{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text1);cursor:pointer;white-space:nowrap}.admin-check-label input[type=checkbox]{accent-color:var(--orange)}.admin-alert-box{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 14px;margin-bottom:14px;background:var(--warning-bg);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-sm);font-size:12px;color:#92400e}.admin-fail-chip{display:inline-block;padding:2px 8px;background:var(--error-bg);color:var(--error);border-radius:20px;font-size:11px;font-weight:700;border:1px solid #fca5a5}.admin-ip-stats{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:14px;font-size:12px;color:var(--text2)}.admin-ip-chip{padding:3px 10px;background:var(--bg);border:1px solid var(--border2);border-radius:20px;font-size:11px;font-family:monospace;cursor:pointer;transition:var(--transition)}.admin-ip-chip:hover{background:var(--orange-pale);border-color:var(--orange);color:var(--orange)}.admin-row-fail td{background:#fff5f5}.admin-table tr.admin-row-fail:hover td{background:#ffe4e6}.admin-action-badge{display:inline-block;padding:2px 7px;border-radius:20px;font-size:10px;font-weight:700}.admin-action-badge.login_success{background:#dcfce7;color:#15803d}.admin-action-badge.login_fail{background:var(--error-bg);color:#991b1b}.admin-action-badge.api_access{background:var(--info-bg);color:#1d4ed8}.admin-ua{font-size:10px;color:var(--text3);max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-shelter-list{max-width:200px}.scheduler-widget{flex-shrink:0;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:var(--transition)}.scheduler-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;gap:10px;transition:var(--transition)}.scheduler-bar:hover{background:var(--bg)}.scheduler-bar-left{display:flex;align-items:center;gap:10px}.scheduler-bar-right{display:flex;align-items:center;gap:8px}.scheduler-icon{font-size:18px;line-height:1;flex-shrink:0}.scheduler-bar-title{font-size:13px;font-weight:700;color:var(--text1);display:block}.scheduler-status-badge{display:inline-block;margin-top:2px;font-size:10px;font-weight:600;padding:1px 7px;border-radius:20px}.scheduler-status-badge.on{background:#22c55e1f;color:#15803d}.scheduler-status-badge.off{background:var(--bg);color:var(--text3);border:1px solid var(--border2)}.scheduler-toggle{padding:4px 12px;border-radius:20px;font-size:11px;font-weight:800;border:none;cursor:pointer;transition:var(--transition);font-family:inherit;letter-spacing:.5px}.scheduler-toggle.on{background:#22c55e;color:#fff}.scheduler-toggle.off{background:var(--border2);color:var(--text2)}.scheduler-chevron{font-size:9px;color:var(--text3)}.scheduler-body{padding:12px 14px 14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px;background:var(--bg)}.scheduler-time-row{display:flex;align-items:center;gap:12px}.scheduler-label{font-size:12px;font-weight:600;color:var(--text2);white-space:nowrap;min-width:50px}.scheduler-time-pickers{display:flex;gap:6px}.scheduler-select{padding:6px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;font-weight:600;color:var(--text1);background:var(--card);outline:none;cursor:pointer;font-family:inherit;transition:var(--transition)}.scheduler-select:focus{border-color:var(--orange)}.scheduler-desc{font-size:12px;color:var(--text2);line-height:1.5}.scheduler-desc strong{color:var(--text1)}.scheduler-note{display:flex;align-items:center;gap:6px;padding:7px 10px;background:#22c55e14;border:1px solid rgba(34,197,94,.2);border-radius:var(--radius-sm);font-size:11px;color:#15803d;font-weight:500}.scheduler-note-icon{font-size:13px}.scheduler-last{font-size:11px;color:var(--text3)}.scheduler-run-now{align-self:flex-start;padding:6px 14px;background:none;border:1.5px solid var(--orange);color:var(--orange);border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.scheduler-run-now:hover{background:var(--orange);color:#fff}.sched-row{display:flex;flex-direction:column;gap:8px}.sched-row-header{display:flex;align-items:center;justify-content:space-between}.sched-row-label{font-size:13px;font-weight:700}.sched-row-body{display:flex;flex-direction:column;gap:6px;padding-left:4px}.sched-row-meta{display:flex;align-items:center;gap:10px;font-size:12px;flex-wrap:wrap}.sched-divider{height:1px;background:var(--border);margin:4px 0}.pwchart-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}.pwchart-header{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.pwchart-title-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}.pwchart-title{font-size:15px;font-weight:700;color:var(--text1)}.pwchart-badges{display:flex;align-items:center;gap:10px}.pwchart-conn{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}.pwchart-conn.live{background:#22c55e1f;color:var(--success)}.pwchart-conn.off{background:var(--bg);color:var(--text3)}.pwchart-lastseen{font-size:11px;color:var(--text3)}.pwchart-summary{display:flex;gap:16px;flex-wrap:wrap}.pwchart-stat{display:flex;flex-direction:column;gap:2px;min-width:80px}.pwchart-stat-label{font-size:10px;color:var(--text3);font-weight:600;text-transform:uppercase;letter-spacing:.3px}.pwchart-stat-value{font-size:20px;font-weight:700;color:var(--text1)}.pwchart-stat-value.orange{color:var(--orange)}.pwchart-toggle-btn{padding:4px 12px;border:1.5px solid var(--border2);border-radius:20px;background:var(--bg);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.pwchart-toggle-btn:hover,.pwchart-toggle-btn.active{background:var(--orange-pale);border-color:var(--orange);color:var(--orange)}.pwchart-graph{padding:12px 8px 8px}.pwchart-empty{text-align:center;padding:40px 20px;color:var(--text3);font-size:13px;line-height:1.8}.pwchart-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1px;background:var(--border);border-top:1px solid var(--border)}.pwchart-ch-row{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--card);font-size:12px}.pwchart-ch-row.off{opacity:.55}.pwchart-ch-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pwchart-ch-name{flex:1;color:var(--text2);font-weight:500}.pwchart-ch-watt{font-weight:700;color:var(--text1);min-width:50px;text-align:right}.pwchart-ch-curr{color:var(--text3);font-size:11px;min-width:42px;text-align:right}.log-page{display:flex;flex-direction:column;height:100%;background:var(--bg);overflow:hidden}.log-toolbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.log-title{font-size:14px;font-weight:700;color:var(--text1);white-space:nowrap}.log-dir-tabs{display:flex;gap:4px}.log-dir-btn{padding:4px 12px;border-radius:20px;border:1.5px solid var(--border2);background:var(--bg);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.log-dir-btn:hover{border-color:var(--orange);color:var(--orange)}.log-dir-btn.active{background:var(--orange);border-color:var(--orange);color:#fff}.log-search{flex:1;min-width:140px;max-width:260px;padding:5px 10px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);font-size:12px;color:var(--text1);background:var(--bg);outline:none;font-family:inherit;transition:var(--transition)}.log-search:focus{border-color:var(--orange);background:#fff}.log-count{font-size:11px;color:var(--text3);font-weight:600;white-space:nowrap}.log-btn{padding:5px 12px;border:1.5px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg);color:var(--text2);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition);white-space:nowrap}.log-btn:hover{background:var(--border)}.log-btn.active{background:var(--orange-pale);border-color:var(--orange);color:var(--orange)}.log-list{flex:1;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:3px}.log-empty{text-align:center;padding:60px 20px;color:var(--text3);font-size:13px}.log-row{display:flex;align-items:baseline;gap:10px;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:12px;font-family:monospace;word-break:break-all;transition:var(--transition)}.log-row:hover{border-color:var(--border2)}.log-ts{color:var(--text3);font-size:11px;white-space:nowrap;flex-shrink:0}.log-dir{font-size:11px;font-weight:700;white-space:nowrap;flex-shrink:0;min-width:22px}.log-topic{color:var(--text2);font-weight:600;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.log-payload{color:var(--text1);flex:1;word-break:break-all}
