:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#172a3d;background:#e7edf0;font-size:16px;--paper:#fff;--ink:#172a3d;--muted:#536578;--line:#dde5eb;--blue:#174b78}
/* Contain CSS2DRenderer's per-label z-index below every map control. */
#campus-label-layer{z-index:0;isolation:isolate;overflow:hidden}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:disabled,select:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d39423;outline-offset:3px}[hidden]{display:none!important}
.app-shell{height:100dvh;overflow:hidden}.scene-region{position:absolute;inset:0;background:radial-gradient(ellipse at 65% 40%,#e5eee9,#b9cdca)}#campus-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#campus-label-layer{position:absolute;inset:0;pointer-events:none}.brand{position:absolute;inset:0 0 auto;z-index:3;height:90px;display:flex;align-items:center;gap:14px;padding:18px 28px;background:var(--paper);border-bottom:1px solid var(--line)}.brand-mark{background:#174b78;color:white;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;font-family:Georgia,serif;font-size:27px}.brand-mark span{color:#edc774}.eyebrow,.section-label{font-size:.75rem;font-weight:750;letter-spacing:.12em;color:var(--muted);margin:0 0 7px}.brand .eyebrow{font-size:.7rem;margin-bottom:3px}.brand h1{font-size:1.3rem;letter-spacing:-.03em;margin:0;display:flex;align-items:center;gap:15px}.campus-badge{font-size:.65rem;letter-spacing:.08em;color:#174b78;background:#edf3f8;padding:6px 8px;border-radius:5px;font-weight:650}#toggle-guide{margin-left:auto;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:8px;padding:9px 13px;font-size:.85rem}.map-heading{position:absolute;top:112px;left:414px;right:80px;display:flex;align-items:center;gap:8px;font-size:.8rem;color:#233d42;background:#ffffffdf;padding:9px 13px;width:fit-content;max-width:calc(100% - 490px);border-radius:20px;z-index:1}.live-dot{width:6px;height:6px;background:#17785b;border-radius:50%;flex:none}
.info-panel{position:absolute;z-index:2;top:110px;bottom:70px;left:24px;width:360px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:24px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 40px #1e37421c;display:flex;flex-direction:column;gap:20px}.panel-header h2{font-size:1.65rem;letter-spacing:-.04em;margin:0 0 8px}.panel-header>p:last-child{font-size:.9rem;line-height:1.55;margin:0;color:var(--muted)}.guide-tabs{display:grid;grid-template-columns:1fr 1fr;padding:4px;background:#edf2f6;border-radius:9px;gap:4px}.guide-tabs button{border:0;background:transparent;padding:10px 5px;font-size:.875rem;color:var(--muted);border-radius:6px}.guide-tabs button[aria-pressed=true]{background:var(--paper);color:var(--blue);box-shadow:0 1px 5px #18304714;font-weight:700}.landmark-directory{display:grid;gap:12px}.landmark-directory .section-label{margin:0}.landmark-search,select{width:100%;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:8px;min-height:43px;padding:10px;font-size:.875rem}.landmark-results{display:grid;max-height:310px;overflow-y:auto;scrollbar-width:thin}.landmark-result{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;text-align:left;padding:13px 4px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink)}.landmark-result:hover{background:#f0f5f9}.landmark-result strong{font-size:.875rem;font-weight:550;line-height:1.35}.landmark-result span{font-size:.75rem;color:var(--blue)}.landmark-empty{font-size:.875rem;color:var(--muted)}
.scene-actions{position:absolute;z-index:2;right:24px;bottom:90px;display:grid;gap:6px}.scene-actions button{background:var(--paper);color:var(--blue);border:1px solid var(--line);border-radius:10px;width:44px;height:44px;font-size:1.4rem;box-shadow:0 2px 8px #172a3d14}.scene-actions button:last-child{font-size:.9rem}.scene-actions button[aria-pressed=false]{opacity:.6}.map-bottom{position:absolute;bottom:0;left:0;right:0;z-index:1;min-height:50px;background:#fffffff0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 26px;color:#536578}.map-bottom p{margin:0;font-size:.75rem;line-height:1.5}.map-bottom a{color:inherit}.landmark-label{padding:4px 8px;border-radius:5px;border:1px solid #b18c39;color:#4b3712;background:#fff8e5e8;font-size:12px;line-height:1.3;box-shadow:0 2px 5px #14282118;max-width:165px;text-align:center}.user-placemark-label{background:#f4eeffe8;color:#47276a;border-color:#a387c5}.labels-hidden #campus-label-layer{display:none}
.selected-place{position:relative;padding:18px;background:#f3f7fa;border:1px solid var(--line);border-radius:10px}.selected-place h3{margin:0 18px 10px 0;font-size:1.1rem}.selected-place>p:not(.section-label){font-size:.875rem;color:var(--muted);line-height:1.5}.close-card{position:absolute;right:8px;top:8px;background:transparent;color:var(--muted);border:0;font-size:1.3rem;width:30px;height:30px}.place-meta{margin:14px 0;display:grid;gap:9px}.place-meta div{display:grid;grid-template-columns:75px 1fr;gap:8px;font-size:.75rem;line-height:1.45}.place-meta dt{color:var(--muted)}.place-meta dd{margin:0;overflow-wrap:anywhere}.card-actions{display:flex;gap:8px}.card-actions button{flex:1;font-size:.8rem;padding:9px 7px;border-radius:7px;border:1px solid var(--blue);background:var(--paper);color:var(--blue)}.card-actions button:last-child{background:var(--blue);color:white}
#route-content>label{display:block;font-size:.8rem;font-weight:650;margin:15px 0 7px}.stop-input{display:flex;gap:7px}.stop-input select{min-width:0}.stop-input button{width:44px;flex:none;border:1px solid var(--line);color:var(--blue);background:#edf3f8;border-radius:8px;font-size:1.3rem}.route-stops{padding-left:24px;display:grid;gap:8px;font-size:.875rem}.route-stops li{padding-left:3px}.route-stops button{float:right;border:0;background:transparent;color:var(--muted);font-size:1rem}.route-actions{display:flex;gap:9px;margin-top:18px}.primary-button{background:var(--blue);color:white;border:0;border-radius:8px;padding:12px 16px;font-weight:650;flex:1;font-size:.875rem}.text-button{background:transparent;border:0;color:var(--muted);padding:10px;font-size:.875rem}#route-status{font-size:.875rem;line-height:1.5;color:var(--blue)}#route-status[data-error=true]{color:#a42d25}.route-notice{font-size:.75rem;line-height:1.5;color:var(--muted);padding-top:12px;border-top:1px solid var(--line)}.route-legs{font-size:.8rem;line-height:1.5;padding-left:22px}.route-legs li{margin-bottom:9px}
.map-settings{border-top:1px solid var(--line);padding-top:15px}.map-settings summary{font-size:.85rem;font-weight:600;cursor:pointer}.viewpoints,.accessibility{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.viewpoint,.accessibility button{font-size:.8rem;padding:9px 7px;background:var(--paper);border:1px solid var(--line);border-radius:6px;color:var(--ink)}.is-active,.accessibility button[aria-pressed=true]{background:#e9f2f9;color:var(--blue);border-color:var(--blue)}.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:.75rem;color:var(--muted);margin-top:auto}.legend span{display:flex;align-items:center;gap:5px}.swatch{height:7px;width:7px;display:inline-block;border-radius:50%}.landmark{background:#d39c32}.user-landmark{background:#9165d8}.route{background:#1684da}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.load-error{position:absolute;top:40%;left:45%;max-width:360px;padding:24px;border-radius:12px;background:var(--paper);z-index:2}.load-error h2{font-size:1.2rem}.load-error p{line-height:1.5}.load-error button{background:var(--blue);color:white;border:0;border-radius:6px;padding:12px}
.high-contrast{--paper:#080e17;--ink:#fff;--muted:#dce9f5;--line:#a6bcd0;--blue:#ffe183;color:var(--ink)}.high-contrast .guide-tabs,.high-contrast .selected-place,.high-contrast .landmark-result:hover{background:#152334}.high-contrast .primary-button,.high-contrast .card-actions button:last-child{color:#080e17}.high-contrast .is-active,.high-contrast .accessibility button[aria-pressed=true]{background:#26374a}.high-contrast .stop-input button{background:#152334}html.large-text{font-size:19px}.guide-hidden .info-panel{display:none}.guide-hidden .map-heading{left:24px;max-width:calc(100% - 100px)}
@media(max-width:800px){.brand{height:76px;padding:12px 16px;gap:10px}.brand-mark{width:40px;height:40px}.brand h1{font-size:1.05rem}.brand .eyebrow{font-size:.6rem}.campus-badge{display:none}#toggle-guide{font-size:.75rem;padding:9px}.info-panel{top:auto;left:12px;right:12px;bottom:55px;width:auto;max-height:46dvh;padding:18px;gap:15px}.panel-header h2{font-size:1.3rem}.panel-header .eyebrow,.panel-header>p:last-child{display:none}.map-heading{top:90px;left:14px;right:14px;max-width:calc(100% - 85px);font-size:.75rem}.scene-actions{right:12px;bottom:auto;top:144px}.scene-actions button{width:38px;height:38px}.map-bottom{padding:9px 14px;min-height:45px}.navigation-hint{display:none}.landmark-results{max-height:190px}.load-error{left:16px;right:16px;top:140px;max-width:none}.guide-hidden .map-heading{left:14px}.landmark-label{max-width:125px;font-size:12px}.legend{gap:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

#walking-speed{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}

/* Accessibility, privacy controls, and small-screen refinements. */
.skip-link{position:absolute;top:8px;left:8px;z-index:30;padding:10px 14px;color:#fff;background:#103958;border-radius:6px;transform:translateY(-150%)}
.skip-link:focus{transform:translateY(0)}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #005a9c;outline-offset:3px}
.prototype-notice{margin:14px 0 0;padding:11px 12px;color:#27455c!important;background:#f7f1df;border-left:4px solid #a76a13;border-radius:4px;font-size:.78rem!important;line-height:1.5!important}
.site-footer{display:grid;gap:8px;padding-top:15px;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}
.site-footer nav{display:flex;flex-wrap:wrap;gap:6px 12px}
.site-footer a,.privacy-settings-link{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.privacy-settings-link{width:max-content;padding:0;border:0;background:transparent;font-size:.75rem}
.map-bottom{flex-wrap:wrap}
.attribution{max-width:100%}
.privacy-banner{position:fixed;right:16px;bottom:16px;left:16px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:980px;margin:0 auto;padding:18px 20px;color:#172a3d;background:#fff;border:2px solid #174b78;border-radius:12px;box-shadow:0 15px 45px #172a3d35}
.privacy-banner h2{margin:0 0 5px;font-size:1rem}
.privacy-banner p{max-width:68ch;margin:0;color:#4c5f73;font-size:.88rem;line-height:1.5}
.privacy-banner-actions,.privacy-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;flex:none}
.privacy-primary,.privacy-secondary{min-height:42px;padding:9px 13px;border:1px solid #174b78;border-radius:7px;font-size:.86rem;font-weight:650}
.privacy-primary{color:#fff;background:#174b78}
.privacy-secondary{color:#103958;background:#fff}
.privacy-dialog-backdrop{position:fixed;inset:0;z-index:21;display:grid;place-items:center;padding:20px;background:#172a3d99}
.privacy-dialog{width:min(100%,500px);padding:24px;color:#172a3d;background:#fff;border-radius:12px;box-shadow:0 20px 55px #0005}
.privacy-dialog-header{display:flex;align-items:start;justify-content:space-between;gap:12px}
.privacy-dialog h2{margin:0;font-size:1.35rem}
.privacy-dialog p{color:#4c5f73;line-height:1.55}
.privacy-close{width:36px;height:36px;border:1px solid #cbd7e0;border-radius:6px;color:#172a3d;background:#fff;font-size:1.4rem}
.privacy-choice-row{display:flex;gap:10px;padding:13px 0;border-top:1px solid #cbd7e0}
.privacy-choice-row input{width:18px;height:18px;flex:none;margin-top:2px}
.privacy-choice-row span{display:grid;gap:3px}
.privacy-choice-row small{color:#4c5f73;line-height:1.45}
canvas:focus-visible{outline:3px solid #005a9c;outline-offset:-6px}
.stop-input button{width:auto;min-width:44px;padding:9px 12px;font-size:.8rem}
@media(max-width:520px){
  .brand{padding:10px 12px;gap:8px}
  .brand h1{font-size:.98rem}
  #toggle-guide{padding:8px 9px;font-size:.72rem}
  .map-bottom{display:block;padding:8px 12px}
  .map-bottom p{font-size:.68rem}
  .attribution{margin-top:2px!important}
  .info-panel{left:8px;right:8px;bottom:54px;padding:15px}
  .site-footer nav{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .privacy-banner{display:block;right:10px;bottom:10px;left:10px;padding:16px}
  .privacy-banner-actions{justify-content:stretch;margin-top:12px}
  .privacy-banner-actions button{flex:1 1 180px}
}

/* Compact map labels; the full title remains in the searchable guide. */
.landmark-label{font-size:10px;max-width:115px;padding:2px 5px;line-height:1.2;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.landmark-label.is-selected-label{max-width:220px;font-size:11px;border-width:2px;white-space:normal}
.selected-place h3{font-size:1rem}.brand h1{font-size:1.15rem}
@media(max-width:800px){.landmark-label{font-size:10px;max-width:95px;padding:2px 4px}.scene-actions button{width:44px;height:44px}.brand h1{font-size:.9rem}.info-panel{max-height:42dvh}.landmark-results{max-height:155px}.landmark-result{min-height:44px}.selected-place h3{font-size:.95rem}}

.location-tools{border-top:1px solid var(--line);margin-top:15px;padding-top:15px;display:grid;gap:8px}.location-tools .section-label{margin:0}.location-button{border:1px solid #0879d1;border-radius:8px;background:#e9f6ff;color:#075e9f;padding:10px 12px;font-weight:700;text-align:left}.location-button[aria-pressed=true]{background:#0879d1;color:#fff}.location-status,.location-distance{font-size:.78rem;line-height:1.45;margin:0;color:var(--muted)}.location-distance{color:var(--blue);font-weight:700}.sports-label{background:#e4f8ff;color:#005f8b;border-color:#00aef0}.route-arrow{filter:drop-shadow(0 0 5px #00aef0)}.sports{background:#00aef0}

/* Phone-first map chrome and full-screen place search. */
.mobile-map-bar,#close-mobile-guide{display:none}
.recenter-location{position:absolute;right:24px;bottom:305px;z-index:2;width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);box-shadow:0 3px 12px #172a3d26}
.recenter-location svg,.mobile-map-bar svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2}
.recenter-location.location-found{color:#1a73e8}
.mobile-location-status{position:absolute;right:82px;bottom:305px;z-index:2;max-width:min(300px,65vw);margin:0;padding:10px 14px;background:var(--paper);color:var(--ink);border-radius:12px;box-shadow:0 2px 12px #172a3d20;font-size:.8rem;line-height:1.4}
.mobile-location-settings{position:absolute;right:82px;bottom:258px;z-index:2;padding:8px 10px;border:1px solid #e1b85a;border-radius:8px;background:#fff8e6;color:#694600;font-size:.75rem;font-weight:700;text-decoration:none;box-shadow:0 2px 10px #172a3d20}.mobile-location-settings:hover,.mobile-location-settings:focus-visible{border-color:#b17800;background:#fff2cc}.mobile-location-settings[hidden]{display:none}
#mobile-search{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--paper);color:var(--ink);overscroll-behavior:contain}
#mobile-search[open]{display:flex;flex-direction:column}
#mobile-search::backdrop{background:var(--paper)}
.mobile-search-header{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:calc(8px + env(safe-area-inset-top)) 8px 8px;border-bottom:1px solid var(--line);background:var(--paper)}
.mobile-search-header button{flex:none;width:48px;height:48px;border:0;border-radius:50%;background:transparent;color:var(--ink);font-size:1.5rem}
.mobile-search-header input{min-width:0;flex:1;border:0;outline-offset:-2px;background:transparent;color:var(--ink);font-size:16px;height:48px;padding:8px 4px}
.mobile-search-header input::-webkit-search-cancel-button{display:none}
.mobile-search-body{overflow-y:auto;flex:1;padding:8px 16px calc(24px + env(safe-area-inset-bottom));overscroll-behavior:contain}
.mobile-use-location{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;margin:4px 0 10px;padding:10px 12px;border:1px solid #b9d9f2;border-radius:14px;background:#f1f8fe;color:var(--ink);text-align:left}.mobile-use-location:hover,.mobile-use-location:focus-visible{border-color:var(--blue);background:#e7f3fc}.mobile-use-location:disabled{opacity:.65}.mobile-use-location-icon{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:50%;background:#d9ecfb;color:var(--blue);font-size:1.35rem}.mobile-use-location>span:nth-child(2){display:grid;gap:3px;flex:1}.mobile-use-location strong{font-size:.9rem}.mobile-use-location small{color:var(--muted);font-size:.72rem}.mobile-use-location-arrow{color:var(--blue);font-size:1.5rem}.mobile-route-location-status{margin:0 4px 10px!important;color:var(--blue)!important;font-size:.78rem!important}
.search-section-heading{display:flex;align-items:center;justify-content:space-between;min-height:54px;gap:12px}
.search-section-heading h2{font-size:.9rem;margin:0;font-weight:650}
.search-section-heading button{border:0;background:transparent;color:#1967d2;min-height:44px;padding:8px;font-size:.85rem}
.mobile-search-body p{font-size:.875rem;line-height:1.5;color:var(--muted)}
.mobile-place-result{display:flex;align-items:center;gap:16px;width:100%;min-height:72px;padding:12px 0;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink)}
.mobile-place-result:hover{background:#edf3f8}
.search-result-icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:#f1f3f4;color:#5f6368;font-size:1.5rem}
.mobile-place-result strong{display:block;font-size:.95rem;font-weight:500;line-height:1.4}
.mobile-place-result small{display:block;margin-top:4px;font-size:.75rem;color:var(--muted)}
@media(max-width:800px){
  .brand{display:none}
  .mobile-map-bar{position:absolute;top:calc(12px + env(safe-area-inset-top));left:12px;right:12px;z-index:3;display:flex;align-items:center;height:56px;border-radius:30px;background:var(--paper);box-shadow:0 2px 9px #172a3d30;padding:4px 6px 4px 16px;color:var(--ink)}
  #open-search{display:flex;align-items:center;gap:13px;min-width:0;flex:1;height:48px;border:0;background:transparent;color:inherit;text-align:left;font-size:15px;padding:0}
  #open-search svg{flex:none;color:#5f6368}
  #open-search span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  #mobile-guide{height:44px;width:44px;flex:none;border:0;border-radius:50%;background:#edf3f8;color:var(--blue);font-size:20px}
  .map-heading,.guide-hidden .map-heading{top:calc(80px + env(safe-area-inset-top));left:16px;right:auto;max-width:calc(100% - 32px);font-size:11px;padding:6px 10px}
  .scene-actions{top:auto;bottom:calc(145px + env(safe-area-inset-bottom));right:16px;gap:0;border-radius:24px;overflow:hidden;box-shadow:0 2px 8px #172a3d20}
  .scene-actions button{border:0;border-radius:0;width:44px;height:44px;box-shadow:none}
  #toggle-labels,#reset-view{display:none}
  .recenter-location{right:14px;bottom:calc(100px + env(safe-area-inset-bottom));width:48px;height:48px}
  .mobile-location-status{right:74px;bottom:calc(100px + env(safe-area-inset-bottom));max-width:calc(100% - 90px)}
  .mobile-location-settings{right:74px;bottom:calc(100px + env(safe-area-inset-bottom) + 54px);font-size:.72rem}
  .info-panel{left:0;right:0;bottom:0;top:auto;width:100%;max-height:58dvh;border-radius:24px 24px 0 0;padding:24px 20px calc(20px + env(safe-area-inset-bottom));z-index:4;box-shadow:0 -4px 25px #172a3d25}
  #close-mobile-guide{display:block;position:absolute;right:12px;top:8px;width:44px;height:44px;border:0;border-radius:50%;background:var(--paper);color:var(--ink);font-size:24px;z-index:1}
  .panel-header{padding-right:28px}
  .info-panel:has(#selected-card:not([hidden])) #selected-card{order:-1;margin-top:24px}
  .close-card{width:44px;height:44px}
  .map-bottom{padding:6px 12px calc(6px + env(safe-area-inset-bottom));min-height:0;background:#ffffffdc}
  .map-bottom p{font-size:9px;line-height:1.4}
  .landmark-search{font-size:16px}
}

/* Navigation polish: the map stays primary while the guide behaves like a bottom sheet. */
.map-utility-controls{position:absolute;right:24px;top:112px;z-index:2;display:flex;gap:6px}
.map-utility-controls button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--blue);font-weight:750;box-shadow:0 2px 8px #172a3d14}
.map-utility-controls button[aria-pressed=false]{background:#edf3f8}
.map-scale{position:absolute;left:24px;bottom:90px;z-index:2;padding:4px 8px;border-bottom:2px solid var(--ink);color:var(--ink);background:#ffffffcf;font-size:.7rem;font-weight:700}
.search-this-area{position:absolute;top:164px;left:50%;z-index:3;transform:translateX(-50%);border:1px solid var(--line);border-radius:18px;padding:8px 14px;background:var(--paper);color:var(--blue);box-shadow:0 2px 10px #172a3d20;font-size:.78rem;font-weight:700}
.sheet-handle{display:none}
.place-title-row{display:flex;align-items:center;gap:10px}.selected-pin{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#e8f2ff;color:#1267c4;font-size:1.45rem}.place-title-row h3{margin:0}.place-category{margin:3px 0 0!important;color:var(--blue)!important;font-size:.78rem!important;font-weight:650}.place-distance{margin:8px 0;color:var(--blue);font-size:.78rem;font-weight:700}.report-place{border:0;background:transparent;color:var(--muted);font-size:.75rem;text-decoration:underline;text-underline-offset:2px;padding:8px 0}.card-actions{flex-wrap:wrap}.card-actions button{min-width:calc(50% - 4px)}
.route-field-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:7px}.route-field-row>div{min-width:0}.route-field-row label{display:block;font-size:.8rem;font-weight:650;margin:0 0 7px}.swap-route{width:38px;height:38px;margin-bottom:3px;border:1px solid var(--line);border-radius:50%;background:#edf3f8;color:var(--blue);font-size:1.1rem}.route-mode{display:flex;gap:6px;align-items:center;margin:14px 0 2px;color:var(--blue);font-size:.8rem;font-weight:700}.route-mode span:last-child{font-weight:500;color:var(--muted)}
.category-filters{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}.category-filters::-webkit-scrollbar{display:none}.category-filters button{flex:none;min-height:36px;padding:7px 12px;border:1px solid var(--line);border-radius:18px;background:var(--paper);color:var(--muted);font-size:.78rem}.category-filters button[aria-pressed=true]{border-color:var(--blue);background:#eaf3fb;color:var(--blue);font-weight:700}.search-result-icon.faculties{color:#174b78;background:#eaf3fb}.search-result-icon.hostels{color:#8a4d13;background:#fff1dc}.search-result-icon.food{color:#9b3d33;background:#ffeae7}.search-result-icon.sports{color:#007ca7;background:#e1f7ff}.search-result-icon.services{color:#5d4a92;background:#f0ebff}
.location-explainer{width:min(420px,calc(100% - 32px));border:0;border-radius:18px;padding:24px;background:var(--paper);color:var(--ink);box-shadow:0 20px 55px #0004}.location-explainer::backdrop{background:#172a3d88}.location-explainer h2{margin:0 0 8px;font-size:1.25rem}.location-explainer p{margin:0 0 20px;color:var(--muted);font-size:.9rem;line-height:1.55}.location-explainer>div{display:flex;justify-content:flex-end;gap:8px}.location-explainer button{min-height:42px;padding:9px 15px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--blue)}.location-explainer .primary-button{background:var(--blue);color:#fff;border:0}
@media(max-width:800px){
  .map-utility-controls{top:calc(82px + env(safe-area-inset-top));right:16px}.map-utility-controls button{width:40px;height:40px;font-size:.8rem}.map-scale{left:16px;bottom:calc(150px + env(safe-area-inset-bottom))}.search-this-area{top:calc(132px + env(safe-area-inset-top))}
  .info-panel{height:78dvh;max-height:78dvh;transition:height .25s ease,transform .25s ease}.sheet-collapsed .info-panel{height:84px;min-height:84px;max-height:84px;overflow:hidden;padding:10px 20px calc(10px + env(safe-area-inset-bottom));gap:0}.sheet-collapsed .info-panel>*:not(.sheet-handle){display:none}.sheet-handle{display:grid;width:100%;border:0;background:transparent;color:var(--ink);text-align:left;padding:0 28px 0 0;position:relative}.sheet-handle>span{position:absolute;top:0;left:50%;width:40px;height:4px;border-radius:4px;background:#b8c4cd;transform:translateX(-50%)}.sheet-handle strong{padding-top:12px;font-size:.95rem}.sheet-handle small{padding-top:3px;color:var(--muted);font-size:.72rem}.sheet-collapsed #close-mobile-guide{display:none}.sheet-collapsed .sheet-handle:after{content:'⌃';position:absolute;right:0;top:21px;color:var(--blue);font-size:1.2rem}.sheet-collapsed .panel-header{display:none!important}.sheet-collapsed .info-panel{border-radius:20px 20px 0 0}.guide-hidden .info-panel{display:flex}.guide-hidden .sheet-handle{display:grid}.guide-hidden .info-panel>*:not(.sheet-handle){display:none}
  .route-field-row{grid-template-columns:1fr;gap:5px}.swap-route{justify-self:center;transform:rotate(90deg);margin:0}.card-actions button{min-width:calc(50% - 4px)}
  .place-detail-mode .info-panel{height:100dvh;max-height:100dvh;border-radius:0;padding-top:52px}
  .place-detail-mode .info-panel>*:not(#selected-card){display:none}
  .place-detail-mode #selected-card{display:block!important;overflow-y:auto;flex:1;margin:0;background:var(--paper);border:0;padding:8px 0 32px}
  .place-detail-mode .close-card{width:48px;height:48px;right:0;top:0;font-size:1.6rem}
}
@media(prefers-reduced-motion:reduce){.info-panel{transition:none}}

/* A solid sky keeps the map clear after atmospheric fog is disabled. */
.scene-region{background:#b8d0c5}

/* Keep network state visible without taking over the map. */
.offline-banner{position:absolute;top:112px;left:50%;z-index:4;display:flex;align-items:center;gap:8px;max-width:min(460px,calc(100% - 32px));transform:translateX(-50%);padding:9px 14px;border:1px solid #e1b85a;border-radius:18px;background:#fff8e6;color:#694600;box-shadow:0 2px 10px #172a3d20;font-size:.78rem;line-height:1.35;text-align:center}.offline-banner[hidden]{display:none}.offline-dot{width:8px;height:8px;flex:none;border-radius:50%;background:#c27b00;box-shadow:0 0 0 3px #c27b0028}.place-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:14px 0}.place-photos[hidden]{display:none}.place-photo{margin:0;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:#edf3f5}.place-photo img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}.place-photo figcaption{padding:6px 8px;color:var(--muted);font-size:.68rem;line-height:1.25}.route-options{margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f7fafc}.route-options[hidden]{display:none}.route-options-heading h3{margin:0;color:var(--ink);font-size:.9rem}.route-options-heading p{margin:3px 0 9px;color:var(--muted);font-size:.72rem}.route-option-list,#route-option-list{display:grid;gap:7px}.route-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:56px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);text-align:left}.route-option:hover,.route-option:focus-visible{border-color:var(--blue)}.route-option[aria-pressed=true]{border-color:var(--blue);background:#eaf3fb;box-shadow:inset 3px 0 var(--blue)}.route-option-copy{display:grid;gap:3px}.route-option-copy strong{font-size:.8rem}.route-option-copy small{color:var(--muted);font-size:.7rem;line-height:1.3}.route-option-distance{color:var(--blue);font-size:.75rem;font-weight:750;white-space:nowrap}@media(max-width:800px){.offline-banner{top:calc(132px + env(safe-area-inset-top));max-width:calc(100% - 32px);font-size:.72rem}.place-photos{grid-template-columns:1fr}.place-photo img{aspect-ratio:16/9}.route-options{padding:10px}.route-option{min-height:62px}}
.location-settings-button{display:inline-flex;width:max-content;padding:8px 10px;border:1px solid #e1b85a;border-radius:8px;background:#fff8e6;color:#694600;font-size:.78rem;font-weight:700;text-decoration:none}.location-settings-button:hover,.location-settings-button:focus-visible{border-color:#b17800;background:#fff2cc}.location-settings-button[hidden]{display:none}
/* Temporary campus survey tools. */
.route-recording { margin-top: 16px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #f7fafc; }
.route-recording p { font-size: .85rem; line-height: 1.5; margin: 0 0 10px; }
.route-recording button { min-height: 44px; padding: 10px 14px; border-radius: 8px; border: 1px solid var(--line); background: white; color: var(--blue); }
.walk-endpoints { font-weight: 650; }
.walk-dialog { width: min(480px, calc(100vw - 32px)); max-height: 85dvh; overflow-y: auto; border: 0; border-radius: 18px; padding: 22px; color: #18364b; background: white; }
.walk-dialog::backdrop { background: #102a4366; }
.walk-dialog label { display: block; margin-top: 12px; }
.walk-dialog input, .walk-dialog textarea { box-sizing: border-box; width: 100%; font: inherit; padding: 10px; }
.walk-dialog button { min-height: 44px; padding: 8px 12px; cursor: pointer; }
.walk-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.walk-dialog li { margin-bottom: 12px; }


.walking-card { position: absolute; z-index: 2; top: 166px; left: 414px; width: min(380px, calc(100% - 500px)); padding: 18px; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 8px 24px #172a3d24; }
.walking-close { position: absolute; top: 6px; right: 6px; width: 44px; height: 44px; border: 0; border-radius: 50%; color: var(--muted); background: transparent; font-size: 1.4rem; }
.walking-mode { margin: 0 32px 12px 0; font-size: .72rem; color: var(--muted); }
.walking-heading { display: flex; align-items: center; gap: 12px; }
.walking-icon { display: grid; place-items: center; flex: none; width: 44px; height: 48px; color: var(--blue); background: #e2edfc; border-radius: 12px; font-size: 2rem; }
.walking-heading h2 { margin: 0; font-size: 1.05rem; line-height: 1.3; }
.walking-heading h2::first-letter { text-transform: uppercase; }
.walking-heading p { margin: 5px 0 0; font-size: .75rem; color: var(--muted); }
.walking-metrics { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px 12px; margin-top: 16px; font-size: .8rem; }
.walking-metrics strong { color: var(--blue); font-size: 1.2rem; }
.walking-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.walking-actions button { min-height: 44px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--blue); font-size: .75rem; }
.walking-actions button[aria-pressed=true] { background: var(--blue); color: var(--paper); }
.walking-note { margin: 10px 0 0; color: var(--muted); font-size: .65rem; line-height: 1.4; }
.guide-hidden .walking-card { left: 24px; }
.place-detail-mode .walking-card { display: none; }
@media (max-width:800px) {
 .walking-card, .guide-hidden .walking-card { top: calc(178px + env(safe-area-inset-top)); left: 12px; width: calc(100% - 24px); max-height: calc(100dvh - 290px); overflow-y: auto; }
}

/* Each new app launch begins with a short, skippable identity screen. */
.launch-screen { position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: max(24px, env(safe-area-inset-top)) 24px max(28px, env(safe-area-inset-bottom)); border: 0; color: #18364b; background: #f4f7f6; overflow: auto; }
.launch-screen[open] { display: flex; flex-direction: column; align-items: center; justify-content: center; }
.launch-screen::backdrop { background: #f4f7f6; }
.launch-content { margin: auto 0; text-align: center; padding: 48px 0; }
.launch-mark { display: grid; place-items: center; width: 100px; height: 100px; margin: 0 auto 30px; background: #1775df; border-radius: 26px; color: #fff; box-shadow: 0 12px 36px #1775df25; }
.launch-mark svg { width: 66px; height: 66px; }
.launch-university { margin: 0 0 10px; font-size: .9rem; font-weight: 600; letter-spacing: .035em; }
.launch-content h1 { margin: 0; font-size: clamp(1.9rem, 6vw, 2.6rem); font-weight: 700; letter-spacing: -.045em; line-height: 1.15; }
.launch-tagline { margin: 14px 0 0; font-size: .85rem; color: #5d6b73; }
.launch-footer { text-align: center; flex: none; }
.launch-footer p { margin: 0 0 12px; font-size: .8rem; color: #5d6b73; }
.launch-footer strong { color: #18364b; font-weight: 600; }
#launch-enter { min-height: 44px; padding: 10px 18px; background: transparent; color: #1669ba; border: 1px solid #1669ba35; border-radius: 24px; font-size: .8rem; }
html[data-platform=apple] .launch-screen { background: radial-gradient(ellipse at 50% 40%,#e8f0fa,transparent 65%),#f5f7f9; }
html[data-platform=apple] .launch-mark { border-radius: 30px; background: linear-gradient(145deg,#4ca9ff,#0862ce); box-shadow: inset 0 1px 0 #ffffff99,0 12px 40px #0862ce20; }
@media (max-height:450px) { .launch-content { padding: 10px 0; } .launch-mark { width: 60px; height: 60px; margin-bottom: 12px; border-radius: 18px; } .launch-mark svg { width: 44px; height: 44px; } .launch-tagline { display:none; } }

.saved-places{padding:12px 0;border-bottom:1px solid #bac9c2}.saved-places summary{cursor:pointer;font-weight:600}.saved-place-row{display:flex;gap:8px;margin:8px 0}.saved-place-row button:first-child{flex:1;text-align:left}.saved-place-row button{padding:10px;border:1px solid #b3c5bd;border-radius:8px;background:var(--panel,#fff);color:inherit}#saved-status{font-size:12px}#save-place[aria-pressed=true]{background:#d7efe4;color:#184c39}
