/* The interactive event map: pins, areas and routes, the console editor and the public page (static/js/event-map*.js). */
.em-map { width: 100%; height: 70vh; min-height: 420px; border-radius: 14px; border: 1px solid rgb(128 128 128 / .35); overflow: hidden; background: #1c1d21; }
.map-pin { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 1px 5px rgb(0 0 0 / .55);
  color: #fff; font: 700 13px/1 system-ui, sans-serif; background: #6b7280; }
.map-pin--offsite { border-style: dashed; }
.map-pin.is-selected { outline: 3px solid #ffc226; outline-offset: 2px; }
.map-pin--venue { background: #ffc226; color: #1b1b1b; width: 36px; height: 36px; font-size: 18px; }
.map-pin--classroom { background: #2f7bd6; } .map-pin--shooting { background: #d9411e; } .map-pin--vendors { background: #8a4fd0; }
.map-pin--camping { background: #2f8f5a; } .map-pin--parking { background: #4b5563; } .map-pin--food { background: #c9731a; }
.map-pin--medical { background: #d11f3d; } .map-pin--restroom { background: #0e8f9a; } .map-pin--lodging { background: #6d5bd0; }
.map-pin--social { background: #c2418f; } .map-pin--manufacturing { background: #b45309; } .map-pin--safety { background: #b91c1c; } .map-pin--seating { background: #3949ab; } .map-pin--other { background: #6b7280; }
.map-vertex { width: 14px; height: 14px; border-radius: 50%; background: #fff; border: 3px solid #2b8cff; box-shadow: 0 0 0 1px rgb(0 0 0 / .5); }
.map-corner { width: 18px; height: 18px; border-radius: 4px; background: #ffc226; border: 2px solid #1b1b1b; }
.em-map.is-placing, .em-map.is-placing .leaflet-grab { cursor: crosshair !important; }
.em-pop b { display: block; margin-bottom: 2px; } .em-pop p { margin: 4px 0; } .em-pop ul { margin: 6px 0 0; padding-left: 18px; }
.em-pop .em-now { color: #d9411e; font-weight: 700; }
/* the console editor */
.em-editor { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 16px; align-items: start; }
.em-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.em-panel[hidden], .em-hint[hidden], .em-results[hidden] { display: none !important; }
.em-search { display: flex; gap: 8px; margin-bottom: 10px; position: relative; }
.em-search input { flex: 1; }
.em-results { position: absolute; z-index: 1000; top: 100%; left: 0; right: 0; margin: 4px 0 0; padding: 4px; list-style: none; border: 1px solid var(--c-border-strong); border-radius: 9px; background: var(--c-raised); box-shadow: var(--c-shadow); max-height: 260px; overflow: auto; }
.em-results li { display: flex; gap: 8px; align-items: center; padding: 6px 8px; } .em-results span { flex: 1; font-size: 13px; }
.em-list { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 4px; max-height: 280px; overflow: auto; }
.em-item { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; padding: 7px 10px; border: 1px solid var(--c-border); border-radius: 9px; background: var(--c-surface); color: var(--c-text); cursor: pointer; font: inherit; }
.em-item.is-on { border-color: var(--c-accent); background: var(--c-accent-soft); }
.em-item .em-dot { width: 10px; height: 10px; border-radius: 50%; background: #6b7280; flex: none; } .em-item .em-dot.is-set { background: #2f8f5a; }
.em-item small { margin-left: auto; color: var(--c-muted); }
.em-hint { padding: 10px 12px; border-radius: 9px; background: var(--c-accent-soft); color: var(--c-accent-text); font-size: 13px; margin-bottom: 10px; }
.em-fields { display: grid; gap: 8px; } .em-fields label { font-weight: 600; font-size: 13px; }
.em-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.em-status { color: var(--c-muted); font-size: 13px; min-height: 1.3em; }
/* the public page: chips in one scrolling row, the map, and a searchable list grouped by kind (2026-10-25) */
.em-public { --em-h: clamp(540px, 76vh, 840px); display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 14px 18px; align-items: start; }
.em-public .em-map { height: var(--em-h); min-height: 0; }
.em-chips { grid-column: 1 / -1; display: flex; flex-wrap: nowrap; gap: 8px; overflow-x: auto; padding: 2px 2px 8px; margin: 0; scrollbar-width: thin; scroll-snap-type: x proximity;
  -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 2rem), transparent); }
.em-chip { flex: none; scroll-snap-align: start; display: inline-flex; align-items: center; gap: 8px; min-height: 38px; padding: 0 14px 0 6px; border-radius: 999px; border: 1px solid rgb(128 128 128 / .45);
  background: transparent; color: inherit; font: 600 14px/1 inherit; cursor: pointer; white-space: nowrap; }
.em-chip .map-pin { width: 24px; height: 24px; font-size: 11px; border-width: 1.5px; box-shadow: none; }
.em-chip small { opacity: .65; font-weight: 600; }
.em-chip[aria-pressed="true"] { background: rgb(255 194 38 / .16); border-color: #ffc226; }
.em-chip[aria-pressed="false"] { opacity: .6; }
.em-chip[aria-pressed="false"] .map-pin { filter: grayscale(1); }
.em-chip--all { padding: 0 16px; border-style: dashed; }
.em-chip--all[hidden] { display: none; }
.em-panel-pub { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 10px; height: var(--em-h); min-height: 0; }
.em-find { display: flex; align-items: center; gap: 8px; padding: 0 12px; min-height: 44px; border-radius: 12px; border: 1px solid rgb(128 128 128 / .45); background: rgb(128 128 128 / .08); }
.em-find svg { width: 1.1rem; height: 1.1rem; flex: none; opacity: .7; }
.em-find input { flex: 1; min-width: 0; border: 0; background: transparent; color: inherit; font: 500 16px/1.2 inherit; outline: 0; padding: 10px 0; }
.em-find:focus-within { border-color: #ffc226; }
.em-side { display: flex; flex-direction: column; gap: 4px; overflow: auto; margin: 0; padding: 0 4px 0 0; list-style: none; min-height: 0; overscroll-behavior: contain; }
.em-group { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 8px; padding: 10px 4px 6px; background: var(--bg, #0a0f1f); font-size: 13px; text-transform: uppercase; letter-spacing: .08em; }
.em-group .map-pin { width: 22px; height: 22px; font-size: 10px; box-shadow: none; }
.em-group small { margin-left: auto; opacity: .6; }
.em-side button { width: 100%; text-align: left; display: flex; gap: 10px; align-items: center; padding: 10px 12px; min-height: 48px; border-radius: 12px; border: 1px solid rgb(128 128 128 / .3); background: transparent; color: inherit; font: inherit; cursor: pointer; }
.em-side button:hover, .em-side button:focus-visible { border-color: #ffc226; background: rgb(255 194 38 / .08); }
.em-row-text { display: grid; gap: 2px; min-width: 0; } .em-row-text b { overflow-wrap: anywhere; }
.em-side small { display: block; opacity: .75; }
.em-none { padding: 18px 8px; opacity: .75; }
/* the buttons on the map */
.em-seg { display: inline-flex; padding: 3px; border-radius: 999px; background: rgb(10 15 31 / .86); box-shadow: 0 2px 10px rgb(0 0 0 / .45); }
.em-seg button, .em-locate, .em-move { min-height: 40px; padding: 0 16px; border-radius: 999px; border: 0; color: #fff; background: transparent; font: 700 14px/1 inherit; cursor: pointer; }
.em-seg button[aria-pressed="true"] { background: #ffc226; color: #1b1b1b; }
.em-locate, .em-move { background: rgb(10 15 31 / .9); box-shadow: 0 2px 10px rgb(0 0 0 / .45); }
.em-move[aria-pressed="true"] { background: #ffc226; color: #1b1b1b; }
.leaflet-control-layers-toggle { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='m12 3 9 5-9 5-9-5z'/%3E%3Cpath d='m3 13 9 5 9-5'/%3E%3C/svg%3E"); background-size: 26px 26px; }
.em-tip { font-size: 13px; max-width: 16rem; white-space: normal; }
@media (max-width: 900px) {
  .em-public { grid-template-columns: 1fr; --em-h: 62vh; }
  .em-public .em-map { min-height: 380px; }
  .em-panel-pub { height: auto; }
  .em-side { max-height: none; overflow: visible; }
  .em-group { position: static; }
  .em-editor { grid-template-columns: 1fr; } .em-map { height: 56vh; }
}
.em-swatch { flex: none; width: 26px; height: 14px; border-radius: 3px; border: 2px solid currentColor; background: color-mix(in srgb, currentColor 30%, transparent); }
.em-swatch--route { height: 0; border-width: 0 0 4px; border-radius: 2px; background: none; }
.em-swatch--classroom { color: #2f7bd6; } .em-swatch--shooting { color: #d9411e; } .em-swatch--vendors { color: #8a4fd0; } .em-swatch--camping { color: #2f8f5a; }
.em-swatch--parking { color: #6b7280; } .em-swatch--food { color: #c9731a; } .em-swatch--medical { color: #d11f3d; } .em-swatch--restroom { color: #0e8f9a; }
.em-swatch--lodging { color: #6d5bd0; } .em-swatch--social { color: #c2418f; } .em-swatch--manufacturing { color: #b45309; } .em-swatch--safety { color: #b91c1c; }
.em-swatch--seating { color: #3949ab; } .em-swatch--other { color: #6b7280; }

input[type=range] { font-size: 16px; }

.em-editor > aside, .em-editor > aside * { min-width: 0; max-width: 100%; } .em-editor > aside { overflow-x: hidden; }
.em-fields input[type=checkbox], .em-fields input[type=radio], .em-panel input[type=checkbox], .em-panel input[type=radio] { width: auto; flex: none; }
.em-fields input, .em-fields select, .em-fields textarea { width: 100%; } .em-row input[type=text] { flex: 1; min-width: 0; } .em-panel .hint { overflow-wrap: anywhere; }
.em-zone { display: grid; gap: 6px; padding: 8px 0; } .em-check { display: flex; gap: 8px; align-items: flex-start; font-weight: 600; font-size: 13px; }
