.header-bar[data-v-13c04a87]{height:60px;background:radial-gradient(circle at 0 0,#020617 0,#020617 45%,#000 100%);color:#e5e7eb;justify-content:space-between;padding:0 20px;box-shadow:0 14px 40px rgba(0,0,0,.85)}.header-bar[data-v-13c04a87],.header-left[data-v-13c04a87],.logo-box[data-v-13c04a87]{display:flex;align-items:center}.logo-box[data-v-13c04a87]{width:40px;height:40px;border-radius:12px;background:radial-gradient(circle at 30% 0,#1e3a8a 0,#020617 55%);justify-content:center;margin-right:12px;box-shadow:0 8px 22px rgba(0,0,0,.9)}.logo-mark[data-v-13c04a87]{font-size:20px;font-weight:800;letter-spacing:1px;color:#60a5fa}.header-title .sub-title[data-v-13c04a87]{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.7}.header-title .main-title[data-v-13c04a87]{font-size:18px;font-weight:600;margin-top:2px}.header-right[data-v-13c04a87]{display:flex;align-items:center;gap:10px}.env-tag[data-v-13c04a87]{padding:4px 10px;border-radius:999px;border:1px solid rgba(147,197,253,.7);font-size:12px;color:#bfdbfe;background:rgba(15,23,42,.7)}.logout-btn[data-v-13c04a87]{padding:6px 14px;border-radius:999px;border:1px solid rgba(248,113,113,.8);background:rgba(127,29,29,.85);color:#fee2e2;font-size:13px;cursor:pointer;transition:all .16s ease-out}.logout-btn[data-v-13c04a87]:hover{background:rgba(185,28,28,.95);box-shadow:0 6px 18px rgba(248,113,113,.6)}@media (max-width:600px){.header-bar[data-v-13c04a87]{height:52px;padding:0 12px}.logo-box[data-v-13c04a87]{display:none}.header-title .main-title[data-v-13c04a87]{font-size:16px}.env-tag[data-v-13c04a87]{display:none}.logout-btn[data-v-13c04a87]{padding:4px 10px;font-size:12px}}.login-page[data-v-0ca90f52]{background:transparent}.login-main[data-v-0ca90f52]{flex:1;display:flex;justify-content:center;align-items:center;padding:24px 16px 32px}.login-card[data-v-0ca90f52]{width:100%;max-width:420px;background:radial-gradient(circle at 0 0,#020617 0,#111827 70%);border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.9);padding:26px 28px 30px;border:1px solid rgba(75,85,99,.8)}.login-title[data-v-0ca90f52]{font-size:22px;font-weight:600;text-align:center;margin-bottom:6px;color:#f9fafb}.login-subtitle[data-v-0ca90f52]{font-size:13px;color:#9ca3af;text-align:center;margin-bottom:20px}.form-item[data-v-0ca90f52]{margin-bottom:16px}.form-item label[data-v-0ca90f52]{display:block;font-size:13px;margin-bottom:5px;color:#d1d5db}.form-item input[data-v-0ca90f52]{width:100%}.error[data-v-0ca90f52]{color:#fecaca;font-size:13px;margin-bottom:10px}.login-btn[data-v-0ca90f52]{width:100%;margin-top:4px}.hint[data-v-0ca90f52]{font-size:12px;color:#9ca3af;margin-top:12px;text-align:center}.switch-section[data-v-0ca90f52]{margin-top:20px;text-align:center}.switch-text[data-v-0ca90f52]{font-size:12px;color:#9ca3af}.switch-text a[data-v-0ca90f52]{color:#60a5fa;cursor:pointer}@media (max-width:600px){.login-card[data-v-0ca90f52]{padding:22px 18px 24px}.login-title[data-v-0ca90f52]{font-size:20px}}.dorm-list-header[data-v-42e37d55]{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.dorm-list-header h3[data-v-42e37d55]{font-size:16px;font-weight:600;position:relative;padding-left:10px;color:#e5e7eb}.dorm-list-header h3[data-v-42e37d55]:before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:999px;background:linear-gradient(180deg,#60a5fa,#1d4ed8)}.search-row[data-v-42e37d55]{display:flex;gap:10px}.dorm-scroll[data-v-42e37d55]{margin-top:10px;max-height:420px;overflow-y:auto;border-radius:10px;background:rgba(15,23,42,.9);box-shadow:inset 0 0 0 1px rgba(31,41,55,.9)}.dorm-scroll[data-v-42e37d55]::-webkit-scrollbar{display:none}.dorm-item[data-v-42e37d55]{padding:9px 14px;font-size:14px;cursor:pointer;border-bottom:1px solid #1f2937;display:flex;align-items:center;justify-content:space-between;color:#e5e7eb}.dorm-item[data-v-42e37d55]:last-child{border-bottom:none}.dorm-text[data-v-42e37d55]{display:flex;flex-direction:column}.dorm-name[data-v-42e37d55]{font-weight:500}.dorm-meta[data-v-42e37d55]{font-size:12px;color:#9ca3af}.dorm-arrow[data-v-42e37d55]{font-size:18px;color:#6b7280}.dorm-item[data-v-42e37d55]:hover{background:rgba(30,64,175,.35)}.dorm-item--active[data-v-42e37d55]{background:linear-gradient(90deg,rgba(37,99,235,.7),rgba(30,64,175,.9));color:#f9fafb;font-weight:500}.hint[data-v-42e37d55]{margin-top:10px;font-size:12px;color:#9ca3af}@media (max-width:600px){.search-row[data-v-42e37d55]{flex-direction:column}.search-row .btn[data-v-42e37d55]{width:100%}}.tabs-header[data-v-497aa86b]{display:flex;border-bottom:1px solid rgba(55,65,81,.85);margin-bottom:12px;overflow-x:auto}.dorm-scroll[data-v-497aa86b]::-webkit-scrollbar,.tabs-header[data-v-497aa86b]::-webkit-scrollbar{display:none}.tab-item[data-v-497aa86b]{padding:10px 18px;cursor:pointer;font-size:14px;color:#9ca3af;white-space:nowrap;position:relative;display:flex;align-items:center;gap:6px}.tab-name[data-v-497aa86b]{font-weight:500}.tab-count[data-v-497aa86b]{min-width:22px;padding:2px 6px;border-radius:999px;background:rgba(31,41,55,.9);font-size:12px;text-align:center;color:#9ca3af}.tab-item--active[data-v-497aa86b]{color:#e5e7eb;font-weight:600}.tab-item--active .tab-count[data-v-497aa86b]{background:rgba(37,99,235,.3);color:#bfdbfe}.tab-item--active[data-v-497aa86b]:after{content:"";position:absolute;left:18px;right:18px;bottom:-2px;height:3px;border-radius:999px;background:linear-gradient(90deg,#60a5fa,#2563eb)}.tabs-body[data-v-497aa86b]{margin-top:8px}.group-toolbar[data-v-497aa86b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px;flex-wrap:wrap}.tip[data-v-497aa86b]{font-size:12px;color:#9ca3af}.group-dorm-list[data-v-497aa86b]{border-radius:10px;background:rgba(15,23,42,.95);box-shadow:inset 0 0 0 1px #1f2937;max-height:360px;overflow-y:auto}.group-dorm-item[data-v-497aa86b]{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;border-bottom:1px solid #1f2937;font-size:14px;color:#e5e7eb}.group-dorm-item[data-v-497aa86b]:last-child{border-bottom:none}.group-dorm-text[data-v-497aa86b]{display:flex;flex-direction:column}.group-dorm-name[data-v-497aa86b]{font-weight:500}.group-dorm-meta[data-v-497aa86b]{font-size:12px;color:#9ca3af}.group-dorm-item.empty[data-v-497aa86b]{justify-content:center;color:#6b7280}.hint[data-v-497aa86b]{margin-top:10px;font-size:12px;color:#9ca3af}@media (max-width:600px){.group-dorm-item[data-v-497aa86b]{font-size:13px}.group-toolbar[data-v-497aa86b]{flex-direction:column;align-items:flex-start}.group-toolbar .btn[data-v-497aa86b]{width:100%}}.row[data-v-1e6bed08]{display:flex;align-items:center;font-size:14px;margin-top:6px;color:#e5e7eb}.row[data-v-1e6bed08]:first-child{margin-top:0}.controls-row[data-v-1e6bed08]{margin-top:10px;gap:10px;flex-wrap:wrap}.file-name[data-v-1e6bed08]{margin-left:4px}@media (max-width:600px){.controls-row .btn[data-v-1e6bed08]{flex:1}}.terminal-header[data-v-7d69e643]{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}.terminal-header h2[data-v-7d69e643]{font-size:20px;font-weight:600;color:#f9fafb}.status-box[data-v-7d69e643]{display:flex;align-items:center;font-size:14px;gap:6px;color:#e5e7eb}.terminal-body .row[data-v-7d69e643]{display:flex;align-items:flex-start;font-size:14px;margin-top:6px;color:#e5e7eb}.label[data-v-7d69e643]{margin-right:4px;padding-top:6px}.time-config[data-v-7d69e643]{display:flex;flex-direction:column;gap:10px;margin-left:0;width:100%;max-width:520px}.time-row[data-v-7d69e643]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dash[data-v-7d69e643]{margin:0 2px}.desc[data-v-7d69e643]{margin:16px 0;font-size:13px;color:#9ca3af}.bottom-actions[data-v-7d69e643]{margin-top:18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}@media (max-width:768px){.terminal-header[data-v-7d69e643]{flex-direction:column;align-items:flex-start}.terminal-header h2[data-v-7d69e643]{font-size:18px}.terminal-body .row[data-v-7d69e643]{flex-direction:column;align-items:flex-start}.time-config[data-v-7d69e643]{margin-left:0}.bottom-actions .btn[data-v-7d69e643]{width:100%}}.alarm-header[data-v-09a82402]{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;color:#e5e7eb}.sub-title[data-v-09a82402]{font-size:12px;color:#9ca3af}.main-title[data-v-09a82402]{font-size:19px;font-weight:600;color:#f9fafb}.right-actions[data-v-09a82402]{display:flex;align-items:center;font-size:14px;gap:10px}.title[data-v-09a82402]{white-space:nowrap}.table-wrapper[data-v-09a82402]{width:100%;overflow-x:auto;margin-bottom:8px}.table[data-v-09a82402]{width:100%;border-collapse:collapse}.table td[data-v-09a82402],.table th[data-v-09a82402]{padding:12px;text-align:center}.table th[data-v-09a82402]{font-weight:700}.alert-popup[data-v-09a82402]{position:fixed;top:20px;left:20px;background:linear-gradient(145deg,#dc3545,#ff5e62);color:#fff;padding:20px;border-radius:12px;box-shadow:0 10px 20px rgba(0,0,0,.1);width:300px;max-width:100%;transition:all .3s ease}.alert-message[data-v-09a82402]{font-size:16px}.alert-message h4[data-v-09a82402]{margin-bottom:10px;font-weight:700}.alert-message p[data-v-09a82402]{margin:5px 0}.close-btn[data-v-09a82402]{position:absolute;top:10px;right:10px;font-size:18px;color:#fff;background:transparent;border:none;cursor:pointer;border-radius:50%;padding:5px}.close-btn[data-v-09a82402]:hover{background-color:hsla(0,0%,100%,.2)}.fade-enter-active[data-v-09a82402],.fade-leave-active[data-v-09a82402]{transition:opacity .3s ease,transform .3s ease}.fade-enter[data-v-09a82402],.fade-leave-to[data-v-09a82402]{opacity:0;transform:scale(.95)}@media (max-width:768px){.alarm-header[data-v-09a82402]{flex-direction:column;align-items:flex-start}.right-actions[data-v-09a82402]{align-self:stretch;justify-content:space-between}.right-actions .btn[data-v-09a82402]{flex-shrink:0}.table-wrapper[data-v-09a82402]{overflow-x:scroll}}.alarm-header[data-v-8c76be2a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;color:#e5e7eb}.table-wrapper[data-v-8c76be2a]{height:40%}.sub-title[data-v-8c76be2a]{font-size:12px;color:#9ca3af}.main-title[data-v-8c76be2a]{font-size:19px;font-weight:600;color:#f9fafb}.dorm-name[data-v-8c76be2a]{line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none;border:none;text-align:center;vertical-align:middle}.dorm-name[data-v-8c76be2a]:empty{color:#9ca3af}.right-actions[data-v-8c76be2a]{display:flex;align-items:center;font-size:14px;gap:10px}.title[data-v-8c76be2a]{white-space:nowrap}.table-wrapper[data-v-8c76be2a]{margin-bottom:8px}@media (max-width:1024px){.table-wrapper[data-v-8c76be2a]{max-height:50vh}}@media (max-width:768px){.table-wrapper[data-v-8c76be2a]{max-height:40vh}}.table-wrapper[data-v-8c76be2a]{max-height:40vh;overflow-y:auto;overflow-x:hidden}.table-box[data-v-8c76be2a]{margin-bottom:0;padding:20px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.05)}h3[data-v-8c76be2a]{font-size:18px;font-weight:600;margin-bottom:10px;color:#4b5563}.table-wrapper[data-v-8c76be2a]{width:100%;overflow-x:auto}.table[data-v-8c76be2a]{width:100%;border-collapse:collapse;text-align:center}.table td[data-v-8c76be2a],.table th[data-v-8c76be2a]{padding:12px;text-align:center;vertical-align:middle}@media (max-width:768px){.alarm-header[data-v-8c76be2a]{flex-direction:column;align-items:flex-start}.right-actions[data-v-8c76be2a]{align-self:stretch;justify-content:space-between}.right-actions .btn[data-v-8c76be2a]{flex-shrink:0}.table-wrapper[data-v-8c76be2a]{overflow-x:scroll}}*{box-sizing:border-box;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}body{background:#020617;color:#e5e7eb;font-size:16px}.app-container{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding:20px 28px 28px;width:100%}.card{border-radius:14px;padding:20px 22px;background:linear-gradient(160deg,#020617,#020617);border:1px solid #1f2937;box-shadow:0 12px 28px rgba(0,0,0,.65)}.btn{border:none;padding:10px 22px;min-height:44px;border-radius:999px;cursor:pointer;font-size:15px;white-space:nowrap;transition:background .15s ease-out,transform .12s ease-out}.btn-primary{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#f9fafb;box-shadow:0 6px 16px rgba(37,99,235,.45)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(37,99,235,.6)}.btn-ghost{background:#111827;border:1px solid #4b5563;color:#e5e7eb}.btn-ghost:hover{background:#1f2937}.btn-text{background:transparent;border:none;color:#93c5fd;padding:4px 6px;min-height:auto}.btn+.btn{margin-left:8px}button:disabled,button[disabled]{opacity:.55;cursor:not-allowed;box-shadow:none!important;transform:none!important}input,select{border-radius:10px;border:1px solid #4b5563;padding:10px 12px;font-size:15px;outline:none;background-color:#020617;color:#e5e7eb;min-height:44px;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}input::-moz-placeholder,select::-moz-placeholder{color:#6b7280}input::placeholder,select::placeholder{color:#6b7280}input:focus,select:focus{border-color:#60a5fa;box-shadow:0 0 0 1px rgba(37,99,235,.7);background-color:#020617}.table{width:100%;border-collapse:collapse;margin-top:14px;overflow:hidden;border-radius:12px}.table td,.table th{border:1px solid #1f2937;padding:10px 12px;font-size:15px;text-align:center}.table th{font-weight:600;color:#e5e7eb}.table tbody tr:nth-child(odd),.table th{background:#020617}.table tbody tr:nth-child(2n){background:#030712}.table tbody tr:hover{background:#111827}.tag{display:inline-block;padding:4px 11px;border-radius:999px;font-size:13px;font-weight:500}.tag-online{background:rgba(22,163,74,.18);color:#bbf7d0;border:1px solid rgba(34,197,94,.7)}.tag-offline{background:rgba(220,38,38,.18);color:#fecaca;border:1px solid rgba(248,113,113,.7)}.link-back{margin-top:16px;display:inline-block;color:#93c5fd;cursor:pointer;font-size:14px}.progress-bar{width:100%;height:8px;border-radius:999px;background:#111827;overflow:hidden;margin-top:8px}.progress-inner{height:100%;background:linear-gradient(90deg,#22c55e,#4ade80)}.layout-flex{display:flex;gap:20px}.layout-left{flex:0.95}.layout-right{flex:1.3}@media (max-width:1000px){.main-content{padding:16px 18px 20px}.layout-flex{flex-direction:column}.layout-left,.layout-right{flex:none;width:100%}.card{padding:16px 18px}.table td,.table th{padding:8px 10px;font-size:14px}}@media (max-width:600px){.main-content{padding:10px}.btn{padding:8px 14px}.btn,input,select{font-size:14px;min-height:40px}.layout-flex{gap:14px}}