*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app-shell{flex-direction:column;min-height:100dvh}.app-shell,.mapa-page{display:flex;height:100%}.mapa-page{position:relative;flex:1 1;min-height:0;width:100%;flex-direction:column}@media (min-width:769px){.mapa-desktop-chrome--header{order:1}.mapa-canvas{order:2}.mapa-desktop-chrome--footer{order:3}.mapa-mobile-chrome{order:4}}.mapa-canvas{flex:1 1;min-height:0;position:relative;overflow:hidden}.mapa-footer,.mapa-header{display:block}.mapa-mobile-chrome{display:none}.mapa-header{flex-shrink:0;position:relative;z-index:2;width:100%;padding:12px 20px;background:#1b4332;color:#fff;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.mapa-header-title{min-width:0}.mapa-header-title h1{margin:0;font-size:1.25rem;font-weight:600}.mapa-header-title p{margin:4px 0 0;font-size:.85rem;opacity:.85}.mapa-header .layer-toggle-list{color:#fff}.mapa-header .layer-toggle-item input{accent-color:#95d5b2}.mapa-footer{flex-shrink:0;padding:8px 16px;font-size:.75rem;background:#f5f5f5;color:#666}@media (min-width:769px){.mapa-page--embed{position:relative}.mapa-page--embed .mapa-desktop-chrome--header{position:absolute;top:0;left:0;right:0;z-index:3;order:unset}.mapa-page--embed .mapa-canvas .maplibregl-ctrl-top-right{top:72px!important;right:10px!important}.mapa-page--embed .mapa-canvas{order:1;flex:1 1;min-height:100%}.mapa-page--embed .mapa-desktop-chrome--footer{display:none}}.mapa-page--embed .mapa-auth-chip,.mapa-page--embed .mapa-header-title,.mapa-page--embed .mapa-mobile-auth,.mapa-page--embed .mapa-title-pill{display:none!important}.mapa-page--embed .mapa-header{background:rgba(27,67,50,.88);padding:8px 16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.mapa-page--embed .mapa-footer,.mapa-page--patrimonio .mapa-desktop-chrome--header,.mapa-page--patrimonio .mapa-mobile-chrome{display:none}.mapa-page--patrimonio .mapa-canvas{min-height:100%}.layer-toggle-list{display:flex;gap:16px;flex-wrap:wrap;font-size:.85rem}.layer-toggle-list--column{flex-direction:column;flex-wrap:nowrap;gap:10px}.layer-toggle-item{display:flex;align-items:center;gap:8px;cursor:pointer;min-height:28px}.layer-toggle-item input{width:18px;height:18px;flex-shrink:0;accent-color:#1b4332}@media (max-width:768px){.mapa-page{height:100dvh;min-height:100dvh;overflow:hidden}.mapa-canvas{position:absolute;inset:0;flex:none;z-index:0;width:100%;height:100%;min-height:100dvh}.mapa-canvas .maplibregl-ctrl-top-right{top:calc(52px + env(safe-area-inset-top, 0px))}.mapa-page--embed .mapa-canvas .maplibregl-ctrl-top-right{top:calc(8px + env(safe-area-inset-top, 0px))}.mapa-desktop-chrome{display:none}.mapa-mobile-chrome{display:block;position:absolute;inset:0;z-index:3;pointer-events:none}.mapa-title-pill{top:calc(8px + env(safe-area-inset-top, 0px));left:50%;transform:translateX(-50%);max-width:calc(100% - 108px);padding:8px 14px;border-radius:999px;background:rgba(27,67,50,.92);color:#fff;font-size:.8rem;font-weight:600;text-align:center;box-shadow:0 2px 12px rgba(0,0,0,.18);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mapa-title-pill,.sheet-backdrop{pointer-events:auto;position:absolute}.sheet-backdrop{inset:0;border:none;padding:0;margin:0;background:rgba(0,0,0,.25);cursor:pointer;z-index:1}.mapa-bottom-sheet{pointer-events:auto;position:absolute;left:0;right:0;bottom:0;z-index:2;background:#fff;border-radius:16px 16px 0 0;box-shadow:0 -4px 24px rgba(0,0,0,.15);display:flex;flex-direction:column;transition:max-height .28s ease,transform .28s ease;padding-bottom:env(safe-area-inset-bottom,0)}.mapa-bottom-sheet.is-collapsed{max-height:72px}.mapa-bottom-sheet.is-expanded{max-height:min(55vh,480px)}.sheet-handle-area{flex-shrink:0;padding:8px 16px 0;touch-action:none;cursor:-webkit-grab;cursor:grab}.sheet-handle-area:active{cursor:-webkit-grabbing;cursor:grabbing}.sheet-handle{width:40px;height:4px;margin:0 auto 8px;border-radius:999px;background:#cbd5e1}.sheet-summary{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 0 12px;border:none;background:transparent;font:inherit;cursor:pointer;text-align:left}.sheet-summary-title{font-size:1rem;font-weight:600;color:#1b4332}.sheet-summary-meta{font-size:.85rem;color:#64748b}.sheet-body{flex:1 1;min-height:0;overflow-y:auto;padding:0 16px 16px;-webkit-overflow-scrolling:touch}.mapa-bottom-sheet.is-collapsed .sheet-body{display:none}.sheet-footer{margin:12px 0 0;padding-top:12px;border-top:1px solid #e2e8f0;font-size:.75rem;color:#64748b;line-height:1.4}}.map-login-page{min-height:100dvh;align-items:center;justify-content:center;background:#f8fafc}.map-login-card,.map-login-page{display:flex;flex-direction:column;padding:24px}.map-login-card{width:100%;max-width:400px;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.08);gap:10px}.map-login-card h2{margin:0;font-size:1.25rem;color:#1b4332}.map-login-muted{margin:0 0 8px;font-size:.9rem;color:#64748b}.map-login-card label{font-size:.85rem;font-weight:600;color:#334155}.map-login-card input{padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:1rem}.map-login-card button{margin-top:8px;padding:12px;background:#1b4332;color:#fff;border:none;border-radius:8px;font-size:1rem;cursor:pointer}.map-login-card button:disabled{opacity:.6;cursor:not-allowed}.map-login-error{background:#fef2f2;color:#b91c1c;padding:10px 12px;border-radius:8px;font-size:.9rem}.map-login-back{margin-top:16px;font-size:.9rem}.map-login-back a{color:#1b4332}.mapa-auth-chip{display:inline-flex;align-items:center;gap:8px;margin-left:12px;font-size:.85rem}.mapa-auth-chip a,.mapa-auth-chip button{color:#bbf7d0;background:transparent;border:1px solid hsla(0,0%,100%,.35);border-radius:6px;padding:4px 10px;font-size:.8rem;cursor:pointer;text-decoration:none}.mapa-auth-chip a:hover,.mapa-auth-chip button:hover{background:hsla(0,0%,100%,.1)}.mapa-mobile-auth{pointer-events:auto;position:absolute;top:calc(8px + env(safe-area-inset-top, 0px));left:12px;z-index:4}.mapa-mobile-auth--guest{display:inline-flex;padding:6px 12px;border-radius:999px;color:#bbf7d0;font-size:.75rem;font-weight:600;text-decoration:none}.mapa-mobile-auth--guest,.mapa-mobile-auth-trigger{align-items:center;background:rgba(27,67,50,.92);box-shadow:0 2px 12px rgba(0,0,0,.18)}.mapa-mobile-auth-trigger{display:flex;justify-content:center;width:36px;height:36px;padding:0;border:2px solid rgba(149,213,178,.85);border-radius:50%;cursor:pointer}.mapa-mobile-auth-avatar{color:#fff;font-size:.85rem;font-weight:700;line-height:1}.mapa-mobile-auth-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:200px;max-width:min(260px,calc(100vw - 24px));padding:10px 12px;border-radius:10px;background:rgba(27,67,50,.96);box-shadow:0 4px 20px rgba(0,0,0,.22)}.mapa-mobile-auth-email{margin:0 0 8px;color:#fff;font-size:.75rem;line-height:1.35;word-break:break-all}.mapa-mobile-auth-logout{width:100%;padding:7px 10px;border:1px solid hsla(0,0%,100%,.3);border-radius:6px;background:transparent;color:#bbf7d0;font-size:.8rem;cursor:pointer}.mapa-mobile-auth-logout:hover{background:hsla(0,0%,100%,.1)}.maplibregl-popup-content{padding:12px 14px;max-width:min(300px,calc(100vw - 32px));font-size:.9rem;line-height:1.45}.custom-popup-sub{color:#64748b;font-size:.85em}.custom-popup-body{margin-top:8px}.custom-popup-text{margin:8px 0 0;color:#334155;font-size:.88rem}.holo-image-wrap{position:relative;overflow:hidden;border-radius:10px;margin:10px 0 4px;box-shadow:0 0 0 1px rgba(120,200,255,.25),0 4px 16px rgba(13,148,136,.15)}.holo-image-wrap img{width:100%;max-height:180px;object-fit:cover;display:block}.holo-image-wrap:before{inset:0;background:linear-gradient(135deg,hsla(0,0%,100%,.08),rgba(120,220,255,.12) 35%,rgba(180,130,255,.1) 65%,hsla(0,0%,100%,.06));mix-blend-mode:screen}.holo-image-wrap:after,.holo-image-wrap:before{content:"";position:absolute;pointer-events:none}.holo-image-wrap:after{inset:-40%;background:linear-gradient(115deg,transparent 35%,hsla(0,0%,100%,.45) 48%,rgba(120,220,255,.25) 50%,transparent 62%);animation:holo-shine 4s ease-in-out infinite}@keyframes holo-shine{0%,to{transform:translateX(-120%) rotate(8deg)}50%{transform:translateX(120%) rotate(8deg)}}