.confirm-overlay[data-v-8628e925]{position:fixed;inset:0;background:#000000bf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px;overscroll-behavior:contain}.confirm-dialog[data-v-8628e925]{background:var(--bg-card);border-radius:16px;padding:28px 24px 24px;max-width:400px;width:100%;box-shadow:var(--shadow-modal);border:1px solid var(--border-color);text-align:center}.confirm-icon[data-v-8628e925]{font-size:40px;margin-bottom:12px}.confirm-title[data-v-8628e925]{font-size:var(--font-size-subtitle);font-weight:700;color:var(--text-primary);margin-bottom:8px}.confirm-message[data-v-8628e925]{font-size:var(--font-size-label);color:var(--text-secondary);line-height:1.5;margin-bottom:24px}.confirm-actions[data-v-8628e925]{display:flex;gap:12px}.confirm-btn[data-v-8628e925]{flex:1;padding:12px;min-height:44px;border-radius:8px;font-weight:600;font-size:var(--font-size-label);cursor:pointer;border:none;transition:background .2s,transform .1s}.confirm-btn[data-v-8628e925]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.confirm-btn[data-v-8628e925]:active{transform:scale(.98)}.confirm-btn.cancel[data-v-8628e925]{background:var(--bg-hover);color:var(--text-primary)}.confirm-btn.cancel[data-v-8628e925]:hover{background:var(--border-color)}.confirm-btn.ok.danger[data-v-8628e925]{background:var(--danger);color:#fff}.confirm-btn.ok.danger[data-v-8628e925]:hover{background:var(--danger-hover)}.confirm-btn.ok.warning[data-v-8628e925]{background:var(--warning);color:#fff}.confirm-btn.ok.warning[data-v-8628e925]:hover{background:var(--warning-hover)}.confirm-btn.ok.info[data-v-8628e925]{background:var(--accent);color:#fff}.confirm-btn.ok.info[data-v-8628e925]:hover{background:var(--accent-hover)}.toast-container[data-v-fcd841d2]{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom,0px));right:16px;z-index:9999;display:flex;flex-direction:column-reverse;gap:8px;max-width:400px}.toast[data-v-fcd841d2]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--bg-card, #fff);border:1px solid var(--border-light, #e8e8e8);border-radius:10px;box-shadow:0 4px 16px #0000001f;min-width:280px}.toast-success[data-v-fcd841d2]{border-left:4px solid #4caf50}.toast-error[data-v-fcd841d2]{border-left:4px solid #e53935}.toast-warning[data-v-fcd841d2]{border-left:4px solid #ff9800}.toast-info[data-v-fcd841d2]{border-left:4px solid #2196f3}.toast-icon[data-v-fcd841d2]{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;color:#fff}.toast-success .toast-icon[data-v-fcd841d2]{background:#4caf50}.toast-error .toast-icon[data-v-fcd841d2]{background:#e53935}.toast-warning .toast-icon[data-v-fcd841d2]{background:#ff9800}.toast-info .toast-icon[data-v-fcd841d2]{background:#2196f3}.toast-body[data-v-fcd841d2]{flex:1;min-width:0}.toast-title[data-v-fcd841d2]{display:block;font-size:var(--font-size-label);font-weight:600;color:var(--text-primary, #333);line-height:1.4}.toast-message[data-v-fcd841d2]{margin-top:2px;font-size:var(--font-size-caption);color:var(--text-secondary, #555);line-height:1.4}.toast-close[data-v-fcd841d2]{background:none;border:none;font-size:18px;color:var(--text-muted, #999);cursor:pointer;padding:0 2px;line-height:1;flex-shrink:0}.toast-close[data-v-fcd841d2]:hover{color:var(--text-primary, #333)}.toast-enter-active[data-v-fcd841d2]{transition:all .3s ease}.toast-leave-active[data-v-fcd841d2]{transition:all .25s ease}.toast-enter-from[data-v-fcd841d2]{opacity:0;transform:translateY(20px)}.toast-leave-to[data-v-fcd841d2]{opacity:0;transform:translate(100%)}@media(max-width:768px){.toast-container[data-v-fcd841d2]{left:16px;right:16px;max-width:none}}.notification-center[data-v-3769f304]{position:relative}.notification-bell[data-v-3769f304]{position:relative;background:none;border:none;cursor:pointer;color:var(--text-primary, var(--color-text-primary));padding:8px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}.notification-bell[data-v-3769f304]:hover{background:var(--bg-hover, rgba(0,0,0,.05))}.bell-badge[data-v-3769f304]{position:absolute;top:2px;right:2px;background:var(--color-error);color:#fff;font-size:var(--font-size-tiny);font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.nc-overlay[data-v-3769f304]{position:fixed;inset:0;z-index:999}.nc-dropdown[data-v-3769f304]{position:fixed;top:56px;right:16px;width:380px;max-height:500px;background:var(--bg-card, var(--color-surface));border:1px solid var(--border-color, var(--color-border));border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:1000;display:flex;flex-direction:column;overflow:hidden}@media(max-width:768px){.nc-dropdown[data-v-3769f304]{inset:auto 0 0;width:100%;max-height:70vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0}}.nc-header[data-v-3769f304]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border-color, var(--color-border))}.nc-header h4[data-v-3769f304]{margin:0;font-size:var(--font-size-body);font-weight:600}.nc-mark-all[data-v-3769f304]{background:none;border:none;color:var(--color-primary);font-size:var(--font-size-caption);cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm)}.nc-mark-all[data-v-3769f304]:hover{background:var(--bg-hover, rgba(0,0,0,.05))}.nc-list[data-v-3769f304]{flex:1;overflow-y:auto;max-height:360px}.nc-loading[data-v-3769f304],.nc-empty[data-v-3769f304]{padding:32px 16px;text-align:center;color:var(--text-secondary, var(--color-text-secondary));font-size:var(--font-size-label)}.nc-item[data-v-3769f304]{display:flex;gap:12px;padding:12px 16px;cursor:pointer;transition:background .15s;border-bottom:1px solid var(--border-light, rgba(0,0,0,.04))}.nc-item[data-v-3769f304]:hover{background:var(--bg-hover, rgba(0,0,0,.03))}.nc-item.unread[data-v-3769f304]{background:var(--accent-bg, rgba(46, 125, 50, .04))}.nc-severity[data-v-3769f304]{flex-shrink:0;font-size:var(--font-size-label);margin-top:2px}.nc-content[data-v-3769f304]{flex:1;min-width:0}.nc-title[data-v-3769f304]{font-size:var(--font-size-caption);font-weight:600;color:var(--text-primary, var(--color-text-primary));margin-bottom:2px}.nc-message[data-v-3769f304]{font-size:var(--font-size-caption);color:var(--text-secondary, var(--color-text-secondary));line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-time[data-v-3769f304]{font-size:var(--font-size-tiny);color:var(--text-muted, var(--color-text-disabled));margin-top:4px}.nc-footer[data-v-3769f304]{padding:10px 16px;border-top:1px solid var(--border-color, var(--color-border));text-align:center}.nc-view-all[data-v-3769f304]{font-size:var(--font-size-caption);color:var(--color-primary);text-decoration:none}.nc-view-all[data-v-3769f304]:hover{text-decoration:underline}.nc-push-prompt[data-v-3769f304]{padding:12px 16px;background:var(--accent-bg, rgba(46, 125, 50, .06));border-top:1px solid var(--border-color, var(--color-border))}.nc-push-prompt p[data-v-3769f304]{font-size:var(--font-size-caption);margin:0 0 8px;color:var(--text-primary, var(--color-text-primary))}.nc-push-actions[data-v-3769f304]{display:flex;gap:8px}.btn-sm[data-v-3769f304]{padding:6px 14px;border-radius:var(--radius-md);font-size:var(--font-size-caption);cursor:pointer;border:none;background:var(--color-primary);color:#fff}.btn-ghost[data-v-3769f304]{background:transparent;color:var(--text-secondary, var(--color-text-secondary))}.nc-slide-enter-active[data-v-3769f304],.nc-slide-leave-active[data-v-3769f304]{transition:opacity .2s,transform .2s}.nc-slide-enter-from[data-v-3769f304],.nc-slide-leave-to[data-v-3769f304]{opacity:0;transform:translateY(-8px)}@media(max-width:768px){.nc-slide-enter-from[data-v-3769f304],.nc-slide-leave-to[data-v-3769f304]{transform:translateY(100%)}}.voice-assistant[data-v-9d19341d]{position:fixed;z-index:9999;pointer-events:none;top:0;left:0;width:0;height:0;overflow:visible}.voice-assistant[data-v-9d19341d]>*{pointer-events:auto}.voice-fab-wrap[data-v-9d19341d]{position:fixed;right:-6px;bottom:90px;z-index:10001;transition:right .3s ease}.voice-fab-wrap.collapsed[data-v-9d19341d]{right:-52px}.voice-fab[data-v-9d19341d]{position:relative;width:88px;height:44px;border-radius:22px 0 0 22px;border:none;background:linear-gradient(135deg,#6d28d9bf,#4f46e5b3,#2563eba6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;box-shadow:-2px 2px 10px #6d28d933;transition:all .3s ease;display:flex;align-items:center;padding:0 4px 0 8px;touch-action:pan-y;overflow:hidden;gap:2px}.fab-svg[data-v-9d19341d]{width:22px;height:22px;flex-shrink:0}.slide-arrows[data-v-9d19341d]{font-size:14px;font-weight:300;color:#ffffffb3;letter-spacing:-2px;animation:arrows-slide-9d19341d 2s ease-in-out infinite;flex-shrink:0}@keyframes arrows-slide-9d19341d{0%{opacity:.2;transform:translate(-4px)}50%{opacity:.8;transform:translate(4px)}to{opacity:.2;transform:translate(-4px)}}.collapsed .voice-fab[data-v-9d19341d]{opacity:.4;box-shadow:-1px 1px 6px #0000001a}.collapsed .slide-arrows[data-v-9d19341d]{animation-direction:reverse}.voice-fab[data-v-9d19341d]:active{transform:scale(.96)}.voice-overlay[data-v-9d19341d]{position:fixed;top:0;left:0;width:100%;height:100dvh;background:#0000004d;z-index:9998}.voice-panel[data-v-9d19341d]{position:fixed;bottom:0;left:0;right:0;max-height:45dvh;border-radius:16px 16px 0 0;box-shadow:0 -4px 20px #00000026;display:flex;flex-direction:column;z-index:10000;overflow:hidden;-webkit-overflow-scrolling:touch}.panel-header[data-v-9d19341d]{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);flex-shrink:0}.panel-title[data-v-9d19341d]{font-size:15px;font-weight:600}.btn-close[data-v-9d19341d]{background:none;border:none;font-size:18px;cursor:pointer;padding:4px 8px;color:var(--text-secondary, #64748b)}.panel-messages[data-v-9d19341d]{flex:1;overflow-y:auto;padding:12px 16px;min-height:60px;max-height:25dvh}.empty-hint[data-v-9d19341d]{text-align:center;color:var(--text-secondary, #94a3b8);font-size:13px;padding:24px 0;line-height:1.8}.hint-small[data-v-9d19341d]{font-size:12px;opacity:.7}.message[data-v-9d19341d]{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;font-size:14px;line-height:1.5}.message.user[data-v-9d19341d]{justify-content:flex-end}.message.user .msg-text[data-v-9d19341d]{background:var(--primary-color, #2563eb);color:#fff;border-radius:12px 12px 0;padding:8px 12px;max-width:80%}.message.assistant .msg-text[data-v-9d19341d]{background:var(--bg-secondary, #f1f5f9);border-radius:12px 12px 12px 0;padding:8px 12px;max-width:80%}.msg-icon[data-v-9d19341d]{font-size:18px;flex-shrink:0;line-height:1.6}.interim[data-v-9d19341d]{color:var(--text-secondary, #94a3b8);font-style:italic}.listening-indicator[data-v-9d19341d],.processing-indicator[data-v-9d19341d]{opacity:.7}.panel-input[data-v-9d19341d]{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border-color, #e2e8f0);flex-shrink:0}.btn-mic[data-v-9d19341d]{width:40px;height:40px;border:1px solid var(--border-color, #e2e8f0);border-radius:50%;background:var(--card-bg, #fff);font-size:18px;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.btn-mic.active[data-v-9d19341d]{background:#dc2626;color:#fff;border-color:#dc2626;animation:pulse-anim-9d19341d 1s infinite}.btn-mic[data-v-9d19341d]:disabled{opacity:.5;cursor:not-allowed}@keyframes pulse-anim-9d19341d{0%,to{opacity:1}50%{opacity:.6}}.text-input[data-v-9d19341d]{flex:1;padding:8px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;font-size:14px;outline:none;min-width:0}.text-input[data-v-9d19341d]:focus{border-color:var(--primary-color, #2563eb)}.btn-send[data-v-9d19341d]{padding:8px 14px;border:none;border-radius:8px;background:var(--primary-color, #2563eb);color:#fff;font-size:13px;cursor:pointer;white-space:nowrap;flex-shrink:0}.btn-send[data-v-9d19341d]:disabled{opacity:.5;cursor:not-allowed}.slide-up-enter-active[data-v-9d19341d],.slide-up-leave-active[data-v-9d19341d]{transition:transform .3s ease}.slide-up-enter-from[data-v-9d19341d],.slide-up-leave-to[data-v-9d19341d]{transform:translateY(100%)}.voice-panel[data-v-9d19341d]{background:var(--bg-card, #fff);color:var(--text-primary, #1e293b)}.panel-title[data-v-9d19341d]{color:var(--text-primary, #1e293b)}.btn-close[data-v-9d19341d]{color:var(--text-muted, #64748b)}.message.assistant .msg-text[data-v-9d19341d]{background:var(--bg-secondary, #f1f5f9);color:var(--text-primary, #1e293b)}.empty-hint[data-v-9d19341d]{color:var(--text-muted, #94a3b8)}.panel-header[data-v-9d19341d],.panel-input[data-v-9d19341d]{border-color:var(--border-color, #e2e8f0)}.text-input[data-v-9d19341d],.btn-mic[data-v-9d19341d]{background:var(--bg-input, #fff);color:var(--text-primary, #1e293b);border-color:var(--border-color, #e2e8f0)}@media(min-width:768px){.voice-panel[data-v-9d19341d]{left:auto;right:20px;bottom:20px;width:380px;max-height:500px;border-radius:16px}}.modal-overlay[data-v-a0c9b657]{position:fixed;inset:0;background:#00000073;z-index:1000;display:flex;align-items:flex-end;justify-content:center;padding:0}@media(min-width:600px){.modal-overlay[data-v-a0c9b657]{align-items:center}}.modal-panel[data-v-a0c9b657]{background:var(--bg-secondary, #fff);border-radius:20px 20px 0 0;width:100%;max-width:480px;max-height:85vh;overflow-y:auto;box-shadow:0 -4px 32px #0000002e}@media(min-width:600px){.modal-panel[data-v-a0c9b657]{border-radius:16px;max-height:80vh}}.modal-header[data-v-a0c9b657]{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 0;margin-bottom:4px}.modal-header h3[data-v-a0c9b657]{font-size:17px;font-weight:700;color:var(--text-primary, #222)}.btn-close[data-v-a0c9b657]{background:none;border:none;font-size:18px;color:var(--text-secondary, #888);cursor:pointer;padding:4px 8px;line-height:1}.modal-body[data-v-a0c9b657]{padding:8px 20px 32px}.settings-section[data-v-a0c9b657]{margin-top:20px}.settings-section+.settings-section[data-v-a0c9b657]{border-top:1px solid var(--border-color, #eee);padding-top:20px}.section-title[data-v-a0c9b657]{font-size:12px;font-weight:600;color:var(--text-secondary, #888);text-transform:uppercase;letter-spacing:.04em;margin-bottom:14px}.section-desc[data-v-a0c9b657]{font-size:12px;color:var(--text-secondary, #aaa);margin-bottom:12px;margin-top:-8px}.setting-row[data-v-a0c9b657]{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border-color, #f0f0f0)}.setting-row[data-v-a0c9b657]:last-child{border-bottom:none}.setting-label[data-v-a0c9b657]{font-size:14px;color:var(--text-primary, #333)}.font-size-buttons[data-v-a0c9b657],.theme-buttons[data-v-a0c9b657]{display:flex;gap:4px}.font-size-buttons button[data-v-a0c9b657],.theme-buttons button[data-v-a0c9b657]{padding:6px 12px;border:1px solid var(--border-color, #ddd);border-radius:8px;background:none;font-size:13px;cursor:pointer;color:var(--text-secondary, #666);transition:all .15s}.font-size-buttons button.active[data-v-a0c9b657],.theme-buttons button.active[data-v-a0c9b657]{background:var(--accent, #2e7d32);color:#fff;border-color:var(--accent, #2e7d32)}.font-size-buttons button[data-v-a0c9b657]:nth-child(1){font-size:11px}.font-size-buttons button[data-v-a0c9b657]:nth-child(2){font-size:13px}.font-size-buttons button[data-v-a0c9b657]:nth-child(3){font-size:15px}.feature-row[data-v-a0c9b657]{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border-color, #f0f0f0);gap:12px}.feature-row[data-v-a0c9b657]:last-child{border-bottom:none}.feature-row.disabled[data-v-a0c9b657]{opacity:.55}.feature-info[data-v-a0c9b657]{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:0}.feature-icon[data-v-a0c9b657]{font-size:20px;line-height:1.2;flex-shrink:0}.feature-name[data-v-a0c9b657]{display:block;font-size:14px;font-weight:600;color:var(--text-primary, #222);margin-bottom:2px}.feature-desc[data-v-a0c9b657]{display:block;font-size:11px;color:var(--text-secondary, #aaa)}.feature-locked[data-v-a0c9b657]{display:block;font-size:11px;color:var(--danger, #e53935)}.toggle-btn[data-v-a0c9b657]{position:relative;width:48px;height:28px;border-radius:14px;background:var(--border-color, #ccc);border:none;cursor:pointer;transition:background .2s;flex-shrink:0;padding:0}.toggle-btn.on[data-v-a0c9b657]{background:var(--accent, #2e7d32)}.toggle-btn[data-v-a0c9b657]:disabled{cursor:not-allowed;opacity:.5}.toggle-knob[data-v-a0c9b657]{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003;transition:transform .2s;display:block}.toggle-btn.on .toggle-knob[data-v-a0c9b657]{transform:translate(20px)}#app.theme-dark .modal-panel[data-v-a0c9b657]{background:var(--bg-secondary)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);font-size:16px}#app{--bg-primary: #f5f7fa;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-hover: #f5f5f5;--bg-active: #e8f5e9;--bg-input: #ffffff;--bg-badge: #f0f0f0;--bg-sensor: #f8f0ff;--bg-actuator: #f0faf0;--bg-condition: #f1f8e9;--bg-action: #e8f5e9;--bg-info-banner: #e3f2fd;--text-primary: #333333;--text-secondary: #555555;--text-muted: #999999;--text-link: #666666;--text-info-banner: #1565c0;--border-color: #d0d0d0;--border-light: #e8e8e8;--border-card: #d0d0d0;--border-input: #e0e0e0;--shadow-card: 0 2px 8px rgba(0, 0, 0, .06);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .3);--accent: #2e7d32;--accent-hover: #1b5e20;--accent-bg: #e8f5e9;--accent-text: #2e7d32;--danger: #e53935;--danger-hover: #c62828;--danger-bg: #ffebee;--warning: #ff9800;--warning-hover: #f57c00;--sensor-accent: #7b1fa2;--sensor-bg: #ede7f6;--sensor-value-bg: #f8f0ff;--automation-bg: #fff3e0;--automation-text: #e65100;--chart-primary: #4caf50;--chart-bg: rgba(76, 175, 80, .2);--toggle-off: #cccccc;--toggle-on: #4caf50;--overlay: rgba(0, 0, 0, .5)}#app.theme-dark{--bg-primary: #121212;--bg-secondary: #1e1e1e;--bg-card: #252525;--bg-hover: #333333;--bg-active: #1b3a2a;--bg-input: #2a2a2a;--bg-badge: #333333;--bg-sensor: #2a1f3a;--bg-actuator: #1a2e1a;--bg-condition: #1a2a1a;--bg-action: #1a2e1a;--bg-info-banner: #1a2a3a;--text-primary: #e8e8e8;--text-secondary: #b0b0b0;--text-muted: #808080;--text-link: #b0b0b0;--text-info-banner: #64b5f6;--border-color: #404040;--border-light: #333333;--border-card: #404040;--border-input: #404040;--shadow-card: 0 2px 8px rgba(0, 0, 0, .3);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .6);--accent: #4caf50;--accent-hover: #66bb6a;--accent-bg: #1b3a2a;--accent-text: #66bb6a;--danger: #ef5350;--danger-hover: #f44336;--danger-bg: #3a1a1a;--warning: #ffa726;--warning-hover: #ffb74d;--sensor-accent: #ce93d8;--sensor-bg: #2a1f3a;--sensor-value-bg: #2a1f3a;--automation-bg: #3a2a1a;--automation-text: #ffb74d;--chart-primary: #66bb6a;--chart-bg: rgba(102, 187, 106, .2);--toggle-off: #555555;--toggle-on: #4caf50;--overlay: rgba(0, 0, 0, .7)}#app.content-size-md{--font-size-display: 38px;--font-size-title: 26px;--font-size-subtitle: 22px;--font-size-body: 18px;--font-size-label: 16px;--font-size-caption: 14px;--font-size-tiny: 13px}#app.content-size-lg{--font-size-display: 41px;--font-size-title: 28px;--font-size-subtitle: 24px;--font-size-body: 19px;--font-size-label: 17px;--font-size-caption: 15px;--font-size-tiny: 14px}#app{min-height:100vh}#app.has-sidebar{display:flex}.sidebar{width:260px;height:100vh;background:var(--bg-secondary);border-right:1px solid var(--border-light);display:flex;flex-direction:column;position:fixed;top:0;left:0;z-index:100}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:24px 20px;border-bottom:1px solid var(--border-light)}.brand-icon-wrap{width:40px;height:40px;background:var(--accent-bg);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.brand-icon-wrap svg{width:22px;height:22px;color:var(--accent)}.brand-text h1{font-size:20px;font-weight:700;color:var(--accent);line-height:1.2}.brand-sub{font-size:13px;color:var(--text-muted)}.sidebar-nav{flex:1;padding:12px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:10px;text-decoration:none;color:var(--text-secondary);font-size:1em;font-weight:500;transition:background .2s,color .2s}.sidebar-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sidebar-link .link-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-link .link-icon svg{width:20px;height:20px;stroke-linecap:round;stroke-linejoin:round}.sidebar-link:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar-link.router-link-active{background:var(--accent-bg);color:var(--accent);font-weight:600}.sidebar-status-widget{padding:12px 16px;border-top:1px solid var(--border-light);margin-top:auto}.status-widget-title{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;margin-bottom:8px}.status-widget-items{display:flex;align-items:center;gap:8px}.status-item{display:flex;align-items:center;gap:6px;font-size:13px}.status-label{color:var(--text-secondary)}.status-count{font-weight:600;color:var(--text-primary);margin-left:auto}.online-dot{width:8px;height:8px;border-radius:50%;background:var(--color-success)}.alert-dot{width:8px;height:8px;border-radius:50%;background:var(--color-warning)}.btn-settings{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:1px solid var(--border-color, #ddd);border-radius:8px;cursor:pointer;color:var(--text-secondary);flex-shrink:0;margin-left:auto;transition:background .15s,color .15s}.btn-settings:hover{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.sidebar-footer{padding:16px;border-top:1px solid var(--border-light)}.sidebar-user{display:flex;align-items:center;gap:12px;margin-bottom:12px}.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;flex-shrink:0}.user-details{display:flex;flex-direction:column;min-width:0}.user-name{font-size:14px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role{font-size:13px;color:var(--text-muted)}.btn-logout{width:100%;padding:10px;background:var(--bg-hover);border:none;border-radius:8px;font-size:14px;font-weight:500;color:var(--text-link);cursor:pointer;transition:background .2s,color .2s}.btn-logout:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-logout:hover{background:var(--danger-bg);color:var(--danger)}.main-content{flex:1;min-height:100vh;font-size:var(--font-size-body);line-height:1.55;background:var(--bg-primary);color:var(--text-primary)}.main-content p,.main-content li,.main-content td,.main-content th,.main-content label,.main-content input,.main-content select,.main-content textarea,.main-content button{font-size:var(--font-size-body)}.main-content small,.main-content .help-text,.main-content .rule-summary,.main-content .page-description,.main-content .target-label{font-size:var(--font-size-label)!important}.main-content .page-header h2,.main-content .rule-name,.main-content .modal-title,.main-content .step-title{font-size:var(--font-size-subtitle)!important}#app.has-sidebar .main-content{margin-left:260px}.mobile-header,.drawer,.drawer-overlay{display:none}@media(max-width:768px){#app.has-sidebar{flex-direction:column}.sidebar{display:none}#app.has-sidebar .main-content{margin-left:0;padding-top:60px}.mobile-header{display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-light);position:fixed;top:0;left:0;right:0;z-index:90;padding-top:env(safe-area-inset-top,0px)}.hamburger{width:44px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:8px}.hamburger span{display:block;width:22px;height:2px;background:var(--text-primary);border-radius:1px}.mobile-brand{font-size:18px;font-weight:700;color:var(--accent)}.mobile-header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.mobile-header-spacer{width:44px}.drawer-overlay{display:block;position:fixed;inset:0;background:var(--overlay);z-index:200}.drawer{display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:280px;background:var(--bg-secondary);z-index:210;transform:translate(-100%);transition:transform .3s ease;padding-top:env(safe-area-inset-top,0px)}.drawer.open{transform:translate(0)}.drawer .sidebar-brand{position:relative}.drawer-close{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;border:none;font-size:18px;color:var(--text-muted);cursor:pointer;border-radius:8px}.drawer-close:hover{background:var(--bg-hover);color:var(--text-primary)}.drawer .sidebar-nav{flex:1;overflow-y:auto}.drawer .sidebar-link{font-size:1.05em;padding:16px}.drawer .sidebar-footer{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}}:root{--color-primary: #2e7d32;--color-primary-light: #4caf50;--color-primary-dark: #1b5e20;--color-success: #4caf50;--color-warning: #ff9800;--color-error: #f44336;--color-info: #2196f3;--color-bg: #f5f7fa;--color-surface: #ffffff;--color-border: #e0e0e0;--color-text-primary: #333333;--color-text-secondary: #666666;--color-text-disabled: #999999;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .15);--font-size-display: 35px;--font-size-title: 24px;--font-size-subtitle: 20px;--font-size-body: 17px;--font-size-label: 15px;--font-size-caption: 13px;--font-size-tiny: 12px;--touch-target: 48px;--font-size-number: 28px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.mt-1{margin-top:var(--spacing-sm)}.mt-2{margin-top:var(--spacing-md)}.mt-3{margin-top:var(--spacing-lg)}.mb-1{margin-bottom:var(--spacing-sm)}.mb-2{margin-bottom:var(--spacing-md)}.mb-3{margin-bottom:var(--spacing-lg)}.p-1{padding:var(--spacing-sm)}.p-2{padding:var(--spacing-md)}.p-3{padding:var(--spacing-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing-sm)}.gap-2{gap:var(--spacing-md)}.gap-3{gap:var(--spacing-lg)}@media(max-width:640px){.btn-icon,[role=button]:not(button){min-height:var(--touch-target);min-width:var(--touch-target)}button{min-height:var(--touch-target)}body{font-size:17px}}@media(max-width:768px){.page-header{flex-wrap:wrap!important;gap:8px!important}.page-header>div:first-child{flex:1 1 100%;min-width:0}.page-header .page-description{display:block;font-size:var(--font-size-caption);color:var(--color-text-secondary)}.page-header h2{font-size:min(var(--font-size-title),28px)!important}.page-header .header-actions,.page-header>button,.page-header>.btn-primary,.page-header>.btn-refresh,.page-header>.btn-outline{flex-shrink:0}.header-actions{display:flex;gap:6px;flex-shrink:0}.page-header button,.page-header .btn-primary,.page-header .btn-refresh,.page-header .btn-outline,.page-header .btn-header-sm,.header-actions button{padding:8px 12px!important;font-size:13px!important;white-space:nowrap;border-radius:8px}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-tooltip]{position:relative}[data-tooltip]:hover:after,[data-tooltip]:focus:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 10px;background:var(--color-text-primary, #333);color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:1000;opacity:0;animation:tooltip-fade .15s ease forwards}@keyframes tooltip-fade{to{opacity:1}}:root{--device-fan: #2196f3;--device-opener: #ff9800;--device-irrigation: #00bcd4;--device-sensor: #9c27b0;--device-other: #607d8b}.env-action-card{padding:14px 18px;background:var(--bg-card, #ffffff);border:1px solid var(--border-card, #d0d0d0);border-left:4px solid var(--accent, #2e7d32);border-radius:10px;font-size:var(--font-size-body, 17px);font-weight:600;color:var(--text-primary, #333333);margin-bottom:14px;line-height:1.5}.env-action-card .env-action-label{font-size:var(--font-size-label, 15px);color:var(--text-muted, #999999);font-weight:400;margin-bottom:4px}.report-summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}@media(max-width:480px){.report-summary-cards{grid-template-columns:1fr;gap:8px}}.report-summary-cards .summary-card{background:var(--bg-card, #ffffff);border:1px solid var(--border-card, #d0d0d0);border-radius:12px;padding:16px;text-align:center;box-shadow:var(--shadow-card, 0 2px 8px rgba(0,0,0,.06))}.report-summary-cards .summary-card .summary-label{font-size:var(--font-size-caption, 13px);color:var(--text-muted, #999999);margin-bottom:6px}.report-summary-cards .summary-card .summary-value{font-size:var(--font-size-number, 28px);font-weight:700;color:var(--text-primary, #333333);line-height:1.2}.report-summary-cards .summary-card .summary-unit{font-size:var(--font-size-caption, 13px);color:var(--text-muted, #999999);margin-left:2px}.report-summary-cards .summary-card .summary-time{font-size:var(--font-size-tiny, 12px);color:var(--text-muted, #999999);margin-top:4px}.mobile-fontsize-toggle{display:flex;gap:2px;align-items:center}.mobile-fontsize-toggle button{background:none;border:1px solid var(--border-color, #d0d0d0);border-radius:6px;color:var(--text-secondary, #555555);cursor:pointer;line-height:1;padding:4px 8px;min-height:32px;transition:background .15s,color .15s}.mobile-fontsize-toggle button.active{background:var(--accent, #2e7d32);color:#fff;border-color:var(--accent, #2e7d32)}.mobile-fontsize-toggle button:hover:not(.active){background:var(--bg-hover, #f5f5f5)}.mobile-fontsize-toggle .btn-font-sm{font-size:12px}.mobile-fontsize-toggle .btn-font-md{font-size:15px}.mobile-fontsize-toggle .btn-font-lg{font-size:18px}.rule-oneline{font-size:var(--font-size-label, 15px);font-weight:600;color:var(--text-primary, #333333);margin-bottom:6px;line-height:1.4}.rule-details{margin-top:6px}.rule-details>summary{font-size:var(--font-size-caption, 13px);color:var(--text-muted, #999999);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:4px;padding:2px 0}.rule-details>summary::-webkit-details-marker{display:none}.rule-details>summary:before{content:"▶";font-size:10px;transition:transform .2s}.rule-details[open]>summary:before{transform:rotate(90deg)}.rule-details>summary:hover{color:var(--text-secondary, #555555)}.mono-key{display:inline-block;font-family:Menlo,Monaco,Courier New,monospace;font-size:.82em;background:var(--bg-badge, #f0f0f0);color:var(--text-secondary, #555555);border:1px solid var(--border-light, #e8e8e8);border-radius:4px;padding:1px 6px;line-height:1.4}.unresolved-badge-inline{display:inline-flex;align-items:center;justify-content:center;background:var(--danger, #e53935);color:#fff;font-size:.55em;font-weight:700;padding:2px 8px;border-radius:12px;min-width:22px;text-align:center;vertical-align:middle;margin-left:8px;line-height:1.4}
