:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#26342f;background:#e6e8e0;font-synthesis:none;--ink:#26342f;--green:#294e40;--muted:#758078;--line:#dce1d8;--paper:#f9faf5}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}button,summary,select,input{cursor:pointer}button{transition:background .15s,color .15s}button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b4975b;outline-offset:3px}#app{display:flex;height:100dvh;overflow:hidden}#panel{width:296px;flex:none;background:var(--paper);padding:28px 25px 20px;overflow:auto;z-index:5;border-right:1px solid #dce1d8}.brand{display:flex;align-items:center;gap:11px}.mark{background:var(--green);color:white;width:38px;height:42px;display:grid;place-items:center;font-family:Georgia,serif;font-size:26px}.brand strong{letter-spacing:4px;font-size:14px}.brand span:not(.mark){display:block;font-size:8px;letter-spacing:1.8px;margin-top:5px}.intro{margin:31px 0 27px}.eyebrow{font-size:9px;letter-spacing:2px;color:var(--muted);font-weight:650}h1{font-family:Georgia,serif;font-weight:400;font-size:31px;line-height:1.15;letter-spacing:-.6px;margin:11px 0 13px}.muted{font-size:12px;line-height:1.6;color:var(--muted);max-width:210px}.candidate{font-size:9px;display:inline-flex;align-items:center;gap:6px;padding:7px 9px;background:#e9eee4;border-radius:3px}.candidate i{width:5px;height:5px;background:#64845b;border-radius:50%}section{margin:0 0 22px}h2,.section-label{font-size:10px;letter-spacing:1px;text-transform:uppercase;font-weight:650;margin:0 0 11px;display:block}.segmented{display:flex;padding:3px;background:#e8ece4;border-radius:5px;gap:2px}.segmented button{border:0;background:transparent;padding:8px 7px;color:#6b766f;flex:1;font-size:11px;border-radius:3px}.segmented button.active{background:var(--green);color:white;box-shadow:0 1px 3px #17291c1c}.floor-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.floor-grid button{border:1px solid var(--line);padding:9px 3px;background:transparent;border-radius:4px;font-size:10px;color:#657169}.floor-grid button.active{border-color:#5b7463;background:#e9eee4;color:var(--green)}select{appearance:auto;width:100%;background:transparent;border:1px solid var(--line);color:var(--ink);padding:10px 8px;font-size:11px;border-radius:4px}details{border-top:1px solid var(--line);padding-top:16px;margin-top:9px}summary{list-style:none;font-size:12px;font-weight:550;margin-bottom:17px}summary span{float:right;color:#839080}summary::-webkit-details-marker{display:none}.field{font-size:10px;color:#667367;display:block}.field select{margin:8px 0 13px}.toggle-row{display:flex;align-items:center;justify-content:space-between;margin:12px 0;font-size:11px;color:#58665d}.toggle-row input{appearance:none;width:29px;height:16px;border-radius:20px;background:#ccd3c8;position:relative;margin:0}.toggle-row input:after{content:"";position:absolute;background:white;width:12px;height:12px;border-radius:50%;top:2px;left:2px;transition:left .15s}.toggle-row input:checked{background:#5c795f}.toggle-row input:checked:after{left:15px}.quiet{border:0;border-top:1px solid var(--line);background:none;text-align:left;width:100%;font-size:10px;padding:15px 0;color:#506055}.quiet:hover{color:#a17b3e}.panel-foot{font-size:10px;color:#526558;line-height:1.8;margin-top:13px}.panel-foot span{font-size:9px;color:#8b958a}#stage{position:relative;flex:1;min-width:0;background:#b6cbd3}canvas{display:block;width:100%;height:100%;outline:0;touch-action:none}.stage-top{position:absolute;left:28px;right:28px;top:25px;display:flex;align-items:center;gap:15px;pointer-events:none}.stage-top button{pointer-events:auto}.view-label span{display:block;font-size:9px;letter-spacing:2px;color:#425b55;margin-bottom:5px}.view-label strong{font-family:Georgia,serif;font-weight:400;font-size:23px;color:#203e32;text-shadow:0 1px 8px #ffffff80}.pill,.icon-btn{border:1px solid #fff7;background:#fbfcf3db;color:#3f5447;border-radius:24px;padding:10px 15px;font-size:11px;backdrop-filter:blur(8px)}.pill{margin-left:auto}.icon-btn{padding:9px 13px}.stage-bottom{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:20px;padding:25px 28px 22px;background:linear-gradient(transparent,#f7f8efb8);pointer-events:none;font-size:10px;color:#3e5146}.prelim{letter-spacing:1.1px;font-size:8px;white-space:nowrap}#loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#eef1e8ed;z-index:10}#loading h2{font:26px Georgia,serif;text-transform:none;letter-spacing:0;margin:18px 0 7px}#loading p{font-size:12px;color:#657169}.spinner{width:34px;height:34px;border:2px solid #bac8b6;border-top-color:#2e523d;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[hidden]{display:none!important}#crosshair{position:absolute;left:50%;top:50%;color:#fff9;pointer-events:none;font-size:23px;text-shadow:0 1px 2px #000}#walkNotice{position:absolute;left:50%;bottom:65px;transform:translateX(-50%);text-align:center;background:#f9faf4e8;border:1px solid #fff8;border-radius:7px;padding:13px 20px;max-width:460px;min-width:300px;pointer-events:none}#walkNotice strong{display:block;font-size:12px;margin-bottom:6px}#walkNotice span{font-size:10px;line-height:1.5;color:#6c776a}#touchPad{position:absolute;right:20px;bottom:65px;text-align:center}#touchPad button{width:40px;height:40px;margin:2px;border-radius:50%;background:#fafbf0c9;border:1px solid #fff9;color:#354e3b}dialog{width:min(780px,90vw);max-height:90vh;padding:36px;border:0;border-radius:10px;background:#fbfcf7;color:var(--ink);box-shadow:0 20px 100px #10201550}dialog::backdrop{background:#12282080;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:13px;top:10px;border:0;background:none;font-size:25px;color:#62725f}dialog h2{font:28px Georgia,serif;text-transform:none;letter-spacing:-.3px}dialog p,dialog li{font-size:13px;line-height:1.65;color:#61715f}dialog img{width:100%;border-radius:4px}dialog ul{padding-left:20px}body.controls-hidden #panel{display:none}@media(max-height:850px){#panel{padding-top:20px}.intro{margin:23px 0}h1{font-size:27px}section{margin-bottom:17px}.toggle-row{margin:10px 0}.panel-foot{display:none}}@media(max-width:800px){#panel{position:absolute;width:270px;top:0;bottom:0;box-shadow:10px 0 50px #0d211b20}body:not(.controls-hidden) .stage-top{left:285px}.stage-top{left:15px;right:15px;top:15px}.stage-top .view-label{display:none}.stage-bottom{padding:20px 15px}.prelim{display:none}#walkNotice{display:none}dialog{padding:30px 22px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}.spinner{animation:none}}

.gate-control{margin:3px 0 15px}.gate-control button{width:100%;padding:9px 10px;border:1px solid #9aaa98;border-radius:4px;background:#e9eee4;color:var(--green);font-size:11px;text-align:left}.gate-control button[aria-pressed="true"]{background:var(--green);color:white}.gate-control button:disabled{opacity:.55;cursor:default}.gate-control small{display:block;margin-top:6px;font-size:10px;line-height:1.4;color:#667367}

#roomPins{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.room-leaders{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.room-leaders line{stroke:#466652;stroke-width:1.2;stroke-opacity:.7}.room-leaders circle{fill:#294e40;stroke:#fffef7;stroke-width:1}
.room-pin{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:1px solid #6b827365;border-radius:20px;padding:9px 12px;background:#fbfcf3f0;box-shadow:0 2px 12px #152c2526;color:#294e40;font-size:11px;white-space:nowrap;min-height:36px}
.room-pin:before{content:'↘';margin-right:6px;color:#758c71}
.room-pin:hover,.room-pin.hovered,.room-pin:focus-visible{background:#294e40;color:#fff;border-color:#294e40;z-index:2}
.room-pin:hover:before,.room-pin.hovered:before,.room-pin:focus-visible:before{color:#d8e5cb}
canvas.room-target{cursor:pointer}
.stage-top{z-index:3}
#backToOverhead{margin-left:auto}
#backToOverhead:not([hidden])+#reset{margin-left:0}
@media(max-width:800px){.room-pin{font-size:10px;padding:8px 9px;min-height:44px}#backToOverhead{font-size:10px;padding:10px}.stage-top{gap:10px}}

/* Keep the drawer close control reachable on narrow phones without squeezing actions. */
@media(max-width:800px){body:not(.controls-hidden) .stage-top{left:280px;right:auto;width:auto}body:not(.controls-hidden) .stage-top>.pill{display:none}body:not(.controls-hidden) #touchPad{visibility:hidden}.stage-top .pill{white-space:nowrap}.stage-top #panelToggle{flex:none;min-width:40px;min-height:44px}}

/* Compact controls for floor diagrams and explicit view changes. */
#labelsToggle[hidden]{display:none}#labelsToggle{white-space:nowrap}
#homeView{margin-left:0}#dismissWalkHelp{position:absolute;right:8px;top:5px;border:0;background:none;color:#496052;font-size:20px;cursor:pointer}
#walkNotice{position:absolute}.view-status{position:absolute;top:105px;left:28px;max-width:440px;background:#fafbf4ec;color:#294b3e;font-size:12px;line-height:1.5;padding:8px 12px;border-radius:7px;pointer-events:none;z-index:3}.view-status:empty{display:none}
@media(max-width:1100px){.stage-top{gap:8px}.stage-top .pill{padding:11px 13px}.stage-top .view-label{min-width:0}}
@media(max-width:800px){#homeView{display:none}#labelsToggle:not([hidden])~#reset{display:none}.view-status{left:15px;right:15px;top:73px;font-size:11px}.stage-top .pill{padding:10px 12px}}

/* A held walking arrow is a control, including during Safari's long-press gesture. */
#touchPad,#touchPad *{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#canvas{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#touchPad button.held{background:#294e40;color:#fff;border-color:#294e40}

/* Room labels are part of the model gesture surface; toolbars remain separate. */
#modelSurface{position:absolute;inset:0}
#modelSurface,#modelSurface .room-pin{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
