:root{color:#214c48;background:#f5f9f7}
.campus-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(520px,100%);margin:0 auto 14px;flex:none}.stat-card{background:#fff;border:1px solid #dce8e2;border-radius:12px;padding:10px 18px;box-shadow:0 3px 12px #234f3908}.stat-card>span{font-size:12px;color:#607d75}.stat-card strong{font-size:25px;font-weight:700;color:#17675c;font-variant-numeric:tabular-nums}.stat-card small{font-size:11px;color:#607d75}.stat-card:nth-child(2){border-top:3px solid #c6a045}.stat-card:first-child{border-top:3px solid #278a78}.is-embedded .campus-stats{margin-bottom:8px}.is-embedded .stat-card{padding:5px 14px}.is-embedded .stat-card strong{font-size:22px}@media(max-width:650px){.campus-stats{gap:8px}.stat-card{padding:6px 12px}.stat-card strong{font-size:22px}}
body{background:#f5f9f7}
.campus{max-width:1540px;padding:30px 24px 26px}
.heading{display:block;text-align:center;margin:0 0 12px}
.heading .eyebrow{display:inline-block;color:#aa8428;font-size:11px;font-weight:600;letter-spacing:.3px;padding-bottom:9px;position:relative}
.heading .eyebrow:after{content:"";display:block;width:48px;height:2px;background:#c6a045;position:absolute;bottom:0;left:50%;transform:translateX(-50%)}
.heading h1{font-size:clamp(28px,3.5vw,38px);font-weight:700;letter-spacing:0;margin:10px 0 14px;color:#154e4c}
.heading p{font-size:13px;color:#607d75;line-height:1.8}
.map-shell{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible}
#viewport{height:clamp(640px,74vh,880px);background:#f5f9f7}
#status{background:#f5f9f7;z-index:6;border-radius:16px}
#labels{z-index:3;overflow:visible}
.map-caption,.gesture{display:none}
.marker{width:27px;height:27px;min-width:27px;border:2px solid #fff;background:var(--location-color,#269b8b);color:#fff;border-radius:50% 50% 50% 0;transform:translate(-50%,-100%) rotate(-45deg);box-shadow:0 3px 9px #234a3933}
.marker .pin-number{display:block;transform:rotate(45deg);font-size:10px;line-height:1}
.marker:hover,.marker.is-selected{background:var(--location-color,#269b8b);filter:brightness(1.1);box-shadow:0 0 0 5px #ffffff99,0 4px 15px #234a3940}
.marker[hidden]{display:none}
.tools{position:absolute;left:50%;right:auto;bottom:0;transform:translateX(-50%);align-items:center;gap:3px;padding:5px 7px;background:#ffffffed;border:1px solid #e4ede8;border-radius:30px;box-shadow:0 4px 15px #234f3917;white-space:nowrap;z-index:5}
.tools button{background:transparent;border:0;border-radius:20px;padding:7px 9px;box-shadow:none;font-size:11px;color:#527b72}
.tools button:hover{background:#e9f2ed}
#reset{background:#e9f2ed}
.map-footer{text-align:center;margin-top:18px}
.map-footer .footnote{border:0;padding:0;margin:0 0 16px;font-size:11px;color:#80928b;line-height:1.7}
#open-full{display:inline-block;background:#17675c;color:#fff;text-decoration:none;border-radius:30px;padding:12px 23px;font-size:12px;font-weight:600;line-height:1.5;box-shadow:0 4px 10px #17675c12}
#open-full:hover{background:#105449}
#open-full:focus-visible{outline:3px solid #b69b52;outline-offset:4px}
.location-list{margin:26px 0 0;padding-top:18px;border-top:1px solid #e0e9e4}
.location-list>summary{cursor:pointer;text-align:center;font-size:12px;color:#617f74;list-style:none}
.location-list>summary:before{content:"＋ ";font-weight:700}
.location-list[open]>summary:before{content:"− "}
.location-list #legend{margin-top:20px}
.legend-number{background:#eff5f2;background:color-mix(in srgb,var(--location-color) 12%,white);color:var(--location-color)}
.legend-button{border-color:#e5ece7;background:#fff;font-size:12px;padding:12px}
.legend-button:hover,.legend-button.is-selected{border-color:var(--location-color)}
.building-details{max-width:1000px;margin:22px auto 0;border-left-color:#278a78}
.building-details .eyebrow{color:#278a78}
@media(max-width:1050px){
  #viewport{height:clamp(460px,66vh,720px)}
  .campus{padding:24px 18px}
  .location-list #legend{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:650px){
  .campus{padding:22px 10px}
  .heading h1{font-size:29px}
  .heading p{font-size:12px}
  #viewport{height:480px}
  .tools{gap:0;padding:5px;bottom:4px}
  .tools button{padding:7px;font-size:10px}
  .location-list #legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .marker{width:29px;height:29px;min-width:29px}
  .map-footer .footnote{font-size:10px}
}

.building-details{scroll-margin-top:96px;border-left-color:var(--selected-color,#278a78)}
.building-details .eyebrow{color:var(--selected-color,#278a78)}
.building-details{position:fixed;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 32px));max-width:560px;max-height:calc(100dvh - 48px);margin:0;padding:26px;overflow:auto;border:1px solid #dbe4df;border-top:5px solid var(--selected-color,#278a78);border-left-width:1px;border-radius:18px;box-shadow:0 20px 70px #173d3638;overscroll-behavior:contain}
.building-details[hidden]{display:none}
.building-details::backdrop{background:#173d3666;backdrop-filter:blur(2px)}
.building-details #close-details{min-height:40px;flex-shrink:0}
@media(max-width:500px){.building-details{padding:20px 18px;width:calc(100% - 24px);max-height:calc(100dvh - 32px)}}
.marker.is-selected{z-index:5;box-shadow:0 0 0 6px #ffffffbb,0 0 0 10px #239b8926,0 5px 16px #234a3940}

/* Building-anchored game-style callout. */
#viewport .building-details{position:absolute;inset:auto;transform:none;z-index:9;width:min(330px,calc(100% - 24px));max-width:330px;max-height:calc(100% - 70px);padding:18px 20px;border-top-width:3px;border-radius:14px;box-shadow:0 8px 25px #173d3626}
#viewport .details-heading h2{font-size:17px;line-height:1.5}#viewport #building-description{font-size:13px;margin-top:12px}#viewport #close-details{min-height:32px;padding:5px 8px;font-size:11px}
.building-pointer{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:8}.building-pointer path,.building-pointer circle{stroke:currentColor}
#building-rooms{margin-top:14px;padding-top:12px;border-top:1px solid #e0e9e4}#building-rooms[hidden]{display:none}#building-rooms label{display:block;font-size:12px;font-weight:600;margin-bottom:7px}#building-floor{width:100%;padding:8px;border:1px solid #cadbd3;border-radius:8px;background:#f5f9f7;color:#214c48;font:inherit;font-size:13px}#floor-rooms{padding-left:20px;margin:10px 0 0;font-size:13px;line-height:1.8;overflow-wrap:anywhere}#building-floor:focus-visible{outline:2px solid #278a78;outline-offset:2px}

/* Fit the embedded viewer to the shortcode frame without a second page scrollbar. */
html.is-embedded,html.is-embedded body{height:100%;overflow:hidden}
.is-embedded .campus{height:100dvh;display:flex;flex-direction:column;padding:16px 18px 12px;position:relative}
.is-embedded .heading{flex:none;margin-bottom:8px}
.is-embedded .heading h1{font-size:28px;margin:6px 0}
.is-embedded .heading .eyebrow{padding-bottom:5px}
.is-embedded .map-shell{flex:1;min-height:0;overflow:hidden}
.is-embedded #viewport{height:100%;min-height:0}
.is-embedded .map-footer{flex:none;margin-top:8px}
.is-embedded .map-footer .footnote{margin:0 0 6px}
.is-embedded #open-full{padding:7px 16px}
.is-embedded .location-list{flex:none;margin:8px 0 0;padding-top:7px}
.is-embedded .location-list[open]{position:absolute;bottom:10px;left:18px;right:18px;z-index:10;max-height:45%;overflow:auto;background:#fff;border:1px solid #dbe4df;border-radius:12px;padding:12px;box-shadow:0 8px 25px #173d3626}
@media(max-width:650px){.is-embedded .campus{padding:10px 8px}.is-embedded .heading h1{font-size:23px}.is-embedded .heading p{font-size:11px}}
/* Framed campus dashboard. */
body{background:linear-gradient(145deg,#edf4f2,#f5f7fa);padding:28px 20px}
.campus{max-width:1360px;padding:28px;background:#fff;border:1px solid #dfe8e5;border-radius:18px;box-shadow:0 16px 50px #183c3314,0 2px 6px #183c3308}
.heading{text-align:left;margin-bottom:22px}.heading .eyebrow{font-size:10px;letter-spacing:2px;color:#278675;padding:0}.heading .eyebrow:after{display:none}
.heading h1{font-size:clamp(25px,3vw,34px);margin:9px 0 6px;color:#153f3b;letter-spacing:-.5px}.title-accent{color:#6b827b;font-weight:400;margin-left:10px;font-size:.72em}.heading p{color:#7b8e88;font-size:12px}
.campus-stats{width:100%;max-width:none;margin:0 0 22px;gap:16px}.stat-card{position:relative;padding:18px 22px 18px 82px;border:1px solid #dfe9e5!important;border-radius:12px;box-shadow:0 5px 15px #173d3607;background:linear-gradient(120deg,#f5faf8,#fff)}.stat-card:nth-child(2){background:linear-gradient(120deg,#f5f7fc,#fff)}.stat-card>span:not(.stat-icon){font-size:12px;color:#6d827a}.stat-card strong{font-size:30px;line-height:1.5;letter-spacing:-.7px}.stat-card small{margin-left:5px}.stat-icon{position:absolute;left:20px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:44px;background:#dceee6;color:#26795f;border-radius:12px;font-size:25px}.stat-card:nth-child(2) .stat-icon{background:#e3eaf7;color:#5272a1}
.map-shell{overflow:hidden!important;border:1px solid #dfe7e3;border-radius:12px;background:#f5f9f7;box-shadow:0 8px 24px #1f453410}
.map-topbar{height:54px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e4ece7;background:#fff}.map-topbar>div{display:flex;align-items:center;gap:9px}.map-topbar strong{font-size:13px;font-weight:600}.map-badge{font-size:10px;background:#edf5f1;color:#38806c;padding:3px 7px;border-radius:5px}#expand-map{display:flex;align-items:center;gap:7px;border:1px solid #d9e6df;background:#f8fbf9;border-radius:7px;padding:7px 12px;color:#236451;font:inherit;font-size:12px;cursor:pointer}#expand-map:hover{background:#e8f3ed}#expand-map:focus-visible{outline:3px solid #69aa94;outline-offset:2px}#expand-map>span:first-child{font-size:20px;line-height:1}
#viewport{height:clamp(430px,57vh,640px)}.tools{bottom:14px}.map-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:17px}.map-footer .footnote{margin:0;text-align:left}#open-full{padding:9px 15px;border-radius:8px;white-space:nowrap;font-size:11px;box-shadow:none}
.is-embedded body{padding:10px;background:#f3f7f5}.is-embedded .campus{height:calc(100dvh - 20px);padding:20px}.is-embedded .heading{margin-bottom:14px}.is-embedded .heading h1{font-size:28px;margin:7px 0}.is-embedded .campus-stats{margin-bottom:16px}.is-embedded .stat-card{padding:12px 18px 12px 76px}.is-embedded .stat-card strong{font-size:27px}.is-embedded .map-shell{display:flex;flex-direction:column}.is-embedded #viewport{flex:1;height:auto;min-height:0}.map-topbar{flex:none}
.campus:fullscreen{width:100%;max-width:none;height:100dvh;margin:0;padding:18px 24px;border:0;border-radius:0;display:flex;flex-direction:column;overflow:hidden;background:#fff}.campus:fullscreen .heading{margin-bottom:10px}.campus:fullscreen .heading h1{font-size:25px;margin:5px 0}.campus:fullscreen .heading p{display:none}.campus:fullscreen .campus-stats{margin-bottom:12px}.campus:fullscreen .stat-card{padding:8px 20px 8px 80px}.campus:fullscreen .stat-card strong{font-size:24px}.campus:fullscreen .map-shell{flex:1;min-height:0;display:flex;flex-direction:column}.campus:fullscreen #viewport{flex:1;height:auto;min-height:0}.campus:fullscreen .map-footer{margin-top:10px}
@media(max-width:650px){body{padding:10px}.campus{padding:16px;border-radius:12px}.heading{margin-bottom:16px}.heading h1,.is-embedded .heading h1{font-size:24px}.title-accent{display:block;margin:4px 0 0;font-size:17px}.campus-stats{gap:8px;margin-bottom:16px}.stat-card,.is-embedded .stat-card{padding:12px}.stat-icon{display:none}.stat-card strong,.is-embedded .stat-card strong{font-size:24px}.map-topbar{padding:0 12px;height:48px}#viewport{height:440px}.map-footer{display:block;text-align:center}.map-footer .footnote{text-align:center;margin-bottom:10px}.is-embedded .campus{padding:12px}.is-embedded .heading p{font-size:11px}.is-embedded .map-footer .footnote{display:none}.campus:fullscreen{padding:12px}.campus:fullscreen .stat-card{padding:8px 12px}.campus:fullscreen .heading .eyebrow{display:none}}
/* College identity and population cards. */
:root,body,.is-embedded body{background:#fff}
.heading h1{font-size:clamp(23px,2.6vw,32px);line-height:1.5;margin:0;color:#253d38;letter-spacing:0}
.campus-stats .stat-card{min-height:102px;padding:19px 22px 19px 86px;box-shadow:0 8px 20px #35443d12,0 2px 4px #35443d08}
.campus-stats .stat-card:first-child{background:linear-gradient(120deg,#fce0ec,#fff0f6);border-color:#f2c9db!important;box-shadow:0 8px 22px #b9497c1c,0 2px 4px #b9497c0a}
.campus-stats .stat-card:nth-child(2){background:#fff;border-color:#e1e5e3!important}
.campus-stats .stat-card:first-child>span:not(.stat-icon){color:#92516e}.campus-stats .stat-card:first-child strong{color:#a12f65}.campus-stats .stat-card:first-child small{color:#a16a83}
.campus-stats .stat-card .stat-icon{background:#f9c8dd;color:#ac3569;width:46px;height:46px;box-shadow:inset 0 1px 0 #ffffffa8,0 3px 7px #b9497c10}
.campus-stats .stat-card:nth-child(2) .stat-icon{background:#eef3f1;color:#416c5c;box-shadow:inset 0 1px 0 #fff,0 3px 7px #35443d0d}
.stat-icon svg{width:27px;height:27px;display:block}
.is-embedded .campus-stats .stat-card{min-height:88px;padding:12px 18px 12px 80px}
.campus:fullscreen .campus-stats .stat-card{min-height:76px;padding:8px 20px 8px 80px}
@media(max-width:650px){.heading h1,.is-embedded .heading h1{font-size:22px}.campus-stats .stat-card,.is-embedded .campus-stats .stat-card,.campus:fullscreen .campus-stats .stat-card{padding:12px;min-height:125px}.campus-stats .stat-card .stat-icon{display:grid;position:static;transform:none;width:32px;height:32px;margin-bottom:8px;border-radius:9px}.stat-icon svg{width:21px;height:21px}.campus-stats .stat-card>span:not(.stat-icon){font-size:11px}.campus-stats .stat-card strong{font-size:22px}.campus-stats .stat-card small{font-size:10px}}
/* Vivid population cards, inspired by the supplied pink and blue reference. */
.campus-stats .stat-card:first-child{background:linear-gradient(110deg,#ef4444 0%,#ec3f98 100%);border-color:#ed4b80!important;box-shadow:0 8px 20px #e943852b,0 2px 5px #cf31591a}
.campus-stats .stat-card:nth-child(2){background:linear-gradient(110deg,#3b82f6 0%,#2563eb 100%);border-color:#3977ed!important;box-shadow:0 8px 20px #2563eb29,0 2px 5px #1c4ac71a}
.campus-stats .stat-card>span:not(.stat-icon),.campus-stats .stat-card:first-child>span:not(.stat-icon){color:#fff;opacity:.92}
.campus-stats .stat-card strong,.campus-stats .stat-card:first-child strong{color:#fff;text-shadow:0 1px 2px #00000012}
.campus-stats .stat-card small,.campus-stats .stat-card:first-child small{color:#fff;opacity:.88}
.campus-stats .stat-card .stat-icon,.campus-stats .stat-card:nth-child(2) .stat-icon{background:#ffffff24;color:#fff;border:1px solid #ffffff30;box-shadow:inset 0 1px 0 #ffffff24,0 3px 8px #0000000a}
/* Clear title hierarchy with the college pink as an accent. */
.heading{padding:3px 0 5px 20px;border-left:4px solid #e3438a}
.heading .campus-title{display:flex;flex-direction:column;align-items:flex-start;gap:9px;margin:0;line-height:1.45}
.title-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#a74070;letter-spacing:.3px}
.title-3d{display:inline-block;padding:2px 9px;border-radius:6px;background:linear-gradient(120deg,#ed4b8b,#ce3482);color:#fff;font-size:13px;font-weight:800;letter-spacing:1px;box-shadow:0 3px 8px #d5388326}
.title-college{font-size:clamp(24px,2.8vw,36px);font-weight:750;letter-spacing:-.4px;color:#253e3b;text-wrap:balance}
.title-province{color:#cb367b;white-space:nowrap}
.is-embedded .heading .campus-title{margin:0;gap:6px}
.campus:fullscreen .heading .campus-title{margin:0;gap:4px}.campus:fullscreen .title-college{font-size:25px}
@media(max-width:650px){.heading{padding-left:13px;border-left-width:3px}.heading .campus-title,.is-embedded .heading .campus-title{gap:8px}.title-label{font-size:12px}.title-3d{font-size:11px;padding:2px 7px}.title-college{font-size:23px;line-height:1.5;letter-spacing:0}.campus:fullscreen .title-college{font-size:21px}}
.stat-card strong{font-variant-numeric:tabular-nums;display:inline-block;min-width:1ch}
/* View controls sit outside the map, in their own capsule. */
.tools{position:static;left:auto;right:auto;bottom:auto;transform:none;display:flex;justify-content:center;align-self:center;width:max-content;max-width:100%;flex:none;margin:16px auto 0;padding:6px 10px;gap:4px;border:1px solid #e5ece7;border-radius:32px;background:#fcfefd;box-shadow:0 5px 15px #284d3e12}
.tools button{padding:10px 12px;font-size:12px;color:#4d7c70;border-radius:24px;line-height:1.5;min-height:38px}
.tools #reset{background:#e9f2ed}
#expand-map{justify-content:center;gap:8px;min-width:124px;min-height:38px;padding:8px 16px;border:1px solid #d2d7d9;border-radius:11px;background:#fff;color:#1b2428;font-size:13px;font-weight:500;box-shadow:0 3px 6px #172b3414}
#expand-map:hover{background:#f7f9fa;border-color:#b6c3c8;box-shadow:0 4px 9px #172b341c}
#expand-map:active{box-shadow:0 1px 3px #172b3414;transform:translateY(1px)}
.map-footer{margin-top:13px}.campus:fullscreen .tools{margin-top:12px}
@media(max-width:650px){.tools{gap:1px;padding:5px 7px;margin-top:12px}.tools button{padding:8px 9px;font-size:11px;min-height:35px}#expand-map{min-width:105px;padding:7px 10px;font-size:12px;min-height:36px}}
/* Minimal building information callout. */
#viewport .building-details{width:min(340px,calc(100% - 24px));max-width:340px;padding:22px;background:#fff;border:1px solid #e1e7e5;border-top-width:1px;border-radius:16px;box-shadow:0 16px 40px #163e351a,0 3px 8px #163e350d;scrollbar-width:thin;scrollbar-color:#d0dcd6 transparent}
#viewport .details-heading{gap:12px;align-items:flex-start}#viewport .details-heading>div{min-width:0;flex:1}
#viewport #building-number{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:6px;background:#f0f5f2;background:color-mix(in srgb,var(--selected-color) 9%,white);color:var(--selected-color);font-size:10px;font-weight:600;letter-spacing:.2px;line-height:1.5}
#viewport #building-number:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
#viewport .details-heading h2{margin:11px 0 0;font-size:18px;font-weight:650;line-height:1.6;letter-spacing:-.2px;color:#243e36}
#viewport #close-details{display:grid;place-items:center;flex:none;width:32px;height:32px;min-height:32px;padding:0;border:1px solid #e8edeb;background:#f8faf9;border-radius:9px;color:#7a8a83;transition:background .15s,color .15s}
#viewport #close-details:hover{color:#273f35;background:#edf3ef}#viewport #close-details:focus-visible{outline:2px solid #8fada0;outline-offset:3px}
#viewport #building-description{margin:16px 0 0;padding-top:15px;border-top:1px solid #edf1ee;color:#718078;font-size:13px;line-height:1.9}
#viewport #building-rooms{margin-top:17px;padding-top:16px;border-color:#edf1ee}
#viewport #building-rooms label{font-size:11px;font-weight:600;color:#657b70;margin-bottom:8px}
#viewport #building-floor{appearance:auto;padding:10px 12px;border:1px solid #e0e8e3;border-radius:9px;background:#f7faf8;color:#304d3e;font-size:12px;cursor:pointer}
#viewport #floor-rooms{padding:0;margin:10px 0 0;list-style:none;display:grid;gap:6px;font-size:12px;color:#526b5d}
#viewport #floor-rooms li{position:relative;padding:9px 11px 9px 24px;border:1px solid #edf1ee;border-radius:8px;background:#fafcfb;line-height:1.7}
#viewport #floor-rooms li:before{content:"";position:absolute;left:11px;top:16px;width:4px;height:4px;border-radius:50%;background:#9fb4a7}
.building-pointer{opacity:.7}
@media(max-width:500px){#viewport .building-details{padding:18px;width:min(320px,calc(100% - 24px))}#viewport .details-heading h2{font-size:16px}}
@media(prefers-reduced-motion:reduce){#viewport #close-details{transition:none}}
