/* Frontend: premium, lightweight, responsive map UI. */
.sim-map {
    position: relative;
    width: 100%;
    max-width: var(--sim-max-width, 1100px);
    margin: 0 auto;
    color: #173047;
    font-family: inherit;
    box-sizing: border-box;
}

.sim-map,
.sim-map * {
    box-sizing: border-box;
}

.sim-map-stage {
    position: relative;
    width: 100%;
    line-height: 0;
    isolation: isolate;
}

.sim-map picture,
.sim-map-image {
    display: block;
    width: 100%;
    height: auto;
}

.sim-map-image {
    user-select: none;
    -webkit-user-drag: none;
}

.sim-markers {
    position: absolute;
    inset: 0;
    z-index: 4;
}

.sim-marker {
    position: absolute;
    left: var(--sim-x);
    top: var(--sim-y);
    transform: translate(-50%, -50%);
    width: 34px;
    height: 34px;
    padding: 3px !important;
    border: 2px solid rgba(255,255,255,.98) !important;
    border-radius: 50% !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    background: rgba(255,255,255,.96) !important;
    color: inherit !important;
    cursor: pointer;
    touch-action: manipulation;
    line-height: 1 !important;
    display: grid !important;
    place-items: center !important;
    box-shadow: 0 5px 12px rgba(8,48,73,.20), 0 1px 2px rgba(8,48,73,.16) !important;
    filter: none !important;
    transition: transform .18s ease, box-shadow .18s ease;
    overflow: visible !important;
    z-index: 2;
}

.sim-marker:hover,
.sim-marker:focus-visible,
.sim-marker[aria-expanded='true'] {
    z-index: 30;
    transform: translate(-50%, -50%) scale(1.08);
    box-shadow: 0 8px 18px rgba(8,48,73,.24), 0 0 0 4px rgba(14,165,164,.14) !important;
}

.sim-marker-icon {
    position: static !important;
    width: 100% !important;
    height: 100% !important;
    border-radius: 50% !important;
    display: grid !important;
    place-items: center !important;
    background: var(--sim-icon-color, #0b7d87) !important;
    box-shadow: inset 0 1px 1px rgba(255,255,255,.36) !important;
    pointer-events: none;
}

.sim-marker-icon svg {
    width: 20px;
    height: 20px;
    display: block;
    overflow: visible;
}

.sim-marker-icon .sim-icon-fill {
    fill: rgba(255,255,255,.96);
    stroke: none;
}

.sim-marker-icon .sim-icon-line {
    fill: none;
    stroke: rgba(255,255,255,.96);
    stroke-width: 2.7;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.sim-marker:focus-visible {
    outline: 3px solid #0f766e !important;
    outline-offset: 3px;
}

.sim-marker[aria-expanded='true'] {
    border-color: #fff !important;
}

.sim-tooltip {
    position: absolute;
    left: 50%;
    top: auto;
    bottom: calc(100% + 10px);
    transform: translateY(4px);
    width: max-content;
    max-width: min(300px, calc(100vw - 20px));
    padding: 7px 10px;
    border: 1px solid rgba(15,23,42,.08);
    border-radius: 10px;
    background: rgba(18,34,45,.96);
    color: #fff;
    font-size: 12.5px;
    font-weight: 700;
    line-height: 1.25;
    white-space: normal;
    overflow-wrap: anywhere;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    box-shadow: 0 10px 24px rgba(15,23,42,.24);
    z-index: 40;
    transition: opacity .16s ease, transform .16s ease, visibility .16s ease;
}

.sim-tooltip::after {
    content: '';
    position: absolute;
    left: var(--sim-tip-arrow-left, 50%);
    top: 100%;
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: rgba(18,34,45,.96);
}

@media (hover:hover) and (pointer:fine) {
    .sim-marker:hover {
        cursor: pointer;
    }
}

.sim-marker-static{cursor:default;z-index:1}
.sim-marker-static:focus{outline:none}
.sim-marker-static:focus-visible{outline:3px solid #0f766e !important;outline-offset:3px;z-index:30}

.sim-marker.sim-tooltip-visible .sim-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.sim-info-panel {
    position: absolute;
    left: 0;
    top: 0;
    width: min(430px, calc(100% - 20px));
    z-index: 7;
    overflow: visible;
    border: 1px solid rgba(208, 224, 231, .96) !important;
    border-radius: 16px !important;
    background: rgba(255, 255, 255, .985) !important;
    box-shadow: 0 16px 34px rgba(9,38,55,.16), 0 2px 8px rgba(9,38,55,.06) !important;
    line-height: 1.45 !important;
    animation: simPanelIn .18s ease-out;
}

.sim-panel-pointer {
    position: absolute;
    width: 12px;
    height: 12px;
    background: #fff;
    border-left: 1px solid rgba(208,224,231,.96);
    border-top: 1px solid rgba(208,224,231,.96);
    transform: rotate(45deg);
    z-index: -1;
}

.sim-info-panel[data-placement='right'] .sim-panel-pointer { left: -6px; top: 50%; margin-top: -6px; }
.sim-info-panel[data-placement='left'] .sim-panel-pointer { right: -6px; top: 50%; margin-top: -6px; transform: rotate(225deg); }
.sim-info-panel[data-placement='above'] .sim-panel-pointer { bottom: -6px; left: var(--sim-pointer-left, 50%); margin-left: -6px; transform: rotate(225deg); }
.sim-info-panel[data-placement='below'] .sim-panel-pointer { top: -6px; left: var(--sim-pointer-left, 50%); margin-left: -6px; transform: rotate(45deg); }

.sim-panel-accent {
    height: 3px;
    border-radius: 16px 16px 0 0;
    background: linear-gradient(90deg, #078d92, #58b9a6);
}

.sim-panel-inner {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 15px 15px !important;
}

.sim-panel-copy {
    min-width: 0;
    flex: 1;
}

.sim-panel-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    margin: 0 0 6px !important;
}

.sim-panel-title {
    margin: 0 !important;
    padding: 0 !important;
    font-family: inherit !important;
    font-size: clamp(19px, 2.1vw, 23px) !important;
    line-height: 1.18 !important;
    font-weight: 800 !important;
    color: #18384f !important;
    letter-spacing: -.02em !important;
    text-transform: none !important;
    text-shadow: none !important;
}

.sim-panel-status {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-height: 24px;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11px !important;
    line-height: 1.1 !important;
    font-weight: 800 !important;
    white-space: nowrap;
    flex: 0 0 auto;
}

.sim-panel-status.is-open {
    color: #087443 !important;
    background: #e2f8ec !important;
    border: 1px solid #9be3bb !important;
}

.sim-panel-status.is-closed {
    color: #a32828 !important;
    background: #fff0f0 !important;
    border: 1px solid #f3b0b0 !important;
}

.sim-panel-description {
    margin: 0 0 10px !important;
    color: #466273 !important;
    font-size: 13.5px !important;
    line-height: 1.48 !important;
    font-weight: 500 !important;
    overflow-wrap: anywhere;
}

.sim-panel-description[hidden] {
    display: none !important;
}

.sim-details-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 7px;
    margin: 0 !important;
}

.sim-detail {
    min-width: 0;
    padding: 8px 9px !important;
    border: 1px solid #dce7ec !important;
    border-radius: 10px !important;
    background: linear-gradient(180deg, #fbfdfe 0%, #f2f7f9 100%) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.92) !important;
}

.sim-detail-label {
    display: block !important;
    margin: 0 0 4px !important;
    color: #688090 !important;
    font-size: 11.5px !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;
    letter-spacing: .01em !important;
}

.sim-detail-value {
    display: block !important;
    margin: 0 !important;
    color: #16384f !important;
    font-size: 14px !important;
    line-height: 1.25 !important;
    font-weight: 800 !important;
    overflow-wrap: anywhere;
}

.sim-panel-close {
    appearance: none !important;
    -webkit-appearance: none !important;
    flex: 0 0 auto !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    padding: 0 !important;
    border: 1px solid #d9e3e8 !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: #173047 !important;
    font-family: inherit !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    display: grid !important;
    place-items: center !important;
    cursor: pointer !important;
    box-shadow: none !important;
    touch-action: manipulation;
}

.sim-panel-close:hover {
    background: #f1f7f8 !important;
}

.sim-panel-close:focus-visible {
    outline: 3px solid #0f766e !important;
    outline-offset: 3px !important;
}

@keyframes simPanelIn {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 640px) {
    .sim-marker {
        width: 32px;
        height: 32px;
        padding: 2.5px !important;
    }

    .sim-marker-icon svg {
        width: 19px;
        height: 19px;
    }

    .sim-info-panel {
        width: min(318px, calc(100% - 16px));
        border-radius: 14px !important;
    }

    .sim-panel-inner {
        padding: 12px 12px 13px !important;
        gap: 8px;
    }

    .sim-panel-title {
        font-size: 18px !important;
    }

    .sim-panel-description {
        font-size: 13px !important;
    }

    .sim-detail {
        padding: 8px !important;
    }

    .sim-detail-value {
        font-size: 13.5px !important;
    }

    .sim-panel-close {
        width: 40px !important;
        height: 40px !important;
        min-width: 40px !important;
        min-height: 40px !important;
    }

    .sim-tooltip {
        max-width: 62vw;
        font-size: 12px;
    }

    .sim-panel-pointer {
        display: block;
    }
}

@media (max-width: 390px) {
    .sim-panel-title {
        font-size: 17px !important;
    }

    .sim-panel-description {
        font-size: 12.5px !important;
    }

    .sim-detail-value {
        font-size: 13px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sim-marker,
    .sim-tooltip,
    .sim-info-panel {
        transition: none;
        animation: none;
    }
}

/* Mobile name-only marker tap state. */
.sim-marker-static.sim-tooltip-visible .sim-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* Térképes kategóriagombok */
.sim-map-group-controls {
    position: absolute;
    top: 12px;
    right: 10px;
    z-index: 20;
    max-width: min(320px, calc(100% - 20px));
    pointer-events: none;
}

.sim-map-group-list {
    display: grid;
    grid-template-columns: max-content;
    justify-content: end;
    gap: 7px;
    width: max-content;
    max-width: 100%;
    max-height: min(420px, calc(100% - 24px));
    overflow-y: auto;
    padding: 2px;
    overscroll-behavior: contain;
    scrollbar-width: thin;
}

.sim-map-group-btn {
    --sim-group-color: #0b7d87;
    position: relative;
    display: flex !important;
    align-items: center !important;
    gap: 9px !important;
    width: var(--sim-group-btn-width, max-content);
    max-width: 100%;
    min-height: 40px !important;
    padding: 8px 11px !important;
    border: 1px solid rgba(211, 225, 231, .96) !important;
    border-radius: 12px !important;
    background: rgba(255,255,255,.97) !important;
    color: #173047 !important;
    box-shadow: 0 7px 18px rgba(9,38,55,.14) !important;
    font: inherit !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    line-height: 1.25 !important;
    text-align: left !important;
    cursor: pointer !important;
    pointer-events: auto;
    touch-action: manipulation;
    appearance: none !important;
    -webkit-appearance: none !important;
    transition: border-color .16s ease, background-color .16s ease, transform .16s ease, box-shadow .16s ease;
}

.sim-map-group-btn::before {
    content: '';
    position: absolute;
    left: 0;
    top: 7px;
    bottom: 7px;
    width: 3px;
    border-radius: 0 4px 4px 0;
    background: var(--sim-group-color);
}

.sim-map-group-btn:hover {
    transform: translateY(-1px);
    border-color: var(--sim-group-color) !important;
}

.sim-map-group-btn:focus-visible {
    outline: 3px solid #0f766e !important;
    outline-offset: 2px !important;
}

.sim-map-group-btn.is-active {
    background: color-mix(in srgb, var(--sim-group-color) 8%, #fff) !important;
    border-color: var(--sim-group-color) !important;
    box-shadow: 0 8px 20px rgba(9,38,55,.18) !important;
}

.sim-group-btn-dot {
    width: 10px;
    height: 10px;
    flex: 0 0 auto;
    border-radius: 50%;
    background: var(--sim-group-color);
    box-shadow: 0 0 0 3px rgba(255,255,255,.95), 0 0 0 4px color-mix(in srgb, var(--sim-group-color) 22%, transparent);
}

.sim-group-btn-label {
    min-width: 0;
    overflow-wrap: anywhere;
}

.sim-map.sim-has-active-group .sim-marker.sim-group-dim {
    opacity: .30 !important;
    filter: saturate(.25) !important;
    transform: translate(-50%, -50%) scale(.90);
    box-shadow: none !important;
}

.sim-marker.sim-group-highlight {
    z-index: 31;
    opacity: 1 !important;
    filter: none !important;
    transform: translate(-50%, -50%) scale(1.10);
    box-shadow: 0 0 0 3px rgba(255,255,255,.96), 0 0 0 6px color-mix(in srgb, var(--sim-group-color, #0b7d87) 35%, transparent), 0 10px 22px rgba(8,48,73,.28) !important;
}

.sim-marker.sim-group-highlight::after {
    content: '';
    position: absolute;
    inset: -10px;
    border: 3px solid var(--sim-group-color, #0b7d87);
    border-radius: 50%;
    pointer-events: none;
    animation: simGroupPulse 1.15s ease-out infinite;
}

.sim-marker.sim-group-highlight::before {
    content: '';
    position: absolute;
    inset: -5px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--sim-group-color, #0b7d87) 18%, transparent);
    pointer-events: none;
}

@keyframes simGroupPulse {
    0%, 100% { opacity: .95; transform: scale(.92); }
    55% { opacity: .15; transform: scale(1.24); }
}

.sim-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

@media (prefers-reduced-motion: reduce) {
    .sim-map-group-btn,
    .sim-marker.sim-group-highlight::after {
        transition: none !important;
        animation: none !important;
    }
    .sim-marker.sim-group-highlight::after {
        opacity: .95;
        transform: none;
        inset: -5px;
        border-width: 3px;
    }
}

@media (max-width: 640px) {
    /* Mobile: controls flow below the map and must sit above any overlapping page content. */
    .sim-map-group-controls {
        position: relative;
        z-index: 50;
        width: 100%;
        max-width: none;
        margin-top: 10px;
        pointer-events: auto !important;
        isolation: isolate;
    }

    .sim-map-group-list {
        position: relative;
        z-index: 51;
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        justify-content: flex-start;
        width: 100%;
        max-width: none;
        max-height: none;
        overflow: visible;
        gap: 7px;
        padding: 0;
        pointer-events: auto !important;
    }

    .sim-map-group-btn {
        position: relative;
        z-index: 52;
        flex: 0 0 var(--sim-group-btn-width, max-content);
        min-height: 42px !important;
        width: var(--sim-group-btn-width, max-content);
        max-width: 100%;
        margin: 0;
        padding: 8px 10px !important;
        border-radius: 11px !important;
        font-size: 12.5px !important;
        pointer-events: auto !important;
        touch-action: manipulation;
        -webkit-tap-highlight-color: transparent;
    }
}
