:root{--ink:#171733;--muted:#686879;--paper:#ffffff;--line:#e2e7ef;--wine:#990000;--wine-light:#f8e8e8;--green:#000066;--shadow:0 8px 32px #263d3220;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button{color:inherit}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid #990000;outline-offset:3px}button{background:none;border:0}button:disabled{cursor:default}button:hover{filter:brightness(.95)}.skip{position:absolute;top:-60px;z-index:2000;background:#fff;padding:12px}.skip:focus{top:0}.topbar{height:86px;display:flex;align-items:center;padding:0 32px;gap:40px;border-bottom:1px solid var(--line);background:#ffffff}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;white-space:nowrap;letter-spacing:-.6px}.brand b{font-weight:700}.brand-icon{display:grid;place-items:center;width:42px;height:44px;background:var(--wine);color:#fff8e9;border-radius:12px;font-size:35px;line-height:1}.brand small{display:block;letter-spacing:2px;font-size:9px;font-weight:600;margin-top:7px;color:#7b837a}.topbar nav{display:flex;align-items:center;gap:32px;margin-left:auto;font-size:13px;height:100%}.active-nav{height:100%;display:flex;align-items:center;border-bottom:3px solid var(--wine);font-weight:600}.topbar nav button{font-size:13px;padding:12px 0;color:#6e7970}.local-badge{font-size:9px;letter-spacing:1.4px;font-weight:700;white-space:nowrap;border:1px solid var(--line);border-radius:30px;padding:10px 12px;display:flex;align-items:center;gap:7px}.local-badge i,.status-dot{width:6px;height:6px;background:#65876c;border-radius:50%;display:inline-block}.workspace{height:calc(100dvh - 144px);min-height:520px;display:grid;grid-template-columns:335px 1fr}.sidebar{display:flex;flex-direction:column;min-height:0;background:#ffffff;border-right:1px solid var(--line);z-index:500}.intro{padding:29px 25px 22px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.7px;color:#7a8275}.intro h1{font-family:Georgia,serif;font-size:37px;letter-spacing:-1.5px;margin:12px 0 9px;font-weight:400}.intro p{font-size:13px;line-height:1.65;color:var(--muted);margin:0}.search-wrap{margin:0 22px 17px;position:relative;display:flex;align-items:center;border:1px solid #dce1d7;border-radius:9px;background:#f7f8f3;min-height:45px}.search-wrap>span{font-size:26px;margin:0 8px 0 12px;color:#687c70}input{min-width:0;width:100%;border:0;background:none;padding:13px 0;font-size:12px;color:var(--ink)}input::placeholder{color:#859085}input:focus{outline:0}.search-wrap:focus-within{outline:2px solid #a66d55}.search-wrap kbd{font:11px Arial;border:1px solid #d8ddd3;padding:2px 5px;border-radius:3px;margin:0 9px;color:#8c9589}.filters{display:flex;gap:4px;padding:0 22px 20px;border-bottom:1px solid var(--line)}.filters button{font-size:11px;flex:1;border-radius:6px;padding:9px 5px;white-space:nowrap;color:#768076}.filters button[aria-pressed=true]{background:var(--green);color:white}.filters button span{font-size:9px;margin-left:3px}.list-heading{display:flex;align-items:center;justify-content:space-between;padding:20px 25px 12px}.list-heading h2{font-size:11px;margin:0;letter-spacing:.2px}.list-heading>span{font-size:10px;color:#7d897d}.place-list{overflow:auto;flex:1;min-height:70px;padding:0 12px 16px;scrollbar-width:thin;scrollbar-color:#d1d6ca transparent}.place-row{display:flex;border-radius:8px;align-items:center;position:relative;margin-bottom:4px}.place-row:hover{background:#f4f5ee}.place-row.selected{background:#f2e9df}.place-open{flex:1;display:flex;align-items:center;gap:11px;text-align:left;padding:12px 11px;min-width:0}.place-symbol{width:34px;height:36px;display:grid;place-items:center;background:#f0f1e9;border-radius:9px;flex-shrink:0;color:#607563}.residential .place-symbol{background:#f4e8df;color:var(--wine)}.place-symbol svg{width:17px;height:17px}.place-open strong{display:block;font-size:12px;font-weight:600;line-height:1.4}.place-open small{display:block;font-size:10px;color:#889080;margin-top:4px}.save-button{padding:12px;margin-right:5px;color:#91a08e;line-height:1}.save-button svg{height:15px;width:15px}.save-button[aria-pressed=true]{color:var(--wine)}.save-button[aria-pressed=true] svg{fill:#edd3bd}.sidebar-footer{display:flex;padding:17px 25px;border-top:1px solid var(--line);gap:10px;align-items:flex-start}.sidebar-footer .status-dot{margin-top:4px}.sidebar-footer strong{font-size:10px}.sidebar-footer p{margin:5px 0 0;font-size:10px;color:#8a9387}.map-shell{position:relative;overflow:hidden;background:#edf0e3}#map{height:100%;width:100%;background:#eef0e5;z-index:0}.map-heading{position:absolute;z-index:400;top:27px;left:30px;pointer-events:none;text-shadow:0 1px 3px #fff,0 0 12px #f4f6e9}.map-heading h2{font-family:Georgia,serif;font-weight:400;font-size:26px;letter-spacing:-.6px;margin:8px 0}.map-heading p{font-size:11px;letter-spacing:.2px;color:#778476;margin:0}.map-actions{position:absolute;top:27px;right:22px;z-index:400;display:flex;gap:8px}.map-actions button{box-shadow:0 2px 9px #35423212;border:1px solid #e0e4d9;background:#ffffff;border-radius:7px;padding:11px 12px;font-size:10px;display:flex;gap:7px;align-items:center}.map-actions button>span:first-child{font-size:17px;line-height:12px}.map-actions button[aria-pressed=false]{color:#9caaa0;background:#f2f2eb}.compass{position:absolute;top:91px;right:33px;z-index:400;text-align:center;pointer-events:none}.compass span{font-size:10px;letter-spacing:1px}.compass b{display:block;font-size:26px;font-weight:400;margin-top:2px;color:#657861}.map-legend{position:absolute;bottom:31px;left:25px;z-index:400;display:flex;gap:16px;align-items:center;background:#fffef9ed;padding:11px 14px;border:1px solid #e5e5d8;border-radius:7px;font-size:9px;color:#687564;box-shadow:0 3px 15px #43503c09}.map-legend span{display:flex;align-items:center;gap:5px}.map-legend i{display:inline-block;width:7px;height:7px;border-radius:50%}.residence-key{background:var(--wine)}.campus-key{background:#80917d}.map-help{position:absolute;left:25px;bottom:10px;font-size:8px;color:#889582;z-index:400}.journey{height:58px;display:flex;align-items:center;gap:32px;border-top:1px solid var(--line);padding:0 28px;background:#ffffff}.journey-label{font-size:8px;letter-spacing:1.5px;color:#8d9386;margin-right:13px}.step{font-size:11px;display:flex;gap:7px;align-items:center;color:#73806f}.step b{font-weight:400;font-size:8px;background:#edf0e7;border-radius:50%;padding:5px}.step.current{color:var(--wine);font-weight:600}.step.current b{background:var(--wine);color:white}.step.future{color:#a1a799}.step small{font-size:8px;border:1px solid #e2e7ef;border-radius:4px;padding:3px 5px}.independent{margin-left:auto;font-size:9px;color:#9aa18f}.leaflet-control-zoom{border:1px solid #dce1d2!important;border-radius:7px!important;box-shadow:0 2px 10px #33462b0a!important;overflow:hidden}.leaflet-control-zoom a{color:#53624e!important;background:#ffffff!important;width:35px!important;height:35px!important;line-height:35px!important}.leaflet-bottom.leaflet-right{bottom:30px;right:13px}.leaflet-control-attribution{font-size:8px!important;background:#ffffffab!important;color:#84917d!important}.leaflet-control-attribution a{color:#677b61!important}.leaflet-bottom.leaflet-right .leaflet-control-attribution{position:fixed;bottom:59px;right:0;margin:0}.house-pin{border:0!important;background:none!important}.house-pin>span{width:29px;height:29px;border:2px solid #fff8ea;box-shadow:0 2px 7px #56403030;border-radius:10px;display:grid;place-items:center;background:var(--wine);color:#fff9ed;transition:transform .12s}.house-pin svg{height:15px;width:15px}.house-pin.is-selected>span{background:#171733;box-shadow:0 0 0 5px #a85e3638,0 4px 10px #44352244;transform:scale(1.18)}.campus-pin>span{width:10px;height:10px;border-radius:50%;background:#8f9f85;border:2px solid #f7f9ec;display:block;box-shadow:0 1px 4px #5e725d33}.campus-pin.is-selected>span{background:#171733;box-shadow:0 0 0 5px #a85e3650}.leaflet-tooltip.place-label{background:#ffffffee;color:#624336;border:1px solid #e5ded0;box-shadow:0 2px 5px #283e2b09;padding:5px 7px;font:10px Arial;border-radius:5px}.leaflet-tooltip.place-label:before{display:none}.leaflet-tooltip.land-label{border:0;background:none;box-shadow:none;color:#759286;font:italic 15px Georgia;text-shadow:0 1px 3px white}.leaflet-tooltip.road-label{border:0;background:none;box-shadow:none;color:#90987f;font:9px Arial;letter-spacing:.6px;text-shadow:0 1px 2px white;opacity:.8}.detail{position:absolute;right:22px;bottom:85px;width:310px;background:#fffef9;z-index:500;border:1px solid #deded1;border-radius:13px;box-shadow:var(--shadow);overflow:auto;max-height:calc(100% - 160px)}.detail-top{padding:23px 23px 19px;background:linear-gradient(120deg,#edeedf,#faf8ed);position:relative}.detail .close{position:absolute;right:10px;top:10px;border-radius:50%;background:#fff9;font-size:20px;width:28px;height:28px;line-height:25px}.detail .type-pill{display:inline-block;border:1px solid #d2d9c9;padding:5px 7px;border-radius:4px;color:#6a7d62;font-size:8px;letter-spacing:1px;text-transform:uppercase}.detail h2{font-family:Georgia,serif;font-weight:400;font-size:26px;line-height:1.1;margin:13px 24px 9px 0;letter-spacing:-.5px}.detail .subtitle{color:#82907d;font-size:10px;line-height:1.6;margin:0}.detail-body{padding:20px 23px}.detail-status{font-size:9px;display:flex;gap:6px;align-items:center;color:#6a7e61}.detail-status i{width:5px;height:5px;background:#759066;border-radius:50%}.detail-description{font-size:11px;line-height:1.7;color:#829078;margin:12px 0}.interior{padding:14px;background:#f5f5ec;border:1px dashed #d5dce7;border-radius:7px;margin:17px 0}.interior strong{font-size:11px;font-weight:600;display:block;margin-bottom:6px}.interior p{font-size:10px;color:#859079;line-height:1.6;margin:0}.interior .stages{font-size:9px;color:#a1a78f;margin-top:12px;word-spacing:7px}.detail-links{display:flex;gap:8px;flex-wrap:wrap}.detail-links a,.detail-save{padding:10px 12px;text-decoration:none;font-size:10px;background:var(--green);color:#fff;border-radius:5px;display:inline-block;line-height:1.2}.detail-links a.secondary{background:#f1f2e8;color:#6c7d61}.detail-save{width:100%;margin-top:12px;background:#fff;border:1px solid #d5dce7;color:#6b7f61}.detail-save[aria-pressed=true]{color:var(--wine);background:#f5ece2}.detail-sources{border-top:1px solid var(--line);padding:12px 23px;font-size:8px;color:#99a18e;line-height:1.5}.empty{padding:20px 15px;color:#82927b;line-height:1.7;font-size:12px}.empty strong{display:block;color:#40593a;margin-bottom:6px}.error{position:absolute;background:#fff4df;border:1px solid #caa46b;top:130px;left:25px;right:25px;z-index:600;padding:18px;border-radius:10px;font-size:12px;line-height:1.6}.error[hidden]{display:none}dialog{width:520px;max-width:calc(100% - 30px);max-height:85dvh;border:1px solid #e3e5db;border-radius:15px;padding:28px;background:#ffffff;color:var(--ink);box-shadow:var(--shadow)}dialog::backdrop{background:#1d302766;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head button{font-size:24px}.dialog-head+h2{font:30px Georgia;letter-spacing:-.6px;margin:15px 0}dialog p{font-size:12px;line-height:1.7;color:#788573}#coverage{display:flex;gap:10px;margin:20px 0}#coverage span{flex:1;padding:12px;background:#edf1e5;font-size:10px;border-radius:6px}#coverage b{display:block;font:25px Georgia;margin-bottom:5px}.source-list{padding:0;list-style:none}.source-list li{border-bottom:1px solid var(--line);padding:12px 0}.source-list a{font-size:12px;color:var(--green);text-underline-offset:3px}.source-list p{font-size:11px;margin:5px 0}.note{font-size:10px}.dialog-links{display:flex;gap:20px;font-size:11px;margin-top:20px}.dialog-links a{color:var(--wine)}[hidden]{display:none!important}
@media(min-width:1500px){.workspace{grid-template-columns:365px 1fr}.intro{padding:35px 30px 25px}.intro h1{font-size:42px}.map-heading{left:40px;top:33px}.map-heading h2{font-size:30px}.detail{width:330px}}
@media(max-width:1100px){.topbar{padding:0 22px;gap:20px}.workspace{grid-template-columns:300px 1fr}.intro{padding-left:22px}.map-heading h2{font-size:22px;max-width:240px}.map-actions{top:120px;left:25px;right:auto}.compass{top:27px}.footprint-key{display:none!important}.journey{gap:20px;padding:0 20px}.independent{display:none}.detail{bottom:85px;right:15px;width:280px;max-height:calc(100% - 175px)}}
@media(max-width:760px){.topbar{height:72px;padding:0 16px}.brand{font-size:17px;gap:9px}.brand-icon{width:34px;height:36px;font-size:28px}.brand small{font-size:7px;letter-spacing:1.6px}.topbar nav{gap:0}.active-nav,.local-badge{display:none!important}.topbar nav button{font-size:10px}.workspace{display:flex;flex-direction:column-reverse;height:auto;min-height:0}.map-shell{height:52dvh;min-height:340px;flex-shrink:0}.sidebar{height:48dvh;min-height:350px;border-top:1px solid var(--line);border-right:0}.intro{padding:15px 18px 9px;display:flex;align-items:center;justify-content:space-between;gap:12px}.intro .eyebrow{display:none}.intro h1{font-size:26px;margin:0}.intro p{font-size:9px;line-height:1.5}.search-wrap{margin:0 16px 10px;min-height:40px}.search-wrap input{padding:10px 0}.filters{padding:0 16px 9px}.filters button{padding:8px}.list-heading{padding:12px 20px 7px}.place-list{padding-bottom:8px}.sidebar-footer{display:none}.place-open{padding:9px 11px}.place-open strong{font-size:12px}.journey{height:50px;gap:15px;padding:0 16px;justify-content:space-between}.journey-label,.step small{display:none}.step{font-size:10px}.map-heading{left:18px;top:19px}.map-heading h2{font-size:21px;margin-top:6px;max-width:240px}.map-heading .eyebrow{font-size:8px}.map-heading p{font-size:10px}.map-actions{top:100px;left:17px}.map-actions button{padding:9px;font-size:9px}.compass{right:23px;top:20px}.map-legend{left:15px;bottom:24px;padding:8px;font-size:8px}.map-help{left:15px;bottom:8px;font-size:7px}.leaflet-bottom.leaflet-right{bottom:26px;right:5px}.leaflet-bottom.leaflet-right .leaflet-control-attribution{position:relative;bottom:-26px;font-size:7px!important}.detail{top:12px;bottom:12px;right:12px;width:min(310px,calc(100% - 24px));max-height:none}.detail-top{padding:17px 20px 12px}.detail h2{font-size:23px;margin:10px 22px 5px 0}.detail-body{padding:14px 20px}.interior{margin:12px 0}.detail-sources{padding:10px 20px}.detail-description{margin:8px 0}.leaflet-tooltip.place-label{font-size:9px}dialog{padding:22px}.error{top:150px}.journey .step b{font-size:7px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.explore-plans{margin-top:13px;display:flex;align-items:center;justify-content:space-between;width:100%;background:var(--wine);color:#ffffff;border-radius:6px;padding:12px;font-size:11px;font-weight:600}.explore-plans span{font-size:17px}.plan-dialog{width:calc(100vw - 48px);max-width:1600px;height:calc(100dvh - 48px);max-height:none;padding:0;overflow:hidden;background:#f7f7f0}.plan-dialog[open]{display:flex;flex-direction:column}.plan-header{display:flex;align-items:center;gap:24px;padding:20px 25px;background:#ffffff;border-bottom:1px solid var(--line);flex-shrink:0}.plan-header h2{font:27px Georgia;margin:5px 0 0}.back-campus{font-size:11px;border:1px solid var(--line);border-radius:6px;padding:10px;white-space:nowrap}.dorm-select-label{margin-left:auto}.plan-dialog label{display:flex;flex-direction:column;gap:5px;font-size:9px;letter-spacing:.5px;color:#7c8876}.plan-dialog select{font:12px Arial;color:var(--ink);background:#ffffff;border:1px solid #d5dce7;border-radius:6px;padding:9px;max-width:100%}.plan-close{font-size:28px;padding:5px 8px}.plan-toolbar{display:flex;align-items:center;gap:14px;padding:13px 25px;border-bottom:1px solid var(--line);background:#fdfdf8}.plan-toolbar>label:first-child{min-width:200px;max-width:60%;flex:1}.plan-toolbar a{font-size:11px;white-space:nowrap;text-underline-offset:3px;color:var(--wine)}.plan-zoom{display:flex;align-items:center;border:1px solid #d5dce7;border-radius:6px;background:#ffffff;margin-left:auto}.plan-zoom button{height:35px;min-width:35px;font-size:14px}.plan-zoom #plan-fit{font-size:10px;min-width:45px;border-inline:1px solid #e3e6dc}.plan-zoom button:disabled{opacity:.35}.plan-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;flex:1;min-height:0}.plan-main{min-width:0;min-height:0;display:flex;flex-direction:column}.plan-canvas{flex:1;min-height:0;overflow:auto;background:#edf0f5;overscroll-behavior:contain}.plan-image-wrap{width:max-content;min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:18px}.plan-image-wrap img{display:block;max-width:none;background:white;box-shadow:0 2px 12px #253b2820}.plan-caption{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 17px;background:#faf9f7;font-size:9px;color:#7e8a74;line-height:1.5}.plan-caption a{white-space:nowrap;color:#6b7d5e}.plan-notice{font-size:11px;line-height:1.6;padding:11px 18px;background:#faf0dc;border-bottom:1px solid #e7d8b9;color:#7b5b36}.room-panel{background:#ffffff;border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.room-panel-heading{padding:20px 18px 13px;border-bottom:1px solid var(--line)}.room-panel h3{font:20px Georgia;margin:0 0 8px}.room-panel-heading p{font-size:10px;line-height:1.6;margin:0 0 12px}.room-panel input{border:1px solid var(--line);background:#faf9f7;padding:10px;border-radius:6px;font-size:10px}.room-panel-heading>span{display:block;font-size:9px;color:#91a085;margin-top:11px}#room-records{flex:1;overflow:auto;padding:6px 12px;min-height:0}.room-record{border-bottom:1px solid #e2e7ef;padding:0 5px}.room-record summary{display:flex;justify-content:space-between;gap:9px;align-items:center;cursor:pointer;padding:13px 0}.room-record summary strong{font-size:12px;font-weight:600}.room-record summary span{font-size:9px;color:#809175;text-align:right}.room-record p{font-size:11px;margin:0 0 11px;line-height:1.7}.room-record .room-context{background:#f3f5eb;padding:8px;border-radius:4px;font-size:10px}.room-record .room-caveat{font-size:9px;color:#9b8a6d}.room-record a{font-size:10px;color:var(--green);display:inline-block;margin-bottom:13px}.plan-source-notes{border-top:1px solid var(--line);padding:12px 25px;background:#ffffff;max-height:32%;overflow:auto;flex-shrink:0}.plan-source-notes summary{cursor:pointer;font-size:11px;color:#7e795e}.plan-source-notes p,.plan-source-notes li{font-size:11px;line-height:1.65;color:#7b806d}.plan-source-notes ul{padding-left:18px}.plan-source-notes li{margin-bottom:7px}
@media(max-width:900px){.plan-dialog{width:calc(100vw - 20px);height:calc(100dvh - 20px)}.plan-header{padding:15px;gap:14px}.plan-header h2{font-size:22px}.plan-header .eyebrow{font-size:7px}.back-campus{font-size:9px}.plan-body{grid-template-columns:minmax(0,1fr) 245px}.plan-toolbar{padding:12px 15px}.dorm-select-label select{max-width:190px}}
@media(max-width:600px){.plan-dialog{width:100vw;height:100dvh;max-width:none;border:0;border-radius:0;margin:0}.plan-header{padding:12px 14px;gap:9px;flex-wrap:wrap}.plan-header h2{font-size:23px}.plan-header .back-campus{order:0}.plan-header>div{order:2;width:100%}.plan-header .dorm-select-label{order:3;width:100%;margin:0}.dorm-select-label select{max-width:none;width:100%}.plan-close{order:1;margin-left:auto}.plan-toolbar{padding:10px 14px;gap:8px;flex-wrap:wrap}.plan-toolbar>label:first-child{max-width:none;flex-basis:100%;min-width:0}.plan-toolbar a{font-size:10px}.plan-zoom{margin-left:0}.plan-body{display:flex;flex-direction:column;overflow:auto}.plan-main{flex:none;height:55dvh;min-height:300px}.room-panel{min-height:250px;max-height:55dvh;flex:none;border-left:0;border-top:1px solid var(--line)}.room-panel-heading{padding:13px 16px}.room-panel-heading p{margin-bottom:8px}.room-panel h3{font-size:19px}.plan-caption{font-size:8px;padding:9px 12px}.plan-source-notes{max-height:25%;padding:11px 14px}.plan-notice{font-size:10px}.plan-source-notes summary{font-size:10px}}
.plan-stage{position:relative;flex-shrink:0;line-height:0}.plan-canvas{position:relative}#room-hotspots{position:absolute;inset:0;pointer-events:none}.room-hotspot{position:absolute;transform:translate(-50%,-50%);min-width:20px;min-height:18px;padding:2px 4px;background:#fffaf0ed;color:#833c2d;border:1px solid #bc805b;border-radius:4px;pointer-events:auto;font-size:9px;font-weight:700;line-height:1.2;box-shadow:0 1px 4px #45341f22}.room-hotspot:hover,.room-hotspot:focus-visible,.room-hotspot[aria-pressed=true]{background:#990000;color:#fff;border-color:#990000;z-index:2}.room-hotspot[aria-pressed=true]{box-shadow:0 0 0 4px #b8785240}#selected-room{position:relative;padding:18px;background:#f5eade;border-bottom:1px solid #dcc8b0;max-height:50%;overflow:auto;flex-shrink:0}#selected-room h3{font:25px Georgia;margin:8px 0 12px}#selected-room p{font-size:11px;line-height:1.7;margin:12px 0}#selected-room a{font-size:10px;color:#754b36}.close-room{position:absolute;right:9px;top:7px;font-size:21px}.room-facts{display:flex;gap:6px;flex-wrap:wrap}.room-facts span{font-size:9px;background:#ffffff;border:1px solid #dfd0bc;padding:5px 7px;border-radius:4px}@media(max-width:600px){#selected-room{max-height:260px}.room-hotspot{min-width:22px;min-height:22px;font-size:9px}.room-panel:has(#selected-room:not([hidden])){max-height:none}#selected-room h3{font-size:23px}}
#return-floor{font-size:11px;white-space:nowrap;padding:10px 12px;border:1px solid #d9dfcf;background:#fffaf0;border-radius:6px;color:var(--wine)}
.room-selection-areas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.room-selection-areas polygon{fill:#40765618;stroke:#40765677;stroke-width:1;vector-effect:non-scaling-stroke;pointer-events:all;cursor:pointer}.room-selection-areas polygon:hover{fill:#40765644;stroke:#000066;stroke-width:2}.room-hotspot.has-layout{border-color:#397350;background:#edf7e9;color:#28573c}.room-hotspot.has-layout:hover,.room-hotspot.has-layout:focus-visible{background:#000066;color:#fff}.open-room-layout{display:block;margin:0 0 12px;padding:10px 12px;background:var(--green);color:white;border-radius:6px;font-size:11px;text-align:left;width:100%}

.room-scope{display:flex;align-items:center;gap:8px;font-size:12px;margin:8px 0}.room-scope select{flex:1;min-width:0;padding:7px;border:1px solid var(--line,#ccd2c7);border-radius:6px;background:white;color:inherit}
.range-rooms{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.range-rooms button{padding:8px 12px;border:1px solid #ccd4cb;border-radius:8px;background:white;cursor:pointer}.range-rooms button:focus-visible{outline:3px solid #294a35}
/* Quieter surfaces and motion. Details stay available on demand. */
.intro .eyebrow,.intro p,.sidebar-footer,.map-heading,.map-help,.map-legend,.journey,.local-badge{display:none}.workspace{height:calc(100dvh - 70px)}.topbar{height:70px}.intro{padding:22px 25px 16px}.intro h1{font-size:28px;margin:0}.topbar nav .active-nav{display:none}.place-row small{display:none}.save-button{opacity:0;transition:opacity .18s}.place-row:hover .save-button,.place-row:focus-within .save-button,.save-button[aria-pressed=true]{opacity:1}.map-actions{top:18px}.detail{animation:surface-in .35s ease both}.detail:has(.block-choices){padding:24px;max-height:65%;overflow:auto}.detail:has(.block-choices) h2{font:25px Georgia;margin:8px 0 18px}.block-choices{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.block-choices button{padding:13px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;display:flex;gap:10px;justify-content:space-between}.block-choices button:hover{background:#f1e7dc}.block-choices span{color:#a29785}.block-pin span{display:grid;place-items:center;background:#ffffff;border:1px solid #987760;border-radius:8px;height:32px;font-weight:700;font-size:13px;box-shadow:0 4px 12px #17173325;transition:transform .2s,background .2s}.block-pin:hover span,.block-pin:focus span{transform:translateY(-5px) scale(1.1);background:#990000;color:white}.house-pin{transition:filter .2s}.house-pin:hover{filter:drop-shadow(0 4px 6px #17173355)}
.plan-dialog[open]{animation:surface-in .4s cubic-bezier(.16,1,.3,1)}.plan-header .eyebrow{display:none}.plan-header h2{margin:0;font-size:26px}.plan-header{padding:18px 24px}.plan-toolbar{gap:12px}.plan-body{position:relative;grid-template-columns:minmax(0,1fr)}.room-panel{display:none}.plan-dialog.rooms-open .room-panel,.plan-dialog.has-selection .room-panel{display:flex;position:absolute;right:16px;top:16px;bottom:16px;width:310px;border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 50px #273b3420;z-index:6;overflow:hidden;animation:surface-in .25s ease}.plan-dialog.has-selection:not(.rooms-open) .room-panel{top:auto;bottom:20px;height:auto;max-height:60%;background:transparent;border:0}.plan-dialog:not(.rooms-open) .room-panel-heading,.plan-dialog:not(.rooms-open) #room-records{display:none}.room-panel #selected-room{max-height:none;border:0;border-radius:12px;background:#ffffff;box-shadow:0 4px 25px #273b3418}.rooms-open #selected-room{display:none}.room-extra{margin-top:14px;font-size:11px}.room-extra summary{cursor:pointer;color:#768275}.room-panel-heading #room-instructions{display:none}.plan-caption{font-size:9px;color:#849086}.plan-caption #plan-caption{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-source-notes{padding:9px 24px}.plan-notice{font-size:10px;padding:8px 15px}.plan-canvas img{transition:width .4s cubic-bezier(.16,1,.3,1)}.room-selection-areas polygon{fill-opacity:0;stroke-opacity:0;transition:fill-opacity .2s}.room-selection-areas polygon:hover{fill-opacity:.15;stroke-opacity:.5}.room-hotspot{font-size:0;min-width:9px;min-height:9px;width:9px;height:9px;padding:0;border-radius:50%;background:#990000cc;border:2px solid #fff8;box-shadow:none;transition:background .15s,box-shadow .15s}.room-hotspot:hover,.room-hotspot:focus-visible,.show-room-labels .room-hotspot{font-size:10px;width:auto;height:auto;min-width:25px;min-height:23px;padding:3px 5px;border-radius:5px;background:#fffdf2;color:#733829;border:1px solid #b58d72;z-index:3;box-shadow:0 3px 12px #0002}#toggle-plan-style,#toggle-rooms,#back-building,#toggle-room-labels{border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:11px}#toggle-rooms[aria-expanded=true]{background:var(--green);color:white}
.building-dialog{padding:0;border:1px solid #e0e3d8;border-radius:20px;width:min(940px,94vw);height:min(700px,92dvh);max-width:none;background:#ffffff;color:var(--ink);box-shadow:0 30px 100px #102b3540;overflow:auto}.building-dialog::backdrop{background:#00006645;backdrop-filter:blur(8px)}.building-dialog[open]{animation:surface-in .5s cubic-bezier(.16,1,.3,1)}.building-dialog header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line);font-size:12px}.building-close{font-size:26px}.building-back{padding:8px 12px;border:1px solid var(--line);border-radius:8px}.building-content{display:grid;grid-template-columns:1fr 300px;padding:32px 36px;gap:20px}.building-intro{grid-column:1/-1}.building-intro h2{font:38px Georgia;margin:8px 0}.building-intro p{color:var(--muted);font-size:14px}.building-scene{height:360px;position:relative;perspective:1100px;display:grid;place-items:center;background:radial-gradient(ellipse at center,#e3e8dc 0,transparent 66%)}.floor-stack{position:relative;width:230px;height:150px;transform-style:preserve-3d;transform:translateY(65px) rotateX(58deg) rotateZ(-35deg);animation:building-arrive .9s cubic-bezier(.16,1,.3,1) both}.floor-slab{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(calc(var(--level)*65px));transition:transform .4s,opacity .3s;outline-offset:8px}.floor-slab:hover,.floor-slab:focus-visible,.floor-slab.active{transform:translateZ(calc(var(--level)*65px + 20px)) translateX(-12px)}.slab-top{position:absolute;inset:0;background:#e4ddd0;border:2px solid #9b8977;box-shadow:0 5px 25px #2222}.slab-top i{position:absolute;inset:15px;border:1px solid #c2b5a5;background:repeating-linear-gradient(90deg,transparent 0 42px,#baad9a 43px 44px)}.slab-front{position:absolute;left:0;top:100%;width:100%;height:32px;transform-origin:top;transform:rotateX(-90deg);background:#b37f67;display:flex;align-items:center;justify-content:space-evenly;border:1px solid #976c57}.slab-front i{width:18px;height:17px;background:#d9e6df;border:3px solid #ede7d9}.slab-front b{color:#fff;font:16px Georgia}.slab-side{position:absolute;top:0;left:100%;width:32px;height:100%;transform-origin:left;transform:rotateY(90deg);background:#8f6756;border:1px solid #725545}.floor-tip{position:absolute;left:-90px;top:55px;background:#ffffff;padding:10px 14px;border:1px solid #d5d9ce;border-radius:8px;white-space:nowrap;font-size:12px;transform:rotateZ(35deg) rotateX(-58deg);box-shadow:0 4px 15px #2342}.floor-slab:hover .slab-top,.floor-slab.active .slab-top{background:#f3eadb;border-color:#990000}.floor-slab:hover .floor-tip,.floor-slab.active .floor-tip{background:#000066;color:white}.model-note{position:absolute;bottom:0;font-size:9px;color:#8a9184;text-align:center}.building-choice{align-self:center}.building-choice h3{font:24px Georgia;margin:0 0 12px}.building-choice p{font-size:12px;color:var(--muted);line-height:1.7}.apartment-plans{display:grid;gap:10px}.apartment-plans button{display:flex;justify-content:space-between;text-align:left;gap:12px;padding:18px;background:white;border:1px solid var(--line);border-radius:12px;font-size:13px;animation:surface-in .3s ease both}.apartment-plans button:hover{border-color:#a16a51;background:#fbf2e8}.unit-form label{display:block;font-size:12px;margin-bottom:9px}.unit-form>div{display:flex;border:1px solid #ccd4c6;border-radius:10px;background:white;overflow:hidden}.unit-form input{padding:14px;font-size:17px}.unit-form button{background:var(--green);color:white;white-space:nowrap;padding:0 14px;font-size:12px}.generic-layout{font-size:12px;text-decoration:underline;padding:10px 0}.building-choice .unit-help{font-size:10px}
@keyframes surface-in{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes building-arrive{from{opacity:0;transform:translateY(100px) rotateX(40deg) rotateZ(-55deg) scale(.75)}to{opacity:1;transform:translateY(65px) rotateX(58deg) rotateZ(-35deg) scale(1)}}
@media(max-width:600px){.workspace{height:calc(100dvh - 60px)}.topbar{height:60px}.intro{padding:15px 20px}.intro h1{font-size:24px}.plan-body{display:block;overflow:auto}.plan-main{height:100%;min-height:280px}.plan-header{padding:12px 14px}.plan-header>div{width:auto;order:0;flex:1}.plan-header h2{font-size:22px}.plan-header .back-campus{font-size:0;padding:8px}.back-campus::first-letter{font-size:18px}.plan-header .dorm-select-label{display:none}.plan-toolbar{gap:7px}.plan-toolbar label:first-child{flex-basis:100%}.plan-toolbar #plan-original{display:none}.plan-dialog.rooms-open .room-panel{position:absolute;inset:10px;width:auto;max-height:none}.plan-dialog.has-selection:not(.rooms-open) .room-panel{position:relative;width:100%;right:auto;bottom:auto;max-height:none}.plan-dialog.has-selection .plan-main{height:75dvh}.plan-caption{padding:7px 10px}.room-hotspot{min-width:12px;min-height:12px}.building-dialog{width:100vw;height:100dvh;max-height:none;margin:0;border:0;border-radius:0}.building-content{display:flex;flex-direction:column;padding:22px 24px}.building-intro h2{font-size:30px}.building-scene{height:330px;flex:none}.building-choice{align-self:stretch}.floor-stack{width:190px;height:125px}.floor-tip{left:-65px;padding:8px;font-size:11px}.building-dialog header{padding:13px 18px}.detail:has(.block-choices){max-height:40dvh;padding:18px}.save-button{opacity:1}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep the stack in one 3D context: opacity/filter animations flatten its layers. */
.floor-stack{animation-name:stack-arrive;animation-fill-mode:backwards}.floor-slab:hover{filter:none}.floor-slab{appearance:none;background:none;border:0;padding:0;overflow:visible}
@keyframes stack-arrive{from{transform:translateY(100px) rotateX(40deg) rotateZ(-55deg) scale(.75)}to{transform:translateY(65px) rotateX(58deg) rotateZ(-35deg) scale(1)}}
.floor-slab{pointer-events:none}.floor-tip{display:none}.floor-slab.preview{transform:translateZ(calc(var(--level)*65px + 20px)) translateX(-12px)}.floor-rail{position:absolute;left:0;top:90px;display:flex;flex-direction:column;gap:17px;z-index:4}.floor-rail button{padding:12px 15px;background:#ffffff;border:1px solid #d0d6c9;border-radius:9px;font-size:12px;box-shadow:0 5px 14px #17173310;transition:transform .2s,background .2s}.floor-rail button:hover,.floor-rail button.active{background:var(--green);color:white;transform:translateX(5px)}.floor-rail span{margin-left:10px}.model-note{bottom:-15px}.building-scene{margin-bottom:20px}
@media(max-width:600px){.plan-toolbar #plan-original{display:inline;font-size:0}.plan-toolbar #plan-original::after{content:'Source ↗';font-size:10px}}

.clean-plan .plan-image-wrap img{background:#ffffff;box-shadow:none}
.clean-plan .plan-canvas{background:#edf0f5}
/* The SVG already carries room numbers; reveal controls on hover or focus. */
.clean-plan:not(.show-room-labels) .room-hotspot{opacity:0;min-width:30px;min-height:30px}
.clean-plan:not(.show-room-labels) .room-hotspot:hover,.clean-plan:not(.show-room-labels) .room-hotspot:focus-visible{opacity:1}
/* Room details occupy their own space instead of covering a wide/shared layout. */
@media(min-width:601px){
 .plan-dialog.has-selection:not(.rooms-open) .plan-body{display:grid;grid-template-columns:minmax(0,1fr) 270px}
 .plan-dialog.has-selection:not(.rooms-open) .room-panel{position:relative;inset:auto;width:auto;height:auto;max-height:none;justify-content:flex-end;padding:0 16px 16px 0;box-shadow:none;background:#edf0f5}
 .plan-dialog.clean-plan.has-selection:not(.rooms-open) .room-panel{background:#edf0f5}
}

.room-neighbors{display:flex;justify-content:space-between;gap:12px;margin-top:16px;padding-top:10px;border-top:1px solid var(--line)}
.room-neighbors button{font-size:11px;color:var(--green);padding:6px 2px}
.room-neighbors button:disabled{opacity:.3;cursor:default}

@media(max-width:600px){.plan-dialog.has-selection .plan-main{height:62dvh}}

.plan-canvas{cursor:grab}.plan-canvas.is-panning{cursor:grabbing;user-select:none}.plan-canvas.gesture-active img{transition:none!important}.plan-canvas img{-webkit-user-drag:none;user-select:none}

/* Carry the architectural viewer's quiet surfaces and green selection language
   through the map, floor plans, and room details. */
:root{--selection:#990000;--selection-soft:#f5e5e5;--viewer-paper:#faf9f7}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--selection);outline-offset:3px}
.search-wrap:focus-within{outline:2px solid var(--selection)}
.plan-dialog{background:var(--viewer-paper);border-radius:20px}
.plan-header,.plan-toolbar,.plan-caption,.plan-source-notes{background:var(--viewer-paper)}
.plan-toolbar{flex-wrap:wrap;gap:8px 10px}
.plan-toolbar>label:first-child{min-width:min(200px,100%)}
.plan-dialog select{min-height:40px}
.plan-zoom button{min-height:40px;min-width:40px}
.back-campus,#return-floor,#toggle-plan-style,#toggle-rooms,#back-building,#toggle-room-labels{min-height:40px;border-radius:9px;background:#ffffff;color:var(--ink)}
#toggle-rooms[aria-expanded=true]{background:var(--green);color:white}
.plan-toolbar button:hover:not(:disabled),.back-campus:hover,.block-choices button:hover,.apartment-plans button:hover{background:var(--selection-soft);border-color:var(--selection);color:var(--ink)}
.plan-close,.building-close,.close-room,.detail .close{display:grid;place-items:center;min-width:44px;min-height:44px;line-height:1}
.explore-plans{background:var(--green);border-radius:9px;min-height:44px}
.room-hotspot:hover,.room-hotspot:focus-visible,.room-hotspot[aria-pressed=true]{border-color:var(--selection);background:var(--selection-soft);color:var(--green)}
.room-hotspot[aria-pressed=true]{box-shadow:0 0 0 4px #99000033}
.plan-caption #plan-caption{min-width:0}
.room-neighbors button,.open-room-layout{min-height:40px}
@media(max-width:900px){
 .plan-header{flex-wrap:wrap;gap:10px 16px}
 .plan-header h2{overflow-wrap:anywhere}
 .plan-toolbar>label:first-child{max-width:none}
}
@media(max-width:600px){
 .plan-dialog{border-radius:0}
 .plan-header{padding:10px 14px}
 .plan-toolbar{padding:8px 14px}
 .plan-toolbar button,.plan-dialog select,.back-campus,.room-neighbors button{min-height:44px}
 .plan-zoom button{min-width:44px}
 .plan-zoom{margin-left:auto}
 .plan-caption a{max-width:38%;overflow:hidden;text-overflow:ellipsis}
 .detail:has(.block-choices){padding:16px}
 .block-choices{grid-template-columns:repeat(3,minmax(0,1fr))}
 .block-choices button{min-height:44px;min-width:0}
}
@media(pointer:coarse){
 .save-button{opacity:1}
 .room-hotspot,.clean-plan:not(.show-room-labels) .room-hotspot{min-width:32px;min-height:32px}
}
/* Keep residence pins from becoming a solid cluster at the wider overview. */
.map-overview .house-pin:not(.is-selected)>span{scale:.65;transition:scale .15s ease}
@media(prefers-reduced-motion:reduce){.map-overview .house-pin>span{transition:none}}
