.sports-page{max-width:1152px}.sports-heading{margin:8px 0 30px}.sports-heading h1{font-size:var(--type-page);font-weight:600;line-height:1.2;letter-spacing:-.8px;margin:0 0 14px}.sports-heading p{font-size:14px;line-height:1.7;margin:0;color:var(--muted)}.sports-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.sports-map-section{position:sticky;top:20px;min-width:0}.sports-map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;min-height:38px}.sports-map-toolbar>span{font-size:11px;line-height:1.6;color:var(--muted)}.sports-zoom{display:flex;align-items:center;gap:4px}.sports-zoom button{font:inherit;font-size:16px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:6px;min-width:34px;min-height:34px;padding:4px 8px}.sports-zoom button:hover{border-color:var(--accent)}.sports-zoom button:disabled{opacity:.4;cursor:default}.sports-zoom output{font-size:11px;width:40px;text-align:center;color:var(--muted)}#sports-zoom-reset{font-size:11px;margin-left:4px}.sports-map-viewport{border:1px solid var(--line);border-radius:12px;box-sizing:content-box;aspect-ratio:1846/1344;overflow:hidden;max-height:none;background:#fff;scrollbar-width:thin;overscroll-behavior:auto}.sports-map-viewport:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sports-map-canvas{width:100%;min-width:100%;line-height:0}.sports-map-canvas svg{display:block;width:100%;height:auto;background:white}.sports-pin{--pin:#0067e2;text-decoration:none;outline:none;cursor:pointer}.sports-pin-hit{fill:transparent;pointer-events:all}.sports-pin-halo{fill:#fff;stroke:#0067e2;stroke-width:2;opacity:.8}.sports-pin-tail{fill:#0067e2;stroke:white;stroke-width:3;stroke-linejoin:round}.sports-pin-dot{fill:white;stroke:#0067e2;stroke-width:4}.sports-pin text{fill:#0067e2;font:600 29px var(--font-ui);pointer-events:none;line-height:1}.sports-pin text.sports-pin-small{font-size:19px}.sports-pin:hover .sports-pin-dot,.sports-pin[aria-current=true] .sports-pin-dot,.sports-pin:focus-visible .sports-pin-dot{fill:#0067e2}.sports-pin:hover text,.sports-pin[aria-current=true] text,.sports-pin:focus-visible text{fill:#fff}.sports-pin:focus-visible .sports-pin-halo,.sports-pin[aria-current=true] .sports-pin-halo{stroke-width:6;opacity:1}.sports-selection{display:grid;gap:6px;border-bottom:1px solid var(--line);padding:16px 0;min-height:73px;font-size:13px;line-height:1.6}.sports-selection>span{color:var(--muted)}.sports-selection strong{font-size:15px;font-weight:500}.sports-selection strong:empty{display:none}.sports-map-note,.sports-provenance{font-size:11px;line-height:1.8;color:var(--muted);margin:12px 0}.sports-original{display:inline-flex;align-items:center;gap:16px;font-size:12px;line-height:1.7;text-decoration:none;margin-top:4px}.sports-directory h2{font-size:16px;line-height:1.5;font-weight:500;margin:0 0 14px}.sports-directory h2:not(:first-child){margin-top:28px}.sports-place-list{display:grid;gap:8px}.sports-place{display:flex;align-items:center;gap:12px;min-width:0;padding:14px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);text-decoration:none;color:var(--text);scroll-margin-top:24px}.sports-place:hover,.sports-place[aria-current=true]{border-color:var(--accent)}.sports-place-badge{display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:50%;background:var(--tint);color:var(--accent);font-size:12px;font-weight:600}.sports-place>span:nth-child(2){display:grid;gap:4px;min-width:0}.sports-place strong{font-size:13px;line-height:1.5;font-weight:500}.sports-place>span:nth-child(2)>span{font-size:11px;line-height:1.6;color:var(--muted)}.sports-place-arrow{margin-left:auto;color:var(--muted);font-size:15px}.sports-provenance{margin-top:28px}.sports-map-viewport svg *{touch-action:pan-x pan-y}
@media(max-width:1000px){.sports-layout{grid-template-columns:minmax(0,1fr) 270px;gap:18px}.sports-map-toolbar{align-items:flex-start;flex-direction:column;gap:8px}.sports-map-section{top:12px}}
@media(max-width:760px){.sports-layout{grid-template-columns:minmax(0,1fr);gap:28px}.sports-map-section{position:static}.sports-map-viewport{max-height:none}.sports-map-toolbar{flex-direction:row;align-items:center;flex-wrap:wrap}.sports-directory .sports-place-list{grid-template-columns:repeat(2,minmax(0,1fr))}.sports-directory h2{font-size:18px}.sports-pin-dot{stroke-width:5}}
@media(max-width:440px){.sports-directory .sports-place-list{grid-template-columns:minmax(0,1fr)}.sports-map-toolbar>span{font-size:10px}.sports-zoom{gap:3px}.sports-place{padding:14px}.sports-map-note{font-size:10px}.sports-heading{margin-bottom:24px}}
@media print{.sports-map-section{position:static}.sports-layout{display:block}.sports-map-viewport{max-height:none;overflow:visible}.sports-map-canvas{width:100%!important}.sports-map-toolbar,.sports-original{display:none}.sports-directory{margin-top:20px}.sports-place-list{grid-template-columns:repeat(2,1fr)}.sports-place{break-inside:avoid}}

/* Vector campus in the Listok palette; geometry stays in the source coordinate frame. */
.sports-map-viewport,.sports-map-canvas svg{background:var(--surface)}
.campus-ground{fill:var(--surface)}.campus-roads path{fill:none;stroke:var(--hover);stroke-width:54;stroke-linejoin:round;stroke-linecap:round}.campus-roads path.campus-road-small{stroke-width:38}
.campus-building>path{fill:var(--tint);stroke:#a9bfdd;stroke-width:2.5;stroke-linejoin:round;transition:fill 180ms,stroke 180ms}.campus-building.is-selected>path{fill:#dceaff;stroke:var(--accent);stroke-width:4}
.campus-neighbors path{fill:var(--hover);stroke:var(--line);stroke-width:2}.campus-neighbors text{fill:var(--muted);font:400 22px var(--font-ui);letter-spacing:.3px}
.campus-building-number{fill:var(--text);font:500 50px var(--font-ui);font-variant-numeric:lining-nums tabular-nums}.campus-building-word{fill:var(--muted);font:400 20px var(--font-ui)}
.campus-congress{fill:var(--muted);font:400 19px var(--font-ui)}.campus-streets text{fill:var(--muted);font:400 22px var(--font-ui);letter-spacing:.2px}.campus-entrances{fill:var(--muted);opacity:.75}
.campus-church{fill:none;stroke:var(--muted);stroke-width:3;stroke-linejoin:round}.campus-metro circle{fill:var(--surface);stroke:#d86a6a;stroke-width:2}.campus-metro text{fill:#c35656;font:500 18px var(--font-ui)}.campus-metro-name{fill:var(--muted);font:400 21px var(--font-ui)}
.sports-pin-halo{fill:none;stroke:var(--accent);stroke-width:2;opacity:0}.sports-pin-tail{fill:var(--surface);stroke:var(--accent);stroke-width:2}.sports-pin-dot{fill:var(--surface);stroke:var(--accent);stroke-width:3}.sports-pin text{fill:var(--accent);font-weight:500}.sports-pin:hover .sports-pin-dot,.sports-pin[aria-current=true] .sports-pin-dot,.sports-pin:focus-visible .sports-pin-dot{fill:var(--accent)}.sports-pin:hover text,.sports-pin[aria-current=true] text,.sports-pin:focus-visible text{fill:var(--surface)}.sports-pin:hover .sports-pin-tail,.sports-pin[aria-current=true] .sports-pin-tail{fill:var(--accent)}.sports-pin[aria-current=true] .sports-pin-halo,.sports-pin:focus-visible .sports-pin-halo{opacity:.25;stroke-width:5}
:root[data-theme=dark] .campus-building>path{stroke:#435e7c}:root[data-theme=dark] .campus-building.is-selected>path{fill:#294668;stroke:var(--accent)}
@media(prefers-reduced-motion:reduce){.campus-building>path{transition:none}}

/* Road widths are defined per source segment; street names follow those same paths. */
.campus-roads use{fill:none;stroke:var(--hover);stroke-linejoin:round;stroke-linecap:butt}
.campus-streets text{font-size:23px;letter-spacing:.2px}
.sports-pin-icon,.sports-place-icon{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.sports-pin-icon{color:var(--accent);pointer-events:none}
.sports-pin:hover .sports-pin-icon,.sports-pin[aria-current=true] .sports-pin-icon,.sports-pin:focus-visible .sports-pin-icon{color:var(--surface)}
.sports-place-icon{display:block;color:inherit;flex:none}

/* One line-icon family, with consistent rounded ends and 24-unit proportions. */
.map-line-icon,.sports-pin-icon,.sports-place-icon{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.campus-church{color:var(--muted)}
.campus-building-label[data-building-label="7"] .campus-building-number{font-size:38px}
.campus-building-label[data-building-label="7"] .campus-building-word{font-size:16px}

/* Narrow passage from building 3 to 6, drawn without an artificial slab across the courtyard. */
.campus-connection-floor{fill:var(--tint);stroke:none}
.campus-connection-walls{fill:none;stroke:#a9bfdd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round}
.campus-connection.is-selected .campus-connection-floor{fill:#dceaff}
.campus-connection.is-selected .campus-connection-walls{stroke:var(--accent);stroke-width:4}
:root[data-theme=dark] .campus-connection-walls{stroke:#435e7c}
:root[data-theme=dark] .campus-connection.is-selected .campus-connection-floor{fill:#294668}
:root[data-theme=dark] .campus-connection.is-selected .campus-connection-walls{stroke:var(--accent)}

.sports-beta-notice{max-width:400px;margin:64px auto 120px;padding:40px 28px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px}
.sports-beta-emoji{display:block;font-size:48px;line-height:1.2;margin-bottom:20px}
.sports-beta-notice h1{font-size:28px;line-height:1.3;font-weight:500;letter-spacing:-.5px;margin:0 0 28px}
.sports-beta-notice button{font:inherit;font-size:14px;font-weight:500;line-height:1.5;min-width:140px;min-height:44px;padding:11px 24px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--surface)}
:root[data-theme=dark] .sports-beta-notice button{color:var(--bg)}
.sports-beta-notice button:hover{filter:brightness(.95)}
.sports-beta-notice noscript{font-size:12px;color:var(--muted);line-height:1.6}
@media(max-width:440px){.sports-beta-notice{margin:40px auto 72px;padding:32px 20px}.sports-beta-notice h1{font-size:25px}}


.campus-walkways path{fill:none;stroke:var(--hover);stroke-width:12;stroke-linejoin:round;stroke-linecap:round}

/* UMAP ground polygons; geometry is never simplified or smoothed. */
.campus-area{stroke:none}
.campus-area-road{fill:var(--line)}
.campus-area-walkway{fill:var(--hover)}
.campus-area-green{fill:var(--tint);opacity:.65}
.campus-annexes>path{fill:var(--tint);stroke:#a9bfdd;stroke-width:2.5;stroke-linejoin:round}
:root[data-theme=dark] .campus-annexes>path{stroke:#435e7c}

/* The map is clipped at every zoom; selection and buttons move its camera. */
.sports-map-viewport.is-zoomed{overflow:hidden}
.campus-restored-streets path{fill:none;stroke:var(--line);stroke-linecap:butt;stroke-linejoin:round}
.campus-congress{font-size:20px}

/* Compact page and an information card anchored to the selected marker. */
.sports-page{margin-top:14px}.sports-page>.breadcrumb{margin-bottom:18px}
.sports-heading{margin:0 0 18px}.sports-heading h1{margin:0}
.sports-map-section{position:relative;top:auto;scroll-margin-top:16px}
.sports-map-viewport{position:relative;touch-action:pan-y}
.sports-map-viewport svg *{touch-action:pan-y}
.sports-selection{position:absolute;z-index:2;width:248px;max-width:calc(100% - 24px);min-height:0;display:grid;gap:5px;padding:16px 34px 16px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 8px 28px #14233b20;font-size:13px;line-height:1.5}
.sports-selection[hidden]{display:none}
.sports-selection>span{color:var(--text);font-weight:500}.sports-selection strong{font-size:12px;color:var(--muted);font-weight:400}
.sports-selection::after{content:'';position:absolute;width:10px;height:10px;left:var(--pointer-x,50%);bottom:-6px;background:var(--surface);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transform:translateX(-50%) rotate(45deg)}
.sports-popup-close{position:absolute;right:6px;top:6px;width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:var(--muted);font:20px/1 var(--font-ui);cursor:pointer}.sports-popup-close:hover{background:var(--hover)}
@media(max-width:600px){.sports-page{margin-top:12px}.sports-page>.breadcrumb{margin-bottom:16px}.sports-layout{gap:24px}.sports-heading{margin-bottom:14px}.sports-map-toolbar{margin-bottom:8px}}

/* Headroom keeps upper-edge markers below their information card when zoomed. */
.sports-map-viewport,.sports-map-canvas{overflow-anchor:none}

.campus-restored-streets .campus-road-junction{fill:var(--line);stroke:none}
