/* ==========================================================================
   Project:     TWD Campus Map
   Date:        04/08/2026 - UX refresh
   Created by:  Third Wave Digital (www.thirdwavedigital.com)
   ========================================================================== */

:root { --black: #09111d;
	 --white: #ffffff;
	 --red: #b91127;
	 --red-dark: #8d071a;
	 --red-soft: rgba(185, 17, 39, 0.08);
	 --ink: #142033;
	 --ink-muted: #5f6b7b;
	 --line: rgba(20, 32, 51, 0.12);
	 --line-strong: rgba(20, 32, 51, 0.2);
	 --panel: rgba(255, 255, 255, 0.92);
	 --panel-soft: rgba(255, 255, 255, 0.72); 
	 --panel-shadow: 0 18px 45px rgba(16, 24, 40, 0.14); 
	 --stage-shadow: 0 30px 70px rgba(16, 24, 40, 0.16); 
	 --radius-lg: .75rem; 
	 --radius-md: .5rem; 
	 --radius-sm: .25rem; 
	}

/* --------------------------------------------------------------------------
   Base Layout
   -------------------------------------------------------------------------- */

html, body { height: 100%; }
body { min-height: 100svh; display: flex; flex-direction: column; overflow-x: hidden; color: var(--ink); background: var(--bs-gray-400) }
a { color: var(--red); }
a:hover, a:focus { color: var(--red-dark); }
.header-wrapper { background: linear-gradient(135deg, #04080f 0%, #101925 100%); color: var(--white); }

@keyframes layer-marker-pop {
	0% { opacity: 0; transform: translateY(12px) scale(0.72); }
	58% { opacity: 1; transform: translateY(-4px) scale(1.08); }
	100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* --------------------------------------------------------------------------
   Page Shell
   -------------------------------------------------------------------------- */

.map-wrapper { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.map-wrapper > .container-fluid { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.btn-red { border-color: var(--red); background: var(--red); color: var(--white); font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; }
.btn-red:hover, .btn-red:focus { border-color: var(--red-dark); background: var(--red-dark); color: var(--white); }
.map-shell { position: relative; display: flex; flex: 1 1 auto; flex-direction: column; gap: 1rem; min-height: 0; }
.map-sidebar, .map-stage { min-width: 0; }

/* --------------------------------------------------------------------------
   Sidebar Panels
   -------------------------------------------------------------------------- */

.map-sidebar-card { display: flex; flex-direction: column; gap: 1.25rem; padding: 1.25rem; overflow: hidden; border-radius: var(--radius-lg); background: var(--bs-gray-100); box-shadow: var(--panel-shadow); }
@supports (backdrop-filter: blur(18px)) {
	.info-window, .inthislocation-window .content { background: var(--panel-soft); backdrop-filter: blur(18px) saturate(140%); }
}
.sidebar-eyebrow, .window-kicker, .panel-label, .section-label { margin: 0; color: var(--red); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.map-sidebar-scroll { display: flex; flex: 1 1 auto; flex-direction: column; gap: 1rem; min-height: 0; }

/* --------------------------------------------------------------------------
   Sidebar Navigation
   -------------------------------------------------------------------------- */

.map-accordion { --bs-accordion-border-color: transparent; --bs-accordion-bg: transparent; --bs-accordion-btn-bg: var(--bs-white); --bs-accordion-active-bg: var(--bs-gray-200); --bs-accordion-btn-focus-box-shadow: none; --bs-accordion-border-radius: var(--radius-md); display: flex; flex-direction: column; gap: 0.5rem; }
.map-accordion .accordion-item { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-md); background: rgba(255, 255, 255, 0.78); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), inset 0 0 0 1px rgba(255, 255, 255, 0.24); }
.map-accordion .accordion-button { gap: 0.15rem; padding: 1rem 1.1rem; color: var(--ink); font-size: 0.95rem; font-weight: 700; }
.map-accordion .accordion-button:not(.collapsed) { color: var(--red-dark); box-shadow: inset 0 -1px 0 rgba(20, 32, 51, 0.08); }
.map-accordion .accordion-button::after { width: 0.9rem; height: 0.9rem; background-size: 0.9rem; }
.map-accordion .accordion-body { display: flex; flex-direction: column; gap: 1rem; padding: 1rem; }

/* --------------------------------------------------------------------------
   Sidebar Lists
   -------------------------------------------------------------------------- */

.sidebar-list, .sidebar-results, .search-results { display: flex; flex-direction: column; gap: 0.25rem; }
.sidebar-link, .topic-link, .topic-location-link, .search-link { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.5rem 0.7rem; border: 1px solid transparent; border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.72); color: var(--ink); font-size: 0.92rem; font-weight: 600; text-align: left; text-decoration: none; transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease, box-shadow 180ms ease; }
.sidebar-link:hover, .sidebar-link:focus, .topic-link:hover, .topic-link:focus, .topic-location-link:hover, .topic-location-link:focus, .search-link:hover, .search-link:focus { border-color: rgba(185, 17, 39, 0.18); background: rgba(255, 255, 255, 0.98); color: var(--red-dark); transform: translateY(-1px); box-shadow: 0 10px 20px rgba(20, 32, 51, 0.08); }
.sidebar-list .is-active > .sidebar-link, .topic-list .is-active > .topic-link, .topic-locations .is-active > .topic-location-link, .search-results .is-active > .search-link { border-color: rgba(185, 17, 39, 0.34); background: linear-gradient(135deg, rgba(185, 17, 39, 0.18), rgba(255, 255, 255, 0.98)); color: var(--red-dark); box-shadow: 0 0 12px rgba(185, 17, 39, 0.09); }
.sidebar-link .fas, .topic-link .fas, .topic-location-link .fas, .search-link .fas { color: rgba(185, 17, 39, 0.8); }
.map-accordion .accordion-button:focus-visible, .sidebar-link:focus-visible, .topic-link:focus-visible, .topic-location-link:focus-visible, .search-link:focus-visible, .gallery-launch:focus-visible, .window-dismiss:focus-visible, .btn-reset-map:focus-visible, .btn-directions:focus-visible, .btn-clear-route:focus-visible, .directions-btn:focus-visible, .search .form-control:focus-visible, .search .btn-search:focus-visible, .form-select:focus-visible, .form-check-input:focus-visible, .topic-flyout-close:focus-visible { outline: 3px solid rgba(185, 17, 39, 0.24); outline-offset: 2px; box-shadow: 0 0 0 4px rgba(185, 17, 39, 0.12); }

/* --------------------------------------------------------------------------
   Layers And Directions
   -------------------------------------------------------------------------- */

.topic-explorer { position: relative; }
.topic-list .is-active > .topic-link { border-color: rgba(185, 17, 39, 0.46); box-shadow: 0 14px 28px rgba(185, 17, 39, 0.12); }
.topic-list .is-active > .topic-link .fas { transform: translateX(2px); }
.topic-flyout { display: none; position: relative; }
.map-shell.has-open-topic-flyout .topic-flyout { display: block; }
.topic-results { display: flex; min-height: 16rem; flex-direction: column; gap: 1rem; padding: 1rem 1.05rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(245, 247, 250, 0.98)); box-shadow: 0 18px 34px rgba(20, 32, 51, 0.14); }
.topic-flyout-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.85rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--line); }
.topic-flyout-copy { min-width: 0; }
.topic-flyout-title { color: var(--ink); line-height: 1.2; }
.topic-flyout-meta { font-weight: 600; }
.topic-flyout-close { display: inline-flex; width: 2rem; height: 2rem; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0; border: none; border-radius: 999px; background: rgba(20, 32, 51, 0.08); color: var(--ink); transition: background-color 180ms ease, color 180ms ease, transform 180ms ease; }
.topic-flyout-close:hover, .topic-flyout-close:focus { background: rgba(185, 17, 39, 0.12); color: var(--red-dark); transform: scale(1.02); }
.topic-flyout .topic-locations { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding-right: 0.2rem; }
.topic-flyout .topic-location-link { border-color: rgba(20, 32, 51, 0.08); box-shadow: 0 4px 12px rgba(20, 32, 51, 0.04); }
.layer-list { gap: 0.75rem; }
.layer-item { display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.85rem 0.9rem; border: 1px solid transparent; border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.7); transition: border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease; }
.layer-item:hover { border-color: rgba(20, 32, 51, 0.12); background: rgba(255, 255, 255, 0.95); box-shadow: 0 8px 18px rgba(20, 32, 51, 0.06); }
.layer-item.active { border-color: rgba(185, 17, 39, 0.24); background: rgba(185, 17, 39, 0.08); }
.layer-item img { width: 1.2rem; height: 1.2rem; margin-top: 0.2rem; flex: 0 0 auto; }
.layer-item .form-check { width: 100%; margin: 0; }
.layer-item .form-check-input { margin-top: 0.28rem; }
.layer-item .form-check-label { display: block; color: var(--ink); font-size: 0.92rem; font-weight: 600; }
.direction-mode-group { --bs-btn-padding-y: 0.55rem; --bs-btn-padding-x: 0.75rem; --bs-btn-font-weight: 700; --bs-btn-border-radius: 999px; }
.direction-mode-group .directions-btn.active, .direction-mode-group .directions-btn:active { border-color: var(--red); background: var(--red); color: var(--white); }
.route-feedback .alert, .search-results .alert { margin-bottom: 0; border: none; border-radius: var(--radius-sm); }
.route-results { display: flex; flex-direction: column; gap: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.route-toolbar { padding: 0.8rem 0.9rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.75); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), inset 0 0 0 1px rgba(255, 255, 255, 0.24); }
.directions-distance { color: var(--red-dark); font-size: 0.875rem; font-weight: 700; }
.directions-content { padding: 1rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.82); font-size: 0.9rem; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), inset 0 0 0 1px rgba(255, 255, 255, 0.24); }
.directions-content ol { margin: 0; padding-left: 1.2rem; }
.directions-content li + li { margin-top: 0.7rem; }
.route-note { padding: 0.95rem 1rem 0; border-top: 1px dashed var(--line); }

/* --------------------------------------------------------------------------
   Layer Markers
   -------------------------------------------------------------------------- */

.campus-layer-marker { transform-origin: center bottom; filter: drop-shadow(0 10px 16px rgba(20, 32, 51, 0.18)); will-change: transform, opacity; }
.campus-layer-marker.is-entering { animation: layer-marker-pop 480ms cubic-bezier(0.2, 0.85, 0.2, 1) both; }

/* --------------------------------------------------------------------------
   Search
   -------------------------------------------------------------------------- */

.search-utility { overflow: visible; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.search .input-group { margin: 0; padding: 0; border: 1px solid rgba(20, 32, 51, 0.14); border-radius: calc(var(--radius-sm) + 0.1rem); background: rgba(255, 255, 255, 0.94); transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease; }
.search .input-group:focus-within { border-color: rgba(185, 17, 39, 0.32); box-shadow: inset 0 0 0 2px rgba(185, 17, 39, 0.2); background: rgba(255, 255, 255, 1); }
.search .form-control, .search .btn-search { border-color: transparent; background: transparent; }
.search .btn-search { border-left-color: rgba(20, 32, 51, 0.12); }
.search .input-group:focus-within .btn-search { border-left-color: rgba(185, 17, 39, 0.18); }
.search .form-control:focus, .search .btn-search:focus { position: relative; z-index: 2; border-color: transparent; outline: none; box-shadow: none; }
.search #search-keywords, .search #search-keywords:focus, .search #search-keywords:focus-visible { outline: none !important; box-shadow: none !important; }
.search .btn-search:hover { border-color: rgba(185, 17, 39, 0.24); background: rgba(255, 255, 255, 1); color: var(--red-dark); }
.search-results { padding: 0.5rem; border: 1px solid rgba(20, 32, 51, 0.12); border-radius: var(--radius-md); background: linear-gradient(180deg, rgba(20, 32, 51, 0.04), rgba(20, 32, 51, 0.07)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4); }
.search-results.is-empty { display: none; }
.search-results li { list-style: none; }
.search-results .search-link { gap: 0.6rem; padding: 0.42rem 0.6rem; border-color: rgba(20, 32, 51, 0.08);  font-size: 0.813rem; line-height: 1.3; box-shadow: 0 4px 12px rgba(20, 32, 51, 0.04); }
.search-results .search-link:hover, .search-results .search-link:focus { border-color: rgba(185, 17, 39, 0.22); background: rgba(255, 255, 255, 1); box-shadow: 0 8px 18px rgba(20, 32, 51, 0.08); }

/* --------------------------------------------------------------------------
   Map Stage
   -------------------------------------------------------------------------- */

.map-stage { position: relative; flex: 1 1 auto; min-height: 62svh; height: min(70svh, 44rem); overflow: hidden; border-radius: var(--radius-lg); background: var(--bs-gray-500); box-shadow: var(--stage-shadow); }
.map-stage:focus { outline: none; }
.map-stage:focus-visible { outline: 3px solid rgba(185, 17, 39, 0.24); outline-offset: 3px; }
#map { width: 100%; height: 100%; min-height: inherit; }
.preloader { position: absolute; top: 50%; left: 50%; z-index: 1; transform: translate(-50%, -50%); }
.btn-reset-map { position: absolute; top: 1rem; right: 1rem; z-index: 3; display: inline-flex; width: 2rem; height: 2rem; align-items: center; justify-content: center; padding: 0; border: 1px solid rgba(20, 32, 51, 0.12); border-radius: 999px; background: rgba(255, 255, 255, 0.94); color: var(--ink); font-size: 0.85rem; box-shadow: 0 12px 24px rgba(20, 32, 51, 0.1); transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease, background-color 180ms ease; }
.btn-reset-map:hover, .btn-reset-map:focus { border-color: rgba(185, 17, 39, 0.18); background: rgba(255, 255, 255, 1); color: var(--red-dark); transform: translateY(-1px); box-shadow: 0 16px 28px rgba(20, 32, 51, 0.14); }
.btn-reset-map .fas { color: var(--red); }

/* --------------------------------------------------------------------------
   Map Overlays
   -------------------------------------------------------------------------- */

.info-window, .inthislocation-window { position: absolute; z-index: -1; opacity: 0; pointer-events: none; transform: translateY(12px) scale(0.985); will-change: opacity, transform; transition: opacity 240ms ease, transform 240ms cubic-bezier(0.2, 0.8, 0.2, 1); }
.info-window.active, .inthislocation-window.active { z-index: 4; opacity: 1; pointer-events: auto; transform: translateY(0) scale(1); }
.info-window.transparent, .inthislocation-window.transparent { opacity: 0.28; }
.info-window { top: 1rem; left: 1rem; display: flex; width: min(27.5rem, calc(100% - 2rem)); max-height: calc(100% - 2rem); flex-direction: column; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.58); border-radius: var(--radius-md); background: var(--panel); box-shadow: 0 20px 50px rgba(16, 24, 40, 0.16); }
.info-window-head { position: relative; z-index: 2; display: flex; flex: 0 0 auto; align-items: flex-start; justify-content: space-between; gap: 0.9rem; padding: 1rem 1rem 0.9rem 1.05rem; border-bottom: 1px solid var(--line); background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(255, 255, 255, 0.82)); }
.info-window-head-copy { min-width: 0; }
.info-window .content { display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column; gap: 1rem; max-height: calc(100vh - 12rem); margin: 0.25rem 0.4rem 0.35rem 0.3rem; padding: 0.95rem 0.95rem 1rem 1.05rem; overflow-x: hidden; overflow-y: auto; border-radius: calc(var(--radius-md) - 0.18rem); scrollbar-gutter: stable; }

/* --------------------------------------------------------------------------
   Building Detail
   -------------------------------------------------------------------------- */

.window-dismiss { position: relative; top: auto; right: auto; z-index: 2; display: inline-flex; flex: 0 0 auto; width: 2.35rem; height: 2.35rem; align-items: center; justify-content: center; border: none; border-radius: 999px; background: rgba(20, 32, 51, 0.08); color: var(--ink); transition: background-color 180ms ease, color 180ms ease, transform 180ms ease; }
.window-dismiss:hover, .window-dismiss:focus { background: rgba(185, 17, 39, 0.12); color: var(--red-dark); transform: scale(1.02); }
.content-title { max-width: none; line-height: 1.15; }
#info-window-title:focus, #info-window-title:focus-visible { outline: none; box-shadow: none; }
.gallery-preview { position: relative; }
.gallery-launch { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; border: 1.5px solid rgba(255, 255, 255, 0.42); border-radius: var(--radius-md); background: rgba(255, 255, 255, 0.86); box-shadow: 0 18px 34px rgba(20, 32, 51, 0.12); color: var(--white); text-align: left; transition: transform 220ms ease, box-shadow 220ms ease; }
.gallery-launch:hover, .gallery-launch:focus-visible { transform: translateY(-2px); box-shadow: 0 22px 38px rgba(20, 32, 51, 0.16); }
.gallery-image { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: linear-gradient(135deg, #dfe6ed, #c6d1dc); transition: filter 280ms ease; }
.gallery-launch:hover .gallery-image, .gallery-launch:focus-visible .gallery-image { filter: saturate(1.03) brightness(1.02); }
.gallery-badge, .gallery-caption { position: absolute; z-index: 1; display: inline-flex; align-items: center; gap: 0.45rem; border-radius: 999px; }
.gallery-badge { top: 0.9rem; left: 0.9rem; padding: 0.45rem 0.7rem; background: rgba(255, 255, 255, 0.92); color: var(--ink); font-size: 0.688rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.gallery-caption { left: 0.9rem; bottom: 0.9rem; padding: 0.5rem 0.78rem; background: rgba(255, 255, 255, 0.16); color: var(--white); font-size: 0.82rem; font-weight: 700; backdrop-filter: blur(10px); }
.description { color: var(--ink); font-size: 0.95rem; line-height: 1.65; }
.description p:last-child { margin-bottom: 0; }
.info-window .locations { display: flex; flex-direction: column; gap: 0.75rem; padding-top: 0.5rem; border-top: 1px solid var(--line); }
.info-window .locations ul { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.info-window .locations li { padding: 0.42rem 0.72rem; border: 1px solid rgba(20, 32, 51, 0.08); border-radius: 999px; background: rgba(255, 255, 255, 0.82); color: var(--ink); font-size: 0.82rem; font-weight: 600; line-height: 1.2; }

/* --------------------------------------------------------------------------
   In This Location Helper
   -------------------------------------------------------------------------- */

.inthislocation-window { left: 0; top: 0; max-width: 19rem; }
.inthislocation-window .content { padding: 0.95rem 1rem; border: 1.5px solid rgba(255, 255, 255, 0.44); border-radius: 1.1rem; background: var(--panel); box-shadow: 0 14px 30px rgba(20, 32, 51, 0.16); }
.inthislocation-window ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem 0.8rem; font-size: 0.82rem; }
.inthislocation-window li { position: relative; padding-left: 0.8rem; line-height: 1.35; }
.inthislocation-window li::before { content: ""; position: absolute; top: 0.5rem; left: 0; width: 0.32rem; height: 0.32rem; border-radius: 999px; background: var(--red); }

/* --------------------------------------------------------------------------
   Scrollbars And LightGallery
   -------------------------------------------------------------------------- */

.map-wrapper ::-webkit-scrollbar, .info-window ::-webkit-scrollbar { width: 0.3rem; height: 0.3rem; }
.map-wrapper ::-webkit-scrollbar-thumb, .info-window ::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(20, 32, 51, 0.25); }
.map-wrapper ::-webkit-scrollbar-track, .info-window ::-webkit-scrollbar-track { background: rgba(20, 32, 51, 0.06); }
.info-window .content::-webkit-scrollbar-track { margin: 0.35rem 0; }
.lg-sub-html strong { display: block; }
.lg-sub-html span { display: block; margin-top: 0.25rem; font-size: 0.875rem; opacity: 0.82; }

/* --------------------------------------------------------------------------
   Responsive Layout
   -------------------------------------------------------------------------- */

@media (min-width: 992px) {
	.map-shell { display: grid; grid-template-columns: minmax(21rem, 23rem) minmax(0, 1fr); align-items: stretch; height: 100%; }
	.map-sidebar { position: sticky; top: 0; min-height: 0; }
	.map-sidebar-card { height: 100%; max-height: none; min-height: 0; }
	.map-sidebar-scroll { overflow-x: hidden; overflow-y: auto; padding-right: 0.5rem; scrollbar-gutter: stable; }
	.map-stage { height: 100%; min-height: 0; }
	.info-window { top: 1.25rem; left: 1.25rem; max-width: 30rem; }
	.info-window-head { padding: 1.1rem 1.05rem 0.95rem 1.2rem; }
	.info-window .content { max-height: calc(100svh - 14rem); margin: 0.3rem 0.45rem 0.35rem 0.35rem; padding: 1rem 1.05rem 1.1rem 1.2rem; }
	.topic-flyout { --topic-flyout-width: min(16rem, calc(100% - 25rem)); display: block; position: absolute; top: 0; left: var(--topic-flyout-left, calc(23rem + 1rem)); width: max(12rem, var(--topic-flyout-width)); z-index: -1; opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(calc(var(--topic-flyout-offset, 0px) + 12px)) scale(0.985); will-change: opacity, transform; transition: opacity 240ms ease, transform 240ms cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 240ms; }
	.map-shell.has-open-topic-flyout .topic-flyout { z-index: 4; opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(var(--topic-flyout-offset, 0px)) scale(1); transition: opacity 240ms ease, transform 240ms cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0s; }
	.topic-results { max-height: min(22rem, calc(100svh - 16rem)); }
}

/* --------------------------------------------------------------------------
   Tablet And Mobile
   -------------------------------------------------------------------------- */

@media (max-width: 991.98px) {
	.map-sidebar-card { padding: 1rem; }
	.map-accordion .accordion-button { gap: 0.1rem; padding: 0.82rem 0.95rem; font-size: 0.9rem; }
	.map-accordion .accordion-body { gap: 0.85rem; padding: 0.88rem 0.95rem; }
	.sidebar-link, .topic-link, .topic-location-link, .search-link { gap: 0.6rem; padding: 0.46rem 0.6rem; font-size: 0.87rem; }
	.topic-results { min-height: 14.5rem; padding: 0.88rem 0.95rem; }
	.layer-item { gap: 0.65rem; padding: 0.72rem 0.78rem; }
	.layer-item .form-check-label { font-size: 0.87rem; }
	.map-stage { height: min(68svh, 42rem); }
	.btn-reset-map { top: 0.75rem; right: 0.75rem; width: 2rem; height: 2rem; font-size: 0.85rem; }
	.info-window { right: 0.75rem; left: 0.75rem; bottom: 0.75rem; top: auto; width: auto; max-height: calc(100% - 1.5rem); }
	.info-window-head { padding: 0.95rem 0.9rem 0.82rem 0.95rem; }
	.info-window .content { max-height: min(28rem, calc(100svh - 16rem)); margin: 0.22rem 0.3rem 0.25rem 0.25rem; padding: 0.88rem 0.82rem 0.92rem 0.95rem; }
	.gallery-caption { font-size: 0.78rem; }
}

/* --------------------------------------------------------------------------
   Small Screens
   -------------------------------------------------------------------------- */

@media (max-width: 575.98px) {
	.header-wrapper .container-fluid { flex-direction: column; justify-content: center; text-align: center; }
	.map-sidebar-card { border-radius: 1.25rem; }
	.map-stage { border-radius: 1.25rem; }
	.map-accordion { gap: 0.4rem; }
	.map-accordion .accordion-button { padding: 0.74rem 0.85rem; font-size: 0.85rem; }
	.map-accordion .accordion-body { gap: 0.75rem; padding: 0.78rem 0.85rem; }
	.sidebar-link, .topic-link, .topic-location-link, .search-link { padding: 0.42rem 0.55rem; font-size: 0.83rem; }
	.topic-results { min-height: 13.5rem; padding: 0.8rem 0.85rem; }
	.topic-flyout-close { width: 1.9rem; height: 1.9rem; }
	.layer-item { gap: 0.55rem; padding: 0.64rem 0.68rem; }
	.layer-item .form-check-label { font-size: 0.84rem; }
	.route-toolbar { align-items: flex-start; flex-direction: column; }
	.inthislocation-window ul { grid-template-columns: minmax(0, 1fr); }
}

/* --------------------------------------------------------------------------
   Reduced Motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	* { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
}
