*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{font-family:Microsoft YaHei,Noto Sans,Noto Sans CJK,Noto Sans SC,-apple-system,BlinkMacSystemFont,PingFang SC,Roboto,Droid Sans Fallback,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #fff9f0;--bg-secondary: #ffffff;--bg-tertiary: #e8e8e8;--bg-card: #fff9f0;--bg-indices-item: rgba(0, 0, 0, .05);--btn-master-bg: var(--bg-tertiary);--floor-plan-controls-bg: linear-gradient(to right, #D2CFCC 0%, #F0F0EE 100%);--bg-header: linear-gradient(135deg, #ffffff 0%, #f0f0f0 100%);--text-primary: #1a1a1a;--text-secondary: #666666;--text-tertiary: #999999;--border-primary: rgba(0, 0, 0, .1);--border-secondary: rgba(0, 0, 0, .05);--border-accent: rgba(0, 136, 204, .3);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .08);--shadow-md: 0 4px 16px rgba(0, 0, 0, .12);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .16);--btn-bg: #ffffff;--btn-bg-hover: #f5f5f5;--btn-text: #333333;--btn-text-secondary: #666666;--btn-border: #cccccc;--accent-color: #00abd1;--accent-hover: #006ba3;--accent-shadow: rgba(0, 136, 204, .3);--overlay-bg: rgba(0, 0, 0, .3);--loading-bg: rgba(255, 255, 255, .95);--loading-text: #0088cc;--skeleton-bg: rgba(0, 0, 0, .08);--skeleton-shimmer: rgba(0, 0, 0, .12);--skeleton-mobile-duration: 1.1s;--skeleton-mobile-size: 300% 100%;--weather-color-sun: #FFC107;--weather-color-cloud: #9E9E9E;--weather-color-rain: #2196F3;--weather-color-snow: #B0E0E6;--weather-color-fog: #BDBDBD;--weather-color-night-icon: #E0E0E0;--weather-color-default: var(--text-primary);color-scheme:light;color:var(--text-primary);background-color:var(--bg-primary);--settings-color: #89b4cd}:root.night-mode{--bg-primary: #0a0a0a;--bg-secondary: #1a1a1a;--bg-tertiary: #2a2a2a;--bg-card: #1b1b1b;--bg-indices-item: rgba(255, 255, 255, .1);--btn-master-bg: rgba(255, 255, 255, .1);--floor-plan-controls-bg: var(--bg-card);--bg-header: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%);--text-primary: #ffffff;--text-secondary: #aaaaaa;--text-tertiary: #666666;--border-primary: rgba(255, 255, 255, .1);--border-secondary: rgba(255, 255, 255, .05);--border-accent: rgba(0, 210, 255, .3);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .5);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .8);--btn-bg: #2a2a2a;--btn-bg-hover: rgba(255, 255, 255, .1);--btn-text: #aaaaaa;--btn-text-secondary: #888888;--btn-border: #555555;--accent-color: #025f8d;--accent-hover: #00a8cc;--accent-shadow: rgba(0, 210, 255, .5);--overlay-bg: rgba(0, 0, 0, .5);--loading-bg: rgba(0, 0, 0, .8);--loading-text: #00d2ff;--skeleton-bg: rgba(255, 255, 255, .1);--skeleton-shimmer: rgba(255, 255, 255, .2);--skeleton-mobile-duration: 1.1s;--skeleton-mobile-size: 300% 100%;--weather-color-sun: #FFD54F;--weather-color-cloud: #B0BEC5;--weather-color-rain: #64B5F6;--weather-color-snow: #E1F5FE;--weather-color-fog: #90A4AE;--weather-color-night-icon: #F5F5F5;--weather-color-default: var(--text-primary);color-scheme:dark;color:var(--text-primary);background-color:var(--bg-primary);--settings-color: #8ba4b2}body{margin:0;width:100vw;height:100vh;overflow:hidden}body.modal-open{overflow:hidden;touch-action:none;overscroll-behavior:none}#root{width:100%;height:100%}button{font-family:inherit;cursor:pointer}button:focus,button:focus-visible{outline:none}@keyframes skeleton-shimmer-mobile{0%{background-position:300% 0}to{background-position:-300% 0}}@media(max-width:600px){body{width:100%;height:auto;min-height:100dvh;overflow-x:hidden;overflow-y:auto}#root{height:auto;min-height:100dvh}}.calendar-modal-overlay{position:fixed;inset:0;background:var(--overlay-bg);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease-in-out}.calendar-modal-content{background:#f5f3f0;border-radius:24px;width:90%;max-width:1100px;height:85vh;max-height:700px;box-shadow:0 20px 60px #0000004d;position:relative;animation:slideUp .3s ease-out;overflow:hidden}@media(max-width:768px){.calendar-modal-overlay{z-index:20000}.calendar-modal-content{z-index:20001}}.calendar-close-btn{position:absolute;top:20px;right:20px;background:#bc8f8f33;border:none;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;z-index:10;color:#9d7b7b}.calendar-close-btn:hover{background:#bc8f8f59;transform:scale(1.1)}.calendar-container{display:flex;height:100%;gap:16px;padding:16px 20px 20px}.calendar-left-info-panel{flex:1;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding-right:4px}.calendar-left-info-panel::-webkit-scrollbar{width:6px}.calendar-left-info-panel::-webkit-scrollbar-thumb{background:#9d7b7b4d;border-radius:3px}.calendar-right-calendar-panel{flex:1.3;display:flex;flex-direction:column;gap:8px;position:relative;min-height:400px;overflow:hidden}.calendar-header{display:flex;align-items:center;justify-content:center;padding:0 4px;flex-shrink:0}.calendar-header-title{font-size:22px;font-weight:600;color:#5d5347;margin:0;cursor:pointer;padding:4px 16px;border-radius:12px;transition:all .2s;user-select:none;display:flex;align-items:center;gap:8px}.calendar-header-title:hover{background:#bc8f8f1a}.calendar-header-title:active{background:#bc8f8f33;transform:scale(.98)}.calendar-header-icon{transition:transform .3s cubic-bezier(.4,0,.2,1);color:#9d7b7b;flex-shrink:0}.date-picker-dropdown{position:absolute;top:50px;left:50%;transform:translate(-50%);background:#fffffffa;border-radius:16px;padding:20px;box-shadow:0 8px 24px #00000026;z-index:100;min-width:300px;animation:dropdownFadeIn .2s ease-out;backdrop-filter:blur(10px)}@keyframes dropdownFadeIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.date-picker-content{display:flex;flex-direction:column;gap:16px}.year-selector-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.year-nav-btn{background:#bc8f8f26;border:none;border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;color:#9d7b7b}.year-nav-btn:hover{background:#bc8f8f40;transform:scale(1.05)}.year-nav-btn:active{transform:scale(.95)}.year-display{flex:1;text-align:center;font-size:18px;font-weight:600;color:#5d5347}.month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.month-btn{background:#bc8f8f1a;border:none;border-radius:10px;padding:10px;font-size:14px;font-weight:500;color:#5d5347;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1);-webkit-tap-highlight-color:transparent}.month-btn:hover{background:#bc8f8f33;transform:translateY(-1px)}.month-btn:active{transform:translateY(0) scale(.95)}.month-btn.selected{background:linear-gradient(135deg,#d4b5b5,#e4c9c9);color:#fff;box-shadow:0 2px 8px #bc8f8f4d}.quick-nav-row{display:flex;gap:8px;margin-top:4px}.quick-nav-btn{flex:1;background:#bc8f8f26;border:none;border-radius:8px;padding:8px;font-size:13px;font-weight:500;color:#5d5347;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1);-webkit-tap-highlight-color:transparent}.quick-nav-btn:hover{background:#bc8f8f40;transform:translateY(-1px)}.quick-nav-btn:active{transform:translateY(0) scale(.98)}.date-picker-confirm-btn{background:linear-gradient(135deg,#d4b5b5,#e4c9c9);border:none;border-radius:10px;padding:12px;font-size:15px;font-weight:600;color:#fff;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent}.date-picker-confirm-btn:hover{box-shadow:0 4px 12px #bc8f8f4d;transform:translateY(-1px)}.date-picker-confirm-btn:active{transform:translateY(0) scale(.98)}.calendar-wrapper{flex:1;width:100%;overflow:hidden;position:relative;min-height:400px}.calendar-slides-container{display:flex;height:100%;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;touch-action:pan-x;contain:layout style}.calendar-month-slide{width:100%;height:100%;flex-shrink:0;padding:8px 2px;display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden;contain:layout style paint}.calendar-weekdays-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;flex-shrink:0;padding:0 0 8px}.calendar-days-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;gap:6px;flex:1;min-height:0;contain:layout style}.calendar-weekday{text-align:center;font-weight:600;font-size:15px;color:#9d8b7f;opacity:.85;display:flex;align-items:center;justify-content:center;height:auto}.calendar-day{min-height:0;height:100%;width:100%;display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;border-radius:10px;cursor:pointer;background:#ffffff80;position:relative;-webkit-tap-highlight-color:transparent;box-sizing:border-box;overflow:hidden;contain:layout style;padding:4px 6px;gap:2px}.calendar-day.empty{cursor:default;background:transparent;pointer-events:none}.calendar-day:not(.empty):active{transform:scale(.95)}.calendar-day.today{background:linear-gradient(135deg,#f4d7c3,#f5e6d3);color:#8b6f47;box-shadow:0 2px 8px #bc8f8f33}.calendar-day.today .day-lunar{color:#8b6f47b3}.calendar-day.selected{background:linear-gradient(135deg,#c8b8a8,#d4c4b4)!important;color:#5d5347;box-shadow:0 4px 12px #9d7b7b40}.calendar-day.selected .day-lunar{color:#5d5347b3}.day-header{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%}.day-header-no-weather{display:flex;justify-content:flex-end;width:100%;position:absolute;top:8px;right:8px;z-index:1;pointer-events:none}.day-number{font-size:20px;font-weight:600;color:#5d5347;line-height:1;flex-shrink:0}.day-number-center{font-size:26px;font-weight:700;color:#5d5347;line-height:1;display:flex;align-items:center;justify-content:center;flex:1}.calendar-day.today .day-number{color:#8b6f47;font-weight:700}.calendar-day.today .day-number-center{color:#8b6f47}.calendar-day.selected .day-number{color:#5d5347;font-weight:700}.calendar-day.selected .day-number-center{color:#5d5347}.day-lunar{font-size:11px;color:#9d8b7f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:right;line-height:1}.day-weather-icon{display:flex;align-items:center;justify-content:center;width:100%;flex:1;min-height:28px}.day-weather-icon img{width:30px;height:30px;object-fit:contain}.calendar-day.no-weather{justify-content:center}.day-bottom-info{font-size:11px;color:#8b7355;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;line-height:1.2;font-weight:500}.day-lunar.festival{color:#bc8f8f;font-weight:600}.day-lunar.special-birthday{color:#f59e0b;font-weight:600}.day-lunar.special-anniversary{color:#ef4444;font-weight:600}.day-bottom-info.birthday{color:#f59e0b;font-weight:600}.day-bottom-info.anniversary{color:#ef4444;font-weight:600}.day-bottom-info.festival{color:#bc8f8f;font-weight:600}.calendar-day.has-festival{background:#bc8f8f14}.calendar-day.has-birthday{background:#f59e0b1a}.calendar-day.has-anniversary{background:#ef44441a}.date-info-card{background:linear-gradient(135deg,#e8d5d5,#f0e4d7);border-radius:16px;padding:16px;color:#5d5347}.calendar-info-drag-zone{touch-action:none;cursor:grab}.date-info-card h3{margin:0 0 8px;font-size:18px;font-weight:600;color:#5d5347}.lunar-info{margin-bottom:12px}.lunar-date{font-size:14px;opacity:.85;margin:0;color:#8b6f47}.date-info-card .yi-ji-content{display:flex;flex-direction:column;gap:6px;font-size:13px;padding-top:12px;border-top:1px solid rgba(157,123,123,.15)}.date-info-card .yi-ji-content .yi-section,.date-info-card .yi-ji-content .ji-section{display:flex;align-items:center;gap:8px;line-height:1.4}.date-info-card .yi-ji-content .yi-label,.date-info-card .yi-ji-content .ji-label{font-weight:600;flex-shrink:0;color:#9d7b7b}.date-info-card .yi-ji-content .yi-items,.date-info-card .yi-ji-content .ji-items{flex:1;color:#8b6f47}.special-dates-countdown-card{background:#ffffff80;border-radius:16px;padding:16px;margin-bottom:12px}.special-dates-countdown-card h4{margin:0 0 12px;font-size:16px;font-weight:600;color:#9d7b7b}.special-dates-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.special-date-item{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#ffffffb3;border-radius:10px;border-left:3px solid transparent;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.special-date-item:hover{background:#ffffffe6;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.special-date-item:active{transform:translateY(0) scale(.98)}.special-date-item.birthday{border-left-color:#f59e0b}.special-date-item.anniversary{border-left-color:#ef4444}.special-date-header{display:flex;align-items:center;gap:6px}.special-date-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.special-date-item.birthday .special-date-icon{color:#f59e0b}.special-date-item.anniversary .special-date-icon{color:#ef4444}.special-date-name{flex:1;font-weight:600;font-size:14px;color:#5d5347;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.special-date-countdown{font-size:13px;font-weight:600;color:#c17a5a;flex-shrink:0}.special-date-info{display:flex;align-items:center;padding-left:20px}.special-date-display{font-size:12px;color:#8b7355}.holiday-countdown-card{background:#ffffff80;border-radius:16px;padding:16px}.holiday-countdown-card h4{margin:0 0 12px;font-size:16px;font-weight:600;color:#9d7b7b}.holiday-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.holiday-item{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:#ffffffb3;border-radius:10px;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.holiday-item:hover{background:#ffffffe6;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.holiday-item:active{transform:translateY(0) scale(.98)}.holiday-header{display:flex;justify-content:space-between;align-items:center}.holiday-name{font-weight:600;font-size:14px;color:#5d5347}.holiday-countdown{color:#bc8f8f;font-weight:600;font-size:13px}.holiday-dates{display:flex;gap:8px;font-size:11px;color:#9d8b7f}.holiday-solar{color:#8b6f47}.holiday-lunar{color:#9d7b7b}@media(max-width:1024px){.calendar-container{flex-direction:column}.calendar-left-info-panel{flex:none;height:auto;max-height:40%}.calendar-right-calendar-panel{flex:1;min-height:400px}.calendar-wrapper{min-height:350px}}@media(max-width:768px){.calendar-modal-content{width:95%;height:90vh}.calendar-container{padding:16px;gap:12px}.day-number{font-size:16px}.day-number-center{font-size:22px}.day-lunar{font-size:10px}.day-weather-icon img{width:30px;height:30px}.day-bottom-info{font-size:11px}.calendar-left-info-panel{max-height:50%}}@media(max-width:600px){.calendar-modal-content{width:100%;height:100dvh;max-height:none;border-radius:0}.calendar-close-btn{top:12px;right:12px;width:32px;height:32px}.calendar-container{padding:12px;gap:10px;height:100%;position:relative}.calendar-right-calendar-panel{order:1;flex:1;min-height:0;padding-bottom:36dvh;z-index:1}.calendar-left-info-panel{max-height:none}.calendar-left-info-panel.mobile-info-sheet{position:absolute;left:12px;right:12px;bottom:12px;height:var(--calendar-info-height, 36dvh);background:var(--bg-card);border-radius:16px;box-shadow:var(--shadow-md);padding:12px 12px 14px;overflow-y:auto;overscroll-behavior:contain;z-index:5;transform:translateY(var(--calendar-info-drag, 0px));transition:transform .3s cubic-bezier(.25,.46,.45,.94),height .3s cubic-bezier(.25,.46,.45,.94);will-change:transform;scrollbar-width:none}.calendar-left-info-panel.mobile-info-sheet::-webkit-scrollbar{width:0;height:0}.calendar-left-info-panel.mobile-info-sheet.is-expanded{height:var(--calendar-info-height, 36dvh)}.calendar-left-info-panel.mobile-info-sheet.is-dragging{transition:none;overflow:hidden}.calendar-info-drag-handle{position:absolute;top:0;left:0;right:0;height:24px;touch-action:none;z-index:6;pointer-events:none}.calendar-info-drag-handle:after{content:"";position:absolute;left:50%;top:4px;width:52px;height:6px;border-radius:999px;transform:translate(-50%);background:#0003}:root.night-mode .calendar-info-drag-handle:after{background:#ffffff40}.calendar-right-calendar-panel,.calendar-wrapper{min-height:0}.calendar-header-title{font-size:18px;padding:4px 10px}.date-picker-dropdown{left:16px;right:16px;transform:none;min-width:0;width:calc(100vw - 32px)}.calendar-weekdays-row{gap:4px;padding:0 0 6px}.calendar-days-grid{gap:4px}.calendar-weekday{font-size:13px}.calendar-day{padding:3px 4px;border-radius:8px}.day-number{font-size:14px}.day-number-center{font-size:18px}.day-lunar{font-size:9px}.day-weather-icon img{width:24px;height:24px}.day-bottom-info{font-size:10px}}:root.night-mode .calendar-modal-content{background:#1a1a1a;box-shadow:0 20px 60px #0009}:root.night-mode .calendar-close-btn{background:#ffffff1a;color:#aaa}:root.night-mode .calendar-close-btn:hover{background:#fff3}:root.night-mode .calendar-header-title{color:#e0e0e0}:root.night-mode .calendar-header-title:hover{background:#ffffff1a}:root.night-mode .calendar-header-icon{color:#888}:root.night-mode .date-picker-dropdown{background:#282828fa;box-shadow:0 8px 24px #0006}:root.night-mode .year-nav-btn{background:#ffffff1a;color:#aaa}:root.night-mode .year-nav-btn:hover{background:#fff3}:root.night-mode .year-display{color:#e0e0e0}:root.night-mode .month-btn{background:#ffffff14;color:#ccc}:root.night-mode .month-btn:hover{background:#ffffff26}:root.night-mode .month-btn.selected{background:linear-gradient(135deg,#4a5a8a,#5a6a9a);color:#fff}:root.night-mode .quick-nav-btn{background:#ffffff1a;color:#ccc}:root.night-mode .quick-nav-btn:hover{background:#fff3}:root.night-mode .date-picker-confirm-btn{background:linear-gradient(135deg,#4a5a8a,#5a6a9a)}:root.night-mode .calendar-weekday{color:#888}:root.night-mode .calendar-day{background:#ffffff0d}:root.night-mode .calendar-day.empty{background:transparent}:root.night-mode .calendar-day.today{background:linear-gradient(135deg,#4a5a8a,#3a4a7a);color:#fff}:root.night-mode .calendar-day.today .day-number{color:#fff}:root.night-mode .calendar-day.today .day-lunar{color:#ffffffb3}:root.night-mode .calendar-day.selected{background:linear-gradient(135deg,#5a6a9a,#4a5a8a)!important;color:#fff}:root.night-mode .calendar-day.selected .day-number{color:#fff}:root.night-mode .calendar-day.selected .day-lunar{color:#ffffffb3}:root.night-mode .calendar-day.has-festival{background:#6482b426}:root.night-mode .day-number{color:#e0e0e0}:root.night-mode .day-number-center{color:#e0e0e0}:root.night-mode .calendar-day.today .day-number-center{color:#fff}:root.night-mode .calendar-day.selected .day-number-center{color:#fff}:root.night-mode .day-lunar{color:#888}:root.night-mode .day-lunar.festival{color:#7a9acc}:root.night-mode .day-lunar.special-birthday{color:#fbbf24}:root.night-mode .day-lunar.special-anniversary{color:#f87171}:root.night-mode .calendar-day.has-birthday{background:#fbbf2426}:root.night-mode .calendar-day.has-anniversary{background:#f8717126}:root.night-mode .day-bottom-info{color:#aaa}:root.night-mode .day-bottom-info.birthday{color:#fbbf24;font-weight:600}:root.night-mode .day-bottom-info.anniversary{color:#f87171;font-weight:600}:root.night-mode .day-bottom-info.festival{color:#7a9acc;font-weight:600}:root.night-mode .date-info-card{background:linear-gradient(135deg,#2a3a5a,#1a2a4a)}:root.night-mode .date-info-card h3{color:#e0e0e0}:root.night-mode .lunar-date{color:#aaa}:root.night-mode .date-info-card .yi-ji-content{border-top-color:#ffffff1a}:root.night-mode .date-info-card .yi-ji-content .yi-label,:root.night-mode .date-info-card .yi-ji-content .ji-label{color:#7a9acc}:root.night-mode .date-info-card .yi-ji-content .yi-items,:root.night-mode .date-info-card .yi-ji-content .ji-items{color:#bbb}:root.night-mode .special-dates-countdown-card{background:#ffffff0d}:root.night-mode .special-dates-countdown-card h4{color:#7a9acc}:root.night-mode .special-date-item{background:#ffffff14}:root.night-mode .special-date-item:hover{background:#ffffff26;box-shadow:0 4px 12px #0000004d}:root.night-mode .special-date-item.birthday{border-left-color:#f59e0b}:root.night-mode .special-date-item.anniversary{border-left-color:#ef4444}:root.night-mode .special-date-name{color:#e0e0e0}:root.night-mode .special-date-countdown{color:#6a8acc}:root.night-mode .special-date-display{color:#888}:root.night-mode .holiday-countdown-card{background:#ffffff0d}:root.night-mode .holiday-countdown-card h4{color:#7a9acc}:root.night-mode .holiday-item{background:#ffffff14}:root.night-mode .holiday-item:hover{background:#ffffff26;box-shadow:0 4px 12px #0000004d}:root.night-mode .holiday-name{color:#e0e0e0}:root.night-mode .holiday-countdown{color:#6a8acc}:root.night-mode .holiday-solar{color:#aaa}:root.night-mode .holiday-lunar{color:#888}:root.night-mode .calendar-left-info-panel::-webkit-scrollbar-thumb{background:#fff3}.datetime-display{display:flex;align-items:center;gap:16px;font-size:16px;color:var(--text-primary);font-weight:500;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;cursor:pointer;padding:8px 4px 8px 12px;border-radius:12px;transition:all .2s ease;user-select:none;-webkit-tap-highlight-color:transparent}.datetime-display:hover{background:#0000000d;transform:translateY(-1px)}.datetime-display:active{transform:translateY(0);background:#00000014}.datetime-display .weekday{color:var(--text-primary);font-weight:600}.datetime-display .lunar-date{color:var(--text-primary);font-size:17px}:root.night-mode .datetime-display .lunar-date{color:#fff}.datetime-display .current-date{color:var(--text-primary);font-size:18px}.datetime-display .current-time{color:var(--text-primary);font-weight:600;letter-spacing:1px;font-size:18px}.datetime-display .datetime-indicator{color:var(--text-primary);opacity:.7;transition:all .2s ease}.datetime-display:hover .datetime-indicator{opacity:1}@media(max-width:768px){.datetime-display{gap:8px;font-size:13px}.datetime-display .lunar-date{font-size:12px}.datetime-display .weekday,.datetime-display .lunar-date{display:none}}@media(max-width:600px){.datetime-display{padding:6px;gap:8px}.datetime-display .lunar-date,.datetime-display .weekday,.datetime-display .current-date{display:none}.datetime-display .current-time{font-size:17px;display:inline}}.dock{display:flex;flex-direction:column;justify-content:center;gap:24px;background:var(--bg-card);border-radius:10px;padding:12px 7px;box-shadow:var(--shadow-lg);height:calc(100% - 10px);width:58px;flex-shrink:0;margin-bottom:10px;-webkit-tap-highlight-color:transparent}:root:not(.night-mode) .dock{background:linear-gradient(to bottom,#fff0e0,#fff8f0)}.dock-item{width:44px;height:48px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:12px;cursor:pointer;color:var(--text-secondary);transition:all .2s ease;position:relative;-webkit-tap-highlight-color:transparent}.dock-item:hover{background:var(--bg-hover);color:var(--text-primary);transform:scale(1.1)}.dock-item.active{background:var(--bg-active);color:var(--text-primary)}.dock-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:24px;background:var(--text-primary);border-radius:2px}.dock-item svg{width:24px;height:24px}.dock-collapse{display:none}@media(max-width:600px){.dock{flex-direction:row;justify-content:space-around;width:100%;height:56px;padding:6px 10px;margin-bottom:0;border-radius:14px}.dock-item{width:44px;height:44px}.dock-item.active:before{left:50%;top:auto;bottom:-6px;transform:translate(-50%);width:24px;height:3px}.dock-collapse{display:flex;color:var(--text-secondary)}}.dynamic-header{display:flex;align-items:center;height:100%;overflow:hidden;min-width:200px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none}.dh-content{display:flex;align-items:center;gap:10px;transition:opacity .5s ease,transform .5s ease}.dh-icon{font-size:1.4rem}.dh-text{font-size:1.1rem;font-weight:500;white-space:nowrap}.fade-in{opacity:1;transform:translateY(0)}.fade-out{opacity:0;transform:translateY(-10px)}@media(max-width:600px){.dynamic-header{min-width:0}.dh-text{font-size:.95rem;max-width:160px;overflow:hidden;text-overflow:ellipsis}}.blackout-modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:99999;animation:blackoutFadeIn .2s ease}.blackout-modal-backdrop.night-mode{background:#0009}@keyframes blackoutFadeIn{0%{opacity:0}to{opacity:1}}.blackout-modal{background:var(--bg-card);border-radius:16px;width:66.67%;max-height:75vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md);animation:blackoutSlideUp .3s ease;overflow:hidden}.blackout-modal-backdrop.night-mode .blackout-modal{border:1px solid var(--border-primary)}@keyframes blackoutSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.blackout-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-primary)}.blackout-modal-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--text-primary)}.blackout-modal-title svg{color:#f59e0b}.blackout-modal-backdrop.night-mode .blackout-modal-title svg{color:#fbbf24}.blackout-modal-close{background:transparent;border:none;color:var(--text-tertiary);cursor:pointer;padding:4px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .2s;outline:none;-webkit-tap-highlight-color:transparent}.blackout-modal-close:hover{background:var(--btn-bg-hover);color:var(--text-secondary)}.blackout-tabs{display:flex;padding:12px 16px 0;gap:8px;border-bottom:1px solid var(--border-secondary)}.blackout-tab{flex:1;padding:10px 16px;border:none;background:transparent;color:var(--text-tertiary);font-size:14px;font-weight:500;cursor:pointer;border-radius:8px 8px 0 0;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px;outline:none;-webkit-tap-highlight-color:transparent;position:relative}.blackout-modal-backdrop.night-mode .blackout-tab.active{color:#fbbf24;background:#fbbf241f}.blackout-modal-backdrop.night-mode .blackout-tab.active:after{background:#fbbf24}.blackout-tabs.gas-theme .blackout-tab.active{color:#ef4444;background:#ef444414}.blackout-tabs.gas-theme .blackout-tab.active:after{background:#ef4444}.blackout-modal-backdrop.night-mode .blackout-tabs.gas-theme .blackout-tab.active{color:#f87171;background:#f871711f}.blackout-modal-backdrop.night-mode .blackout-tabs.gas-theme .blackout-tab.active:after{background:#f87171}.blackout-tabs.water-theme .blackout-tab.active{color:#3b82f6;background:#3b82f614}.blackout-tabs.water-theme .blackout-tab.active:after{background:#3b82f6}.blackout-modal-backdrop.night-mode .blackout-tabs.water-theme .blackout-tab.active{color:#60a5fa;background:#60a5fa1f}.blackout-modal-backdrop.night-mode .blackout-tabs.water-theme .blackout-tab.active:after{background:#60a5fa}.blackout-modal-backdrop.night-mode .blackout-tabs.alert-theme .blackout-tab.active{color:#f87171;background:#f871711f}.blackout-modal-backdrop.night-mode .blackout-tabs.alert-theme .blackout-tab.active:after{background:#f87171}.blackout-modal-backdrop.night-mode .tab-count{background:#dc2626}.blackout-modal-content{flex:1;overflow-y:auto;padding:12px 16px 16px}.notices-list{display:flex;flex-direction:column;gap:12px}.blackout-notice-item{background:var(--bg-indices-item);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.notice-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.header-item{display:flex;align-items:center;gap:4px;font-size:13px}.header-label{color:var(--text-secondary);flex-shrink:0}.header-value{color:var(--text-primary);font-weight:500}.notice-substation-row{display:flex;align-items:flex-start;gap:4px;font-size:13px}.notice-type-tag{display:inline-flex;align-items:center;gap:4px;background:#f59e0b26;color:#d97706;font-size:12px;font-weight:500;padding:3px 8px;border-radius:6px;flex-shrink:0}.notice-type-tag.alert-level-红色,.notice-type-tag.alert-level-Red{background:#dc262626;color:#dc2626}.notice-type-tag.alert-level-橙色,.notice-type-tag.alert-level-Orange{background:#ea580c26;color:#ea580c}.notice-type-tag.alert-level-黄色,.notice-type-tag.alert-level-Yellow{background:#ca8a0426;color:#ca8a04}.notice-type-tag.alert-level-蓝色,.notice-type-tag.alert-level-Blue{background:#2563eb26;color:#2563eb}.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-红色,.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-Red{background:#f871712e;color:#f87171}.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-橙色,.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-Orange{background:#fb923c2e;color:#fb923c}.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-黄色,.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-Yellow{background:#facc152e;color:#facc15}.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-蓝色,.blackout-modal-backdrop.night-mode .notice-type-tag.alert-level-Blue{background:#60a5fa2e;color:#60a5fa}.notice-type-tag.urgent{background:#ef444426;color:#dc2626}.notice-type-tag.recovered{background:#22c55e26;color:#16a34a}.blackout-modal-backdrop.night-mode .notice-type-tag{background:#fbbf242e;color:#fcd34d}.blackout-modal-backdrop.night-mode .notice-type-tag.urgent{background:#ef44442e;color:#f87171}.blackout-modal-backdrop.night-mode .notice-type-tag.recovered{background:#22c55e2e;color:#4ade80}.notice-time-row{display:flex;align-items:center;gap:6px;font-size:13px}.notice-icon{color:var(--text-secondary);flex-shrink:0}.time-item{display:flex;align-items:center;gap:4px;margin-right:16px}.time-label{color:var(--text-secondary)}.time-value{color:var(--text-primary);font-weight:500}.notice-detail-section{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px dashed var(--border-primary)}.notice-detail-row{display:flex;align-items:flex-start;gap:4px;font-size:13px}.detail-label{color:var(--text-secondary);flex-shrink:0}.detail-value{color:var(--text-primary);line-height:1.4}.blackout-modal-content::-webkit-scrollbar{width:4px}.blackout-modal-content::-webkit-scrollbar-track{background:transparent}.blackout-modal-content::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:2px}@media(max-width:600px){.blackout-modal{width:92vw;max-height:82dvh;border-radius:14px}.blackout-modal-header{padding:12px 14px}.blackout-modal-title{font-size:14px;gap:8px}.blackout-modal-close{padding:2px}.blackout-tabs{padding:10px 12px 0;gap:6px}.blackout-tab{font-size:12px;padding:8px 10px;gap:4px}.blackout-modal-content{padding:10px 12px 14px}.blackout-notice-item{padding:10px 12px;gap:6px}.notice-header-row,.notice-time-row{flex-wrap:wrap;gap:8px 10px}.header-item,.notice-substation-row,.notice-detail-row{font-size:12px}.time-item{margin-right:8px}.detail-value{line-height:1.35}}.weather-card{display:flex;flex-direction:column;gap:12px;color:var(--text-primary);width:100%;flex-shrink:0}.weather-top-row{display:grid;grid-template-columns:auto 1fr;gap:6px;border-radius:24px;box-shadow:var(--shadow-sm);padding:0}.weather-sun{background-image:url(/icons/cloudy--day.png),linear-gradient(135deg,#fee5ca,#e9f0ff 55%,#dce3fb)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-cloudy{background-image:url(/icons/cloudy--day.png),linear-gradient(135deg,#d0dae8,#ccd4df 55%,#a5b3c5)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-rain{background-image:url(/icons/rain--day.png),linear-gradient(135deg,#dbebff,#dde5f4 55%,#becddd)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-snow{background-image:url(/icons/snow--day.png),linear-gradient(135deg,#d2f0fd,#e6f8fe 55%,#d6eded)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-haze{background-image:url(/icons/haze--day.png),linear-gradient(135deg,#b29c82,#ded9d7 64.29%,#d9d7dc)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-sun.night-mode{background-image:url(/icons/cloudy--night.png),linear-gradient(135deg,#2a427f,#1b2751)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-cloudy.night-mode{background-image:url(/icons/cloudy--night.png),linear-gradient(135deg,#8089a5,#424c66)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-rain.night-mode{background-image:url(/icons/rain--night.png),linear-gradient(135deg,#2c4a77,#1f3b59)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-snow.night-mode{background-image:url(/icons/snow--night.png),linear-gradient(135deg,#18779e,#0d3f54)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-haze.night-mode{background-image:url(/icons/haze--night.png),linear-gradient(135deg,#8f8d52,#2b333c)!important;background-size:50% auto,cover!important;background-position:left top,center!important;background-repeat:no-repeat!important}.weather-loading,.weather-error{padding:40px;text-align:center;color:var(--text-secondary);font-size:16px}.weather-error-state{background:linear-gradient(135deg,#e8e0d8,#d8d0c8)!important;min-height:100px;display:flex;align-items:center;justify-content:center}.weather-error-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px}.weather-error-icon{color:#9d8b7f;opacity:.7}.weather-error-text{font-size:16px;font-weight:500;color:#8b7355;text-align:center}:root.night-mode .weather-error-state{background:linear-gradient(135deg,#2a2a2a,#1a1a1a)!important}:root.night-mode .weather-error-icon{color:#666}:root.night-mode .weather-error-text{color:#888}.weather-main{display:flex;align-items:center;gap:0;padding:12px 10px}.weather-temp-info{display:flex;flex-direction:column;align-items:center;gap:2px}.weather-temp{font-size:42px;font-weight:300;line-height:1}.weather-text{font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px}.daily-temp-range{font-weight:500;opacity:.8}.weather-details{display:flex;flex-direction:column;justify-content:space-between;gap:6px;padding:12px 8px;min-width:0}.weather-tip{font-size:13px;line-height:1.4;overflow:hidden;position:relative;width:100%}.weather-tip-content{display:inline-block;white-space:nowrap}.weather-tip-content.marquee{animation:marquee 20s linear infinite}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.current-details-card{display:flex;flex-wrap:wrap;justify-content:space-around;align-items:center;gap:8px;background:#ffffff4d;border-radius:12px;padding:8px}.detail-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:0 4px}.param-label{font-size:11px;font-weight:500;opacity:.8;text-align:center;line-height:1.2;white-space:nowrap}.param-value{font-size:16px;font-weight:700}.weather-icon-large{width:64px;height:64px;overflow:hidden;margin-right:8px;flex-shrink:0;color:var(--text-primary)}.weather-icon-large img{width:100%;height:100%;object-fit:contain}.hourly-icon,.daily-icons{display:flex;justify-content:center;align-items:center;flex-shrink:0;color:var(--text-primary)}.hourly-icon{width:32px;height:32px}.daily-icons{width:32px;height:30px;margin-left:10px}.hourly-icon img,.daily-icons img{width:100%;height:100%;object-fit:contain}.weather-swipe-wrapper{position:relative;height:165px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}.weather-forecast-container,.weather-extra-container{grid-area:1 / 1;opacity:0;transition:opacity .3s ease-in-out;pointer-events:none}.weather-forecast-container{display:flex;gap:16px;background:transparent;height:165px;width:100%;max-width:100%;box-sizing:border-box;min-width:0}.weather-extra-container{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:12px;background:transparent;height:165px;padding:4px}.weather-forecast-container.active,.weather-extra-container.active{opacity:1;pointer-events:auto}.weather-daily{width:41%;min-width:0;border-radius:24px;filter:drop-shadow(0 8px 16px rgba(0,0,0,.16));background:var(--bg-card);overflow:hidden}.daily-scroll{display:flex;flex-direction:column;overflow-y:auto;height:100%;padding:4px 10px 10px;scrollbar-width:none}.daily-scroll::-webkit-scrollbar{display:none}.daily-item{display:flex;align-items:center;gap:0;padding:5px 4px;flex-shrink:0}.daily-date{font-size:12px;width:60px;flex-shrink:0;white-space:nowrap}.daily-icons{width:36px;flex-shrink:0}.daily-text{font-size:13px;width:50px;flex-shrink:0;white-space:nowrap;margin-left:6px}.daily-temp{display:flex;gap:0px;font-size:13px;white-space:nowrap;width:63px;flex-shrink:0}.temp-max,.temp-min{font-weight:600}.temp-separator{display:inline;opacity:.7}.weather-right-panel{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.weather-hourly{flex:1.2;border-radius:16px;filter:drop-shadow(0 8px 16px rgba(0,0,0,.16));background:var(--bg-card);overflow:hidden}.hourly-scroll{display:flex;overflow-x:auto;height:100%;padding:10px 10px 10px 7px;scrollbar-width:none}.hourly-scroll::-webkit-scrollbar{display:none}.hourly-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px;min-width:50px;flex-shrink:0}.hourly-time,.hourly-temp{font-size:11px;font-weight:500}.hourly-temp{font-weight:600}.weather-indices{flex:1;width:100%;border-radius:16px;filter:drop-shadow(0 8px 16px rgba(0,0,0,.16));background:var(--bg-card);overflow:hidden}.indices-scroll{display:flex;justify-content:space-between;overflow-x:auto;height:100%;padding:10px;scrollbar-width:none}.indices-scroll::-webkit-scrollbar{display:none}.indices-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 13px;background:var(--bg-indices-item);border-radius:10px}.indices-name{font-size:11px;font-weight:500}.indices-category{font-size:12px;font-weight:700!important;text-shadow:.5px 0 0 currentColor;width:100%;text-align:center}@media(max-width:1024px){.weather-top-row{grid-template-columns:1fr}.weather-main,.weather-details{padding:12px 15px}.weather-icon-large{width:48px;height:48px}.weather-temp{font-size:36px}}.weather-card *{animation:none!important}.weather-tip-content.marquee{animation:marquee 20s linear infinite!important}.skeleton-bg{background:var(--bg-card)!important}.skeleton{background:linear-gradient(90deg,var(--skeleton-bg) 25%,var(--skeleton-shimmer) 50%,var(--skeleton-bg) 75%);background-size:200% 100%;animation:shimmer 2.5s ease-in-out infinite!important;border-radius:8px;flex-shrink:0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(max-width:600px){.skeleton{animation:skeleton-shimmer-mobile var(--skeleton-mobile-duration) linear infinite!important;background-size:var(--skeleton-mobile-size)}}.skeleton-icon-large{width:64px;height:64px;border-radius:50%;margin-right:8px}.skeleton-temp{width:63px;height:42px}.skeleton-text{width:84px;height:18px;margin-top:4px}.skeleton-tip{width:100%;height:16px;margin-bottom:6px}.skeleton-label{width:32px;height:14px}.skeleton-value{width:37px;height:18px}@keyframes mobile-skeleton-breathe{0%,to{transform:translateY(0);opacity:.92;box-shadow:0 6px 14px #1f293714}50%{transform:translateY(-1px);opacity:1;box-shadow:0 10px 22px #1f29371f}}.mobile-skeleton-surface{position:relative;overflow:hidden}.action-button{background:var(--bg-card);border-radius:16px;box-shadow:var(--shadow-md);padding:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#fff;font-weight:600;font-size:12px;cursor:pointer;transition:all .15s ease-in-out;-webkit-tap-highlight-color:transparent;overflow:hidden;position:relative;outline:none;z-index:1}.action-button:hover{box-shadow:var(--shadow-lg)}.action-button:active{transform:scale(1.05)}.action-button-icon{width:28px;height:28px}.action-button-icon-large{position:absolute;left:5px;top:50%;transform:translateY(-50%);width:auto;height:50%;opacity:.3;z-index:0}.action-button-label{margin-top:4px;position:relative;z-index:2;font-size:14px}.alert-badge{position:absolute;right:8px;top:8px;background:#ff3b30e6;color:#fff;font-size:16px;font-weight:700;min-width:24px;height:24px;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:0 6px;z-index:2}.action-button-detailed{flex-direction:column;align-items:center;justify-content:center;padding:8px}.action-button-detailed .toggle-switch{position:absolute;right:8px;top:8px;z-index:2;width:26px!important;height:16px!important}.action-button-detailed .toggle-switch input{opacity:0;width:0;height:0;outline:none}.action-button-detailed .toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#777;transition:.4s;border-radius:24px}.action-button-detailed .toggle-slider:before{position:absolute;content:"";height:10px!important;width:10px!important;left:3px!important;bottom:3px!important;background-color:#fff;transition:.4s;border-radius:50%}.action-button-detailed input:checked+.toggle-slider{background-color:#87ceeb}.action-button-detailed input:checked+.toggle-slider:before{transform:translate(10px)!important}.toggle-switch{position:relative;display:inline-block;width:26px;height:16px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;outline:none}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#777;transition:.4s;border-radius:24px}.toggle-slider:before{position:absolute;content:"";height:10px;width:10px;left:3px;bottom:3px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.toggle-slider{background-color:#87ceeb}input:checked+.toggle-slider:before{transform:translate(10px)}@keyframes pulse-switch{0%,to{opacity:1}50%{opacity:.6}}.toggle-switch.loading .toggle-slider:before{animation:pulse-switch 1.5s ease-in-out infinite}.gradient-1{background-image:linear-gradient(135deg,#b8a9c9,#c9b8d4);color:#4a4556}.gradient-2{background-image:linear-gradient(135deg,#d4b5c4,#e5c9d6);color:#5a4a52}.gradient-3{background-image:linear-gradient(135deg,#a8c5d6,#c4dae6);color:#455259}.gradient-4{background-image:linear-gradient(135deg,#b8d4c4,#d0e5d6);color:#4a5652}.gradient-5{background-image:linear-gradient(135deg,#e5c9b8,#f0ddd0);color:#5a524a}.gradient-6{background-image:linear-gradient(135deg,#c4b8a8,#d9cfc4);color:#524a45}.night-mode .action-button.gradient-1{background-image:linear-gradient(135deg,#4a4556,#5a5266);color:#fff}.night-mode .action-button.gradient-2{background-image:linear-gradient(135deg,#5a4a52,#6b5a63);color:#fff}.night-mode .action-button.gradient-3{background-image:linear-gradient(135deg,#455259,#566369);color:#fff}.night-mode .action-button.gradient-4{background-image:linear-gradient(135deg,#4a5652,#5a6663);color:#fff}.night-mode .action-button.gradient-5{background-image:linear-gradient(135deg,#5a524a,#6b6356);color:#fff}.night-mode .action-button.gradient-6{background-image:linear-gradient(135deg,#524a45,#635a56);color:#fff}@media(max-width:600px){.weather-card{margin-top:8px}.mobile-skeleton-surface{animation:mobile-skeleton-breathe 2.1s ease-in-out infinite}:root.night-mode .mobile-skeleton-surface{box-shadow:0 6px 14px #00000038}.weather-card-mobile-skeleton{gap:10px}.weather-card-mobile-skeleton .skeleton{border-radius:999px}.weather-mobile-skeleton-top{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.18fr);gap:10px;padding:12px;border-radius:24px;background:linear-gradient(135deg,#fff4e8eb,#eef2faeb)}:root.night-mode .weather-mobile-skeleton-top{background:linear-gradient(135deg,#35435ef2,#1e263af2)}.weather-mobile-skeleton-main-panel{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-width:0}.weather-mobile-skeleton-icon{width:54px;height:54px;margin-right:0}.weather-mobile-skeleton-main-copy{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.weather-mobile-skeleton-temp{width:70px;height:28px}.weather-mobile-skeleton-text{width:54px;height:14px}.weather-mobile-skeleton-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-content:center}.weather-mobile-skeleton-stat{display:flex;flex-direction:column;gap:6px;padding:10px 10px 9px;border-radius:16px;background:#ffffff5c;backdrop-filter:blur(8px)}:root.night-mode .weather-mobile-skeleton-stat{background:#ffffff14}.weather-mobile-skeleton-stat-label{width:34px;height:10px}.weather-mobile-skeleton-stat-value{width:48px;height:14px}.weather-mobile-skeleton-tip-card{padding:12px 14px;border-radius:18px;background:#fff9}:root.night-mode .weather-mobile-skeleton-tip-card{background:#ffffff12}.weather-mobile-skeleton-tip-line{height:12px}.weather-mobile-skeleton-tip-line+.weather-mobile-skeleton-tip-line{margin-top:8px}.weather-mobile-skeleton-tip-line--long{width:88%}.weather-mobile-skeleton-tip-line--short{width:56%}.weather-mobile-skeleton-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.weather-mobile-skeleton-action{display:flex;align-items:center;gap:12px;min-height:76px;padding:12px 14px;border-radius:18px;background:linear-gradient(135deg,#fffffff5,#f7f4eff0)}:root.night-mode .weather-mobile-skeleton-action{background:linear-gradient(135deg,#ffffff14,#ffffff0d)}.weather-mobile-skeleton-action-icon{width:38px;height:38px;border-radius:14px;flex-shrink:0}.weather-mobile-skeleton-action-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}.weather-mobile-skeleton-action-line{height:11px}.weather-mobile-skeleton-action-line--primary{width:72%}.weather-mobile-skeleton-action-line--secondary{width:48%}.weather-top-row{display:flex;align-items:stretch;gap:4px;padding:6px 0}.weather-main,.weather-details{padding:8px}.weather-main{min-width:0;flex:0 0 28%;align-items:center;padding:6px 4px}.weather-details{min-width:0;gap:4px;justify-content:flex-start;flex:1 1 auto;padding:6px}.weather-temp{font-size:28px}.weather-icon-large{width:40px;height:40px;margin-right:6px}.weather-text{font-size:13px;gap:6px;white-space:nowrap}.daily-temp-range{font-size:11px;white-space:nowrap}.weather-tip{font-size:12px;line-height:1.2}.current-details-card{gap:4px;padding:6px}.detail-item{gap:2px;padding:0 2px}.param-label{font-size:10px}.param-value{font-size:13px}.weather-swipe-wrapper{height:auto}.weather-extra-container{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,1fr);gap:10px;height:auto}.weather-forecast-container{height:auto;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr;gap:10px}.weather-forecast-container,.weather-extra-container{min-height:210px}.weather-right-panel{display:contents}.weather-hourly{grid-column:1 / -1;grid-row:1;height:96px}.weather-daily,.weather-indices{height:150px}.weather-daily{width:100%;grid-column:1;grid-row:2}.weather-indices{width:100%;grid-column:2;grid-row:2}.indices-scroll{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:8px;align-content:space-between}.indices-item{padding:4px 6px}.daily-item{padding:3px 2px}.daily-date{width:52px;font-size:11px}.daily-icons{width:30px}.daily-text{width:40px;font-size:12px;margin-left:4px}.daily-temp{width:54px;font-size:12px}}.payment-modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:99999;animation:fadeIn .2s ease}.payment-modal-backdrop.night-mode{background:#0009}.payment-modal{background:var(--bg-card);border-radius:16px;width:90%;max-width:400px;max-height:70vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md);animation:slideUp .3s ease;overflow:hidden}.payment-modal-backdrop.night-mode .payment-modal{border:1px solid var(--border-primary)}.payment-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-primary)}.payment-modal-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--text-primary)}.payment-modal-close{background:transparent;border:none;color:var(--text-tertiary);cursor:pointer;padding:4px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .2s;outline:none;-webkit-tap-highlight-color:transparent}.payment-modal-close:hover{background:var(--btn-bg-hover);color:var(--text-secondary)}.payment-modal-content{flex:1;overflow-y:auto;padding:12px 16px}.no-records{text-align:center;padding:40px 20px;color:var(--text-tertiary);font-size:14px}.records-list{display:flex;flex-direction:column;gap:10px}.record-item{background:var(--bg-indices-item);border-radius:12px;padding:12px 14px;transition:background .2s}.record-item:hover{background:var(--btn-bg-hover)}.record-main{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.record-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.record-amount{font-size:18px;font-weight:700}.record-type{font-size:12px;color:var(--text-secondary);background:var(--bg-indices-item);padding:2px 8px;border-radius:4px}.payment-modal-backdrop.night-mode .record-type{color:#bbb;background:#ffffff14}.record-time{font-size:12px;color:var(--text-secondary)}.payment-modal-backdrop.night-mode .record-time{color:#999}.water-records .record-item{padding:14px 16px}.record-details{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px 0;border-top:1px dashed var(--border-primary);border-bottom:1px dashed var(--border-primary)}.detail-row{display:flex;justify-content:space-between;align-items:center}.detail-label{font-size:12px;color:var(--text-secondary)}.detail-value{font-size:13px;color:var(--text-primary);font-weight:500}.payment-modal-content::-webkit-scrollbar{width:4px}.payment-modal-content::-webkit-scrollbar-track{background:transparent}.payment-modal-content::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:2px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;gap:12px;color:var(--text-tertiary);font-size:14px}.loading-spinner{animation:spin 1s linear infinite}.payment-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border-primary)}.pagination-btn{background:var(--bg-indices-item);border:none;color:var(--text-secondary);cursor:pointer;padding:6px 10px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s;outline:none}.pagination-btn:hover:not(:disabled){background:var(--btn-bg-hover);color:var(--text-primary)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-info{font-size:13px;color:var(--text-secondary);min-width:60px;text-align:center}.pagination-total{font-size:12px;color:var(--text-tertiary)}.power-monitor-modal-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:99999;animation:fadeIn .2s ease-out}.power-monitor-modal-overlay.night-mode{background:#0009}.power-monitor-modal{background:var(--bg-card);border-radius:16px;width:90%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md);animation:slideUp .3s ease-out}.power-monitor-modal.night-mode{border:1px solid var(--border-primary)}.power-monitor-modal::-webkit-scrollbar{width:6px}.power-monitor-modal::-webkit-scrollbar-track{background:transparent}.power-monitor-modal::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}.power-monitor-modal.night-mode::-webkit-scrollbar-thumb{background:#fff3}.power-monitor-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border-secondary);gap:16px}.power-monitor-title{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:600;color:var(--text-primary);flex-shrink:0}.power-monitor-title svg{color:#f59e0b}.power-monitor-modal.night-mode .power-monitor-title svg{color:#fbbf24}.close-button{width:36px;height:36px;border-radius:50%;border:none;background:var(--bg-indices-item);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.close-button:hover{background:var(--btn-bg-hover);color:var(--text-primary)}.power-monitor-content{padding:24px;display:flex;flex-direction:column;gap:20px}.power-main-card{border-radius:16px;padding:20px 24px;display:flex;flex-direction:row;align-items:center;gap:24px;position:relative;overflow:visible;min-height:100px;border:2px solid}.power-main-left{display:flex;align-items:center;justify-content:center;flex-shrink:0}.power-main-icon{animation:powerPulse 2s ease-in-out infinite;display:flex;align-items:center;justify-content:center}@keyframes powerPulse{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.05);opacity:1}}.power-main-right{flex:1;display:flex;flex-direction:row;align-items:flex-end;gap:16px}.power-main-value{display:flex;align-items:baseline;gap:8px}.power-value{font-size:56px;font-weight:700;line-height:1}.power-unit{font-size:24px;font-weight:500;color:var(--text-secondary)}.power-level-badge{padding:6px 16px;margin-bottom:6px;border-radius:20px;font-size:13px;font-weight:600;letter-spacing:.5px;flex-shrink:0}.power-last-updated{position:absolute;top:12px;right:20px;font-size:11px;color:var(--text-tertiary)}.power-details-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.power-detail-item{background:var(--bg-indices-item);border-radius:12px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start;transition:all .2s;min-height:60px}.power-detail-item:hover{background:var(--btn-bg-hover);transform:translateY(-2px)}.power-detail-content{flex:1;display:flex;flex-direction:column;gap:2px}.power-detail-label{font-size:11px;color:var(--text-tertiary);font-weight:500}.power-detail-value{font-size:16px;font-weight:600;color:var(--text-primary);display:flex;align-items:baseline;gap:3px}.power-detail-unit{font-size:12px;font-weight:500;color:var(--text-secondary)}.power-calculated-section{background:var(--bg-indices-item);border-radius:12px;padding:16px}.power-calculated-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.power-calculated-item{display:flex;flex-direction:column;align-items:center;gap:6px}.power-calculated-label{font-size:11px;color:var(--text-secondary);text-align:center}.power-calculated-value{font-size:16px;font-weight:600;color:#f59e0b;display:flex;align-items:baseline;gap:4px}.power-monitor-modal.night-mode .power-calculated-value{color:#fbbf24}.power-calculated-value span{font-size:12px;font-weight:500;color:var(--text-tertiary)}.power-monitor-tips{background:linear-gradient(135deg,#f59e0b0d,#fbbf240d);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}.power-monitor-modal.night-mode .power-monitor-tips{background:linear-gradient(135deg,#fbbf2414,#f59e0b14)}.power-tip-item{font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:8px}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@media(max-width:480px){.power-monitor-modal{width:95%;max-height:85vh}.power-monitor-header{padding:16px 20px;flex-wrap:wrap}.power-monitor-title{font-size:18px}.power-monitor-content{padding:16px}.power-main-card{padding:16px 18px;min-height:80px;gap:16px;flex-wrap:nowrap}.power-main-right{flex-direction:row;align-items:flex-end;gap:12px;width:auto}.power-last-updated{position:absolute;top:10px;right:14px;margin-top:0;font-size:10px}.power-main-icon svg{width:44px;height:44px}.power-value{font-size:44px}.power-unit{font-size:20px}.power-details-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.power-detail-item{min-width:0;min-height:50px;padding:8px 6px;justify-content:center}.power-detail-content{align-items:center;gap:1px}.power-detail-label{font-size:10px;text-align:center}.power-detail-value{font-size:13px;justify-content:center;gap:2px}.power-detail-unit{font-size:10px}.power-calculated-section{overflow-x:auto;padding:14px 12px}.power-calculated-grid{display:flex;flex-wrap:nowrap;gap:12px;min-width:max-content}.power-calculated-item{flex:0 0 auto;min-width:72px}.power-calculated-label,.power-calculated-value{white-space:nowrap}}.energy-card{background:transparent;border-radius:24px;padding:5px 5px 0;display:flex;flex-direction:column;gap:12px;color:var(--text-primary);flex:1;min-height:0;overflow:visible}.energy-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.energy-content-wrapper{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}.energy-card-title{font-size:18px;font-weight:600;color:#333}.energy-card.night-mode .energy-card-title{color:#e0e0e0}.energy-title-row{display:flex;align-items:center;gap:12px}.energy-outage-badge{display:flex;align-items:center;cursor:default}.energy-outage-badge.clickable{cursor:pointer;transition:all .2s ease;padding:4px 6px;margin:-4px -6px;border-radius:8px}.energy-outage-badge.clickable:hover{background:#0000000d}.energy-outage-badge.clickable:active{transform:scale(.95)}.energy-card.night-mode .energy-outage-badge.clickable:hover{background:#ffffff14}.energy-tabs{display:flex;gap:8px}.energy-tabs button{padding:8px;border:none;border-radius:8px;background:transparent;color:#999;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;outline:none;-webkit-tap-highlight-color:transparent}.energy-tabs button:hover{transform:scale(1.1)}.energy-tabs button:nth-child(1).active{color:#f59e0b}.energy-tabs button:nth-child(2).active{color:#ef4444}.energy-tabs button:nth-child(3).active{color:#3b82f6}.energy-card.night-mode .energy-tabs button{color:#666}.energy-card.night-mode .energy-tabs button:nth-child(1).active{color:#fbbf24}.energy-card.night-mode .energy-tabs button:nth-child(2).active{color:#f87171}.energy-card.night-mode .energy-tabs button:nth-child(3).active{color:#60a5fa}.energy-items{display:flex;justify-content:space-between}.energy-item{background:var(--bg-card)!important;border-radius:12px;padding:8px 12px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow-sm);flex-shrink:0;min-width:80px}.energy-item.night-mode{background:#ffffff0d}.energy-item.clickable{cursor:pointer;transition:all .2s ease}.energy-item.clickable:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.energy-item.clickable:active{transform:translateY(0)}.energy-item.clickable .energy-label{display:flex;align-items:center;gap:1px}.energy-item.clickable .clickable-indicator{color:#555;flex-shrink:0}.energy-item.clickable.night-mode:hover{box-shadow:0 4px 12px #0000004d}.energy-item.clickable.night-mode .clickable-indicator{color:#ccc}.energy-label{font-size:10px;opacity:.7;white-space:nowrap}.energy-value{font-size:16px;font-weight:700;color:var(--text-primary);white-space:nowrap}.energy-unit{font-size:11px;font-weight:400;margin-left:2px;opacity:.8}@media(max-width:600px){.energy-header{flex-wrap:wrap;gap:10px}.energy-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:8px}.energy-item{min-width:0}}.energy-chart-container{position:relative;flex:1;min-height:0}.energy-chart-title{position:absolute;top:5px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text-secondary);z-index:10;pointer-events:none;white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis}.energy-chart-title svg{flex-shrink:0}.energy-card.night-mode .energy-chart-title{color:#aaa}.energy-chart{width:100%;min-height:180px;background:var(--bg-card)!important;border-radius:12px;box-shadow:var(--shadow-sm);outline:none;pointer-events:auto;-webkit-tap-highlight-color:transparent}.energy-card.night-mode .energy-chart{background:#ffffff0d}.energy-chart-controls{position:absolute;top:2px;right:6px;display:flex;flex-direction:row;gap:0;background:#0000000d;border-radius:5px;padding:2px;z-index:10}.energy-card.night-mode .energy-chart-controls{background:#ffffff0f}.energy-chart-controls button{position:relative;width:26px;height:23px;border:none;border-radius:4px;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:color .25s ease;z-index:1;display:flex;align-items:center;justify-content:center}.energy-chart-controls button:hover{color:var(--text-primary)}.energy-chart-controls button:focus{outline:none}.energy-chart-controls button:active{transform:none}.energy-chart-controls button.active{color:#fff}.energy-chart-controls .slider-indicator{position:absolute;top:2px;left:2px;width:26px;height:25px;border-radius:4px;transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:0}.energy-chart-controls .slider-indicator[data-position="0"]{transform:translate(0)}.energy-chart-controls .slider-indicator[data-position="1"]{transform:translate(26px)}.energy-chart-controls .slider-indicator[data-position="2"]{transform:translate(52px)}.energy-chart-controls.water-mode{gap:6px}.energy-chart-controls.water-mode .slider-indicator[data-position="1"]{transform:translate(32px)}.energy-gas-overlay{position:absolute;inset:0;background:var(--bg-card);display:flex;align-items:center;justify-content:center;z-index:20;border-radius:12px}.energy-card.night-mode .energy-gas-overlay{background:#1a1a1afa}.overlay-content{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--text-secondary);animation:fadeIn .3s ease-out}.overlay-content svg{opacity:.4;color:var(--text-tertiary)}.overlay-content p{font-size:16px;font-weight:500;margin:0;color:var(--text-secondary)}.energy-card.night-mode .overlay-content p{color:#999}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:600px){.energy-chart-title{left:12px;transform:none}.energy-chart{min-height:280px}}.energy-value.is-arrears{color:#c4a484;font-weight:600}.energy-value.is-arrears .energy-unit{color:#c4a484}.energy-card.night-mode .energy-value.is-arrears,.energy-card.night-mode .energy-value.is-arrears .energy-unit{color:#d4b896}:root{--family-card-bg: var(--bg-card);--family-card-shadow: var(--shadow-md)}.family-card{background:var(--family-card-bg);border-radius:24px;padding:10px;box-shadow:var(--family-card-shadow);width:100%;min-width:0;align-self:flex-end}.family-members-container{display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:nowrap;min-height:50px;overflow-x:auto;padding:0 8px;scrollbar-width:none;-ms-overflow-style:none}.family-members-container::-webkit-scrollbar{display:none}.family-member{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer}.family-member.no-detection{cursor:default}.member-popover-portal .popover{position:relative;margin-top:0;background-color:var(--bg-card);color:var(--text-primary);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:12px;box-shadow:0 4px 12px #00000026;width:max-content;font-size:14px}.member-popover-portal .popover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border-width:6px;border-style:solid;border-color:transparent transparent var(--bg-card) transparent;filter:drop-shadow(0 -1px 1px rgba(0,0,0,.05))}.member-popover-portal .popover-content div{white-space:nowrap}.popover-row{margin-bottom:6px;display:flex;align-items:center;min-width:0}.popover-row:last-child{margin-bottom:0}.popover-row-primary{gap:0}.popover-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;color:var(--text-secondary);line-height:1;flex-shrink:0}.popover-icon svg{width:14px;height:14px;stroke-width:2.3}.popover-icon-user{color:#8a9a8a}.popover-icon-home{color:#b18b7a;margin-left:2px}.popover-icon-time{color:#7f91a4}:root.night-mode .popover-icon-user{color:#a8b79f}:root.night-mode .popover-icon-home{color:#c3a092}:root.night-mode .popover-icon-time{color:#9baebe}.popover-member-name{color:var(--text-primary);font-weight:600}.popover-member-status{color:var(--text-secondary)}.popover-status-divider{color:var(--text-tertiary);margin:0 7px}.member-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.1);box-shadow:0 1px 3px #0000001a;transition:all .2s}.family-status-dot{position:absolute;bottom:2px;right:2px;width:12px;height:12px;border-radius:50%;border:2px solid var(--bg-card);transition:all .2s}.family-status-dot--online{animation:family-status-pulse 1.6s ease-in-out infinite;background:#69a44d!important;box-shadow:0 0 8px #8b9d8380}.family-status-dot--offline{background:#6b7280!important}.empty-state{text-align:center;color:var(--text-tertiary);font-size:14px;max-height:45px}.family-member-skeleton{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0}.skeleton-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(90deg,#ffffff0d,#ffffff26,#ffffff0d);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border:2px solid rgba(255,255,255,.05);box-shadow:0 1px 3px #0000001a}@media(max-width:600px){.family-card{padding:8px;margin-top:8px}.family-members-container{gap:10px;padding:0 4px}.member-avatar,.skeleton-avatar{width:40px;height:40px}.family-members-mobile-skeleton{justify-content:flex-start;gap:12px;padding:2px 4px}.family-member-skeleton-mobile{flex-direction:column;gap:8px;min-width:52px}.family-member-skeleton-avatar-shell{position:relative;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#ffffff2e;animation:family-mobile-skeleton-breathe 2.1s ease-in-out infinite}.family-member-skeleton-dot{position:absolute;right:1px;bottom:1px;width:10px;height:10px;border-radius:50%;background:#818c9b7a;border:2px solid var(--bg-card)}.family-member-skeleton-meta{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%}.family-member-skeleton-name,.family-member-skeleton-tag{background:linear-gradient(90deg,var(--skeleton-bg) 25%,var(--skeleton-shimmer) 50%,var(--skeleton-bg) 75%);background-size:var(--skeleton-mobile-size);animation:skeleton-shimmer-mobile var(--skeleton-mobile-duration) linear infinite;border-radius:999px}.family-member-skeleton-name{width:34px;height:8px}.family-member-skeleton-tag{width:24px;height:6px;opacity:.8}.skeleton-avatar{animation:skeleton-shimmer-mobile var(--skeleton-mobile-duration) linear infinite;background-size:var(--skeleton-mobile-size);box-shadow:none}}@keyframes skeleton-pulse{0%{background-position:200% 0;opacity:.6}50%{opacity:.8}to{background-position:-200% 0;opacity:.6}}@keyframes family-mobile-skeleton-breathe{0%,to{transform:translateY(0);box-shadow:0 4px 10px #0f172a14}50%{transform:translateY(-1px);box-shadow:0 8px 16px #0f172a1f}}@keyframes family-status-pulse{0%,to{opacity:1}50%{opacity:.5}}.indoor-climate-container{position:absolute;top:80px;left:49%;transform:translate(-50%);display:flex;justify-content:center;align-items:center;gap:1px;font-size:16px;color:var(--text-secondary);z-index:5;width:100%}.climate-item{display:flex;align-items:baseline;gap:3px;margin:0 8px;white-space:nowrap}.climate-icon{width:20px;height:20px;opacity:.9;flex-shrink:0;align-self:center}.climate-item:first-child .climate-icon{color:#ff8c00}.climate-item:last-child .climate-icon{color:#1e90ff}.climate-label{font-size:14px;opacity:.8;flex-shrink:0}.climate-value{font-size:18px;font-weight:600;color:var(--text-primary);flex-shrink:0}.climate-decimal{font-size:14px;font-weight:600}.climate-unit{font-size:14px;font-weight:400;color:var(--text-secondary);opacity:.8;flex-shrink:0}.formaldehyde-warning,.formaldehyde-warning .climate-icon,.formaldehyde-warning .climate-value{color:#d4a574}.formaldehyde-danger{color:#c67b7b;animation:formaldehyde-blink 1.5s ease-in-out infinite}.formaldehyde-danger .climate-icon,.formaldehyde-danger .climate-value{color:#c67b7b}@keyframes formaldehyde-blink{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:600px){.indoor-climate-container{position:static;transform:none;flex-wrap:wrap;justify-content:space-between;gap:8px 10px;margin-top:4px;padding:0 6px}.climate-item{margin:0}.climate-label{font-size:12px}.climate-value{font-size:16px}}.bubble-overlay{position:fixed;inset:0;background:var(--overlay-bg);z-index:99998;backdrop-filter:blur(4px)}.bubble-card-modern{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-card);border-radius:20px;width:90%;max-width:800px;max-height:80vh;box-shadow:var(--shadow-lg);z-index:99999;border:1px solid var(--border-primary);animation:slideIn .3s ease-out;display:flex;flex-direction:column;overflow:hidden}@keyframes slideIn{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.bubble-header{display:flex;justify-content:space-between;align-items:center;padding:24px 30px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary);gap:20px}.bubble-header-actions{min-width:0;display:flex;align-items:center;gap:16px}.bubble-header h2{margin:0;color:var(--text-primary);font-size:24px;font-weight:600;letter-spacing:.5px;flex-shrink:0}.bubble-sensor-strip{min-width:0;display:flex;align-items:center;gap:12px;overflow-x:auto;overflow-y:hidden;padding:2px 0;max-width:min(52vw,560px);scrollbar-width:none;-ms-overflow-style:none}.bubble-sensor-strip::-webkit-scrollbar{display:none}.bubble-sensor-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;min-height:34px;border-radius:8px;background:#f5faff99;backdrop-filter:blur(4px);border:1px solid rgba(0,140,200,.18);overflow:hidden;box-sizing:border-box}.bubble-sensor-chip.is-percent{gap:8px;padding:0;background:#f5faff99;border:1px solid rgba(0,140,200,.18);backdrop-filter:blur(4px);box-shadow:none;align-items:center}.bubble-sensor-name{color:#0a2a40b8;font-size:11px;white-space:nowrap}.bubble-sensor-chip.is-percent .bubble-sensor-name{padding:0 8px 0 0;margin:0 0 0 10px;border-radius:0;background:transparent;border:none;border-right:1px solid rgba(0,140,200,.14);flex-shrink:0}.bubble-sensor-percent-slot{width:40px;align-self:stretch;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0;padding:0;border-radius:8px;background:#ffffff1a}.bubble-sensor-value{font-size:14px;color:#0a2a40;font-weight:700;white-space:nowrap;padding-left:8px;border-left:1px solid rgba(0,140,200,.14);line-height:1}.bubble-sensor-ring{--bubble-sensor-ring-color: var(--accent-color);width:100%;height:100%;border-radius:8px;background:var(--bubble-sensor-ring-color);display:flex;align-items:center;justify-content:center;opacity:1;flex-shrink:0;margin:0}.bubble-sensor-ring-inner{width:100%;height:100%;border-radius:8px;background:transparent;display:flex;align-items:center;justify-content:center}.bubble-sensor-ring-inner span{font-size:14px;font-weight:700;color:#fff;line-height:1}.bubble-close{background:none;border:none;color:var(--text-tertiary);font-size:32px;cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine){.bubble-close:hover{background:var(--btn-bg-hover);color:var(--text-primary);transform:rotate(90deg)}}.bubble-card-modern .bubble-sensor-chip{background:#f5faff99;border-color:#008cc82e}.bubble-card-modern .bubble-sensor-value{color:#0a2a40;border-left-color:#008cc824}.bubble-card-modern .bubble-sensor-name{color:#0a2a40b8}.bubble-card-modern .bubble-sensor-chip.is-percent{background:#f5faff99;border-color:#008cc82e}.bubble-card-modern.night-mode .bubble-sensor-chip,.night-mode .bubble-card-modern .bubble-sensor-chip{background:#07121d99;border-color:#a8b8c83d}.bubble-card-modern.night-mode .bubble-sensor-chip.is-percent,.night-mode .bubble-card-modern .bubble-sensor-chip.is-percent{background:#07121d99;border-color:#a8b8c842}.bubble-card-modern.night-mode .bubble-sensor-name,.night-mode .bubble-card-modern .bubble-sensor-name{color:#d8f0ffb8}.bubble-card-modern.night-mode .bubble-sensor-value,.night-mode .bubble-card-modern .bubble-sensor-value{color:#f5fbff;border-left-color:#a8b8c829}.bubble-card-modern.night-mode .bubble-sensor-chip.is-percent .bubble-sensor-name,.night-mode .bubble-card-modern .bubble-sensor-chip.is-percent .bubble-sensor-name{background:transparent;border:none}.bubble-card-modern.night-mode .bubble-sensor-percent-slot,.night-mode .bubble-card-modern .bubble-sensor-percent-slot{background:transparent}.bubble-content{display:flex;flex:1;overflow:hidden}.device-list{width:200px;border-right:1px solid var(--border-primary);background:var(--bg-tertiary);overflow-y:auto;display:flex;flex-direction:column;gap:4px;padding:8px}.device-item{display:flex;align-items:center;gap:12px;padding:16px;background:transparent;border:none;border-radius:12px;cursor:pointer;transition:all .2s;text-align:left;-webkit-tap-highlight-color:transparent}:root:not(.night-mode) .device-item:not(.active){color:#2c3e50!important}:root.night-mode .device-item:not(.active){color:#aaa!important}@media(hover:hover)and (pointer:fine){.device-item:hover{background:var(--btn-bg-hover)}}.device-item.active{background:#a8b8c8;color:#fff}.device-icon{font-size:24px;width:32px;text-align:center;display:flex;align-items:center;justify-content:center}.device-icon-img{width:28px;height:28px;object-fit:contain}:root:not(.night-mode) .device-item:not(.active) .device-icon{color:#2c3e50!important}:root.night-mode .device-item:not(.active) .device-icon{color:#aaa!important}.device-item.active .device-icon{color:#fff!important}.device-name{flex:1;font-size:14px!important;font-weight:500}:root:not(.night-mode) .device-item:not(.active) .device-name{color:#2c3e50!important}:root.night-mode .device-item:not(.active) .device-name{color:#aaa!important}.device-item.active .device-name{color:#fff!important}.no-devices{padding:32px 16px;color:var(--text-tertiary);text-align:center;font-size:14px}.device-control{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:24px 30px}.device-control-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border-primary)}.device-info{display:flex;align-items:center;gap:16px}.device-control-icon{font-size:36px;display:flex;align-items:center;justify-content:center}.device-control-icon .device-icon-img{width:36px;height:36px;object-fit:contain}.device-control-header h3{margin:0;color:var(--text-primary);font-size:20px;font-weight:600}.power-btn-compact{padding:10px 28px;border:2px solid var(--btn-border);border-radius:10px;background:var(--btn-bg);color:var(--btn-text);font-weight:700;cursor:pointer;transition:all .3s;font-size:15px;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine){.power-btn-compact:hover{border-color:var(--accent-color);color:var(--accent-color);box-shadow:0 0 20px var(--accent-shadow);transform:translateY(-1px)}}.power-btn-compact.active{background:#a8b8c8;color:#fff;border-color:#a8b8c8;box-shadow:0 0 25px #a8b8c866}.device-control-panel{display:flex;flex-direction:column;gap:24px}.no-device-selected{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);font-size:16px}.control-group{display:flex;flex-direction:column;gap:12px}.control-label{color:var(--text-secondary);font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:1px}.power-btn{padding:14px 32px;border:2px solid var(--btn-border);border-radius:12px;background:var(--btn-bg);color:var(--btn-text);font-weight:700;cursor:pointer;transition:all .3s;font-size:16px;align-self:flex-start;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine){.power-btn:hover{border-color:var(--accent-color);color:var(--accent-color);box-shadow:0 0 20px var(--accent-shadow)}}.power-btn.active{background:#a8b8c8;color:#fff;border-color:#a8b8c8;box-shadow:0 0 25px #a8b8c866}.bar-control-container{display:flex;flex-direction:column;gap:8px}.bar-visual{width:100%;height:50px;background:var(--bg-tertiary);border-radius:12px;border:2px solid var(--border-primary);overflow:hidden;position:relative;contain:layout style paint;cursor:pointer}.bar-fill{height:100%;width:100%;position:absolute;top:0;left:0;bottom:0;clip-path:inset(0 0 0 0);transition:clip-path .1s ease-out;will-change:clip-path}.bar-fill:after{content:"";position:absolute;right:0;top:0;bottom:0;width:3px;background:#fffc;box-shadow:0 0 6px #fff6}.control-label-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.bar-value{font-size:16px;font-weight:700;color:var(--accent-color);min-width:60px;text-align:right}.bar-visual.brightness .bar-fill{background:linear-gradient(90deg,#8b95a1,#b8c1cc,#f5f5f5 40%)!important}.bar-visual.color-temp .bar-fill{background:linear-gradient(90deg,#e8a87c,#f5f5f5)!important}.bar-visual.curtain .bar-fill{background:linear-gradient(90deg,#667eea,#764ba2)}.temperature-bar-wrapper{display:flex;align-items:center;gap:12px}.temperature-bar-wrapper .bar-visual{flex:1}.temp-btn{width:40px;height:40px;border-radius:50%;border:none;background:var(--bg-secondary);color:#fff;font-size:20px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;flex-shrink:0}.temp-btn-left{background:#67e8f9;color:#000}.temp-btn-right{background:#fdba74;color:#000}@media(hover:hover)and (pointer:fine){.temp-btn:hover:not(:disabled){transform:scale(1.1);box-shadow:0 4px 12px #0000004d}.temp-btn-left:hover:not(:disabled){box-shadow:0 4px 12px #67e8f980}.temp-btn-right:hover:not(:disabled){box-shadow:0 4px 12px #fdba7480}}.temp-btn:active:not(:disabled){transform:scale(.95)}.temp-btn:disabled{opacity:.3;cursor:not-allowed}.curtain-labels{display:flex;justify-content:space-between;color:var(--text-secondary);font-size:14px;margin-top:4px}.curtain-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.curtain-actions button{padding:10px 16px;border:2px solid var(--btn-border);border-radius:8px;background:var(--btn-bg);color:var(--btn-text);font-weight:500;cursor:pointer;transition:all .3s;font-size:14px;-webkit-tap-highlight-color:transparent}.curtain-actions button:hover{background:var(--btn-hover-bg);border-color:var(--btn-hover-border);transform:translateY(-2px)}.curtain-actions button:active{transform:translateY(0)}.mode-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.mode-btn{padding:12px 20px;border:2px solid var(--btn-border);border-radius:10px;background:var(--btn-bg);color:var(--btn-text);font-weight:500;cursor:pointer;transition:all .3s;font-size:14px;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine){.mode-btn:hover:not(:disabled){border-color:var(--accent-color);color:var(--accent-color);box-shadow:0 0 15px var(--accent-shadow)}}.mode-btn.active{background:#a8b8c8;color:#fff;border-color:#a8b8c8;box-shadow:0 0 20px #a8b8c866}.mode-btn:disabled{opacity:.3;cursor:not-allowed}.device-list::-webkit-scrollbar,.device-control::-webkit-scrollbar{width:8px}.device-list::-webkit-scrollbar-track,.device-control::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:4px}.device-list::-webkit-scrollbar-thumb,.device-control::-webkit-scrollbar-thumb{background:var(--accent-shadow);border-radius:4px}@media(hover:hover)and (pointer:fine){.device-list::-webkit-scrollbar-thumb:hover,.device-control::-webkit-scrollbar-thumb:hover{background:var(--accent-color)}}@media(max-width:768px){.bubble-card-modern{width:95%;max-height:90vh}.bubble-header{padding:20px}.bubble-header{align-items:flex-start}.bubble-header-actions{flex-direction:column;align-items:flex-end;gap:10px}.bubble-sensor-strip{max-width:100%}.bubble-sensor-chip.is-percent{display:inline-grid;grid-template-columns:1fr;justify-items:center;align-items:center;gap:6px;min-width:64px;padding:6px 8px;background:transparent;border:none;backdrop-filter:none;box-shadow:none}.bubble-sensor-chip.is-percent .bubble-sensor-name{max-width:68px;padding:2px 6px;border-radius:999px;background:#f5faff99;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1;justify-self:center;border-right:none;order:2}.bubble-sensor-percent-slot{width:100%;align-self:auto;display:flex;align-items:center;justify-content:center;border-left:none;background:transparent;order:1;opacity:.8}.bubble-sensor-chip.is-percent .bubble-sensor-ring{width:40px;height:40px;border-radius:50%;background:conic-gradient(var(--accent-color) 0 100%,rgba(10,42,64,.12) 100% 100%);margin:0 auto}.bubble-sensor-chip.is-percent .bubble-sensor-ring-inner{width:28px;height:28px;border-radius:50%;background:#ffffffeb}.bubble-sensor-chip.is-percent .bubble-sensor-ring-inner span{font-size:10px}.device-list{width:150px}.device-item{padding:12px;gap:8px}.device-icon{font-size:20px;width:28px}.device-name{font-size:13px}.device-control{padding:16px 20px}.mode-buttons{grid-template-columns:1fr}}.light-adjustment-section{position:relative;display:flex;flex-direction:column;gap:24px;padding:20px;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-primary);transition:all .3s ease}.light-adjustment-section.disabled{opacity:.6;pointer-events:none}.disabled-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0000004d;backdrop-filter:blur(2px);border-radius:12px;z-index:10}.disabled-message{color:var(--text-primary);font-size:16px;font-weight:600;padding:12px 24px;background:var(--bg-card);border-radius:8px;border:2px solid #a8b8c8;box-shadow:0 4px 12px #a8b8c84d}.floor-plan-container{position:relative;flex:1;min-height:0;overflow:hidden;cursor:pointer;margin-top:30px;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;z-index:0;background:transparent!important;box-shadow:none!important}.floor-plan-image,.floor-plan-light{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center;user-select:none;-webkit-user-drag:none;transform:translateZ(0);backface-visibility:hidden}.floor-plan-canvas{position:absolute;top:0;left:0;width:100%;height:100%;display:block;user-select:none;backface-visibility:hidden;transition:opacity .3s ease-in-out;z-index:0}.floor-plan-image-fading{transition:opacity .8s ease-in-out}.floor-plan-loading-placeholder{transition:opacity .3s ease-in-out}.floor-plan-image.base{z-index:1;filter:brightness(.9)}.floor-plan-light{z-index:10;mix-blend-mode:lighten;opacity:0;pointer-events:none;transition:opacity .6s cubic-bezier(.4,0,.2,1);will-change:opacity}.floor-plan-light.active{opacity:1}.loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--loading-text);font-size:18px;font-weight:500;text-align:center;padding:20px;background:var(--loading-bg);border-radius:12px;border:1px solid var(--border-accent);z-index:10}.floor-plan-webgl-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:16px;opacity:1;transition:opacity .4s ease-out;pointer-events:none}.floor-plan-webgl-loading.fade-out{opacity:0}.webgl-loading-icon{width:48px;height:48px;position:relative;animation:pulse 1.5s ease-in-out infinite}.webgl-loading-icon svg{width:100%;height:100%;filter:drop-shadow(0 0 8px rgba(255,200,100,.6))}.webgl-loading-glow{position:absolute;top:50%;left:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border:2px solid transparent;border-top-color:#ffc864cc;border-right-color:#ffc86466;border-radius:50%;animation:spin 1.2s linear infinite}.webgl-loading-text{color:#ffffffe6;font-size:14px;font-weight:500;text-shadow:0 2px 4px rgba(0,0,0,.3);letter-spacing:.5px}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.floor-plan-device-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:20}.floor-plan-room-devices{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;gap:3px;padding:3px 5px;background:#0003;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border-radius:10px;border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 8px #0003;animation:deviceIconFadeIn .3s ease-out}.floor-plan-device-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.floor-plan-device-icon img{width:100%;height:100%;object-fit:contain}.floor-plan-device-more{font-size:9px;color:#ffffffe6;background:#ffffff26;padding:1px 4px;border-radius:6px;font-weight:500;white-space:nowrap}@keyframes deviceIconFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@media(max-width:600px){.floor-plan-container{margin-top:12px;min-height:260px;height:55vw;max-height:420px;display:none}}.floor-plan-device-overlay.is-night .floor-plan-room-devices.is-night-ac{background:#7a9ab638;border:1px solid rgba(168,188,200,.35);box-shadow:0 2px 10px #5a789647,inset 0 0 0 1px #c8d6de1f}.floor-plan-device-icon.is-ac-night{filter:drop-shadow(0 0 5px rgba(143,164,181,.75))}.floor-plan-device-icon.is-ac-night img{filter:brightness(0) saturate(100%) invert(71%) sepia(12%) saturate(620%) hue-rotate(163deg) brightness(95%) contrast(88%);opacity:.95}:root.night-mode .floor-plan-device-overlay.is-night .floor-plan-device-more{color:#d2dee6e6;background:#8fa4b547}.device-control-card{display:flex;justify-content:space-between;align-items:center;padding:11px 20px;border-radius:20px;background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-sm);margin-bottom:15px}.device-control-card.night-mode{background:var(--bg-card);color:var(--text-primary)}.device-control-card .card-title h2{font-size:18px;font-weight:600;margin:0 0 2px}.device-control-card .card-title p{font-size:11px;color:var(--text-secondary);margin:0}.device-count-card{display:flex;flex-direction:row;align-items:center;justify-content:center;background:#0000000d;padding:8px 12px;border-radius:12px}.device-control-card.night-mode .device-count-card{background:#ffffff1a}.count-item{display:flex;flex-direction:column;align-items:center;padding:0 10px}.count-divider{width:1px;height:24px;background-color:#0000001a}.device-control-card.night-mode .count-divider{background-color:#ffffff26}.count-label{font-size:10px;color:var(--text-secondary)}.count-value{font-size:16px;font-weight:700;color:var(--text-primary)}.room-cards-container{flex:1;min-height:0;overflow-y:auto;padding-right:8px;margin-right:-8px;scrollbar-width:none}.room-cards-container::-webkit-scrollbar{display:none}.night-mode .skeleton{background:linear-gradient(90deg,#ffffff14 25%,#ffffff1f,#ffffff14 75%);background-size:200% 100%}@keyframes light-mobile-skeleton-breathe{0%,to{transform:translateY(0);box-shadow:0 6px 14px #0f172a14}50%{transform:translateY(-1px);box-shadow:0 10px 18px #0f172a1f}}@media(max-width:600px){.skeleton{animation:skeleton-shimmer-mobile var(--skeleton-mobile-duration) linear infinite;background-size:var(--skeleton-mobile-size)}.light-mobile-skeleton-header-copy{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}.light-mobile-skeleton-header-title{width:92px;height:16px;border-radius:999px}.light-mobile-skeleton-header-subtitle{width:148px;max-width:100%;height:11px;border-radius:999px}.light-mobile-skeleton-count-card{min-width:118px}.light-mobile-skeleton-count-label{width:38px;height:9px;border-radius:999px}.light-mobile-skeleton-count-value{width:24px;height:15px;margin-top:4px;border-radius:999px}}.skeleton-room-card{height:70px;margin-bottom:12px;border-radius:12px}.room-section{margin-bottom:24px;transition:margin-bottom .4s cubic-bezier(.4,0,.2,1)}.room-section:has(.devices-grid.collapsing){margin-bottom:12px}.room-card{display:flex;align-items:center;position:relative;height:70px;border-radius:12px;margin-bottom:16px;overflow:hidden;border:1px solid var(--border-primary);background-color:var(--bg-card);transition:all .3s ease-out;scroll-margin-top:20px;cursor:pointer}.room-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.room-card.night-mode:hover{box-shadow:0 4px 12px #0000004d}.room-card-toggle{display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--text-secondary);transition:transform .3s;z-index:2}.room-card-right{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:10px;z-index:2}.room-card-sensor-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;min-height:34px;border-radius:8px;background:#f5faff99;backdrop-filter:blur(4px);border:1px solid rgba(0,140,200,.18);overflow:hidden;box-sizing:border-box}.room-card-sensor-chip.is-percent{gap:8px;padding:0;background:#f5faff99;border:1px solid rgba(0,140,200,.18);backdrop-filter:blur(4px);box-shadow:none;align-items:center}.room-card-sensor-name{font-size:11px;color:#0a2a40b8;white-space:nowrap}.room-card-sensor-chip.is-percent .room-card-sensor-name{padding:0 8px 0 0;margin:0 0 0 10px;border-radius:0;background:transparent;border:none;border-right:1px solid rgba(0,140,200,.14);flex-shrink:0}.room-card-sensor-percent-slot{width:40px;align-self:stretch;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:0;padding:0;border-radius:8px;background:#ffffff1a}.room-card-sensor-value{font-size:14px;color:#0a2a40;font-weight:600;white-space:nowrap;padding-left:8px;border-left:1px solid rgba(0,140,200,.14)}.room-card-sensor-ring{--sensor-ring-color: var(--accent-color);width:100%;height:100%;border-radius:8px;background:var(--sensor-ring-color);display:flex;align-items:center;justify-content:center;opacity:1;flex-shrink:0;margin:0}.room-card-sensor-ring-inner{width:100%;height:100%;border-radius:8px;background:transparent;display:flex;align-items:center;justify-content:center}.room-card-sensor-ring-inner span{font-size:14px;color:#0a2a40;font-weight:700;line-height:1}.room-card-info{position:relative;z-index:1;width:45%;padding:12px 16px}.room-card-info h3{font-size:15px;font-weight:600;margin:0 0 2px}.room-card-info span{font-size:11px;color:var(--text-secondary)}.room-card-preview{position:absolute;top:0;right:0;width:80%;height:100%;object-fit:cover;mask-image:linear-gradient(to right,transparent 0%,black 60%);-webkit-mask-image:linear-gradient(to right,transparent 0%,black 100%)}.room-card-sensor-strip{min-width:0;display:flex;align-items:center;gap:8px;overflow-x:auto;overflow-y:hidden;padding:1px 4px 1px 1px;scrollbar-width:none;-ms-overflow-style:none}.room-card-sensor-strip::-webkit-scrollbar{display:none}.room-card.night-mode .room-card-sensor-chip{background:#07121d99;border-color:#a8b8c83d}.room-card.night-mode .room-card-sensor-chip.is-percent{background:#07121d99;border-color:#a8b8c842}.room-card.night-mode .room-card-sensor-percent-slot{background:transparent}.room-card.night-mode .room-card-sensor-name{color:#d8f0ffb8}.room-card.night-mode .room-card-sensor-chip.is-percent .room-card-sensor-name{background:transparent;border:none}.room-card.night-mode .room-card-sensor-value{color:#f5fbff;border-left-color:#a8b8c829}.room-card.night-mode .room-card-sensor-chip.is-percent .room-card-sensor-name{border-right-color:#a8b8c829}.room-card.night-mode .room-card-sensor-ring{background:var(--sensor-ring-color)}.room-card.night-mode .room-card-sensor-ring-inner{background:transparent}.room-card.night-mode .room-card-sensor-ring-inner span{color:#f5fbff}.room-card.room-card-highlight{box-shadow:inset 0 0 15px 3px #00000026}.room-card.night-mode.room-card-highlight{box-shadow:inset 0 0 15px 3px #ffffff26}.devices-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:8px;overflow:hidden;max-height:5000px;opacity:1;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s ease,margin-bottom .4s cubic-bezier(.4,0,.2,1)}.devices-grid.collapsing{max-height:0;opacity:0;margin-bottom:0}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.device-card.complex{grid-column:span 2}.device-card.simple{grid-column:span 1}@media(max-width:768px){.devices-grid{grid-template-columns:1fr}.device-card.complex,.device-card.simple{grid-column:span 1}.room-card-right{right:12px;gap:8px}.room-card-sensor-strip{justify-content:flex-end;gap:6px}.room-card-sensor-chip{padding:4px 8px}.room-card-sensor-name{max-width:72px;white-space:normal;text-align:center;line-height:1.15}.room-card-sensor-value{font-size:12px}.room-card-sensor-chip.is-percent{display:inline-grid;grid-template-columns:1fr;justify-items:center;align-items:center;gap:6px;min-width:64px;padding:6px 8px;background:transparent!important;border:none!important;backdrop-filter:none!important;box-shadow:none}.room-card-sensor-chip.is-percent .room-card-sensor-name{max-width:68px;padding:2px 6px;border-radius:999px;background:#f5faff99;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1;justify-self:center;order:2}.room-card-sensor-percent-slot{width:100%;align-self:auto;display:flex;align-items:center;justify-content:center;border-left:none;background:transparent;opacity:.8;order:1}.room-card-sensor-chip.is-percent .room-card-sensor-ring{width:40px;height:40px;border-radius:50%;background:conic-gradient(var(--sensor-ring-color) 0 var(--sensor-progress),rgba(10,42,64,.12) var(--sensor-progress) 100%);margin:0 auto}.room-card-sensor-chip.is-percent .room-card-sensor-ring-inner{width:28px;height:28px;border-radius:50%;background:#ffffffeb}.room-card-sensor-chip.is-percent .room-card-sensor-ring-inner span{font-size:10px}.room-card.night-mode .room-card-sensor-chip.is-percent .room-card-sensor-name{background:#07121d99}.room-card.night-mode .room-card-sensor-chip.is-percent .room-card-sensor-ring{background:conic-gradient(var(--sensor-ring-color) 0 var(--sensor-progress),rgba(255,255,255,.12) var(--sensor-progress) 100%)}.room-card.night-mode .room-card-sensor-chip.is-percent .room-card-sensor-ring-inner{background:#040e18eb}.room-card.night-mode .room-card-sensor-percent-slot{background:transparent;opacity:.8}}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;color:#fff;z-index:9999;animation:toast-slide-in .3s ease-out;box-shadow:0 4px 12px #00000026}.toast-info{background:#a8b5c7}.toast-success{background:#a8c5b5}.toast-error{background:#d4b5b0}@keyframes toast-slide-in{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.scroll-loading-overlay{position:fixed;inset:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:9998;pointer-events:none;animation:fade-in .2s ease-out;opacity:0;visibility:hidden}.scroll-loading-spinner{display:flex;flex-direction:column;align-items:center;gap:16px;background:var(--bg-card);padding:24px 32px;border-radius:16px;box-shadow:0 8px 24px #00000026;pointer-events:auto}.spinner-ring{width:48px;height:48px;border:4px solid var(--border-primary);border-top-color:var(--text-primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-text{color:var(--text-primary);font-size:14px;font-weight:500}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media(max-width:600px){.device-control-card{flex-direction:column;align-items:flex-start;gap:10px;padding:12px 14px}.device-count-card{width:100%;justify-content:space-around}.room-cards-container{overflow:visible;padding-right:0;margin-right:0}.skeleton-room-card-mobile{display:flex;align-items:center;justify-content:space-between;gap:12px;height:78px;padding:12px 14px;margin-bottom:12px;border-radius:16px;background:linear-gradient(135deg,#fffffffa,#f6f3eef5);animation:light-mobile-skeleton-breathe 2.2s ease-in-out infinite;box-sizing:border-box;overflow:hidden}.night-mode .skeleton-room-card-mobile{background:linear-gradient(135deg,#ffffff17,#ffffff0d)}.light-mobile-skeleton-room-copy{flex:0 0 42%;display:flex;flex-direction:column;gap:8px;min-width:0}.light-mobile-skeleton-room-title{width:72px;height:14px;border-radius:999px}.light-mobile-skeleton-room-meta{width:48px;height:10px;border-radius:999px}.light-mobile-skeleton-room-preview{flex:1;align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:10px;padding-left:16px;border-left:1px solid rgba(148,163,184,.16)}.night-mode .light-mobile-skeleton-room-preview{border-left-color:#ffffff14}.light-mobile-skeleton-room-preview-bar{height:12px;border-radius:999px}.light-mobile-skeleton-room-preview-bar--top{width:82%}.light-mobile-skeleton-room-preview-bar--bottom{width:58%}.room-card{height:auto;padding:10px 0;scroll-margin-top:calc(var(--mobile-header-offset, 64px) + 8px)}.room-card-info{width:55%;padding:8px 12px}.room-card-preview{width:100%}}.device-card{background:linear-gradient(135deg,#fcfaf5f2,#faf8f2e6);backdrop-filter:blur(20px);border-radius:16px;padding:16px;box-shadow:0 4px 16px #0000000f;border:1px solid rgba(245,240,230,.4);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.device-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:#a8b5c7;opacity:0;transition:opacity .3s}.device-card.active:before{opacity:1}.device-card:hover{transform:translateY(-2px);box-shadow:0 6px 24px #0000001a}.device-card.night-mode{background:linear-gradient(135deg,#141419f2,#0f0f14e6);border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 16px #0000004d}.device-card.night-mode:hover{box-shadow:0 6px 24px #0006}.device-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.device-info{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.device-icon{font-size:20px;width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#a8b5c726;border-radius:12px;transition:all .3s}.device-icon img{width:70%;height:70%;object-fit:contain}.device-card.active .device-icon{background:#a8b5c740;transform:scale(1.05)}.device-name-group{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.device-name-group h4{margin:0;font-size:14px;font-weight:600;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-card.night-mode .device-name-group h4{color:#fff}.device-status{font-size:11px;color:#666;font-weight:500}.device-card.night-mode .device-status{color:#999}.device-card.active .device-status,.device-card.night-mode.active .device-status{color:#a8b5c7}.device-card .toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.device-card .toggle-switch input{opacity:0;width:0;height:0;outline:none}.device-card .toggle-slider{position:absolute;cursor:pointer;inset:0;background:#e0e0e0;transition:all .3s;border-radius:12px}.device-card .toggle-slider:before{position:absolute;content:"";width:18px;height:18px;left:3px;bottom:3px;background:#fff;transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:50%;box-shadow:0 1px 4px #0003}.device-card input:checked+.toggle-slider{background:#a8b5c7}.device-card input:checked+.toggle-slider:before{transform:translate(20px)}.device-card .toggle-switch:hover .toggle-slider{transform:scale(1.05)}.device-card-controls{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(0,0,0,.06);transition:opacity .3s}.device-card-controls.disabled{opacity:.4}.device-card.night-mode .device-card-controls{border-top-color:#ffffff1a}.control-item{display:flex;flex-direction:column;gap:8px}.control-header{display:flex;justify-content:space-between;align-items:center}.control-label{font-size:12px;font-weight:600;color:#333}.device-card.night-mode .control-label{color:#ddd}.control-value{font-size:12px;font-weight:700;color:#a8b5c7;min-width:40px;text-align:right}.device-card.night-mode .control-value{color:#a8b5c7}.slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient(90deg,#e0e0e0,#e0e0e0);outline:none;transition:all .3s;cursor:pointer}.slider:disabled{cursor:pointer;opacity:1}.device-card.night-mode .slider{background:linear-gradient(90deg,#3a3a4a,#3a3a4a)}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#a8b5c7;cursor:pointer;box-shadow:0 1px 4px #a8b5c766;transition:all .3s}.slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 2px 8px #a8b5c799}.slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#a8b5c7;cursor:pointer;border:none;box-shadow:0 1px 4px #a8b5c766;transition:all .3s}.slider::-moz-range-thumb:hover{transform:scale(1.2);box-shadow:0 2px 8px #a8b5c799}.brightness-slider{background:linear-gradient(90deg,#c5b8a8,#d4c5b0)}.device-card.night-mode .brightness-slider{background:linear-gradient(90deg,#8b8070,#a89888)}.colortemp-slider{background:linear-gradient(90deg,#d4b5b0,#b5c5c7)}.device-card.night-mode .colortemp-slider{background:linear-gradient(90deg,#a08880,#8b9ba0)}.curtain-slider{background:linear-gradient(90deg,#a8b5c7,#b4a7d6)}.device-card.night-mode .curtain-slider{background:linear-gradient(90deg,#7a8ba5,#8b7fa0)}.ac-card .temperature-control{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:#a8b5c714;border-radius:12px}.device-card.night-mode.ac-card .temperature-control{background:#a8b5c71f}.temp-btn{width:36px;height:36px;border-radius:50%;border:2px solid #A8B5C7;background:#fff;color:#a8b5c7;font-size:20px;font-weight:600;cursor:pointer;transition:all .3s;display:flex;align-items:center;justify-content:center}.temp-btn:disabled{cursor:pointer;opacity:1}.device-card.night-mode .temp-btn{background:#2a2a3a;border-color:#a8b5c7;color:#a8b5c7}.temp-btn:hover:not(:disabled){background:#a8b5c7;color:#fff;transform:scale(1.1)}.device-card.night-mode .temp-btn:hover:not(:disabled){background:#8b9ba5}.temperature-display{display:flex;align-items:baseline;gap:2px}.temp-value{font-size:32px;font-weight:700;background:#a8b5c7;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.device-card.night-mode .temp-value{background:#a8b5c7;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.temp-unit{font-size:18px;font-weight:600;color:#999}.mode-selector{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.mode-btn{padding:8px 4px;border-radius:8px;border:2px solid rgba(168,181,199,.3);background:#fff;color:#666;font-size:11px;font-weight:600;cursor:pointer;transition:all .3s}.mode-btn:disabled{cursor:pointer;opacity:1}.device-card.night-mode .mode-btn{background:#2a2a3a;border-color:#a8b5c74d;color:#999}.mode-btn:hover:not(:disabled){border-color:#a8b5c7;color:#a8b5c7;transform:translateY(-1px)}.mode-btn.active{background:#a8b5c7;border-color:transparent;color:#fff}.device-card.night-mode .mode-btn.active{background:#8b9ba5}.curtain-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}.curtain-actions.global{margin-top:0;margin-bottom:12px}.curtain-actions button{padding:8px 4px;border-radius:8px;border:2px solid rgba(168,181,199,.3);background:#fff;color:#a8b5c7;font-size:11px;font-weight:600;cursor:pointer;transition:all .3s}.device-card.night-mode .curtain-actions button{background:#2a2a3a;border-color:#a8b5c74d;color:#a8b5c7}.curtain-actions button:hover{background:#a8b5c7;border-color:transparent;color:#fff;transform:translateY(-1px)}.device-card.night-mode .curtain-actions button:hover{background:#8b9ba5}.curtain-side-control{padding:12px;background:#a8b5c70d;border-radius:10px;border:1px solid rgba(168,181,199,.15)}.device-card.night-mode .curtain-side-control{background:#a8b5c714;border-color:#a8b5c726}.curtain-side-control .control-item{display:flex;flex-direction:row;align-items:center;gap:8px;margin-bottom:8px}.curtain-side-control .control-label{font-size:11px;min-width:fit-content;flex-shrink:0}.curtain-side-control .slider{flex:1}.curtain-side-control .control-value{font-size:12px;min-width:fit-content;text-align:right;flex-shrink:0}@media(max-width:768px){.device-card{padding:14px}.device-icon{width:36px;height:36px;font-size:20px}.device-name-group h4{font-size:13px}.temp-value{font-size:28px}.mode-selector{grid-template-columns:repeat(2,1fr)}}.device-card-controls.temp-locked .temperature-control{opacity:.55}.device-card-controls.temp-locked .temperature-display:after{content:"除湿模式不可调温";display:block;font-size:11px;color:#8c98aa;margin-left:8px}.sensor-card-controls{align-items:center;justify-content:center;min-height:96px}.sensor-reading{display:flex;align-items:baseline;justify-content:center;gap:6px;color:var(--text-primary)}.sensor-reading-value{font-size:32px;font-weight:700;line-height:1}.sensor-reading-unit{font-size:14px;color:var(--text-secondary)}.monitor-page{display:flex;flex-direction:column;gap:16px;padding:5px;height:100%;overflow:visible;position:relative}.monitor-header{background:var(--bg-card);border-radius:24px;padding:20px 24px;box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.header-left{flex:1}.header-left-group{display:flex;align-items:center;gap:12px;width:100%}.monitor-content{display:flex;gap:16px;flex:1;overflow:visible;min-height:0}.monitor-left{flex:1;display:flex;flex-direction:column;gap:16px;min-width:0}.main-camera-view{flex:1;background:var(--bg-card);border-radius:24px;box-shadow:var(--shadow-sm);overflow:hidden;position:relative;min-height:300px;display:flex;align-items:center;justify-content:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.camera-placeholder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--text-tertiary)}.camera-placeholder p{margin-top:16px;font-size:14px}.camera-list-card{background:var(--bg-card);border-radius:16px;padding:12px 14px;box-shadow:var(--shadow-sm);margin-bottom:10px;position:relative}.camera-grid{display:flex;gap:12px}.camera-card{display:flex;align-items:center;gap:8px;padding:10px 16px!important;background:#0000000d;border:none;border-left:3px solid transparent;border-radius:10px;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;color:var(--text-secondary)}:root.night-mode .camera-card{background:#ffffff14}.camera-card.active{background:#8ba88833;border-left-color:#8ba888;color:var(--text-primary)}:root.night-mode .camera-card.active{background:#8ba88840;border-left-color:#8ba888}.camera-card-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-secondary)}.camera-card.active .camera-card-icon{color:#8ba888}.camera-name{font-size:14px;font-weight:500;color:var(--text-primary)}.events-card{width:290px;background:var(--bg-card);border-radius:24px;padding:20px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;overflow:hidden;margin-bottom:10px;position:relative}.events-card-header{position:relative;display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px}.events-card-header.is-draggable{touch-action:none}.events-card-actions{display:flex;align-items:center;gap:8px;justify-self:end}.events-drag-handle{display:none;position:absolute;top:1px;left:50%;transform:translate(-50%);width:56px;height:18px;background:transparent;z-index:2;touch-action:none}.events-drag-handle:after{content:"";display:block;width:100%;height:6px;border-radius:999px;background:#00000040;margin-top:6px}:root.night-mode .events-drag-handle:after{background:#ffffff4d}.events-expand-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0;border:none;background:transparent;color:var(--text-primary);font-size:14px;cursor:pointer;transition:all .2s ease;white-space:nowrap;min-width:auto}.events-expand-button:hover{opacity:.75}.events-expand-button:active{transform:scale(.98)}:root.night-mode .events-expand-button:hover{opacity:.85}.expand-button-text{font-weight:500}.expand-button-icon{flex-shrink:0;opacity:.7;transition:all .2s ease}.events-expand-button:hover .expand-button-icon{opacity:1}.events-filter-panel{width:100%;padding:10px 12px;background:#00000014;border-radius:10px;margin-bottom:12px;box-sizing:border-box}:root.night-mode .events-filter-panel{background:#ffffff1f}.events-filter-group{display:flex;align-items:flex-start;gap:8px}.events-filter-group+.events-filter-group{margin-top:8px}.events-filter-group-label{font-size:14px;color:var(--text-primary);font-weight:500;flex:0 0 auto;line-height:24px}.events-filter-options{display:flex;flex:1;flex-wrap:wrap;gap:4px 10px;min-width:0}.events-filter-option{display:inline-flex;align-items:center;gap:4px;padding:0;color:var(--text-primary);font-size:13px;line-height:22px;cursor:pointer}.events-filter-option input{margin:0;accent-color:var(--accent-color);width:12px;height:12px}.events-filter-option span:first-of-type{min-width:0}.events-filter-option-count{font-size:12px;color:var(--text-tertiary)}.events-card h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0 0 16px;display:flex;align-items:center;gap:8px;flex-shrink:0}.events-list{display:flex;flex-direction:column;gap:12px;flex:1;overflow-y:auto}.events-list-inner{display:flex;flex-direction:column;gap:12px}.events-list::-webkit-scrollbar{width:0px;display:none}.events-list{scrollbar-width:none;-ms-overflow-style:none}.skeleton{background:linear-gradient(90deg,#0000000f 25%,#0000001a,#0000000f 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:8px}:root.night-mode .skeleton{background:linear-gradient(90deg,#ffffff14 25%,#ffffff1f,#ffffff14 75%);background-size:200% 100%}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}@media(max-width:600px){.skeleton{animation:skeleton-shimmer-mobile var(--skeleton-mobile-duration) linear infinite;background-size:var(--skeleton-mobile-size)}}.skeleton-header{background:var(--bg-card);border-radius:24px;padding:20px 24px;box-shadow:var(--shadow-sm)}.skeleton-title{height:28px;width:200px;margin-bottom:8px}.skeleton-video{flex:1;background:var(--bg-card);border-radius:24px;box-shadow:var(--shadow-sm);min-height:300px;display:flex;align-items:center;justify-content:center}.skeleton-video-inner{width:100%;height:100%}.skeleton-camera-list{background:var(--bg-card);border-radius:16px;padding:26px 14px;box-shadow:var(--shadow-sm);margin-bottom:10px;display:flex;gap:12px}.skeleton-camera-card{height:40px;width:120px;border-radius:10px}.skeleton-events{width:290px;background:var(--bg-card);border-radius:24px;padding:20px;box-shadow:var(--shadow-md);margin-bottom:20px}.skeleton-events-header{height:20px;width:120px;margin-top:10px;margin-bottom:20px}.skeleton-event-item{height:90px;margin-bottom:12px;border-radius:10px}.event-item{height:90px;box-sizing:border-box;display:flex;gap:12px;padding:12px;background:#0000000d;border-radius:10px;border-left:3px solid transparent;flex-shrink:0;cursor:pointer;transition:all .2s ease}.event-item.selected{background:#8ba88833;border-left-color:#8ba888}:root.night-mode .event-item{background:#ffffff14}:root.night-mode .event-item:hover{background:#ffffff1f}:root.night-mode .event-item.selected{background:#8ba88840;border-left-color:#8ba888}.event-icon{font-size:24px;flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;align-self:center}.event-content{flex:1;min-width:0}.event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;gap:8px}.event-camera{font-size:12px;font-weight:600;color:var(--text-primary)}.event-type{font-size:11px;color:var(--text-secondary);background:#0000001a;padding:2px 8px;border-radius:6px;flex-shrink:0}:root.night-mode .event-type{background:#ffffff1a}.event-message{font-size:13px;color:var(--text-primary);line-height:1.4;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.event-footer{display:flex;justify-content:space-between;align-items:center}.event-time{font-size:11px;color:var(--text-secondary)}.empty-events{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;color:var(--text-tertiary)}.empty-events p{font-size:14px;color:var(--text-secondary)}.main-camera-view .vjs-big-play-button{display:none!important}.main-camera-view .vjs-control-bar{height:3.5em!important;font-size:1.2em!important;display:flex!important;align-items:center!important}.main-camera-view .vjs-control,.main-camera-view .vjs-button{width:3.5em!important;height:3.5em!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0!important}.main-camera-view .vjs-play-control{width:3em!important;height:4em!important;margin-top:1em!important;font-size:1.5em!important}.main-camera-view .vjs-previous-button,.main-camera-view .vjs-next-button{width:2.5em!important;height:3.5em!important;font-size:1.2em!important}.main-camera-view .vjs-previous-button img,.main-camera-view .vjs-next-button img{width:1.2em!important;height:1em!important;filter:brightness(0) invert(1)}.main-camera-view .vjs-icon-previous-item,.main-camera-view .vjs-icon-next-item{width:3.5em!important;height:3.5em!important;display:flex!important;align-items:center!important;justify-content:center!important}.main-camera-view .vjs-progress-control{font-size:1em!important}.main-camera-view .vjs-playback-rate{margin-right:1em!important}.main-camera-view .vjs-menu-button .vjs-menu{display:none!important}.main-camera-view .vjs-menu-button .vjs-menu.vjs-lock-showing{display:block!important}.video-loading-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:#8ba888;border-radius:50%;animation:spin .8s linear infinite}.h265web-player-host,.h265web-player-host>div,.h265web-player-host canvas,.h265web-player-host video{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important}.h265web-player-host canvas,.h265web-player-host video{display:block;object-fit:contain;background:#000}.playback-container{position:relative;width:100%;height:70px;overflow:hidden}.camera-list-view,.playback-view{position:absolute;width:100%;height:70px;transition:opacity .15s ease}.camera-list-view{position:relative;transform:translate(0);opacity:1}.playback-view{transform:translate(100%);opacity:0;pointer-events:none}.playback-container.show-playback .camera-list-view{position:absolute;transform:translate(-100%);opacity:0;pointer-events:none}.playback-container.show-playback .playback-view{position:relative;transform:translate(0);opacity:1;pointer-events:auto}.camera-list-wrapper{display:flex;gap:10px;align-items:center;height:100%}.camera-list-sidebar{display:flex;align-items:center;justify-content:center;flex-shrink:0;min-width:42px}.camera-list-divider{width:2px;height:40px;background:var(--border-primary);flex-shrink:0;opacity:.5}:root.night-mode .camera-list-divider{background:#ffffff26}.camera-list-main{flex:1;min-width:0;display:flex;align-items:center}.playback-hint{font-size:13px;color:var(--text-primary);font-weight:500;opacity:.7;text-align:center;width:100%}.playback-content-wrapper{display:flex;gap:10px;align-items:stretch;height:100%}.playback-sidebar{display:flex;align-items:center;gap:8px;flex-shrink:0;min-width:60px;cursor:pointer;transition:opacity .2s ease}.playback-sidebar:hover{opacity:.8}.playback-divider{width:1px;align-self:stretch;background:var(--border-primary);flex-shrink:0;opacity:.5}:root.night-mode .playback-divider{background:#ffffff26}.playback-info{display:flex;flex-direction:column;gap:2px}.back-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--text-primary);flex-shrink:0;pointer-events:none}.back-button:hover{transform:translate(-2px)}.playback-title{font-size:12px;font-weight:600;color:var(--text-primary);line-height:1.2}.playback-camera-name{font-size:11px;color:var(--text-secondary);line-height:1.2}.playback-main{flex:1;display:flex;flex-direction:column;min-width:0;gap:6px}.date-selector-container{flex-shrink:0;overflow:hidden;margin-bottom:0;padding-bottom:2px}.date-selector{display:flex;gap:4px;overflow-x:auto;padding:0;scrollbar-width:none;-ms-overflow-style:none}.date-selector::-webkit-scrollbar{display:none}.playback-date-item{flex-shrink:0;padding:5px 10px!important;background:#0000000d;border:1px solid transparent;border-radius:12px;font-size:11px;font-weight:500;color:var(--text-secondary)!important;cursor:pointer;transition:all .2s ease;white-space:nowrap;line-height:1}:root.night-mode .playback-date-item{background:#ffffff4d}.playback-date-item.selected{background:#afcfab;color:#fff;border-color:transparent}:root.night-mode .playback-date-item.selected{background:#8ba88873!important;color:#fff!important}.timeline-container{position:relative;height:46px;border-radius:10px;overflow-x:hidden;overflow-y:visible;min-width:0}.timeline-loading{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.timeline-loading-spinner{width:20px;height:20px;border:2px solid rgba(0,0,0,.1);border-top-color:#8ba888;border-radius:50%;animation:spin .6s linear infinite}:root.night-mode .timeline-loading-spinner{border-color:#ffffff1a;border-top-color:#8ba888}.timeline-wrapper{width:100%;height:100%;overflow-x:auto;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none}.timeline-wrapper::-webkit-scrollbar{display:none}.timeline{display:flex;height:100%;min-width:max-content;width:max-content;position:relative;padding:0 8px}.half-hour-section{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px;position:relative;height:100%;width:100px;flex-shrink:0}.time-label{font-size:10px;font-weight:500;color:var(--text-secondary);user-select:none;white-space:nowrap;padding-left:2px}.tick-container{display:flex;align-items:stretch;width:100%;flex:1;position:relative}.major-tick{width:2px;height:100%;background:#00000040;flex-shrink:0;position:absolute;left:0;z-index:5}:root.night-mode .major-tick{background:#ffffff4d}.minor-ticks{position:absolute;inset:0;pointer-events:none}.minor-tick{position:absolute;bottom:0;width:1px;height:30%;background:#0003;cursor:default;transition:all .2s ease;pointer-events:auto}.minor-tick:nth-child(3){height:50%;background:#0000004d}.minor-tick:nth-child(1){left:calc(100% / 6 * 1)}.minor-tick:nth-child(2){left:calc(100% / 6 * 2)}.minor-tick:nth-child(3){left:50%}.minor-tick:nth-child(4){left:calc(100% / 6 * 4)}.minor-tick:nth-child(5){left:calc(100% / 6 * 5)}:root.night-mode .minor-tick{background:#ffffff40}.minor-tick.available{cursor:pointer}.timeline-end-tick{width:2px;height:100%;background:#00000040;flex-shrink:0;position:relative;z-index:5}:root.night-mode .timeline-end-tick{background:#ffffff4d}.timeline-indicator{position:absolute;bottom:0;width:2px;height:60%;background:#ff8c42;z-index:20;pointer-events:none}.timeline-highlights{position:absolute;inset:0;pointer-events:none;z-index:1}.timeline-segment-highlight{position:absolute;top:0;bottom:0;background:#afcfab40;border-radius:0;pointer-events:none}:root.night-mode .timeline-segment-highlight{background:#8ba88833}@media(max-width:600px){:root.monitor-lock,:root.monitor-lock body,:root.monitor-lock #root,:root.monitor-lock .app,:root.monitor-lock .app-body,:root.monitor-lock .page-container{height:100dvh;min-height:100dvh;overflow:hidden}:root.monitor-lock .app-body{flex:1}:root.monitor-lock .page-container{height:100%}.monitor-page{height:100%;min-height:0;overflow:hidden;padding-bottom:0;box-sizing:border-box}.monitor-page.events-expanded{overflow:hidden}.monitor-content{flex:1;min-height:0;overflow:hidden;height:100%}.monitor-left{min-height:0;gap:8px}.monitor-header{flex-direction:row;align-items:center;gap:12px;padding:16px}.monitor-content{flex-direction:column}.monitor-left{order:1;flex:0 0 auto}.camera-grid{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}.camera-grid::-webkit-scrollbar{display:none}.camera-card{flex-shrink:0}.main-camera-view{flex:0 0 auto;aspect-ratio:16 / 9;height:auto;min-height:0}.camera-list-card{margin-bottom:0}.skeleton-header{padding:16px;border-radius:18px;margin-bottom:8px}.monitor-mobile-skeleton-page{overflow-y:auto;overflow-x:hidden}.monitor-mobile-skeleton{display:flex;flex-direction:column;gap:8px;min-height:100%;padding-bottom:8px}.monitor-mobile-skeleton-section{margin-bottom:0;flex:0 0 auto}.monitor-mobile-skeleton-subtitle{width:168px;max-width:72%;height:12px;margin-top:10px;border-radius:999px}.skeleton-video{aspect-ratio:16 / 9;min-height:0;border-radius:18px;margin-bottom:8px}.skeleton-camera-list{padding:12px;gap:10px;overflow-x:auto;margin-bottom:8px}.skeleton-camera-card{width:96px}.skeleton-events{width:100%;max-height:none;padding:16px;border-radius:18px;margin-bottom:12px;box-sizing:border-box}.skeleton-events-header{margin-top:0;width:140px}.skeleton-event-item{height:64px;margin-bottom:10px}.events-card{width:100%;order:2;margin-top:0;transform:translateY(var(--events-drag, 0px));transition:transform .3s cubic-bezier(.25,.46,.45,.94);margin-bottom:0;flex:1 1 auto;min-height:0;will-change:transform}.events-card.is-expanded{position:fixed;top:var(--events-top-limit, 8px);left:8px;right:8px;bottom:8px;max-height:none;z-index:130}.events-card.is-dragging{transition:none}.events-drag-handle{display:block}.events-list{overflow-y:auto}}@media(max-width:600px){.event-item{height:80px}}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease}.modal-content{background:var(--bg-card);border-radius:24px;max-width:480px;width:90%;box-shadow:0 8px 32px #0000004d;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-primary)}.modal-header h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.close-btn{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;transition:color .2s}.close-btn:hover{color:var(--text-primary)}.modal-body{padding:24px}.error-message{padding:12px 16px;background:#fee;border:1px solid #fcc;border-radius:8px;color:#c33;font-size:14px;margin-bottom:16px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:8px}.form-group input[type=text]{width:100%;padding:10px 14px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:10px;font-size:14px;color:var(--text-primary);transition:all .2s}.form-group input[type=text]:focus{outline:none;border-color:var(--accent-color);background:var(--bg-card)}.avatar-upload{display:flex;align-items:center;gap:16px}.avatar-preview{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--border-primary)}.upload-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:10px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.upload-btn:hover{background:var(--bg-hover);border-color:var(--accent-color);color:var(--text-primary)}.hint{margin:8px 0 0;font-size:12px;color:var(--text-tertiary)}.modal-footer{display:flex;gap:12px;padding:16px 24px;border-top:1px solid var(--border-primary);justify-content:flex-end}.btn-secondary,.btn-primary{display:flex;align-items:center;gap:6px;padding:10px 20px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;border:none}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-hover)}.btn-primary{background:var(--accent-color);color:#fff}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--accent-shadow)}.btn-secondary:disabled,.btn-primary:disabled{opacity:.5;cursor:not-allowed}.qr-modal.modal-content{max-width:380px}.qr-modal .modal-header{padding-top:14px;padding-bottom:14px}.qr-modal .modal-footer{padding-top:12px;padding-bottom:12px}.qr-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:999999;animation:fadeIn .2s ease}.qr-modal .modal-body{padding:16px 20px}.loading-container{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 0}.loading-spinner{width:36px;height:36px;border:3px solid var(--bg-tertiary);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}.qr-container{display:flex;flex-direction:column;align-items:center;gap:10px}.qr-container .member-info{display:flex;flex-direction:row;align-items:center;gap:8px;color:var(--text-secondary);font-size:14px;flex-wrap:nowrap}.member-info>svg{flex-shrink:0}.member-info>span{white-space:nowrap}.member-info strong{color:var(--text-primary);font-weight:600}.qr-code-box{padding:12px;background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;transition:background-color .3s ease}:root.night-mode .qr-modal .qr-code-box{background:#464646}.instruction{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--bg-tertiary);border-radius:10px;color:var(--text-secondary);font-size:13px}.status-indicator{display:flex;align-items:center;gap:8px;color:var(--accent-color);font-size:13px;font-weight:500}.pulse-dot{width:8px;height:8px;background:var(--accent-color);border-radius:50%;animation:pulse 1.5s ease-in-out infinite}.success-container,.expired-container{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 0;text-align:center}.success-icon{color:#10b981;animation:scaleIn .4s ease}.expired-icon{color:#ef4444;animation:scaleIn .4s ease}.success-container h3,.expired-container h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.success-message,.expired-message{margin:0;font-size:14px;color:var(--text-secondary)}.mac-address{margin:4px 0 0;padding:6px 12px;background:var(--bg-tertiary);border-radius:8px;font-size:12px;font-family:Consolas,Monaco,monospace;color:var(--text-secondary)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.settings-page{display:flex;flex-direction:column;gap:10px;padding:5px;height:100%;overflow:visible}.settings-header{background:var(--bg-card);border-radius:24px;padding:16px 20px;box-shadow:var(--shadow-sm)}.page-title{font-size:22px;font-weight:700;color:var(--text-primary);margin:0 0 4px;line-height:1.3}.page-subtitle{font-size:13px;color:var(--text-secondary);margin:0;line-height:1.4}.settings-content{flex:1;overflow-y:auto;padding-right:8px;display:flex;flex-direction:column;gap:10px}.settings-section{background:var(--bg-card);border-radius:24px;padding:16px 18px;border:1px solid var(--border-primary);box-shadow:0 1px 2px #0000000d}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;padding-bottom:6px;border-bottom:2px solid var(--border-primary)}.section-header h2{font-size:18px;font-weight:600;color:var(--text-primary);margin:0}.section-header svg{color:var(--settings-color)}.setting-item{display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:12px;padding:14px 0;border-bottom:1px solid var(--border-primary)}.setting-item:last-child{border-bottom:none}.settings-section .setting-item:only-child{padding:12px 0}.setting-info{flex:1 1 auto;min-width:0}.setting-name{font-size:15px;font-weight:500;color:var(--text-primary);margin-bottom:2px}.setting-desc{font-size:13px;color:var(--text-secondary);line-height:1.4;overflow:hidden;white-space:nowrap;position:relative}.setting-desc-text{display:inline-block;white-space:nowrap;padding-right:2em}.setting-desc.marquee .setting-desc-text{animation:setting-marquee 12s linear infinite}.setting-desc.marquee .setting-desc-text:after{content:attr(data-text);padding-left:2em}@keyframes setting-marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}.toggle-switch{position:relative;display:inline-block;width:48px;height:28px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.3s;border-radius:28px}.toggle-slider:before{position:absolute;content:"";height:22px;width:22px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}.toggle-switch input:checked+.toggle-slider{background-color:var(--settings-color)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.inline-switch-group{position:relative;display:flex;background:var(--bg-tertiary);border-radius:10px;padding:3px;flex-shrink:0}:root.night-mode .inline-switch-group{background:#ffffff0d}.switch-btn{flex:1;padding:8px 10px;background:transparent;border:none;border-radius:8px;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:color .25s ease;-webkit-tap-highlight-color:transparent;z-index:1;display:flex;justify-content:center;align-items:center}.switch-btn span{display:inline-block}.monitor-player-switch{min-width:168px}.monitor-player-switch .switch-btn{min-width:81px;padding-left:10px;padding-right:10px}.switch-btn:hover{color:var(--text-primary)}.switch-btn.active{color:#fff;font-weight:600}@media(max-width:600px){.settings-content{overflow:visible;padding-right:0}.setting-item{flex-direction:row;align-items:center;gap:12px}}@media(prefers-reduced-motion:reduce){.setting-desc-text{animation:none}}:root.night-mode .switch-btn.active{color:#fff}.switch-btn:disabled{color:var(--text-disabled);cursor:not-allowed}.switch-slider{position:absolute;top:3px;height:calc(100% - 6px);background:var(--settings-color);border-radius:8px;transition:left .3s cubic-bezier(.4,0,.2,1);z-index:0;border:none}.inline-switch-group.two-items .switch-slider{width:calc((100% - 6px)/2);left:3px}.inline-switch-group.two-items .switch-slider[data-position="1"]{left:calc(3px + (100% - 6px)/2)}.inline-switch-group.three-items .switch-slider{width:calc((100% - 6px) / 3);left:3px}.inline-switch-group.three-items .switch-slider[data-position="1"]{left:calc(3px + (100% - 6px) / 3)}.inline-switch-group.three-items .switch-slider[data-position="2"]{left:calc(3px + (100% - 6px) / 3 * 2)}.settings-content::-webkit-scrollbar{width:6px}.settings-content::-webkit-scrollbar-track{background:transparent}.settings-content::-webkit-scrollbar-thumb{background:var(--accent-shadow);border-radius:3px}.settings-content::-webkit-scrollbar-thumb:hover{background:var(--accent-color)}.members-container{display:flex;flex-direction:column}.members-avatars-row{display:flex;justify-content:center;align-items:center;gap:20px;padding:6px 0;overflow-x:auto;overflow-y:visible}.members-avatars-row::-webkit-scrollbar{height:4px}.members-avatars-row::-webkit-scrollbar-track{background:transparent}.members-avatars-row::-webkit-scrollbar-thumb{background:var(--accent-shadow);border-radius:2px}@media(max-width:768px){.members-avatars-row{justify-content:flex-start;padding-left:12px;padding-right:12px;scroll-padding-left:12px;scrollbar-width:none;-ms-overflow-style:none}.members-avatars-row::-webkit-scrollbar{display:none}}.member-avatar-item{display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;transition:all .3s ease;position:relative;padding:3px;border-radius:16px;-webkit-tap-highlight-color:transparent}.member-avatar-item:hover{background:var(--bg-hover);transform:translateY(-5px)}.member-avatar-item.selected{background:var(--bg-tertiary)}.member-avatar-item img{width:64px;height:64px;border-radius:50%;object-fit:cover;border:3px solid var(--border-primary);transition:all .3s ease}.member-avatar-item.selected img{border-color:var(--accent-color);box-shadow:0 0 0 4px var(--accent-shadow)}.member-avatar-item.online img{border-color:#10b981}.online-indicator{position:absolute;top:8px;right:8px;width:14px;height:14px;background:#10b981;border:3px solid var(--bg-card);border-radius:50%;box-shadow:0 0 8px #10b98199;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.member-detail-panel{background:var(--bg-tertiary);border-radius:16px;padding:10px;border:1px solid var(--border-primary);animation:slideDown .3s ease-out;overflow:hidden;margin-top:5px}@keyframes slideDown{0%{opacity:0;max-height:0;padding-top:0;padding-bottom:0}to{opacity:1;max-height:100px;padding-top:16px;padding-bottom:16px}}.member-detail-panel .detail-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.member-detail-panel .detail-item{display:flex;flex-direction:column;gap:4px;flex:1;min-width:120px}.member-detail-panel .detail-item:last-child{flex:0;min-width:auto}.member-detail-panel .detail-label{font-size:12px;color:var(--text-secondary);font-weight:500}.member-detail-panel .detail-value{font-size:14px;color:var(--text-primary);font-weight:500;font-family:Consolas,Monaco,monospace}.member-detail-panel .detail-value .unbind-text{color:var(--text-tertiary);font-style:italic;font-family:inherit}.bind-device-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;background:var(--accent-color);color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 2px 8px var(--accent-shadow);-webkit-tap-highlight-color:transparent}.bind-device-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--accent-shadow)}.bind-device-btn:active{transform:translateY(0)}.empty-state{padding:24px;text-align:center;color:var(--text-tertiary);font-size:14px;border-radius:12px}.alert-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.alert-modal{background:var(--bg-secondary);border-radius:12px;box-shadow:0 8px 32px #0000004d;max-width:700px;width:90%;max-height:80vh;display:flex;flex-direction:column;border:1px solid var(--border-primary);animation:slideUp .3s ease}.alert-modal.blackout-modal{width:66.67%!important;max-width:none;border-radius:16px}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.alert-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-primary);gap:12px}.alert-modal-title{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--text-primary);flex:1}.alert-modal-title svg{flex-shrink:0}.alert-modal-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary);flex:1}.alert-modal-header-actions{display:flex;align-items:center;gap:8px}.alert-modal-close{background:none;border:none;font-size:32px;line-height:1;cursor:pointer;color:var(--text-secondary);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease}.alert-modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.alert-modal-content{padding:12px 16px 16px;overflow-y:auto;flex:1}.alert-modal-content::-webkit-scrollbar{width:8px}.alert-modal-content::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:4px}.alert-modal-content::-webkit-scrollbar-thumb{background:var(--text-tertiary);border-radius:4px}.alert-modal-content::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.alert-modal-item{background:var(--bg-card);border:1px solid var(--border-secondary);border-radius:8px;padding:12px 14px;margin-bottom:12px}.alert-modal-item:last-child{margin-bottom:0}.alert-modal-item-header{display:flex;gap:12px;margin-bottom:8px;align-items:center}.alert-level{padding:3px 8px;border-radius:4px;font-size:12px;font-weight:500;color:#fff;flex-shrink:0}.alert-level-红色,.alert-level-Red{background:#dc2626}.alert-level-橙色,.alert-level-Orange{background:#ea580c}.alert-level-黄色,.alert-level-Yellow{background:#ca8a04}.alert-level-蓝色,.alert-level-Blue{background:#2563eb}.alert-title-text{color:var(--text-primary);font-size:15px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-title{margin:0 0 12px;font-size:16px;font-weight:600;color:var(--text-primary);line-height:1.4}.alert-type{background:var(--bg-tertiary);color:var(--text-primary);padding:4px 12px;border-radius:4px;font-size:13px;font-weight:500}.alert-description{margin:0 0 8px;font-size:14px;color:var(--text-secondary);line-height:1.6;white-space:pre-wrap}.alert-meta{display:flex;gap:20px;font-size:12px;color:var(--text-tertiary);padding-top:8px;border-top:1px solid var(--border-secondary);flex-wrap:wrap}.alert-meta span{display:flex;align-items:center}.alert-modal-tabs,.blackout-tabs{display:flex;padding:10px 16px 0;gap:8px;border-bottom:1px solid var(--border-secondary)}.blackout-tab{flex:1;padding:8px 16px;border:none;background:transparent;color:var(--text-tertiary);font-size:14px;font-weight:500;cursor:pointer;border-radius:8px 8px 0 0;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px;outline:none;position:relative}.blackout-tab:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:transparent;transition:background .2s}.blackout-tab.active{color:#f59e0b;background:#f59e0b14}.blackout-tab.active:after{background:#f59e0b}.blackout-tabs.alert-theme .blackout-tab.active{color:#dc2626;background:#dc262614}.blackout-tabs.alert-theme .blackout-tab.active:after{background:#dc2626}.tab-count{background:#ef4444;color:#fff;font-size:11px;font-weight:600;padding:1px 6px;border-radius:10px;min-width:18px;text-align:center}.alert-modal-empty{text-align:center;padding:40px 20px;color:var(--text-tertiary);font-size:15px}.no-notices{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--text-tertiary);gap:12px}.no-notices svg{opacity:.4}.no-notices span{font-size:14px}.no-notices .coming-soon{font-size:12px;opacity:.6}.loading-spinner{animation:blackoutSpin 1s linear infinite}@keyframes blackoutSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app{width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-body{display:flex;flex:1;overflow:hidden;padding-top:64px;gap:5px;padding-left:5px}.page-container{position:relative;flex-grow:1;min-width:0;overflow:hidden;opacity:1;transform:translate(0);transition:opacity .3s ease,transform .3s ease}.page-container.page-transitioning{opacity:0;transform:translate(20px)}.app-main-content{position:relative;flex-grow:1;padding:5px;min-width:0;overflow:hidden;display:flex;gap:15px;height:100%}.left-column{display:flex;flex-direction:column;width:calc(60% - 10px);flex-shrink:0}.right-column{position:relative;display:flex;flex-direction:column;flex:1;min-width:0;gap:12px}.app-header{position:fixed;top:0;left:0;right:0;background:var(--bg-secondary);padding:8px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-accent);border-bottom-left-radius:18px;border-bottom-right-radius:18px;box-shadow:0 4px 20px #00000014;z-index:100;gap:20px;overflow:hidden}:root:not(.night-mode) .app-header{background:linear-gradient(135deg,#fff0e0,#fff8f0)}.header-left{display:flex;align-items:center;gap:20px;flex-shrink:0}.header-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.header-center{flex-grow:1;min-width:0}.app-header h2{margin:0;color:var(--text-primary);font-size:28px;font-weight:600;letter-spacing:2px}.mode-toggle{width:40px;height:40px;border:none;border-radius:50%;background:transparent;color:var(--text-primary);cursor:pointer;transition:all .3s;display:flex;align-items:center;justify-content:center;padding:0;-webkit-tap-highlight-color:transparent}.mode-toggle svg{transition:all .3s}@media(hover:hover)and (pointer:fine){.mode-toggle:hover{background:var(--btn-bg-hover);transform:scale(1.1)}}.mode-toggle:active{transform:scale(.95)}@media(max-width:768px){.app-header h2{font-size:20px}.mode-toggle{width:36px;height:36px}}.alert-marquee-container{overflow:hidden;white-space:nowrap;width:103%;max-width:103%;color:var(--text-secondary);position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0%,black 5%,black 95%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,black 10%,black 90%,transparent 100%)}.alert-marquee-container.clickable{cursor:pointer;transition:opacity .2s ease}.alert-marquee-container.clickable:hover{opacity:.8}.alert-marquee-content{display:inline-block;padding-left:100%;animation:marquee linear infinite;will-change:transform}.alert-marquee-content span{padding-right:2em}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}.dock-float-wrapper{flex-shrink:0}.dock-fab{display:none;border:none;background:#00000059;color:#fff;width:44px;height:44px;border-radius:14px;align-items:center;justify-content:center;cursor:pointer;transition:opacity .25s ease,transform .25s ease;-webkit-tap-highlight-color:transparent}:root.night-mode .dock-fab{background:#fff3;color:var(--text-primary)}@media(max-width:600px){.app{height:auto;min-height:100dvh;overflow:visible}.app-header{position:sticky;flex-wrap:wrap;gap:8px;padding:6px 12px;border-bottom-left-radius:14px;border-bottom-right-radius:14px}.header-left{flex:1 1 auto;min-width:0}.header-center{display:none}.header-right{order:2;gap:6px}.app-body{flex-direction:column;padding-top:0;padding-left:8px;padding-right:8px;gap:8px;overflow:visible}.page-container{overflow:visible;padding-bottom:0}.app-main-content{flex-direction:column;height:auto;padding:0;gap:12px}.left-column,.right-column{width:100%;flex:none}.right-column{gap:10px}.app-main-content>.right-column{order:1}.app-main-content>.left-column{order:2}.alert-marquee-container{width:100%;max-width:100%;font-size:12px}.dock-float-wrapper{position:fixed;left:50%;bottom:14px;transform:translate(-50%);z-index:120;transition:opacity .25s ease,transform .25s ease}.dock-float-wrapper.is-hidden{opacity:0;transform:translate(-50%) translate(140px);pointer-events:none}.dock-fab{display:inline-flex;position:fixed;right:12px;bottom:18px;z-index:121;opacity:0;transform:scale(.95);pointer-events:none}.dock-fab.is-visible{opacity:1;transform:scale(1);pointer-events:auto}.app.dock-hidden .page-container{padding-bottom:0}.mobile-section-divider{height:1px;background:var(--border-primary);opacity:.6;margin:4px 0}}.admin-login-page{position:fixed;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:#020c1b;overflow:hidden;font-family:Courier New,Consolas,monospace}.login-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(0,212,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,212,255,.04) 1px,transparent 1px);background-size:40px 40px;animation:bgShift 20s linear infinite;z-index:0}@keyframes bgShift{0%{background-position:0 0}to{background-position:40px 40px}}.login-scanline{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.06) 2px,rgba(0,0,0,.06) 4px);pointer-events:none;z-index:1}.login-glow-1{position:absolute;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(0,212,255,.1) 0%,transparent 70%);top:-200px;left:-100px;animation:glowFloat1 8s ease-in-out infinite;z-index:0}.login-glow-2{position:absolute;width:500px;height:500px;border-radius:50%;background:radial-gradient(circle,rgba(99,0,255,.09) 0%,transparent 70%);bottom:-150px;right:-100px;animation:glowFloat2 10s ease-in-out infinite;z-index:0}.login-glow-3{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(0,255,136,.06) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);animation:glowPulse 4s ease-in-out infinite;z-index:0}@keyframes glowFloat1{0%,to{transform:translate(0)}50%{transform:translate(60px,40px)}}@keyframes glowFloat2{0%,to{transform:translate(0)}50%{transform:translate(-50px,-30px)}}@keyframes glowPulse{0%,to{opacity:.5;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.3)}}.login-particles{position:absolute;inset:0;z-index:0;pointer-events:none}.particle{position:absolute;width:2px;height:2px;background:#00d4ff99;border-radius:50%;animation:particleFly linear infinite}.particle:nth-child(1){left:8%;animation-duration:12s;animation-delay:0s;width:3px;height:3px}.particle:nth-child(2){left:18%;animation-duration:9s;animation-delay:-2s}.particle:nth-child(3){left:32%;animation-duration:14s;animation-delay:-5s;width:3px;height:3px}.particle:nth-child(4){left:50%;animation-duration:8s;animation-delay:-1s}.particle:nth-child(5){left:63%;animation-duration:11s;animation-delay:-7s;background:#6300ff99}.particle:nth-child(6){left:74%;animation-duration:13s;animation-delay:-3s}.particle:nth-child(7){left:84%;animation-duration:10s;animation-delay:-6s;background:#00ff8880}.particle:nth-child(8){left:92%;animation-duration:15s;animation-delay:-4s;width:3px;height:3px}.particle:nth-child(9){left:44%;animation-duration:7s;animation-delay:-9s;background:#00d4ffcc}.particle:nth-child(10){left:4%;animation-duration:16s;animation-delay:-11s;background:#6300ff80}.particle:nth-child(11){left:57%;animation-duration:9s;animation-delay:-8s}.particle:nth-child(12){left:28%;animation-duration:12s;animation-delay:-13s;background:#0f86}@keyframes particleFly{0%{bottom:-10px;opacity:0;transform:translate(0)}10%{opacity:1}90%{opacity:1}to{bottom:110vh;opacity:0;transform:translate(30px)}}.corner-deco{position:absolute;width:60px;height:60px;z-index:0;pointer-events:none}.corner-deco.tl{top:16px;left:16px;border-top:1px solid rgba(0,212,255,.35);border-left:1px solid rgba(0,212,255,.35)}.corner-deco.tr{top:16px;right:16px;border-top:1px solid rgba(0,212,255,.35);border-right:1px solid rgba(0,212,255,.35)}.corner-deco.bl{bottom:16px;left:16px;border-bottom:1px solid rgba(0,212,255,.35);border-left:1px solid rgba(0,212,255,.35)}.corner-deco.br{bottom:16px;right:16px;border-bottom:1px solid rgba(0,212,255,.35);border-right:1px solid rgba(0,212,255,.35)}.login-container{position:relative;z-index:2;width:100%;max-width:460px;padding:20px}.login-card{position:relative;background:#021226e0;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(0,212,255,.18);border-radius:4px;padding:48px 44px 40px;box-shadow:0 0 40px #00d4ff12,0 0 80px #00000080,inset 0 0 40px #0003;animation:cardAppear .7s cubic-bezier(.16,1,.3,1)}@keyframes cardAppear{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.login-card:before{content:"";position:absolute;inset:0;border-radius:4px;background:linear-gradient(135deg,rgba(0,212,255,.04) 0%,transparent 50%,rgba(99,0,255,.04) 100%);pointer-events:none}.login-card-topline{position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.8),transparent);animation:toplineGlow 3s ease-in-out infinite}@keyframes toplineGlow{0%,to{opacity:.5}50%{opacity:1}}.login-theme-toggle{position:absolute;top:16px;right:16px;display:flex;align-items:center;gap:6px;background:none;border:1px solid rgba(0,212,255,.25);border-radius:20px;padding:5px 10px 5px 6px;cursor:pointer;color:#00d4ff99;font-size:13px;transition:all .3s;z-index:10}.login-theme-toggle:hover{border-color:#00d4ff99;color:#00d4ff;box-shadow:0 0 12px #00d4ff26}.login-theme-toggle.is-day{border-color:#ffb40066;color:#ffb400cc}.login-theme-toggle.is-day:hover{border-color:#ffb400b3;color:#ffb400}.theme-toggle-track{width:28px;height:16px;background:#00d4ff1f;border:1px solid rgba(0,212,255,.3);border-radius:8px;position:relative;display:inline-block;transition:all .3s;flex-shrink:0}.login-theme-toggle.is-day .theme-toggle-track{background:#ffb40026;border-color:#ffb40066}.theme-toggle-thumb{position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:#00d4ff;box-shadow:0 0 6px #00d4ff99;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.login-theme-toggle.is-day .theme-toggle-thumb{left:14px;background:#ffb400;box-shadow:0 0 6px #ffb400b3}.theme-toggle-icon{font-size:12px;line-height:1;display:flex;align-items:center}.login-header{text-align:center;margin-bottom:32px}.login-icon-wrap{position:relative;width:76px;height:76px;margin:0 auto 18px}.login-icon-ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(0,212,255,.35);animation:ringRotate 4s linear infinite}.login-icon-ring:before{content:"";position:absolute;top:-3px;left:calc(50% - 3px);width:6px;height:6px;background:#00d4ff;border-radius:50%;box-shadow:0 0 8px #00d4ff}@keyframes ringRotate{to{transform:rotate(360deg)}}.login-icon-inner{position:absolute;inset:10px;background:linear-gradient(135deg,#00b4dc33,#6300ff26);border:1px solid rgba(0,212,255,.3);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#00d4ff}.login-system-label{font-size:9px;letter-spacing:4px;color:#00d4ff59;margin-bottom:8px}.login-title{font-size:20px;font-weight:700;color:#d8f0ff;letter-spacing:2px;margin:0 0 6px}.login-subtitle{font-size:9px;letter-spacing:3px;color:#00d4ff4d}.login-status-bar{display:flex;align-items:center;gap:8px;margin-bottom:24px;padding:8px 12px;background:#00d4ff08;border:1px solid rgba(0,212,255,.08);border-radius:2px}.status-dot{width:6px;height:6px;border-radius:50%;background:#0f8;box-shadow:0 0 8px #0f8;animation:statusBlink 2s ease-in-out infinite;flex-shrink:0}@keyframes statusBlink{0%,to{opacity:1}50%{opacity:.4}}.status-text{font-size:9px;letter-spacing:1.5px;color:#00d4ff4d}.login-form{display:flex;flex-direction:column;gap:16px}.login-error{background:#ef444414;border:1px solid rgba(239,68,68,.35);color:#ff6b6b;padding:10px 14px;border-radius:2px;font-size:12px;letter-spacing:1px;text-align:center}.form-group{position:relative}.form-label{display:block;font-size:10px;letter-spacing:2px;color:#00d4ff73;margin-bottom:6px;text-transform:uppercase}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:14px;color:#00d4ff66;pointer-events:none;z-index:1;transition:color .3s}.input-wrapper:focus-within .input-icon{color:#00d4ff}.input-corner{position:absolute;width:6px;height:6px;pointer-events:none;z-index:2}.input-corner.tl{top:0;left:0;border-top:1px solid rgba(0,212,255,.6);border-left:1px solid rgba(0,212,255,.6)}.input-corner.br{bottom:0;right:0;border-bottom:1px solid rgba(0,212,255,.6);border-right:1px solid rgba(0,212,255,.6)}.input-wrapper input{width:100%;height:50px;padding:0 44px 0 46px!important;font-size:14px;letter-spacing:1px;color:#fff!important;background:#00081499!important;border:1px solid rgba(0,212,255,.18)!important;border-radius:2px!important;outline:none;transition:all .3s;font-family:Courier New,monospace;text-shadow:0 0 8px rgba(0,212,255,.4)}.input-wrapper input:-webkit-autofill,.input-wrapper input:-webkit-autofill:hover,.input-wrapper input:-webkit-autofill:focus,.input-wrapper input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 50px rgba(0,8,20,.95) inset!important;-webkit-text-fill-color:#ffffff!important;padding:0 44px 0 46px!important}.input-wrapper input::placeholder{color:#00d4ff33;font-size:12px;letter-spacing:2px}.input-wrapper input:focus{border-color:#00d4ff8c!important;box-shadow:0 0 0 1px #00d4ff26!important}.input-wrapper input:disabled{opacity:.5;cursor:not-allowed}.password-toggle{position:absolute;right:14px;background:none;border:none;color:#00d4ff59;cursor:pointer;padding:4px;display:flex;align-items:center;transition:color .3s}.password-toggle:hover{color:#00d4ff}.login-button{position:relative;height:50px;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:10px;background:linear-gradient(135deg,#00b4dc26,#6300ff1a);color:#00d4ff;border:1px solid rgba(0,212,255,.4);border-radius:2px;font-size:14px;font-weight:600;letter-spacing:4px;cursor:pointer;overflow:hidden;transition:all .3s;font-family:inherit;text-transform:uppercase}.login-button:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#00d4ff26,#6300ff1a);opacity:0;transition:opacity .3s}.login-button:hover:not(:disabled):before{opacity:1}.login-button-shine{position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,212,255,.12),transparent);transform:skew(-20deg);animation:btnShine 3s ease-in-out infinite}@keyframes btnShine{0%{left:-100%}50%,to{left:160%}}.login-button:hover:not(:disabled){border-color:#00d4ffb3;box-shadow:0 0 20px #00d4ff2e;color:#fff}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{opacity:.5;cursor:not-allowed}.loading-spinner{width:18px;height:18px;border:2px solid rgba(0,212,255,.2);border-top-color:#00d4ff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-2fa-form{gap:14px}.login-helper-card{padding:14px 16px;border:1px solid rgba(0,212,255,.14);background:#00d4ff08;border-radius:2px}.login-helper-title{display:flex;align-items:center;gap:8px;color:#00d4ff;font-size:12px;letter-spacing:1px;margin-bottom:6px;text-transform:uppercase}.login-helper-text{margin:0;color:#00d4ff73;font-size:12px;line-height:1.5}.login-qr-block{display:flex;flex-direction:column;align-items:center;gap:14px;padding:18px 16px;border:1px solid rgba(0,212,255,.14);background:#00081459;border-radius:2px}.login-manual-key{width:100%;display:flex;flex-direction:column;gap:6px}.login-manual-key-label{color:#00d4ff73;font-size:11px;letter-spacing:1px;text-transform:uppercase}.login-manual-key code{display:block;padding:10px 12px;background:#00d4ff0d;border:1px solid rgba(0,212,255,.12);color:#d8f0ff;font-size:13px;letter-spacing:1px;word-break:break-all}.login-back-button{height:42px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(0,212,255,.22);background:#00d4ff0a;color:#00d4ff8c;border-radius:2px;cursor:pointer;transition:all .3s;font-size:12px;letter-spacing:1px;text-transform:uppercase}.login-back-button:hover:not(:disabled){color:#00d4ff;border-color:#00d4ff73;background:#00d4ff14}.login-back-button:disabled{opacity:.5;cursor:not-allowed}.login-footer{margin-top:28px;display:flex;align-items:center;justify-content:space-between;padding-top:16px;border-top:1px solid rgba(0,212,255,.08)}.login-footer-ver{font-size:10px;color:#00d4ff40;letter-spacing:1px}.login-footer-id{font-size:10px;color:#00d4ff33;letter-spacing:1px}.login-day-mode{background:#e8f4f8}.login-day-mode .login-bg{background-image:linear-gradient(rgba(0,140,200,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(0,140,200,.06) 1px,transparent 1px)}.login-day-mode .login-glow-1{background:radial-gradient(circle,rgba(0,140,200,.12) 0%,transparent 70%)}.login-day-mode .login-glow-2{background:radial-gradient(circle,rgba(0,80,180,.08) 0%,transparent 70%)}.login-day-mode .login-glow-3{background:radial-gradient(circle,rgba(0,180,120,.07) 0%,transparent 70%)}.login-day-mode .corner-deco.tl,.login-day-mode .corner-deco.tr,.login-day-mode .corner-deco.bl,.login-day-mode .corner-deco.br{border-color:#008cc84d}.login-day-mode .login-card{background:#e6f8ffeb;border-color:#008cc838;box-shadow:0 0 40px #008cc814,0 8px 40px #0000001a}.login-day-mode .login-card-topline{background:linear-gradient(90deg,transparent,rgba(0,140,200,.7),transparent)}.login-day-mode .login-title{color:#0a2a40}.login-day-mode .login-system-label{color:#0064a073}.login-day-mode .login-subtitle{color:#0064a059}.login-day-mode .login-icon-inner{color:#08c;background:linear-gradient(135deg,#008cc826,#0050b41a);border-color:#008cc84d}.login-day-mode .login-icon-ring{border-color:#008cc859}.login-day-mode .login-icon-ring:before{background:#08c;box-shadow:0 0 8px #08c}.login-day-mode .status-dot{background:#00b860;box-shadow:0 0 8px #00b860}.login-day-mode .status-text{color:#0064a059}.login-day-mode .login-status-bar{background:#008cc808;border-color:#008cc81a}.login-day-mode .form-label{color:#0064a080}.login-day-mode .input-icon{color:#0064a066}.login-day-mode .input-wrapper:focus-within .input-icon{color:#08c}.login-day-mode .input-corner.tl,.login-day-mode .input-corner.br{border-color:#008cc899}.login-day-mode .input-wrapper input{color:#0a2a40!important;background:#d2f0ffb3!important;border-color:#008cc840!important;text-shadow:none}.login-day-mode .input-wrapper input:-webkit-autofill,.login-day-mode .input-wrapper input:-webkit-autofill:hover,.login-day-mode .input-wrapper input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 50px rgba(210,240,255,.95) inset!important;-webkit-text-fill-color:#0a2a40!important}.login-day-mode .input-wrapper input::placeholder{color:#0064a040}.login-day-mode .input-wrapper input:focus{border-color:#008cc880!important;box-shadow:0 0 0 1px #008cc81f!important}.login-day-mode .password-toggle{color:#0064a066}.login-day-mode .password-toggle:hover{color:#08c}.login-day-mode .login-button{color:#06a;border-color:#008cc873;background:linear-gradient(135deg,#008cc81f,#0050b414)}.login-day-mode .login-button:hover:not(:disabled){border-color:#008cc8b3;box-shadow:0 0 20px #008cc826;color:#048}.login-day-mode .login-button-shine{background:linear-gradient(90deg,transparent,rgba(0,140,200,.1),transparent)}.login-day-mode .login-helper-card{border-color:#008cc824;background:#008cc80a}.login-day-mode .login-helper-title{color:#08c}.login-day-mode .login-helper-text{color:#0064a073}.login-day-mode .login-qr-block{border-color:#008cc824;background:#ffffff73}.login-day-mode .login-manual-key-label{color:#0064a080}.login-day-mode .login-manual-key code{background:#008cc80f;border-color:#008cc824;color:#0a2a40}.login-day-mode .login-back-button{color:#0064a08c;border-color:#008cc838;background:#008cc80a}.login-day-mode .login-back-button:hover:not(:disabled){color:#06a;border-color:#008cc873;background:#008cc814}.login-day-mode .login-footer{border-color:#008cc81a}.login-day-mode .login-footer-ver,.login-day-mode .login-footer-id{color:#0064a04d}.login-day-mode .login-error{background:#dc26260f;border-color:#dc26264d;color:#dc2626}.login-day-mode .particle{background:#008cc880}@media(max-width:520px){.login-card{padding:36px 24px 28px}.login-title{font-size:16px}.login-icon-wrap{width:60px;height:60px}.input-wrapper input{height:46px!important;font-size:13px}.login-button{height:46px;font-size:12px}.login-qr-block{padding:16px 12px}.login-manual-key code{font-size:12px}}@media(min-width:1024px){.login-container{max-width:480px}}.admin-page{height:100vh;background:#020c1b;overflow:hidden;position:relative;isolation:isolate}.admin-bg,.admin-scanline,.admin-glow-1,.admin-glow-2,.admin-glow-3,.admin-particles,.admin-corner-deco{position:absolute;pointer-events:none}.admin-bg{inset:0;background-image:linear-gradient(rgba(0,212,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,212,255,.04) 1px,transparent 1px);background-size:40px 40px;animation:adminBgShift 20s linear infinite;z-index:0}.admin-scanline{inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.05) 2px,rgba(0,0,0,.05) 4px);z-index:1}.admin-glow-1,.admin-glow-2,.admin-glow-3{border-radius:50%;z-index:0;filter:blur(4px)}.admin-glow-1{width:620px;height:620px;top:-220px;left:-120px;background:radial-gradient(circle,rgba(0,212,255,.12) 0%,transparent 70%);animation:adminGlowFloat1 9s ease-in-out infinite}.admin-glow-2{width:520px;height:520px;right:-120px;bottom:-180px;background:radial-gradient(circle,rgba(99,0,255,.1) 0%,transparent 70%);animation:adminGlowFloat2 11s ease-in-out infinite}.admin-glow-3{width:340px;height:340px;top:46%;left:52%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(0,255,136,.07) 0%,transparent 70%);animation:adminGlowPulse 4.5s ease-in-out infinite}.admin-particles{inset:0;z-index:0}.admin-particle{position:absolute;bottom:-16px;width:2px;height:2px;background:#00d4ff73;border-radius:50%;box-shadow:0 0 8px #00d4ff2e;animation:adminParticleFly linear infinite}.admin-particle:nth-child(1){left:6%;animation-duration:12s;animation-delay:0s;width:3px;height:3px}.admin-particle:nth-child(2){left:12%;animation-duration:10s;animation-delay:-2s}.admin-particle:nth-child(3){left:18%;animation-duration:14s;animation-delay:-6s}.admin-particle:nth-child(4){left:26%;animation-duration:9s;animation-delay:-1s}.admin-particle:nth-child(5){left:33%;animation-duration:15s;animation-delay:-8s;background:#6300ff59}.admin-particle:nth-child(6){left:41%;animation-duration:11s;animation-delay:-4s}.admin-particle:nth-child(7){left:49%;animation-duration:8s;animation-delay:-9s}.admin-particle:nth-child(8){left:57%;animation-duration:13s;animation-delay:-3s}.admin-particle:nth-child(9){left:64%;animation-duration:16s;animation-delay:-10s;background:#00ff884d}.admin-particle:nth-child(10){left:70%;animation-duration:10s;animation-delay:-5s}.admin-particle:nth-child(11){left:76%;animation-duration:14s;animation-delay:-12s}.admin-particle:nth-child(12){left:82%;animation-duration:9s;animation-delay:-7s}.admin-particle:nth-child(13){left:87%;animation-duration:12s;animation-delay:-11s;background:#6300ff47}.admin-particle:nth-child(14){left:91%;animation-duration:15s;animation-delay:-6s}.admin-particle:nth-child(15){left:95%;animation-duration:11s;animation-delay:-13s}.admin-particle:nth-child(16){left:52%;animation-duration:7s;animation-delay:-14s;width:3px;height:3px}.admin-corner-deco{width:64px;height:64px;z-index:2}.admin-corner-deco.tl{top:16px;left:16px;border-top:1px solid rgba(0,212,255,.28);border-left:1px solid rgba(0,212,255,.28)}.admin-corner-deco.tr{top:16px;right:16px;border-top:1px solid rgba(0,212,255,.28);border-right:1px solid rgba(0,212,255,.28)}.admin-corner-deco.bl{bottom:16px;left:16px;border-bottom:1px solid rgba(0,212,255,.28);border-left:1px solid rgba(0,212,255,.28)}.admin-corner-deco.br{bottom:16px;right:16px;border-bottom:1px solid rgba(0,212,255,.28);border-right:1px solid rgba(0,212,255,.28)}@keyframes adminBgShift{0%{background-position:0 0}to{background-position:40px 40px}}@keyframes adminGlowFloat1{0%,to{transform:translate(0)}50%{transform:translate(60px,36px)}}@keyframes adminGlowFloat2{0%,to{transform:translate(0)}50%{transform:translate(-48px,-28px)}}@keyframes adminGlowPulse{0%,to{opacity:.45;transform:translate(-50%,-50%) scale(1)}50%{opacity:.9;transform:translate(-50%,-50%) scale(1.24)}}@keyframes adminParticleFly{0%{bottom:-16px;opacity:0;transform:translate(0)}10%,90%{opacity:1}to{bottom:110vh;opacity:0;transform:translate(24px)}}.admin-sidebar{width:260px;background:#0212269e;border-right:1px solid var(--border-primary);display:flex;flex-direction:column;transition:transform .3s ease,width .3s ease;position:fixed;left:0;top:0;bottom:0;z-index:300;overflow:hidden}.admin-sidebar.closed{transform:translate(-100%)}.sidebar-header{height:64px;padding:0 20px;border-bottom:1px solid var(--border-primary);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;position:relative;z-index:1}.sidebar-title{font-size:20px;font-weight:600;color:var(--text-primary);margin:0;letter-spacing:1px}.sidebar-toggle{display:none;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:8px;border-radius:8px;transition:all .3s ease}.sidebar-toggle:hover{background:var(--btn-bg-hover);color:var(--text-primary)}.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:relative;z-index:1}.nav-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border:none;background:none;color:var(--text-secondary);font-size:15px;border-radius:12px;cursor:pointer;transition:all .3s ease;width:100%;text-align:left}.nav-item:hover{background:var(--btn-bg-hover);color:var(--text-primary)}.nav-item.active{background:var(--accent-color);color:#fff;box-shadow:0 4px 12px var(--accent-shadow)}.sidebar-footer{padding:16px 12px;border-top:1px solid var(--border-primary);position:relative;z-index:1}.nav-item.logout{color:#ef4444}.nav-item.logout:hover{background:#ef44441a;color:#ef4444}.admin-main{position:absolute;inset:0 0 0 260px;display:flex;flex-direction:column;overflow:hidden;transition:left .3s ease;--admin-header-height: 64px;z-index:3}.admin-sidebar.closed+.admin-main{left:0}.admin-header{height:64px;background:#0212269e;border-bottom:1px solid rgba(0,212,255,.12);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 8px 24px #0000002e,inset 0 1px #ffffff0a;display:flex;align-items:center;justify-content:space-between;padding:0 24px;gap:16px;position:fixed;top:0;left:260px;right:0;z-index:500;overflow:visible}.admin-header:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.55),transparent);pointer-events:none}.admin-header:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,212,255,.05),transparent 48%,rgba(99,0,255,.04));pointer-events:none}.admin-sidebar.closed+.admin-main .admin-header{left:0}.mobile-menu-btn{display:none;background:none;border:none;color:var(--text-primary);cursor:pointer;padding:8px;border-radius:8px}.header-actions{display:flex;align-items:center;gap:16px;margin-left:auto;position:relative;z-index:1}.mode-toggle-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--btn-bg);border:1px solid var(--border-primary);border-radius:10px;color:var(--text-primary);cursor:pointer;transition:all .3s ease}.mode-toggle-btn:hover{background:var(--btn-bg-hover);border-color:var(--accent-color)}.user-badge-wrapper{position:relative;z-index:2}.user-badge{padding:8px 16px;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:20px;font-size:14px;color:var(--text-primary);cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s ease}.user-badge:hover{border-color:var(--accent-color)}.user-badge-chevron{transition:transform .2s ease}.user-badge-chevron.open{transform:rotate(180deg)}.user-dropdown-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:160px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;box-shadow:var(--shadow-md);padding:6px;z-index:600;animation:dropdownFadeIn .15s ease}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.user-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;border:none;background:none;color:var(--text-primary);font-size:14px;border-radius:8px;cursor:pointer;transition:background .2s ease}.user-dropdown-item:hover{background:var(--btn-bg-hover)}.user-dropdown-item.logout{color:#e74c3c}.user-dropdown-divider{height:1px;background:var(--border-primary);margin:4px 8px}.admin-content{flex:1;padding:24px;padding-top:calc(var(--admin-header-height) + 24px);overflow-y:auto;overflow-x:hidden;min-height:0;scroll-padding-top:calc(var(--admin-header-height) + 24px);position:relative;z-index:1}.mobile-menu-toggle{display:none;width:36px;height:36px;flex-shrink:0;border:1px solid var(--border-primary);border-radius:10px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:all .2s ease;padding:0}.mobile-menu-toggle:hover{background:var(--btn-bg-hover);border-color:var(--accent-color);color:var(--accent-color)}.admin-section{max-width:none;width:100%}.admin-section h2{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:600;color:var(--text-primary);margin:0 0 24px}.admin-section .section-title-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;color:var(--accent-color)}.section-subtitle{font-size:18px;font-weight:500;color:var(--text-primary);margin:10px 0 20px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-bottom:24px}.dashboard-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--bg-secondary);border:1px solid;border-image:linear-gradient(135deg,#00d4ff66,#00d4ff14,#00d4ff4d) 1;border-radius:16px;transition:all .3s ease;box-shadow:0 0 12px #00d4ff0d}.dashboard-card:hover{box-shadow:0 0 20px #00d4ff1f,var(--shadow-md);transform:translateY(-2px)}.card-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--accent-shadow);border-radius:12px;color:var(--accent-color)}.card-content h3{font-size:14px;font-weight:500;color:var(--text-secondary);margin:0 0 4px}.card-content p{font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.status-online{color:#22c55e!important}.status-offline{color:#ef4444!important}.status-running{color:#f59e0b!important}.modules-list{display:flex;flex-direction:column;gap:8px}.module-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;color:var(--text-primary);font-size:14px;transition:all .3s ease}.module-item.enabled{border-left:3px solid #22c55e}.module-item.disabled{border-left:3px solid var(--text-tertiary);opacity:.8}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:#22c55e;box-shadow:0 0 6px #22c55e80}.status-dot.offline{background:var(--text-tertiary)}.status-dot.running{background:#f59e0b;box-shadow:0 0 6px #f59e0b80;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.module-name{font-weight:500;min-width:100px}.module-desc{flex:1;color:var(--text-secondary);font-size:13px}.module-status{font-size:12px;font-weight:500;padding:4px 10px;border-radius:12px;background:var(--bg-card)}.empty-message{color:var(--text-tertiary);font-style:italic}.module-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.module-card{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:16px;padding:20px;transition:all .3s ease}.module-card.enabled{border-color:#22c55e4d}.module-card.disabled{opacity:.7}.module-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.module-card-header h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.module-card p{font-size:14px;color:var(--text-secondary);margin:0 0 16px}.scheduler-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.scheduler-card{background:var(--bg-secondary);border:1px solid rgba(0,212,255,.2);border-radius:16px;padding:15px;transition:all .3s ease;box-shadow:0 0 10px #00d4ff0f,inset 0 0 0 1px #00d4ff0a;position:relative;overflow:hidden}.scheduler-card:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.4),transparent);pointer-events:none}.scheduler-card.enabled{border-color:#22c55e4d}.scheduler-card.disabled{opacity:.8}.scheduler-card.running{border-color:#f59e0b80;box-shadow:0 0 12px #f59e0b26}.scheduler-card.weather-card{border-left:3px solid var(--accent-color)}.scheduler-card.weather-card .scheduler-title{color:#3b82f6}.scheduler-card.weather-card.enabled{border-left-color:#3b82f6}.scheduler-card.weather-card.disabled{border-left-color:var(--text-tertiary)}.scheduler-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.scheduler-title{display:flex;align-items:center;gap:10px;color:var(--accent-color)}.scheduler-title h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.scheduler-info{margin-bottom:16px}.scheduler-info p{font-size:14px;color:var(--text-secondary);margin:4px 0}.interval-control{margin-bottom:16px;padding:12px;background:var(--bg-card);border-radius:10px}.interval-control label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:8px}.interval-input-group{display:flex;gap:8px}.interval-input-group input{flex:1;height:36px;padding:0 12px;font-size:14px;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;outline:none}.interval-input-group input:focus{border-color:var(--accent-color)}.cron-control{margin-bottom:16px;padding:12px;background:var(--bg-card);border-radius:10px}.cron-control label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:10px}.time-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.time-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:20px;font-size:13px;color:var(--text-primary)}.time-tag svg:first-child{color:var(--accent-color)}.time-remove-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;background:transparent;border:none;border-radius:50%;color:var(--text-tertiary);cursor:pointer;transition:all .2s ease}.time-remove-btn:hover{background:#ef44441a;color:#ef4444}.time-add-group{display:flex;gap:8px}.time-input{flex:1;height:36px;padding:0 12px;font-size:14px;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;outline:none}.time-input:focus{border-color:var(--accent-color)}.scheduler-actions{display:flex;gap:10px}.refresh-bar{margin-bottom:20px}.section-desc{font-size:14px;color:var(--text-secondary);margin-bottom:24px}.sidebar-overlay{display:none}@media(max-width:768px){.admin-sidebar{width:75vw;max-width:280px;transform:translate(-100%);z-index:300}.admin-sidebar.open{transform:translate(0)}.sidebar-toggle{display:flex}.admin-main{margin-left:0;left:0}.admin-header{left:0!important;z-index:200}.admin-header .header-actions{margin-left:auto}.admin-content{padding:16px;padding-top:calc(var(--admin-header-height) + 16px)}.mobile-menu-toggle,.admin-page.sidebar-open .mobile-menu-toggle{display:inline-flex;align-items:center;justify-content:center}.sidebar-overlay{display:block;position:fixed;inset:0;background:#00000080;z-index:99}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:600px){.admin-header{height:auto;min-height:64px;padding:12px;gap:10px;justify-content:space-between}.admin-content{padding:92px 12px 12px}.mobile-menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px}.mode-toggle-btn{width:36px;height:36px}.admin-content{padding:12px;padding-top:calc(var(--admin-header-height) + 12px)}.admin-section h2{font-size:18px}.section-desc{font-size:13px;margin-bottom:16px}.devices-list-panel{max-height:60vh}.admin-device-list{min-width:unset;width:100%}}@media(max-width:600px){.settings-group{padding:16px}.module-item{flex-wrap:wrap;gap:8px}.module-name{min-width:auto}.module-desc{width:100%;order:3;padding-left:20px}.module-status{margin-left:auto}.user-info-card{flex-direction:column;text-align:center}}.toast{position:fixed;top:24px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:10px;font-size:14px;font-weight:500;z-index:9999;animation:toast-in .3s ease;box-shadow:0 4px 20px #00000026;display:flex;align-items:center;gap:8px}.toast-success{background:#22c55e;color:#fff}.toast-error{background:#ef4444;color:#fff}.toast-info{background:var(--accent-color);color:#fff}.toast-text{white-space:nowrap}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.rooms-section{max-width:none;width:100%}.rooms-toolbar{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.import-btn{cursor:pointer}.rooms-section .btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-primary)}.rooms-section .btn-secondary:hover,.rooms-section .btn-secondary:focus{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-primary)}.night-mode .rooms-section .btn-secondary{background:#ffffff14;border-color:#ffffff26}.night-mode .rooms-section .btn-secondary:hover,.night-mode .rooms-section .btn-secondary:focus{background:#ffffff1f;border-color:#fff3}.rooms-content{display:grid;grid-template-columns:1fr 320px;gap:24px}.rooms-canvas-container{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:20px;margin-bottom:20px}.canvas-wrapper{position:relative;background:#1a1a2e;border-radius:8px;overflow:hidden;margin-bottom:16px}.canvas-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-secondary);font-size:14px}.rooms-canvas{display:block;width:100%;cursor:crosshair;border-radius:8px}.bounds-info{padding:10px 14px;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:8px;font-size:13px;color:var(--text-secondary);margin-bottom:16px}.bounds-info code{color:var(--accent-color);font-family:monospace}.room-form{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden}.room-form h4{font-size:15px;font-weight:600;color:var(--text-primary);margin:0;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.room-form .form-vertical{padding:20px;background:var(--bg-secondary)}.room-form .form-actions{padding:0 20px 20px;background:var(--bg-secondary)}.form-vertical{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.form-vertical .form-row{margin-bottom:0}.form-vertical .form-row input[type=text],.form-vertical .form-row select{height:40px}.rooms-list-container{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:20px;max-height:calc(100vh - 200px);overflow-y:auto;margin-bottom:20px}.rooms-list{display:flex;flex-direction:column;gap:8px}.room-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:10px;transition:all .2s ease}.room-item:hover{border-color:var(--accent-color)}.room-item.editing{border-color:#f59e0b;background:#f59e0b0d}.room-item-info{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.room-id{font-family:monospace;font-size:13px;color:var(--accent-color);background:var(--bg-tertiary);padding:2px 8px;border-radius:4px;flex-shrink:0}.room-name{font-size:14px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-tag{font-size:11px;color:#3b82f6;background:#3b82f61a;padding:2px 6px;border-radius:4px;flex-shrink:0}.room-item-actions{display:flex;gap:6px}@media(max-width:900px){.rooms-content{grid-template-columns:1fr}.rooms-list-container{max-height:400px}}@media(max-width:600px){.form-grid{grid-template-columns:1fr}.rooms-toolbar{flex-direction:column}.rooms-toolbar .btn{width:100%;justify-content:center}}.nav-group{display:flex;flex-direction:column}.nav-item.has-children{justify-content:flex-start}.nav-item.has-children .chevron{margin-left:auto;transition:transform .2s ease}.nav-item.expanded .chevron{transform:rotate(90deg)}.nav-item.active-parent{background:var(--btn-bg-hover);color:var(--accent-color)}.nav-children{display:flex;flex-direction:column;gap:2px;padding-left:12px;margin-top:4px;border-left:2px solid var(--border-primary);margin-left:20px}.nav-item.child-item{padding:10px 14px;font-size:14px}.nav-item.child-item.active{background:var(--accent-color);color:#fff}.rooms-horizontal-layout{display:flex;gap:24px;align-items:flex-start}.rooms-canvas-panel{flex:1;min-width:0;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden;display:flex;flex-direction:column}.canvas-panel-header{padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.canvas-panel-header h4{font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.canvas-panel-header .canvas-hint{font-size:13px;color:var(--text-tertiary);margin:0}.canvas-panel-content{padding:20px;background:var(--bg-secondary)}.rooms-form-panel{width:360px;flex-shrink:0;display:flex;flex-direction:column;gap:16px}.rooms-list-inline{background:var(--bg-secondary);border:1px solid rgba(0,212,255,.2);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden;display:flex;flex-direction:column;max-height:400px;box-shadow:0 0 10px #00d4ff0d;position:relative}.rooms-list-inline:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.35),transparent);pointer-events:none;z-index:1}.rooms-list-inline .rooms-list-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary);flex-shrink:0;gap:12px}.rooms-list-inline .rooms-list-header h4{font-size:14px;font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap}.rooms-list-inline .rooms-list{padding:5px;background:var(--bg-secondary);overflow-y:auto;flex:1;min-height:0}.devices-section{max-width:none;width:100%}.devices-toolbar{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.devices-layout{display:flex;gap:24px;align-items:flex-start}.devices-list-header{position:sticky;top:0;z-index:2}.devices-list-header h4{font-size:14px;font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap}.devices-by-room{display:flex;flex-direction:column;gap:16px;width:100%;padding:5px;box-sizing:border-box}@media(max-width:768px){.devices-by-room{padding:5px}.admin-device-list{overflow:hidden;width:100%;max-width:100%}.admin-device-list-header,.admin-device-row{min-width:unset;width:100%;box-sizing:border-box}}.device-form{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden}.device-form h4{font-size:15px;font-weight:600;color:var(--text-primary);margin:0;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.device-form .form-vertical{padding:20px;background:var(--bg-secondary)}.device-form .form-actions{padding:0 20px 20px;background:var(--bg-secondary)}.device-form select{width:100%;height:44px;padding:0 12px;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:8px;cursor:pointer;transition:all .2s ease}.device-form select:focus{outline:none;border-color:var(--accent-color)}.devices-form-panel{width:380px;flex-shrink:0}.room-devices-group{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:10px;width:100%;overflow:hidden;box-sizing:border-box}.room-devices-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-primary);border-bottom:1px solid var(--border-primary);border-radius:10px 10px 0 0;cursor:pointer;transition:background .2s ease}.room-devices-header:hover{background:var(--btn-bg-hover)}.room-header-left{display:flex;align-items:center;gap:10px}.room-header-right{min-width:0;display:flex;align-items:center;gap:10px}.room-devices-header .room-name{font-weight:600;color:var(--text-primary);font-size:14px}.room-devices-header .device-count{font-size:12px;color:var(--text-tertiary);background:var(--bg-card);padding:2px 8px;border-radius:10px}.room-sensor-strip{min-width:0;display:flex;align-items:center;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:2px}.room-sensor-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;max-width:180px;padding:4px 8px;border-radius:999px;background:var(--bg-card);border:1px solid var(--border-primary)}.room-sensor-chip-name{font-size:11px;color:var(--text-secondary);white-space:nowrap}.room-sensor-chip-value{font-size:12px;color:var(--text-primary);font-weight:600;white-space:nowrap}.collapse-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.collapse-btn:hover{background:var(--bg-card);color:var(--text-primary)}@media(max-width:768px){.room-devices-header{gap:10px}.room-header-left,.room-header-right{min-width:0}.room-sensor-chip{max-width:140px}}.room-devices-group .empty-hint{padding:16px;text-align:center;color:var(--text-tertiary);font-size:13px;margin:0}.admin-device-list{display:flex;flex-direction:column;width:100%;overflow:hidden;box-sizing:border-box}.admin-device-list-header{display:flex;align-items:center;padding:8px 16px;background:var(--bg-tertiary);font-size:12px;font-weight:500;color:var(--text-tertiary);border-bottom:1px solid var(--border-primary);width:100%;box-sizing:border-box}.admin-device-row{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-primary);transition:background .2s ease;font-size:13px;width:100%;box-sizing:border-box}.admin-device-row:last-child{border-bottom:none}.admin-device-row:hover{background:var(--bg-primary)}.admin-device-row.editing{background:#3b82f614;border-left:3px solid var(--accent-color)}.col-id{flex:0 0 22%;color:var(--accent-color);font-family:monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.col-name{flex:0 0 22%;color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.col-entity{flex:1;min-width:0;color:var(--text-tertiary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.col-actions{width:64px;flex-shrink:0;display:flex;justify-content:flex-end;gap:4px}.col-actions .btn-icon{width:28px;height:28px;border:none;border-radius:4px;background:var(--bg-hover);color:var(--text-secondary)}.col-actions .btn-icon:hover{background:var(--accent-color);color:#fff;border-color:transparent}.col-actions .btn-icon.danger:hover{background:#ef4444;color:#fff}@media(max-width:768px){.hide-mobile{display:none!important}.admin-device-list-header,.admin-device-row{padding:10px 12px}.col-id,.col-name{flex:0 0 32%}.col-entity{display:none}.col-actions{flex:0 0 36%;width:auto;justify-content:center;gap:8px}.admin-device-list{min-width:unset;width:100%}}@media(max-width:1200px){.rooms-horizontal-layout{flex-direction:column}.rooms-form-panel{width:100%}.devices-layout{flex-direction:column}.devices-form-panel{width:100%}}@media(max-width:768px){.nav-children{padding-left:8px;margin-left:16px}.form-grid{grid-template-columns:1fr}.form-grid .form-row.full-width{grid-column:1}}.dates-section{max-width:none;width:100%}.dates-toolbar{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.dates-layout{display:flex;gap:24px;align-items:flex-start}.dates-form-panel{width:380px;flex-shrink:0}.date-form{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;padding:20px}.date-form h4{font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 16px}.date-form select{width:100%;height:44px;padding:0 12px;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:8px;cursor:pointer;transition:all .2s ease}.date-form select:focus{outline:none;border-color:var(--accent-color)}.calendar-type-toggle{display:flex;gap:8px}.calendar-type-toggle .toggle-option{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 16px;font-size:14px;color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border-primary);border-radius:8px;cursor:pointer;transition:all .2s ease}.calendar-type-toggle .toggle-option:hover{border-color:var(--accent-color);color:var(--text-primary)}.calendar-type-toggle .toggle-option.active{background:var(--accent-color);border-color:var(--accent-color);color:#fff}.date-input-group{display:flex;gap:12px}.date-input-group select{flex:1;height:40px}.dates-list{display:flex;flex-direction:column}.date-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border-primary);transition:background .2s ease}.date-item:last-child{border-bottom:none}.date-item:hover{background:var(--bg-primary)}.date-item.editing{background:#3b82f614;border-left:3px solid var(--accent-color)}.date-item-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;flex-shrink:0}.date-item-icon.birthday{background:#f59e0b26;color:#f59e0b}.date-item-icon.anniversary{background:#ef44441f;color:#ef4444}.date-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.date-name{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.date-value{font-size:12px;color:var(--text-secondary)}.date-item-actions{display:flex;gap:6px;flex-shrink:0}.date-item-actions .btn-icon{width:30px;height:30px}@media(max-width:1200px){.dates-layout{flex-direction:column}.dates-form-panel{width:100%}}@media(max-width:768px){.calendar-type-toggle{flex-direction:column}}.blackout-mode-toggle{display:flex;gap:4px;background:var(--bg-tertiary);border-radius:8px;padding:3px;margin-left:12px;flex-shrink:0}.blackout-mode-btn{padding:6px 14px;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;background:transparent;color:var(--text-tertiary);white-space:nowrap;flex-shrink:0}.blackout-mode-btn:hover{color:var(--text-secondary)}.blackout-mode-btn.active{background:var(--accent-color);color:#fff;box-shadow:0 2px 6px #3b82f64d}.module-extra{display:flex;flex-direction:column;gap:12px}.status-badge.remote{background:#3b82f61a;color:#3b82f6}.remote-config{background:var(--bg-tertiary);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:10px}.remote-config .config-row{display:flex;align-items:center;gap:10px}.remote-config label{font-size:13px;color:var(--text-tertiary);white-space:nowrap;min-width:70px}.remote-config code{font-size:12px;background:var(--bg-primary);padding:6px 10px;border-radius:6px;color:#22c55e;flex:1;overflow:hidden;text-overflow:ellipsis}.remote-config input{flex:1;padding:8px 12px;border:1px solid var(--border-primary);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:13px;transition:border-color .2s ease}.remote-config input:focus{outline:none;border-color:var(--accent-color)}.remote-config input::placeholder{color:var(--text-tertiary)}.module-list{display:flex;flex-direction:column;gap:16px}.module-list-item{background:var(--bg-secondary);border:1px solid var(--accent-color);border-radius:12px;transition:all .3s ease}.module-list-item.enabled{border-color:#22c55e4d}.module-list-item.disabled{opacity:.8}.module-list-item.remote-mode{border-color:#3b82f64d}.module-list-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--bg-tertiary);border-radius:12px 12px 0 0;overflow:hidden}.module-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;overflow:hidden}.module-info h3{font-size:15px;font-weight:600;color:var(--text-primary);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.module-info .module-desc{font-size:13px;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.module-config{padding:16px 20px;display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--border-primary)}.config-field{display:flex;flex-direction:column;gap:6px}.config-field label{font-size:13px;font-weight:500;color:var(--text-secondary)}.config-field .key-status{color:#22c55e;font-weight:400}.config-field input,.config-field textarea{padding:10px 14px;border:1px solid var(--border-primary);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:14px;transition:border-color .2s ease}.config-field input:focus,.config-field textarea:focus{outline:none;border-color:var(--accent-color)}.config-field input::placeholder,.config-field textarea::placeholder{color:var(--text-tertiary)}.config-field textarea{resize:vertical;min-height:60px;font-family:monospace;font-size:12px}.config-field code{padding:10px 14px;background:var(--bg-tertiary);border-radius:8px;font-size:13px;color:#22c55e;font-family:monospace}.config-actions{display:flex;justify-content:flex-end;padding-top:8px}.llm-tuning-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border-primary);border-radius:8px;background:var(--bg-primary)}.llm-tuning-header label{margin-bottom:2px}.llm-tuning-header span{display:block;font-size:12px;color:var(--text-tertiary)}.llm-tuning-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.llm-slider-field{padding:10px 12px;border:1px solid var(--border-primary);border-radius:8px;background:var(--bg-primary)}.llm-slider-label{display:flex;align-items:center;justify-content:space-between;gap:12px}.llm-slider-label span{min-width:44px;padding:2px 8px;border-radius:999px;background:var(--bg-tertiary);color:var(--text-secondary);font-size:12px;text-align:center}.config-field.llm-slider-field input[type=range]{width:100%;padding:0;border:0;accent-color:var(--accent-color);background:transparent}@media(max-width:768px){.llm-tuning-grid{grid-template-columns:1fr}}.btn-small{padding:8px 16px!important;font-size:13px!important}.btn-small svg{width:14px;height:14px}.wstest-section{max-width:none;width:100%}.wstest-toolbar{display:flex;gap:12px;margin-bottom:24px}.wstest-status-card,.wstest-form-card,.wstest-help-card{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;margin-bottom:20px;overflow:hidden}.wstest-status-card .status-header,.wstest-form-card .form-header{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.wstest-status-card .status-header h3,.wstest-form-card .form-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}.status-content,.form-content{padding:20px}.status-item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border-secondary)}.status-item:last-child{border-bottom:none}.status-label{color:var(--text-secondary);font-size:14px}.status-value{color:var(--text-primary);font-weight:600;font-size:14px}.status-value.targets{font-family:monospace;color:#22c55e;font-weight:400;font-size:13px}.wstest-form-card .form-row{margin-bottom:16px}.wstest-form-card .form-row:last-child{margin-bottom:0}.wstest-form-card label{display:block;margin-bottom:8px;font-size:14px;color:var(--text-secondary)}.wstest-form-card select,.wstest-form-card textarea{width:100%;padding:10px 14px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:8px;color:var(--text-primary);font-size:14px}.wstest-form-card select:focus,.wstest-form-card textarea:focus{outline:none;border-color:var(--accent-primary)}.wstest-form-card textarea{font-family:monospace;resize:vertical}.wstest-form-card .form-actions{display:flex;justify-content:flex-end;padding-top:8px}.wstest-result{margin-top:16px;padding:12px 16px;border-radius:8px;font-size:14px}.wstest-result.success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:#22c55e}.wstest-result.error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.wstest-help-card{padding:20px}.wstest-help-card h4{margin:0 0 12px;font-size:15px;font-weight:600;color:var(--text-primary)}.wstest-help-card ul{margin:0;padding-left:20px}.wstest-help-card li{margin-bottom:8px;font-size:13px;color:var(--text-secondary)}.wstest-help-card li strong{color:var(--text-primary);font-family:monospace}.wstest-help-card code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:#22c55e}.wstest-help-card .help-note{margin-top:16px;margin-bottom:0;padding:12px;background:var(--bg-tertiary);border-radius:8px;font-size:13px;color:var(--text-secondary)}.input-with-icon{display:flex;align-items:center;gap:8px}.input-with-icon input{flex:1}.input-with-icon .icon-btn{padding:8px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.input-with-icon .icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.family-section{max-width:none;width:100%}.config-panel{background:var(--bg-secondary);border:1px solid rgba(0,212,255,.2);border-radius:8px!important;margin-bottom:24px;box-shadow:0 0 10px #00d4ff0d;position:relative;overflow:hidden}.config-panel:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.35),transparent);pointer-events:none}.config-panel h3{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 16px}.section-actions{margin-bottom:24px}.avatar-upload-admin{display:flex;align-items:center;gap:16px}.avatar-preview-admin{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--border-primary)}.upload-btn-admin{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:10px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .2s}.upload-btn-admin:hover{background:var(--bg-hover);border-color:var(--accent-color);color:var(--text-primary)}.member-name-cell{font-weight:600;color:var(--text-primary)}.time-cell{font-size:13px;color:var(--text-tertiary)}.status-badge.online{background:#d1fae5;color:#065f46;border-color:#10b981}.status-badge.offline{background:#f3f4f6;color:#6b7280;border-color:#d1d5db}.rooms-section .form-actions .btn,.rooms-section .form-actions .btn-primary{padding:12px 24px;min-height:44px;font-size:14px;background:var(--accent-color);color:#fff;border:1px solid var(--accent-color);border-radius:6px;font-weight:500}.rooms-section .form-actions .btn:hover,.rooms-section .form-actions .btn:focus,.rooms-section .form-actions .btn-primary:hover,.rooms-section .form-actions .btn-primary:focus{background:var(--accent-color);color:#fff;border-color:var(--accent-color);transform:none;box-shadow:none}.rooms-section .form-actions .btn:disabled{opacity:.6;cursor:not-allowed}.settings-group .form-actions .btn,.settings-group .form-actions .btn-primary{padding:12px 24px!important;min-height:44px!important;font-size:14px!important;border-radius:6px!important;font-weight:500!important}.settings-group .form-actions .btn:hover,.settings-group .form-actions .btn:focus,.settings-group .form-actions .btn-primary:hover,.settings-group .form-actions .btn-primary:focus{transform:none!important}.settings-group .form-actions .btn:disabled{opacity:.6;cursor:not-allowed}.form-vertical .form-actions{margin-top:16px}.admin-page{--bg-primary: #020c1b;--bg-secondary: rgba(2, 18, 38, .5);--bg-tertiary: rgba(0, 212, 255, .04);--bg-card: rgba(2, 18, 38, .5);--bg-hover: rgba(0, 212, 255, .06);--btn-bg: rgba(0, 212, 255, .08);--btn-bg-hover: rgba(0, 212, 255, .14);--text-primary: #d8f0ff;--text-secondary: rgba(0, 212, 255, .55);--text-tertiary: rgba(0, 212, 255, .3);--text-disabled: rgba(0, 212, 255, .2);--btn-text: #d8f0ff;--btn-text-secondary: rgba(0,212,255,.55);--border-primary: rgba(0, 212, 255, .15);--border-secondary: rgba(0, 212, 255, .08);--border-accent: rgba(0, 212, 255, .4);--btn-border: rgba(0, 212, 255, .25);--accent-color: #00d4ff;--accent-hover: #00a8cc;--accent-shadow: rgba(0, 212, 255, .25);--primary-color: #00d4ff;--success-color: #00ff88;--warning-color: #f59e0b;--error-color: #ff6b6b;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .4);--shadow-md: 0 4px 16px rgba(0, 0, 0, .5);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .7)}.admin-page .section-title,.admin-page .page-header h1{font-size:15px;font-weight:700;color:var(--text-primary);letter-spacing:3px;text-transform:uppercase;margin-bottom:24px;display:flex;align-items:center;gap:10px}.admin-page .page-header p{color:var(--text-secondary);font-size:12px;letter-spacing:1px}.admin-page .dashboard-card,.admin-page .config-panel,.admin-page .dates-group,.admin-page .module-list-item,.admin-page .scheduler-card,.admin-page .password-form-container,.admin-page .users-table-wrapper{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:3px;position:relative;overflow:hidden}.admin-page .dashboard-card:before,.admin-page .config-panel:before,.admin-page .module-list-item:before,.admin-page .scheduler-card:before,.admin-page .rooms-list-inline:before,.admin-page .devices-list-panel:before,.admin-page .dates-group:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.4),transparent);pointer-events:none;z-index:1}.admin-page .dashboard-card:hover{border-color:#00d4ff4d;box-shadow:0 0 16px #00d4ff0f}.admin-page .config-panel,.admin-page .users-table-wrapper,.admin-page .devices-list-panel{background:var(--bg-secondary);border:1px solid rgba(0,212,255,.2);border-radius:8px;box-shadow:0 0 10px #00d4ff0d;position:relative;overflow:hidden}.admin-page .config-panel:before,.admin-page .users-table-wrapper:before,.admin-page .devices-list-panel:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(0,212,255,.35),transparent);pointer-events:none;z-index:1}.admin-page .devices-list-panel{flex:1;min-width:0;margin-bottom:20px;display:flex;flex-direction:column;max-height:700px;overflow-y:auto}.admin-page .devices-list-panel h4{margin:0;font-size:14px;color:var(--text-primary);white-space:nowrap}.admin-page .devices-list-panel .empty-message{padding:40px 20px;text-align:center;color:var(--text-tertiary)}.admin-page .dates-list-panel{flex:1;min-width:0;display:flex;flex-direction:column;gap:20px}.admin-page .dates-group-header h4{margin:0;font-size:14px;font-weight:600;color:var(--text-primary);white-space:nowrap}.admin-page .dates-group .empty-hint{padding:24px 16px;font-size:13px;margin:0}.admin-page .card-header,.admin-page .sidebar-header,.admin-page .module-list-header,.admin-page .scheduler-header,.admin-page .dates-group-header,.admin-page .status-header,.admin-page .form-header,.admin-page .rooms-list-header,.admin-page .devices-list-header{background:var(--bg-tertiary);border-bottom:1px solid var(--border-primary);color:var(--text-primary)}.admin-page .card-header{display:flex;align-items:center;justify-content:space-between;padding:12px;gap:12px;flex-wrap:nowrap;background:#021226}.admin-page input[type=text],.admin-page input[type=password],.admin-page input[type=number],.admin-page input[type=time],.admin-page input[type=date],.admin-page input[type=email],.admin-page select,.admin-page textarea{background:#00081499!important;border:1px solid var(--border-primary)!important;border-radius:3px!important;color:#fff!important;font-family:inherit;font-size:13px;transition:border-color .2s,box-shadow .2s}.admin-page input[type=text]:focus,.admin-page input[type=password]:focus,.admin-page input[type=number]:focus,.admin-page input[type=time]:focus,.admin-page input[type=date]:focus,.admin-page input[type=email]:focus,.admin-page select:focus,.admin-page textarea:focus{outline:none;border-color:#00d4ff80!important;box-shadow:0 0 0 2px #00d4ff14!important}.admin-page input[type=checkbox]{appearance:auto!important;background:unset!important;border:unset!important;box-shadow:unset!important;width:auto!important;height:auto!important;border-radius:unset!important;accent-color:rgba(0,212,255,.8)}.admin-page input::placeholder,.admin-page textarea::placeholder{color:#00d4ff33!important}.admin-page select option{background:#020c1b;color:#d8f0ff}.admin-page .btn{font-family:inherit;letter-spacing:1px;border-radius:3px;transition:all .2s ease;position:relative;overflow:hidden;box-shadow:0 0 10px #00d4ff14,inset 0 0 8px #00d4ff0f}.admin-page .btn:hover:not(:disabled){box-shadow:0 0 14px #00d4ff29,inset 0 0 12px #00d4ff1a}.admin-page .entity-id-input-wrapper{position:relative;width:100%}.admin-page .entity-id-input{width:100%}.admin-page .entity-selector-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:1000;display:flex;flex-direction:column;max-height:400px;overflow:hidden;background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:8px;box-shadow:0 4px 12px #00000026}.admin-page .entity-selector-menu.entity-selector-menu-top{top:auto;bottom:calc(100% + 4px);max-height:none}.admin-page .entity-search-box{padding:12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-primary)}.admin-page .entity-search-box input{width:100%;padding:8px 12px}.admin-page .entity-list{position:relative;max-height:340px;overflow-y:auto;--entity-area-sticky-top: 0px;--entity-area-header-height: 40px}.admin-page .entity-loading,.admin-page .entity-empty{padding:20px;font-size:14px;text-align:center;color:var(--text-secondary)}.admin-page .area-group{border-bottom:1px solid var(--border-primary)}.admin-page .area-group:last-child{border-bottom:none}.admin-page .area-group-header,.admin-page .area-device-header{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:10px 12px;color:var(--text-secondary);text-align:left;border:none;cursor:pointer}.admin-page .area-group-header{position:sticky;top:var(--entity-area-sticky-top);z-index:4;min-height:var(--entity-area-header-height);background:color-mix(in srgb,var(--bg-secondary) 88%,var(--accent-color) 12%);border-bottom:1px solid var(--border-primary)}.admin-page .area-group-body{background:var(--bg-primary)}.admin-page .area-device-group{border-bottom:1px solid color-mix(in srgb,var(--border-primary) 80%,transparent 20%)}.admin-page .area-device-group:last-child{border-bottom:none}.admin-page .area-device-header{position:sticky;top:calc(var(--entity-area-sticky-top) + var(--entity-area-header-height));z-index:3;min-height:38px;padding-left:28px;background:color-mix(in srgb,var(--bg-primary) 84%,var(--bg-secondary) 16%);border-bottom:1px solid color-mix(in srgb,var(--border-primary) 70%,transparent 30%)}.admin-page .tree-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 16px;color:var(--text-tertiary)}.admin-page .area-group-header .device-name,.admin-page .area-device-header .device-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-page .area-group-header .device-area,.admin-page .area-device-header .device-area{padding:2px 8px;border-radius:4px;background:var(--bg-tertiary);font-size:11px;color:var(--text-tertiary)}.admin-page .area-device-entities{background:var(--bg-primary)}.admin-page .entity-item{display:flex;flex-direction:column;padding:10px 12px 10px 48px;cursor:pointer;transition:background-color .15s ease}.admin-page .entity-item:hover{background:var(--bg-tertiary)}.admin-page .entity-item.selected{background:color-mix(in srgb,var(--accent-color) 12%,var(--bg-tertiary) 88%)}.admin-page .entity-item .entity-id{margin-bottom:2px;font-family:Consolas,Monaco,monospace;font-size:13px;color:var(--accent-color)}.admin-page .entity-item .entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--text-secondary)}.admin-page .btn-primary{background:linear-gradient(135deg,#00b4dc2e,#0064b41f)!important;color:#00d4ff!important;border:1px solid rgba(0,212,255,.4)!important}.admin-page .btn-primary:hover:not(:disabled){border-color:#00d4ffb3!important;box-shadow:0 0 16px #00d4ff26!important;color:#fff!important}.admin-page .btn-secondary{background:#00d4ff0d!important;color:#00d4ff99!important;border:1px solid rgba(0,212,255,.2)!important}.admin-page .btn-secondary:hover:not(:disabled){background:#00d4ff1a!important;border-color:#00d4ff66!important;color:#00d4ff!important}.admin-page .btn-success{background:#00c8641f!important;color:#0f8!important;border:1px solid rgba(0,255,136,.3)!important}.admin-page .btn-success:hover:not(:disabled){border-color:#00ff888c!important;box-shadow:0 0 12px #00ff881f!important}.admin-page .btn-warning{background:#f59e0b1a!important;color:#f59e0b!important;border:1px solid rgba(245,158,11,.3)!important}.admin-page .btn-warning:hover:not(:disabled){border-color:#f59e0b8c!important}.admin-page .btn-danger{background:#ff646414!important;color:#ff6b6b!important;border:1px solid rgba(255,107,107,.25)!important}.admin-page .btn-danger:hover:not(:disabled){border-color:#ff6b6b80!important}.admin-page .btn:disabled{opacity:.4!important;cursor:not-allowed!important}.admin-page table{width:100%;border-collapse:collapse}.admin-page table th{background:var(--bg-tertiary);color:var(--text-secondary);font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:12px 16px;border-bottom:1px solid var(--border-primary);text-align:left;font-weight:600}.admin-page table td{padding:12px 16px;border-bottom:1px solid var(--border-secondary);color:var(--text-primary);font-size:13px}.admin-page table tr:last-child td{border-bottom:none}.admin-page table tbody tr:hover{background:var(--bg-hover)}.admin-page .table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-page .data-table{width:100%;border-collapse:collapse;table-layout:fixed}.admin-page .data-table tbody tr{border-bottom:1px solid var(--border-primary)}.admin-page .data-table td{vertical-align:middle}.admin-page .status-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px 10px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:500}.admin-page .status-badge.active{background:#00ff8814;color:#0f8;border:1px solid rgba(0,255,136,.2)}.admin-page .status-badge.inactive{background:#64646414;color:#969696b3;border:1px solid rgba(100,100,100,.2)}.admin-page .status-badge.running{background:#f59e0b14;color:#f59e0b;border:1px solid rgba(245,158,11,.2)}.admin-page .status-badge.online{background:#00ff8814;color:#0f8;border:1px solid rgba(0,255,136,.2)}.admin-page .status-badge.offline{background:#64646414;color:#969696b3;border:1px solid rgba(100,100,100,.2)}.admin-page .btn-icon{padding:6px 6px 2px!important;background:#00d4ff0d;border:1px solid rgba(0,212,255,.15);color:#00d4ff66;border-radius:3px;transition:all .2s}.admin-page .btn-icon:hover{background:#00d4ff1a;color:#00d4ff;border-color:#00d4ff59}.admin-page .btn-icon.btn-edit{background:#00d4ff0f;color:var(--accent-color);border-color:#00d4ff47}.admin-page .btn-icon.btn-edit:hover{background:#00d4ff1f;color:#fff;border-color:#00d4ff80}.admin-page .btn-icon.danger,.admin-page .btn-icon.btn-danger,.admin-page .btn-icon.btn-icon-danger{background:#ff6b6b0f;color:#ff6b6bc2;border-color:#ff6b6b3d}.admin-page .btn-icon.danger:hover,.admin-page .btn-icon.btn-danger:hover,.admin-page .btn-icon.btn-icon-danger:hover{background:#ff6b6b1f;color:#ff6b6b;border-color:#ff6b6b66}.admin-page .btn-icon.btn-confirm,.admin-page .btn-icon.btn-icon-success{background:#00ff880f;color:#27ae60;border-color:#27ae603d}.admin-page .btn-icon.btn-confirm:hover,.admin-page .btn-icon.btn-icon-success:hover{background:#00ff881a;color:#0f8;border-color:#27ae6066}.admin-page .btn-icon.btn-icon-warning{background:#f59e0b14;color:#f39c12;border-color:#f59e0b3d}.admin-page .btn-icon.btn-icon-warning:hover{background:#f59e0b24;color:#f59e0b;border-color:#f59e0b66}.admin-page .empty-message,.admin-page .empty-hint{color:var(--text-tertiary);font-style:normal;letter-spacing:1px;font-size:12px;text-align:center;padding:40px 20px}.admin-page .toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border-secondary)}.admin-page .toggle-row:last-child{border-bottom:none}.admin-page .toggle-info{display:flex;flex-direction:column;gap:4px}.admin-page .toggle-label{font-size:14px;font-weight:500;color:var(--text-primary)}.admin-page .toggle-desc{font-size:12px;color:var(--text-tertiary)}.admin-page .config-section-title{margin:16px 0 12px;padding-top:16px;border-top:1px solid var(--border-secondary);font-size:13px;font-weight:600;color:var(--text-secondary)}.admin-page .config-actions{border-top-color:var(--border-secondary)}.admin-page .card-icon{background:linear-gradient(135deg,#00b4dc33,#0064b426);border:1px solid rgba(0,212,255,.25);color:#00d4ff}.admin-page .message.success{background:#00ff880f;border-color:#0f83;color:#0f8}.admin-page .message.error{background:#ff6b6b0f;border-color:#ff6b6b33;color:#ff6b6b}.admin-page .toggle-btn{background:none;border:none;cursor:pointer;padding:0;transition:all .3s ease}.admin-page .toggle-btn.on{color:#0f8}.admin-page .toggle-btn.off{color:#00d4ff33}.admin-page .toggle-btn:hover{color:#00d4ff}.admin-page .toggle-btn.enabled{background:#10b9811f;color:#10b981;border:1px solid rgba(16,185,129,.3);padding:4px 8px;border-radius:4px}.admin-page .toggle-btn.disabled{background:var(--bg-tertiary);color:var(--text-tertiary);border:1px solid var(--border-primary);padding:4px 8px;border-radius:4px}.admin-page .section-actions,.admin-page .devices-toolbar,.admin-page .dates-toolbar,.admin-page .users-toolbar,.admin-page .refresh-bar{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}.admin-page .action-buttons{display:flex;align-items:center;gap:8px;white-space:nowrap}.admin-page .card-header-title{display:flex;align-items:center;gap:8px;min-width:0}.admin-page .modal-overlay,.admin-modal-portal .modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.admin-page .modal-content,.admin-modal-portal .modal-content{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;max-width:500px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.admin-page .modal-content.modal-content-sm,.admin-modal-portal .modal-content.modal-content-sm{max-width:480px}.admin-page .modal-header,.admin-modal-portal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.admin-page .modal-header h3,.admin-modal-portal .modal-header h3{margin:0;font-size:16px;color:var(--text-primary)}.admin-page .modal-close,.admin-modal-portal .modal-close,.modal-overlay .modal-close{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all .2s;border-radius:4px}.admin-page .modal-close:hover,.admin-modal-portal .modal-close:hover,.modal-overlay .modal-close:hover{color:var(--text-primary);background:#ffffff1a}.admin-page .modal-body,.admin-modal-portal .modal-body{padding:20px;overflow-y:auto;flex:1}.admin-page .modal-footer,.admin-modal-portal .modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid var(--border-primary);background:var(--bg-tertiary)}.admin-modal-portal{--bg-secondary: rgba(2, 18, 38, .95);--bg-tertiary: rgba(0, 212, 255, .04);--border-primary: rgba(0, 212, 255, .15);--text-primary: #d8f0ff;--text-secondary: rgba(0, 212, 255, .55);--accent-color: #00d4ff}.admin-page .rooms-list-header,.admin-page .devices-list-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:12px}.admin-page .rooms-list-header h4,.admin-page .devices-list-header h4{margin:0;font-size:14px;color:var(--text-primary);white-space:nowrap}.admin-page .btn-sm{padding:4px 8px!important;min-height:30px!important;height:30px!important;font-size:12px!important;line-height:1!important;gap:4px!important;width:auto!important;min-width:0!important;flex:0 0 auto!important}.admin-page .btn-sm svg{width:13px;height:13px}.admin-page .member-avatar-small{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--border-primary)}.admin-page .mac-cell{font-family:Consolas,Monaco,monospace;font-size:13px;color:var(--text-secondary)}.admin-page .text-muted{color:var(--text-tertiary);font-style:italic}.admin-page .loading-state,.admin-page .empty-state{padding:24px;text-align:center;color:var(--text-tertiary);font-size:14px}.admin-page .settings-group{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden}.admin-page .settings-group h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0;padding:16px 20px;border-bottom:1px solid var(--border-primary);background:var(--bg-tertiary)}.admin-page .settings-group .settings-form,.admin-page .settings-group>div:not(h3){padding:20px;background:var(--bg-secondary)}.admin-page .settings-form,.admin-page .password-form{display:flex;flex-direction:column;gap:16px}.admin-page .form-row{display:flex;flex-direction:column;gap:8px}.admin-page .form-row label{font-size:14px;font-weight:500;color:var(--text-secondary)}.admin-page .form-row input:not([type=checkbox]){height:48px;padding:0 16px;font-size:15px}.admin-page .form-row input:disabled{opacity:.6;cursor:not-allowed}.admin-page .form-row textarea{width:100%;padding:12px 16px;font-size:14px;font-family:monospace;resize:vertical;min-height:80px}.admin-page .private-key-input{font-size:12px;line-height:1.4}.admin-page .key-status{font-size:12px;font-weight:400;margin-left:8px}.admin-page .key-status.configured{color:#22c55e}.admin-page .form-actions{margin-top:8px;display:flex;gap:12px;flex-wrap:wrap}.admin-page .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-size:15px;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:all .3s ease;white-space:nowrap}.admin-page .btn-small{padding:6px 12px;font-size:13px;background:var(--accent-color);color:#fff;border:none;border-radius:6px;cursor:pointer}.admin-page .btn-small:hover{background:var(--accent-hover)}.admin-page .spinning{animation:btn-spin 1s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.admin-page .message{padding:12px 16px;border-radius:10px;font-size:14px}.admin-page .user-info-card{display:flex;align-items:center;gap:20px;padding:24px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:16px;margin-bottom:20px}.admin-page .user-avatar{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent-color) 0%,var(--accent-hover) 100%);border-radius:16px;color:#fff;font-size:28px;font-weight:600}.admin-page .user-details h3{font-size:20px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.admin-page .user-details p{font-size:14px;color:var(--text-secondary);margin:0}.admin-page .info-text{font-size:14px;color:var(--text-tertiary);line-height:1.6}.admin-page .connection-status{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:8px;font-size:13px;margin-top:12px}.admin-page .connection-status.success{background:#22c55e1a;color:#22c55e;border:1px solid rgba(34,197,94,.3)}.admin-page .connection-status.error{background:#ef44441a;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.admin-page .device-form{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;padding:0;margin-bottom:20px;overflow:hidden}.admin-page .admin-device-list{display:flex;flex-direction:column;width:100%;overflow:hidden;box-sizing:border-box}.admin-page .admin-device-list-header{display:flex;align-items:center;padding:8px 16px;background:var(--bg-tertiary);font-size:12px;font-weight:500;color:var(--text-tertiary);border-bottom:1px solid var(--border-primary);width:100%;box-sizing:border-box}.admin-page .admin-device-row{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-primary);transition:background .2s ease;font-size:13px;width:100%;box-sizing:border-box}.admin-page .admin-device-row:last-child{border-bottom:none}.admin-page .admin-device-row:hover{background:var(--bg-primary)}.admin-page .admin-device-row.editing{background:#3b82f614;border-left:3px solid var(--accent-color)}.admin-page .col-id{flex:0 0 15%;color:var(--accent-color);font-family:monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.admin-page .col-name{flex:0 0 18%;color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.admin-page .col-entity{flex:1;min-width:0;color:var(--text-tertiary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.admin-page .col-actions{width:64px;flex-shrink:0;display:flex;justify-content:flex-end;gap:4px}.admin-page .col-actions .btn-icon{width:28px;height:28px;border:none;border-radius:4px;background:var(--bg-hover);color:var(--text-secondary)}.admin-page .col-actions .btn-icon:hover{background:var(--accent-color);color:#fff;border-color:transparent}.admin-page .col-actions .btn-icon.danger:hover{background:#ef4444;color:#fff}.admin-page .modal-body .form-group{margin-bottom:16px}.admin-page .modal-body .form-group:last-child{margin-bottom:0}.admin-page .modal-body label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.admin-page .modal-body input:not([type=checkbox]),.admin-page .modal-body select{width:100%;padding:10px 14px;font-size:14px;outline:none;transition:border-color .2s ease}.admin-page .modal-body input:disabled{opacity:.6;cursor:not-allowed}@media(max-width:1200px){.admin-page .devices-list-panel{min-width:0}.admin-page .dates-list-panel{flex-direction:row;flex-wrap:wrap}.admin-page .dates-group{flex:1;min-width:280px}}@media(max-width:768px){.admin-page .hide-mobile{display:none!important}.admin-page .admin-device-list-header,.admin-page .admin-device-row{padding:10px 12px}.admin-page .col-id,.admin-page .col-name{flex:0 0 30%}.admin-page .col-entity{display:none}.admin-page .col-actions{flex:0 0 40%;width:auto;justify-content:center;gap:8px}.admin-page .admin-device-list{min-width:unset;width:100%}.admin-page .devices-toolbar,.admin-page .dates-toolbar,.admin-page .users-toolbar{flex-direction:column}.admin-page .devices-toolbar .btn,.admin-page .dates-toolbar .btn,.admin-page .users-toolbar .btn{width:100%;justify-content:center}.admin-page .dates-list-panel{flex-direction:column}.admin-page .dates-group{min-width:0}}.password-modal-content{max-width:520px!important}.password-modal-form{display:flex;flex-direction:column;gap:18px}.password-modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:6px}.password-modal-actions .btn{min-width:120px;justify-content:center}@media(max-width:600px){.password-modal-actions{flex-direction:column}.password-modal-actions .btn{width:100%}}.simple-clock{width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at center,#7e7e7e,#000 80%);color:#fff;font-family:Arial,sans-serif}.clock-time{display:flex;align-items:center;gap:.2em;font-size:clamp(80px,15vw,200px);font-weight:700;text-shadow:0 5px 20px rgba(0,0,0,.3);margin-bottom:30px}.time-part{min-width:1.2em;text-align:center}.time-separator{opacity:.8;animation:breathe 2s ease-in-out infinite}.seconds{font-size:.6em;opacity:.9}.clock-date{font-size:clamp(20px,3vw,40px);font-weight:300;opacity:.95;text-shadow:0 2px 10px rgba(0,0,0,.2)}.flip-clock-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;width:100vw;background:radial-gradient(circle at center,#7e7e7e,#000 70%);font-family:Helvetica Neue,Helvetica,sans-serif;gap:50px;--card-width: 120px;--card-height: 200px;--font-size: 144px;--border-radius: 12px;--bg-color: #202020;--text-color: #e0e0e0;--animation-duration: .6s}.flip-clock{display:flex;gap:18px}@keyframes breathe{0%{opacity:1;text-shadow:0 0 0px rgba(224,224,224,0)}50%{opacity:.2;text-shadow:0 0 0px rgba(224,224,224,0)}to{opacity:1;text-shadow:0 0 0px rgba(224,224,224,0)}}.separator{font-size:var(--font-size);color:#999;display:flex;align-items:center;margin-top:-18px;font-weight:700;animation:breathe 2s ease-in-out infinite}.flip-clock-date{font-size:36px;font-weight:300;color:#ffffffe6;text-shadow:0 3px 10px rgba(0,0,0,.5);letter-spacing:3px;text-align:center}.flip-digit{position:relative;width:var(--card-width);height:var(--card-height);border-radius:var(--border-radius);color:var(--text-color);font-size:var(--font-size);line-height:var(--card-height);text-align:center;perspective:1000px;font-weight:700;box-shadow:0 4px 10px #0009,0 15px 40px #000c}.card-part{position:absolute;left:0;width:100%;height:50%;overflow:hidden;background-color:var(--bg-color);-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 5px #00000080}.digit-text{position:absolute;left:0;width:100%;height:200%;display:flex;justify-content:center;align-items:center;font-weight:700}.top,.flap-front{top:0;border-radius:var(--border-radius) var(--border-radius) 0 0;border-bottom:1px solid rgba(0,0,0,.5);transform-origin:bottom}.top .digit-text,.flap-front .digit-text{top:0}.bottom,.flap-back{bottom:0;border-radius:0 0 var(--border-radius) var(--border-radius);border-top:1px solid rgba(255,255,255,.05);transform-origin:top}.bottom .digit-text,.flap-back .digit-text{bottom:0}.static-top,.static-bottom{z-index:1}.flap-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;z-index:2;transform-style:preserve-3d}.flap-front{position:absolute;z-index:2;transform:rotateX(0);background-color:var(--bg-color)}.flap-back{position:absolute;z-index:1;transform:rotateX(180deg);background-color:var(--bg-color)}.flip-digit.flipping .flap-front{animation:flipDownFront var(--animation-duration) ease-in-out forwards}.flip-digit.flipping .flap-back{z-index:3;animation:flipDownBack var(--animation-duration) ease-in-out forwards}@keyframes flipDownFront{0%{transform:rotateX(0)}to{transform:rotateX(-180deg)}}@keyframes flipDownBack{0%{transform:rotateX(180deg)}to{transform:rotateX(0)}}:root{--hue: 223;--bg: hsl(var(--hue), 10%, 90%);--fg: hsl(var(--hue), 10%, 10%);--font-size-base: calc(25px + (24 - 16) * (100vw - 320px) / (1280 - 320))}.clock-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;background:radial-gradient(circle at center,#7e7e7e,#000 70%);color:#e0e0e0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.progress-clock{display:grid;justify-content:center;align-content:center;position:relative;text-align:center;width:16em;height:16em;font-size:var(--font-size-base)}.progress-clock__time-date,.progress-clock__time-digit,.progress-clock__time-colon,.progress-clock__time-ampm{transition:color .2s linear;user-select:none;color:inherit;position:relative;z-index:2}.progress-clock__time-date,.progress-clock__time-digit{background:transparent;border:0;padding:0;color:inherit}.progress-clock__time-date,.progress-clock__time-ampm{grid-column:1 / 6}.progress-clock__time-date{font-size:.75em;line-height:1.33}.progress-clock__time-digit,.progress-clock__time-colon{font-size:2em;font-weight:400;grid-row:2;color:inherit}.progress-clock__time-colon{line-height:1.275}.progress-clock__time-ampm{cursor:default;grid-row:3}.progress-clock__rings{display:block;position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.progress-clock__ring{opacity:.3}.progress-clock__ring-fill{transition:opacity 0s .3s linear,stroke-dashoffset .3s ease-in-out}[data-group]:focus{outline:transparent}[data-group=d]:focus,[data-group=d]:hover{color:#f42582}[data-group=h]:focus,[data-group=h]:hover{color:#f49725}[data-group=m]:focus,[data-group=m]:hover{color:#2582f4}[data-group=s]:focus,[data-group=s]:hover{color:#9725f4}[data-group]:focus~.progress-clock__rings [data-units],[data-group]:hover~.progress-clock__rings [data-units]{opacity:.2}[data-group=d]:focus~.progress-clock__rings [data-units=d],[data-group=d]:hover~.progress-clock__rings [data-units=d],[data-group=h]:focus~.progress-clock__rings [data-units=h],[data-group=h]:hover~.progress-clock__rings [data-units=h],[data-group=m]:focus~.progress-clock__rings [data-units=m],[data-group=m]:hover~.progress-clock__rings [data-units=m],[data-group=s]:focus~.progress-clock__rings [data-units=s],[data-group=s]:hover~.progress-clock__rings [data-units=s]{opacity:1}.progress-clock__ring-fill--360{opacity:0;stroke-dashoffset:0;transition-duration:.2s}@media(prefers-color-scheme:dark){:root{--bg: hsl(var(--hue), 10%, 10%);--fg: hsl(var(--hue), 10%, 90%)}.progress-clock__ring{opacity:.2}}
