*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{color:#f4f4f5;-webkit-font-smoothing:antialiased;background:#09090b;width:100%;min-height:100%;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}#root{width:100%;min-height:100%}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}button:focus-visible{outline-offset:2px;outline:2px solid #5a9}:root{--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-app:#09090b;--bg-header:#121212;--bg-panel:#121212f2;--border-light:#27272a;--border-active:#3f3f46;--color-green:#16a34a;--color-green-dark:#15803d;--color-red:#dc2626;--color-red-dark:#b91c1c;--text-main:#f4f4f5;--text-muted:#a1a1aa;--text-dim:#71717a}*,:before,:after{-webkit-tap-highlight-color:transparent!important}.stage,.stage *,.map-root,.map-root *,.transform-wrap,.transform-wrap *,.overlay,.overlay *{-webkit-tap-highlight-color:transparent!important;outline:none!important}.app{background:var(--bg-app);color:var(--text-main);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.header{background:var(--bg-header);border-bottom:1px solid var(--border-light);z-index:60;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:10px 20px;display:flex;box-shadow:0 2px 10px #0009}.header-left{align-items:center;gap:12px;display:flex}.header-logo{object-fit:cover;border:1.5px solid var(--border-active);background:#fff;border-radius:50%;flex-shrink:0;width:42px;height:42px;transition:transform .2s,border-color .2s;box-shadow:0 2px 8px #0006}.header-logo:hover{border-color:#52525b;transform:scale(1.05)}.header-titles{flex-direction:column;gap:2px;display:flex}.header-title{color:#f4f4f5;margin:0;font-size:.92rem;font-weight:700;line-height:1.2}.header-sub{color:var(--text-muted);margin:0;font-size:.72rem;font-weight:400;line-height:1.2}.header-right{align-items:center;gap:10px;display:flex}.category-filter{border:1px solid var(--border-light);background:#18181b;border-radius:8px;align-items:center;gap:6px;padding:4px;display:flex}.filter-btn{color:#d4d4d8;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;height:32px;box-shadow:none;background:#27272a;border:1px solid #3f3f46;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-family:inherit;font-size:.74rem;font-weight:600;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex;transform:none}.filter-btn:hover{color:#fff;background:#3f3f46;border-color:#52525b;transform:none}.filter-btn:active{transform:none}.btn-marker-pin{flex-shrink:0;width:14px;height:18px;display:block}.btn-count{color:#a1a1aa;font-variant-numeric:tabular-nums;background:#00000073;border-radius:4px;padding:1.5px 6px;font-size:.68rem;font-weight:700;line-height:1.2}.filter-btn:hover .btn-count{color:#fff}.filter-btn.active,.filter-btn.btn-accessible.active,.filter-btn.btn-hazard.active{color:#fff;box-shadow:none;background:#52525b;border:1px solid #71717a;transform:none}.filter-btn.active .btn-count,.filter-btn.btn-accessible.active .btn-count,.filter-btn.btn-hazard.active .btn-count{color:#fff;background:#18181b}.main{background:#000;flex:1;min-height:0;position:relative;overflow:hidden}.map-root{width:100%;height:100%;position:relative}.transform-wrap,.transform-content{width:100%!important;height:100%!important}.stage{cursor:grab;-webkit-user-select:none;user-select:none;background:#000;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.stage:active{cursor:grabbing}.map-image-wrapper{aspect-ratio:5472/3078;border:1.5px solid #27272a;border-radius:4px;justify-content:center;align-items:center;width:auto;max-width:100%;height:auto;max-height:100%;display:flex;position:relative;box-shadow:0 0 35px #000000d9}.campus-img{object-fit:fill;opacity:0;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;width:100%;height:100%;transition:opacity .3s;display:block}.campus-img.ready{opacity:1}.img-loading{color:var(--text-muted);background:#121212;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:.82rem;display:flex;position:absolute;inset:0}.spinner{border:2.5px solid #ffffff26;border-top-color:var(--color-green);border-radius:50%;width:28px;height:28px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.overlay{pointer-events:none;position:absolute;inset:0}.map-marker-pin{pointer-events:auto;z-index:20;width:26px;height:34px;position:absolute;transform:translate(-50%,-100%);cursor:pointer!important;-webkit-tap-highlight-color:transparent!important;-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;outline:none!important}.map-marker-pin:focus,.map-marker-pin:focus-visible,.map-marker-pin:active{box-shadow:none!important;outline:none!important}.map-marker-pin *{cursor:pointer!important;-webkit-tap-highlight-color:transparent!important;outline:none!important}.map-marker-pin:after{display:none!important}.marker-interactive-ring{pointer-events:none;z-index:-1;justify-content:center;align-items:center;width:24px;height:24px;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}.ring-circle-inner{border:1.5px solid var(--ring-color);background:radial-gradient(circle, var(--ring-glow) 0%, transparent 75%);width:18px;height:18px;box-shadow:0 0 7px var(--ring-glow);animation:2.6s ease-in-out infinite ring-inner-pulse;animation-delay:var(--anim-delay,0s);pointer-events:none;border-radius:50%;position:absolute}@keyframes ring-inner-pulse{0%,to{opacity:.75;box-shadow:0 0 5px var(--ring-glow);transform:scale(.92)}50%{opacity:1;box-shadow:0 0 11px var(--ring-glow);transform:scale(1.12)}}.ring-pulse-wave{border:1.3px solid var(--ring-color);pointer-events:none;border-radius:50%;width:18px;height:18px;position:absolute}.wave-1{animation:2.6s cubic-bezier(.2,.6,.35,1) infinite ring-ripple-anim;animation-delay:var(--anim-delay,0s)}.wave-2{animation:2.6s cubic-bezier(.2,.6,.35,1) infinite ring-ripple-anim;animation-delay:calc(var(--anim-delay,0s) + 1.3s)}@keyframes ring-ripple-anim{0%{opacity:.8;transform:scale(.65)}60%{opacity:.25}to{opacity:0;transform:scale(1.48)}}.map-marker-pin:hover,.map-marker-pin.is-hovered{z-index:250!important}.map-marker-pin:hover .pin-body,.map-marker-pin.is-hovered .pin-body{animation:none;transform:translateY(-4px)scale(1.14)}.map-marker-pin:hover .ring-circle-inner,.map-marker-pin.is-hovered .ring-circle-inner{opacity:1;box-shadow:0 0 14px var(--ring-color);border-width:2px;transform:scale(1.22)}.map-marker-pin:hover .ring-pulse-wave,.map-marker-pin.is-hovered .ring-pulse-wave{border-width:1.6px;animation-duration:1.6s}.map-marker-pin.is-selected{z-index:350!important}.map-marker-pin.is-selected .pin-body{filter:drop-shadow(0 0 8px #ffffffd9);animation:none;transform:translateY(-5px)scale(1.2)}.map-marker-pin.is-selected .ring-circle-inner{opacity:1;box-shadow:0 0 16px var(--ring-color);border-width:2px;transform:scale(1.28)}.pin-body{width:100%;height:100%;animation:2.6s ease-in-out infinite pin-float-idle;animation-delay:var(--anim-delay,0s);pointer-events:none;transition:transform .18s cubic-bezier(.16,1,.3,1),filter .18s;display:block}@keyframes pin-float-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-3.5px)}}.pin-shadow{transform-origin:14px 34px;animation:2.6s ease-in-out infinite pin-shadow-idle;animation-delay:var(--anim-delay,0s)}@keyframes pin-shadow-idle{0%,to{opacity:.35;transform:scale(1)}50%{opacity:.2;transform:scale(.82)}}.pin-svg{width:100%;height:100%;display:block;overflow:visible}.popup-anchor{pointer-events:none;z-index:500;transform-origin:bottom;cursor:default;transition:opacity .16s;position:absolute}.popup-anchor.above{transform:translate(-50%, calc(-100% - 39px)) scale(var(--popup-scale,.88));transform-origin:bottom}.popup-anchor.below{transform:translate(-50%, 6px) scale(var(--popup-scale,.88));transform-origin:top}.popup-anchor.left.above{transform:translate(-18%, calc(-100% - 39px)) scale(var(--popup-scale,.88));transform-origin:18% bottom}.popup-anchor.left.below{transform:translate(-18%, 6px) scale(var(--popup-scale,.88));transform-origin:18% 0}.popup-anchor.right.above{transform:translate(-82%, calc(-100% - 39px)) scale(var(--popup-scale,.88));transform-origin:82% bottom}.popup-anchor.right.below{transform:translate(-82%, 6px) scale(var(--popup-scale,.88));transform-origin:82% 0}.popup-hit-corridor{pointer-events:none;position:absolute;left:0;right:0}.corridor-above{height:52px;bottom:-48px}.corridor-below{height:24px;top:-22px}.popup-card-frame{pointer-events:auto;cursor:default;background:#fff;border-radius:7px;flex-direction:column;width:130px;max-width:82vw;padding:0;transition:border-color .2s,box-shadow .2s;display:flex;position:relative;overflow:visible;box-shadow:0 12px 30px -4px #000000b3,0 0 0 1px #00000014}.popup-card-frame.frame-accessible{border:2.5px solid var(--color-green);box-shadow:0 12px 30px -4px #000000b3,0 0 16px #16a34a66}.popup-card-frame.frame-hazard{border:2.5px solid var(--color-red);box-shadow:0 12px 30px -4px #000000b3,0 0 16px #dc262666}.popup-caret{pointer-events:none;z-index:10;width:16px;height:9px;position:absolute;overflow:hidden}.popup-caret .caret-triangle{background:#fff;width:12px;height:12px;position:absolute;transform:rotate(45deg)}.caret-above{bottom:-9px}.caret-above .caret-triangle{border-bottom:2.5px solid;border-right:2.5px solid;top:-6px;left:2px}.frame-accessible .caret-above .caret-triangle{border-color:var(--color-green)}.frame-hazard .caret-above .caret-triangle{border-color:var(--color-red)}.caret-below{top:-9px}.caret-below .caret-triangle{border-top:2.5px solid;border-left:2.5px solid;bottom:-6px;left:2px}.frame-accessible .caret-below .caret-triangle{border-color:var(--color-green)}.frame-hazard .caret-below .caret-triangle{border-color:var(--color-red)}.caret-align-center{left:50%;transform:translate(-50%)}.caret-align-left{left:18%}.caret-align-right{right:18%}.popup-image-border-box{box-shadow:none;background:0 0;border:none;border-radius:5px;padding:0;overflow:hidden}.popup-image-inner-frame{background:#fff;border:none;border-radius:5.5px;display:block;overflow:hidden}.popup-guide-img{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.popup-floating-close-btn{color:#1e293b;cursor:pointer;z-index:25;background:#fff;border:1.5px solid #0003;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;transition:all .15s;display:flex;position:absolute;top:-9px;right:-9px;box-shadow:0 2px 8px #00000073}.popup-floating-close-btn:hover{background:var(--color-red);color:#fff;border-color:#dc2626;transform:scale(1.12)}.map-legend{background:var(--bg-panel);border:1px solid var(--border-light);z-index:50;border-radius:8px;max-width:320px;padding:10px 14px;position:absolute;bottom:20px;left:20px;box-shadow:0 4px 16px #0009}.legend-header{justify-content:space-between;align-items:center;margin-bottom:7px;display:flex}.legend-title{color:#f4f4f5;font-size:.74rem;font-weight:700}.legend-items{flex-direction:column;gap:6px;display:flex}.legend-item{align-items:center;gap:10px;display:flex}.legend-marker-pin-svg{flex-shrink:0;width:16px;height:22px;display:block}.legend-label{color:#d4d4d8;font-size:.72rem;line-height:1.25}.label-mobile,.legend-mobile-toggle,.legend-close-mobile-btn{display:none}.map-controls{background:var(--bg-panel);border:1px solid var(--border-light);z-index:50;border-radius:6px;flex-direction:column;gap:4px;padding:4px;transition:right .24s cubic-bezier(.16,1,.3,1),bottom .24s;display:flex;position:absolute;bottom:20px;right:20px;box-shadow:0 4px 14px #00000080}.ctrl-btn{color:#d4d4d8;cursor:pointer;background:#27272a;border:1px solid #3f3f46;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;transition:background .12s,border-color .12s,color .12s;display:flex}.ctrl-btn:hover{color:#fff;background:#3f3f46;border-color:#52525b}@media (width<=768px){.header{flex-direction:column!important;justify-content:flex-start!important;align-items:stretch!important;gap:8px!important;height:auto!important;min-height:auto!important;padding:8px 12px!important;overflow:visible!important;box-shadow:0 2px 10px #0009!important}.header-left{flex-direction:row!important;align-items:center!important;gap:10px!important;width:100%!important;min-width:0!important;display:flex!important}.header-logo{border:1.5px solid var(--border-active)!important;border-radius:50%!important;flex-shrink:0!important;width:34px!important;height:34px!important}.header-titles{flex-direction:column!important;flex:1!important;gap:1.5px!important;min-width:0!important;display:flex!important;overflow:visible!important}.header-title{white-space:normal!important;text-overflow:clip!important;color:#f4f4f5!important;margin:0!important;font-size:.78rem!important;font-weight:700!important;line-height:1.25!important;overflow:visible!important}.header-sub{white-space:normal!important;text-overflow:clip!important;color:var(--text-muted)!important;margin:0!important;font-size:.62rem!important;line-height:1.25!important;overflow:visible!important}.header-right{flex-shrink:0!important;justify-content:stretch!important;width:100%!important;display:flex!important}.category-filter{border:1px solid var(--border-light)!important;background:#18181b!important;border-radius:6px!important;flex-direction:row!important;justify-content:space-between!important;align-items:center!important;gap:5px!important;width:100%!important;padding:3px!important;display:flex!important}.filter-btn{border-radius:4px!important;flex:1!important;justify-content:center!important;gap:4px!important;min-width:0!important;height:28px!important;padding:0 6px!important;font-size:.68rem!important}.filter-btn .btn-label{font-size:.68rem!important;font-weight:500!important}.filter-btn .btn-count{border-radius:3px!important;padding:1px 4px!important;font-size:.58rem!important}.btn-marker-pin{width:11px!important;height:15px!important}.stage{cursor:grab;justify-content:center;align-items:center}.map-image-wrapper{aspect-ratio:5472/3078;flex-shrink:0;width:100%;max-width:100%;height:auto;max-height:100%}.map-marker-pin{width:13px;height:18px;-webkit-tap-highlight-color:transparent!important;outline:none!important}.map-marker-pin:after{display:none!important}.marker-interactive-ring{width:10px;height:10px}.ring-circle-inner{width:7px;height:7px;box-shadow:0 0 4px var(--ring-glow);border-width:1px}.ring-pulse-wave{width:8px;height:8px}.map-marker-pin:hover .pin-body,.map-marker-pin.is-hovered .pin-body{transform:translateY(-1.5px)scale(1.05)}.map-marker-pin.is-selected .pin-body{transform:translateY(-2px)scale(1.1)}@keyframes pin-float-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5px)}}.popup-card-frame{border-width:1.8px!important;border-radius:5px!important;width:88px!important;max-width:35vw!important}.popup-floating-close-btn{touch-action:manipulation;width:17px!important;height:17px!important;top:-6px!important;right:-6px!important}.popup-floating-close-btn svg{width:9px!important;height:9px!important}.popup-anchor.above{transform:translate(-50%, calc(-100% - 21px)) scale(var(--popup-scale,.88))!important;transform-origin:bottom!important}.popup-anchor.below{transform:translate(-50%, 5px) scale(var(--popup-scale,.88))!important;transform-origin:top!important}.popup-anchor.left.above{transform:translate(-18%, calc(-100% - 21px)) scale(var(--popup-scale,.88))!important;transform-origin:18% bottom!important}.popup-anchor.left.below{transform:translate(-18%, 5px) scale(var(--popup-scale,.88))!important;transform-origin:18% 0!important}.popup-anchor.right.above{transform:translate(-82%, calc(-100% - 21px)) scale(var(--popup-scale,.88))!important;transform-origin:82% bottom!important}.popup-anchor.right.below{transform:translate(-82%, 5px) scale(var(--popup-scale,.88))!important;transform-origin:82% 0!important}.corridor-above{height:25px!important;bottom:-23px!important}.corridor-below{height:10px!important;top:-7px!important}.map-legend{display:none!important}.map-controls,.spatial-panel-open .map-controls,.spatial-panel-closed .map-controls{z-index:60!important;gap:3px!important;padding:3px!important;position:absolute!important;inset:auto 12px 12px auto!important}.ctrl-btn{touch-action:manipulation;border-radius:6px;width:36px;height:36px}.ctrl-btn:active{background:#52525b;transform:scale(.92)}}@keyframes legend-pop{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.spatial-panel-open .map-controls{right:506px}.spatial-panel{background:var(--bg-panel);border:1px solid var(--border-light);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:55;border-radius:10px;flex-direction:column;width:470px;max-width:calc(100vw - 32px);animation:.24s cubic-bezier(.16,1,.3,1) panel-slide-in;display:flex;position:absolute;top:16px;bottom:16px;right:16px;overflow:hidden;box-shadow:0 12px 36px #000000bf}@keyframes panel-slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.spatial-panel-toggle-collapsed{background:var(--bg-panel);border:1.5px solid var(--border-active);color:var(--text-main);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:55;cursor:pointer;border-radius:24px;align-items:center;gap:10px;padding:10px 18px;font-size:.84rem;font-weight:600;transition:background .18s,border-color .18s,transform .18s;display:inline-flex;position:absolute;top:18px;right:16px;box-shadow:0 6px 20px #000000a6}.spatial-panel-toggle-collapsed:hover{background:#1f1f23;border-color:#52525b;transform:translateY(-1.5px)}.toggle-collapsed-icon{color:var(--text-main);align-items:center;display:inline-flex}.toggle-collapsed-label{letter-spacing:.01em}.toggle-collapsed-badge{color:#a1a1aa;background:#27272a;border-radius:10px;justify-content:center;align-items:center;padding:2px 8px;font-size:.74rem;font-weight:700;display:inline-flex}.toggle-collapsed-arrow{color:var(--text-muted)}.spatial-panel-header{border-bottom:1px solid var(--border-light);background:#18181b;flex-shrink:0;justify-content:space-between;align-items:center;gap:14px;padding:16px 20px;display:flex}.panel-header-title-wrap{align-items:center;gap:12px;display:flex}.panel-header-icon-box{color:#f4f4f5;background:#27272a;border:1px solid #3f3f46;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.spatial-panel-title{color:#f4f4f5;margin:0;font-size:1.02rem;font-weight:700;line-height:1.25}.spatial-panel-subtitle{color:var(--text-muted);margin:3px 0 0;font-size:.8rem;line-height:1.25}.spatial-panel-close-btn{color:#a1a1aa;cursor:pointer;background:#27272a;border:1px solid #3f3f46;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s,color .15s;display:flex}.spatial-panel-close-btn:hover{color:#f4f4f5;background:#3f3f46}.spatial-selected-card{background:#18181b;border:1px solid #3f3f46;border-radius:8px;flex-direction:column;gap:6px;margin:12px 20px 0;padding:12px 14px;display:flex}.selected-card-top{justify-content:space-between;align-items:center;display:flex}.selected-card-badge{color:#a1a1aa;text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:5px;font-size:.74rem;font-weight:600;display:inline-flex}.selected-card-clear{color:#71717a;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;display:flex}.selected-card-clear:hover{color:#f4f4f5;background:#27272a}.selected-card-name{color:#f4f4f5;font-size:.92rem;font-weight:700;line-height:1.35}.selected-card-meta{justify-content:space-between;align-items:center;margin-top:3px;display:flex}.meta-pill{border-radius:5px;padding:3px 9px;font-size:.72rem;font-weight:600}.meta-pill.pill-green{color:#4ade80;background:#16a34a2e;border:1px solid #16a34a66}.meta-pill.pill-red{color:#f87171;background:#dc26262e;border:1px solid #dc262666}.meta-coords{color:#a1a1aa;font-family:monospace;font-size:.72rem}.spatial-tabs{border-bottom:1px solid var(--border-light);background:#18181b;gap:6px;margin-top:8px;padding:0 16px;display:flex}.spatial-tab-btn{color:var(--text-muted);cursor:pointer;text-align:center;background:0 0;border:none;border-bottom:2.5px solid #0000;flex:1;padding:12px 10px;font-size:.86rem;font-weight:600;transition:color .15s,border-color .15s}.spatial-tab-btn:hover{color:var(--text-main)}.spatial-tab-btn.active{color:#f4f4f5;border-bottom-color:#f4f4f5}.spatial-panel-body{flex-direction:column;flex:1;gap:16px;padding:16px 20px;display:flex;overflow-y:auto}.spatial-panel-body::-webkit-scrollbar{width:6px}.spatial-panel-body::-webkit-scrollbar-track{background:0 0}.spatial-panel-body::-webkit-scrollbar-thumb{background:#27272a;border-radius:4px}.tab-pane{flex-direction:column;gap:16px;display:flex}.audit-overview-card{border:1px solid var(--border-light);background:#18181b;border-radius:8px;flex-direction:column;gap:12px;padding:15px 18px;display:flex}.overview-label-row{justify-content:space-between;align-items:center;display:flex}.overview-label{color:var(--text-main);font-size:.86rem;font-weight:600}.overview-value-badge{color:#4ade80;background:#16a34a26;border:1px solid #16a34a59;border-radius:5px;padding:3px 10px;font-size:.8rem;font-weight:700}.audit-progress-bar{background:#27272a;border-radius:6px;width:100%;height:11px;display:flex;overflow:hidden}.progress-seg{height:100%;transition:width .3s}.progress-seg.seg-green{background:#16a34a}.progress-seg.seg-red{background:#dc2626}.progress-legend-row{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:.78rem;display:flex}.leg-item{align-items:center;gap:6px;display:inline-flex}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.dot-green{background:#16a34a}.dot-red{background:#dc2626}.stat-cards-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat-card{border:1px solid var(--border-light);cursor:pointer;background:#18181b;border-radius:8px;flex-direction:column;gap:6px;padding:14px 16px;transition:border-color .16s,background .16s,transform .16s;display:flex}.stat-card:hover{background:#1c1c20;border-color:#3f3f46;transform:translateY(-1px)}.stat-card.active-filter-border{background:#222227;border-color:#52525b}.stat-card-header{align-items:center;gap:7px;display:flex}.stat-icon-green{color:#16a34a}.stat-icon-red{color:#dc2626}.stat-card-title{color:var(--text-muted);font-size:.8rem;font-weight:600}.stat-card-num{font-size:1.85rem;font-weight:800;line-height:1.1;font-family:var(--font-sans)}.stat-card-num.green-text{color:#4ade80}.stat-card-num.red-text{color:#f87171}.stat-card-sub{color:var(--text-dim);font-size:.72rem}.spatial-note-box{border:1px solid var(--border-light);background:#141416;border-radius:8px;flex-direction:column;gap:7px;padding:13px 16px;display:flex}.note-title-row{align-items:center;gap:8px;display:flex}.note-icon{color:#a1a1aa}.note-title{color:#e4e4e7;font-size:.82rem;font-weight:700}.note-desc{color:var(--text-muted);margin:0;font-size:.78rem;line-height:1.5}.indicator-group{flex-direction:column;gap:8px;display:flex}.group-header{align-items:center;gap:8px;padding:2px 0;display:flex}.group-title{color:#e4e4e7;font-size:.84rem;font-weight:700}.indicator-list{flex-direction:column;gap:7px;display:flex}.indicator-row{border:1px solid var(--border-light);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#18181b;border-radius:8px;flex-direction:column;gap:0;padding:11px 14px;transition:background-color .15s,border-color .15s,transform .1s;display:flex}.indicator-row:hover{background:#202025;border-color:#3f3f46}.indicator-row:active{background:#24242a;transform:scale(.99)}.indicator-row.is-expanded{background:#202026;border-color:#52525b}.indicator-row.is-has-selected{border-color:#38bdf8;box-shadow:0 0 0 1px #38bdf833}.indicator-row-main{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.ind-left{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.panel-marker-pin-svg{vertical-align:middle;flex-shrink:0;display:inline-block}.ind-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ind-name{color:#f4f4f5;white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;font-weight:600;overflow:hidden}.ind-desc{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:.74rem;overflow:hidden}.ind-right{flex-shrink:0;align-items:center;gap:7px;display:flex}.ind-count{color:#d4d4d8;font-variant-numeric:tabular-nums;white-space:nowrap;background:#27272a;border:1px solid #3f3f46;border-radius:4px;padding:2px 7px;font-size:.8rem;font-weight:600}.ind-chevron{color:#71717a;transition:transform .2s cubic-bezier(.16,1,.3,1),color .15s}.indicator-row:hover .ind-chevron{color:#e4e4e7}.ind-chevron.is-open{color:#38bdf8;transform:rotate(180deg)}.indicator-subpoints{border-top:1px dashed #2f2f36;flex-direction:column;gap:6px;margin-top:10px;padding-top:10px;animation:.16s ease-out subpoint-fade-in;display:flex}@keyframes subpoint-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.subpoints-header{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.subpoints-label{color:#a1a1aa;text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;font-weight:700}.subpoints-hint{color:#71717a;font-size:.66rem;font-style:italic}.subpoints-grid{flex-direction:column;gap:5px;display:flex}.subpoint-chip{color:#d4d4d8;cursor:pointer;touch-action:manipulation;background:#141417;border:1px solid #2a2a30;border-radius:6px;justify-content:space-between;align-items:center;padding:7px 10px;font-size:.74rem;transition:background-color .12s,border-color .12s,color .12s;display:flex}.subpoint-chip:hover{color:#fff;background:#202026;border-color:#4a4a55}.subpoint-chip:active{background:#26262f;transform:scale(.99)}.subpoint-chip.is-active{color:#fff;background:#1e2638;border-color:#38bdf8;box-shadow:0 0 0 1px #38bdf84d}.subpoint-left{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.subpoint-badge{color:#f4f4f5;white-space:nowrap;background:#27272a;border:1px solid #3f3f46;border-radius:4px;padding:1.5px 6px;font-size:.68rem;font-weight:700}.subpoint-chip.is-active .subpoint-badge{color:#fff;background:#0284c7;border-color:#38bdf8}.subpoint-title{white-space:nowrap;text-overflow:ellipsis;color:#d4d4d8;font-size:.73rem;overflow:hidden}.subpoint-action{color:#38bdf8;white-space:nowrap;opacity:.85;align-items:center;gap:3px;margin-left:6px;font-size:.66rem;font-weight:600;display:inline-flex}.subpoint-chip:hover .subpoint-action{opacity:1}.spatial-panel-footer{border-top:1px solid var(--border-light);color:var(--text-dim);letter-spacing:.02em;background:#141416;flex-shrink:0;justify-content:center;align-items:center;padding:11px 20px;font-size:.74rem;display:flex}.footer-info-icon{color:#71717a}.spatial-panel-backdrop-mobile,.spatial-mobile-drag-handle{display:none}.close-btn-desktop{justify-content:center;align-items:center;display:inline-flex}.close-btn-mobile{display:none}.label-desktop{display:inline}.label-mobile{display:none}@media (width<=768px){.label-desktop{display:none}.label-mobile{display:inline}.app{background:#09090b!important;flex-direction:column!important;height:auto!important;min-height:100vh!important;display:flex!important;position:relative!important;overflow:hidden auto!important}.header{z-index:70!important;position:sticky!important;top:0!important}.main{flex-direction:column!important;height:auto!important;min-height:auto!important;display:flex!important;position:relative!important;overflow:visible!important}.map-root{background:#09090b!important;border-bottom:2px solid #27272a!important;width:100%!important;height:50vh!important;min-height:350px!important;max-height:420px!important;position:relative!important;overflow:hidden!important}.stage{background:#09090b!important;justify-content:center!important;align-items:center!important}.map-image-wrapper{aspect-ratio:5472/3078!important;flex-shrink:0!important;width:100%!important;max-width:100%!important;height:auto!important;max-height:100%!important}.spatial-panel{width:100%!important;max-width:100%!important;height:auto!important;max-height:none!important;box-shadow:none!important;z-index:10!important;background:#111114!important;border:none!important;border-radius:0!important;flex-direction:column!important;animation:none!important;display:flex!important;position:relative!important;inset:auto!important}.spatial-panel-backdrop-mobile,.spatial-mobile-drag-handle,.spatial-panel-close-btn,.spatial-panel-toggle-collapsed{display:none!important}.spatial-panel-header{background:#18181b!important;border-bottom:1px solid #27272a!important;padding:18px 18px 12px!important}.spatial-panel-title{color:#f4f4f5!important;font-size:1.02rem!important;font-weight:700!important}.spatial-panel-subtitle{color:#a1a1aa!important;font-size:.76rem!important}.spatial-panel-body{gap:16px!important;height:auto!important;padding:16px 16px 28px!important;overflow:visible!important}.indicator-group{background:#18181b!important;border:1px solid #27272a!important;border-radius:10px!important;gap:10px!important;padding:14px!important}.indicator-row{background:#222227!important;border-color:#2e2e34!important;padding:11px 12px!important}.spatial-panel-footer{text-align:center!important;background:#0d0d0f!important;border-top:1px solid #27272a!important;justify-content:center!important;padding:14px 18px!important;font-size:.74rem!important}.map-legend{display:none!important}.map-controls,.spatial-panel-open .map-controls,.spatial-panel-closed .map-controls{z-index:50!important;gap:3px!important;padding:3px!important;position:absolute!important;inset:auto 12px 12px auto!important}.ctrl-btn{touch-action:manipulation;border-radius:6px!important;width:34px!important;height:34px!important}}
