:root{
  --campus3d-line:#b8dcf4;
  --campus3d-glow:#65bfff;
  --campus3d-gold:#c2a665;
  --campus3d-red:#d05c62;
  --campus3d-muted:#5f7b8d;
  --campus3d-panel:#071019;
}
.campus3d-heading{align-items:flex-end}
.campus3d-layout{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(320px,.58fr);gap:16px;align-items:start}
.campus3d-map-panel{padding:0;overflow:hidden;border-color:#263746;background:#071019}
.campus3d-stage{position:relative;min-height:720px;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 46%,rgba(33,89,122,.2),transparent 36%),linear-gradient(180deg,#07131d 0%,#03090e 100%);touch-action:none;user-select:none}
.campus3d-stage:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(rgba(112,173,209,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(112,173,209,.055) 1px,transparent 1px),linear-gradient(rgba(194,166,101,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(194,166,101,.025) 1px,transparent 1px);background-size:40px 40px,40px 40px,200px 200px,200px 200px;mask-image:radial-gradient(circle at center,#000 25%,rgba(0,0,0,.86) 64%,transparent 100%)}
.campus3d-stage:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;border:1px solid rgba(130,183,214,.18);box-shadow:inset 0 0 60px rgba(0,0,0,.55),inset 0 0 0 7px rgba(3,10,15,.58)}
.campus3d-canvas{position:absolute;inset:0;z-index:1;width:100%;height:100%;outline:none;cursor:grab}
.campus3d-canvas:active{cursor:grabbing}
.campus3d-canvas:focus-visible{box-shadow:inset 0 0 0 2px var(--campus3d-gold)}
.campus3d-scanline{position:absolute;z-index:2;inset:-30% 0 auto;height:35%;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(101,191,255,.045),rgba(101,191,255,.12),rgba(101,191,255,.035),transparent);transform:skewY(-4deg);animation:campus3d-scan 8s linear infinite}
@keyframes campus3d-scan{to{transform:translateY(370%) skewY(-4deg)}}
.reduced-motion .campus3d-scanline{display:none}
.campus3d-stage-status{position:absolute;z-index:5;top:14px;left:16px;right:16px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 10px;border:1px solid rgba(102,151,181,.2);background:rgba(3,10,16,.66);backdrop-filter:blur(10px);color:#7893a5;font:9px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em;pointer-events:none}
.campus3d-stage-status span{display:flex;align-items:center;gap:7px;color:#9ab6c7}
.campus3d-stage-status i{width:6px;height:6px;border-radius:50%;background:#59d2ad;box-shadow:0 0 9px #59d2ad}
.campus3d-stage-status b{font-weight:500;color:#678495}
.campus3d-mode-switch{position:absolute;z-index:6;top:54px;left:16px;display:flex;padding:3px;border:1px solid rgba(102,151,181,.25);background:rgba(3,10,16,.76);backdrop-filter:blur(10px)}
.campus3d-mode-switch button,.campus3d-zoom-controls button,.campus3d-toolbar button,.campus3d-mini-button{border:0;background:transparent;color:#7893a4;cursor:pointer}
.campus3d-mode-switch button{min-width:58px;padding:7px 10px;font-size:11px}
.campus3d-mode-switch button.active{background:rgba(194,166,101,.13);color:#dcc68c;box-shadow:inset 0 0 0 1px rgba(194,166,101,.38)}
.campus3d-zoom-controls{position:absolute;z-index:6;right:16px;bottom:16px;display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid rgba(102,151,181,.25);background:rgba(3,10,16,.78);backdrop-filter:blur(10px)}
.campus3d-zoom-controls button{width:30px;height:30px;border:1px solid rgba(101,157,190,.22);font-size:18px;line-height:1}
.campus3d-zoom-controls button:hover,.campus3d-toolbar button:hover,.campus3d-mini-button:hover{border-color:rgba(194,166,101,.58);color:#d5bd7e}
.campus3d-zoom-controls input{width:150px;accent-color:#8bc9ef}
.campus3d-toolbar{display:flex;align-items:center;gap:14px;min-height:58px;padding:10px 14px;border-top:1px solid #223441;background:linear-gradient(180deg,#08131b,#050c11)}
.campus3d-toolbar>div{display:flex;align-items:center;gap:5px;padding-right:13px;border-right:1px solid #24333e}
.campus3d-toolbar button{width:30px;height:30px;border:1px solid #2a3f4e;font-size:16px}
.campus3d-toolbar span{margin-left:4px;color:#78909f;font-size:10px;white-space:nowrap}
.campus3d-toolbar p{margin:0 0 0 auto;color:#607b8d;font-size:10px;text-align:right}
.campus3d-sidebar{display:grid;gap:16px;min-width:0}
.campus3d-detail-panel,.campus3d-directory,.campus3d-layer-panel{overflow:hidden;border-color:#293b49;background:linear-gradient(180deg,#0b151d,#081118)}
.campus3d-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:20px;border-bottom:1px solid #273843}
.campus3d-detail-head h2{margin:5px 0 3px;color:#e2ddd3;font:600 23px "Songti SC","STSong",serif}
.campus3d-detail-head p{margin:0;color:#6f8795;font-size:11px}
.campus3d-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);border-bottom:1px solid #273843}
.campus3d-detail-grid>div{min-width:0;padding:13px 15px;border-right:1px solid #273843;border-bottom:1px solid #273843}
.campus3d-detail-grid>div:nth-child(2n){border-right:0}
.campus3d-detail-grid>div:nth-last-child(-n+2){border-bottom:0}
.campus3d-detail-grid span{display:block;color:#647d8d;font-size:9px;letter-spacing:.08em}
.campus3d-detail-grid strong{display:block;overflow:hidden;margin-top:5px;color:#cbd8df;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.campus3d-summary{margin:0;padding:16px 18px;color:#91a1aa;font-size:12px;line-height:1.75;border-bottom:1px solid #273843}
.campus3d-default-detail{padding:24px}
.campus3d-default-detail h2{margin:10px 0 8px;font:600 25px "Songti SC","STSong",serif}
.campus3d-default-detail>p{color:#8e9fa8;line-height:1.8}
.campus3d-default-detail .campus3d-detail-grid{margin:20px -24px -24px}
.campus3d-records>.panel-head,.campus3d-directory>.panel-head,.campus3d-layer-panel>.panel-head{padding:12px 14px;border-bottom:1px solid #273843}
.campus3d-records>.panel-head h3,.campus3d-directory>.panel-head h3,.campus3d-layer-panel>.panel-head h3{margin:0;color:#c9d4da;font-size:13px}
.campus3d-record{display:grid;gap:4px;padding:12px 15px;border-bottom:1px solid #202f39;color:#abbac2;text-decoration:none;transition:background .15s ease,border-color .15s ease}
.campus3d-record:last-child{border-bottom:0}
.campus3d-record:hover{background:#0d1a23}
.campus3d-record>span{color:#6e8999;font:8px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em}
.campus3d-record>strong{color:#cbd5da;font-size:12px}
.campus3d-record>small{color:#667c89;font-size:9px}
.campus3d-record.is-locked{background:repeating-linear-gradient(135deg,rgba(110,62,63,.08),rgba(110,62,63,.08) 9px,transparent 9px,transparent 18px)}
.campus3d-record.is-locked>span{color:#9e6669}
.campus3d-empty-record{padding:16px;color:#6d818c;font-size:11px}
.campus3d-layer-panel label{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 14px;border-bottom:1px solid #22323d;color:#899da8;font-size:11px}
.campus3d-layer-panel label:last-child{border-bottom:0}
.campus3d-layer-panel input{width:34px;height:17px;accent-color:#79bce5}
.campus3d-mini-button{padding:5px 8px;border:1px solid #2b414f;font-size:10px}
.campus3d-directory-list{max-height:430px;overflow:auto;scrollbar-width:thin;scrollbar-color:#314a5a #09131a}
.campus3d-directory-list a{display:grid;grid-template-columns:9px minmax(0,1fr) 12px;gap:10px;align-items:center;padding:12px 13px;border-bottom:1px solid #22323d;color:#b6c3ca;text-decoration:none}
.campus3d-directory-list a:last-child{border-bottom:0}
.campus3d-directory-list a:hover,.campus3d-directory-list a.active{background:linear-gradient(90deg,rgba(194,166,101,.12),rgba(40,80,104,.08));box-shadow:inset 2px 0 0 #a88e51}
.campus3d-directory-list i{width:7px;height:7px;border:1px solid #7592a3;border-radius:50%;box-shadow:0 0 8px rgba(101,191,255,.4)}
.campus3d-directory-list i.restricted{border-color:#a56063;box-shadow:0 0 8px rgba(208,92,98,.42)}
.campus3d-directory-list i.monitoring{border-color:#6aa9c4}
.campus3d-directory-list i.active{border-color:#65d2ad;box-shadow:0 0 8px rgba(101,210,173,.48)}
.campus3d-directory-list strong,.campus3d-directory-list small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.campus3d-directory-list strong{color:#c9d5da;font-size:12px}
.campus3d-directory-list small{margin-top:3px;color:#617a89;font-size:9px}
.campus3d-directory-list b{color:#5f7887;font-size:16px}
.campus3d-stage:fullscreen{width:100vw;height:100vh;min-height:100vh;background:#02070b}
.campus3d-stage:fullscreen .campus3d-canvas{width:100%;height:100%}
@media(max-width:1180px){
  .campus3d-layout{grid-template-columns:1fr}
  .campus3d-sidebar{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .campus3d-detail-panel{grid-column:1/-1}
  .campus3d-directory-list{max-height:350px}
}
@media(max-width:760px){
  .campus3d-heading{display:block}
  .campus3d-heading .classification{display:inline-flex;margin-top:10px}
  .campus3d-stage{min-height:560px}
  .campus3d-stage-status{top:10px;left:10px;right:10px;padding:7px 8px}
  .campus3d-stage-status b{display:none}
  .campus3d-mode-switch{top:48px;left:10px}
  .campus3d-zoom-controls{right:10px;bottom:10px;gap:4px;padding:5px}
  .campus3d-zoom-controls input{width:86px}
  .campus3d-zoom-controls button{width:28px;height:28px}
  .campus3d-toolbar{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px}
  .campus3d-toolbar>div{justify-content:center;padding:0;border-right:0}
  .campus3d-toolbar span{display:none}
  .campus3d-toolbar p{grid-column:1/-1;margin:0;text-align:center;line-height:1.5}
  .campus3d-sidebar{grid-template-columns:1fr}
  .campus3d-detail-panel{grid-column:auto}
  .campus3d-directory-list{max-height:360px}
}
@media(max-width:420px){
  .campus3d-stage{min-height:510px}
  .campus3d-mode-switch button{min-width:52px;padding:6px 8px}
  .campus3d-zoom-controls input{width:64px}
  .campus3d-detail-head{display:block}
  .campus3d-detail-head .event-state{margin-top:10px}
}