*{box-sizing:border-box} :root{font-family:Inter,Arial,sans-serif;color:#17302d;background:#eef1ec;--ink:#173b35;--muted:#71807b;--line:#d8dfda}body{margin:0}button,select,input{font:inherit}button,a,select,input{ -webkit-tap-highlight-color:transparent}button{color:inherit;background:#fff;border:1px solid var(--line);border-radius:10px;min-height:44px;padding:0 16px;cursor:pointer;font-size:12px;font-weight:600}button:hover{background:#edf3ee;border-color:#a4b6ac}button:disabled{opacity:.5;cursor:default}button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}:focus-visible{outline:3px solid #2d857a;outline-offset:3px}a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:17px;font-weight:500}.app{height:100dvh;display:grid;grid-template-rows:80px 40px minmax(0,1fr) 38px;overflow:hidden}.topbar{display:flex;align-items:center;gap:28px;padding:0 28px;background:#fff;border-bottom:1px solid var(--line);z-index:5}.brand{text-decoration:none;font-size:23px;letter-spacing:4px;font-weight:600;white-space:nowrap}.brand span{display:block;font-size:7px;letter-spacing:2px;margin-top:6px;color:var(--muted)}.project{border-left:1px solid var(--line);padding-left:26px}.project small{font-size:8px;letter-spacing:1.7px;color:var(--muted);display:block;margin-bottom:7px}.modes{display:flex;gap:3px;padding:4px;background:#f0f3ef;border-radius:12px;margin-left:auto}.modes button{border-color:transparent;background:none}.modes button[aria-pressed=true]{background:white;color:var(--ink);box-shadow:0 2px 6px #173b3510}.icon{padding:0;width:44px;border-radius:50%;font-family:Georgia,serif;font-size:17px}.projectbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;font-size:9px;letter-spacing:1.4px;background:#f8faf6}.projectbar b{margin-left:16px;font-weight:400;color:var(--muted)}.projectbar button{background:none;border:none;min-height:36px;font-size:10px;padding:0}.projectbar i,footer i{display:inline-block;width:6px;height:6px;background:#2d857a;border-radius:50%;margin-right:9px}main{position:relative;min-height:0;isolation:isolate}#viewport{position:absolute;inset:0;overflow:hidden;touch-action:none}#three-host,#plan-host,#label-layer{position:absolute;inset:0}canvas{display:block;width:100%;height:100%;touch-action:none}#plan-host{background:#edf1e8}#plan-host svg{display:block;width:100%;height:100%;user-select:none;touch-action:none}#label-layer{pointer-events:none;overflow:hidden}.zone-label{position:absolute;transform:translate(-50%,-100%);font-size:9px;letter-spacing:1px;white-space:nowrap;background:#ffffffed;border:1px solid #cad6ce;color:#173b35;padding:7px 10px;border-radius:5px;box-shadow:0 3px 9px #173b3514}.zone-label.dimension{background:#173b35;color:white;letter-spacing:.3px}.view-title{position:absolute;top:28px;left:28px;pointer-events:none;max-width:400px;text-shadow:0 1px 12px #fff}.eyebrow{display:block;font-size:8px;letter-spacing:2px;color:#647b71;font-weight:600}.view-title h2{font-family:Georgia,serif;font-size:33px;font-weight:400;letter-spacing:-.8px;margin:10px 0}.view-title p{font-size:11px;color:#63766c}.north{position:absolute;right:30px;top:28px;display:grid;text-align:center;line-height:22px;font-size:10px;pointer-events:none}.north span{font-size:32px}.quick-tools{position:absolute;left:28px;top:139px;display:flex;flex-direction:column;gap:7px;width:158px}.quick-tools button{background:#ffffffef;font-size:10px;text-align:left;box-shadow:0 3px 12px #23463805}.quick-tools button[aria-pressed=true]{background:#173b35;color:white}.light-switch{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.light-switch button{border:0;border-radius:0;box-shadow:none;flex:1;white-space:nowrap;padding:0 8px;min-height:37px;font-size:9px}.viewpoints{position:absolute;bottom:27px;left:28px;display:flex;align-items:center;gap:10px;background:#ffffffed;border:1px solid var(--line);padding:6px 9px 6px 15px;border-radius:12px;box-shadow:0 5px 30px #173b3510}.viewpoints label{font-size:8px;letter-spacing:1.5px;color:var(--muted)}select{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:8px;min-height:44px;padding:0 10px;max-width:100%;font-size:11px}.viewpoints select{border:none;background:transparent;width:180px}.viewpoints button{background:#173b35;color:#fff;border:none;font-size:10px}.scene-note{position:absolute;right:28px;bottom:35px;pointer-events:none;text-align:right}.scene-note p{font:23px Georgia,serif;margin:9px 0}.scene-note>span:last-child{font-size:10px;color:#6c7c74}.panel{position:absolute;top:28px;right:80px;bottom:90px;width:292px;background:#fffffffa;backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 40px #173b3515;padding:20px;overflow:auto;z-index:6}.panel-heading,.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.panel-heading h2{font-size:15px;font-weight:500}.panel-heading button,.dialog-heading button{width:44px;padding:0;font-size:22px;border:0;background:none}.panel label{display:grid;gap:7px;margin:15px 0;font-size:11px}.panel .check{display:flex;align-items:center;min-height:30px;gap:10px;margin:5px 0}.check input{width:18px;height:18px;accent-color:#173b35}details{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}summary{cursor:pointer;font-size:12px;min-height:32px}details p{font-size:11px;line-height:1.6;color:var(--muted)}#door-list{display:flex;flex-direction:column;gap:5px;margin-top:10px}#door-list button{text-align:left;font-size:10px}.quiet{font-size:10px;color:#71807b;line-height:1.65;margin-top:16px}footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 24px;background:#fff;border-top:1px solid var(--line);font-size:9px;color:#71807b}footer button{min-height:32px;font-size:9px;padding:0;border:none;background:none;font-weight:400}footer span:first-child{color:#173b35}.walk-instructions{position:absolute;left:24px;bottom:105px;background:#ffffffeb;border-radius:10px;border:1px solid var(--line);padding:12px 15px;max-width:460px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.walk-instructions b{font-size:11px}.walk-instructions span{font-size:10px;color:var(--muted);flex-basis:100%}.walk-instructions button{font-size:10px;min-height:36px}.touch-pad{position:absolute;right:28px;bottom:30px;display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(2,48px);gap:5px}.touch-pad button{background:#ffffffda;font-size:19px;touch-action:none;padding:0;user-select:none}.touch-pad button:first-child{grid-column:2}.touch-pad button:nth-child(2){grid-row:2;grid-column:1}.touch-pad button:nth-child(3){grid-row:2;grid-column:2}.touch-pad button:nth-child(4){grid-row:2;grid-column:3}.position{position:absolute;right:28px;top:98px;background:#ffffffdf;padding:6px 10px;font-size:9px;border-radius:6px;pointer-events:none}.route-legend{position:absolute;bottom:100px;right:30px;font-size:9px;background:#ffffffed;padding:12px;border-radius:8px;display:grid;gap:7px}.route-legend span:nth-child(1){color:#b34c47}.route-legend span:nth-child(2){color:#2671cf}.route-legend span:nth-child(3){color:#bd682c}.route-legend span:nth-child(4){color:#148f9d}#loading{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:22px;background:#eef1ec;z-index:4;font-size:11px;color:#71807b}.loading-mark{letter-spacing:10px;font-size:29px;color:#173b35}#fallback{position:absolute;top:40%;left:50%;transform:translateX(-50%);width:260px;padding:22px;background:#fff;border:1px solid var(--line);border-radius:12px;z-index:7;font-size:12px}#fallback p{margin:12px 0;color:var(--muted);line-height:1.5}#toast{position:absolute;bottom:95px;left:50%;transform:translateX(-50%);padding:12px 20px;max-width:90%;background:#173b35;color:#fff;border-radius:10px;font-size:11px;z-index:10}dialog{color:#17302d;border:1px solid #d8dfda;border-radius:18px;width:min(850px,calc(100vw - 28px));max-height:90dvh;padding:30px;box-shadow:0 30px 100px #0b211b40}dialog::backdrop{background:#142b2475;backdrop-filter:blur(5px)}dialog h2{font:32px Georgia,serif;margin-top:10px}.lead{font:18px/1.7 Georgia,serif;max-width:620px}.statistics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:25px 0}.stat{background:#eff3ed;border-radius:10px;padding:15px}.stat b{display:block;font-size:26px;font-weight:400;margin-bottom:7px}.stat span{font-size:9px;color:#65776c}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.info-grid h3{font-size:13px;font-weight:600;margin:10px 0}.info-grid p,dialog>p{font-size:12px;line-height:1.8;color:#64776c;margin-bottom:12px}dialog li{font-size:11px;line-height:1.8;margin:7px 0}dialog pre{white-space:pre-wrap;font-size:10px;color:#617368}figure{margin:24px 0}figure img{width:100%;border:1px solid var(--line);border-radius:8px}figcaption{font-size:10px;margin-top:8px;color:var(--muted)}[hidden]{display:none!important}main[data-mode=walk] .view-title,main[data-mode=walk] .scene-note{display:none}main[data-mode=walk] .quick-tools{top:24px}main[data-mode=plan] .scene-note{display:none}body.night #workspace{color:#edf3ee}body.night .view-title{text-shadow:0 2px 15px #07111a}body.night .eyebrow,body.night .view-title p,body.night .scene-note>span:last-child{color:#b8c9c3}body.night .panel{color:#17302d}
@media(max-width:1100px){.topbar{gap:20px;padding:0 20px}.project{padding-left:18px}.brand{font-size:20px}.modes button{padding:0 12px;font-size:11px}.scene-note{display:none}.view-title h2{font-size:29px}.viewpoints{bottom:20px}}
@media(max-width:760px){.app{grid-template-rows:116px 34px minmax(0,1fr) 34px}.topbar{position:relative;flex-wrap:wrap;align-content:flex-start;height:116px;padding:14px 16px;gap:13px}.brand{font-size:18px;letter-spacing:3px}.brand span{font-size:6px}.project{padding-left:12px}.project small{font-size:7px;margin-bottom:4px}h1{font-size:15px}.icon{margin-left:auto;min-height:36px;width:36px}.modes{position:absolute;bottom:8px;left:16px;right:16px;justify-content:stretch;margin:0;padding:3px}.modes button{flex:1;font-size:10px;min-height:35px;padding:0 8px}.projectbar{padding:0 16px;font-size:8px;letter-spacing:.6px}.projectbar b{margin-left:8px}.projectbar button{font-size:9px}.desktop{display:none}.view-title{top:19px;left:16px}.view-title h2{font-size:25px;margin:7px 0}.view-title p{font-size:10px}.view-title .eyebrow{font-size:7px}.north{right:17px;top:17px}.quick-tools{top:auto;bottom:85px;left:16px;width:auto;right:16px;flex-direction:row;gap:5px;align-items:center;justify-content:flex-start;flex-wrap:wrap}.quick-tools>button{font-size:9px;min-height:36px;padding:0 9px}.light-switch button{min-height:34px;font-size:9px}.viewpoints{left:16px;right:16px;bottom:16px;padding:4px 7px 4px 10px;gap:4px;justify-content:space-between}.viewpoints label{display:none}.viewpoints select{min-width:0;flex:1;width:150px;font-size:10px}.viewpoints button{font-size:9px;white-space:nowrap;padding:0 10px}.panel{top:14px;right:14px;left:14px;bottom:18px;width:auto;padding:18px;z-index:9}.walk-instructions{left:16px;right:16px;bottom:auto;top:75px;max-width:none;padding:9px 12px}.walk-instructions span{font-size:9px}.walk-instructions button{font-size:9px;min-height:32px}main[data-mode=walk] .quick-tools{top:12px;bottom:auto;right:55px}main[data-mode=walk] .viewpoints{right:185px;bottom:15px;flex-direction:column;align-items:stretch;padding:4px}main[data-mode=walk] .viewpoints select{width:100%;height:36px;min-height:36px}main[data-mode=walk] .viewpoints button{min-height:34px}.touch-pad{bottom:16px;right:16px}.position{top:auto;bottom:129px;right:17px;font-size:8px}footer{padding:0 12px;font-size:8px}footer #navigation-hint{display:none}footer button{font-size:8px}.route-legend{bottom:147px;right:16px}.statistics{grid-template-columns:repeat(2,1fr)}.info-grid{grid-template-columns:1fr;gap:8px}dialog{padding:20px}.dialog-heading{margin-bottom:10px}dialog h2{font-size:26px}#toast{bottom:155px}.light-switch{flex-shrink:0}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.route-legend{bottom:155px;pointer-events:none}
@media(max-width:760px){.app{grid-template-rows:130px 36px minmax(0,1fr) 44px}.topbar{height:130px}.modes button,.icon,.quick-tools>button,.light-switch button,.walk-instructions button,.viewpoints button,.viewpoints select,main[data-mode=walk] .viewpoints select,main[data-mode=walk] .viewpoints button,.projectbar button,footer button{min-height:44px}.icon{width:44px}.projectbar{height:36px}.projectbar button{min-height:36px;padding:0 3px}.quick-tools{bottom:88px}.viewpoints{bottom:12px}.walk-instructions{top:76px}.walk-instructions #mouse-look{min-height:44px}main[data-mode=walk] .quick-tools .light-switch,main[data-mode=walk] .quick-tools #cutaway{display:none}main[data-mode=walk] .quick-tools{right:70px}main[data-mode=walk] .viewpoints{right:185px;bottom:12px}.touch-pad{bottom:15px}.panel-heading button,.dialog-heading button{flex-shrink:0;min-width:44px}.route-legend{bottom:155px}footer button{font-size:8px}}
@media(max-width:760px){.app{grid-template-rows:130px 44px minmax(0,1fr) 44px}.projectbar{height:44px}.projectbar button{min-height:44px}}
.quick-tools button{color:#173b35}.quick-tools button[aria-pressed=true]{color:#fff}.position,.walk-instructions,.viewpoints{color:#17302d}@media(max-width:360px){.topbar{gap:9px;padding-left:12px;padding-right:12px}.brand{font-size:15px;letter-spacing:2px}.brand span{font-size:5px;letter-spacing:1px}.project{padding-left:9px}.project small{font-size:6px;letter-spacing:1px}.project h1{font-size:13px}.icon{min-width:44px;margin-left:auto;flex-shrink:0}.modes{left:12px;right:12px}}
.pane-badge{position:absolute;top:16px;left:16px;pointer-events:none;z-index:2;background:#ffffffed;color:#173b35;border:1px solid #d8dfda;border-radius:5px;padding:7px 10px;font-size:8px;letter-spacing:1.4px}
main[data-mode=split] #plan-host{left:0;right:auto;width:var(--split-percent,50%)}
main[data-mode=split] #three-host,main[data-mode=split] #label-layer{left:var(--split-percent,50%);right:0}
main[data-mode=split] .scene-badge{left:calc(var(--split-percent,50%) + 16px);top:auto;bottom:16px}
main[data-mode=split] .view-title,main[data-mode=split] .scene-note{display:none}
main[data-mode=split] .quick-tools{left:calc(var(--split-percent,50%) + 16px);right:60px;top:16px;width:auto;flex-direction:row;flex-wrap:wrap}
#split-divider{position:absolute;z-index:4;left:var(--split-percent,50%);top:0;bottom:0;width:14px;transform:translateX(-50%);cursor:col-resize;touch-action:none;background:#d8dfda66;display:flex;align-items:center;justify-content:center}
#split-divider span{height:70px;width:4px;background:#54776b;border-radius:4px;box-shadow:0 0 0 4px #ffffffb8}
#split-divider:hover,#split-divider:focus-visible{background:#b9cfc1aa}
@media(max-width:760px){.modes button{min-width:0;padding:0 5px;font-size:9.5px}main[data-mode=split] #plan-host{left:0;right:0;top:0;bottom:auto;width:100%;height:var(--split-percent,50%)}main[data-mode=split] #three-host,main[data-mode=split] #label-layer{left:0;right:0;top:var(--split-percent,50%);bottom:0}main[data-mode=split] #split-divider{left:0;right:0;top:var(--split-percent,50%);bottom:auto;width:100%;height:44px;transform:translateY(-50%);cursor:row-resize}#split-divider span{width:70px;height:4px}main[data-mode=split] .quick-tools{left:16px;right:60px;top:calc(var(--split-percent,50%) + 12px);bottom:auto}main[data-mode=split] .north{top:calc(var(--split-percent,50%) + 12px)}main[data-mode=split] .scene-badge{left:auto;right:16px;top:calc(var(--split-percent,50%) + 112px);bottom:auto;font-size:7px}main[data-mode=split] .viewpoints{z-index:3}}
#scene-options-slot:not(:empty){display:grid;gap:8px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #d8dfda}#scene-options-slot button{color:#173b35;text-align:left;min-height:44px}#scene-options-slot button[aria-pressed=true]{color:#fff}#scene-options-slot .light-switch button{min-height:44px}
@media(max-width:760px){main[data-mode=split] .quick-tools{right:auto}main[data-mode=split] .scene-badge{display:none}main[data-mode=split] .route-legend{left:16px;right:auto;top:54px;bottom:auto;font-size:8px}main[data-mode=split] .zone-label{font-size:7px;padding:4px 6px}}
@media(max-width:760px){main[data-mode=split] .quick-tools,main[data-mode=split] .north{top:calc(var(--split-percent,50%) + 28px)}}
