.campus-map-section { margin-top:40px; }
.map-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:18px; }
.map-heading h3 { margin:0 0 6px; font-size:25px; color:var(--ink); }
.map-heading p,.map-status { font-size:14px; color:var(--muted); }
.campus-map-canvas { position:relative; z-index:0; height:480px; width:100%; border:1px solid #cbd6c9; border-radius:18px; background:#eef1e9; overflow:hidden; }
.campus-map-canvas img { max-width:none; }
.campus-map-canvas.map-unavailable { height:180px; }
.map-status { margin:10px 0 22px; min-height:25px; }
.campus-address-list { margin:0; }
.campus-address-row { display:grid; grid-template-columns:180px minmax(0,1fr) auto; align-items:start; gap:20px; padding:23px 0; border-bottom:1px solid #d6decf; }
.campus-address-row:last-child { border-bottom:0; }
.campus-address-row dt { font-size:19px; font-weight:600; line-height:1.8; }
.campus-address-row dd { margin:0; min-width:0; }
.campus-address-detail p { font-size:15px; line-height:1.85; margin:0; overflow-wrap:anywhere; }
.campus-address-contacts { display:flex; flex-wrap:wrap; gap:6px 28px; padding-top:6px; }
.campus-address-contacts a { color:var(--ink); font-weight:600; }
.campus-address-actions { display:flex; align-items:center; gap:18px; font-size:14px; }
.campus-address-actions > a,.campus-address-actions .map-select { display:inline-flex; align-items:center; min-height:44px; padding:0; border:0; border-radius:0; background:transparent; font:inherit; color:var(--ink); text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.campus-address-row.is-selected dt a { text-decoration:underline; text-underline-offset:6px; }
.map-reset,.map-select { font:inherit; min-height:44px; border:1px solid #b8cec0; border-radius:7px; padding:8px 14px; background:#fffdf7; color:var(--ink); cursor:pointer; }

.map-reset { flex-shrink:0; }
.map-reset[hidden],.map-select[hidden] { display:none; }
.map-info { box-sizing:border-box; width:100%; padding:4px; font:14px/1.65 Arial,"Microsoft YaHei",sans-serif; color:var(--text); }
.map-info-header { padding:13px 40px 13px 15px; border-radius:10px; background:linear-gradient(120deg,#e8f5f4,#fff8ed); border:1px solid #e2eadb; }
.map-info-brand { display:block; color:var(--muted); font-size:11px; letter-spacing:1px; margin-bottom:4px; }
.map-info-header strong { display:block; font-size:20px; font-weight:600; line-height:1.45; color:var(--ink); }
.map-info-address { padding:14px 3px 12px; }
.map-info-address > span { display:block; color:var(--muted); font-size:12px; margin-bottom:5px; }
.map-info-address p { margin:0; font-size:14px; line-height:1.7; overflow-wrap:anywhere; }
.map-info-contacts { margin:0 3px 14px; padding:10px 0; border-top:1px solid #e6eadd; }
.map-info-contacts > div { display:grid; grid-template-columns:65px minmax(0,1fr); gap:10px; margin:5px 0; }
.map-info-contacts dt { color:var(--muted); font-size:12px; }
.map-info-contacts dd { margin:0; color:var(--text); overflow-wrap:anywhere; }
.map-info-actions { display:flex; gap:9px; padding:0 3px 3px; }
.map-info-actions a { display:flex; align-items:center; justify-content:center; min-height:44px; padding:8px 14px; box-sizing:border-box; border-radius:8px; font-size:14px; font-weight:600; text-decoration:none; }
.map-info-navigate { flex:1; background:var(--brand-action); color:#fffdf6; box-shadow:0 3px 7px rgb(39 118 117 / 10%); }
.map-info-call { border:1px solid #cadbcf; color:var(--ink); background:#f7faf4; }
.map-info-actions a:hover { filter:brightness(.95); }
@media(max-width:800px) { .campus-address-row { grid-template-columns:1fr; gap:6px; padding:20px 0; } .campus-address-actions { margin-top:4px; } .campus-map-canvas { position:relative; z-index:0; height:380px; } }
@media(max-width:500px) { .map-heading { align-items:flex-start; flex-direction:column; gap:10px; } .map-heading h3 { font-size:23px; } .campus-map-canvas { position:relative; z-index:0; height:350px; border-radius:12px; } .campus-map-section { margin-top:28px; } }

.campus-map-frame { position:relative; }
.map-information-panel { position:absolute; top:16px; right:16px; z-index:2; box-sizing:border-box; width:330px; max-width:calc(100% - 32px); max-height:calc(100% - 56px); overflow:auto; padding:12px; border:1px solid #dce4d7; border-radius:15px; background:#fffdf8; box-shadow:0 8px 30px #244e4229,0 2px 5px #244e4214; }
.map-information-panel[hidden] { display:none; }
.map-info-close { position:absolute; top:12px; right:12px; width:44px; height:44px; z-index:1; border:0; background:transparent; color:var(--muted); font:25px/1 sans-serif; cursor:pointer; border-radius:8px; }
.map-info-close:hover { background:#e1f1f0; }
@media(max-width:500px) { .map-information-panel { top:12px; right:12px; width:calc(100% - 24px); max-width:none; max-height:calc(100% - 56px); padding:10px; } }

.map-information-panel:focus { outline:2px solid #adc7b5; outline-offset:2px; }
