.login-screen[data-v-7ad4583f]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 0%,#0a2b53 0,#03142d 40%,#010817)}.login-card[data-v-7ad4583f]{width:420px;max-width:92vw;background:linear-gradient(145deg,#061b37f2,#03142cf7);border:1px solid #0d3d6b;border-radius:16px;box-shadow:0 20px 60px #000a,inset 0 1px #164a7544;padding:34px 36px 22px}.login-head[data-v-7ad4583f]{text-align:center;margin-bottom:26px}.leaf-mark[data-v-7ad4583f]{width:54px;height:54px;margin:0 auto 14px;display:grid;place-items:center;font-size:28px;color:#26e2a0;border-radius:14px;background:linear-gradient(135deg,#0b3766,#082448);border:1px solid #17609b}.login-head h1[data-v-7ad4583f]{font-size:20px;font-weight:750;color:#e8f4ff;margin:0 0 8px;letter-spacing:.5px}.login-head p[data-v-7ad4583f]{font-size:13px;color:#8bb1d6;margin:0}.field[data-v-7ad4583f]{display:block;margin-bottom:16px}.field-label[data-v-7ad4583f]{display:block;font-size:13px;color:#9fc6eb;margin-bottom:7px}.field-input[data-v-7ad4583f]{width:100%;padding:11px 13px;border:1px solid #164d7c;border-radius:9px;background:#041a33;color:#e8f4ff;font-size:14px;outline:none;transition:.18s}.field-input[data-v-7ad4583f]:focus{border-color:#2aa9e8;box-shadow:0 0 12px #008cff33}.login-error[data-v-7ad4583f]{color:#ff8d98;font-size:12px;margin:-4px 0 12px}.login-btn[data-v-7ad4583f]{width:100%;padding:12px;margin-top:4px;border:0;border-radius:24px;font-size:15px;font-weight:700;color:#fff;background:linear-gradient(90deg,#1477c8,#0c3f7a)}.login-btn[data-v-7ad4583f]:hover{box-shadow:0 0 16px #008cff55;border-color:transparent}.login-btn[data-v-7ad4583f]:disabled{opacity:.6;cursor:not-allowed}.user-chip[data-v-be809fe0]{color:#c9e4ff;font-size:13px;border-left:1px solid #21476e;padding-left:18px}.logout-btn[data-v-be809fe0]{padding:6px 14px;border-radius:20px;font-size:13px}.sse-chip[data-v-be809fe0]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#c9e4ff}.sse-dot[data-v-be809fe0]{width:9px;height:9px;border-radius:50%;display:inline-block;background:#8a94a6}.sse-open .sse-dot[data-v-be809fe0]{background:#37d67a;box-shadow:0 0 6px #37d67a}.sse-connecting .sse-dot[data-v-be809fe0]{background:#ffd24a;box-shadow:0 0 6px #ffd24a}.sse-closed .sse-dot[data-v-be809fe0]{background:#ff6c7a;box-shadow:0 0 6px #ff6c7a}.metric b[data-v-0c9574d1]{font-size:22px;letter-spacing:.5px}.metric .unit[data-v-0c9574d1]{font-size:11px;color:#9abde0;margin-left:3px;font-weight:400}.envfade-enter-active[data-v-0c9574d1],.envfade-leave-active[data-v-0c9574d1]{transition:opacity .35s ease,transform .35s ease}.envfade-enter-from[data-v-0c9574d1]{opacity:0;transform:translateY(8px)}.envfade-leave-to[data-v-0c9574d1]{opacity:0;transform:translateY(-8px)}.pill.lv-danger[data-v-0c9574d1]{background:#3a1414;border-color:#ff6c7a;color:#ffb3ba}.pill.lv-warn[data-v-0c9574d1]{background:#392313;border-color:#ffab48;color:#ffd08a}.pill.lv-ok[data-v-0c9574d1]{background:#12301f;border-color:#2f7d55;color:#8ae8b0}.pill.lv-danger.active[data-v-0c9574d1]{background:#5a1f1f;box-shadow:0 0 16px #ff6c7a66}.pill.lv-warn.active[data-v-0c9574d1]{background:#5a371a;box-shadow:0 0 16px #ffab4866}.pill.lv-ok.active[data-v-0c9574d1]{background:#1a4530;box-shadow:0 0 16px #4ade8066}.env-dialog-mask[data-v-0c9574d1]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#010817cc;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}.env-dialog[data-v-0c9574d1]{width:1080px;max-width:96%;padding:34px 40px}.env-dialog-title[data-v-0c9574d1]{margin:0 0 8px;font-size:26px;color:#ffd2a1;display:flex;align-items:center;gap:12px}.env-dialog-title .state[data-v-0c9574d1]{font-size:14px}.env-dialog-time[data-v-0c9574d1]{font-size:14px;color:#aac9e8;margin-bottom:20px}.env-all-grid[data-v-0c9574d1]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.env-all-item[data-v-0c9574d1]{background:#0a2440aa;border:1px solid #14486e;border-radius:12px;padding:18px 16px;display:flex;flex-direction:column;gap:8px}.env-all-item label[data-v-0c9574d1]{font-size:14px;color:#8fb6dc}.env-all-item b[data-v-0c9574d1]{font-size:28px;letter-spacing:.5px}.env-all-item .unit[data-v-0c9574d1]{font-size:13px;color:#9abde0;margin-left:4px;font-weight:400}.env-remind[data-v-0c9574d1]{margin-top:26px}.env-remind .warning[data-v-0c9574d1]{padding:18px 22px;border-radius:10px}.env-remind .warning strong[data-v-0c9574d1]{font-size:18px}.env-remind .warning p[data-v-0c9574d1]{font-size:16px;line-height:1.9;margin-top:10px;white-space:pre-wrap}.trend-switch[data-v-0c9574d1]{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:8px}.ts-arrow[data-v-0c9574d1]{width:26px;height:26px;padding:0;border-radius:50%;border:1px solid #17609b;display:inline-flex;align-items:center;justify-content:center;background:#0a2440;color:#7fd0ff;font-size:16px;line-height:1;cursor:pointer;transition:.18s}.ts-arrow[data-v-0c9574d1]:hover{border-color:#52c8ff;box-shadow:0 0 12px #148bff55;color:#bfeaff}.ts-name[data-v-0c9574d1]{min-width:88px;text-align:center;font-size:15px;font-weight:700;color:#ffd2a1;letter-spacing:1px}:root{--fs-xs:12px;--fs-sm:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:32px;--fs-hero:40px}:root{--bg:#020d20;--panel:#061a35;--panel2:#08264a;--line:#124a7d;--blue:#27a9ff;--cyan:#20e2ee;--green:#15d6a0;--orange:#ff9b38;--red:#ff5d67;--text:#e8f4ff;--muted:#8bb1d6;--text-hi:#f1f8ff;--text-dim:#aac9e8;--text-faint:#789cbd;--danger-fg:#ff6c7a;--danger-soft:#ff929b;--danger-border:#8a2b2b;--danger-bg:#4b1d2b;--warn-fg:#ffab48;--warn-soft:#ffd2a1;--warn-border:#995820;--warn-bg:#4a3417;--mint:#33f0c0;--mint-soft:#8ae8b0;--mint-on:#04231d;--ok-fg:#4ade80;--ok-border:#25684a;--ok-bg:#123024;--design-w:1920px;--design-h:1080px}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden}body{background:radial-gradient(ellipse at 50% 0%,#0a2b53 0,#03142d 40%,#010817);color:var(--text);font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif;font-size:var(--fs-sm)}#app{width:100%;height:100%}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #17609b;background:linear-gradient(180deg,#0b3766,#082448);border-radius:9px;padding:9px 12px;transition:.18s}button:hover{border-color:#52c8ff;box-shadow:0 0 14px #148bff55}button:active{transform:translateY(1px)}.screen-viewport{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;display:flex;align-items:center;justify-content:center}.screen-adapter{width:var(--design-w);height:var(--design-h);transform-origin:center center;position:relative;display:flex;flex-direction:column}.topbar{height:66px;flex-shrink:0;display:flex;align-items:center;gap:18px;padding:0 22px;border-bottom:1px solid #1475b9;background:#04132af2;box-shadow:0 4px 25px #007bff22;white-space:nowrap}.brand{display:flex;align-items:center;gap:12px;font-size:var(--fs-xl);font-weight:750;letter-spacing:1px}.leaf{font-size:var(--fs-2xl);color:var(--mint)}.tagline{color:var(--text-dim);font-size:var(--fs-sm);border-left:1px solid #21476e;padding-left:18px}.topright{margin-left:auto;display:flex;align-items:center;gap:22px;color:var(--text)}.live{color:var(--mint)}.wrap{flex:1;min-height:0;padding:16px;display:grid;grid-template-columns:minmax(250px,.95fr) minmax(540px,2.45fr) minmax(275px,1.05fr);gap:16px}.left,.center,.right{display:flex;flex-direction:column;gap:14px;min-width:0;min-height:0;overflow:auto}.left::-webkit-scrollbar,.center::-webkit-scrollbar,.right::-webkit-scrollbar{width:6px}.left::-webkit-scrollbar-thumb,.center::-webkit-scrollbar-thumb,.right::-webkit-scrollbar-thumb{background:#14456e;border-radius:3px}.panel{background:linear-gradient(145deg,#061b37ef,#03142cf7);border:1px solid #0d3d6b;border-radius:12px;box-shadow:inset 0 1px #164a7544,0 10px 30px #0002;overflow:hidden}.panel.fill{display:flex;flex-direction:column}.grow{flex:1;min-height:0}.pad{padding:15px}.section-title{font-size:var(--fs-md);font-weight:700;margin:0 0 13px;display:flex;align-items:center;justify-content:space-between}.sub{font-size:var(--fs-xs);color:var(--muted);font-weight:400}.weather-main{display:flex;align-items:center;gap:16px;padding:6px 0 14px}.sun{font-size:var(--fs-hero)}.temp{font-size:var(--fs-2xl);font-weight:700}.weather-stats{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;color:var(--text-dim);min-width:0}.stat{display:flex;flex-direction:column;gap:2px;min-width:0}.stat-label{font-size:var(--fs-xs);white-space:nowrap}.stat-value{color:var(--text-hi);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.warning{margin-top:10px;border:1px solid var(--warn-border);background:linear-gradient(100deg,#392313aa,#1c1b2a);border-radius:8px;padding:12px;color:var(--warn-soft)}.warning strong{color:var(--warn-fg)}.warning.lv-danger{border-color:transparent;background:linear-gradient(100deg,#3a1414aa,#1c1b2a);color:var(--danger-soft);animation:danger-frame 1.1s ease-in-out infinite}.warning.lv-danger strong{color:var(--danger-fg)}@keyframes danger-frame{0%,to{box-shadow:0 0 0 1px var(--danger-border),0 0 16px 3px #ff6c7a55}20%{box-shadow:-2px 1px 0 1px var(--danger-border),0 0 14px 2px #ff6c7a33}40%{box-shadow:2px -1px 0 1px var(--danger-border),0 0 16px 3px #ff6c7a66}60%{box-shadow:-1px 2px 0 1px var(--danger-border),0 0 14px 2px #ff6c7a33}80%{box-shadow:1px -2px 0 1px var(--danger-border),0 0 16px 3px #ff6c7a66}}.warning.lv-warn{border-color:var(--warn-border);background:linear-gradient(100deg,#392313aa,#1c1b2a);color:var(--warn-soft)}.warning.lv-warn strong{color:var(--warn-fg)}.warning.lv-ok{border-color:var(--ok-border);background:linear-gradient(100deg,#123024aa,#1c1b2a);color:var(--mint-soft)}.warning.lv-ok strong{color:var(--ok-fg)}.ai-detail-mask{position:fixed;z-index:26}.ai-detail-dialog{width:640px;max-width:92%;scrollbar-width:none;-ms-overflow-style:none}.ai-detail-dialog::-webkit-scrollbar{width:0;height:0;display:none}.ai-detail-title{margin:0 0 12px;font-size:var(--fs-lg);color:var(--warn-soft)}.ai-detail-title .sub{margin-left:10px;font-size:var(--fs-sm);color:var(--text-dim)}.ai-detail-body{margin:0;white-space:pre-wrap;line-height:1.9;font-size:var(--fs-md);color:var(--text-hi);font-family:inherit}.ai-detail-dialog.lv-danger{border-color:transparent;background:linear-gradient(145deg,#3a1414,#200a0a);animation:danger-frame 1.1s ease-in-out infinite}.ai-detail-dialog.lv-danger .ai-detail-title{color:var(--danger-fg)}.ai-detail-dialog.lv-danger .dialog-close{border-color:var(--danger-fg);background:var(--danger-bg);color:var(--danger-soft)}.ai-detail-dialog.lv-warn{border-color:var(--warn-border);background:linear-gradient(145deg,#392313,#20140a)}.ai-detail-dialog.lv-warn .ai-detail-title{color:var(--warn-fg)}.ai-detail-dialog.lv-warn .dialog-close{border-color:var(--warn-fg);background:var(--warn-bg);color:var(--warn-soft)}.ai-detail-dialog.lv-ok{border-color:var(--ok-border);background:linear-gradient(145deg,#123024,#0a1a12)}.ai-detail-dialog.lv-ok .ai-detail-title{color:var(--ok-fg)}.ai-detail-dialog.lv-ok .dialog-close{border-color:var(--ok-fg);background:var(--ok-bg);color:var(--mint-soft)}.warning p{margin:7px 0 0;line-height:1.6;color:var(--warn-soft);font-size:var(--fs-xs)}.pills{display:flex;gap:7px;margin-bottom:15px}.pill{flex:1;padding:8px 5px;border-radius:24px;background:#071f3e;border-color:#143d68;color:var(--text-dim)}.pill.active{background:linear-gradient(90deg,#1266b3,#0b3b72);border-color:#2daaff;color:#fff;box-shadow:0 0 14px #008cff33}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.metric{padding:8px 4px;text-align:center;border-right:1px solid #133657}.metric:last-child{border:0}.metric label{display:block;color:var(--text-dim);font-size:var(--fs-xs);margin-bottom:7px}.metric b{font-size:var(--fs-md)}.state{display:inline-block;margin-top:8px;background:var(--ok-bg);color:var(--mint);border-radius:14px;padding:3px 9px;font-size:var(--fs-xs)}.state.danger{background:var(--danger-bg);color:var(--danger-soft)}.chart{width:100%;flex:1;min-height:140px;margin-top:7px}.trend-block{border-top:1px solid #133958;margin-top:17px;padding-top:14px;flex:1;min-height:0;display:flex;flex-direction:column}.hero{position:relative;flex:1 1 360px;min-height:300px;overflow:hidden;border-radius:11px;border:1px solid #0d4778;background:#061b35}.hero img{width:100%;height:100%;object-fit:cover;opacity:.92}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#03132b66,transparent 40%,#03132bcc)}.hero-label{position:absolute;z-index:1;top:70px;left:17%;border:1px solid #28aaff;border-radius:7px;padding:6px 13px;background:#05254ad9;box-shadow:0 0 12px #008cff44}.hero-label.second{left:57%;top:92px}.hero-label.station{right:3%;left:auto;top:72px}.scene-nav{display:flex;gap:8px;position:absolute;top:12px;left:12px;right:12px;z-index:2}.scene-nav button{flex:1;border-radius:25px;background:#061d3ce8}.scene-nav button.active{background:linear-gradient(90deg,#1477c8,#0c3f7a);border-color:#49bfff}.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;flex-shrink:0}.greenhouse-card{padding:12px;border:1px solid #1370ac;border-radius:10px;background:linear-gradient(145deg,#082e58,#041b35)}.greenhouse-card:nth-child(2){border-color:#0e9f8a;background:linear-gradient(145deg,#073a3d,#041b35)}.gh-title{font-weight:700;display:flex;justify-content:space-between;margin-bottom:12px}.online{color:var(--mint);font-size:var(--fs-xs)}.ghdata{display:grid;grid-template-columns:repeat(2,1fr);gap:11px;color:var(--text-dim);font-size:var(--fs-xs)}.ghdata b{display:block;color:var(--text-hi);font-size:var(--fs-sm);margin-top:3px}.controls-title{font-size:var(--fs-md);font-weight:700;margin-bottom:12px}.scenario-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.scenario{min-width:0;text-align:center;border:1px solid #1463a0;border-radius:10px;padding:12px 7px;background:linear-gradient(180deg,#08294d,#04172f)}.scenario .ico{font-size:var(--fs-2xl);color:#44b9ff}.scenario strong{display:block;margin:6px 0;font-size:var(--fs-sm)}.scenario p{color:var(--text-dim);font-size:var(--fs-xs);line-height:1.5;min-height:32px;margin:4px 0 9px}.scenario button{width:100%;padding:8px 3px;background:#0879d4;border:0;border-radius:20px;font-size:var(--fs-xs)}.scenario:nth-child(4) button{background:transparent;border:1px solid #238ed2}.device-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.device-control{border:1px solid #174b76;border-radius:10px;padding:12px;background:linear-gradient(145deg,#082747,#04152b);min-width:0}.device-control h3{margin:0 0 5px;font-size:var(--fs-sm);display:flex;justify-content:space-between;gap:5px}.device-control .desc{font-size:var(--fs-xs);color:var(--text-dim);margin-bottom:10px;min-height:28px}.device-control .state-label{display:inline-block;font-size:var(--fs-xs);border-radius:12px;padding:3px 8px;margin-bottom:10px;background:var(--ok-bg);color:var(--mint)}.device-control[data-state=暂停] .state-label{background:#25384e;color:var(--text-dim)}.device-control[data-state=故障] .state-label{background:var(--danger-bg);color:var(--danger-soft)}.device-buttons{display:flex;gap:5px}.device-buttons button{flex:1;padding:7px 3px;font-size:var(--fs-xs);border-radius:7px}.device-buttons button.selected{border-color:var(--mint);background:#075746;color:#fff}.device-control[data-state=故障] .device-buttons button.selected{border-color:var(--danger-soft);background:#6b2330}.device-control[data-state=暂停] .device-buttons button.selected{border-color:var(--text-faint);background:#344a61}.alerts .alert{display:grid;grid-template-columns:34px 1fr;gap:9px;padding:12px 0;border-bottom:1px solid #123555}.alert-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--warn-bg);color:var(--warn-soft);font-size:var(--fs-md)}.alert-head{display:flex;justify-content:space-between;gap:8px;font-weight:650}.alert time{color:var(--text-dim);font-weight:400;font-size:var(--fs-xs)}.alert p{margin:6px 0;color:var(--text-dim);font-size:var(--fs-xs);line-height:1.6}.tag{display:inline-block;font-size:var(--fs-xs);color:var(--warn-soft);background:var(--warn-bg);padding:3px 8px;border-radius:10px}.badge-red{color:var(--danger-soft);background:var(--danger-bg);border-radius:10px;padding:4px 8px;font-size:var(--fs-xs)}.alert-list{flex:1;min-height:0;overflow:auto;scrollbar-width:none}.alert-list::-webkit-scrollbar{display:none}.alert.device-generated{border-left:2px solid var(--danger-soft);padding-left:8px}.alert.lv-danger{border-left:2px solid var(--danger-fg);padding-left:8px}.alert.lv-warn{border-left:2px solid var(--warn-fg);padding-left:8px}.alert.lv-ok{border-left:2px solid var(--ok-fg);padding-left:8px}.alert.handled{opacity:.55}.alert-status{display:inline-block;font-size:var(--fs-xs);padding:3px 8px;border-radius:10px;margin-left:6px}.alert-status.st-new{color:var(--danger-soft);background:var(--danger-bg)}.alert-status.st-ack{color:var(--warn-soft);background:var(--warn-bg)}.alert-status.st-done{color:var(--mint-soft);background:var(--ok-bg)}.alerts .advice-btn{display:inline-block;margin-left:6px;font-size:var(--fs-xs);color:var(--mint-on);background:linear-gradient(90deg,#33f0c0,#19c99a);border:0;border-radius:10px;padding:3px 9px;cursor:pointer;font-weight:600;vertical-align:middle;box-shadow:0 0 10px #29e6b044;transition:filter .15s}.alerts .advice-btn:hover{filter:brightness(1.12)}.alerts .advice-pending{display:inline-block;margin-left:6px;font-size:var(--fs-xs);color:var(--text-faint);background:#12283f;border-radius:10px;padding:3px 9px;vertical-align:middle;animation:advice-pulse 1.4s ease-in-out infinite}@keyframes advice-pulse{0%,to{opacity:.5}50%{opacity:.9}}.advice-block{margin-top:14px}.advice-label{font-size:var(--fs-sm);color:#8fd8c4;margin-bottom:6px;font-weight:600}.advice-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:18px}.act-btn{font-size:var(--fs-sm);padding:8px 18px;border-radius:10px;cursor:pointer;font-weight:600;border:1px solid #3a5a7a;background:#16283c;color:var(--text);transition:filter .15s}.act-btn:hover{filter:brightness(1.15)}.act-ack{border-color:var(--warn-border);background:var(--warn-bg);color:var(--warn-soft)}.act-done{border:0;background:linear-gradient(90deg,#33f0c0,#19c99a);color:var(--mint-on);box-shadow:0 0 12px #29e6b044}.advice-confirm{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:14px;padding-top:12px;border-top:1px dashed #2c4a68;font-size:var(--fs-sm);color:var(--warn-soft)}.dialog-mask.advice-confirm-mask{z-index:30}.dialog.advice-confirm-dialog{width:400px;max-width:86%;padding:26px 30px;text-align:center;border-radius:16px}.advice-confirm-text{margin:0 0 24px;font-size:var(--fs-md);color:var(--warn-soft);line-height:1.6}.advice-confirm-actions{display:flex;gap:14px;justify-content:center}.advice-confirm-actions .act-btn{min-width:88px}.dialog.alert-list-dialog{width:1400px;max-width:92%;padding:30px 42px;display:flex;flex-direction:column;max-height:95%}.alert-list-title{margin:0 0 14px;font-size:var(--fs-lg);color:var(--warn-soft);text-align:center}.alert-list-title .sub{margin-left:12px;font-size:var(--fs-sm);color:var(--text-dim);font-weight:400}.alert-filter{display:flex;gap:8px;margin-bottom:12px}.filter-btn{font-size:var(--fs-sm);padding:6px 16px;border-radius:20px;cursor:pointer;border:1px solid #2c4a68;background:#0e2138;color:var(--text-dim);transition:.15s}.filter-btn:hover{border-color:#3f6a97;color:var(--text)}.filter-btn.active{background:linear-gradient(90deg,#33f0c0,#19c99a);border-color:transparent;color:var(--mint-on);font-weight:600}.alert-table-wrap{flex:1;min-height:0;overflow:auto;scrollbar-width:none}.alert-table-wrap::-webkit-scrollbar{width:0;height:0;display:none}.alert-table{width:100%;border-collapse:collapse;font-size:var(--fs-md);table-layout:fixed}.alert-table th{text-align:left;padding:16px 20px;color:var(--text-dim);font-weight:600;border-bottom:1px solid #1d4670;position:sticky;top:0;background:#08213c;white-space:nowrap}.alert-table td{padding:17px 20px;border-bottom:1px solid #102b47;color:var(--text-hi);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-table tbody tr:hover{background:#0e2946}.alert-table .a-title{color:#7fd0ff;cursor:pointer;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle;max-width:100%}.alert-table .a-title:hover{text-decoration:underline}.alert-table .a-desc,.alert-table .a-time{color:var(--text-dim)}.alert-table .a-user{color:var(--text)}.alert-table .a-empty{text-align:center;color:var(--text-faint);padding:28px}.alert-table .alert-status{margin:0;font-size:var(--fs-sm);padding:3px 10px}.alert-table .kt{display:inline-block;font-size:var(--fs-xs);padding:2px 9px;border-radius:8px}.kt-weather{color:#8fd0ff;background:#123049}.kt-env{color:var(--warn-soft);background:var(--warn-bg)}.kt-device{color:var(--danger-soft);background:var(--danger-bg)}.alert-pager{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding-top:12px;border-top:1px solid #12314f}.pager-total{font-size:var(--fs-sm);color:var(--text-dim)}.pager-btns{display:flex;gap:6px}.pg{min-width:34px;height:32px;padding:0 10px;font-size:var(--fs-sm);border-radius:8px;cursor:pointer;border:1px solid #2c4a68;background:#0e2138;color:var(--text);transition:.15s}.pg:hover:not(:disabled){border-color:#3f6a97}.pg.cur{background:linear-gradient(90deg,#33f0c0,#19c99a);border-color:transparent;color:var(--mint-on);font-weight:600}.pg:disabled{opacity:.4;cursor:not-allowed}.chatlog{flex:1;min-height:0;overflow:auto;scrollbar-width:none}.chatlog::-webkit-scrollbar{display:none}.msg{display:flex;gap:9px;margin:12px 0;align-items:flex-start}.avatar{width:29px;height:29px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;background:#1165a9;font-size:var(--fs-sm)}.bubble{background:#08284b;border:1px solid #124b7b;border-radius:9px;padding:9px 11px;line-height:1.55;color:var(--text);font-size:var(--fs-xs);flex:1}.bubble.ai{border-color:#126c93;background:#05243e}.bubble.pending{color:var(--text-dim);font-style:italic;animation:thinkpulse 1.2s ease-in-out infinite}@keyframes thinkpulse{0%,to{opacity:.5}50%{opacity:1}}.msg small{color:var(--text-faint);display:block;text-align:right;margin-top:4px}.chat-input{display:flex;gap:7px;margin-top:14px}.chat-input input{min-width:0;flex:1;border:1px solid #164d7c;background:#041a33;border-radius:25px;padding:11px 13px;color:#fff;outline:none}.chat-input button{border-radius:50%;width:40px;padding:0;background:#0874c7;font-size:var(--fs-lg)}.device-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.scene-device{position:absolute;display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #28baff;background:#041a32dc;border-radius:9px;color:var(--text-hi);font-size:var(--fs-xs);box-shadow:0 0 14px #008cff33;transition:.25s}.scene-device .device-icon{font-size:var(--fs-xl);display:inline-block}.scene-device .mini-state{font-size:var(--fs-xs);color:var(--mint)}.scene-device.fault{border-color:var(--danger-soft);color:var(--text-hi);box-shadow:0 0 18px #ff203c77}.scene-device.fault .mini-state{color:var(--danger-soft)}.scene-device.paused{border-color:#6c88a6;opacity:.75}.light-beam{position:absolute;left:8%;right:8%;top:12%;height:62%;opacity:0;transition:opacity .3s;background:linear-gradient(180deg,#fff7a633,#ffec8a08 78%,transparent);clip-path:polygon(14% 0,86% 0,100% 100%,0 100%)}.hero.lights-on .light-beam{opacity:1}.hero.lights-off:after{background:linear-gradient(180deg,#010713aa,#01071355 40%,#010713ee)}.fan-spin{animation:fanrotate 1s linear infinite}@keyframes fanrotate{to{transform:rotate(360deg)}}.water-flow{position:absolute;left:35%;right:13%;top:53%;height:7px;border-radius:9px;background:repeating-linear-gradient(90deg,#35eaff 0 9px,transparent 9px 17px);filter:drop-shadow(0 0 5px #20dfff);opacity:0}.hero.irrigation-on .water-flow{opacity:1;animation:watermove .55s linear infinite}@keyframes watermove{to{background-position:17px 0}}.station-pulse{width:8px;height:8px;border-radius:50%;background:#32f3bb;box-shadow:0 0 #32f3bb88}.hero.weather-updating .station-pulse{animation:pulse 1s infinite}@keyframes pulse{70%{box-shadow:0 0 0 9px #32f3bb00}to{box-shadow:0 0 #32f3bb00}}.scene-alert-flash{animation:alertflash .8s steps(2,end) infinite}@keyframes alertflash{50%{opacity:.25}}.toast-stack{position:fixed;left:50%;bottom:22px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:10;pointer-events:none}.toast{background:#073b56;border:1px solid #2aa9e8;color:var(--text-hi);padding:13px 20px;border-radius:12px;box-shadow:0 8px 35px #0008;max-width:90vw}.toast-enter-active,.toast-leave-active,.toast-move{transition:.2s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translateY(10px)}.toast-leave-active{position:absolute}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:10px;background:#04101fd6;z-index:20;font-size:var(--fs-lg);color:var(--text-dim)}.loading-overlay .loading-dot{animation:thinkpulse 1.2s ease-in-out infinite}.load-error{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#04101fe6;z-index:21}.load-error-box{background:var(--panel);border:1px solid var(--danger-soft);border-radius:14px;padding:28px 34px;text-align:center;max-width:560px;box-shadow:0 12px 40px #000a}.load-error-box p{margin:0 0 8px;font-size:var(--fs-xl);color:var(--danger-soft)}.load-error-box small{display:block;color:var(--text-dim);font-size:var(--fs-sm);margin-bottom:18px;word-break:break-all;line-height:1.5}.load-error-box button{padding:9px 24px;border-radius:8px;font-size:var(--fs-md);cursor:pointer}.dialog-trigger{cursor:pointer;display:flex;align-items:center;gap:10px;font-weight:700;flex-shrink:0;transition:.18s}.dialog-trigger:hover{border-color:#52c8ff;box-shadow:0 0 14px #148bff55}.dialog-trigger .open-hint{margin-left:auto;color:#4db8ff;font-size:var(--fs-sm)}.dialog-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:#010817b3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center}.dialog{width:1180px;max-width:92%;max-height:86%;overflow:auto;background:linear-gradient(145deg,#082747,#04152b);border:1px solid #17609b;border-radius:14px;box-shadow:0 20px 60px #000a;padding:20px 22px;position:relative}.device-float{position:absolute;left:22px;bottom:22px;z-index:20;width:800px;max-width:calc(100% - 44px);max-height:calc(100% - 44px);overflow:auto;background:linear-gradient(145deg,#082747f2,#04152bf2);border:1px solid #17609b;border-radius:14px;box-shadow:0 20px 60px #000a;padding:20px 22px}.device-float .panel{border:0;box-shadow:none;background:transparent;padding:0}.dialog-close{position:absolute;top:12px;right:14px;width:34px;height:34px;border-radius:50%;padding:0;font-size:var(--fs-sm);z-index:1}.dialog .panel{border:0;box-shadow:none;background:transparent}.dialog-enter-active,.dialog-leave-active{transition:.2s}.dialog-enter-from,.dialog-leave-to{opacity:0}.dialog-enter-from .dialog,.dialog-leave-to .dialog,.dialog-enter-from.device-float,.dialog-leave-to.device-float{transform:scale(.95)}
