.tramx-map-shell{
  --tramx-accent:#00a66a;
  --tramx-secondary:#e5007d;
  --tramx-ink:#10211b;
  --tramx-muted:#5e6e67;
  --tramx-bg:#f4f8f6;
  --tramx-card:#ffffff;
  --tramx-map-height:720px;
  position:relative;
  overflow:hidden;
  border-radius:26px;
  background:var(--tramx-bg);
  box-shadow:0 18px 60px rgba(11,43,31,.12);
  color:var(--tramx-ink);
  font:inherit;
}
.tramx-map-shell *{box-sizing:border-box}
.tramx-map-toolbar{
  display:grid;
  grid-template-columns:minmax(230px,1fr) minmax(220px,1.1fr) auto auto;
  gap:12px;
  align-items:center;
  padding:16px;
  background:linear-gradient(110deg,#0d211b 0%,#102e25 70%,#14372c 100%);
  color:#fff;
  position:relative;
  z-index:500;
}
.tramx-map-brand{display:flex;gap:11px;align-items:center;min-width:0}
.tramx-map-brand strong{display:block;font-size:16px;line-height:1.15}
.tramx-map-brand small{display:block;margin-top:3px;color:rgba(255,255,255,.68);font-size:11px}
.tramx-logo-badge{
  width:42px;height:42px;border-radius:13px;display:grid;place-items:center;flex:0 0 auto;
  font-weight:900;letter-spacing:-.04em;color:#08271d;background:#60f1bf;
  box-shadow:inset 0 -8px 16px rgba(0,166,106,.16);
}
.tramx-search{display:block}
.tramx-search input{
  width:100%;min-height:42px;border:1px solid rgba(255,255,255,.14);border-radius:13px;
  padding:0 13px;background:rgba(255,255,255,.09);color:#fff;outline:none;font:inherit;
}
.tramx-search input::placeholder{color:rgba(255,255,255,.55)}
.tramx-search input:focus{border-color:#66e7ba;box-shadow:0 0 0 3px rgba(102,231,186,.12)}
.tramx-filter-group{display:flex;gap:6px;flex-wrap:wrap}
.tramx-filter{
  border:1px solid rgba(255,255,255,.16);background:transparent;color:#fff;border-radius:999px;
  padding:9px 11px;cursor:pointer;font:inherit;font-size:12px;font-weight:700;opacity:.58;
}
.tramx-filter.is-active{background:#fff;color:#15362a;opacity:1;border-color:#fff}
.tramx-submit-open,.tramx-submit-button{
  border:0;border-radius:13px;background:var(--tramx-accent);color:#fff;padding:12px 15px;
  font:inherit;font-weight:800;cursor:pointer;box-shadow:0 8px 22px rgba(0,166,106,.24)
}
.tramx-submit-open:hover,.tramx-submit-button:hover{filter:brightness(1.05);transform:translateY(-1px)}
.tramx-map{height:var(--tramx-map-height);min-height:480px;background:#e7efe9}
.tramx-map-status{
  position:absolute;top:82px;left:50%;transform:translateX(-50%);z-index:520;
  padding:9px 13px;border-radius:999px;background:#102e25;color:#fff;font-size:12px;
  box-shadow:0 7px 22px rgba(0,0,0,.16);transition:.25s ease
}
.tramx-map-status.is-hidden{opacity:0;pointer-events:none}
.tramx-map-status.is-error{background:#9f1b32}
.tramx-map-legend{
  position:absolute;left:15px;bottom:15px;z-index:490;display:flex;gap:10px;flex-wrap:wrap;
  padding:9px 11px;border-radius:13px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  box-shadow:0 8px 22px rgba(20,49,38,.14);font-size:11px;font-weight:750
}
.tramx-map-legend span{display:flex;align-items:center;gap:5px}
.tramx-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.tramx-dot.tram{background:var(--tramx-accent)}
.tramx-dot.bus{background:var(--tramx-secondary)}
.tramx-dot.trolleybus{background:#1976d2}

.tramx-marker-wrap{background:none!important;border:0!important}
.tramx-marker{
  width:40px;height:40px;border-radius:50% 50% 50% 12px;transform:rotate(-45deg);
  display:grid;place-items:center;background:var(--tramx-accent);border:3px solid #fff;
  box-shadow:0 7px 18px rgba(10,47,34,.25);font-size:18px
}
.tramx-marker-wrap.bus .tramx-marker{background:var(--tramx-secondary)}
.tramx-marker-wrap.trolleybus .tramx-marker{background:#1976d2}
.tramx-marker::before{content:"";display:block;transform:rotate(45deg)}
.tramx-marker{color:transparent;font-size:0}
.tramx-marker-wrap.tram .tramx-marker::before{content:"🚋";font-size:17px;color:#fff}
.tramx-marker-wrap.bus .tramx-marker::before{content:"🚌";font-size:17px;color:#fff}
.tramx-marker-wrap.trolleybus .tramx-marker::before{content:"⚡";font-size:18px;color:#fff}

.tramx-leaflet-popup .leaflet-popup-content-wrapper{padding:0;border-radius:20px;overflow:hidden;box-shadow:0 15px 45px rgba(10,40,29,.22)}
.tramx-leaflet-popup .leaflet-popup-content{margin:0;width:330px!important}
.tramx-leaflet-popup .leaflet-popup-tip{box-shadow:none}
.tramx-popup-card{font-family:inherit;color:var(--tramx-ink);background:#fff}
.tramx-popup-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;height:92px;overflow:hidden;background:#dae6df}
.tramx-popup-gallery img{width:100%;height:92px;object-fit:cover}
.tramx-popup-body{padding:16px}
.tramx-popup-kicker,.tramx-kicker{font-size:10px;letter-spacing:.12em;font-weight:900;color:var(--tramx-accent)}
.tramx-popup-card h3{font-size:20px;line-height:1.08;margin:4px 0 4px;color:#10211b}
.tramx-popup-location{font-size:12px;color:var(--tramx-muted);margin-bottom:10px}
.tramx-popup-modes{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0}
.tramx-mode-badge{display:inline-flex;padding:5px 7px;border-radius:999px;background:#eef6f2;font-size:10px;font-weight:800}
.tramx-mode-badge.bus{background:#fff0f7}
.tramx-mode-badge.trolleybus{background:#edf5ff}
.tramx-popup-description{font-size:12px;line-height:1.5;color:#4f5f58;margin:10px 0}
.tramx-popup-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
.tramx-popup-link,.tramx-popup-photo{
  border:0;border-radius:10px;padding:8px 10px;text-decoration:none;font:inherit;font-size:11px;font-weight:800;cursor:pointer
}
.tramx-popup-link{background:var(--tramx-accent);color:#fff!important}
.tramx-popup-photo{background:#eef3f0;color:#18372b}

.tramx-modal[hidden]{display:none!important}
.tramx-modal{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:20px}
.tramx-modal-backdrop{position:absolute;inset:0;background:rgba(7,20,15,.72);backdrop-filter:blur(8px)}
.tramx-modal-card{
  position:relative;z-index:1;width:min(690px,96vw);max-height:92vh;overflow:auto;
  border-radius:24px;background:#fff;padding:26px;box-shadow:0 35px 100px rgba(0,0,0,.34)
}
.tramx-modal-card h3{font-size:28px;margin:5px 0 6px}
.tramx-modal-card>p{margin:0 0 18px;color:var(--tramx-muted)}
.tramx-modal-close{
  position:absolute;right:14px;top:14px;width:36px;height:36px;border-radius:50%;border:0;
  background:#eef3f0;color:#18372b;font-size:24px;cursor:pointer
}
.tramx-submit-form{display:grid;gap:14px}
.tramx-fields{display:grid;gap:13px}
.tramx-submit-form label{display:grid;gap:6px;font-size:12px;font-weight:750;color:#20392f}
.tramx-submit-form input[type="text"],
.tramx-submit-form input[type="email"],
.tramx-submit-form input[type="url"],
.tramx-submit-form input[type="number"],
.tramx-submit-form input[type="file"],
.tramx-submit-form select,
.tramx-submit-form textarea{
  width:100%;border:1px solid #cedbd5;border-radius:11px;padding:10px 11px;background:#fff;color:#173128;font:inherit;
}
.tramx-submit-form input:focus,.tramx-submit-form select:focus,.tramx-submit-form textarea:focus{
  outline:none;border-color:var(--tramx-accent);box-shadow:0 0 0 3px rgba(0,166,106,.10)
}
.tramx-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tramx-segmented{display:grid;grid-template-columns:1fr 1fr;background:#edf4f0;padding:4px;border-radius:12px}
.tramx-segmented label{display:block;text-align:center;padding:9px;border-radius:9px;cursor:pointer}
.tramx-segmented input{margin-right:5px}
.tramx-checks{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px}
.tramx-checks label{display:flex;align-items:center;gap:5px;font-weight:600}
.tramx-field-title{font-size:12px;font-weight:750}
.tramx-map-hint{display:block;margin-top:-5px;color:#687a72}
.tramx-consent{grid-template-columns:auto 1fr!important;align-items:start}
.tramx-consent input{margin-top:2px}
.tramx-form-message{min-height:0;font-size:12px;font-weight:700}
.tramx-form-message.is-success{color:#00784d}
.tramx-form-message.is-error{color:#b11332}
.tramx-form-message.is-info{color:#1565c0}
.tramx-honeypot{position:absolute!important;left:-9999px!important;opacity:0!important}
html.tramx-modal-open{overflow:hidden}

@media (max-width:980px){
  .tramx-map-toolbar{grid-template-columns:1fr 1fr}
  .tramx-map-brand{grid-column:1/-1}
  .tramx-submit-open{justify-self:stretch}
}
@media (max-width:640px){
  .tramx-map-shell{border-radius:18px}
  .tramx-map-toolbar{grid-template-columns:1fr;padding:12px}
  .tramx-map-brand,.tramx-search,.tramx-filter-group,.tramx-submit-open{grid-column:1}
  .tramx-map{min-height:560px}
  .tramx-grid-2{grid-template-columns:1fr}
  .tramx-modal{padding:8px}
  .tramx-modal-card{padding:22px 16px;border-radius:18px}
  .tramx-map-legend{max-width:calc(100% - 30px)}
}

.tramx-map-legend .tramx-data-credit{
  opacity:.62;font-weight:600;border-left:1px solid #d5dfda;padding-left:9px
}
@media(max-width:640px){
  .tramx-map-legend .tramx-data-credit{width:100%;border-left:0;padding-left:0}
}

.tramx-operator-fields[hidden],
.tramx-photo-fields[hidden]{display:none!important}
.tramx-photo-fields .tramx-operator-search{margin-bottom:2px}
