:root{font-family:Arial,Helvetica,sans-serif;color:#ecf2f5;background:#dfe6ea;--panel:#17242df5;--line:#40515e;--muted:#aec0cd;--accent:#ffd12b}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,textarea{font:inherit}button{cursor:pointer;background:#253641;color:#eef5f8;border:1px solid #465966;border-radius:8px;padding:10px 13px;font-size:14px;transition:background .16s,color .16s}button:hover{background:#364d5b}button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button.active,button.primary{background:var(--accent);border-color:var(--accent);color:#17242d;font-weight:700}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}#viewer{position:fixed;inset:0}#viewer canvas{display:block;touch-action:none;width:100%;height:100%}header{position:fixed;top:20px;left:20px;right:132px;display:flex;align-items:center;gap:14px;pointer-events:none}header>*{pointer-events:auto}.brand{display:flex;gap:14px;align-items:center;border-radius:12px;padding:13px 19px;background:var(--panel);box-shadow:0 5px 22px #17242d15}.mark{font-size:39px;font-weight:700;letter-spacing:-6px;color:var(--accent);line-height:1}.mark span{font-size:30px;padding-right:5px}h1{font-size:19px;letter-spacing:2.4px;margin:0}p{font-size:14px;color:var(--muted);line-height:1.5;margin:8px 0 0}.brand p{margin:5px 0 0;font-size:12px}.brand p span{color:#ffd12b;padding:0 5px}.modes{display:flex;padding:5px;background:var(--panel);border-radius:10px;gap:4px}.modes button{border:0;background:transparent;padding:11px 18px}.modes button.active{background:var(--accent)}#reset{margin-left:auto;background:var(--panel)}.tools{position:fixed;right:20px;top:20px;display:flex;gap:9px;z-index:100}.tools button{width:44px;height:44px;padding:10px;background:var(--panel);display:grid;place-items:center}#annotationToggle[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}aside{position:fixed;left:20px;top:114px;width:248px;background:var(--panel);border:1px solid #ffffff12;border-radius:12px;padding:19px 15px;max-height:calc(100vh - 190px);overflow:auto;box-shadow:0 15px 40px #17242d20}.panel-title{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:1.6px;color:#aebfca;margin:0 3px 16px}.pill{font-size:10px;letter-spacing:1px;padding:5px 7px;background:#394850;border-radius:4px;color:#d6e0e6}#roomList{display:flex;flex-direction:column;gap:3px}.roomButton{border:0;display:flex;gap:10px;align-items:center;background:transparent;text-align:left;font-size:14px;padding:11px 10px}.roomButton:after{content:'›';margin-left:auto;color:#8f9fa9}.roomButton.active{background:#ffd12b14;color:#ffdc59}.roomButton.active:after{color:#ffdc59}.roomDot{height:8px;width:8px;border-radius:3px;flex-shrink:0}.rule{height:1px;background:#ffffff18;margin:15px 0}.viewButtons{display:flex;flex-direction:column;gap:7px}.viewButtons button{text-align:left}label{display:flex;align-items:center;gap:9px;font-size:14px;padding:8px 3px;cursor:pointer}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;margin:0}button.textButton{font-size:12px;padding:14px 3px 0;background:none;border:0;color:#b8cad6;text-align:left}#roomCard{position:fixed;right:20px;bottom:88px;width:290px;border-radius:12px;background:var(--panel);padding:21px;box-shadow:0 10px 30px #0002}#closeCard{position:absolute;top:8px;right:8px;border:0;background:none;font-size:22px;padding:3px 9px}.eyebrow{letter-spacing:1.8px;font-size:11px;color:var(--accent);margin:0 0 9px}h2{font-size:21px;line-height:1.3;margin:0 0 8px}#roomInfo{white-space:pre-line;font-size:13px;line-height:1.8}#roomPhoto{width:100%;aspect-ratio:1.7;object-fit:cover;border-radius:7px;margin-top:16px;display:block}#photoCaption{font-size:11px;margin-top:7px}footer{position:fixed;bottom:20px;left:20px;right:20px;display:flex;justify-content:space-between;gap:10px;align-items:center;pointer-events:none}footer>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border-radius:9px;padding:13px 16px;font-size:12px;color:#b7c6ce}footer b{font-weight:500;color:white}.divider{color:#6b7d87}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}footer button{pointer-events:auto;background:var(--panel)}#help{font-size:16px}#help span{font-size:12px}#labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.mapLabel{position:absolute;transform:translate(-50%,-100%);background:#17242de8;color:#f4f7f8;border:1px solid #ffffff40;border-radius:6px;padding:7px 10px;font-size:12px;white-space:nowrap;box-shadow:0 3px 12px #0002}.mapLabel:after{content:'';position:absolute;bottom:-6px;left:50%;width:1px;height:6px;background:#344753}#walkBar{position:fixed;top:105px;left:50%;transform:translateX(-50%);background:var(--panel);padding:10px 12px 10px 17px;border-radius:10px;display:flex;align-items:center;gap:15px;font-size:12px;max-width:90vw}#walkBar span{line-height:1.6}body.walking aside{display:none}body.walking #roomCard{display:none}#crosshair{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);text-shadow:0 1px 3px #000;font-size:23px;pointer-events:none}#touch{position:fixed;bottom:90px;right:20px;text-align:center}#touch button{width:45px;height:45px;margin:2px;font-size:22px;touch-action:none}#annotationPanel{position:fixed;right:20px;top:80px;width:280px;padding:20px;background:var(--panel);border:1px solid var(--line);border-radius:12px;z-index:40}#annotationColors{display:grid;grid-template-columns:repeat(5,1fr);gap:16px 12px;margin:22px 0}.annotationSwatch{width:28px;height:28px;border-radius:50%;padding:0;border:2px solid transparent;justify-self:center}.annotationSwatch[aria-pressed=true]{outline:2px solid white;outline-offset:4px}.annotationActions{display:flex;gap:7px;justify-content:flex-end;align-items:center;margin:14px 0}.annotationActions button{padding:9px 10px;font-size:13px}#annotationErase{height:36px;display:grid;place-items:center;padding:5px 9px}#annotationPanel p{font-size:12px}#annotationStatus{color:#ffdf75}#annotationCanvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;touch-action:none}dialog{color:#f2f5f6;background:#17242d;border:1px solid #526772;border-radius:14px;padding:26px;width:min(600px,94vw);max-height:90vh;overflow:auto;box-shadow:0 25px 100px #0006}dialog::backdrop{background:#07111d99;backdrop-filter:blur(5px)}.dialogHead{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px}.closeDialog{background:none;border:0;font-size:25px;padding:0 5px}#planDialog{width:min(1100px,94vw)}#planDialog>img{width:100%;background:#fff;border-radius:8px}dt{font-weight:bold;font-size:15px;margin-top:22px}dd{font-size:14px;line-height:1.65;color:var(--muted);margin:7px 0}.model-note{font-size:12px;border-top:1px solid var(--line);padding-top:15px;margin-top:25px}textarea{width:100%;resize:vertical;background:#263a47;color:white;border:1px solid #678090;border-radius:8px;padding:12px;font:16px/1.5 Arial}#loading{position:fixed;inset:0;z-index:200;background:#17242d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.loader{width:38px;height:38px;border:2px solid #ffffff20;border-top-color:#ffd12b;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);z-index:150;background:#17242d;color:#fff;padding:12px 20px;border:1px solid #81949e;border-radius:9px;font-size:14px;max-width:90vw}[hidden]{display:none!important}body.interface-hidden .ui,body.interface-hidden #annotationToggle,body.interface-hidden #labels,body.interface-hidden #annotationCanvas{visibility:hidden!important;pointer-events:none!important}body.interface-hidden #toggleUI{opacity:.65}body.interface-hidden #toggleUI:hover{opacity:1}body.annotating #labels{visibility:hidden}.annotationActions button[aria-pressed=true]{color:#17242d;background:#ffd12b}@media(max-width:1000px){.brand{padding:12px}.brand p{font-size:11px}header{gap:8px}.modes button{padding:11px 12px}#reset span{display:none}#roomCard{width:250px}#navHint{display:none}}@media(max-width:640px){header{top:10px;left:10px;right:112px;flex-wrap:wrap}.brand{width:100%;gap:10px;padding:10px 12px}.mark{font-size:30px}.brand h1{font-size:15px}.brand p{font-size:10px}.modes button{padding:9px 12px}.tools{top:10px;right:10px;gap:6px}.tools button{width:40px;height:40px;padding:9px}.modes{padding:3px}#reset{margin-left:0}aside{top:145px;left:10px;width:210px;padding:15px 10px;max-height:calc(100dvh - 215px)}.roomButton{padding:9px 8px;font-size:13px}.panel-title{margin-bottom:10px}aside label{font-size:13px}.rule{margin:10px 0}#roomCard{display:none}footer{bottom:10px;left:10px;right:10px}footer>div{padding:12px;font-size:11px}#help span{display:none}#annotationPanel{top:62px;right:10px;width:265px;max-height:calc(100dvh - 140px);overflow:auto}#walkBar{top:140px;width:calc(100vw - 20px)}#walkBar span{font-size:11px}.mapLabel{font-size:10px;padding:5px 7px}}

.floorBar{position:fixed;top:106px;left:20px;right:20px;display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid #ffffff18;border-radius:10px;padding:10px 14px}.floorBar label{font-size:11px;letter-spacing:1px;padding:0}.floorBar select{font:14px Arial;background:#2a3d49;color:white;border:1px solid #6a7b85;border-radius:6px;padding:9px 30px 9px 11px;max-width:260px}.floorBar #levelDescription{font-size:12px;color:var(--muted)}#streetView{margin-left:auto;font-size:12px}#explodeControl{gap:10px;letter-spacing:0;font-size:12px;min-width:205px}#explode{accent-color:var(--accent);width:120px}aside{top:184px;max-height:calc(100vh - 265px)}#walkBar{top:183px}.referenceTabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.reference-note{margin:0 0 14px}#planDialog a{color:#ffdf75}.floorBar:has(select:focus-visible){outline:2px solid var(--accent)}@media(max-width:1100px){#levelDescription{display:none}}@media(max-width:640px){.floorBar{top:139px;left:10px;right:10px;gap:8px;padding:8px;flex-wrap:wrap}.floorBar>label{display:none}.floorBar select{max-width:calc(100% - 150px);font-size:12px}#streetView{font-size:11px;padding:9px 7px}#explodeControl{width:100%;justify-content:space-between}#explode{width:60%}aside{top:244px;max-height:calc(100dvh - 310px)}#walkBar{top:211px}.brand #floorTitle{padding:0;color:var(--muted)}}

.layerControls>button{width:100%;margin-top:9px;background:#365460}.streetButtons{display:flex;gap:5px;margin-top:7px}.streetButtons button{flex:1;padding:9px 6px;font-size:11px}.layerControls p{font-size:11px;line-height:1.5;margin:10px 3px 0}.layerControls label{font-size:12px}.layerControls input{flex-shrink:0}
