:root{
  --bg:#0f172a; --text:#e5e7eb; --shadow:0 14px 32px rgba(0,0,0,.28);
  /* Colores del panel (el JS los cambia por botón) */
  --acc-bg:#2f3341; --acc-hdr:#3a3f4f; --acc-text:#fff; --acc-bd:rgba(255,255,255,.14);
}
*{box-sizing:border-box}
html,body,#app,#map{height:100%;width:100%;margin:0}
body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif}
.fab-area{position:fixed;left:7px;bottom:7px;z-index:1100;display:flex;flex-direction:column-reverse;gap:12px;align-items:flex-start}
.btn-fab{width:50px;height:50px;border-radius:50%;border:none;cursor:pointer;background:#3b82f6;color:#fff;font-size:28px;box-shadow:var(--shadow)}
.fab-group{display:flex;flex-direction:column;gap:10px;opacity:0;pointer-events:none;transform:translateY(6px) scale(.98);transition:.15s}
.fab-group.open{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}
.fab-item{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;border:1px solid rgba(255,255,255,.18);box-shadow:var(--shadow);cursor:pointer}
.fab-item svg{width:24px;height:24px}
.fab-acc{position:fixed;left:78px;top:120px;width:460px;background:var(--acc-bg);color:var(--acc-text);border-radius:14px;box-shadow:var(--shadow);display:none;z-index:1200;overflow:hidden}
.fab-acc.open{display:block;animation:accIn .15s ease}
@keyframes accIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.acc-pointer{position:absolute;left:-10px;top:28px;width:0;height:0;filter:drop-shadow(-1px 2px 2px rgba(0,0,0,.25));border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:10px solid var(--acc-bg)}
.acc-hdr{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:linear-gradient(180deg,var(--acc-hdr),var(--acc-bg));border-bottom:1px solid var(--acc-bd)}
.acc-hdr h4{margin:0;font-size:14px;letter-spacing:.2px;text-transform:uppercase}
.acc-close{background:transparent;color:#fff;border:none;width:28px;height:28px;border-radius:8px;cursor:pointer}
.acc-close:hover{background:rgba(255,255,255,.08)}
.acc-fade{position:relative;height:22px;pointer-events:none}
.acc-fade--top{background:linear-gradient(180deg,rgba(0,0,0,.28),rgba(0,0,0,0))}
.acc-fade--bot{background:linear-gradient(0deg,rgba(0,0,0,.28),rgba(0,0,0,0))}
.acc-scroll{overflow-y:auto;scroll-behavior:smooth;position:relative;padding:6px 4px 6px 0}
.acc-scroll::-webkit-scrollbar{width:12px}
.acc-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:10px}
.acc-scroll::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.28)}
.acc-row{border-bottom:1px solid var(--acc-bd)}
.acc-tgl{width:100%;display:flex;align-items:center;gap:10px;background:transparent;color:inherit;border:none;cursor:pointer;padding:12px 16px;text-align:left;font-weight:700;letter-spacing:.2px}
.acc-chevron{width:10px;height:10px;flex:0 0 10px;border-right:2px solid #cfd6ea;border-bottom:2px solid #cfd6ea;transform:rotate(-45deg);transition:.18s}
.acc-row.open .acc-chevron{transform:rotate(45deg)}
.acc-title{flex:1}
.acc-body{background:rgba(255,255,255,.06);max-height:0;overflow:hidden;transition:max-height .22s ease}
.acc-body ul{list-style:none;margin:0;padding:8px 12px}
.acc-body li{padding:0}
.acc-body a{color:#f4f7ff;text-decoration:none;display:block;padding:6px 6px;border-radius:8px;font-weight:500}
.acc-body a:hover{background:rgba(255,255,255,.10);text-decoration:underline}
.indent-0 a{padding-left:8px}.indent-1 a{padding-left:24px}.indent-2 a{padding-left:40px}.indent-3 a{padding-left:56px}
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#fff;padding:10px 14px;border-radius:10px;box-shadow:var(--shadow);font-size:14px;opacity:0;pointer-events:none;transition:.2s;z-index:1300}
#toast.show{opacity:1}
@media (max-width:640px){.fab-acc{width:94vw;left:4vw}.btn-fab{width:58px;height:58px}.fab-item{width:46px;height:46px}}

.map-controls-container{z-index:2000;position:absolute;width:100%;height:100%;top:0;left:0;opacity:0;visibility:hidden;transition:opacity .2s ease;pointer-events:none}
.map-controls-container.visible{opacity:1;visibility:visible}
.slider-box{pointer-events:auto;position:absolute;bottom:25px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.85);backdrop-filter:blur(4px);color:#333;padding:8px 16px;border-radius:8px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px}
.legend-box{pointer-events:auto;position:absolute;bottom:80px;right:15px;background:rgba(255,255,255,.85);backdrop-filter:blur(4px);padding:10px;border-radius:8px;box-shadow:var(--shadow);color:#333;line-height:1.6;font-size:12px}
.slider-box input[type="range"]{width:250px}
.slider-box label{font-size:18px;font-weight:bold;font-family:monospace}
.legend-box h4{margin:0 0 5px;font-size:13px;text-align:center}
.legend-item{display:flex;align-items:center;gap:8px}
.legend-color{width:18px;height:18px;border:1px solid rgba(0,0,0,.2)}
.slider-controls{display:flex;gap:4px;border-right:1px solid #ccc;padding-right:10px}
.slider-btn{background:transparent;border:none;cursor:pointer;font-size:18px;padding:4px}
.slider-btn:disabled{cursor:not-allowed;opacity:0.3}
.map-popup{font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;font-size:13px;max-height:250px;overflow-y:auto}
.map-popup strong{color:#333}

.toolbox-toggle{position:fixed;top:10px;left:10px;background:#0078A0;color:#fff;border:none;width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer;z-index:1001;transition:background .3s,transform .2s}
.toolbox-toggle:hover{background:#005f80;transform:scale(1.1)}
.toolbox-toggle.active{background:#ff6347}
.toolbox{position:fixed;top:10px;left:60px;background:rgba(255,255,255,0.95);padding:6px;border-radius:12px;box-shadow:2px 2px 10px rgba(0,0,0,0.2);display:flex;flex-wrap:nowrap;align-items:center;gap:10px;z-index:1000;transition:opacity .3s,transform .2s,left .3s ease-in-out;max-width:calc(100vw - 120px)}
.toolbox.hidden{opacity:0;transform:translateX(-50px);pointer-events:none}
.tool-group{display:flex;gap:10px;background:rgba(0,0,0,0.06);padding:6px;border-radius:10px}
.sep-vert{width:2px;height:28px;background:#e0e0e0;border-radius:1px}
.tool-btn{height:34px;min-width:34px;font-size:14px;padding:6px 8px;display:flex;align-items:center;justify-content:center;background:#0078A0;border:none;color:#fff;border-radius:10px;cursor:pointer;transition:background .2s,transform .12s}
.tool-btn:hover{background:#005f80;transform:translateY(-1px)}
.toolbox input[type="text"]{height:34px;padding:0 8px;border:1px solid #ddd;border-radius:10px;width:220px}
.select-base,.select-epsg{height:34px;border:1px solid #ddd;border-radius:10px;padding:0 6px}
#opacity-wrap{display:none;align-items:center;gap:6px}
#opacity-range{width:110px}
#coordbox{position:fixed;bottom:6px;left:8px;z-index:900;background:rgba(0,0,0,0.65);color:#fff;padding:6px 8px;border-radius:6px;font-size:12px}
@media (max-width:1200px){.toolbox{flex-wrap:wrap;gap:8px;top:60px;left:10px}.tool-group{flex-wrap:wrap}}

.service-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:450px;max-width:90vw;background:#fff;color:#333;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,0.3);z-index:2500;display:flex;flex-direction:column}
.service-modal.hidden{display:none}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:10px 15px;background:#f0f0f0;border-bottom:1px solid #ddd;border-radius:12px 12px 0 0;cursor:move}
.modal-header h4{margin:0;font-size:16px}
.modal-close-btn{background:transparent;border:none;font-size:24px;line-height:1;color:#888;cursor:pointer}
.modal-content{padding:15px;display:flex;flex-direction:column;gap:10px}
.modal-content label{font-size:13px;font-weight:600;margin-bottom:-5px}
.modal-input-group{display:flex;gap:5px}
.modal-input-group input{flex-grow:1;height:34px;border:1px solid #ccc;border-radius:8px;padding:0 10px}
.modal-content select{height:34px;border:1px solid #ccc;border-radius:8px;padding:0 6px;background:#fff}
.modal-content select:disabled{background:#f5f5f5}
.modal-loading{font-size:13px;color:#0078A0;text-align:center}
.modal-footer{padding:10px 15px;background:#f0f0f0;border-top:1px solid #ddd;border-radius:0 0 12px 12px;display:flex;justify-content:flex-end;gap:10px}
.modal-footer .tool-btn:disabled{background:#aaa;cursor:not-allowed}

/* ================================================= */
/* === ESTILOS PARA LA CASILLA DE VERIFICACIÓN === */
/* ================================================= */
.acc-body li.has-slider-item {
  display: flex;
  align-items: center;
  gap: 8px; /* Espacio entre checkbox y link */
  padding: 6px 6px; /* Mueve el padding del <a> al <li> */
  border-radius: 8px;
}
.acc-body li.has-slider-item:hover {
  background: rgba(255,255,255,.10);
}
.layer-toggle-cb {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  height: 18px;
  width: 18px;
  min-width: 18px;
  background: rgba(0,0,0,0.2);
  border: 1px solid rgba(255,255,255,0.3);
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.15s;
}
.layer-toggle-cb:checked {
  background: var(--acc-hdr); /* Usa el color del header del panel */
  border-color: var(--acc-bg);
}
.layer-toggle-cb:checked::after {
  content: '';
  position: absolute;
  left: 6px;
  top: 2px;
  width: 4px;
  height: 9px;
  border: solid white;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.acc-body li.has-slider-item a {
  flex: 1; /* Ocupa el resto del espacio */
  padding: 0; /* Resetea el padding del link */
  font-weight: 500;
  color: #f4f7ff;
  text-decoration: none;
}
.acc-body li.has-slider-item a:hover {
  background: none; /* El hover ahora está en el <li> */
  text-decoration: underline;
}
/* Ajustes de indentación */
.indent-0.has-slider-item { padding-left: 8px; }
.indent-1.has-slider-item { padding-left: 24px; }
.indent-2.has-slider-item { padding-left: 40px; }
.indent-3.has-slider-item { padding-left: 56px; }

/* Ajustes para <a> normales sin checkbox */
.acc-body li:not(.has-slider-item) a {
  padding: 6px 6px;
}
.acc-body li:not(.has-slider-item) a:hover {
  background: rgba(255,255,255,.10);
  border-radius: 8px;
}
.indent-0:not(.has-slider-item) a { padding-left: 8px; }
.indent-1:not(.has-slider-item) a { padding-left: 24px; }
.indent-2:not(.has-slider-item) a { padding-left: 40px; }
.indent-3:not(.has-slider-item) a { padding-left: 56px; }

/* === NLQ (Búsqueda inteligente) === */
#nlqPanel{
  position: fixed;
  top: 56px;
  left: 60px;
  z-index: 1200;
  background: rgba(255,255,255,0.95);
  border: 1px solid rgba(0,0,0,0.12);
  box-shadow: 0 10px 30px rgba(0,0,0,0.15);
  border-radius: 14px;
  padding: 10px;
  backdrop-filter: blur(6px);
  width: min(720px, calc(100vw - 120px));
}
#nlqPanel.nlq-hidden{ display:none; }

#nlqPanel .nlq-panel-inner{
  display:flex;
  gap:10px;
  align-items:center;
}
#nlqPanel #nlqInput{
  flex:1;
  height:34px;
  padding:0 10px;
  border:1px solid rgba(0,0,0,0.18);
  border-radius:10px;
}
#nlqPanel .nlq-hint{
  margin-top:6px;
  font-size:12px;
  opacity:0.75;
}
@media (max-width: 520px){
  #nlqPanel{ left: 10px; width: calc(100vw - 20px); top: 56px; }
  #nlqPanel .nlq-hint{ display:none; }
}


/* === Mis datos === */
.user-data-panel{position:absolute;top:76px;right:16px;width:min(420px,calc(100vw - 32px));max-height:calc(100vh - 110px);background:#ffffff;border:1px solid #cfe1ea;border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.18);z-index:1400;overflow:hidden;display:flex;flex-direction:column}.user-data-panel.hidden{display:none}.udp-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#0f766e;color:#fff}.udp-header h4{margin:0;font-size:16px}.udp-close{border:0;background:transparent;color:#fff;font-size:26px;line-height:1;cursor:pointer}.udp-body{padding:12px;overflow:auto;display:flex;flex-direction:column;gap:12px}.udp-section{border:1px solid #e6eef2;border-radius:12px;padding:10px;background:#fbfdff}.udp-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.udp-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.udp-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#244}.udp-grid input,.udp-grid select,.udp-grid textarea,.udp-body textarea,.udp-body select,.udp-body input[type="text"],.udp-body input[type="number"]{width:100%;padding:8px 10px;border:1px solid #bfd2db;border-radius:10px;font:inherit;box-sizing:border-box}.udp-body textarea{resize:vertical;min-height:72px}.udp-status{font-size:13px;color:#355;line-height:1.4}.udp-summary,.udp-plan{font-size:12px;color:#244;line-height:1.45}.udp-summary ul,.udp-plan ul{margin:6px 0 0 18px;padding:0}.udp-span-2{grid-column:1 / span 2}.user-map-legend{position:absolute;right:16px;bottom:18px;max-width:280px;background:rgba(255,255,255,.96);backdrop-filter:blur(4px);border:1px solid #d8e3e8;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:12px;z-index:1250}.user-map-legend.hidden{display:none}.user-map-legend h5{margin:0 0 4px;font-size:14px;color:#123}.user-map-legend .meta{font-size:11px;color:#456;line-height:1.4;margin-bottom:8px}.user-map-legend .legend-row{display:flex;align-items:center;gap:8px;margin:4px 0;font-size:12px;color:#234}.user-map-legend .swatch{width:18px;height:12px;border-radius:4px;border:1px solid rgba(0,0,0,.12);flex:0 0 auto}.tool-btn.tool-btn--teal{background:#0f766e;color:#fff;border-color:#0f766e}.tool-btn.tool-btn--teal:hover{filter:brightness(.95)}@media (max-width:768px){.user-data-panel{left:12px;right:12px;top:72px;width:auto;max-height:calc(100vh - 96px)}.udp-grid{grid-template-columns:1fr}.udp-span-2{grid-column:auto}.user-map-legend{left:12px;right:12px;bottom:12px;max-width:none}}


/* --- FIX POPUPS SOBRE PANELES --- */
.leaflet-popup-pane,
.leaflet-tooltip-pane {
  z-index: 3000 !important;
}
.leaflet-popup,
.leaflet-tooltip {
  z-index: 3001 !important;
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
  box-shadow: 0 10px 26px rgba(0,0,0,.22);
}
