.smv-overlay {
  --smv-paper: var(--ui-bg, #f4f7f5);
  --smv-surface: var(--ui-surface, #ffffff);
  --smv-ink: var(--ui-ink, #243b3a);
  --smv-muted: #5f726e;
  --smv-line: var(--ui-line, #dce5e1);
  --smv-primary: var(--ui-primary, #23766d);
  --smv-accent: var(--smv-primary);
  --smv-accent-hover: #195e57;
  --smv-soft: #e8f2ed;
  --smv-price: #195e57;
  --smv-selected: #f7e5c6;
  --smv-selected-ink: #79521e;
  position: fixed;
  inset: 0;
  z-index: 20000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  overflow: hidden;
  background: #1e263d47;
  backdrop-filter: blur(5px);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Microsoft YaHei", sans-serif;
  color: var(--smv-ink);
}
.smv-overlay *, .smv-overlay *::before, .smv-overlay *::after { box-sizing: border-box; }
.smv-overlay [hidden] { display: none !important; }
.smv-dialog {
  position: relative;
  display: flex;
  flex-direction: column;
  width: min(1480px, 100%);
  height: min(960px, calc(100vh - 40px));
  height: min(960px, calc(100dvh - 40px));
  min-height: 0;
  overflow: hidden;
  border: 1px solid #ffffffb3;
  border-radius: 22px;
  background: var(--smv-paper);
  box-shadow: 0 24px 80px #19212d29, 0 2px 12px #19212d0a;
}
.smv-head, .smv-top, .smv-note, .smv-mobile-nav { flex: none; }
.smv-head { display: flex; align-items: center; gap: 14px; padding: 20px 24px; border-bottom: 1px solid var(--smv-line); background: #ffffffed; }
.smv-head > div { min-width: 0; }
.smv-head h2 { margin: 0; font-size: 22px; line-height: 1.35; font-weight: 750; letter-spacing: .02em; }
.smv-head p { margin: 5px 0 0; color: var(--smv-muted); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.smv-head [data-close] { flex: none; white-space: nowrap; }
.smv-spacer { flex: 1; }
.smv-admin { display: inline-flex; flex: none; padding: 5px 9px; border: 1px solid #d5e5dc; border-radius: 7px; color: #466b60; background: #edf5f0; font-size: 11px; white-space: nowrap; }
.smv-overlay button, .smv-overlay select, .smv-overlay input { font: inherit; font-size: 14px; }
.smv-overlay button { min-height: 40px; padding: 8px 12px; border: 1px solid #dce5e1; border-radius: 10px; color: var(--smv-ink); background: var(--smv-surface); line-height: 1.4; cursor: pointer; transition: background-color .15s, border-color .15s, box-shadow .15s; }
.smv-overlay button:hover { border-color: #92b7aa; background: #edf5f0; }
.smv-overlay button:disabled { opacity: .5; cursor: default; }
.smv-overlay button:focus-visible, .smv-overlay input:focus-visible, .smv-overlay select:focus-visible, .smv-overlay [tabindex]:focus-visible, .smv-overlay summary:focus-visible { outline: 3px solid #23766d; outline-offset: 2px; }
.smv-overlay .smv-primary { color: white; border-color: var(--smv-accent); background: var(--smv-accent); box-shadow: 0 3px 8px #195e571a; }
.smv-overlay .smv-primary:hover { border-color: var(--smv-accent-hover); background: var(--smv-accent-hover); }
.smv-overlay input, .smv-overlay select { min-width: 0; min-height: 44px; padding: 10px 12px; border: 1px solid #dce5e1; border-radius: 11px; color: var(--smv-ink); background: #fff; transition: border-color .15s, box-shadow .15s; }
.smv-overlay input:focus, .smv-overlay select:focus { border-color: #87b5a3; box-shadow: 0 0 0 3px #23766d0d; }
.smv-overlay input::placeholder { color: #5f726e; opacity: 1; }
.smv-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 11px 24px; background: var(--smv-surface); }
.smv-top > label { display: flex; align-items: center; gap: 9px; color: var(--smv-muted); font-size: 13px; }
.smv-top select { min-width: 150px; }
.smv-top .smv-show-field { flex: 0 1 310px; min-width: 0; }
.smv-top .smv-show-field select { flex: 1; width: 100%; min-width: 150px; max-width: 270px; text-overflow: ellipsis; }
.smv-top .smv-date-field { flex: none; }
.smv-top .smv-shows-error { display: flex; align-items: center; flex-basis: 100%; gap: 8px; color: #815e2e; font-size: 12px; }
.smv-shows-error button { flex: none; min-height: 36px; padding: 5px 9px; font-size: 12px; }
.smv-source-status { display: flex; flex: 1; align-items: center; justify-content: center; }
.smv-top a { padding: 8px 0; text-underline-offset: 3px; }
.smv-view-tabs { display: flex; flex: none; gap: 3px; padding: 3px; border: 1px solid #dce5e1; border-radius: 12px; background: #eef0f2; }
.smv-view-tabs button { min-height: 36px; border-color: transparent; border-radius: 8px; color: #5f726e; background: transparent; }
.smv-view-tabs button.active { border-color: #ffffff; color: var(--smv-accent-hover); background: #ffffff; box-shadow: 0 1px 5px #1c25321a; }
.smv-view-tabs button.active:hover { color: var(--smv-accent-hover); background: #fafbfc; }
.smv-note { margin: 0; padding: 8px 24px; border-top: 1px solid #e3ece6; border-bottom: 1px solid #dce5e1; background: #e8f2ed; color: #526b61; font-size: 12px; line-height: 1.6; }
.smv-note.warn { background: #faf0df; color: #815e2e; border-color: #ecdfc8; }
.smv-mobile-nav, .smv-mobile-selection { display: none; }
.smv-overlay [data-open-sections], .smv-overlay [data-return-map] { display: none; }
.smv-map-actions [data-viewer][aria-pressed='true'] { color: #195e57; background: #e0eee6; border-color: #aac9bb; }
.smv-section-sheet { position: absolute; inset: 0; z-index: 8; display: flex; flex-direction: column; justify-content: flex-end; }
.smv-sheet-backdrop { position: absolute; inset: 0; background: #1d3e364d; backdrop-filter: blur(2px); }
.smv-sheet-content { position: relative; display: flex; flex-direction: column; min-height: 0; max-height: min(70dvh, 650px); padding: 0 0 env(safe-area-inset-bottom, 0px); border: 1px solid #dce5e1; border-bottom: 0; border-radius: 22px 22px 0 0; background: #ffffff; box-shadow: 0 -12px 45px #1c453822; }
.smv-sheet-content::before { content: ''; width: 34px; height: 4px; flex: none; margin: 8px auto 0; border-radius: 4px; background: #b6c9bf; }
.smv-sheet-head { display: flex; align-items: center; justify-content: space-between; flex: none; gap: 12px; padding: 8px 16px 12px; }
.smv-sheet-head > strong { color: #294c41; font-size: 17px; }
.smv-sheet-head button { min-width: 44px; min-height: 44px; padding: 8px 11px; color: #466b60; background: #f1f6f2; border-color: #e1e9e3; }
.smv-section-sheet .smv-section-panel { display: flex; flex-direction: column; flex: 1; min-height: 0; margin: 0; padding: 0 14px 14px; border: 0; border-radius: 0; background: transparent; }
.smv-section-sheet .smv-section-panel > summary { display: none; }
.smv-section-sheet .smv-section-bar { display: flex; flex-direction: column; min-height: 0; padding: 0; background: transparent; }
.smv-section-sheet .smv-section-bar label { flex: none; }
.smv-section-sheet .smv-section-bar [data-section-buttons] { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: calc(70dvh - 160px - env(safe-area-inset-bottom, 0px)); overflow: auto; }
.smv-body { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(380px, 1fr); flex: 1; min-height: 0; overflow: hidden; }
.smv-map-pane { position: relative; display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; border-right: 1px solid var(--smv-line); }
.smv-map-actions { display: flex; align-items: center; flex: none; flex-wrap: wrap; gap: 8px; padding: 11px 16px; border-bottom: 1px solid #e1e9e3; background: #f4f7f5; }
.smv-map-actions strong { color: #355b4f; font-size: 14px; font-weight: 650; overflow-wrap: anywhere; }
.smv-map-actions span { font-size: 12px; color: var(--smv-muted); }
.smv-map-actions button { min-height: 36px; padding: 7px 10px; font-size: 12px; }
.smv-map { position: relative; flex: 1; min-height: 0; overflow: hidden; background: radial-gradient(ellipse at center, #ffffff 8%, #e8efea 90%); }
.smv-map svg { display: block; width: 100%; height: 100%; min-height: 0; }
.smv-map > .smv-plan { touch-action: none; cursor: grab; user-select: none; -webkit-user-select: none; }
.smv-map.smv-plan-dragging > .smv-plan, .smv-map.smv-plan-dragging .smv-zone { cursor: grabbing; }
.smv-plan-controls { position: absolute; right: 12px; bottom: 12px; z-index: 2; display: flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid #d5e3da; border-radius: 12px; background: #fffffff2; box-shadow: 0 3px 14px #1c453814; }
.smv-overlay .smv-plan-controls button { min-width: 40px; min-height: 40px; padding: 5px; border: 0; border-radius: 8px; font-size: 21px; line-height: 1; }
.smv-plan-controls output { min-width: 41px; color: var(--smv-ink); text-align: center; font-size: 11px; font-variant-numeric: tabular-nums; }
.smv-map canvas { outline: none; }
.smv-overlay canvas { display: block; width: 100%; height: 100%; touch-action: none; }
.smv-map .smv-zone { stroke: #ffffff; stroke-width: 3; transition: fill .15s, stroke .15s; cursor: pointer; }
.smv-map .smv-zone:hover { stroke: #23766d; stroke-width: 5; }
.smv-map .smv-zone.selected { stroke: #a77329; stroke-width: 5; }
.smv-map .smv-map-label { font-family: system-ui, sans-serif; fill: var(--smv-ink); font-size: 13px; font-weight: 650; text-anchor: middle; paint-order: stroke; stroke: #ffffff; stroke-width: 3px; stroke-linejoin: round; pointer-events: none; }
.smv-map .smv-price-label { font-size: 12px; fill: var(--smv-price); }
.smv-map .smv-stage { fill: #2e4b46; stroke: #edf3ef; stroke-width: 4; }
.smv-map .smv-stage-label { fill: white; font-size: 18px; text-anchor: middle; pointer-events: none; font-weight: bold; }
.smv-map .smv-plan-readable .smv-map-label { font-size: 20px; }
.smv-map .smv-plan-readable .smv-price-label { font-size: 18px; }
.smv-map .smv-plan-readable .smv-stage-label { font-size: 22px; }
.smv-map-hint { flex: none; padding: 8px 16px; border-top: 1px solid #e1e9e3; background: #f4f7f5; color: #5f726e; font-size: 11px; line-height: 1.5; }
.smv-legend { display: flex; flex: none; flex-wrap: wrap; gap: 7px 16px; padding: 9px 16px; background: #ffffff; color: #5f726e; font-size: 11px; }
.smv-dot { display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 3px; }
.smv-list-pane { display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; background: #f3f4f6; }
.smv-results-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) 142px; align-items: center; flex: none; gap: 8px; padding: 16px 18px 12px; background: #ffffff; }
.smv-results-toolbar > input, .smv-results-toolbar > select { width: 100%; font-size: 13px; }
.smv-results-toolbar .smv-search { background: #f3f4f6; }
.smv-refine-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; flex: none; gap: 8px; min-width: 0; padding: 0 18px 8px; }
.smv-refine-row > .smv-section-panel { margin: 0; }
.smv-refine-row > .smv-filter-toggle { min-height: 44px !important; padding: 8px 10px !important; border: 1px solid #d6e3da !important; border-radius: 10px !important; background: #edf4ef !important; white-space: nowrap; }
.smv-refine-row:has(> .smv-section-panel[open]) > .smv-section-panel { grid-column: 1 / -1; grid-row: 1; }
.smv-refine-row:has(> .smv-section-panel[open]) > .smv-section-panel > summary { padding-right: 100px; }
.smv-refine-row:has(> .smv-section-panel[open]) > .smv-filter-toggle { grid-column: 2; grid-row: 1; z-index: 1; margin: 1px; }
.smv-section-panel { flex: none; min-width: 0; margin: 0 18px; padding: 0; border: 1px solid #dce5e1; border-radius: 11px; background: #fff; overflow: hidden; }
.smv-section-panel > summary { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 12px; font-size: 13px; color: #355e50; list-style: none; cursor: pointer; }
.smv-section-panel > summary::-webkit-details-marker { display: none; }
.smv-section-panel > summary::after { content: '⌄'; flex: none; margin-left: auto; color: #5f726e; font-size: 17px; line-height: 1; transition: transform .15s; }
.smv-section-panel[open] > summary::after { transform: rotate(180deg); }
.smv-section-panel > summary strong { font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.smv-section-panel > summary span, .smv-section-panel > summary small { font-size: 12px; color: #5f726e; }
.smv-section-bar { flex: none; padding: 2px 11px 10px; background: white; }
.smv-section-bar label { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #5f726e; }
.smv-section-bar input { flex: 1; width: 100%; min-height: 38px; padding: 8px 9px; font-size: 13px; background: #f4f7f5; }
.smv-section-bar [data-section-buttons] { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 7px; max-height: clamp(100px, 20vh, 190px); margin-top: 10px; padding: 1px 3px 3px 1px; overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #b6c9bf transparent; }
.smv-section-bar [data-pick] { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 3px; min-width: 0; min-height: 62px; padding: 10px; border-color: #dce5e1; border-radius: 11px; background: #f9fbf9; text-align: left; }
.smv-section-bar [data-pick]:hover { border-color: #8db2a1; background: #edf6ef; }
.smv-section-bar [data-pick] strong { max-width: 100%; overflow-wrap: anywhere; }
.smv-section-bar [data-pick] strong { font-size: 14px; }
.smv-section-bar [data-pick] span { font-size: 11px; line-height: 1.4; color: #5f726e; }
.smv-section-bar [data-pick] small { font-size: 10px; color: #79521e; }
.smv-section-bar [data-pick].active { border-color: #bf9045; color: var(--smv-selected-ink); background: #f7e5c6; box-shadow: inset 0 0 0 1px #bf904522; }
.smv-section-bar [data-pick].active span, .smv-section-bar [data-pick].active small { color: var(--smv-selected-ink); }
.smv-filters { flex: none; padding: 0 18px; }
.smv-filter-toggle { display: inline-flex; align-items: center; gap: 7px; min-height: 38px !important; padding: 6px 2px !important; border-color: transparent !important; border-radius: 6px !important; color: #5f726e !important; background: transparent !important; font-size: 12px !important; }
.smv-filter-toggle[aria-expanded=true] { color: #195e57 !important; }
.smv-filter-fields { display: flex; align-items: end; flex-wrap: wrap; gap: 8px; padding: 4px 0 12px; }
.smv-filter-fields > span { align-self: center; padding-top: 18px; color: var(--smv-muted); }
.smv-filter-fields label { flex: 1; min-width: 0; color: #5f726e; font-size: 12px; }
.smv-filter-fields input { width: 100%; min-width: 0; margin-top: 4px; }
.smv-filter-fields > input { flex: 1; width: 90px; }
.smv-filter-fields button { flex: none; font-size: 12px; }
.smv-filter-error { flex-basis: 100%; margin: 0; color: #a45539; font-size: 12px; line-height: 1.5; }
.smv-count { display: flex; align-items: center; flex: none; flex-wrap: wrap; gap: 6px; padding: 2px 18px 12px; font-size: 12px; line-height: 1.5; color: #5f726e; }
.smv-count strong { font-size: 14px; font-weight: 700; color: #294c41; }
.smv-count-main { display: flex; align-items: baseline; flex-wrap: wrap; gap: 7px; flex-basis: 100%; }
.smv-active-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; flex-basis: 100%; min-width: 0; }
.smv-updated { flex-basis: 100%; color: #5f726e; font-size: 10px; line-height: 1.5; }
.smv-count button { min-height: 30px; padding: 4px 8px; font-size: 11px; border-color: #d3e3d9; color: #2e6c58; background: #e8f2ed; }
.smv-count .smv-filter-chip { display: inline-flex; align-items: center; max-width: 100%; padding: 5px 9px; border: 1px solid #d5e5da; border-radius: 20px; color: #355e50; background: #e8f2ed; overflow-wrap: anywhere; }
.smv-list { flex: 1; min-height: 0; overflow: auto; padding: 0 16px 14px; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #b6c9bf transparent; }
.smv-ticket { margin: 0 0 12px; padding: 18px; border: 1px solid #e1e5e8; border-radius: 16px; background: #ffffff; box-shadow: 0 2px 7px #1c253205; transition: border-color .15s, box-shadow .15s; }
.smv-ticket:focus-within { border-color: #87b5a3; box-shadow: 0 0 0 2px #23766d0a; }
.smv-ticket:last-child { margin-bottom: 0; }
.smv-ticket:hover { border-color: #aac9bb; box-shadow: 0 5px 16px #1e493a0d; }
.smv-ticket-top { display: flex; align-items: flex-start; gap: 12px; }
.smv-ticket-top strong { min-width: 0; font-size: 18px; line-height: 1.5; font-weight: 700; color: #243b3a; overflow-wrap: anywhere; }
.smv-ticket-price { flex: none; margin-left: auto; font-size: 24px !important; line-height: 1.3; letter-spacing: -.035em; color: var(--smv-price); white-space: nowrap; font-variant-numeric: tabular-nums; }
.smv-ticket-price small, .smv-ticket-price .smv-currency { margin-right: 2px; font-size: 14px; font-weight: 500; letter-spacing: 0; }
.smv-ticket-meta { display: flex; flex-wrap: wrap; gap: 7px; margin: 12px 0 9px; font-size: 12px; color: #5f726e; }
.smv-ticket-meta span { padding: 5px 8px; border: 1px solid #eceff1; border-radius: 7px; background: #f5f6f7; overflow-wrap: anywhere; }
.smv-ticket-meta span:nth-child(n+2) { color: #46545c; background: #f1f3f5; font-weight: 600; }
.smv-ticket p { margin: 9px 0; font-size: 12px; line-height: 1.7; color: #5f726e; overflow-wrap: anywhere; }
.smv-ticket-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 14px; padding-top: 12px; border-top: 1px solid #e7eee9; }
.smv-ticket-actions button { min-height: 40px; padding: 8px 10px; border-color: #e0e5e8; border-radius: 10px; color: #296b5a; background: #fafbfc; font-size: 12px; }
.smv-ticket-actions [data-copy] { margin-left: auto; color: var(--smv-primary); background: #e8f2ed; border-color: #bcd7c9; font-weight: 650; }
.smv-ticket-actions [data-copy]:hover { background: #dcece2; border-color: #8db2a1; }
.smv-ticket-actions small { color: #5f726e; font-size: 10px; font-variant-numeric: tabular-nums; }
.smv-ticket-unmapped { flex: 1; color: #79521e; font-size: 12px; }
.smv-pages { display: flex; align-items: center; justify-content: space-between; flex: none; gap: 10px; padding: 12px 18px; border-top: 1px solid #dce5e1; background: #ffffff; box-shadow: 0 -4px 14px #1e493a05; color: #5f726e; font-size: 12px; }
.smv-pages button { min-width: 88px; min-height: 40px; font-size: 13px; }
.smv-pages span { font-variant-numeric: tabular-nums; white-space: nowrap; }
.smv-empty { padding: 38px 24px; color: var(--smv-muted); text-align: center; font-size: 13px; line-height: 1.9; overflow-wrap: anywhere; }
.smv-empty strong { display: block; margin-bottom: 10px; color: var(--smv-ink); font-size: 18px; }
.smv-status { min-height: 0; padding: 30px; overflow: auto; color: #526b61; }
.smv-status button { margin-top: 15px; }
.smv-load-error { display: flex; align-items: center; gap: 10px; flex: none; margin: 0; padding: 9px 18px; border-bottom: 1px solid #edddc5; color: #8a6031; background: #fcf3e6; font-size: 12px; line-height: 1.5; }
.smv-load-error > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.smv-load-error button { flex: none; }
.smv-body > .smv-empty { grid-column: 1 / -1; align-self: center; overflow: auto; max-height: 100%; }
.smv-3d-labels { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.smv-map .smv-3d-labels button { position: absolute; transform: translate(-50%, -50%); min-height: 30px; padding: 4px 7px; border: 1px solid #c7d8ce; border-radius: 7px; background: #ffffffed; color: var(--smv-ink); box-shadow: 0 3px 10px #1c44371c; font-size: 12px; font-weight: 600; white-space: nowrap; pointer-events: auto; }
.smv-map .smv-3d-labels button:hover { background: #e8f2ed; border-color: #8db2a1; }
.smv-map .smv-3d-labels button.selected { border: 2px solid #b18338; background: var(--smv-selected); color: var(--smv-selected-ink); box-shadow: 0 3px 10px #65451f20; }
.smv-live { position: absolute; bottom: 14px; left: 50%; z-index: 3; max-width: calc(100% - 32px); transform: translateX(-50%); padding: 10px 16px; border-radius: 10px; background: #244c40; color: white; font-size: 13px; box-shadow: 0 5px 20px #173c3225; pointer-events: none; }
.smv-entry { background: #e8f2ed !important; color: #23766d !important; border: 1px solid #aac9bb !important; }
.smv-entry:hover { background: #dcece2 !important; border-color: #8db2a1 !important; }
.smv-map:fullscreen { height: 100dvh !important; width: 100vw !important; background: #f4f7f5; }
.smv-reference-status { display: flex; align-items: center; flex: none; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 9px 14px; border-top: 1px solid #dce5e1; background: #e8f2ed; color: #526b61; font-size: 12px; }
.smv-reference-status > div { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.smv-reference-status a { color: var(--smv-accent); }
.smv-reference-status small { width: 100%; color: var(--smv-muted); font-size: 11px; }
.smv-ref-muted { color: var(--smv-muted); font-size: 12px; }
@media (min-width: 761px) and (max-width: 1080px) {
  .smv-overlay { padding: 12px; }
  .smv-dialog { height: calc(100dvh - 24px); }
  .smv-body { grid-template-columns: minmax(0, 1fr) minmax(340px, .95fr); }
  .smv-head, .smv-top { padding-left: 18px; padding-right: 18px; }
  .smv-map-actions [data-selected] { flex-basis: 100%; }
  .smv-map-actions .smv-spacer { display: none; }
  .smv-map-actions button { flex: 1; padding-inline: 6px; }
  .smv-results-toolbar { grid-template-columns: minmax(0, 1fr) 130px; padding-inline: 14px; }
  .smv-section-panel { margin-inline: 14px; }
  .smv-refine-row { padding-inline: 14px; }
  .smv-filters, .smv-count, .smv-pages { padding-left: 14px; padding-right: 14px; }
  .smv-list { padding-inline: 12px; }
  .smv-ticket { padding: 13px; }
}
@media (max-width: 760px) {
  .smv-plan-controls { right: 10px; bottom: 10px; }
  .smv-overlay .smv-plan-controls button { min-width: 44px; min-height: 44px; }
  /* SVG units scale with the plan: keep district names readable on phones. */
  .smv-map .smv-plan-readable .smv-map-label { font-size: 32px; }
  .smv-map .smv-plan-readable .smv-price-label { font-size: 26px; }
  .smv-map .smv-plan-readable .smv-stage-label { font-size: 30px; }
  .smv-overlay { padding: 0; backdrop-filter: none; }
  .smv-dialog { width: 100%; height: 100vh; height: 100dvh; max-height: 100dvh; border: 0; border-radius: 0; }
  .smv-head { gap: 8px; padding: calc(10px + env(safe-area-inset-top, 0px)) max(14px, env(safe-area-inset-right, 0px)) 10px max(14px, env(safe-area-inset-left, 0px)); }
  .smv-head > div { flex: 1; }
  .smv-head .smv-spacer, .smv-head .smv-admin { display: none; }
  .smv-head h2 { font-size: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .smv-head p { margin-top: 3px; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .smv-head [data-close] { min-width: 44px; padding: 9px 10px; font-size: 12px; }
  .smv-overlay button { min-height: 44px; }
  .smv-overlay input, .smv-overlay select { min-height: 44px; font-size: 16px; }
  .smv-top { display: grid; grid-template-columns: minmax(0, 1fr) auto 44px; gap: 7px; padding: 8px max(12px, env(safe-area-inset-right, 0px)) 8px max(12px, env(safe-area-inset-left, 0px)); }
  .smv-top > label { min-width: 0; gap: 5px; font-size: 12px; white-space: nowrap; }
  .smv-top > label select { flex: 1; min-width: 0; width: calc(100% - 29px); padding: 9px 6px; }
  .smv-top.smv-has-show > .smv-show-field { grid-column: 1 / -1; width: 100%; }
  .smv-top.smv-has-show > .smv-show-field select { min-width: 0; max-width: none; }
  .smv-top.smv-has-show > .smv-date-field { grid-column: 1; }
  .smv-top.smv-has-show > .smv-shows-error { grid-column: 1 / -1; }
  .smv-top .smv-spacer, .smv-top a { display: none; }
  .smv-view-tabs { gap: 2px; padding: 2px; border-radius: 10px; }
  .smv-view-tabs button { width: 44px; min-height: 44px; padding: 7px 5px; font-size: 0; }
  .smv-view-tabs button::before { font-size: 13px; font-weight: 650; }
  .smv-view-tabs [data-view='3d']::before { content: '3D'; }
  .smv-view-tabs [data-view='2d']::before { content: '2D'; }
  .smv-top [data-refresh] { min-width: 44px; padding: 6px; font-size: 0; }
  .smv-top [data-refresh]::before { content: '↻'; font-size: 24px; font-weight: 400; }
  .smv-note { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; padding: 6px 12px; font-size: 11px; line-height: 1.5; }
  .smv-note:not(.warn) { display: none; }
  .smv-mobile-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; margin: 0 12px 8px; padding: 3px; border: 1px solid #e4e7eb; border-radius: 13px; background: #eef0f2; }
  .smv-mobile-nav button { min-height: 44px; border-color: transparent; border-radius: 10px; background: transparent; color: #5f726e; font-size: 13px; font-weight: 600; }
  .smv-mobile-nav button[aria-selected='true'], .smv-mobile-nav button.active { color: #195e57; border-color: #ffffff; background: #ffffff; box-shadow: 0 1px 5px #1c25321a; }
  .smv-body { display: flex; flex: 1; min-height: 0; overflow: hidden; }
  .smv-map-pane, .smv-list-pane { flex: 1; width: 100%; min-height: 0; height: auto; border: 0; }
  .smv-overlay[data-mobile-pane='map'] .smv-list-pane, .smv-overlay[data-mobile-pane='tickets'] .smv-map-pane { display: none; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-note:not(.warn), .smv-overlay[data-mobile-pane='tickets'] .smv-view-tabs { display: none; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-top { grid-template-columns: minmax(0, 1fr) 44px; }
  .smv-map-actions { position: absolute; inset: 10px 10px auto; z-index: 2; flex-wrap: nowrap; gap: 5px; padding: 5px; border: 1px solid #d5e3dacc; border-radius: 13px; background: #fffffff0; backdrop-filter: blur(10px); box-shadow: 0 4px 18px #1c453814; }
  .smv-map-actions [data-selected], .smv-map-actions .smv-spacer, .smv-map-actions > span, .smv-map-actions [data-clear] { display: none; }
  .smv-map-actions button { flex: 1; min-height: 44px; padding: 8px 5px; font-size: 12px; white-space: nowrap; }
  .smv-overlay [data-open-sections], .smv-overlay [data-return-map] { display: block; }
  .smv-map, .smv-map svg { min-height: 0; }
  .smv-legend { gap: 5px 10px; padding: 7px 12px; font-size: 10px; }
  .smv-map-hint { padding: 5px 12px; font-size: 10px; }
  .smv-mobile-selection { position: relative; display: flex; align-items: center; justify-content: space-between; flex: none; gap: 10px; padding: 16px max(14px, env(safe-area-inset-right, 0px)) calc(12px + env(safe-area-inset-bottom, 0px)) max(14px, env(safe-area-inset-left, 0px)); border-top: 1px solid #dce5e1; border-radius: 18px 18px 0 0; background: #ffffff; box-shadow: 0 -5px 22px #1e493a0d; }
  .smv-mobile-selection::before { content: ''; position: absolute; top: 6px; left: calc(50% - 16px); width: 32px; height: 3px; border-radius: 3px; background: #c4d4ca; }
  .smv-mobile-selection > div { min-width: 0; }
  .smv-mobile-selection strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #355e50; font-size: 16px; }
  .smv-mobile-selection small { display: block; margin-bottom: 3px; color: #5f726e; font-size: 10px; line-height: 1.4; }
  .smv-mobile-selection span { display: block; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #195e57; font-size: 13px; line-height: 1.4; font-weight: 600; }
  .smv-mobile-selection [data-show-tickets] { flex: none; min-width: 140px; min-height: 46px; padding: 10px 13px; color: white; border-color: #23766d; border-radius: 11px; background: #23766d; font-size: 13px; font-weight: 650; }
  .smv-results-toolbar { grid-template-columns: minmax(0, 1fr) 140px; padding: 11px 12px 9px; gap: 7px; }
  .smv-results-toolbar > input, .smv-results-toolbar > select { font-size: 16px; padding-inline: 9px; }
  .smv-section-panel { margin: 0 12px; border-radius: 10px; }
  .smv-refine-row { gap: 7px; padding: 0 12px 8px; }
  .smv-section-panel > summary { min-height: 44px; padding: 10px 11px; font-size: 13px; }
  .smv-section-bar { padding: 1px 10px 9px; }
  .smv-section-bar input { min-height: 44px; font-size: 16px; }
  .smv-section-bar [data-section-buttons] { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: min(190px, 25dvh); margin-top: 8px; }
  .smv-section-bar [data-pick] { min-height: 58px; padding: 8px; }
  .smv-filters { padding: 0 12px; }
  .smv-filter-toggle { min-height: 44px !important; padding: 8px 2px !important; font-size: 12px !important; }
  .smv-filter-fields { gap: 7px; padding-bottom: 10px; }
  .smv-filter-fields button { min-height: 44px; }
  .smv-count { padding: 0 12px 9px; gap: 5px; font-size: 11px; }
  .smv-count strong { font-size: 13px; }
  .smv-count button { min-height: 44px !important; padding: 7px 8px !important; font-size: 12px !important; }
  .smv-list { min-height: 0; overflow: auto; padding: 0 11px 12px; -webkit-overflow-scrolling: touch; }
  .smv-ticket { padding: 14px; margin-bottom: 10px; border-radius: 16px; }
  .smv-ticket-top strong { font-size: 17px; }
  .smv-ticket-price { font-size: 24px !important; }
  .smv-ticket-meta { margin-top: 10px; gap: 6px; }
  .smv-ticket-actions { gap: 6px; margin-top: 12px; padding-top: 10px; }
  .smv-ticket-actions button { min-height: 44px; padding: 8px 9px; font-size: 12px; }
  .smv-ticket-actions [data-copy] { padding-inline: 12px; }
  .smv-ticket-actions small { flex-basis: 100%; text-align: right; }
  .smv-pages { padding: 9px max(12px, env(safe-area-inset-right, 0px)) calc(9px + env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px)); }
  .smv-pages button { min-height: 44px; min-width: 90px; }
  .smv-pages:has([data-return-map]) { display: grid; grid-template-columns: 50px minmax(0, 1fr) auto minmax(0, 1fr); gap: 6px; }
  .smv-pages:has([data-return-map]) button { min-width: 0; padding-inline: 6px; font-size: 12px; }
  .smv-pages [data-return-map] { grid-column: 1; grid-row: 1; color: #23766d; background: #e8f2ed; }
  .smv-pages:has([data-return-map]) [data-prev] { grid-column: 2; grid-row: 1; }
  .smv-pages:has([data-return-map]) > span { grid-column: 3; grid-row: 1; padding: 0 2px; text-align: center; font-size: 11px; }
  .smv-pages:has([data-return-map]) [data-next] { grid-column: 4; grid-row: 1; }
  .smv-live { bottom: calc(80px + env(safe-area-inset-bottom, 0px)); padding: 9px 13px; font-size: 12px; }
  .smv-map .smv-3d-labels button { min-height: 32px; padding: 4px 7px; border-radius: 8px; font-size: 11px; box-shadow: 0 2px 7px #1c443718; }
  .smv-map .smv-3d-labels button.selected { min-height: 36px; padding: 5px 8px; font-size: 12px; font-weight: 700; }
  .smv-body > .smv-empty { width: 100%; }
}
@media (max-width: 360px) {
  .smv-top { gap: 5px; padding-inline: 10px; }
  .smv-top > label { font-size: 0; gap: 0; }
  .smv-top > label select { width: 100%; }
  .smv-view-tabs button { width: 44px; }
  .smv-results-toolbar { grid-template-columns: minmax(0, 1fr) 128px; }
  .smv-ticket-actions button { flex: 1; padding-inline: 5px; font-size: 11px; }
  .smv-ticket-actions [data-copy] { margin-left: 0; }
  .smv-mobile-selection [data-show-tickets] { min-width: 128px; font-size: 12px; }
}
@media (max-width: 760px) and (max-height: 700px) {
  /* Let expanded filters and every ticket remain reachable on short screens. */
  .smv-overlay[data-mobile-pane='tickets'] .smv-list-pane { overflow-y: auto; overscroll-behavior: contain; scroll-padding-block: 8px 76px; scrollbar-width: thin; scrollbar-color: #b6c9bf transparent; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-list { flex: none; overflow: visible; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-pages { position: sticky; bottom: 0; z-index: 3; margin-top: auto; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-head { padding-top: calc(6px + env(safe-area-inset-top, 0px)); padding-bottom: 6px; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-head p { display: none; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-top { padding-top: 6px; padding-bottom: 6px; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-mobile-nav { padding-top: 4px; padding-bottom: 4px; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-results-toolbar { padding-top: 6px; padding-bottom: 6px; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-count { padding-bottom: 6px; gap: 4px; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-updated { display: none; }
  .smv-overlay[data-mobile-pane='tickets'] .smv-pages { padding-top: 6px; padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 760px) and (max-height: 620px) {
  .smv-head { padding-top: calc(6px + env(safe-area-inset-top, 0px)); padding-bottom: 6px; }
  .smv-head p, .smv-map-hint { display: none; }
  .smv-note:not(.warn) { display: none; }
  .smv-mobile-nav { padding-top: 4px; padding-bottom: 4px; }
  .smv-map-actions { padding-top: 4px; padding-bottom: 4px; }
  .smv-mobile-selection { padding-top: 13px; padding-bottom: calc(7px + env(safe-area-inset-bottom, 0px)); }
  .smv-section-bar [data-section-buttons] { max-height: 110px; }
}
@media (max-height: 520px) {
  .smv-head { padding-top: calc(6px + env(safe-area-inset-top, 0px)); padding-bottom: 6px; }
  .smv-head h2 { font-size: 20px; }
  .smv-head p, .smv-note:not(.warn), .smv-map-hint { display: none; }
  .smv-top { padding-top: 5px; padding-bottom: 5px; }
  .smv-sheet-content { max-height: 92dvh; }
  .smv-section-sheet .smv-section-bar [data-section-buttons] { max-height: calc(92dvh - 150px - env(safe-area-inset-bottom, 0px)); }
  .smv-map-pane { overflow-y: auto; overscroll-behavior: contain; }
  .smv-map { flex: none; height: clamp(150px, calc(100dvh - 235px), 250px); min-height: 150px; }
  .smv-map-actions { position: sticky; top: 0; inset-inline: 0; flex: none; gap: 5px; padding-top: 6px; padding-bottom: 6px; }
  .smv-mobile-selection { position: sticky; bottom: 0; z-index: 2; }
  .smv-list-pane { overflow-y: auto; overscroll-behavior: contain; scroll-padding-block: 8px 76px; }
  .smv-list { flex: none; overflow: visible; }
  .smv-pages { position: sticky; bottom: 0; z-index: 3; margin-top: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .smv-overlay *, .smv-overlay *::before, .smv-overlay *::after { transition: none !important; }
}
