*{box-sizing:border-box}body{margin:0;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#1e3448;background:#eef3f7}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid #d6e0e7;background:#fff;color:inherit;border-radius:10px;min-height:44px;padding:9px 14px}button:hover{background:#eaf1f6}button.active{background:#243e54;color:white}a{color:inherit}#app{height:100dvh;min-height:580px;overflow:hidden;position:relative}header{position:absolute;z-index:20;top:22px;left:28px;right:28px;display:flex;align-items:center;gap:12px}.brand{text-decoration:none;font-size:21px;font-weight:750;white-space:nowrap}.brand small{display:block;font-size:10px;letter-spacing:2px;color:#728596;margin-top:4px}.search{position:relative;margin-left:auto;width:min(420px,40vw)}input,select{min-height:48px;background:#fff;border:1px solid #d6e0e7;border-radius:12px;padding:12px 15px;color:inherit}input{width:100%;box-shadow:0 8px 30px #283b4e08}select{max-width:180px}#results{position:absolute;top:56px;width:100%;max-height:55vh;overflow:auto;border-radius:14px;background:white;box-shadow:0 15px 50px #253e5425;padding:7px}#results button{display:block;width:100%;text-align:left;border:0;border-radius:7px;font-size:13px;line-height:1.5}#results small{display:block;color:#748692}#viewport{position:absolute;inset:80px 0 110px;perspective:1700px;overflow:hidden;touch-action:none;background:radial-gradient(ellipse at 50% 58%,#d9e4ed66,transparent 64%)}#world{position:absolute;width:760px;height:760px;left:50%;top:47%;margin:-380px 0 0 -380px;transform-style:preserve-3d;will-change:transform}.plane{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}.plane svg{width:100%;height:100%;overflow:visible;pointer-events:none}.hall{pointer-events:auto;cursor:pointer;stroke:#fff;stroke-width:4;transition:opacity .2s,fill .2s}.hall:hover{stroke:#203a50;stroke-width:6;filter:brightness(1.06)}.hall.muted{opacity:.16}.hall.chosen{stroke:#203a50;stroke-width:7}.hall-label{pointer-events:none;text-anchor:middle;fill:#fff;font-size:27px;font-weight:750;paint-order:stroke;stroke:#0002;stroke-width:1px}.hall-sub{font-size:14px;font-weight:500}.ground{stroke:#ccd9e2;fill:#e3ebf1;stroke-width:2}.north{fill:#7c909f;font-size:18px}.floor{position:absolute;left:28px;top:130px;z-index:10;display:grid;gap:6px;width:66px}.floor button{padding:9px 4px}.eyebrow{font-size:10px;letter-spacing:2px;text-align:center;color:#748695;margin-bottom:5px}.location{position:absolute;left:30px;bottom:132px;pointer-events:none;max-width:430px}.location span{font-size:11px;letter-spacing:2px;color:#6e8597}.location h1{font-size:25px;line-height:1.5;max-width:350px;margin:10px 0}.location p{font-size:12px;color:#6a7f90}.location button{pointer-events:auto}.tools{position:absolute;right:28px;bottom:132px;display:flex;gap:5px}.tools button{padding:10px 12px}footer{position:absolute;bottom:0;left:0;right:0;min-height:100px;background:#ffffffc9;border-top:1px solid #dae4eb;padding:18px 28px;display:flex;align-items:center;gap:20px;backdrop-filter:blur(12px)}#legend{display:flex;gap:10px 18px;flex-wrap:wrap;max-width:820px}#legend button{border:0;background:none;min-height:28px;padding:2px;font-size:12px;display:flex;align-items:center;gap:7px}i{width:9px;height:9px;border-radius:3px;display:inline-block;flex:none}#coverage{font-size:11px;margin-left:auto;text-align:right;color:#6d8190;line-height:1.7;border:0;background:transparent;max-width:260px}#detail{position:absolute;inset:12px 24px;overflow:hidden}#paper{position:absolute;left:50%;top:50%;width:1200px;transform-origin:center;background:white;box-shadow:0 12px 60px #223d5420}#paper img{display:block;width:100%}#paper svg{position:absolute;inset:0;width:100%;height:100%}.booth{fill:transparent;stroke:transparent;cursor:pointer;pointer-events:all}.booth:hover,.booth.selected{fill:#2a78bd38;stroke:#185d9b;stroke-width:1.8;vector-effect:non-scaling-stroke}#selection{position:absolute;right:28px;top:95px;z-index:12;width:min(330px,85vw);max-height:40vh;overflow:auto;padding:18px;background:#fff;border:1px solid #d7e1e8;border-radius:15px;box-shadow:0 12px 40px #23405a18;font-size:13px}#selection a{display:block;padding:10px 0;color:#236796}#selection p{font-size:11px;color:#728494}#empty{position:absolute;inset:35%;text-align:center}dialog{border:1px solid #d7e1e8;border-radius:18px;max-width:650px;width:90vw;padding:30px;line-height:1.9;font-size:14px}dialog::backdrop{background:#18354b55;backdrop-filter:blur(4px)}dialog #close{float:right}dialog a{color:#246c9e}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #3184bd;outline-offset:3px}[hidden]{display:none!important}@media(max-width:900px){header{left:18px;right:18px;gap:8px;flex-wrap:wrap}.brand{font-size:18px}.search{width:calc(100% - 175px);margin-left:auto}header select{margin-left:auto;min-height:40px;padding:7px 10px;font-size:12px}header>button{min-height:40px;font-size:12px}.floor{left:18px;top:160px;width:55px}.location{left:20px;bottom:164px;max-width:280px}.location h1{font-size:21px;max-width:240px}.tools{right:18px;bottom:166px;gap:3px}.tools button{padding:8px 10px}footer{min-height:140px;padding:12px 18px;display:block}#legend{gap:6px 14px}#coverage{display:block;text-align:left;margin:7px 0 0;max-width:none;padding:0;min-height:20px}#viewport{inset:125px 0 140px}#selection{top:150px;right:18px}#detail{inset:0 8px}}@media(max-width:540px){.brand small{font-size:8px}.search{width:calc(100% - 125px)}input{font-size:12px;padding:12px 9px}.brand{font-size:16px}.location{bottom:214px;pointer-events:none}.location h1{font-size:17px;max-width:230px;margin:6px 0}.location p{max-width:200px;font-size:10px}.tools{bottom:166px;left:18px;right:auto}.floor{top:153px}.floor button{min-height:40px;font-size:12px}#legend button{font-size:10px}#world{width:650px;height:650px;margin:-325px 0 0 -325px}#selection{width:250px}#paper{width:1100px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.slab{pointer-events:none}.slab .hall{stroke:#eef3f7;pointer-events:none}.detail-mode .location{bottom:auto;top:95px;background:#ffffffed;border-radius:12px;padding:10px 14px;max-width:310px}.detail-mode .location h1{font-size:17px;margin:3px 0}.detail-mode .location p{display:none}.detail-mode .location button{font-size:12px;padding:4px 9px;min-height:32px}.detail-mode .location span{font-size:9px}@media(max-width:900px){.detail-mode .location{top:145px;left:18px;max-width:220px}}@media(max-width:540px){.detail-mode .location{top:145px;max-width:170px;padding:8px}.detail-mode .location h1{font-size:13px}#selection{top:245px;width:240px}.detail-mode #selection{max-height:160px;right:18px}.detail-mode .tools{bottom:155px}}