
    *{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body,html{height:100%;padding:0;margin:0;background-color:#232425;touch-action:manipulation}a{color:inherit;text-decoration:none}
    
    
    #brand-image{
    padding: 27px 0 5px;
    box-shadow: 1px 2px 2px #000000bd;
    background-image: linear-gradient(#16191e, #273d53);
    background-color: #2d343a;
    }
    
    h1{font-family:Marcellus,serif;font-size:1.8em;color:#ffffff;padding:25px 0 0;margin:0;padding-left:.7em}.version{display:block;color:#888888;padding:0 0 25px 21px;font-size:.7em;}#map,#perfil,#settings{position:absolute;width:100%;height:100%}#settings{height:auto;min-height:100%}#featured,#lista{position:absolute;width:100%;min-height:100%}#featured,#lista,#perfil,#settings{display:none;background-color:#232425}#login,#spinner,#spinnerLista{text-align:center;display:flex;justify-content:center;height:100%;flex-direction:column;align-items:center}#login{height: calc(100% - 50px);}#spinner,#spinnerLista{display:none;color:#fff}#spinnerLista{height:100vh}.loginlabel,.noaccount{max-width:450px;width:80vw;box-sizing:border-box;margin:10px auto;color:#fff;font-family:Marcellus,serif;font-size:1.2em;text-align:left}.noaccount{font-size:.9em;text-align:center}#myemail,#mypassword{-webkit-appearance:none;max-width:450px;height:38px;width:80vw;box-sizing:border-box;margin:10px auto;border-radius:4px;border:none;padding:0 10px;font-size:1rem}#loginsubmit{width:80vw;height:43px;background-color:#6aa8d7; border-radius:4px;max-width:450px;line-height:43px;color:#fff;font-family:Marcellus,serif;margin:10px auto;cursor:pointer}

    #units_select,#lang_select{display:flex;padding:0 20px;margin-top:20px;width:100%;box-sizing:border-box;justify-content: space-between;align-items: center;}
    #units_select{margin-bottom: 20px;}
    
    /* ---- Locate control (js2/locate.js) ----
       Replaces L.Control.Locate2's DOM. v3.4 positioned it by styling Leaflet's generic
       .leaflet-top corner container (z-index 3000, right 115px, top 5px) - those values are folded
       in here, on the control itself, so nothing depends on a library's layout scaffolding. */
    .sm-locate-control{
        position:absolute;
        top:10px;
        right:115px;
        z-index:3000;
        margin:0;
        box-shadow:none;
    }
    .sm-locate-control button{
        padding:5px;
        height:32px;
        width:32px;
        display:flex;
        justify-content:center;
        align-items:center;
        background:transparent;
        border:none;
        cursor:pointer;
        color:#ddd;
        opacity:0.9;
    }
    /* Follow mode. Locate2 recoloured its button when the user panned away from their position;
       this is the same signal - blue while the map is tracking, grey once the listener has taken
       manual control by dragging. */
    .sm-locate-control.following button{ color:#2A93EE; }

    /* ---- Locate marker ---- */
    .sm-locate-marker{ width:24px; height:24px; }
    .sm-locate-dot{ display:block; }
    /* The heading cone, rotated to coords.heading. Hidden whenever the device reports no heading
       (stationary, or desktop), which is most of the time outside an actual walk. */
    .sm-locate-heading{
        display:none;
        position:absolute;
        left:50%;
        top:50%;
        width:0;
        height:0;
        margin-left:-10px;
        margin-top:-28px;
        border-left:10px solid transparent;
        border-right:10px solid transparent;
        border-bottom:16px solid rgba(42,147,238,0.7);
        transform-origin:50% 28px;
    }

    /* MapLibre documents touch-action:none on the map container as the way to stop the browser
       claiming pan/zoom gestures. v3.4 achieved the same thing with a JS touchmove listener that
       called preventDefault on everything over #map; that listener is removed in beta.php,
       because a blanket preventDefault fights MapLibre's own gesture handling. */
    #map{ touch-action: none; }

    /* The map canvas must never paint over the app chrome. Every overlay inside #map (#menubar
       3000, #projectbar 9100, #playpause 9001) already outranks this, but stating it removes any
       dependence on DOM order between MapLibre's canvas container and those siblings. */
    .maplibregl-canvas-container{ z-index: 0; }
    
    /* .far/.fas are matched alongside .fa throughout this file because Font Awesome 5 splits the
       icons into per-face prefixes and an element can carry only one of them: in all.min.css
       `.far{font-weight:400}` is declared BEFORE `.fa,.fas{font-weight:900}`, so keeping `fa` on a
       regular-face icon as a styling hook would silently render it solid. */
    .fa,.far,.fas{font-size:18px;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
    
    .fa-podcast{font-size: 27px;color:#555}
    
    .fa-globe,.fa-search{font-size:23px!important}
    
    .fa-crosshairs{font-size:26px!important}
    
    .fa-search{color:#444}
    
    .fa-arrow-left{font-size:25px!important}
    
    #personal,.opciones{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;font-size:2em;color:#fff;font-family:Marcellus,serif}
    
    #personal{display:none}
    
    .opciones{max-width:430px;margin:0 auto;padding-top: 6vh;box-sizing:border-box;align-items:flex-start;justify-content:flex-start;font-size:1.16em;width:90vw}
    
    .iconphoto{width:100px;height:100px;border:2px solid #ccc;background-image:url(images/usericon.png);background-repeat:no-repeat;background-position:center center;background-size:100% 100%;border-radius:50%;padding:20px;margin-bottom:20px}
    
    .iconphoto:hover{cursor:pointer}
    
    .content{margin:0}
    
    [class*=js-]{cursor:pointer}
    
    [canvas=container]{margin-top:0;height:-webkit-calc(100% - 0px);height:-moz-calc(100% - 0px);height:calc(100% - 0px)}
    
    [off-canvas] ul.menu li a{color:#fff;font-family:Marcellus,serif;display:block;padding:15px 20px;height:38px;line-height:38px;background-color:rgba(255,255,255,0);-webkit-transition:all .2s ease-in-out 0s;transition:all .2s ease-in-out 0s;text-decoration:none}
    
    [off-canvas] ul.menu{margin:0;padding:0;display:block;list-style:none}
    
    [off-canvas] ul.menu li.selected a{background-color: rgb(25 42 70 / 29%);}
    
    [off-canvas*=left]{
    /*background-image:linear-gradient(to left,#97bfc8,#597fb0);
    background-image: linear-gradient(to left,#97c4d4,#5980b0);*/
    background-image: linear-gradient(to left, #97bbd4, #487cbf);
    
    }
    
    [off-canvas*=right]{background-color:#232425;background-image: url(images/new/topography.svg);
    background-size: cover;}
    
    ul{padding-left:1em}
    
    ul li{
        list-style:none;
        font-size:1.05em;
        border-bottom: 1px solid #2f3c471a;
    }
        
    ul.unstyled{margin:0;padding:0;list-style:none}
    
    li .fa,li .far,li .fas{vertical-align:initial;margin-right:18px}
    
    .custom-responsive-width{display:flex!important;flex-direction:column;justify-content:space-between;width:220px;transition-duration:350ms}

    .searchbar{width:100%;transition-duration:.5s}
    
    .topbar{
        height: 50px;
        width: 100%;
        background-color: rgb(25 26 27 / 80%);
        z-index: 3000;
        display: flex;
        justify-content: space-between;
        align-items: center;
        box-shadow: 0 0 6px #060606;
        padding: 3px 23px 0;
        box-sizing: border-box;
        color:#ccc;
    }
    .projectslabel{font-family:Marcellus,serif;font-size:1.5em;color:#f5f5f5}
    .fa-arrow-left{text-decoration:none;padding: 10px 40px 10px 20px;margin-left: -20px;}
    
    #projectinfo{
        display: none;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        box-sizing: border-box;
        z-index: 9010;
        box-shadow: #111111 0px -10px 20px;
        background: rgb(231,233,234);
        background: linear-gradient(90deg, rgba(231,233,234,1) 50%, rgba(245,245,245,1) 50%);
        border: 7px solid white;
        border-radius: 10px 10px 0px 0px;
        
    }
    
    .projectdetails{
        display: flex;
        max-width: 600px;
        margin: 0 auto;
    }
    .leftcolumn{
        display: flex;
        flex-direction: column;
        padding: 20px 13px;
        background-color: #e7e9ea;
        align-items: center;
    }
    .listphoto, .projectphoto{
        width:100px;height:100px;
        border:3px solid #f3f3f3;
        border-radius:7px;
        background-image:url(images/SonicMapsIcon.png);
        background-repeat:no-repeat;
        background-position:center center;
        background-size:100% 100%;
        box-sizing:border-box;
    }
    .listphoto{
        border:none;
    }
    #loadbutton{
        margin-top: 15px;
        width: 100%;
        height: 40px;
        border-radius: 30px;
        border:none;
        color:#6e6e6f;
        background:none;
        font-family: Marcellus,serif;
        font-size: 16px;
        outline: 0;
        border: 3px solid #85888c;
        cursor: pointer;
    }
    #loadbutton::-moz-focus-inner{border:0}
    .metadata{
        padding: 20px 13px;
        background-color: #f5f5f5;
        flex:1;
    }
    .ptitulo{font-family:Marcellus,serif;font-size:1.45em;color:#757b7d;}
    .pautor{
        font-style:italic;
        font-size:1.15em;
        color: #b7b7b7;
        margin-top: 7px;
        display: block;
    }
    .pabout{
        color:#595959;
        display:block;
        margin-top:13px;
        max-height:15vh;
        overflow-y:auto;
        padding-top:3px;
        padding-bottom:5px;
        padding-right:5px;
        font: -apple-system-body;
        font-family:Marcellus,serif;font-size:.9em;
        overflow-wrap: break-word
    }

    #modalWindow{
        z-index:10000;
        display:flex;
        position:fixed;
        top:0;
        left:0;
        width:100%;
        height:100%;
        color:#fff;
        background-color:#000000ba;
        text-align:center;
        font-size:1.4em;
        font-family:Marcellus,serif;
        align-items:center;
        justify-content:center
    }

    .disclaimer{
        font-size: 0.65em;
        max-width: 300px;
        color: #e5e5e5;
        margin: 0 auto;
    }

    #modalmessage{padding:20px}
    
    .searchOption{
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        text-align: center;
        border-radius: 30px;
        font-family: Marcellus,serif;
        color: #f2f2f2;
        background-color: #2b2c2c;
        background-color: rgb(43 44 44 / 80%);
        font-size: 1.7em;
        width: 200px;
        height: 200px;
        border: 6px solid #4d5458;
        padding: 30px 20px 20px;
        margin: 10px;
        flex-shrink: 0;
        align-items: center;
        box-shadow: 0 0 20px #171717;
    }
    
    #searchOptions{
        display: flex;
        padding: 30px 0;
        overflow: auto;
        flex-direction: column;
        align-items: center;
    }
    
    .GoButton{
        width: 100%;
        height: 40px;
        color: #84b7de;
        border-radius: 20px;
        border: 3px solid #84b7de;
        font-size: .8em;
        line-height: 40px;
        margin-top: 5px;
    }
    .searchOption input{border:0;border-bottom:2px solid #8eb2c6;width:87%;font-size:16px;margin:0 auto;padding:0;height:40px;background:0 0;color:#999;text-align:center}.fa fa-sign-out{font-size:60%}.switch{position:relative;display:inline-block;width:60px;height:34px;margin-right:20px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#6aa8d7}input:checked+.slider:before{-webkit-transform:translateX(26px);-ms-transform:translateX(26px);transform:translateX(26px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}
    .setting-item{display:flex;align-items:center;padding:20px 7px;border-bottom: 0px dotted #444;}
    #miboton,#miok,.optionbtn{padding:9px 6px;background-color:#555;border:none;border-radius:10px;color:#fff;margin:30px auto;font-size:.8em;width:200px;display:block;cursor: pointer;font-family:'Roboto', sans-serif;font-weight: 500;}input{-webkit-user-select:text}
    
    #projectRows{
        display: flex;
        width: 100%;
        margin: 1px auto 10px;
        align-content: center;
        justify-content:flex-start;
        flex-wrap: wrap;
        align-items: stretch;
    }
    
    .pListItem,.pListItem2{
        color:#fff;
        background-color:#313335;
        padding:10px;
        margin:2px 3px 0;
        display:flex; 
    }
    
    .pListItem{   
        z-index: 1;
        box-shadow: 0 2px 3px #222;
        box-sizing: border-box;
        font-size: 110%;
        justify-content:space-between;
        background-image: linear-gradient(180deg, #36393d, #00000017);
        box-shadow: 0 2px 3px #0000004f;
    }
    
    .pListItem2{
        margin: 0 3px 5px;
        background-color: #2f3439;
        padding: 0;
        align-items: flex-start;
        box-sizing: border-box;
        flex:1;
        justify-content: flex-start;
    }
    
    .projectbox{
        width: 100%;
        display: flex;
        flex-direction: column;
    }
    
    .plistName{
        font-family: Marcellus,serif;
        color: #e0f4ff;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        flex-grow: 1;
        height:37px;
        line-height: 37px;
    }
    .plistAuthor{
        overflow: hidden;
        text-overflow: ellipsis;
        font-style: italic;
        white-space: nowrap;
        color: #c4cbcd;
        flex-shrink: 0;
        font-size: 1.1em;
        margin: 15px 0 10px;
    }

    .boxright a{
        color: inherit !important;
    }
    
    .plistDistance{
        overflow: hidden;
        text-align: right;
        flex-shrink: 0;
        font-size: 90%;
    }
    
    .plistDescript, .featuredDescript{
        font-size: 0.9rem;
        font-family: 'Marcellus';
        display: block;
        overflow: auto;
        color: #F4F4F4;
        flex: 1;
        max-height: 127px;
        }

    /* Descriptions may hold author <p> blocks (sanitised in smplayer-400.js): drop the default
       1em top/bottom margins so they don't open big gaps in these small scroll boxes. */
    .pabout p, .plistDescript p{ margin: 0 0 .6em; }
    .pabout p:last-child, .plistDescript p:last-child{ margin-bottom: 0; }

    .featuredDescript{
        padding: 15px;
        /* hide native scrollbars but keep scrolling */
        -ms-overflow-style: none; /* IE/Edge */
        scrollbar-width: none;    /* Firefox */
    }
    
    .loadbutton2 , .loadfeaturedbtn{
        width: 100%;
        min-width: 85px;
        height: 40px;
        border-radius: 30px;
        color: #8ac3eb;
        font-family: Marcellus,serif;
        font-size: 14px;
        outline: 0;
        border: 3px solid #8ac3eb;
        margin: 20px 0 15px;
        align-self: flex-start;
        flex-shrink: 0;
        background: none;
        cursor: pointer;
    }
    .loadfeaturedbtn{
        margin: 3px 0 15px 0;
    }
    
    .loadbutton2::-moz-focus-inner{border:0}
    .boxleft, .boxleftFeatured{
        flex-direction: column;
        display: flex;
        align-items: center;
        padding: 14px 10px;
        background-image: linear-gradient(180deg, #2a2d2f, #2a2d2f, transparent);
    }
   
    .boxleftFeatured{
        padding-right: 12px;
        min-width: 100px;
        /*height: -webkit-fill-available;*/
        height: calc(100% - 28px);
        justify-content: center;
    }
    .boxright{
        padding: 0 10px;
        width: calc(100% - 120px);
        box-sizing: border-box;
    }
    
    .myListenIcon {
      text-align: center; /* Horizontally center the text (icon) */
      text-shadow: 2px 2px 3px #363636;    
    }   
    .fa-male{ line-height: 50px; /* Vertically center the text (icon) */
        font-size:50px !important;
    } 
    .maplibregl-ctrl-attrib{
        position: fixed;
        bottom: 0px;
        z-index: 700;
    }
    /* .leaflet-top is gone: it existed only to place the locate control, which now positions
       itself (see .sm-locate-control above). */
    select{
        border: 2px solid #4e4e4e;
        border-radius: 5px;
        width: 95%;
        height: 30px;
        color: #d0d0d0;
        padding-left: 3px;
        background-color: #232323;
        font-family: 'Marcellus', serif;
        outline-width: 0;
    }    
    #topUItext{
        display: none;
        z-index: 10000;
        position: absolute;
        top: 70px;
        width: 60%;
        height: 50px;
        margin-left:20%;
        text-align: center;
        color:#fff;
        font-family: 'Marcellus', serif;
        font-size: calc(13px + 1vw);
        padding: 0px 15px;
        box-sizing: border-box;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        text-shadow: 2px 2px 2px black;
        background-color: rgba(0,0,0,.5);
        opacity: .8;
        line-height: 50px;
        border-radius: 20px;
    }
    /* Basemap-unavailable notice (js2/map-init.js, showMapNotice). Styled to match #topUItext but
       centred on the map, well clear of the top of the screen where #topUItext shows the weak-GPS,
       unlock and category messages. Unlike that banner the text wraps, because the translated
       sentences are longer than a phone is wide. pointer-events: none keeps the map draggable
       through it; z-index matches #menubar, so the project bar, the video window and the modal all
       stay on top. */
    #mapnotice{
        display: none;
        position: absolute;
        top: 40%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: max-content;
        max-width: calc(100% - 32px);
        box-sizing: border-box;
        z-index: 3000;
        pointer-events: none;
        padding: 10px 18px;
        text-align: center;
        color: #fff;
        font-family: 'Marcellus', serif;
        font-size: calc(12px + 0.4vw);
        line-height: 1.35;
        text-shadow: 2px 2px 2px black;
        background-color: rgba(0,0,0,.6);
        border-radius: 20px;
    }
    #assistant{
        display:none;
        width: 240px;
        z-index: 1000;
        background: #687379;
        position: absolute;
        bottom: 90px;
        left: 10px;
        border-radius: 30px 20px 50px 0px;
        padding: 23px;
        box-sizing: border-box;
        color: white;
        box-shadow: 2px 2px 7px black;
        font-family: 'Marcellus', serif;
        font-size: 85%;
        border: #f0f0f0 solid 4px;
    }
    .fa-close{
        border-radius: 100%;
        padding: 4px;
        width: 12px;
        position: absolute;
        top: 6px;
        right: 6px;
        font-size: 12px;
        text-align: center;
        color: #636d72;
        background: #9ba2a9;
    }
    #playpause{
        display: none;
        position: absolute;
        bottom: 70px;
        width: 50px;
        height: 50px;
        z-index: 9001;
        color: white;
        border: 4px solid white;
        border-radius: 100%;
        text-align: center;
        margin: auto;
        margin-left: auto;
        margin-right: auto;
        left: 0;
        right: 0;
        line-height: 54px !important;
        opacity: 0.75;
    }
    /* Intro Audio skip pill. startIntro() sets `bottom` to sit just above #playpause. */
    #skipintro-btn{
        display: none;
        position: absolute;
        bottom: 167px;
        left: 50%;
        transform: translateX(-50%);
        z-index: 9001;
        padding: 7px 16px;
        border-radius: 20px;
        background-color: #000000ba;
        border: 2px solid #0ca8ff;
        color: #fff;
        font-family: Marcellus, serif;
        font-size: 0.9em;
        white-space: nowrap;
        cursor: pointer;
        -webkit-user-select: none;
        user-select: none;
    }
    #editorLink{
        color:#fff;font-family:Marcellus,serif;display:block;padding:15px 20px;height:38px;line-height:38px;background-color:rgba(255,255,255,0);text-decoration: none;
    }
    #editorLink .fa,#editorLink .far,#editorLink .fas{margin-right:15px;vertical-align: initial;font-size:18px;}
    .mydot{z-index:2000 !important}
    #menubar{
        height: 50px;
        width: 100%;
        background-color: rgb(25 26 27 / 80%);
        z-index: 3000;
        position: -webkit-sticky;
        position: sticky;
        display: flex;
        top: 0;
        left: 0;
        right: 0;
        justify-content: space-between;
        align-items: center;
        box-shadow: 0 0 5px #060606;
        padding: 0px 23px 0;
        box-sizing: border-box;
        background-image: linear-gradient(180deg, #0e0e0e, #00000075);
    }
    #projectbar{
        height: 50px;
        width: 100%;
        background-color: rgba(42,42,42,1);
        z-index: 9100;
        position: absolute;
        display: none;
        justify-content: center;
        align-items: center;
        bottom:0;
        box-sizing: border-box;
        
    }
    .icon { 
      width: 21px; 
      height: 21px;  
    }

    #menubar .icon { 
        opacity:0.9;
        fill: #ddd; 
    }

    #projectbar .icon{
        padding: 7px 6vw;
        fill: #fff;
        opacity:0.5;
    }
    
    #card-btn.icon{
        opacity:0.1;
        pointer-events: none;
    }

    .icon:hover{
        cursor: pointer;
    }

    .menu-btn{
        padding: 10px 30px 10px 10px;
        margin-left: -10px;
    }

    #bubble {
        position: absolute;
        display:none;
        background: linear-gradient(0deg, #3c3e3f 0%, #2a2c2d 100%);
        color: #eeeeee;
        font-family: Marcellus;
        filter: drop-shadow(3px 3px 4px #111111);
        border-radius: 10px;
        padding: 20px 15px 20px 20px;
        bottom: 75px;
        max-width: 220px;
        font-size: 0.9rem;
        margin: 0 10px;
        left: calc(((60vw - 85px) / 2) - 33px); 
        left: calc(((64vw - 64px) / 2) - 33px);
        opacity: 0.93;
    }
    #bubble:after {
        content: '';
        position: absolute;
        display: block;
        width: 0;
        z-index: 1;
        border-style: solid;
        border-color: #3c3e3f transparent;
        border-width: 20px 10px 0;
        bottom: -20px;
        left: 10%;
        margin-left: -10px;
    }   
    .fa-pulse{
        font-size:clamp(80px, 15vw, 150px);
    }
    
    /* OSM/ODbL requires the attribution to stay visible and legible, so this only tones it down to
       match the dark UI - it is never hidden outright. MapLibre renders it collapsed behind an (i)
       button on narrow screens (compact: true in map-init.js), which keeps it out of the way of
       the map without removing it. */
    .maplibregl-ctrl-attrib{
        color: #7b7b7b;
        opacity: 0.8;
    }
    .maplibregl-map .maplibregl-ctrl-attrib {
        background: rgb(43 43 43 / 70%) !important;
    }
    .maplibregl-ctrl-attrib a{ color: #9aa0a6; }
    .maplibregl-ctrl-attrib-button{ background-color: rgb(43 43 43 / 70%); }

     @media screen and (min-width:768px){
        .projectbox{
            width: 50%;
         }
    }
    @media screen and (min-width:1024px){
        #searchOptions{
            flex-direction: row;
            justify-content: center;
            height: 80vh;
         }
    }
    @media screen and (min-width:1280px){
        .projectbox{
            width: 33%;
         }
    }
    @media screen and (min-width:1440px){
        .projectbox{
            width: 25%;
         }
    }
    