/* Panel Global only. VACAR's warm surfaces carry restrained data color. */
.content-shell>main:has(.vp-admin){max-width:none!important;padding-left:clamp(18px,2vw,32px)!important;padding-right:clamp(18px,2vw,32px)!important}
.vp-admin .vpo-overview{display:grid;gap:18px;color:#25211c}
.vp-admin .vpo-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid #e9e1d8;border-radius:18px;box-shadow:0 3px 12px #6848220c;overflow:hidden}
.vp-admin .vpo-metric{display:flex;align-items:center;gap:13px;min-width:0;padding:15px 18px;border-right:1px solid #eee7de}.vp-admin .vpo-metric:last-child{border-right:0}
.vp-admin .vpo-metric>span:first-child{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:#faf4ec;color:#966c2b}.vp-admin .vpo-metric>span:first-child .material-symbols-outlined{font-size:21px}
.vp-admin .vpo-metric>div{display:grid;gap:2px;min-width:0}.vp-admin .vpo-metric small{font-size:10px;text-transform:uppercase;letter-spacing:.035em;color:#706457;white-space:nowrap}.vp-admin .vpo-metric strong{font-size:28px;line-height:1.08;font-variant-numeric:tabular-nums}.vp-admin .vpo-metric em{font-size:10px;font-style:normal;color:#926c30;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vpo-metric-bars{display:flex;gap:3px;align-items:end;height:32px;margin-left:auto;opacity:.58}.vpo-metric-bars i{width:4px;background:#dac1a5;border-radius:2px 2px 0 0}.vpo-metric-bars i:nth-child(1){height:7px}.vpo-metric-bars i:nth-child(2){height:12px}.vpo-metric-bars i:nth-child(3){height:18px}.vpo-metric-bars i:nth-child(4){height:25px}.vpo-metric-bars i:nth-child(5){height:31px}
.vp-admin .vpo-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(330px,.92fr);gap:18px;align-items:stretch}
.vp-admin .vpo-overview .vp-panel{padding:21px 23px;border-radius:20px;box-shadow:0 3px 12px #6848220b}.vp-admin .vpo-head{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:17px}.vp-admin .vpo-head h2{font-size:18px;letter-spacing:-.028em;line-height:1.2}.vp-admin .vpo-head p{font-size:11px;color:#756a5f;line-height:1.5;margin-top:4px}.vp-admin .vpo-period-label{border:1px solid #e9ded0;padding:8px 12px;border-radius:99px;font-size:10px;color:#765d3f;white-space:nowrap;background:#fffdf9}
.vpo-module-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.vpo-module{min-width:0;min-height:224px;border:1px solid color-mix(in srgb,var(--module) 9%,#eee5dc);border-radius:16px;padding:14px 14px 12px;background:color-mix(in srgb,var(--module) 3%,white)}
.vpo-module header{display:flex;align-items:center;gap:8px;min-width:0}.vpo-module h3{font-size:11px;font-weight:650;min-width:0;line-height:1.25;white-space:normal;overflow-wrap:anywhere;overflow:visible;text-overflow:clip}
/* Nada se corta: "Red contra incendios" no cabe en una línea dentro de la
   tarjeta, así que se permite la segunda. El header reserva las dos líneas
   para que todas las tarjetas queden alineadas. */
.vpo-module header{min-height:38px;align-items:flex-start}
.vpo-module header h3{align-self:center}.vpo-module-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:var(--module);background:color-mix(in srgb,var(--module) 10%,white);flex:none}.vpo-module-icon .material-symbols-outlined{font-size:19px}.vp .vpo-module header button{margin-left:auto;min-height:28px;width:28px;padding:0;border:0;background:transparent;color:var(--module);flex:none}.vpo-module header button .material-symbols-outlined{font-size:15px}
.vpo-module-core{display:flex;align-items:center;justify-content:space-between;gap:3px;margin-top:9px}.vpo-module-core>div:first-child{display:grid;gap:2px}.vpo-module-core>div:first-child strong{font-size:29px;line-height:1;font-variant-numeric:tabular-nums}.vpo-module-core>div:first-child span{font-size:10px;color:#756c61}.vpo-ring{display:block;flex:none;filter:drop-shadow(0 2px 4px color-mix(in srgb,var(--ring-color) 10%,transparent))}.vpo-ring>svg{display:block;width:100%!important;height:100%!important;max-width:none!important}.vpo-mini-trend{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:end;gap:8px;margin-top:6px;padding-top:7px;border-top:1px solid color-mix(in srgb,var(--module) 9%,#eee6df)}.vpo-mini-trend>div{display:grid;grid-template-columns:auto auto;align-items:baseline;gap:2px 4px;min-width:42px}.vpo-mini-trend span{font-size:8px;color:#7b7167;grid-column:1/-1}.vpo-mini-trend b{font-size:13px;line-height:1;color:var(--module);font-variant-numeric:tabular-nums}.vpo-mini-trend small{font-size:8px;color:#8b8177;white-space:nowrap}.vpo-spark{display:block;width:100%;height:auto;aspect-ratio:160/44;overflow:visible}.vpo-spark-base{stroke:#eee7df;stroke-width:1}.vpo-spark-area{stroke:none}.vpo-spark-glow,.vpo-spark-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.vpo-spark-glow{stroke-width:5;opacity:.2}.vpo-spark-line{stroke-width:1.8}.vpo-spark-halo{opacity:.13}.vpo-spark-point{stroke:#fff;stroke-width:1.4}.vpo-module>p{font-size:9px;color:#88672e;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vpo-distribution{display:flex;flex-direction:column}.vpo-distribution-core{display:flex;align-items:center;justify-content:center;gap:19px;flex:1;min-height:170px}.vpo-donut{position:relative;width:158px;height:158px;display:grid;place-items:center;flex:none}.vpo-donut svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible}.vpo-donut circle{fill:none;stroke-width:11;stroke-linecap:round}.vpo-donut-track{stroke:#f1ece6}.vpo-donut-glow-soft{filter:url(#vpoDonutGlowSoft);opacity:.18}.vpo-donut-glow-soft .vpo-donut-value{stroke-width:18}.vpo-donut-glow{filter:url(#vpoDonutGlow);opacity:.48}.vpo-donut-glow .vpo-donut-value{stroke-width:14}.vpo-donut-inner{fill:#fff!important;stroke:none!important}.vpo-donut-inner-line{fill:none!important;stroke:#e5dfd7!important;stroke-width:1!important}.vpo-donut strong{position:relative;text-align:center;font-size:27px;line-height:1.05;font-variant-numeric:tabular-nums}.vpo-donut small{display:block;margin-top:3px;font-size:10px;font-weight:400;color:#7d7166}
.vpo-legend{display:grid;gap:9px;flex:1;min-width:0}.vpo-legend>div{display:grid;grid-template-columns:7px minmax(0,1fr) 22px 27px;align-items:center;gap:6px;font-size:10px}.vpo-legend i{width:7px;height:7px;border-radius:50%;box-shadow:0 0 5px currentColor}.vpo-legend span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vpo-legend strong{text-align:right;font-size:11px}.vpo-legend small{text-align:right;font-size:10px;color:#7d7166}.vp .vpo-top-module{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:8px 11px;border:1px solid #eee5dc;border-radius:13px;background:#fcf8f2;text-align:left}.vpo-top-module>span:nth-child(2){display:grid;gap:2px;min-width:0}.vpo-top-module small{font-size:10px;color:#8b704a}.vpo-top-module strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vpo-top-module b{font-size:17px;margin-left:auto}.vpo-top-module>.material-symbols-outlined{font-size:17px;color:#8a6b45}
.vp-admin .vpo-map-card{min-width:0;min-height:704px}.vpo-map-layout{position:relative;min-height:600px}.vpo-map-canvas{position:relative;height:600px;min-width:0;overflow:hidden}.vpo-map-canvas.is-city{border-radius:15px;background:#f6f2ec}.vpo-map-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:vpo-map-in .48s cubic-bezier(.16,1,.3,1) both}.vpo-land{fill:#f4efea;stroke:#e2d3c6;stroke-width:1.35;stroke-linejoin:round;fill-rule:evenodd}.vpo-admin-region{fill:transparent;stroke:#d8c9ba;stroke-width:.78;stroke-linejoin:round;vector-effect:non-scaling-stroke}.vpo-city-region{fill:color-mix(in srgb,var(--city) 7%,transparent);stroke:var(--city);stroke-width:1.45;stroke-opacity:.68;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px color-mix(in srgb,var(--city) 16%,transparent))}.vpo-city-outline{fill:color-mix(in srgb,#c49a50 4%,transparent);stroke:#be9957;stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 3px 8px #9d74251b)}
.vpo-city-basemap{position:absolute;inset:0;background:#f5f1eb;animation:vpo-map-in .55s cubic-bezier(.16,1,.3,1) both}.vpo-city-basemap .leaflet-tile-pane{filter:saturate(.62) sepia(.1) brightness(1.035)}.vpo-city-basemap .leaflet-control-attribution{font-size:8px;background:#fffdfac9;color:#75695d}.vpo-leaflet-marker{background:transparent;border:0}.vpo-leaflet-marker span{display:block;width:17px;height:17px;margin:10px;border:3px solid #fff;border-radius:50%;background:var(--point);box-shadow:0 2px 10px color-mix(in srgb,var(--point) 65%,transparent),0 0 0 7px color-mix(in srgb,var(--point) 18%,transparent)}.vpo-leaflet-popup .leaflet-popup-content-wrapper{border:1px solid #e6d7c4;border-radius:15px;background:#fffdfaf5;backdrop-filter:blur(18px);box-shadow:0 12px 30px #60431d20}.vpo-leaflet-popup .leaflet-popup-content{margin:14px 34px 14px 15px}.vpo-leaflet-popup .leaflet-popup-tip{background:#fffdfa}.vpo-leaflet-popup .leaflet-popup-close-button{top:7px!important;right:7px!important;color:#7d6b55!important}.vpo-leaflet-card{display:grid;gap:5px;min-width:150px}.vpo-leaflet-card strong{font:650 12px/1.3 'Plus Jakarta Sans',sans-serif;color:#28221c}.vpo-leaflet-card small{font:500 10px/1.3 'Plus Jakarta Sans',sans-serif;color:#776b5f}.vp .vpo-leaflet-card button{display:flex;align-items:center;gap:4px;min-height:26px;padding:0;border:0;background:transparent;color:#825e24;font:600 10px/1 'Plus Jakarta Sans',sans-serif}.vpo-leaflet-card .material-symbols-outlined{font-size:15px}
.vp .vpo-map-point{display:grid;place-items:center;width:40px;height:40px;min-height:0;padding:0;border:0;background:transparent;cursor:pointer}.vp .vpo-map-point:active{transform:none}.vpo-map-point span{display:block;width:17px;height:17px;border:3px solid white;border-radius:50%;background:var(--point);box-shadow:0 2px 9px color-mix(in srgb,var(--point) 62%,transparent),0 0 0 6px color-mix(in srgb,var(--point) 15%,transparent);transition:box-shadow .18s ease,transform .18s ease}.vpo-map-point:hover span,.vpo-map-point:focus-visible span{transform:scale(1.1);box-shadow:0 2px 10px color-mix(in srgb,var(--point) 70%,transparent),0 0 0 9px color-mix(in srgb,var(--point) 17%,transparent)}
.vpo-map-loading,.vpo-map-empty{position:absolute;bottom:18px;left:18px;right:18px;text-align:center;font-size:11px;color:#8c7a65}.vpo-map-project{position:absolute;left:var(--card-x,50%);top:var(--card-y,50%);z-index:6;width:230px;max-width:calc(100% - 24px);transform:translate(24px,-50%);transition:left .2s ease,top .2s ease}.vpo-map-project.is-left{transform:translate(calc(-100% - 24px),-50%)}.vpo-map-project.is-above{transform:translate(24px,calc(-100% - 20px))}.vpo-map-project.is-left.is-above{transform:translate(calc(-100% - 24px),calc(-100% - 20px))}.vpo-map-project:empty{display:none}.vpo-map-project>div{position:relative;display:grid;gap:5px;padding:14px 38px 14px 15px;border:1px solid #e6d7c4;border-radius:15px;background:#fffdfaf2;backdrop-filter:blur(18px);box-shadow:0 12px 30px #60431d20}.vpo-map-project strong{font-size:12px}.vpo-map-project small{font-size:10px}.vp .vpo-map-project button{border:0;background:transparent;padding:0;min-height:25px;font-size:10px;color:#825e24}.vp .vpo-map-project [data-close]{position:absolute;right:9px;top:9px;width:24px}.vpo-map-project [data-close] .material-symbols-outlined{font-size:16px}
.vpo-cities{position:absolute;z-index:4;right:8px;top:10px;width:min(310px,39%);padding:15px;border:1px solid #e8ddd2;border-radius:18px;background:#fffdfaf0;backdrop-filter:blur(18px) saturate(1.04);box-shadow:0 14px 38px #6a4a2514}.vpo-cities-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.vpo-cities-head>span{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:#f7efe4;color:#986d2c;flex:none}.vpo-cities-head>span .material-symbols-outlined{font-size:18px}.vpo-cities h3{font-size:12px;line-height:1.25}.vpo-cities-head p{font-size:9px;color:#807468;margin-top:2px}.vpo-city-list{display:grid;gap:7px}.vpo-city-list>p{padding:17px 8px;font-size:10px;line-height:1.5;color:#776d63}.vp .vpo-city-list button{display:grid;grid-template-columns:9px minmax(0,1fr) 18px;align-items:center;gap:9px;width:100%;min-height:62px;padding:10px 11px;border:1px solid #eee5dc;border-radius:13px;background:#fff;text-align:left}.vp .vpo-city-list button:hover,.vp .vpo-city-list button.is-current{border-color:color-mix(in srgb,var(--city) 30%,#e9dfd5);background:color-mix(in srgb,var(--city) 3%,white);box-shadow:0 6px 15px color-mix(in srgb,var(--city) 7%,transparent)}.vpo-city-list i{width:9px;height:9px;border:2px solid #fff;border-radius:50%;background:var(--city);box-shadow:0 0 0 3px color-mix(in srgb,var(--city) 12%,transparent),0 1px 5px color-mix(in srgb,var(--city) 30%,transparent)}.vpo-city-list span{display:grid;gap:3px;min-width:0}.vpo-city-list b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vpo-city-list small{font-size:9px;color:#84796e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vpo-city-list u{display:block;width:100%;height:3px;border-radius:99px;background:#f1ece7;overflow:hidden;text-decoration:none}.vpo-city-list em{display:block;height:100%;border-radius:inherit;background:var(--city)}.vpo-city-list .material-symbols-outlined{font-size:16px;color:#876e4d}.vp .vpo-back{width:100%;margin-top:10px;font-size:10px;min-height:34px;padding:6px 10px;background:#faf3e8;color:#76561f}.vpo-back .material-symbols-outlined{font-size:15px}.vpo-map-status{min-height:14px;color:#8d6e43;font-size:9px}
.vpo-map-canvas.is-zooming{opacity:.55;transition:opacity .18s}.vpo-map-canvas.is-city .vpo-map-svg{animation:vpo-map-in .55s cubic-bezier(.16,1,.3,1) both}@keyframes vpo-map-in{from{opacity:.3;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
.vpo-week{font-size:11px;color:#7c674a}.vpo-week summary{display:flex;align-items:center;gap:4px;width:max-content;cursor:pointer;list-style:none}.vpo-week summary::-webkit-details-marker{display:none}.vpo-week[open] summary .material-symbols-outlined{transform:rotate(180deg)}.vpo-week summary .material-symbols-outlined{font-size:15px}.vpo-week>div{display:flex;flex-wrap:wrap;align-items:center;gap:13px;margin-top:10px;padding:13px 15px;border:1px solid #e9ded0;border-radius:12px;background:#fffcf8}.vpo-week b{margin-left:3px;color:#30271c}.vp .vpo-week button{min-height:29px;padding:4px 9px;font-size:10px;margin-left:auto}.vpo-week button .material-symbols-outlined{font-size:15px}
@media(max-width:1280px){.vp-admin .vpo-row{grid-template-columns:minmax(0,1.65fr) minmax(310px,.85fr)}.vpo-module{padding:12px}.vpo-ring{width:84px!important;height:84px!important}}
@media(max-width:1080px){.vp-admin .vpo-row{grid-template-columns:1fr}.vpo-map-project{right:326px}}
@media(max-width:760px){.vp-admin .vpo-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.vp-admin .vpo-metric:nth-child(2){border-right:0}.vp-admin .vpo-metric:nth-child(-n+2){border-bottom:1px solid #eee7de}.vpo-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vpo-map-layout{display:grid;grid-template-columns:1fr;gap:14px;min-height:0}.vpo-map-canvas{height:440px}.vpo-map-svg{width:138%;max-width:none}.vpo-cities{position:static;transform:none;width:auto;padding:13px}.vpo-city-list{grid-template-columns:repeat(2,minmax(0,1fr))}.vpo-map-project{right:12px;bottom:12px}.vp-admin .vpo-map-card{min-height:0}}
@media(max-width:460px){.vp-admin .vpo-metric{padding:11px;gap:8px}.vpo-metric-bars{display:none}.vpo-module-grid{gap:8px}.vpo-module{padding:10px}.vpo-module h3{font-size:10px}.vpo-ring{width:76px!important;height:76px!important}.vpo-distribution-core{gap:8px}.vpo-donut{width:130px;height:130px}.vpo-city-list{grid-template-columns:1fr}.vpo-map-canvas{height:390px}.vp-admin .vpo-overview .vp-panel{padding:17px}}
@media(prefers-reduced-motion:reduce){.vpo-map-svg,.vpo-map-canvas{animation:none!important;transition:none!important}}

/* ===================================================================
   Globo 3D de proyectos (30-09-2026) — monocromatico marfil y dorado
   =================================================================== */
.vpo-map-canvas{background:radial-gradient(circle at 50% 46%,#fffdf9 0%,#fbf6ee 55%,#f6efe4 100%);border-radius:16px}
.vpo-globe-layer,.vpo-city-layer{position:absolute;inset:0}
.vpo-city-layer{z-index:4;opacity:0;transition:opacity .6s ease}
.vpo-city-layer.is-visible{opacity:1}
.vpo-map-canvas .vpo-map-project{z-index:8}
.vgl{position:absolute;inset:0;outline:none;cursor:grab;touch-action:none;user-select:none;opacity:0;transition:opacity .5s ease}
.vgl.is-ready{opacity:1}
.vgl.is-dragging{cursor:grabbing}
.vgl.is-flying{cursor:progress}
.vgl:focus-visible{box-shadow:inset 0 0 0 2px #7a5813;border-radius:16px}
.vgl-canvas{position:absolute;inset:0;display:block}
.vgl-pins{position:absolute;inset:0;pointer-events:none}
.vgl-pin{position:absolute;left:-15px;top:-15px;display:grid;place-items:center;width:30px;height:30px;min-height:0;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;will-change:transform}
.vgl-pin[hidden]{display:none}
.vgl-pin span{width:13px;height:13px;border:2.5px solid #fff;border-radius:50%;background:#a66f12;box-shadow:0 2px 8px rgba(122,82,18,.45),0 0 0 5px rgba(184,137,58,.18);transition:transform .18s ease,box-shadow .18s ease}
.vgl-pin:hover span,.vgl-pin:focus-visible span{transform:scale(1.25);box-shadow:0 2px 10px rgba(122,82,18,.55),0 0 0 8px rgba(184,137,58,.22)}
.vgl-pin.is-city span{background:#7d5310;transform:scale(1.2);animation:vglLatido 1.8s ease-in-out infinite}
@keyframes vglLatido{50%{box-shadow:0 2px 10px rgba(122,82,18,.5),0 0 0 11px rgba(184,137,58,.10)}}
.vgl-hint{position:absolute;left:50%;bottom:16px;display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,253,249,.88);border:1px solid #eadcc5;color:#7d6a4c;font-size:12.5px;transform:translateX(-50%);pointer-events:none;transition:opacity .4s ease}
.vgl-hint .material-symbols-outlined{font-size:18px;color:#a66f12}
.vgl.was-used .vgl-hint{opacity:0}
.vgl-controls{position:absolute;right:14px;bottom:14px;display:grid;gap:6px}
.vgl-controls button{display:grid;place-items:center;width:38px;height:38px;min-height:0;padding:0;border-radius:12px;border:1px solid #e6d7bf;background:rgba(255,253,249,.94);color:#7a5813;cursor:pointer;box-shadow:0 4px 12px rgba(81,54,15,.08);transition:background-color .16s ease,transform .16s ease}
.vgl-controls button:hover{background:#f8efe1;transform:translateY(-1px)}
.vgl-controls .material-symbols-outlined{font-size:20px}
.vpo-map-canvas.is-city .vgl-controls,.vpo-map-canvas.is-city .vgl-hint{opacity:0;pointer-events:none}
@media (prefers-reduced-motion:reduce){.vgl,.vpo-city-layer{transition:none}.vgl-pin.is-city span{animation:none}}

/* ---- Globo más grande y pines luminosos por ciudad (30-09-2026) ---- */
.vpo-map-card{min-height:0}
.vpo-map-layout{min-height:0}
.vpo-map-canvas{height:clamp(600px,74vh,780px)}
/* Pin: disco del color de la ciudad, anillo blanco al centro y resplandor. */
.vgl-pin{left:-22px;top:-22px;width:44px;height:44px;transition:opacity .2s linear}
.vgl-pin span{position:relative;width:22px;height:22px;border:0;border-radius:50%;background:var(--pin);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--pin) 22%,transparent),0 0 16px 5px color-mix(in srgb,var(--pin) 55%,transparent),0 2px 6px rgba(0,0,0,.18)}
.vgl-pin span::after{content:'';position:absolute;inset:6px;border-radius:50%;border:2.5px solid #fff;background:color-mix(in srgb,var(--pin) 70%,#fff)}
.vgl-pin:hover span,.vgl-pin:focus-visible span{transform:scale(1.15);box-shadow:0 0 0 6px color-mix(in srgb,var(--pin) 26%,transparent),0 0 22px 8px color-mix(in srgb,var(--pin) 60%,transparent),0 2px 6px rgba(0,0,0,.2)}
.vgl-pin.is-city span{background:var(--pin);transform:scale(1.18);animation:vglHalo 1.9s ease-in-out infinite}
@keyframes vglHalo{50%{box-shadow:0 0 0 9px color-mix(in srgb,var(--pin) 16%,transparent),0 0 26px 10px color-mix(in srgb,var(--pin) 50%,transparent),0 2px 6px rgba(0,0,0,.18)}}
/* Mientras se arrastra, el lienzo no anima otras propiedades. */
.vgl.is-dragging .vgl-pin{transition:none}
.vpo-leaflet-marker span{position:relative;display:block;width:22px;height:22px;margin:8px;border:0;border-radius:50%;background:var(--point);box-shadow:0 0 0 4px color-mix(in srgb,var(--point) 22%,transparent),0 0 16px 5px color-mix(in srgb,var(--point) 55%,transparent),0 2px 6px rgba(0,0,0,.18)}
.vpo-leaflet-marker span::after{content:'';position:absolute;inset:6px;border-radius:50%;border:2.5px solid #fff;background:color-mix(in srgb,var(--point) 70%,#fff)}

/* El pin es un botón, y la regla general ".vp button" (relleno 9px 15px,
   inline-flex) le ganaba por especificidad: al punto le quedaban 12 px de
   ancho para 22 de alto y salía en óvalo. Se fija todo con más especificidad
   y el punto no se encoge nunca. */
.vgl .vgl-pin{display:grid;place-items:center;padding:0;gap:0;border:0;border-radius:50%;background:transparent;box-shadow:none;min-width:0;min-height:0}
.vgl .vgl-pin span{display:block;flex:none;box-sizing:border-box;width:22px;height:22px;min-width:22px;aspect-ratio:1}
.vgl .vgl-pin span::after{box-sizing:border-box}
.vgl .vgl-controls button{padding:0;gap:0;width:38px;height:38px;min-height:0}
.vp .vpo-map-project [data-open]{justify-self:start;display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 12px;margin-top:3px;border-radius:999px;background:#a66f12;color:#fff;font-size:11px;font-weight:600;cursor:pointer}.vp .vpo-map-project [data-open] .material-symbols-outlined{font-size:15px}

/* Cinco disciplinas (catálogo único): 3 arriba y 2 abajo en pantalla ancha; en dos columnas, la última ocupa el ancho.
   Los nombres completos nunca se parten a media palabra. */
.vpo-module h3{overflow-wrap:normal;word-break:normal;hyphens:manual}
.vpo-module-grid[data-n="5"]{grid-template-columns:repeat(6,minmax(0,1fr))}
.vpo-module-grid[data-n="5"]>.vpo-module{grid-column:span 2}
.vpo-module-grid[data-n="5"]>.vpo-module:nth-child(n+4){grid-column:span 3}
@media(max-width:760px){
  .vpo-module-grid[data-n="5"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vpo-module-grid[data-n="5"]>.vpo-module,.vpo-module-grid[data-n="5"]>.vpo-module:nth-child(n+4){grid-column:auto}
  .vpo-module-grid[data-n="5"]>.vpo-module:last-child{grid-column:1/-1}
}
@media(max-width:460px){
  .vpo-module header{gap:6px}
  .vpo-module h3{min-width:auto}
  .vpo-module-icon{width:28px;height:28px}.vpo-module-icon .material-symbols-outlined{font-size:16px}
  .vp .vpo-module header button{width:22px}
}
