*{box-sizing:border-box}body{margin:0;background:#F5F0E6;color:#1A1A17;font-family:'Instrument Sans',Arial,sans-serif}button{font:inherit;color:inherit;border:1px solid #D8CFBB;border-radius:10px;background:#fff;padding:11px 15px;cursor:pointer}button:hover{background:#EAE3D5}button:focus-visible,input:focus-visible{outline:3px solid #C9A961;outline-offset:3px}[hidden]{display:none!important}header{display:flex;align-items:center;justify-content:space-between;padding:23px 30px;border-bottom:1px solid #D8CFBB;gap:16px}.brand{font-size:25px;letter-spacing:5px;font-weight:600}.brand small{font-size:12px;letter-spacing:0;display:block;margin-top:7px;font-weight:400}.actions{display:flex;gap:9px}.workspace{display:grid;grid-template-columns:245px minmax(0,1fr);gap:25px;padding:28px;max-width:1800px;margin:auto}.eyebrow{font-size:10px;letter-spacing:2px;color:#C9A961;font-family:'JetBrains Mono',monospace;text-transform:uppercase}h1{font-family:'Fraunces',Georgia,serif;font-size:27px;font-weight:500;line-height:1.25;margin:18px 0 25px}nav{display:flex;flex-direction:column;gap:4px}nav button{text-align:left;background:none;border-color:transparent;line-height:1.2;padding:13px 12px;font-size:14px}nav .active{background:#1F4B3D;color:#F5F0E6}.note{font-size:12px;color:#667971;line-height:1.6;margin-top:28px}.stage{min-width:0;border:1px solid #D8CFBB;border-radius:17px;overflow:hidden;background:white}.stage-title{display:flex;justify-content:space-between;align-items:center;padding:20px 23px;gap:12px}.stage-title small{font-size:10px;letter-spacing:1.5px;color:#64786e}h2{font-family:'Fraunces',Georgia,serif;font-size:24px;font-weight:500;color:#143028;margin:7px 0 0}#badge{background:#143028;color:white;border-radius:20px;font-size:10px;padding:9px 12px;white-space:nowrap}#viewport{background:#EAE3D5}.map-frame{position:relative;margin:auto;width:100%;max-width:1050px}.map-frame>img{display:block;width:100%;height:auto}.map-point{position:absolute;transform:translate(-50%,-50%);border-radius:50%;width:34px;height:34px;padding:0;background:#1F4B3D;color:#F5F0E6;box-shadow:0 0 0 5px #C9A96170;font-size:12px}.map-point:hover{background:#C9A961;color:#143028}.pano-wrap{height:clamp(430px,65vh,830px);position:relative;overflow:hidden}.pano-wrap canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.pano-wrap canvas:active{cursor:grabbing}.portals{position:absolute;inset:0;pointer-events:none}.portal{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;background:#143028e8;color:#F5F0E6;border-color:#C9A961aa;box-shadow:0 3px 15px #0002;white-space:nowrap;font-size:13px}.portal:hover{background:#1F4B3D}.mini-map{position:absolute;bottom:15px;right:15px;padding:6px;width:130px;font-size:10px;background:#fffffff0}.mini-map img{width:100%;display:block;margin-bottom:5px}.loading{position:absolute;inset:0;display:grid;place-content:center;background:#F5F0E6e8;text-align:center;padding:30px}#controls{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:17px 20px;flex-wrap:wrap}#hint{font-size:12px;color:#5b6d64}#look-controls{display:flex;align-items:center;gap:6px}#look-controls button{padding:7px 10px}#look-controls label{font-size:12px;display:flex;align-items:center;gap:8px;margin-left:10px}input[type=range]{width:100px;accent-color:#1F4B3D}#connections{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:0 20px 20px}#connections:empty{display:none}#connections>span{font-size:12px;color:#5b6d64}#connections button{font-size:12px}footer{font-size:11px;text-align:center;color:#7b8981;padding:10px 20px 25px}#error{color:#9e3224;text-align:center}#tour:fullscreen{background:#F5F0E6;overflow:auto}@media(max-width:850px){.workspace{grid-template-columns:minmax(0,1fr);padding:15px;gap:15px}aside{min-width:0;max-width:100%}.stage{max-width:100%}aside h1,.eyebrow,.note{display:none}nav{flex-direction:row;overflow:auto;padding-bottom:5px}nav button{flex:none;white-space:nowrap;border-color:#dce0da;font-size:12px}.pano-wrap{height:62vh;min-height:390px}header{padding:15px}.brand{font-size:20px}.actions button{font-size:12px;padding:9px}.stage-title{padding:16px}h2{font-size:20px}.mini-map{width:90px}.map-point{width:27px;height:27px;font-size:10px;box-shadow:0 0 0 3px #ffffff70}#controls{padding:13px}#look-controls label{margin-left:3px}input[type=range]{width:85px}.portal{font-size:11px;padding:9px}}
/* Responsive layouts: touch controls, contained map, compact landscape viewer. */
html,body{width:100%;min-width:0}header>*{min-width:0}.workspace>aside{min-width:0}.mobile-room-picker{display:none}
@media(max-width:900px){
 .workspace{display:block;padding:16px}.workspace>aside{margin-bottom:14px}
 aside h1,aside .eyebrow,aside .note,#rooms{display:none}
 .mobile-room-picker{display:grid;gap:7px;font-size:12px;color:#536b60}
 .mobile-room-picker select{display:block;width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #bbc9c1;border-radius:10px;background:#fff;color:#223431;font:16px Arial}
 .pano-wrap{height:60svh;min-height:300px;max-height:700px}
 button{min-height:44px}#look-controls button{min-width:44px;min-height:44px}
 .map-frame{width:100%;max-width:100%}.map-point{width:32px;height:32px;min-height:32px}
}
@media(max-width:520px){
 header{display:grid;grid-template-columns:1fr;padding:14px max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));gap:12px}
 .brand{display:flex;align-items:center;gap:12px;font-size:21px}.brand small{margin:0;letter-spacing:0;font-size:12px}
 .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.actions button{min-width:0;white-space:normal;padding:10px 8px;font-size:13px}
 .workspace{padding:10px}.workspace>aside{margin-bottom:10px}
 .stage-title{padding:14px 12px}.stage-title>div{min-width:0}.stage-title h2{font-size:19px;overflow-wrap:anywhere}#badge{font-size:9px;padding:8px}
 .pano-wrap{height:55svh;min-height:280px;max-height:560px}.mini-map{display:block;width:100px;right:10px;bottom:10px}
 #controls{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:12px}
 #hint{text-align:center;font-size:12px}#look-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%}
 #look-controls label{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr);margin:0;gap:14px;min-height:44px}
 #zoom{width:100%;min-width:0;height:28px}
 #connections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:0 12px 14px}
 #connections>span{grid-column:1/-1}#connections button{min-width:0;white-space:normal;overflow-wrap:anywhere}
 .portal{white-space:normal;max-width:126px;min-height:44px;font-size:12px;text-align:center}
 .map-point{width:28px;height:28px;min-height:28px;font-size:10px;box-shadow:0 0 0 2px #ffffff80}
 footer{line-height:1.5;padding-bottom:max(16px,env(safe-area-inset-bottom))}
}
@media(orientation:landscape) and (max-height:520px) and (max-width:1000px){
 header{display:flex;padding:8px 12px}.brand small{display:none}.workspace{padding:8px}.mobile-room-picker{gap:3px}
 .stage-title{padding:8px 12px}.stage-title h2{font-size:17px;margin-top:3px}
 .pano-wrap{height:70svh;min-height:210px;max-height:none}.mini-map{display:block;width:100px;right:10px;bottom:10px}
}

.brand-logo{height:140px;width:auto;display:block}.brand small{color:#6E6A60;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:1.5px}#badge{font-family:'JetBrains Mono',monospace;letter-spacing:1.5px}.stage-title small{font-family:'JetBrains Mono',monospace;color:#C9A961}
@media(max-width:850px){.brand-logo{height:110px}}
