
:root{--bg:#071b16;--panel:#0b2019e8;--edge:#d5ebce2f;--light:#f4f9ef;--muted:#afc7b6;--lime:#81C906;--sans:'DM Sans',sans-serif;--head:'Manrope',sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);font-family:var(--sans);color:var(--light)}button{font:inherit;cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid var(--lime);outline-offset:3px}[hidden]{display:none!important}.app{width:100%;height:100dvh;min-height:600px;position:relative;isolation:isolate;overflow:hidden}.map{position:absolute;inset:0;z-index:0;background:#0b2420}.map-shade{position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(90deg,#061712bf 0,transparent 37%,transparent 68%,#07181235 100%),linear-gradient(0deg,#061713c9 0,transparent 22%,transparent 73%,#0515107d 100%)}.terrain-label{position:absolute;top:133px;left:50%;z-index:2;transform:translateX(-50%);white-space:nowrap;font:700 9px var(--sans);letter-spacing:.27em;color:#eaf8edbd;text-shadow:0 1px 10px #031509}.terrain-label span{color:#ace4ae;margin:0 7px}.map-loading{position:absolute;z-index:11;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px 19px;border-radius:12px;background:#0c281eea;border:1px solid #b6eca456;display:flex;gap:12px;align-items:center;color:#e5f5e2;font-size:12px;box-shadow:0 20px 90px #01130c77}.spinner{width:17px;height:17px;border:2px solid #c1eaa13d;border-top-color:#c6f39a;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.header{position:absolute;z-index:10;top:0;left:0;right:0;height:108px;display:flex;align-items:center;justify-content:space-between;padding:0 3.3%;gap:25px;background:linear-gradient(180deg,#061913d9,transparent);pointer-events:none}.header>*{pointer-events:auto}.header-brand{display:flex;align-items:center;gap:19px}.brand-logo{width:116px;height:92px;object-fit:contain}.brand-rule{height:30px;border-left:1px solid #cbe9c45c}.brand-extra{font-size:8px;font-weight:800;letter-spacing:.14em;line-height:1.8;color:#d8eed6}.header-middle{font-size:9px;font-weight:800;color:#e2f4d5bf;letter-spacing:.21em}.header-middle i,.footer i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#b5f473;box-shadow:0 0 12px #bdff88;margin-right:11px}.header-middle span{color:#73ad7b;margin:0 5px}.header-right{display:flex;align-items:center;gap:15px}.glass-action{border:1px solid #c9e7cc50;background:#11342899;border-radius:24px;color:#ddebdb;font-size:10px;font-weight:700;padding:12px 16px;backdrop-filter:blur(12px)}.glass-action:hover{background:#2a5a40a9}.header-label{background:#0b2d21ad;border:1px solid #d4eed33d;border-radius:50%;font-size:8px;display:grid;place-content:center;text-align:center;gap:2px;width:47px;height:47px;letter-spacing:.07em}.header-label strong{font-size:12px;color:#c9f38d}.layout{position:absolute;z-index:5;left:3.3%;right:3.3%;top:136px;bottom:81px;display:flex;justify-content:space-between;align-items:stretch;gap:18px;pointer-events:none}.layout>section,.layout>aside{pointer-events:auto}.sidebar{width:306px;flex:0 0 306px;min-height:0;background:linear-gradient(115deg,#0b261bdc,#0b261bac);border:1px solid #e6ffca33;border-radius:17px;box-shadow:0 20px 75px #02171058;backdrop-filter:blur(24px);overflow:hidden}.sidebar-scroll{height:100%;overflow:auto;padding:30px 24px 20px;scrollbar-width:thin;scrollbar-color:#6d946b55 transparent}.micro-label{display:flex;align-items:center;gap:10px;font-size:9px;font-weight:800;letter-spacing:.22em;color:#c3ebad}.star{font-size:19px;color:#bcfc98}h1,h2,h3,p{margin-top:0}h1{font:800 39px/1.11 var(--head);letter-spacing:-.062em;margin:24px 0 15px}h1 em,.dialog h2 em{font-style:normal;color:var(--lime)}.sidebar-intro{font-size:11.5px;line-height:1.75;color:#bad0bb;margin-bottom:28px}.section-title{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #d7f0ce30;padding:0 0 13px;margin:0 0 8px}.section-title>span{font-size:9px;letter-spacing:.13em;font-weight:800}.section-title small{font-size:9px;color:#b7d7af}.project-list{display:grid;gap:4px}.project-choice{appearance:none;width:100%;min-height:57px;display:flex;align-items:center;gap:11px;text-align:left;border:1px solid transparent;border-radius:10px;background:transparent;padding:9px 10px;color:#d4e9d6;transition:background .2s,border-color .2s}.project-choice:hover{background:#c0f78d16}.project-choice.active{border-color:#e2fbd84a;background:#c5f29d1e}.project-dot{width:9px;height:9px;border:2px solid var(--routecolor);border-radius:50%;box-shadow:0 0 11px var(--routecolor);flex:none}.project-choice.active .project-dot{background:var(--routecolor)}.choice-copy{flex:1;display:grid;gap:4px;min-width:0}.choice-copy strong{font:800 12px var(--head)}.choice-copy small{color:#9db7a5;font-size:10px}.choice-arrow{color:#b9daa3;font-size:16px}.sidebar-bottom{border-top:1px solid #d3eccc2b;padding-top:16px;margin-top:15px;display:flex;align-items:center;gap:12px}.sidebar-bottom img{width:61px}.sidebar-bottom span{color:#acc1aa;font-size:9px;line-height:1.7}.info-panel{width:317px;flex:0 0 317px;align-self:center;max-height:100%;overflow-y:auto;padding:25px 25px 21px;background:#0b211bf0;border:1px solid #d6edc93a;border-radius:17px;box-shadow:0 22px 95px #010e0a83;backdrop-filter:blur(25px);scrollbar-width:thin;scrollbar-color:#72977566 transparent}.info-top{display:flex;align-items:center;justify-content:space-between;color:#d3e9d3;font-size:9px;font-weight:800;letter-spacing:.15em}.info-top span:last-child{color:#96b3a0}.accent-bar{width:43px;height:4px;background:#c6ec95;border-radius:5px;margin:20px 0 22px}.info-category{font-size:9px;font-weight:800;letter-spacing:.12em;color:#b5e397}.info-panel h2{font:800 30px/1.11 var(--head);letter-spacing:-.055em;margin:11px 0 15px}.info-panel>p#projectDesc{font-size:11px;line-height:1.8;color:#c2d3c2;margin-bottom:22px}.info-metadata{border-top:1px solid #d7eece29;border-bottom:1px solid #d7eece29;padding:14px 0;display:grid;grid-template-columns:1fr 1fr;gap:9px}.info-metadata div{display:grid;gap:8px}.info-metadata span{font-size:8px;letter-spacing:.08em;color:#91aa99;font-weight:700}.info-metadata strong{font-size:11px;font-weight:700}.info-points-title{display:flex;justify-content:space-between;align-items:center;gap:5px;margin:23px 0 10px;font-size:9px;font-weight:800;letter-spacing:.12em}.info-points-title small{color:#96b5a2;font-size:9px;white-space:nowrap}.point-list{display:grid;gap:1px}.point-choice{width:100%;border:0;background:transparent;padding:8px 0;text-align:left;color:#e1eedb;display:flex;gap:12px;align-items:center;font-size:11px}.point-choice:hover{color:#d8ff93}.point-num{color:#99ba9c;font-size:9px;font-weight:800}.point-name{flex:1}.point-arrow{color:#acc3ad;font-size:15px}.info-buttons{display:flex;gap:8px;margin-top:19px}.tour-button{border:0;border-radius:9px;background:#cff194;color:#173121;min-height:43px;display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:11px;font-weight:800;padding:0 15px;flex:1}.tour-button:hover{background:#e8ffb8}.fit-button{width:43px;border:1px solid #d3eec747;border-radius:9px;background:#294b3b;color:#e9ffdd;font-size:24px}.fit-button:hover{background:#486d4a}.progress-track{height:2px;border-radius:2px;overflow:hidden;margin-top:12px;background:#426349;opacity:0;transition:opacity .2s}.progress-track.active{opacity:1}.progress-track span{height:100%;display:block;width:0;background:#d6fba6}.disclaimer{padding-top:12px!important;margin-top:16px;border-top:1px solid #d8f5cf25;font-size:9px!important;line-height:1.6!important;color:#90a996!important}.disclaimer b{display:inline-grid;place-items:center;width:14px;height:14px;border:1px solid #91aa9d;border-radius:50%;font-size:9px;margin-right:4px}.map-tools{position:absolute;right:calc(3.3% + 334px);bottom:108px;z-index:7;display:flex;flex-direction:column;gap:4px;padding:7px;border:1px solid #d7f2cb4a;border-radius:13px;background:#0a221bdc;backdrop-filter:blur(18px)}.map-tools button{width:33px;height:33px;border:0;background:transparent;border-radius:7px;color:#e3f5d8;font-weight:800;font-size:17px}.map-tools button:hover,.map-tools button.is-active{background:#d4f69d28;color:#e5ffbd}.tool-divider{border-top:1px solid #c6e7bc3b;margin:4px 8px}.map-tools #terrainToggle{font-size:11px;letter-spacing:-.02em}.basemap-switch{position:absolute;z-index:7;bottom:110px;left:calc(3.3% + 325px);display:flex;align-items:center;gap:4px;background:#09241bd9;border:1px solid #e1f4cb38;border-radius:30px;padding:4px;backdrop-filter:blur(13px)}.basemap-switch button{padding:9px 11px;font-size:10px;font-weight:800;color:#cbdfcf;background:transparent;border:0;border-radius:20px}.basemap-switch button.selected{background:#d1f2a0;color:#18331c}.layers-menu{position:absolute;z-index:12;right:calc(3.3% + 387px);bottom:155px;width:260px;background:#0c261def;border:1px solid #c4e7b64e;border-radius:13px;box-shadow:0 24px 80px #01180a9e;backdrop-filter:blur(19px);padding:18px}.layers-title{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid #d3ebc333;font-size:10px;letter-spacing:.12em}.layers-title button{background:none;border:0;color:#f0ffe7;font-size:20px}.layers-menu label{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;font-size:11px;color:#d1e5d0;cursor:pointer}.layers-menu label span{display:flex;align-items:center;gap:8px}.layers-menu i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--dot)}.layers-menu input{accent-color:#9ac566;width:17px;height:17px;cursor:pointer}.layer-actions{display:flex;gap:8px;border-top:1px solid #d3ebc333;padding-top:13px;margin-top:7px}.layer-actions button{border:1px solid #b9d9ae55;border-radius:8px;background:#d4f7a915;color:#e1efd8;flex:1;padding:8px 4px;font-size:9px;font-weight:800}.map-legend{position:absolute;z-index:5;left:calc(3.3% + 330px);bottom:166px;padding:12px 15px;background:#09281db5;border:1px solid #d7f6c244;border-radius:8px;display:flex;align-items:center;gap:10px;color:#dcebd2;font-weight:800;font-size:8px;letter-spacing:.12em;white-space:nowrap;backdrop-filter:blur(12px)}.legend-chip{display:flex;align-items:center;gap:8px}.legend-chip i{width:5px;height:5px;border-radius:50%;background:#9ef57a;box-shadow:0 0 8px #acff83}.legend-separator{width:1px;height:12px;background:#dde8c35e}.footer{position:absolute;z-index:7;bottom:0;left:0;right:0;height:62px;border-top:1px solid #e1f5db2a;background:linear-gradient(0deg,#041611ec,#041611a3);padding:0 3.3%;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:9px;font-weight:800;letter-spacing:.12em;color:#b4c9b2}.footer strong{letter-spacing:0;color:#f0ffe0}.footer-main{color:#e0ecd9}.footer-main strong,.footer b{color:#9ccc8e}.toast{position:absolute;z-index:22;left:50%;bottom:80px;transform:translate(-50%,10px);opacity:0;pointer-events:none;color:#0a321b;background:#dcf5c3;border-radius:10px;padding:12px 16px;font-size:11px;font-weight:800;box-shadow:0 14px 35px #02190e88;transition:opacity .2s,transform .2s;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}.dialog{position:fixed;z-index:30;inset:0;background:#051610c5;backdrop-filter:blur(8px);display:grid;place-items:center;padding:17px}.dialog-body{width:min(620px,100%);position:relative;border:1px solid #c6e8b456;border-radius:18px;padding:42px;background:linear-gradient(125deg,#1a3d2a,#081e16);box-shadow:0 28px 100px #00150c9e}.dialog-close{position:absolute;right:18px;top:16px;background:none;color:#dff1d3;border:0;font-size:26px}.dialog h2{font:800 37px/1.14 var(--head);letter-spacing:-.06em;margin:20px 0 28px}.guide-items{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.guide-items>div{padding-top:15px;border-top:1px solid #d1f1bf45}.guide-items strong{font-size:11px;color:#c9f08e}.guide-items h3{font-size:15px;margin:12px 0 7px}.guide-items p{font-size:11px;line-height:1.65;color:#b7cdb9}.guide-start{margin-top:20px;max-width:220px}.dialog-disclaimer{font-size:10px;color:#a8c0aa;line-height:1.6;margin-top:20px;margin-bottom:0}.mobile-project-tabs,.mobile-open,.mobile-backdrop{display:none}.maplibregl-ctrl-top-right,.maplibregl-ctrl-bottom-right{display:none}.maplibregl-ctrl-bottom-left{bottom:65px!important;left:calc(3.3% + 325px)!important}.maplibregl-ctrl-attrib{background:#06180cc9!important;color:#e0efda9c!important;font-size:8px!important}.maplibregl-ctrl-attrib a{color:#c4dfc2!important}.maplibregl-popup-content{border:1px solid #d4f6a65b!important;background:#0d2b1ff0!important;border-radius:12px!important;color:#eef6e6!important;padding:16px 18px!important;box-shadow:0 14px 45px #04160b96!important;min-width:190px}.maplibregl-popup-tip{border-top-color:#0d2b1f!important}.maplibregl-popup-close-button{font-size:19px;color:#dff1d7}.popup-kicker{font-size:9px;color:#bde6a3;letter-spacing:.14em;font-weight:800}.popup-title{margin:10px 0 7px;font:800 19px var(--head)}.popup-desc{font-size:10px;line-height:1.6;color:#bfd3bd;margin-bottom:0}.maplibregl-canvas{outline:0}.rail-marker{width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:#0d2b1f;border:2px solid var(--pointcolor);box-shadow:0 0 0 5px #09271b5c,0 0 12px var(--pointcolor);cursor:pointer}.rail-marker:after{content:'';width:6px;height:6px;border-radius:50%;background:var(--pointcolor)}.rail-marker.active{background:#edffc7;transform:scale(1.17)}.rail-marker.active:after{background:#134325}.train-marker{width:29px;height:29px;border-radius:50%;background:#ddff9d;border:4px solid #143522;box-shadow:0 0 0 9px #c0ef7230,0 0 25px #c6ff82b0;display:grid;place-items:center;color:#153720;font-weight:900;font-size:13px;pointer-events:none}
@media(min-width:1550px){.sidebar{width:339px;flex-basis:339px}.info-panel{width:348px;flex-basis:348px}.map-tools{right:calc(3.3% + 368px)}.layers-menu{right:calc(3.3% + 422px)}.basemap-switch{left:calc(3.3% + 356px)}.map-legend{left:calc(3.3% + 356px)}}
@media(max-width:1240px){.sidebar{width:267px;flex-basis:267px}.sidebar-scroll{padding:23px 19px}.info-panel{width:282px;flex-basis:282px;padding:20px}.info-panel h2{font-size:27px}.header-middle{display:none}.map-tools{right:calc(3.3% + 296px)}.layers-menu{right:calc(3.3% + 347px)}.basemap-switch{left:calc(3.3% + 278px)}.map-legend{left:calc(3.3% + 278px)}h1{font-size:34px}}
@media(max-width:890px){.app{min-height:0}.header{height:80px;padding:0 17px}.brand-logo{width:82px;height:67px}.brand-rule{height:24px}.brand-extra{font-size:7px}.header-right .glass-action{display:none}.layout{inset:0;pointer-events:none}.sidebar{display:none}.info-panel{position:absolute;z-index:17;left:12px;right:12px;bottom:12px;width:auto;max-height:72dvh;transform:translateY(calc(100% + 45px));transition:transform .35s ease;align-self:auto;pointer-events:auto;padding:24px;border-radius:16px}.info-panel.open{transform:translateY(0)}.map-tools{right:14px;bottom:186px}.map-legend{left:15px;bottom:231px;padding:9px 10px;font-size:7px}.basemap-switch{left:15px;bottom:187px}.layers-menu{right:55px;bottom:225px;max-width:calc(100vw - 75px)}.terrain-label{top:107px;font-size:8px;letter-spacing:.1em}.mobile-project-tabs{position:absolute;z-index:7;display:flex;bottom:109px;left:12px;right:12px;gap:8px;overflow:auto;scrollbar-width:none;padding:3px}.mobile-project-tabs::-webkit-scrollbar{display:none}.mobile-tab{white-space:nowrap;display:flex;align-items:center;gap:7px;border:1px solid #e7f8dc6b;background:#09261bdd;color:#e3efe0;border-radius:40px;padding:11px 12px;font-size:10px;font-weight:800;backdrop-filter:blur(13px)}.mobile-tab i{height:7px;width:7px;background:var(--routecolor);border-radius:50%}.mobile-tab.active{background:#d5f5a1;color:#143423;border-color:#d5f5a1}.mobile-tab.active i{background:#174122}.mobile-open{position:absolute;z-index:7;display:flex;justify-content:space-between;align-items:center;left:13px;right:13px;bottom:58px;height:42px;padding:0 15px;border:1px solid #d6f7be64;background:#123623e8;color:#eef7e6;border-radius:9px;font-size:11px;font-weight:800}.mobile-open span{color:#baf48e;font-size:18px}.mobile-backdrop:not([hidden]){display:block;position:absolute;z-index:16;inset:0;background:#07170eab}.footer{padding:0 14px;height:50px;justify-content:center}.footer>span:first-child,.footer>span:last-child{display:none}.maplibregl-ctrl-bottom-left{bottom:53px!important;left:0!important}.map-shade{background:linear-gradient(0deg,#061510bc,transparent 35%,transparent 75%,#06151060)}.map-loading{max-width:90vw;white-space:normal}.toast{bottom:158px;white-space:normal;width:max-content;max-width:80vw;text-align:center}}
@media(max-width:480px){.header{height:76px}.brand-extra{font-size:6px}.header-brand{gap:9px}.header-label{width:36px;height:36px;font-size:7px}.header-label strong{font-size:10px}.terrain-label{top:90px}.basemap-switch button{padding:8px 10px;font-size:9px}.map-legend{bottom:239px;gap:6px}.map-tools{bottom:195px}.dialog-body{padding:32px 24px}.dialog h2{font-size:27px;margin:19px 0}.guide-items{grid-template-columns:1fr;gap:6px}.guide-items>div{display:grid;grid-template-columns:32px auto;gap:5px}.guide-items strong{grid-row:span 2}.guide-items h3{margin:0}.guide-items p{margin:0}.info-panel h2{font-size:28px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* V2.1: mapa local funcional, no bloqueante, mientras se intenta MapLibre */
.map{opacity:0;pointer-events:none;transition:opacity .45s ease}
.app.online-map .map{opacity:1;pointer-events:auto}
.offline-map{position:absolute;inset:0;z-index:0;overflow:hidden;background:radial-gradient(ellipse at 57% 38%,#295846 0,#153d32 24%,#0c2924 47%,#081b19 81%),repeating-linear-gradient(70deg,#244f4212 0 1px,transparent 1px 43px)}
.app.online-map .offline-map{display:none}
.offline-map svg{position:absolute;inset:0;width:100%;height:100%;user-select:none;touch-action:none}
.offline-map .map-grid{stroke:#86b19b;stroke-width:.6;stroke-opacity:.23;stroke-dasharray:4 14}
.offline-map .map-grid-text{fill:#a5c5ae;font-weight:800;font-size:13px;letter-spacing:.12em;opacity:.75}
.offline-map .route-line-svg{stroke-width:3.4;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;transition:opacity .18s;cursor:pointer}
.offline-map .route-glow-svg{stroke-width:14;fill:none;stroke-linejoin:round;stroke-linecap:round;opacity:.38;filter:blur(8px);pointer-events:none;vector-effect:non-scaling-stroke}
.offline-map .rail-point{cursor:pointer;outline:none}
.offline-map .rail-point circle.point-outer{stroke-width:2;fill:#0c271d;filter:drop-shadow(0 0 7px #06140d)}
.offline-map .rail-point circle.point-center{fill:#dfffcb}
.offline-map .rail-point:focus-visible circle.point-outer{stroke:#fff;stroke-width:4}
.offline-map .rail-label{font:800 13px var(--sans);fill:#f3fff0;paint-order:stroke;stroke:#102a1f;stroke-width:4;stroke-linejoin:round;pointer-events:none}
.offline-map .geo-hint{fill:#a6d5b7;opacity:.65;font:800 26px var(--sans);letter-spacing:.32em}
.offline-map .watermark{fill:#b9d9c4;opacity:.28;font:900 100px var(--head);letter-spacing:.04em}
.map-status{position:absolute;z-index:6;top:117px;left:50%;transform:translateX(-50%);padding:9px 12px;border-radius:25px;background:#0a261ddb;border:1px solid #aed7b34f;display:flex;align-items:center;gap:10px;font-size:10px;font-weight:700;color:#e4f6db;white-space:nowrap;backdrop-filter:blur(10px);box-shadow:0 10px 32px #00150c99}
.map-status .status-dot{width:7px;height:7px;border-radius:50%;background:#e2c97d;box-shadow:0 0 10px #e5d28f}
.map-status button{border:1px solid #d4f8ae54;background:#b4f18a17;color:#e5f7dd;border-radius:20px;padding:6px 10px;font-size:9px;font-weight:800}
.map-status button:hover{background:#b4f18a38}
.app.online-map .map-status{display:none!important}
.offline-popup{position:absolute;z-index:9;left:50%;top:49%;transform:translate(-50%,-50%);width:min(270px,80vw);background:#0c2a20f5;border:1px solid #c8e9ad80;border-radius:15px;padding:19px 20px;box-shadow:0 25px 100px #010b07be;pointer-events:auto}
.offline-popup .popup-close{position:absolute;right:10px;top:8px;border:0;background:transparent;color:#eaf5de;font-size:23px}
.offline-popup .popup-kicker{margin:0 0 10px}
.offline-popup .popup-title{margin:0 0 9px}
.offline-popup .popup-desc{margin:0}
.offline-map .offline-train{fill:#d8fc9b;stroke:#143322;stroke-width:5;filter:drop-shadow(0 0 12px #dcfa9a)}
@media(max-width:890px){.map-status{top:82px;font-size:8px;padding:6px 8px;gap:7px;max-width:95vw}.map-status button{font-size:8px;padding:6px 7px}.offline-popup{top:43%}}

/* V2.2 · Imágenes geográficas XYZ sin dependencias externas de JavaScript */
.offline-map #rasterTiles .geo-tile{image-rendering:auto;opacity:.95}
.app.raster-active .offline-map{background:#11251c}
.app.raster-active .offline-map .watermark,.app.raster-active .offline-map .map-grid,.app.raster-active .offline-map .map-grid-text{opacity:0}
.app.raster-active .offline-map .geo-hint{opacity:.4}
.map-attribution{position:absolute;left:calc(3.3% + 330px);bottom:67px;z-index:7;background:#09251cd9;border:1px solid #ffffff28;border-radius:5px;padding:5px 7px;color:#e3ebd3;font:9px var(--sans)}
@media(max-width:890px){.map-attribution{left:14px;bottom:52px;font-size:8px;max-width:260px}}

/* V2.3: glassmorphism, atmospheric layer, CARTO-free dark tiles and schematic station detail */
:root { --cloud-opacity:.52;--cloud-zoom:0; }
.sidebar{
  background:linear-gradient(135deg,rgba(13,47,34,.49),rgba(8,28,24,.56))!important;
  -webkit-backdrop-filter:blur(33px) saturate(160%) brightness(.88);
  backdrop-filter:blur(33px) saturate(160%) brightness(.88);
  border-color:rgba(229,255,220,.27);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.11),0 16px 70px rgba(0,18,12,.39);
}
.info-panel{
  background:linear-gradient(145deg,rgba(12,43,31,.49),rgba(10,30,27,.56))!important;
  -webkit-backdrop-filter:blur(33px) saturate(155%) brightness(.83);
  backdrop-filter:blur(33px) saturate(155%) brightness(.83);
  border-color:rgba(231,255,224,.27);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.10),0 23px 85px rgba(0,16,10,.4);
}
.glass-action,.map-tools,.basemap-switch,.layers-menu,.dialog-body,.offline-popup {
  -webkit-backdrop-filter:blur(26px) saturate(150%);
  backdrop-filter:blur(26px) saturate(150%);
}
.layers-menu,.dialog-body,.offline-popup{background:rgba(12,35,29,.64)!important}
/* OSM raster is converted client-side to a genuine dark color scheme; no API key. */
.offline-map[data-style="oscuro"] #rasterTiles{filter:grayscale(.65) invert(.91) hue-rotate(175deg) brightness(.66) contrast(1.4) saturate(.9)}
.offline-map[data-style="topografico"] #rasterTiles{filter:brightness(.88) contrast(1.03) saturate(.94)}
.offline-map[data-style="satelite"] #rasterTiles{filter:brightness(.84) saturate(1.09)}
.app.raster-active .offline-map .geo-hint{opacity:.23}
/* Aerial clouds generated locally; no external images. */
.clouds{position:absolute;inset:-9%;z-index:2;pointer-events:none;
  background-image:url('assets/nubes-altura.webp');background-repeat:no-repeat;background-size:cover;
  opacity:var(--cloud-opacity);mix-blend-mode:screen;
  transition:opacity 1.1s ease,transform 1.4s ease;will-change:transform,opacity}
.clouds-a{transform:translate3d(calc(var(--cloud-zoom) * -1px),-2%,0) scale(1.08);animation:cloud-drift-one 66s ease-in-out infinite alternate}
.clouds-b{background-position:55% 15%;transform:scaleX(-1) translate3d(calc(var(--cloud-zoom) * 1px),2%,0);opacity:calc(var(--cloud-opacity) * .62);animation:cloud-drift-two 77s ease-in-out infinite alternate}
@keyframes cloud-drift-one{from{background-position:0% 32%}to{background-position:100% 70%}}
@keyframes cloud-drift-two{from{background-position:100% 30%}to{background-position:10% 65%}}
/* Provisional camera tilt, not a DEM mesh. User-facing copy identifies this explicitly. */
.offline-map{perspective:1400px;perspective-origin:50% 55%}
.offline-map svg{transition:transform .85s cubic-bezier(.25,.65,.3,1),filter .85s ease;transform-origin:center 58%;backface-visibility:hidden}
.app.terrain-perspective .offline-map svg{transform:rotateX(22deg) scale(1.10) translateY(3%);filter:drop-shadow(0 24px 33px rgba(0,0,0,.33))}
.app.terrain-perspective .map-shade{background:linear-gradient(0deg,#02120df0,transparent 44%,#00140980)}
/* More legible points and labels at near zoom. */
.offline-map .rail-point circle.point-outer{fill:#0f271dcc;stroke-width:2.3}
.offline-map .rail-label{font-weight:850;paint-order:stroke fill;stroke:#0b231b;stroke-width:4.4}
.point-list{scrollbar-width:thin;scrollbar-color:#91b39e66 transparent}
@media(max-width:890px){.info-panel{background:rgba(9,37,27,.72)!important}.clouds{inset:-5%}.terrain-label{background:rgba(0,20,11,.5);padding:4px;border-radius:9px}}
@media(prefers-reduced-motion:reduce){.clouds-a,.clouds-b{animation:none}}

/* V2.4 — Correcciones visuales e interfaz cartográfica */
:root{--lime:#81C906;--cloud-opacity:.58}
.header-middle i,.footer i{background:#81C906;box-shadow:0 0 12px #81C906}
.sidebar h1 em,h1 em{color:#a4ec62}
.offline-map .rail-point circle.point-outer{fill:#0b251eeb;stroke:#81C906;stroke-width:1.7;vector-effect:non-scaling-stroke;filter:none}
.offline-map .rail-point circle.point-center{fill:#ecffcc;vector-effect:non-scaling-stroke}
.offline-map .rail-point:focus-visible circle.point-outer{stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}
.offline-map .rail-label{font-weight:800;paint-order:stroke;stroke:rgba(5,26,17,.92);stroke-width:2.4;stroke-linejoin:round;pointer-events:none}
.offline-map .rail-point:hover circle.point-outer{stroke:#fff}
.clouds{background-image:url('assets/nubes-cenital.png');background-repeat:repeat;background-size:100% 100%;mix-blend-mode:screen;opacity:var(--cloud-opacity);filter:blur(5px);transition:opacity .9s ease;z-index:2}
.clouds-a{inset:-15%;transform:none;animation:cloud-drift-one 95s linear infinite alternate}
.clouds-b{inset:-18%;opacity:calc(var(--cloud-opacity) * .44);background-position:58% 38%;background-size:115% 110%;transform:scaleX(-1);animation:cloud-drift-two 120s ease-in-out infinite alternate}
.app.terrain-real .offline-map,.app.terrain-real .map{opacity:0;pointer-events:none}
.terrain3d-surface{position:absolute;inset:0;z-index:0;overflow:hidden;background:linear-gradient(180deg,#233e36,#061c17);cursor:grab;touch-action:none}
.terrain3d-surface:active{cursor:grabbing}
.terrain3d-surface[hidden]{display:none!important}
.terrain3d-canvas,.terrain3d-labels{position:absolute;left:0;top:0;display:block;max-width:none}
.terrain3d-labels{pointer-events:none}
.terrain3d-badge{position:absolute;z-index:1;left:50%;bottom:65px;transform:translateX(-50%);border:1px solid #9cdd805e;background:#0b231be0;border-radius:24px;padding:8px 14px;color:#d6efc9;font-size:9px;font-weight:800;letter-spacing:.12em;white-space:nowrap;pointer-events:none}
@media(max-width:890px){.terrain3d-badge{bottom:265px;max-width:88vw;white-space:normal;text-align:center;font-size:7px}}
