/* 学园盾 campus UI — presentation layer, shared by all existing roles. */
:root{--xyd-blue:#2468ed;--xyd-blue-dark:#1854cc;--xyd-ink:#172b49;--xyd-text:#52627a;--xyd-muted:#7b8aa1;--xyd-border:#e7edf5;--xyd-bg:#f4f7fb;--xyd-radius:12px;color-scheme:light}
html,body,#app{font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--xyd-ink);font-size:14px;-webkit-font-smoothing:antialiased}
a{color:var(--xyd-blue);text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,[role=menuitem]:focus-visible{outline:3px solid #96b9ff;outline-offset:3px}
*{scrollbar-width:thin;scrollbar-color:#cbd5e3 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#cbd5e3;border-radius:10px}::selection{background:#d9e6ff;color:#174cb4}
/* Login */
#login[id="login"].xyd-login{height:100%;min-height:0;display:grid;grid-template-columns:56% 44%;background:#fff;overflow:auto;position:relative}
.xyd-story{position:relative;display:flex;flex-direction:column;min-height:780px;background:radial-gradient(ellipse at 80% 53%,#d6efff 0%,transparent 50%),linear-gradient(145deg,#f1f8ff 0%,#edf5ff 48%,#e5f0ff 100%);padding:42px 8.2%;overflow:hidden;box-sizing:border-box}
.xyd-story:after{content:"";position:absolute;width:460px;height:460px;border:1px solid #fff9;border-radius:50%;right:-235px;top:-240px;pointer-events:none}
.xyd-login-brand{display:flex;align-items:center;gap:11px;position:relative;z-index:1;color:var(--xyd-ink);width:fit-content}.xyd-login-brand img{width:49px;height:55px;object-fit:contain}.xyd-login-brand strong{display:block;font-size:25px;letter-spacing:3px;font-weight:750}.xyd-login-brand span{display:block;font-size:11px;letter-spacing:2px;color:#637d9d;margin-top:5px}
.xyd-story-main{flex:1;display:flex;flex-direction:column;justify-content:center;padding:34px 0 26px;position:relative;z-index:1}.xyd-eyebrow{display:flex;align-items:center;gap:9px;color:#52759e;letter-spacing:3px;font-size:12px;font-weight:500}.xyd-mini-line{display:block;width:22px;height:2px;background:#3b7fea}
.xyd-story h1{font-size:clamp(36px,3.35vw,54px);line-height:1.4;letter-spacing:1px;font-weight:750;margin:21px 0 16px;color:#173656}.xyd-story h1 span{color:#2468ed}.xyd-story-copy{font-size:14px;line-height:1.95;color:#657f9b;letter-spacing:.5px}
.xyd-emblem-scene{height:285px;position:relative;margin:0 0 12px;isolation:isolate;flex-shrink:0}.xyd-hero-emblem{position:absolute;left:50%;top:0;width:239px;height:269px;object-fit:contain;transform:translateX(-50%);filter:drop-shadow(0 25px 18px #287aff1c);z-index:2}.xyd-orbit{position:absolute;left:50%;top:55%;border:1px solid #89baff52;border-radius:50%;transform:translate(-50%,-50%) rotate(-13deg)}.xyd-orbit-one{width:400px;height:170px}.xyd-orbit-two{width:480px;height:219px;border-style:dashed;border-color:#a7c7ea80;transform:translate(-50%,-50%) rotate(16deg)}.xyd-emblem-platform{position:absolute;width:200px;height:30px;left:50%;bottom:20px;transform:translateX(-50%);background:#9bc7ff66;filter:blur(18px);border-radius:100%}.xyd-scene-label{position:absolute;background:#ffffffed;border:1px solid #fff;padding:12px 16px;border-radius:10px;box-shadow:0 12px 30px #2162b00a;display:flex;gap:8px;align-items:center;color:#50769f;font-size:12px;z-index:3}.xyd-scene-label i{font-size:18px;color:#347ae9}.xyd-scene-school{top:70px;left:0}.xyd-scene-shield{bottom:51px;right:0}.xyd-scene-shield i{color:#23a38c}.xyd-orbit-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:#7bb2ff;box-shadow:0 0 0 5px #7bb2ff1a}.xyd-dot-one{top:31px;right:54px}.xyd-dot-two{bottom:32px;left:72px;width:5px;height:5px;background:#4cd0c9}
.xyd-features{display:flex;gap:18px;justify-content:space-between;padding-top:21px;border-top:1px solid #c9dcf080}.xyd-feature{display:flex;gap:10px;align-items:flex-start;white-space:nowrap}.xyd-feature-icon{font-size:21px;color:#4280d5;padding-top:2px}.xyd-feature strong{display:block;font-weight:600;font-size:13px;letter-spacing:.5px;color:#325777}.xyd-feature span:not(.xyd-feature-icon){display:block;font-size:10px;color:#7e96ae;margin-top:6px}.xyd-story-footer{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#7893b1;letter-spacing:1px}.xyd-story-footer>span:first-child{letter-spacing:3px;font-size:9px;font-weight:600}
.xyd-signin{display:flex;flex-direction:column;padding:42px 11.4% 27px;box-sizing:border-box;min-height:780px;position:relative}.xyd-signin-top{display:flex;justify-content:flex-end}.xyd-platform-pill{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#8190a4;border:1px solid #e9eef5;padding:7px 10px;border-radius:20px}.xyd-platform-pill i{font-size:13px}.xyd-login-panel{width:100%;max-width:380px;margin:auto;box-sizing:border-box;padding:38px 0}.xyd-form-emblem{width:57px;height:65px;object-fit:contain;margin:0 0 25px -2px}.xyd-welcome{font-size:13px;color:#8391a6;margin-bottom:12px;letter-spacing:1px}.xyd-login-panel h2{font-size:30px;line-height:1.35;color:#192e4c;letter-spacing:1px;font-weight:700}.xyd-login-subtitle{color:#8592a5;font-size:13px;line-height:1.6;margin-top:13px}.xyd-login-form{margin-top:38px}.xyd-field-label{display:block;font-size:13px;line-height:20px;color:#3a4e68;font-weight:600;margin-bottom:9px}#login[id="login"] .xyd-login-form .el-form-item{margin-bottom:25px}#login[id="login"] .el-form-item__content{margin-left:0!important;line-height:normal}#login[id="login"] .el-input__inner{height:49px;line-height:49px;border:1px solid #e3eaf3;background:#f9fbfd;border-radius:7px;padding-left:43px;color:#203652;font-size:13px;transition:border-color .16s,box-shadow .16s}#login[id="login"] .el-input__inner::placeholder{color:#9ba9ba}#login[id="login"] .el-input__inner:hover{border-color:#b6cbed}#login[id="login"] .el-input__inner:focus{border-color:var(--xyd-blue);box-shadow:0 0 0 3px #2468ed13;background:white}#login[id="login"] .el-input__prefix{left:12px;color:#879cb6}#login[id="login"] .el-input__icon{line-height:49px;font-size:17px}#login[id="login"] .el-input__suffix{right:11px}#login[id="login"] .el-form-item__error{padding-top:5px;font-size:11px}#login[id="login"] .el-form-item.is-error .el-input__inner{border-color:#e97979}#loginBTtn.xyd-submit{display:flex;align-items:center;justify-content:center;position:relative;width:100%;height:49px;border-radius:7px;border:1px solid #2468ed;background:linear-gradient(100deg,#327af4,#2465e7);box-shadow:0 7px 17px #2468ed1c;font-size:15px;font-weight:600;color:white;margin:31px 0 0;transition:background .16s,box-shadow .16s}#loginBTtn.xyd-submit>span{display:flex;align-items:center;justify-content:center;width:100%}#loginBTtn .el-icon-right{position:absolute;right:19px;font-size:18px}#loginBTtn.xyd-submit:hover{background:var(--xyd-blue-dark);box-shadow:0 9px 22px #2468ed28}#loginBTtn.xyd-submit:focus-visible{outline:3px solid #a4c4ff;outline-offset:3px}.xyd-account-help{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11px;color:#93a0b2;margin-top:21px}.xyd-login-note{display:flex;gap:7px;justify-content:center;align-items:center;margin-top:46px;border-top:1px solid #edf1f6;padding-top:24px;color:#93a4b9;font-size:10px;letter-spacing:.3px}.xyd-login-note i{color:#89a1bd;font-size:12px}.xyd-signin-footer{text-align:center;font-size:10px;color:#a0adbe;letter-spacing:1px}
/* Header / navigation */
#layout[id="layout"] .outsideContainer .el-header{height:76px!important;background:#fff!important;border-bottom:1px solid var(--xyd-border);flex-shrink:0;position:relative;z-index:20}#header-wrapper.xyd-header{box-sizing:border-box;padding:0 27px;color:var(--xyd-ink);gap:24px;font-weight:400}.xyd-header-brand{display:flex;align-items:center;gap:11px;color:var(--xyd-ink);flex-shrink:0}.xyd-header-brand img{width:41px;height:47px;object-fit:contain}.xyd-header-brand strong{display:block;font-size:19px;letter-spacing:.4px;font-weight:650}.xyd-header-brand span{display:block;font-size:10px;color:#8a99af;letter-spacing:2px;margin-top:6px}.xyd-header-actions{display:flex;gap:22px;align-items:center;min-width:0}.xyd-tenant{display:flex;gap:7px;align-items:center;font-size:12px;color:#7a8ba1;max-width:240px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.xyd-tenant i{color:#7191b9;font-size:15px}.xyd-icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:7px;background:transparent;color:#7890ae;width:34px;height:34px;cursor:pointer;font-size:18px;flex-shrink:0}.xyd-icon-button:hover{background:#edf4ff;color:var(--xyd-blue)}.xyd-user-button{display:flex;align-items:center;gap:9px;background:transparent;border:none;padding:4px 0;cursor:pointer;color:#495e79;font-size:12px}.xyd-avatar{display:flex;align-items:center;justify-content:center;background:#edf3ff;color:#5484d9;width:33px;height:33px;border-radius:50%;font-size:17px}.xyd-username{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xyd-user-button>.el-icon-arrow-down{font-size:10px;margin-left:3px;color:#94a5bb}
#layout[id="layout"] .outsideContainer .insideContainer{height:calc(100% - 76px);min-height:0;overflow:hidden}#layout[id="layout"] .outsideContainer .insideContainer .el-aside{padding:0!important;background:white!important;color:var(--xyd-text);border-right:1px solid var(--xyd-border);overflow-x:hidden}#layout[id="layout"] .outsideContainer .insideContainer .el-main{background:var(--xyd-bg)!important;z-index:auto;min-width:0;min-height:0;overflow:hidden;height:100%;padding:0;box-sizing:border-box;display:flex;flex-direction:column}
#menuTree{display:flex;flex-direction:column;min-height:100%;box-sizing:border-box;padding:13px 12px 16px;width:222px}#menuTree.xyd-nav-collapsed{width:72px;padding:13px 7px 16px}#menuTree .el-menu{width:100%;flex:1}#menuTree .el-menu--collapse{width:56px}#menuTree .xyd-nav-heading{display:flex;align-items:center;justify-content:space-between;padding:1px 8px 12px 12px;color:#9baabd;font-size:10px;letter-spacing:1.5px}#menuTree.xyd-nav-collapsed .xyd-nav-heading{padding:1px 0 12px;justify-content:center}#menuTree.xyd-nav-collapsed .xyd-nav-heading>span{display:none}#menuTree .el-menu .el-menu-item,#menuTree .el-menu .el-submenu__title{height:43px;line-height:43px;border-radius:7px;font-size:13px!important;font-weight:400;margin-bottom:5px;padding-left:13px!important;display:flex;align-items:center;color:#5d6e84!important}#menuTree .el-menu .el-menu-item i,#menuTree .el-menu .el-submenu__title i{color:#8497b1;font-size:19px;margin-right:13px;width:20px;text-align:center}#menuTree .el-menu .el-menu-item:hover,#menuTree .el-menu .el-submenu__title:hover{background:#f4f7fb!important;color:#2468ed!important}#menuTree .el-menu .el-menu-item.is-active{background:#eaf2ff!important;color:#2468ed!important;font-weight:600}#menuTree .el-menu .el-menu-item.is-active i{color:#2468ed}#menuTree .el-menu .el-submenu .el-menu-item{padding-left:27px!important;font-size:12px!important}#menuTree .el-menu--collapse .el-menu-item{padding:0!important;justify-content:center}#menuTree .el-menu--collapse .el-menu-item .el-tooltip{padding:0!important;display:flex;align-items:center;justify-content:center}#menuTree .el-menu--collapse .el-menu-item i{margin-right:0}.xyd-nav-footer{display:flex;gap:7px;align-items:center;padding:20px 12px 4px;color:#99abc0;font-size:10px;white-space:nowrap}.xyd-nav-footer i{font-size:14px;color:#72a1db}.xyd-nav-collapsed .xyd-nav-footer{justify-content:center;padding:20px 0 4px}.xyd-nav-collapsed .xyd-nav-footer span{display:none}
/* Route title */
.xyd-page-heading{display:flex;justify-content:space-between;align-items:center;padding:22px 26px 18px;flex-shrink:0;min-height:80px;box-sizing:border-box;gap:12px}.xyd-page-heading h2{font-size:21px;line-height:1.4;font-weight:650;color:#1c3351;letter-spacing:.5px}.xyd-page-heading p{font-size:11px;color:#8b9bb0;line-height:1.5;margin-top:6px}.xyd-page-heading .xyd-section-label{font-size:10px;color:#9aacc3;letter-spacing:2px;white-space:nowrap}
/* Shared pages / Element UI */
#layout[id="layout"] .el-main>.page:not(.homePage){margin:0 24px 22px;padding:22px;background:white;border:1px solid var(--xyd-border);border-radius:var(--xyd-radius);height:auto;min-height:0;flex:1;box-sizing:border-box;overflow:auto}#layout[id="layout"] .el-main>.tablePage{margin:0 24px 22px;padding:22px;background:#fff;border:1px solid var(--xyd-border);border-radius:12px;height:auto;min-height:0;flex:1;overflow:auto}#layout[id="layout"] .page .subMenuContainer{min-height:0;gap:20px}#layout[id="layout"] .page .subMenuPage{min-height:0}#layout[id="layout"] .page .searchBox{gap:12px;flex-wrap:wrap;align-items:center;padding-bottom:17px;border-bottom:1px solid #edf1f7}#layout[id="layout"] .page .searchBox .el-form{display:flex;flex-wrap:wrap;gap:10px 0;align-items:center}#layout[id="layout"] .page .searchBox .el-form-item{margin-right:14px}#layout[id="layout"] .rightButton{gap:9px;flex-wrap:wrap}#layout[id="layout"] .rightButton .el-button+.el-button{margin-left:0}#layout[id="layout"] .page .tableBox{min-height:180px;height:auto;gap:20px;overflow:auto}#layout[id="layout"] .page .el-table{color:#52647c;font-size:12px;border-color:#edf1f6}#layout[id="layout"] .page .el-table th.el-table__cell{background:#f5f8fc!important;color:#647791;font-size:12px;font-weight:600;height:48px;padding:10px 0;border-color:#eaf0f7}#layout[id="layout"] .page .el-table th .cell{line-height:23px}#layout[id="layout"] .page .el-table td.el-table__cell{border-color:#eef2f7;padding:13px 0}#layout[id="layout"] .page .el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafcfe!important}#layout[id="layout"] .page .el-table--enable-row-hover .el-table__body tr:hover>td{background:#f0f6ff!important}#layout[id="layout"] .page .el-table .cell{padding-left:16px;padding-right:16px;line-height:22px}#layout[id="layout"] .el-table__empty-block{min-height:220px;background:linear-gradient(#fff,#fcfdff)}#layout[id="layout"] .el-table__empty-text{color:#9badc2;font-size:12px}#layout[id="layout"] .el-table__empty-text:before{content:"";display:block;margin:0 auto 6px;width:39px;height:29px;border:1px solid #d5dfed;border-radius:6px;background:repeating-linear-gradient(to bottom,transparent 0 7px,#edf2f9 7px 9px);box-shadow:0 8px 0 -5px #f0f4fa}#layout[id="layout"] .el-table:before{background:#eaf0f7}#layout[id="layout"] .el-form-item__label{font-size:12px;color:#61748e}#layout[id="layout"] .el-input__inner,#layout[id="layout"] .el-textarea__inner,.el-dialog .el-input__inner,.el-dialog .el-textarea__inner{border-color:#e1e8f1;border-radius:6px;color:#405774;font-size:12px}#layout[id="layout"] .el-input__inner::placeholder,.el-dialog .el-input__inner::placeholder{color:#a3b0c1}#layout[id="layout"] .el-input__inner:focus,.el-dialog .el-input__inner:focus{border-color:#5b8ff1;box-shadow:0 0 0 2px #2468ed0d}#layout[id="layout"] .el-input.is-disabled .el-input__inner{background:#f6f8fb;color:#8f9daf}#layout[id="layout"] .el-button,.el-dialog .el-button{border-radius:6px;font-size:12px;border-color:#dfe7f1;color:#607591}#layout[id="layout"] .el-button:not(.el-button--text):hover{color:#2468ed;border-color:#bad0f9;background:#f1f6ff}#layout[id="layout"] .el-button--primary,.el-dialog .el-button--primary{color:white;background:#2468ed;border-color:#2468ed;box-shadow:0 3px 7px #2468ed0c}#layout[id="layout"] .el-button--primary:not(.el-button--text):hover,.el-dialog .el-button--primary:hover{color:white;background:#185ad8;border-color:#185ad8}#layout[id="layout"] .el-button--success,.el-dialog .el-button--success{color:white;background:#219b83;border-color:#219b83}#layout[id="layout"] .el-button--danger,.el-dialog .el-button--danger{color:white;background:#e0636a;border-color:#e0636a}#layout[id="layout"] .el-button--warning,.el-dialog .el-button--warning{color:white;background:#d9953c;border-color:#d9953c}#layout[id="layout"] .el-button--text{border:0;background:transparent;color:#3876df;padding-left:3px;padding-right:3px;box-shadow:none}#layout[id="layout"] .el-pagination{font-weight:400;font-size:12px;flex-wrap:wrap;gap:6px;padding-top:8px}#layout[id="layout"] .el-pagination.is-background .el-pager li:not(.disabled).active{background:#2468ed;border-radius:5px}#layout[id="layout"] .el-pagination.is-background .el-pager li{background:#f4f7fb;color:#6f8096;border-radius:5px;font-weight:400}#layout[id="layout"] .el-tabs__nav-wrap:after{background:#edf1f6;height:1px}#layout[id="layout"] .el-tabs__item{font-size:13px;font-weight:500;color:#7b8ba1}#layout[id="layout"] .el-tabs__item.is-active{color:#2468ed}#layout[id="layout"] .el-tabs__active-bar{background:#2468ed;height:3px;border-radius:3px}#layout[id="layout"] .el-tag{border-radius:4px;border-color:#dce9ff;background:#eff5ff;color:#5083d3;font-weight:400}#layout[id="layout"] .el-tag--success{border-color:#d0ece2;background:#edf8f3;color:#398c74}#layout[id="layout"] .el-tag--danger{border-color:#f3d8dc;background:#fcf0f2;color:#c96d7b}#layout[id="layout"] .el-radio__input.is-checked .el-radio__inner,#layout[id="layout"] .el-checkbox__input.is-checked .el-checkbox__inner{border-color:#2468ed;background:#2468ed}#layout[id="layout"] .el-radio__input.is-checked+.el-radio__label,#layout[id="layout"] .el-checkbox__input.is-checked+.el-checkbox__label{color:#2468ed}#layout[id="layout"] .el-radio-button__orig-radio:checked+.el-radio-button__inner{background:#2468ed;border-color:#2468ed;box-shadow:-1px 0 0 0 #2468ed}#layout[id="layout"] .el-radio-button__inner{font-size:12px}#layout[id="layout"] .el-tree-node__content{height:36px;border-radius:5px;color:#61758e}#layout[id="layout"] .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background:#edf4ff;color:#2468ed}#layout[id="layout"] .composite_page .left_tree{border-color:#edf1f6}#layout[id="layout"] .composite_page{min-height:0}#layout[id="layout"] .formPage{content-visibility:visible;scrollbar-width:thin;min-height:0;overflow:auto}#layout[id="layout"] .formPage .pageForm{width:min(520px,100%);height:auto;padding:24px 16px 0;box-sizing:border-box}#layout[id="layout"] .formPage .footBtn{padding-bottom:24px}#layout[id="layout"] .page .el-divider__text{color:#5a7190;font-size:12px}
.el-dialog{border-radius:12px;box-shadow:0 24px 80px #102c5930;max-width:calc(100vw - 32px)}.el-dialog__header{padding:22px 24px 18px;border-bottom:1px solid #edf1f6}.el-dialog__title{font-size:16px;color:#2b4262;font-weight:600}.el-dialog__body{padding:24px;color:#60738e}.el-dialog__footer{padding:16px 24px 22px;border-top:1px solid #edf1f6}.el-message-box{border-radius:12px;max-width:calc(100vw - 36px);box-shadow:0 20px 70px #17345826;padding-bottom:18px}.el-message-box__header{padding:22px 22px 16px}.el-message-box__title{font-size:16px;color:#294564}.el-message-box__content{padding:10px 22px 20px}.el-message-box__btns{padding:8px 22px 0}.el-message-box .el-button--primary{background:#2468ed;border-color:#2468ed}.el-message{border-radius:9px;border-width:1px;max-width:calc(100vw - 24px)}.el-dropdown-menu{padding:7px;border:1px solid #e6edf7;border-radius:9px;box-shadow:0 8px 30px #213d6520}.el-dropdown-menu__item{font-size:12px;border-radius:5px;padding:0 14px}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background:#edf4ff;color:#2468ed}.alarmDialog .el-dialog{background:#fff;border:2px solid #e7666e}.alarmDialog .el-dialog__body{color:#4a607c}.alarmDialog .el-dialog__title{color:#d94754}.alarmDialog .alarm_content{line-height:1.6}
/* Live campus dashboard */
#home.xyd-dashboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:116px 350px 260px;grid-template-areas:"stats stats stats" "map map alarms" "trend bully sos";gap:18px;padding:0 24px 24px;background:var(--xyd-bg);color:var(--xyd-ink);height:auto;min-height:0;flex:1;overflow:auto;align-content:start;box-sizing:border-box}
.xyd-dashboard-card{background:#fff;border:1px solid var(--xyd-border);border-radius:12px;overflow:hidden;min-width:0;min-height:0;box-sizing:border-box;box-shadow:0 2px 5px #264a7003}.xyd-dashboard-map{grid-area:map;display:flex;flex-direction:column}.xyd-dashboard-alarms{grid-area:alarms}.xyd-dashboard-trend{grid-area:trend;padding:18px 14px 8px}.xyd-dashboard-bully{grid-area:bully;padding:18px 14px 8px}.xyd-dashboard-sos{grid-area:sos;padding:18px 14px 8px}.xyd-dashboard-stats{grid-area:stats}#home .xyd-dashboard-card>#main_one,#home .xyd-dashboard-card>#main_two,#home .xyd-dashboard-card>#main_three{height:100%;width:100%}.xyd-card-heading{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid #eff3f8;gap:12px;flex-shrink:0;box-sizing:border-box;width:100%}.xyd-card-heading h3{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#314966}.xyd-card-heading h3 i{font-size:16px;color:#83a0c5}.xyd-card-heading a{font-size:10px;color:#6f92c4}.xyd-card-heading a:hover{color:#2468ed}.xyd-subtle{font-size:10px;color:#9baabd}.xyd-map-content{flex:1;position:relative;min-height:0;background:#edf2f7}.xyd-map-content #myMap{width:100%;height:100%}.xyd-stats{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:18px}.xyd-stat{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;background:white;border:1px solid var(--xyd-border);border-radius:12px;min-width:0;gap:10px}.xyd-stat-label{font-size:12px;color:#8a9bb1}.xyd-stat-value{margin-top:9px;color:#284668;font-size:32px;line-height:1;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.5px}.xyd-stat-value>span{font-size:11px;color:#a0aec0;font-weight:400;margin-left:8px}.xyd-stat-icon{width:48px;height:48px;border-radius:12px;background:#ecf4ff;color:#4b8de8;display:flex;align-items:center;justify-content:center;font-size:25px}.xyd-stat-all .xyd-stat-icon{background:#edf8f5;color:#5ca68f}.xyd-stat-links{background:linear-gradient(112deg,#edf4ff,#e9f2ff);border:1px solid #dae8fb;border-radius:12px;padding:20px 23px;display:flex;flex-direction:column;justify-content:space-between;gap:14px;min-width:0}.xyd-stat-links strong{font-size:13px;color:#4a6f9e;font-weight:600}.xyd-stat-links span{font-size:10px;color:#839ebe;margin-left:10px}.xyd-stat-links>div:last-child{display:flex;gap:18px}.xyd-stat-links a{display:flex;align-items:center;gap:14px;font-size:11px;color:#5781b7}.xyd-stat-links a:hover{color:#1854cc}#home .xyd-alarm-feed{padding:0;gap:0;height:100%;display:flex;flex-direction:column;align-items:stretch}#home .home_child_list{padding:18px;box-sizing:border-box;min-height:0;flex:1;height:auto}#home .home_child_list_cell{padding:10px 0;align-items:flex-start;border-bottom:1px solid #edf2f7;color:#ad6c6e;font-size:11px;line-height:1.7}#home .home_child_list_cell .list_time{font-weight:400;color:#9aaabd;font-size:10px;min-width:55px}#home .home_child_list_cell .right_text{font-size:11px}.xyd-no-alerts{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;flex:1;height:100%;min-height:120px}.xyd-no-alerts>i{color:#a7c6df;background:#f0f6fc;width:55px;height:55px;border-radius:50%;font-size:27px;display:flex;align-items:center;justify-content:center;margin-bottom:4px}.xyd-no-alerts strong{color:#90a2b8;font-size:12px;font-weight:400}.xyd-no-alerts span{font-size:10px;color:#b0bdcc}
@media(min-width:1600px){.xyd-story{padding-left:11%;padding-right:11%}.xyd-emblem-scene{height:315px}.xyd-hero-emblem{width:265px;height:295px}.xyd-signin{padding-left:15%;padding-right:15%}.xyd-login-panel{max-width:400px}.xyd-story-main{padding-top:45px;padding-bottom:45px}}
@media(max-height:800px) and (min-width:901px){.xyd-story,.xyd-signin{min-height:680px;padding-top:28px}.xyd-story-main{padding-top:24px;padding-bottom:22px}.xyd-story h1{font-size:40px;margin:15px 0 11px}.xyd-emblem-scene{height:245px;margin-bottom:0}.xyd-hero-emblem{width:217px;height:238px}.xyd-login-panel{padding:24px 0}.xyd-form-emblem{width:48px;height:54px;margin-bottom:17px}.xyd-login-form{margin-top:29px}.xyd-login-note{margin-top:33px}.xyd-features{padding-top:16px}.xyd-orbit-one{width:340px}.xyd-orbit-two{width:410px}.xyd-scene-label{padding:10px 12px}}
@media(max-width:1150px){.xyd-story{padding-left:7%;padding-right:7%}.xyd-signin{padding-left:10%;padding-right:10%}.xyd-feature{gap:6px}.xyd-features{gap:8px}.xyd-feature span:not(.xyd-feature-icon){font-size:9px}.xyd-tenant{max-width:160px}.xyd-header-actions{gap:14px}.xyd-stat-links span{display:none}}
@media(max-width:900px){#login[id="login"].xyd-login{display:block;background:radial-gradient(ellipse at 50% 0,#e8f3ff,transparent 50%),#fff}.xyd-story{display:none}.xyd-signin{min-height:100%;padding:26px 28px 22px}.xyd-login-panel{max-width:380px;padding:34px 0;margin:auto}.xyd-signin-top{justify-content:center}.xyd-platform-pill{font-size:10px;background:#ffffff9c}.xyd-form-emblem{display:block;width:64px;height:73px;margin:0 auto 27px}.xyd-welcome,.xyd-login-panel h2,.xyd-login-subtitle{text-align:center}.xyd-login-panel h2{font-size:27px}.xyd-login-form{margin-top:32px}.xyd-login-note{margin-top:33px}.xyd-signin-footer{padding-top:12px}#header-wrapper.xyd-header{padding:0 17px;gap:10px}.xyd-header-brand strong{font-size:16px}.xyd-header-brand span{font-size:9px}.xyd-tenant{display:none}.xyd-header-actions{gap:8px}.xyd-page-heading{padding:19px 18px 15px}.xyd-page-heading h2{font-size:19px}.xyd-page-heading .xyd-section-label{display:none}#home.xyd-dashboard{padding:0 16px 18px;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto 330px 260px 260px;grid-template-areas:"stats stats" "map map" "alarms trend" "bully sos";gap:14px}.xyd-stats{grid-template-columns:1fr 1fr;gap:14px}.xyd-stat-links{display:none}.xyd-stat{padding:18px}#layout[id="layout"] .el-main>.page:not(.homePage),#layout[id="layout"] .el-main>.tablePage{margin:0 16px 18px;padding:17px}.xyd-stat-icon{width:41px;height:41px;font-size:22px}.xyd-stat-value{font-size:28px}#layout[id="layout"] .page .searchBox{align-items:flex-start}#layout[id="layout"] .composite_page{overflow:auto}}
@media(max-width:600px){#layout[id="layout"] .outsideContainer .el-header{height:68px!important}#layout[id="layout"] .outsideContainer .insideContainer{height:calc(100% - 68px)}#header-wrapper.xyd-header{padding:0 12px}.xyd-header-brand{gap:7px;flex-shrink:1;min-width:0}.xyd-header-brand img{width:32px;height:38px;flex-shrink:0}.xyd-header-brand strong{font-size:13px;letter-spacing:0}.xyd-header-brand span{font-size:8px;letter-spacing:1px;margin-top:5px}.xyd-username,.xyd-fullscreen{display:none}.xyd-header-actions{gap:0}.xyd-user-button{gap:4px}.xyd-user-button>.el-icon-arrow-down{display:none}.xyd-avatar{width:29px;height:29px;font-size:14px}#menuTree{width:180px;padding-left:8px;padding-right:8px}#menuTree.xyd-nav-collapsed{width:58px;padding-left:4px;padding-right:4px}#menuTree .el-menu--collapse{width:48px}#menuTree .el-menu .el-menu-item i{font-size:18px}.xyd-page-heading{padding:16px 12px 14px;min-height:76px}.xyd-page-heading h2{font-size:17px}.xyd-page-heading p{font-size:10px;max-width:230px;line-height:1.6}#home.xyd-dashboard{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 300px 260px 240px 240px 240px;grid-template-areas:"stats" "map" "alarms" "trend" "bully" "sos";padding:0 10px 16px;gap:12px}.xyd-stats{gap:10px}.xyd-stat{padding:16px 11px}.xyd-stat-value{font-size:26px}.xyd-stat-label{font-size:11px}.xyd-stat-icon{display:none}.xyd-card-heading{padding:15px 13px}.xyd-card-heading h3{font-size:12px}#layout[id="layout"] .el-main>.page:not(.homePage),#layout[id="layout"] .el-main>.tablePage{margin:0 10px 16px;padding:14px 12px;border-radius:9px}#layout[id="layout"] .page .searchBox .el-form-item{margin-right:9px}#layout[id="layout"] .page .searchBox .el-input,#layout[id="layout"] .page .searchBox .el-select{max-width:100%}#layout[id="layout"] .page .tableBox{overflow:auto}#layout[id="layout"] .formPage .form_box{flex-direction:column;height:auto}#layout[id="layout"] .formPage .form_box .form{width:100%}#layout[id="layout"] .formPage .form_box .form .footBtn{position:static;transform:none}#layout[id="layout"] .formPage .form_box .form_map{height:300px}#layout[id="layout"] .el-pagination{justify-content:flex-start}.alarmDialog .alarm_containar{flex-direction:column}.alarmDialog .alarm_containar .left_content,.alarmDialog .alarm_containar .right_content{width:100%}.alarmDialog .el-dialog{margin-top:5vh!important}.xyd-nav-footer{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

#login[id="login"] .el-form{width:100%}#login[id="login"] .el-form input{width:100%}#login[id="login"] .el-form .el-form-item__content{line-height:normal!important}

#login[id="login"] .el-form #loginBTtn.xyd-submit{width:100%;height:49px;background:#2468ed;font-size:15px}#login[id="login"] .el-form #loginBTtn.xyd-submit:hover{background:#1854cc}.xyd-login-subtitle{color:#78879b}.xyd-account-help{font-size:12px;color:#7e8ca0}.xyd-feature span:not(.xyd-feature-icon){font-size:11px;color:#6e88a4}#login[id="login"] .el-input__inner::placeholder{color:#8a99ad}

/* Keep full-page edit forms readable without forcing horizontal overflow. */
#layout[id="layout"] .formPage .pageForm{width:680px;max-width:100%;padding:14px 0;box-sizing:border-box}#layout[id="layout"] .formPage .pageForm .el-form-item{display:flex;align-items:flex-start;margin-bottom:22px}#layout[id="layout"] .formPage .pageForm .el-form-item__label{flex:0 0 128px;width:128px;float:none;text-align:right;padding-right:20px;box-sizing:border-box;line-height:40px}#layout[id="layout"] .formPage .pageForm .el-form-item__content{flex:1;min-width:0;width:auto;margin-left:0!important;line-height:40px}#layout[id="layout"] .formPage .pageForm .el-input:not(.el-input-number .el-input),#layout[id="layout"] .formPage .pageForm .el-select{width:100%}#layout[id="layout"] .formPage .pageForm .el-input__inner{height:40px;line-height:40px}#layout[id="layout"] .formPage h1{font-size:20px;line-height:1.5;margin:0 0 20px;color:#253e60}
@media(max-width:600px){#layout[id="layout"] .formPage .pageForm .el-form-item{display:block}#layout[id="layout"] .formPage .pageForm .el-form-item__label{width:auto;text-align:left;line-height:26px;margin-bottom:7px}#layout[id="layout"] .formPage .pageForm .el-form-item__content{width:100%}}

/* Layout corrections for the actual business pages, including short viewports. */
/* Every route needs a bounded scroll area inside the fixed-height shell. */
#layout[id="layout"] .outsideContainer .insideContainer .el-main { overflow: auto; }
#layout[id="layout"] .el-main > .inventory-page,
#layout[id="layout"] .el-main > .xyd-teachers,
#layout[id="layout"] .el-main > .xyd-tariffs,
#layout[id="layout"] .el-main > .xyd-school-location-page {
  flex: 1; min-height: 0; min-width: 0; overflow: auto; box-sizing: border-box;
}
/* Legacy forms hid their scrollbars even when the fields overflowed. */
#layout[id="layout"] .formPage,
#home .home_child_list { scrollbar-width: auto; }
#layout[id="layout"] .formPage::-webkit-scrollbar,
#home .home_child_list::-webkit-scrollbar { display: block; width: 10px; height: 10px; }
#layout .el-main,
#layout .el-main > section,
.el-table__body-wrapper,
.el-dialog__wrapper { scrollbar-width: auto; scrollbar-color: #8b9db5 #edf2f8; }
#layout .el-main::-webkit-scrollbar,
#layout .el-main > section::-webkit-scrollbar,
.el-table__body-wrapper::-webkit-scrollbar,
.el-dialog__wrapper::-webkit-scrollbar { width: 10px; height: 10px; }
.xyd-mobile-menu { display: none; }
.xyd-nav-shell { height: 100%; }
.xyd-page-heading { min-height: 64px; padding: 16px 24px; }
.xyd-page-title { display: flex; align-items: center; gap: 12px; min-width: 0; }
.xyd-page-heading h1 { font-size: 21px; line-height: 1.4; margin: 0; color: #203957; }
.xyd-page-heading p { font-size: 13px; color: #54677e; margin: 5px 0 0; }
.xyd-page-heading.xyd-group-heading { display: block; }
.xyd-section-tabs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.xyd-section-tabs a { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 0 16px; border: 1px solid transparent; border-radius: 7px; color: #526780; font-size: 14px; text-decoration: none; line-height: 1.4; box-sizing: border-box; }
.xyd-section-tabs a:hover { background: #edf3fc; color: #215fcf; }
.xyd-section-tabs a.is-active { color: #205ed0; background: #e7f0ff; border-color: #cedffd; font-weight: 600; }
.xyd-section-tabs a:focus-visible { outline: 2px solid #2468ed; outline-offset: 2px; }
/* Keep list actions above the persistent school duty controls. */
#layout[id="layout"] .outsideContainer .insideContainer .el-main.xyd-school-main { padding-bottom: 84px; }
/* A page still loading must not block the mobile navigation drawer. */
#layout[id="layout"] .xyd-school-main .el-loading-mask { z-index: 100; }
#layout[id="layout"] .xyd-legacy-device { display: flex; flex-direction: column; }
#layout[id="layout"] .xyd-legacy-device>.subMenuPage { flex: 1; min-height: 0; }
#layout[id="layout"] .el-main>.formPage>h1 { display: none; }
.xyd-back-link { display: flex; padding: 10px; border: 1px solid #d7e2f0; border-radius: 6px; color: #315c97; background: #fff; }
#layout[id="layout"] .el-main>.page:not(.homePage) { padding: 18px; }
#layout[id="layout"] .page .searchBox { padding-bottom: 12px; }
#layout[id="layout"] .page .tableBox { gap: 12px; }
#layout[id="layout"] .composite_page .left_tree { flex: 0 0 190px; width: 190px; min-width: 0; box-sizing: border-box; padding-right: 14px; }
#layout[id="layout"] .composite_page .right_list { flex: 1 1 0; width: 0; min-width: 0; }
#layout[id="layout"] .page .el-table { font-size: 14px; color: #40536b; }
#layout[id="layout"] .page .el-table th.el-table__cell { padding: 8px 0; height: 42px; font-size: 13px; color: #435974; }
#layout[id="layout"] .page .el-table td.el-table__cell { padding: 8px 0; }
#layout[id="layout"] .page .el-table .cell { padding: 0 10px; line-height: 24px; word-break: normal; }
#layout[id="layout"] .el-table .xyd-actions .cell { display: flex; justify-content: center; align-items: center; gap: 14px; white-space: nowrap; }
#layout[id="layout"] .el-table .xyd-actions .el-button { margin: 0; padding: 6px 0; }
#layout[id="layout"] .el-table .xyd-delete-action { color: #bd3544; }
#layout[id="layout"] .el-table .xyd-delete-action:hover { color: #962332; text-decoration: underline; }
#layout[id="layout"] .el-form-item__label,
#layout[id="layout"] .el-input__inner,
#layout[id="layout"] .el-textarea__inner,
#layout[id="layout"] .el-button,
.el-dialog .el-input__inner,.el-dialog .el-textarea__inner,.el-dialog .el-button { font-size: 14px; }
#layout[id="layout"] .el-form-item__label { color: #435974; }
#layout[id="layout"] .el-input__inner::placeholder,.el-dialog .el-input__inner::placeholder { color: #748398; }
#layout[id="layout"] .el-input__inner,#layout[id="layout"] .el-textarea__inner { border-color: #c9d6e6; }
.xyd-subtle,.xyd-card-heading a,.xyd-stat-help,.xyd-map-caption,.xyd-stat-label,.xyd-stat-links a,.xyd-account-help,.xyd-login-subtitle { font-size: 13px; color: #536b89; }
.xyd-header-brand span,.xyd-tenant,.xyd-nav-footer { color: #5f748f; font-size: 12px; }
.xyd-header-brand.xyd-school-brand { flex: 1; min-width: 0; }
.xyd-school-brand img { flex-shrink: 0; }
.xyd-school-brand > div { min-width: 0; }
#header-wrapper .xyd-school-brand strong { font-size: 26px; font-weight: 700; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.xyd-school-brand + .xyd-header-actions { flex-shrink: 0; }
#menuTree .xyd-nav-heading { font-size: 12px; color: #617690; }
.xyd-story-footer,.xyd-signin-footer,.xyd-platform-pill,.xyd-login-note { font-size: 12px; color: #586f8a; }
button:focus-visible,a:focus-visible,[tabindex="0"]:focus-visible { outline: 3px solid #2362d2; outline-offset: 3px; }

/* Map and fields scroll in document flow. Actions never sit on top of fields. */
#layout[id="layout"] .formPage .form_box { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,380px); height: auto; gap: 24px; padding-top: 0; align-items: start; }
#layout[id="layout"] .formPage .form_box .form { width: 100%; height: auto; min-height: 0; position: static; box-sizing: border-box; }
#layout[id="layout"] .formPage .form_box .footBtn,
#layout[id="layout"] .formPage .form_box .form .footBtn { position: static; inset: auto; transform: none; padding: 18px 0 0; margin: 0; display: flex; gap: 12px; border-top: 1px solid #e0e8f2; justify-content: flex-end; }
#layout[id="layout"] .formPage .form_box .form .footBtn .el-button { min-width: 88px; margin: 0; }
#layout[id="layout"] .formPage .form_box .form_map { height: clamp(360px,calc(100vh - 216px),720px); position: sticky; top: 0; min-width: 0; display: flex; flex-direction: column; background: #f4f7fb; border: 1px solid #dce5f0; border-radius: 8px; overflow: hidden; box-sizing: border-box; }
.xyd-map-help { display: flex; flex-direction: column; gap: 5px; padding: 12px 14px; color: #3a5371; font-size: 14px; border-bottom: 1px solid #dce5f0; flex-shrink: 0; background: #f8fafd; }
.xyd-map-help span,.xyd-field-help { font-size: 13px; line-height: 1.6; color: #546a83; }
.xyd-location-canvas { flex: 1; min-height: 0; position: relative; }
.xyd-location-canvas #myMap { height: 100%; width: 100%; }
/* Keep address input above Tencent's pointer layer; empty toolbar space still pans the map. */
.xyd-location-canvas .mapTopContent { z-index: 1300; pointer-events: none; }
.xyd-location-canvas .map_search_input { pointer-events: auto; }
#layout[id="layout"] .xyd-location-form .xyd-form-section { margin-bottom: 20px; }
.xyd-form-section h2 { font-size: 15px; color: #223e60; line-height: 24px; margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid #e6ecf4; }
#layout[id="layout"] .xyd-location-form .el-form-item { margin: 0 0 18px; }
#layout[id="layout"] .xyd-location-form .el-form-item__label { float: none; display: block; text-align: left; width: auto; line-height: 22px; padding: 0 0 6px; }
#layout[id="layout"] .xyd-location-form .el-form-item__content { margin-left: 0!important; line-height: 36px; min-width: 0; }
#layout[id="layout"] .xyd-location-form .el-input,#layout[id="layout"] .xyd-location-form .el-select { width: 100%; }
#layout[id="layout"] .xyd-location-form .el-input__inner { height: 38px; line-height: 38px; }
#layout[id="layout"] .xyd-location-form .el-textarea__inner { width: 100%; line-height: 1.6; padding: 8px 10px; }
#layout[id="layout"] .xyd-location-form .el-form-item__error { position: static; line-height: 1.5; padding-top: 5px; font-size: 13px; }
#layout[id="layout"] .xyd-location-form .el-input-number { max-width: 100%; }
.xyd-coordinate-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.xyd-field-help { margin: 7px 0 0; }
.xyd-save-error { margin: 0 0 15px; color: #ad2838; background: #fff0f1; padding: 10px; font-size: 14px; }
.xyd-location-form .el-radio { margin-right: 22px; }

/* Stable alert feed with dates and deliberate navigation. */
.xyd-stat-help { margin: 9px 0 0; line-height: 1.4; }
#home.xyd-dashboard { grid-template-rows: 132px 370px 260px; }
.xyd-stat { padding: 18px 20px; }
.xyd-map-caption { margin: 0; padding: 8px 18px; line-height: 1.5; background: #f8fafd; }
#home .home_child_list { padding: 0 16px; overflow: auto; }
#home .home_child_list_cell { display: block; padding: 14px 0; color: #435974; }
.xyd-alarm-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.xyd-alarm-kind { font-size: 13px; color: #3b526e; font-weight: 600; }
.xyd-alarm-priority { font-size: 12px; color: #b33240; background: #fff0f2; padding: 1px 6px; border-radius: 4px; }
#home .home_child_list_cell .list_time { font-size: 13px; color: #62738b; }
#home .home_child_list_cell .right_text { font-size: 14px; color: #40536b; margin: 6px 0; line-height: 1.6; width: auto; overflow-wrap: anywhere; }
.xyd-alert-detail { border: 0; padding: 4px 0; background: transparent; color: #225ec3; font-size: 13px; cursor: pointer; }
.xyd-alert-dialog p { margin: 8px 0; overflow-wrap: anywhere; }
.xyd-alert-dialog a { display: inline-block; margin-top: 10px; color: #225ec3; }
.xyd-no-alerts strong,.xyd-no-alerts span { font-size: 13px; color: #596e88; }

@media(max-width:1100px) {
  #layout[id="layout"] .formPage .form_box { grid-template-columns: minmax(0,1fr) minmax(300px,350px); gap: 18px; }
}
@media(max-width:760px) {
  #layout[id="layout"] .outsideContainer .insideContainer .el-main.xyd-school-main { padding-bottom: 124px; }
  .xyd-mobile-menu { display: inline-flex; }
  #layout[id="layout"] .outsideContainer .insideContainer .el-aside { width: 0!important; flex: 0 0 0; border: 0; overflow: visible; }
  #header-wrapper.xyd-header { padding: 0 12px; gap: 8px; }
  .xyd-header-brand { flex: 1; min-width: 0; }
  .xyd-header-brand img { width: 30px; height: 36px; }
  .xyd-header-brand strong { font-size: 14px; }
  #header-wrapper .xyd-school-brand strong { font-size: 18px; }
  .xyd-header-brand span { display: none; }
  .xyd-nav-backdrop { position: fixed; inset: 0; z-index: 1999; background: #142c4b66; border: 0; padding: 0; width: 100%; height: 100%; }
  #menuTree,#menuTree.xyd-nav-collapsed { position: fixed; top: 0; bottom: 0; left: 0; z-index: 2000; width: 260px; max-width: 85vw; min-height: 0; height: 100%; padding: 18px 12px; background: #fff; overflow-y: auto; transform: translateX(-100%); visibility: hidden; }
  #menuTree.xyd-nav-open { transform: translateX(0); visibility: visible; box-shadow: 8px 0 24px #18354e24; }
  #menuTree .xyd-nav-heading { padding: 2px 8px 14px 12px; }
  .xyd-page-heading { padding: 14px 14px; min-height: 62px; }
  .xyd-page-heading h1 { font-size: 19px; }
  .xyd-page-heading p { font-size: 13px; max-width: none; }
  #layout[id="layout"] .el-main>.page:not(.homePage) { margin: 0 10px 12px; padding: 14px; }
  #layout[id="layout"] .formPage .form_box { display: flex; flex-direction: column; gap: 22px; }
  #layout[id="layout"] .formPage .form_box .form_map { position: relative; top: auto; height: 320px; min-height: 320px; width: 100%; }
  #layout[id="layout"] .formPage .form_box .form { width: 100%; height: auto; }
  #layout[id="layout"] .page .searchBox .el-input { max-width: 100%; }
  #layout[id="layout"] .composite_page { flex-direction: column; gap: 16px; }
  #layout[id="layout"] .composite_page .left_tree { flex: 0 0 auto; width: 100%; max-height: 180px; padding: 0 0 12px; border-right: 0; border-bottom: 1px solid #dce5f0; overflow: auto; }
  #layout[id="layout"] .composite_page .right_list { width: 100%; min-height: 340px; flex: 1 0 auto; }
  .xyd-coordinate-fields { gap: 10px; }
  #layout[id="layout"] .xyd-location-form .el-input__inner { font-size: 16px; padding: 0 10px; }
  #layout[id="layout"] .xyd-location-form .el-textarea__inner { font-size: 16px; }
  #home.xyd-dashboard { grid-template-columns: minmax(0,1fr); grid-template-rows: auto 330px 340px 240px 240px 240px; grid-template-areas: "stats" "map" "alarms" "trend" "bully" "sos"; }
  .xyd-stat { padding: 16px 12px; }
  .xyd-stat-label,.xyd-stat-help { font-size: 13px; }
  .xyd-card-heading h3 { font-size: 14px; }
  .xyd-card-heading a,.xyd-subtle { font-size: 12px; }
  .xyd-story-footer,.xyd-signin-footer,.xyd-platform-pill,.xyd-login-note { font-size: 12px; }
}

/* Overview owns the remaining viewport; other management pages keep their scrolling. */
#layout[id="layout"] .outsideContainer .insideContainer .el-main.xyd-overview-main { padding: 0 0 52px; overflow: auto; }
#home.xyd-dashboard { display: grid; grid-template-areas: none; grid-template-columns: clamp(230px,16vw,300px) minmax(0,1fr) clamp(260px,17vw,320px); grid-template-rows: minmax(0,1fr); gap: 12px; flex: 1 0 0; min-height: 600px; height: auto; padding: 12px; overflow: visible; }
#home .xyd-dashboard-side { display: flex; flex-direction: column; gap: 12px; min-height: 0; min-width: 0; }
#home .xyd-dashboard-side > .xyd-dashboard-card { flex: 1 1 0; grid-area: auto; height: auto; min-height: 0; padding: 0; overflow: hidden; }
#home .xyd-dashboard-center { display: flex; flex-direction: column; gap: 12px; min-width: 0; min-height: 0; }
#home .xyd-dashboard-map { flex: 1 1 0; grid-area: auto; min-height: 0; overflow: visible; }
#home .xyd-overview-chart { position: relative; display: flex; flex-direction: column; height: 100%; min-height: 0; padding: 0; cursor: pointer; }
#home .xyd-overview-chart .xyd-card-heading a { font: inherit; color: inherit; }
#home .xyd-overview-chart .xyd-card-heading a:hover, #home .xyd-overview-chart .xyd-card-heading a:focus-visible { color: #2468ed; text-decoration: underline; }
#home .xyd-dashboard-side .xyd-card-heading { flex-shrink: 0; padding: 14px 16px 10px; min-height: 48px; border-bottom: 1px solid #edf1f7; gap: 8px; }
#home .xyd-dashboard-side .xyd-card-heading h3 { font-size: 16px; font-weight: 600; white-space: nowrap; color: #213e60; }
#home .xyd-dashboard-side .xyd-card-heading .xyd-subtle { font-size: 11px; white-space: nowrap; }
.xyd-chart-summary { display: flex; align-items: baseline; gap: 6px; padding: 12px 16px 0; color: #627991; font-size: 12px; }
.xyd-chart-summary strong { font-size: 30px; line-height: 1.1; color: #2468ed; font-variant-numeric: tabular-nums; }
.xyd-dashboard-bully .xyd-chart-summary strong { color: #af751b; }
.xyd-dashboard-sos .xyd-chart-summary strong { color: #c63753; }
.xyd-chart-note { margin: 5px 16px 0; color: #647b93; font-size: 11px; line-height: 1.5; }
.xyd-chart-canvas { flex: 1 1 0; min-height: 120px; width: 100%; }
.xyd-panel-status { position: absolute; top: 54%; left: 12px; right: 12px; padding: 12px 8px; border: 1px solid #e3eaf4; border-radius: 6px; background: #fffffff5; text-align: center; color: #637b95; font: inherit; font-size: 12px; }
.xyd-panel-status.is-error,.xyd-feed-error,.xyd-counts-error { cursor: pointer; color: #a15324; background: #fff7eb; border: 0; font: inherit; font-size: 12px; padding: 8px 10px; }
#home .xyd-dashboard-alarms .home_child_list { padding: 0 14px; }
.xyd-alarm-actions { display: flex; align-items: center; gap: 8px; }
.xyd-alarm-actions button { font: inherit; font-size: 11px; white-space: nowrap; padding: 0; border: 0; background: none; color: #225fc5; cursor: pointer; }
#home .xyd-dashboard-alarms .home_child_list_cell { position: relative; display: block; padding: 12px 0; margin: 0; border-bottom: 1px solid #edf1f7; }
#home .xyd-dashboard-alarms .list_time { display: block; padding: 0; color: #70849b; font-size: 11px; margin-top: 5px; }
#home .xyd-dashboard-alarms .right_text { margin: 6px 0 0; padding-right: 52px; line-height: 1.6; font-size: 13px; overflow-wrap: anywhere; }
#home .xyd-dashboard-alarms .xyd-alert-detail { position: absolute; right: 0; bottom: 10px; font-size: 11px; padding: 6px 0; }
#home .xyd-dashboard-alarms .xyd-no-alerts { padding: 18px 0; min-height: 0; }
.xyd-attendance-activity .xyd-alarm-priority { color: #225fc5; background: #edf4ff; }
.xyd-activity-class { display: block; padding-right: 52px; color: #70849b; font-size: 12px; margin-top: 4px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) #layout[id="layout"] .outsideContainer .el-header { height: 56px !important; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) #header-wrapper { height: 56px; min-height: 56px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-header-brand img { width: 32px; height: 38px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-header-brand strong { font-size: 17px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-header-brand span { display: none; }
body.xyd-map-focused #layout[id="layout"] .outsideContainer .el-header,body.xyd-map-focused .xyd-nav-shell { display: none !important; }
#home .xyd-student-map-heading { min-height: 48px; padding: 8px 16px; }
#home .xyd-student-map-heading h1 { margin: 0; font-size: 19px; color: #213e60; white-space: nowrap; }
#home .xyd-overview-counts { position: relative; display: grid; grid-template-columns: 1fr 1fr; flex-shrink: 0; gap: 12px; height: 70px; }
.xyd-overview-metric { display: flex; align-items: center; gap: 16px; padding: 8px 20px; background: #eaf2ff; border: 1px solid #d7e5fb; border-radius: 12px; color: #476383; font-size: 13px; }
.xyd-overview-metric:nth-child(2) { background: #fff; border-color: #e1e9f3; }
.xyd-overview-metric > div { display: flex; align-items: baseline; flex-wrap: wrap; column-gap: 16px; }
.xyd-overview-metric > i { color: #2468ed; font-size: 28px; }
.xyd-overview-metric strong { font-size: 30px; line-height: 1.4; color: #244d81; margin-right: 4px; font-variant-numeric: tabular-nums; }
.xyd-counts-error { position: absolute; bottom: 0; left: 0; right: 0; border-radius: 0 0 8px 8px; }
body.xyd-map-focused #home.xyd-dashboard { grid-template-columns: minmax(0,1fr); min-height: 380px; }
body.xyd-map-focused #home .xyd-dashboard-side,body.xyd-map-focused #home .xyd-overview-counts { display: none; }
.xyd-overview-more { position: relative; }
.xyd-overview-more summary { cursor: pointer; font-size: 13px; color: #225fc5; padding: 7px 4px; }
.xyd-overview-menu { position: absolute; top: calc(100% + 6px); right: 0; width: 228px; padding: 8px; background: #fff; border: 1px solid #dae4f1; border-radius: 10px; box-shadow: 0 8px 30px #213d6526; z-index: 1500; }
#home .xyd-overview-menu a,#home .xyd-overview-menu button { display: block; width: 100%; box-sizing: border-box; padding: 10px 12px; color: #294970; font-size: 13px; text-align: left; background: none; border: 0; }
#home .xyd-overview-menu a:hover,#home .xyd-overview-menu button:hover { background: #edf4ff; border-radius: 6px; }
.xyd-overview-menu p { font-size: 12px; line-height: 1.6; color: #738298; margin: 6px 12px; }
.xyd-overview-map-tools { position: absolute; left: 12px; top: 12px; z-index: 1301; display: flex; flex-wrap: wrap; gap: 6px; max-width: calc(100% - 86px); }
.xyd-overview-map-tools button { font: inherit; font-size: 13px; cursor: pointer; color: #315c91; border: 1px solid #d3dfed; border-radius: 6px; padding: 9px 12px; background: #fffffff5; box-shadow: 0 2px 6px #213d6512; }
.xyd-overview-map-tools button:disabled { color: #8493a6; cursor: default; }
.xyd-overview-map-tools button[aria-expanded="true"] { background: #e8f1ff; border-color: #8eb7f6; }
#home button:focus-visible,#home summary:focus-visible,#home a:focus-visible { outline: 2px solid #2468ed; outline-offset: 3px; }
#home .xyd-student-map-workspace { position: relative; overflow: hidden; border-radius: 0 0 12px 12px; }
#home .xyd-student-list { position: absolute; top: 60px; bottom: 12px; right: 12px; width: 300px; max-width: calc(100% - 24px); border: 1px solid #dce5f0; border-radius: 9px; box-shadow: 0 4px 20px #213d6526; z-index: 1302; }
.xyd-overview-legend { position: absolute; left: 12px; bottom: 60px; z-index: 1301; font-size: 12px; color: #506985; background: #fffffff0; border-radius: 5px; padding: 6px 8px; pointer-events: none; }
/* The independent reception controls live outside the map and stay in document fullscreen. */
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-sos-dock { bottom: 9px; right: 12px; max-width: calc(100vw - 24px); }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-sos-dock > button { min-height: 36px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-sos-launch { padding: 9px 16px; border-radius: 8px; }
body:is(.xyd-overview-active,:has(.xyd-online-map-main)) .xyd-sos-seat-status { padding: 7px 10px; font-size: 12px; }
.xyd-student-map-heading { min-height: 54px; padding: 12px 18px; }
.xyd-map-actions { display: flex; align-items: center; gap: 14px; }
.xyd-map-actions button,.xyd-map-error-notice button,.xyd-student-list-heading button { font: inherit; font-size: 13px; color: #225fc5; background: transparent; border: 0; padding: 5px 0; cursor: pointer; }
.xyd-map-actions button:disabled { color: #76879d; cursor: default; }
.xyd-map-actions button:first-child { padding: 6px 10px; background: #edf4ff; border: 1px solid #d2e1f7; border-radius: 5px; }
.xyd-map-error-notice { display: flex; align-items: center; gap: 12px; padding: 5px 16px; flex-shrink: 0; background: #fff7eb; font-size: 13px; color: #a15324; }
.xyd-map-legend { display: inline-flex; align-items: center; gap: 6px; }
.xyd-map-legend i { width: 7px; height: 7px; border-radius: 50%; background: #63758b; margin-left: 6px; }
.xyd-map-legend i.is-online { background: #2375ed; }
.xyd-student-map-workspace { flex: 1; min-height: 0; display: flex; }
.xyd-student-map-workspace .xyd-map-content { min-width: 0; overflow: hidden; }
.xyd-student-map-note { flex-shrink: 0; margin: 0; padding: 8px 18px; font-size: 12px; line-height: 1.5; color: #596e87; border-top: 1px solid #e2eaf3; }
.xyd-map-empty { position: absolute; top: 35%; left: 10%; right: 10%; padding: 16px; color: #425c78; background: #ffffffed; border: 1px solid #dce5f0; border-radius: 8px; text-align: center; z-index: 1300; pointer-events: none; user-select: none; }
.campus-student-leaders { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.campus-student-leaders line { stroke: #5c7da7; stroke-width: 1; stroke-opacity: .65; }
.campus-student-leaders circle { stroke: #fff; stroke-width: 1.5; }
.campus-student-marker { position: absolute; pointer-events: auto; height: 28px; padding: 0 9px; font-size: 12px; font-family: inherit; font-weight: 600; line-height: 26px; text-align: center; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; color: #43556e; border: 1px solid #acbbcd; border-radius: 6px; background: #fffffff5; box-shadow: 0 2px 4px #243d5626; cursor: pointer; }
.campus-student-marker.is-online { border-color: #448af0; color: #155ac0; background: #f0f6ff; }
.campus-student-marker:hover { background: #e3edff; border-color: #2468ed; z-index: 1; }
.xyd-student-list { flex: 0 0 250px; min-width: 0; display: flex; flex-direction: column; border-left: 1px solid #dce5f0; padding: 14px; box-sizing: border-box; background: #fff; }
.xyd-student-list-heading { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 10px; font-size: 14px; color: #294970; }
.xyd-student-list input { width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid #c9d6e6; border-radius: 5px; font: inherit; font-size: 13px; }
.xyd-student-list-rows { overflow: auto; flex: 1; min-height: 0; margin-top: 8px; }
.xyd-student-list-row { display: flex; flex-direction: column; gap: 4px; width: 100%; padding: 11px 4px; text-align: left; border: 0; border-bottom: 1px solid #edf1f6; font: inherit; font-size: 13px; color: #294970; background: #fff; cursor: pointer; }
.xyd-student-list-row span { font-size: 12px; color: #61758d; white-space: normal; overflow-wrap: anywhere; line-height: 1.5; }
.xyd-student-list-row:hover:enabled { background: #f0f6ff; }
.xyd-student-list-row:disabled { cursor: default; opacity: 1; }
#layout[id="layout"] .outsideContainer .insideContainer .el-main.xyd-online-map-main { padding: 0 0 52px; }
.xyd-online-map-main > .xyd-page-heading { display: flex; align-items: center; gap: 24px; min-height: 54px; padding: 8px 16px; }
.xyd-online-map-main .xyd-page-title h1 { font-size: 19px; }
.xyd-online-map-main .xyd-section-tabs { margin-top: 0; }
.xyd-online-map-main .xyd-section-tabs a { min-height: 32px; padding: 5px 12px; font-size: 13px; }
#layout[id="layout"] .el-main.xyd-online-map-main > #map { display: flex; flex: 1 0 420px; padding: 0; margin: 0 12px 8px; overflow: hidden; }
#map .map.xyd-online-map { display: flex; flex-direction: column; flex: 1; min-height: 0; height: auto; width: 100%; }
.xyd-online-map > #myMap { order: 1; flex: 1; height: auto; min-height: 300px; }
/* Keep controls in document flow so Tencent's canvas never covers the search field. */
.xyd-online-map > .mapTopContent { position: relative; top: auto; left: auto; right: auto; flex-shrink: 0; padding: 0; z-index: 1300; pointer-events: none; }
.xyd-online-map-tools { position: relative; width: 100%; pointer-events: none; }
.xyd-online-map-search { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; width: 100%; padding: 10px 12px; background: #fff; border-bottom: 1px solid #e2eaf3; box-sizing: border-box; pointer-events: auto; }
.xyd-online-map-query,.xyd-online-map-actions,.xyd-online-map-status { display: flex; align-items: center; gap: 8px; min-width: 0; }
.xyd-online-map-actions { flex: 1; flex-wrap: wrap; justify-content: flex-end; }
.xyd-online-map-search .map_search_input { width: clamp(180px,19vw,300px); min-width: 0; }
.xyd-online-map-search .xyd-map-layer-select { width: 88px; }
.xyd-online-map-search .el-button+.el-button { margin-left: 0; }
.xyd-online-map-search .el-button[aria-expanded="true"] { background: #e8f1ff; border-color: #8eb7f6; color: #225fc5; }
.xyd-online-map-status { flex-basis: 100%; flex-wrap: wrap; column-gap: 16px; font-size: 12px; }
.xyd-online-map-status a { margin-left: auto; color: #5e7899; }
.xyd-online-map-count { font-size: 12px; color: #536b89; white-space: nowrap; }
.xyd-online-map-refresh { font-size: 12px; color: #64758a; }
.xyd-online-student-list { position: absolute; top: calc(100% + 8px); right: 70px; width: 300px; max-width: calc(100% - 82px); max-height: min(420px,calc(100vh - 270px)); border: 1px solid #dce5f0; border-radius: 7px; box-shadow: 0 3px 12px #19324a12; pointer-events: auto; }
.xyd-online-map-tools :is(button,a,input):focus-visible { outline: 2px solid #2468ed; outline-offset: 2px; }
.xyd-map-retry { padding: 4px 8px; color: #a33036; background: #fff3f3; border: 1px solid #ecc8c8; border-radius: 4px; cursor: pointer; }
@media(min-width:1600px) {
  #home .xyd-dashboard-side .xyd-card-heading h3 { font-size: 20px; }
  #home .xyd-dashboard-side .xyd-card-heading .xyd-subtle { font-size: 12px; }
  .xyd-chart-summary,.xyd-chart-note { font-size: 13px; }
  .xyd-chart-summary strong,.xyd-overview-metric strong { font-size: 36px; }
  .xyd-overview-metric { font-size: 15px; }
  #home .xyd-dashboard-alarms .right_text { font-size: 14px; }
  #home .xyd-dashboard-alarms .list_time,#home .xyd-dashboard-alarms .xyd-alert-detail { font-size: 12px; }
}
@media(max-width:1200px) {
  #home.xyd-dashboard { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: auto auto; flex: 1 0 auto; }
  #home .xyd-dashboard-center { grid-column: 1 / -1; grid-row: 1; height: 650px; }
  #home .xyd-dashboard-side { height: 720px; }
  body.xyd-map-focused #home .xyd-dashboard-center { height: calc(100vh - 76px); }
}
@media(max-width:760px) {
  .xyd-online-map-main > .xyd-page-heading { gap: 12px; padding: 8px; flex-wrap: wrap; }
  #layout[id="layout"] .el-main.xyd-online-map-main > #map { margin: 0 6px 8px; flex-basis: 540px; }
  .xyd-online-map-query { width: 100%; }
  .xyd-online-map-query .map_search_input { flex: 1; width: auto; }
  .xyd-online-map-actions { justify-content: flex-start; }
  .xyd-online-map-search { padding: 8px; gap: 8px; }
  .xyd-online-map-status { gap: 6px 12px; }
  .xyd-online-student-list { right: 8px; max-width: calc(100% - 16px); }
  #home.xyd-dashboard { grid-template-columns: minmax(0,1fr); grid-template-rows: auto; padding: 6px; }
  #home .xyd-dashboard-center { height: 660px; }
  #home .xyd-dashboard-side { height: 680px; }
  #home .xyd-student-map-heading { padding: 8px 10px; gap: 6px; }
  #home .xyd-student-map-heading h1 { font-size: 17px; }
  #home .xyd-map-actions { gap: 10px; }
  .xyd-overview-metric { padding: 6px 10px; gap: 8px; }
  .xyd-overview-metric > div { column-gap: 8px; }
  .xyd-overview-metric strong { font-size: 24px; line-height: 1.2; }
  .xyd-overview-metric > i { font-size: 23px; }
  .xyd-overview-map-tools { left: 8px; top: 8px; gap: 4px; }
  .xyd-overview-map-tools button { padding: 7px 8px; font-size: 12px; }
  #home .xyd-student-list { top: 88px; }
  .xyd-student-list-heading { margin-bottom: 5px; }
  #layout[id="layout"] .outsideContainer .insideContainer .el-main:is(.xyd-overview-main,.xyd-online-map-main) { padding-bottom: 124px; }
}

.campus-student-marker.is-alarm { border-color: #bd6015; color: #91450d; background: #fff6ec; }
.campus-student-marker.is-beacon { border-color: #9563c5; color: #70429e; background: #fbf5ff; }
.campus-student-marker.is-offline { border-style: dashed; }
.xyd-map-legend i.is-alarm { background: #bd6015; }
.xyd-map-legend i.is-beacon { background: #8252b8; }
.xyd-map-layer-select { width: 82px; }
.xyd-school-map-info { max-width: 300px; color: #294970; padding: 8px; font: 13px/1.6 sans-serif; overflow-wrap: anywhere; }
.xyd-school-map-info p { margin: 5px 0; }
.xyd-school-map-info a { color: #225fc5; }
@media(max-width:760px) { .xyd-map-actions { gap: 6px 12px; width: 100%; justify-content: space-between; flex-wrap: wrap; } }
@media(max-width:760px) { .map:has(.xyd-online-map-tools) { min-height: 1080px; } }

/* Layout and interaction corrections from the full-page audit. */
.el-dialog .el-form-item__label {width:136px!important; white-space:nowrap;}
.el-dialog .el-form-item__content {margin-left:136px!important;}
.el-dialog .el-form--inline .el-form-item__content {margin-left:0!important;}
.el-dialog .el-input,.el-dialog .el-select,.el-dialog .el-input-number {max-width:100%;}
#layout[id="layout"] .el-button.is-disabled,
#layout[id="layout"] .el-button.is-disabled:hover,
.el-dialog .el-button.is-disabled,.el-dialog .el-button.is-disabled:hover {
  color:#8190a2;background:#eef2f6;border-color:#dce3eb;box-shadow:none;cursor:not-allowed;
}
#layout[id="layout"] .el-table .xyd-actions .cell {gap:10px;flex-wrap:wrap;white-space:normal;}
#layout[id="layout"] .el-table .xyd-actions .el-button {margin-left:0;white-space:nowrap;}
#layout[id="layout"] .el-table__empty-text {color:#718198;font-size:13px;}
#layout[id="layout"] .map.xyd-fence-map,
#layout[id="layout"] .map.xyd-track-map {
  display:grid!important;position:relative;gap:14px;width:100%;height:auto!important;min-height:0;
  grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr) auto;
}
#layout[id="layout"] .map.xyd-track-map {grid-template-columns:minmax(0,1fr) 260px;grid-template-rows:auto minmax(420px,1fr);}
#layout[id="layout"] .xyd-fence-map #myMap,
#layout[id="layout"] .xyd-track-map #myMap {grid-row:2;grid-column:1;width:100%!important;height:clamp(360px,calc(100vh - 390px),660px)!important;min-height:360px;}
#layout[id="layout"] .xyd-track-map #myMap {height:clamp(420px,calc(100vh - 270px),740px)!important;}
#layout[id="layout"] .xyd-fence-map .mapTopContent,
#layout[id="layout"] .xyd-track-map .mapTopContent {grid-row:1;grid-column:1/-1;position:static!important;inset:auto!important;display:block;width:auto;}
#layout[id="layout"] .xyd-fence-map .address_search,
#layout[id="layout"] .xyd-track-map .searchControl {position:static!important;display:flex;flex-wrap:wrap;align-items:center;gap:10px;width:auto;}
#layout[id="layout"] .xyd-fence-map .mapTips {position:static!important;color:#526b85;font-size:13px;line-height:1.7;white-space:normal;border:0;background:#f2f6fb;font-weight:400;}
#layout[id="layout"] .xyd-fence-map .mapBottomContent {grid-row:3;grid-column:1;position:static!important;inset:auto!important;width:auto;background:none;padding:0;}
#layout[id="layout"] .xyd-fence-map .mapRightContent {display:none;}
#layout[id="layout"] .xyd-track-map .mapRightContent {grid-row:2;grid-column:2;position:static!important;width:auto;min-width:0;overflow:auto;max-height:calc(100vh - 270px);}
#layout[id="layout"] .xyd-track-map .mapBottomContent {display:none;}
.xyd-fence-form {border-top:1px solid #e6edf5;padding-top:16px;}
.xyd-fence-form .el-form {display:grid;grid-template-columns:minmax(210px,1.4fr) 1fr 1fr;gap:14px;}
#layout[id="layout"] .xyd-fence-form .el-form-item {margin:0;min-width:0;}
#layout[id="layout"] .xyd-fence-form .el-form-item__label {padding:0 0 7px;line-height:20px;font-size:13px;}
.xyd-fence-form .el-radio {margin-right:18px;}
.xyd-fence-status {margin:14px 0 0;color:#526b85;font-size:13px;line-height:1.7;}
.xyd-fence-actions {display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:16px;}
#layout[id="layout"] .xyd-fence-actions .el-button {margin:0;}
.xyd-track-panel {padding:16px;background:#f6f9fd;border:1px solid #e4ebf4;border-radius:8px;color:#405b78;}
.xyd-track-panel h2 {font-size:16px;line-height:1.5;margin:0 0 6px;}
.xyd-track-panel p {font-size:12px;line-height:1.7;color:#687f97;margin-bottom:14px;}
.xyd-track-panel ol {list-style:none;margin:0;padding:0;}
.xyd-track-panel li+li {border-top:1px solid #e2eaf3;}
.xyd-track-panel button {background:none;border:0;width:100%;padding:12px 0;text-align:left;color:inherit;cursor:pointer;}
.xyd-track-panel button strong,.xyd-track-panel button span {display:block;line-height:1.7;font-size:13px;overflow-wrap:anywhere;}
.xyd-track-panel button span {color:#6c8098;font-size:12px;}
.xyd-track-panel button:hover,.xyd-track-panel button:focus-visible {color:#2468ed;background:#eaf2ff;outline:2px solid #b8d1fa;}
.xyd-track-status {font-size:14px;line-height:1.8;padding:20px 0;}
@media(max-width:760px) {
  .el-dialog .el-form-item__label {width:auto!important;float:none;display:block;text-align:left;line-height:24px;padding-bottom:6px;}
  .el-dialog .el-form-item__content {margin-left:0!important;}
  .el-dialog__body {padding:18px;}
  #layout[id="layout"] .map.xyd-track-map {grid-template-columns:minmax(0,1fr);grid-template-rows:auto 380px auto;}
  #layout[id="layout"] .xyd-track-map #myMap {height:380px!important;min-height:380px;}
  #layout[id="layout"] .xyd-track-map .mapRightContent {grid-row:3;grid-column:1;max-height:340px;}
  .xyd-fence-form .el-form {grid-template-columns:minmax(0,1fr);}
  .xyd-fence-actions {justify-content:flex-start;}
  #layout[id="layout"] .xyd-fence-map .map_search_input {width:100%;}
}
.xyd-access-summary { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; color: #183f70; }
.xyd-access-summary h2 { margin: 0; font-size: 20px; line-height: 28px; }
.xyd-access-summary p, .xyd-access-help { margin: 6px 0 0; color: #657f9f; font-size: 13px; line-height: 1.6; }
.xyd-access-summary p { font-size: 14px; }
.xyd-access-summary > button { flex-shrink: 0; }
/* Let rows set the table height; the old 100% table and flex body clipped even two records. */
#layout[id="layout"] .el-main:has(> .xyd-access-page) > .xyd-page-heading { display: flex; align-items: center; justify-content: flex-start; flex-wrap: wrap; gap: 12px 28px; }
#layout[id="layout"] .el-main:has(> .xyd-access-page) .xyd-section-tabs { margin-top: 0; }
#layout[id="layout"] .el-main > .page.xyd-access-page { flex: 1 0 auto; overflow: visible; gap: 12px; padding: 16px 20px; }
#layout[id="layout"] .xyd-access-page .searchBox { flex-shrink: 0; padding: 0 0 12px; }
#layout[id="layout"] .xyd-access-page .searchBox .el-form { gap: 12px 18px; }
#layout[id="layout"] .xyd-access-page .searchBox .el-form-item { margin: 0; }
#layout[id="layout"] .xyd-access-page .searchBox .el-form-item__label { font-size: 14px; }
#layout[id="layout"] .xyd-access-page .searchBox .el-input { width: 180px; }
#layout[id="layout"] .xyd-access-page .searchBox .el-input__inner { height: 38px; line-height: 38px; font-size: 14px; }
#layout[id="layout"] .xyd-access-page > .xyd-access-summary .el-button,
#layout[id="layout"] .xyd-access-page .searchBox .el-button { min-height: 38px; font-size: 14px; }
#layout[id="layout"] .xyd-access-page .tableBox { flex: 1 0 auto; min-height: 0; height: auto; overflow: visible; gap: 12px; }
#layout[id="layout"] .xyd-access-page .el-table { height: auto; flex: none; font-size: 16px; }
#layout[id="layout"] .xyd-access-page .el-table th.el-table__cell { height: 48px; padding: 12px 0; font-size: 15px; }
#layout[id="layout"] .xyd-access-page .el-table td.el-table__cell { padding: 14px 0; }
#layout[id="layout"] .xyd-access-page .el-table .cell { padding: 0 16px; line-height: 26px; }
#layout[id="layout"] .xyd-access-page .el-pagination { flex-shrink: 0; margin-top: auto; }
#layout[id="layout"] .xyd-access-page .el-pagination > span,
#layout[id="layout"] .xyd-access-page .el-pagination .el-pager li { font-size: 14px; }
.xyd-access-student .cell { font-weight: 600; color: #29486b; }
.xyd-access-device .cell, .xyd-access-time { font-variant-numeric: tabular-nums; }
.xyd-access-event { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.xyd-access-event small { color: #657f9f; font-size: 13px; }
.xyd-access-state { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 13px; line-height: 20px; background: #f1f4f8; color: #60738a; }
.xyd-access-state.is-confirmed { background: #edf8f3; color: #29735c; }
.xyd-access-state.is-exit { background: #edf3ff; color: #285eaf; }
.xyd-access-detail { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px 20px; font-size: 15px; line-height: 1.6; }
.xyd-access-detail dt { color: #657f9f; }
.xyd-access-detail dd { margin: 0; overflow-wrap: anywhere; color: #29486b; }
.xyd-access-state.is-abnormal { background: #fff0f2; color: #b4324a; }
.xyd-access-state.is-pending { background: #fff5df; color: #936017; }
.xyd-access-page .xyd-access-abnormal { color: #b4324a; }
.xyd-access-dialog { display: flex; flex-direction: column; max-height: 90vh; }
.xyd-access-dialog .el-dialog__body { overflow-y: auto; padding: 18px 24px; }
.xyd-access-mode { display: flex; flex-wrap: wrap; gap: 12px 20px; }
.xyd-access-mode .el-radio { margin: 0; line-height: 24px; }
.xyd-access-times { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
@media (max-width: 520px) { .xyd-access-times { grid-template-columns: minmax(0, 1fr); gap: 0; } }
.xyd-access-dialog .el-form-item { margin-bottom: 14px; }
.xyd-access-dialog .el-form-item__label { width: auto!important; float: none; display: block; text-align: left; white-space: normal; line-height: 24px; padding-bottom: 6px; }
.xyd-access-dialog .el-form-item__content { margin-left: 0!important; line-height: 30px; }
.xyd-access-dialog .el-checkbox { display: flex; align-items: center; white-space: normal; }
.xyd-access-dialog .el-checkbox__label { white-space: normal; line-height: 1.6; }
.xyd-access-options { margin-top: 20px; padding-top: 14px; border-top: 1px solid #e6edf5; }
.xyd-access-options > summary { cursor: pointer; color: #657f9f; margin-bottom: 14px; }
.xyd-access-dialog .el-form > .xyd-access-help { margin-bottom: 16px; }
@media (max-width: 760px) {
  #layout[id="layout"] .el-main > .page.xyd-access-page { padding: 14px; }
  #layout[id="layout"] .xyd-access-page .searchBox .el-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); width: 100%; gap: 12px; }
  #layout[id="layout"] .xyd-access-page .searchBox .el-form-item:first-child { grid-column: 1 / -1; }
  #layout[id="layout"] .xyd-access-page .searchBox .el-form-item__label { float: none; display: block; text-align: left; line-height: 24px; }
  #layout[id="layout"] .xyd-access-page .searchBox .el-form-item__content { display: block; }
  #layout[id="layout"] .xyd-access-page .searchBox .el-input { width: 100%; }
  .xyd-access-summary { flex-wrap: wrap; gap: 10px; }
}

.xyd-sos-dock{position:fixed;right:22px;bottom:22px;z-index:1900;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;max-width:calc(100vw - 44px)}
.xyd-sos-dock>button{box-sizing:border-box;min-height:44px;border:0;cursor:pointer}
.xyd-sos-launch{flex:0 0 auto;padding:12px 20px;border-radius:12px;background:#c6283c;color:#fff;white-space:nowrap}
.xyd-sos-seat-status{max-width:min(560px,100%);padding:8px 12px;border-radius:8px;background:#fff;color:#243b53;box-shadow:0 2px 12px #0002;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.xyd-sos-dock>button:focus-visible{outline:3px solid #3b82f6;outline-offset:3px}
@media(max-width:760px){.xyd-sos-dock{right:12px;bottom:16px;max-width:calc(100vw - 24px);gap:8px}.xyd-sos-seat-status{flex-basis:100%;max-width:100%}}
.xyd-sos-dialog{background:#fff;box-shadow:0 0 0 5px #ef334025,0 24px 90px #27151b55;font:16px/1.55 "Microsoft YaHei",system-ui,sans-serif}
.xyd-sos-dialog::backdrop{background:#14243b99}
.xyd-sos-dialog *{box-sizing:border-box}
.xyd-sos-dialog p{overflow-wrap:anywhere}
.xyd-sos-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-24px -24px 0;padding:14px 24px;background:#fff1f2;border-bottom:1px solid #fecdd3}
.xyd-sos-heading small{color:#98515b;font-weight:600;letter-spacing:.06em}
.xyd-sos-heading h2{margin:4px 0;color:#c41838;font-size:30px;line-height:1.25}
.xyd-sos-status{margin:16px 0 4px;font-weight:600;color:#9f1239}
.xyd-sos-toolbar{display:flex;gap:0;flex-wrap:wrap;margin-top:4px}.xyd-sos-toolbar .xyd-sos-button{border:0;font-size:13px;color:#627b95;padding:4px 8px!important;margin:0 12px 0 0!important}
.xyd-sos-dialog .xyd-sos-button{border:1px solid #cdd8e4;border-radius:9px;background:#fff;color:#31455c;cursor:pointer;font:inherit}
.xyd-sos-dialog .xyd-sos-button:hover{background:#f2f5f9}
.xyd-sos-dialog .xyd-sos-button:focus-visible{outline:3px solid #3b82f6;outline-offset:2px}
.xyd-sos-dialog .xyd-sos-button.primary{background:#cf2441;border-color:#cf2441;color:#fff;font-weight:600}
.xyd-sos-dialog .xyd-sos-button:disabled{opacity:.55;cursor:wait}
.xyd-sos-audio{color:#77551f;background:#fff8e8;padding:10px 12px;border-radius:8px;margin:4px 0 12px;font-size:14px}
.xyd-sos-content{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,1fr);gap:22px;align-items:start}
.xyd-sos-location{border:1px solid #dbe4ee;border-radius:12px;overflow:hidden;background:#f4f7fa}
.xyd-sos-location h3{padding:12px 16px;margin:0;font-size:16px;border-bottom:1px solid #dbe4ee}
.xyd-sos-location>p{padding:0 14px;font-size:13px;color:#64748b}
.xyd-sos-map{height:240px;width:100%;position:relative}
.xyd-sos-location-empty{min-height:240px;padding:28px 26px;text-align:center;display:flex;flex-direction:column;justify-content:center;color:#697a8c}
.xyd-sos-location-empty strong{font-size:25px;color:#354d69}
.xyd-sos-info h3{font-size:28px;margin:0;color:#142f51}
.xyd-sos-info>p{margin:6px 0 14px;font-size:14px;color:#63788f}
.xyd-sos-fact{display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px;padding:9px 0;border-bottom:1px solid #edf1f5;font-size:15px;overflow-wrap:anywhere}
.xyd-sos-fact span{color:#718399}.xyd-sos-fact strong{font-weight:500;color:#233e60}
.xyd-sos-info .xyd-sos-notice{background:#fff5e6;color:#876018;border-radius:8px;padding:12px;margin-top:14px}
.xyd-sos-details{font-size:13px;color:#6b7b8e;margin:16px 0}.xyd-sos-details summary{cursor:pointer}.xyd-sos-actions .xyd-sos-details{margin:14px 8px}
.xyd-sos-check{border:1px solid #dbe4ee;border-radius:12px;padding:16px 20px;margin:16px 0}.xyd-sos-check h3{margin:0 0 8px;font-size:20px}.xyd-sos-check p{margin:8px 0}.xyd-sos-check .xyd-sos-details{margin-bottom:0}
.xyd-sos-actions{display:flex;flex-wrap:wrap;align-items:center;gap:0;background:#fff;border-top:1px solid #e6edf5;padding:8px 0 4px;margin-top:12px}
@media(max-width:760px){.xyd-sos-dialog{padding:18px!important}.xyd-sos-heading{margin:-18px -18px 0;padding:16px 18px}.xyd-sos-heading h2{font-size:24px}.xyd-sos-content{grid-template-columns:minmax(0,1fr)}.xyd-sos-info{grid-row:1}.xyd-sos-map{height:230px}.xyd-sos-location-empty{min-height:150px;padding:24px}.xyd-sos-actions{bottom:-18px}}
