.indoor-section { background: var(--color-base-200); }
.indoor-intro { display: block; }
.indoor-intro p { margin-top: 1rem; max-width: 65ch; line-height: 1.7; }
.indoor-preview-note { margin-top: 1rem; max-width: 65ch; font-size: .875rem; line-height: 1.6; color: color-mix(in srgb,var(--color-base-content) 80%,var(--color-base-100)); }
.indoor-explorer { margin-top: 1.75rem; overflow: hidden; border: 1px solid var(--color-base-300); border-radius: var(--radius-box); background: var(--color-base-100); }
.indoor-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--color-base-300); }
.indoor-floor-picker { display: flex; align-items: center; gap: .25rem; padding: .25rem; background: var(--color-base-200); border-radius: var(--radius-field); }
.indoor-tools { display: flex; gap: .375rem; align-items: center; }
.indoor-explorer .btn { min-height: 44px; height: auto; font-size: var(--map-text-size); line-height: 1.45; box-shadow: none; }
.indoor-floor-compact { display: none; }
.indoor-floor-button { padding: .625rem 1rem; background: transparent; border-color: transparent; font-weight: 600; }
.indoor-floor-button[aria-pressed="true"] { background: var(--color-neutral); color: var(--color-neutral-content); border-color: var(--color-neutral); }
.indoor-tools .btn { min-width: 44px; padding: .5rem .75rem; background: var(--color-base-100); }
.indoor-tools [data-indoor-zoom]:not([data-indoor-zoom="reset"]) { font-size: 1.25rem; font-weight: 500; }
.indoor-floor { display: block; }
.indoor-floor + .indoor-floor { border-top: 1px solid var(--color-base-300); }
.indoor-plan-column { display: flex; flex-direction: column; min-width: 0; }
.indoor-plan-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 1.25rem 1.25rem .75rem; }
.indoor-plan-heading h3 { font-size: var(--map-title-size); font-weight: 700; }
.indoor-plan-heading p { margin-top: .25rem; font-size: var(--map-text-size); line-height: 1.5; color: color-mix(in srgb,var(--color-base-content) 80%,var(--color-base-100)); }
.indoor-building-name { flex-shrink: 0; font-size: var(--map-meta-size); color: color-mix(in srgb,var(--color-base-content) 75%,var(--color-base-100)); }
.indoor-code-note, .indoor-quick-find { display: none; }
.indoor-viewport { display: grid; align-items: safe center; overflow: auto; height: clamp(480px,52vw,680px); min-height: 0; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--color-primary) var(--color-base-200); }
.indoor-pan-hint { display: none; padding: 0 1.25rem .75rem; font-size: var(--map-meta-size); line-height: 1.5; color: var(--color-primary); }
.indoor-plan-column:has(.is-pannable) .indoor-pan-hint { display: block; }
.indoor-plan { display: block; width: 100%; min-width: 700px; max-width: none; height: auto; margin-inline: auto; }
.is-enhanced .indoor-plan { min-width: 0; }
.indoor-plan image, .indoor-context { pointer-events: none; }
.indoor-context-label, .indoor-marker-content { transform: scale(var(--indoor-label-scale,1)); }
.indoor-service .indoor-marker-content { transform: scale(var(--indoor-service-scale,1)); }
.indoor-street-labels { pointer-events: none; }
.indoor-street-label-content { transform: scale(var(--indoor-label-scale,1)); }
.indoor-street-labels text { fill: #4b6070; font: 500 14px Inter,Arial,sans-serif; }
.indoor-context text { fill: #4b6070; font: 500 14px Inter,Arial,sans-serif; }
.is-enhanced .indoor-plan:not(.is-detail-view) .indoor-context { display: none; }
/* Functional map categories reuse the documented ICAIF programme palette. */
.indoor-area--room { --zone-color: #075985; --zone-fill: #e0f2fe; }
.indoor-area--foyer { --zone-color: #475569; --zone-fill: #f1f5f9; }
.indoor-zone--registration { --zone-color: #9a3412; --zone-fill: #ffedd5; }
.indoor-zone--exhibition { --zone-color: #854d0e; --zone-fill: #fef9c3; }
.indoor-zone--catering { --zone-color: #115e59; --zone-fill: #ccfbf1; }
.indoor-zone--posters { --zone-color: #3730a3; --zone-fill: #e0e7ff; }
.indoor-room-shape { fill: var(--zone-fill,var(--color-base-200)); stroke: var(--zone-color,var(--color-primary)); stroke-width: 2.5; stroke-opacity: .85; mix-blend-mode: multiply; }
.indoor-room--space, .indoor-room--event,
[data-place="aula-magna"] .indoor-room-shape { stroke-dasharray: 6 4; }
.indoor-exhibition-stand { fill: var(--color-base-100); stroke: var(--zone-color,var(--color-accent)); stroke-width: 1.5; pointer-events: none; }
.indoor-exhibition-stand text { fill: var(--zone-color,var(--color-accent)); stroke: none; font: 700 16px Inter,Arial,sans-serif; }
.indoor-place { cursor: pointer; outline: none; }
.indoor-room-label { fill: var(--zone-color,var(--color-primary)); font: 700 var(--indoor-room-font-size,20px) Inter,Arial,sans-serif; font-variant-numeric: tabular-nums; }
.indoor-programme-label { fill: var(--zone-color,var(--color-primary)); font: 500 var(--indoor-programme-font-size,14px) Inter,Arial,sans-serif; }
.is-enhanced .indoor-plan:not(.is-detail-view) .indoor-room-label { font-size: 14px; }
.indoor-place:has(.indoor-room--space) .indoor-room-label { font-weight: 600; }
.indoor-place:is(:hover,:focus-visible) .indoor-room-shape { fill: color-mix(in srgb,var(--zone-color) 5%,var(--zone-fill)); stroke-opacity: 1; stroke-width: 3; }
.indoor-place[aria-pressed="true"] .indoor-room-shape { fill: color-mix(in srgb,var(--zone-color) 10%,var(--zone-fill)); stroke: var(--color-neutral); stroke-width: 4; stroke-opacity: 1; }
.indoor-place:focus-visible .indoor-room-shape { stroke: var(--color-neutral); stroke-width: 5; stroke-opacity: 1; }
.indoor-compact-label { display: none; }
.is-enhanced .indoor-plan:not(.is-detail-view) .indoor-code-room .indoor-full-label { display: none; }
.is-enhanced .indoor-plan:not(.is-detail-view) .indoor-code-room .indoor-compact-label { display: block; }
.is-enhanced .indoor-plan-column:not(:has(.indoor-plan.is-detail-view)) .indoor-code-note { display: block; padding: .25rem 1.25rem; font-size: .875rem; line-height: 1.5; color: color-mix(in srgb,var(--color-base-content) 80%,var(--color-base-100)); }
.indoor-marker-hit { fill: transparent; }
.indoor-service-leader { fill: none; stroke: var(--facility-color); stroke-width: 2; pointer-events: none; }
.indoor-service-point { fill: var(--facility-color); pointer-events: none; }
.indoor-service-shape { fill: var(--facility-color); fill-opacity: 0; stroke: var(--facility-color); stroke-opacity: 0; stroke-width: 3; pointer-events: none; }
.indoor-service:is(:hover,:focus-visible,[aria-pressed="true"]) .indoor-service-shape { fill-opacity: .15; stroke-opacity: .8; }
.indoor-service[aria-pressed="true"] .indoor-service-shape { fill: var(--facility-color); stroke: var(--facility-color); }
.indoor-facility--stairs { --facility-color: var(--color-primary); }
.indoor-facility--lift { --facility-color: #6b21a8; }
.indoor-facility--wc { --facility-color: #115e59; }
.indoor-facility--entrance { --facility-color: var(--color-accent); }
.indoor-facility--press { --facility-color: #9f1239; }
.indoor-facility--work { --facility-color: #475569; }
.indoor-service-caption { fill: var(--facility-color); stroke: var(--color-base-100); stroke-width: 4; paint-order: stroke; font: 600 16px Inter,Arial,sans-serif; }
.is-enhanced .indoor-plan:not(.is-detail-view) .indoor-service-caption { display: none; }
.indoor-service-disc { fill: var(--color-base-100); stroke: var(--facility-color); stroke-width: 2.5; }
.indoor-service-icon, .indoor-facility-icon { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.indoor-service-icon { color: var(--facility-color); transform: scale(1.15); }
.indoor-wc-symbol { fill: currentColor; stroke: none; font: 700 16px Inter,Arial,sans-serif; }
.indoor-service:is(:hover,:focus-visible) .indoor-service-disc { stroke: var(--color-neutral); stroke-width: 4; }
.indoor-service[aria-pressed="true"] .indoor-service-disc { fill: var(--facility-color); stroke: var(--color-neutral); stroke-width: 4; }
.indoor-service[aria-pressed="true"] .indoor-service-icon { color: var(--color-base-100); }
.indoor-plan-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: .875rem 1.25rem; font-size: var(--map-caption-size); line-height: 1.5; }
.indoor-map-legend, .indoor-facility-legend { display: flex; flex-wrap: wrap; gap: .875rem; }
.indoor-map-key { display: inline-flex; align-items: center; gap: .375rem; color: var(--zone-color,var(--color-base-content)); }
.indoor-map-key > span { width: .75rem; height: .75rem; border: 1px solid var(--zone-color,var(--color-primary)); background: var(--zone-fill,var(--color-base-200)); }
.indoor-map-key--shared > span { border-style: dashed; }
[data-floor-panel="b1"] .indoor-map-key--rooms > span { border-style: dashed; }
.indoor-map-key--event > span { border-style: dashed; }
.indoor-map-key--other > span { border-color: #afbec8; background: #f0f3f6; }
.indoor-facility-key { display: inline-flex; align-items: center; gap: .25rem; color: var(--facility-color); }
.indoor-facility-key .indoor-facility-icon { width: 20px; height: 20px; }
.indoor-directory { display: grid; grid-template-columns: 1fr 1.4fr 1fr; gap: 2rem; padding: 1.25rem; border-top: 1px solid var(--color-base-300); background: var(--color-base-200); }
.indoor-directory h3 { font-size: .875rem; font-weight: 700; }
.indoor-directory > div { min-width: 0; }
.indoor-place-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem; margin-block: .875rem 0; }
.indoor-useful-notes { margin: 0; padding: 0; }
.indoor-useful-note { margin-top: .75rem; font-size: var(--map-text-size); line-height: 1.6; }
.indoor-useful-note strong, .indoor-useful-note span { display: block; }
.indoor-useful-note span { margin-top: .25rem; }
.indoor-useful-note .link { display: inline-flex; align-items: center; gap: .375rem; min-height: 44px; color: var(--color-primary); }
.indoor-place-choice.btn { justify-content: space-between; width: 100%; padding: .625rem .75rem; text-align: left; background: var(--color-base-100); border-color: var(--color-base-300); font-weight: 600; color: var(--color-primary); }
.indoor-room-directory .indoor-place-choice { min-height: 64px; }
.indoor-choice-label { min-width: 0; }
.indoor-choice-name, .indoor-choice-meta { display: block; }
.indoor-choice-meta { margin-top: .125rem; font-size: var(--map-meta-size); font-weight: 400; line-height: 1.45; }
.indoor-place-choice.btn:hover { border-color: var(--color-primary); }
.indoor-choice-arrow { flex-shrink: 0; }
.indoor-facility-list { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .25rem .75rem; margin-block: .625rem 0; }
.indoor-facility-choice.btn { justify-content: flex-start; gap: .75rem; padding: .625rem .5rem; background: transparent; border-color: transparent; color: var(--color-base-content); font-weight: 500; }
.indoor-facility-choice.btn:hover { border-color: transparent; background: var(--color-base-100); }
.indoor-facility-choice .indoor-choice-arrow { margin-left: auto; opacity: 0; }
.indoor-facility-choice:is(:hover,:focus-visible,[aria-pressed="true"]) .indoor-choice-arrow { opacity: 1; }
.indoor-facility-choice .indoor-facility-icon { color: var(--facility-color); flex-shrink: 0; }
.indoor-place-choice[aria-pressed="true"].btn { color: var(--color-accent); background: color-mix(in srgb,var(--color-accent) 8%,var(--color-base-100)); border-color: color-mix(in srgb,var(--color-accent) 50%,var(--color-base-100)); }
.indoor-place-choice[class*="indoor-area--"].btn { color: var(--zone-color); border-color: color-mix(in srgb,var(--zone-color) 35%,var(--color-base-100)); }
.indoor-place-choice[class*="indoor-area--"]:is(:hover,[aria-pressed="true"]).btn { background: var(--zone-fill); border-color: var(--zone-color); }
.indoor-facility-choice[aria-pressed="true"].btn { color: var(--facility-color); background: color-mix(in srgb,var(--facility-color) 8%,var(--color-base-100)); border-color: var(--facility-color); }
.indoor-detail { display: flex; align-items: center; justify-content: space-between; gap: 1.25rem; padding: 1rem 1.25rem; border-top: 1px solid var(--color-base-300); }
.indoor-detail > div { max-width: 65ch; }
.indoor-detail h4 { font-size: 1rem; font-weight: 700; line-height: 1.4; }
.indoor-detail-meta { margin-top: .25rem; font-size: var(--map-meta-size); line-height: 1.5; color: color-mix(in srgb,var(--color-base-content) 85%,var(--color-base-100)); }
.indoor-detail [data-detail-copy] { margin-top: .375rem; font-size: var(--map-text-size); line-height: 1.65; color: color-mix(in srgb,var(--color-base-content) 85%,var(--color-base-100)); }
.indoor-selection-note { margin-top: .375rem; font-size: .75rem; color: var(--color-accent); }
.indoor-connections { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin-top: .875rem; }
.indoor-connections > p { font-size: .8125rem; font-weight: 600; }
.indoor-connection-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.indoor-connection-link.btn { padding: .5rem .875rem; background: var(--color-base-100); border-color: var(--color-base-300); color: var(--color-primary); }
.indoor-connection-link.btn:hover { border-color: var(--color-primary); }
.indoor-copy { flex-shrink: 0; }
.indoor-share-fallback { display: block; margin-top: .75rem; font-size: .8125rem; }
.indoor-footnote { border-top: 1px solid var(--color-base-300); padding: .875rem 1.25rem; font-size: .75rem; line-height: 1.6; color: color-mix(in srgb,var(--color-base-content) 80%,var(--color-base-100)); }
.indoor-explorer :is(.btn,a,.select):focus-visible, .indoor-viewport:focus-visible { outline: 2px solid var(--color-primary); outline-offset: -3px; }
.indoor-explorer [hidden] { display: none !important; }
.indoor-expanded .indoor-explorer.modal-box { display: flex; flex-direction: column; width: 100%; max-width: none; height: 100dvh; max-height: 100dvh; margin: 0; padding: 0; overflow: auto; border: 0; border-radius: 0; }
.indoor-expanded .indoor-toolbar { position: sticky; top: 0; z-index: 2; background: var(--color-base-100); }
.indoor-expanded .indoor-floor { flex: none; }
.indoor-expanded .indoor-viewport { flex: none; height: max(420px,calc(100dvh - 170px)); }
.indoor-expanded [data-indoor-fullscreen] { display: none; }
.indoor-close-action { display: block; margin: 0; padding: 0; }
@media (max-width: 1023px) {
  .indoor-floor { grid-template-columns: minmax(0,1fr); }
  .indoor-directory { grid-template-columns: 1fr 1fr; gap: 1.5rem 2rem; }
  .indoor-room-directory, .indoor-facility-directory { min-width: 0; }
  .indoor-place-list { margin-bottom: 0; }
  .indoor-useful-notes { grid-column: 1 / -1; }
  .indoor-viewport { height: 500px; }
  .indoor-expanded .indoor-floor { flex: none; }
  .indoor-expanded .indoor-viewport { height: max(420px,calc(100dvh - 210px)); }
}
@media (max-width: 639px) {
  .indoor-toolbar { gap: .75rem; padding: .75rem; }
  .indoor-floor-picker { width: 100%; }
  .indoor-floor-label { display: none; }
  .indoor-floor-compact { display: inline; }
  .indoor-floor-button { flex: 1; padding: .5rem .375rem; font-size: .8125rem !important; }
  .indoor-tools { width: 100%; justify-content: flex-end; }
  .indoor-tools .btn { padding-inline: .5rem; }
  .indoor-plan-heading { padding: 1rem 1rem .75rem; }
  .indoor-plan-heading h3 { font-size: 1rem; }
  .indoor-building-name { display: none; }
  .indoor-quick-find { display: grid; gap: .375rem; padding: 0 1rem .75rem; }
  .indoor-quick-find label { font-size: .8125rem; font-weight: 600; }
  .indoor-quick-find .select { width: 100%; min-height: 46px; font-size: 1rem; background-color: var(--color-base-100); border-color: color-mix(in srgb,var(--color-base-content) 35%,var(--color-base-100)); }
  .indoor-viewport { height: 420px; }
  .indoor-pan-hint { padding-inline: 1rem; }
  .is-enhanced .indoor-plan-column:not(:has(.indoor-plan.is-detail-view)) .indoor-code-note { padding-inline: 1rem; }
  .indoor-plan-footer, .indoor-footnote { padding: .75rem 1rem; }
  .indoor-map-legend { gap: .75rem; }
  .indoor-detail { flex-wrap: wrap; gap: .875rem; padding: 1rem; }
  .indoor-copy { width: 100%; }
  .indoor-directory { display: block; padding: 1.25rem 1rem; }
  .indoor-facility-directory { margin-top: 1.5rem; }
  .indoor-useful-notes { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--color-base-300); }
  .indoor-facility-list { grid-template-columns: 1fr 1fr; column-gap: .75rem; }
  .indoor-facility-choice.btn { gap: .5rem; padding-inline: .25rem; }
  .indoor-facility-choice .indoor-choice-arrow { display: none; }
  .indoor-expanded .indoor-viewport { height: max(360px,55dvh); }
}
@media (max-width: 359px) {
  .indoor-facility-list { grid-template-columns: 1fr; }
}
@media print {
  .indoor-floor { display: block !important; break-inside: avoid; }
  .indoor-plan { width: 100% !important; min-width: 0; --indoor-room-font-size: 22px !important; --indoor-programme-font-size: 18px !important; }
  .indoor-plan .indoor-room-label { font-size: var(--indoor-room-font-size) !important; }
  .indoor-programme-label { y: 16px; }
  .indoor-marker-content, .indoor-service .indoor-marker-content, .indoor-context-label, .indoor-street-label-content { transform: none; }
  .indoor-compact-label { display: none !important; }
  .indoor-full-label { display: block !important; }
  .indoor-context { display: block !important; }
  .indoor-viewport { display: block; height: auto; overflow: visible; }
  .indoor-tools, .indoor-floor-picker, .indoor-directory, .indoor-quick-find, .indoor-code-note, .indoor-copy { display: none !important; }
}
