
    *{-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:#111827;touch-action:manipulation}a{color:inherit;text-decoration:none}
    
    
    #brand-image{
    padding: 27px 0 5px;
    box-shadow: 1px 3px 3px #111827bf;
    background-color: #F5F1E8;
    }
    
    h1{font-family:Poppins, sans-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:#111827}#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:Poppins, sans-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:#D8B46A; border-radius:4px;max-width:450px;line-height:43px;color:#fff;font-family:Poppins, sans-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:#d8b46a; }

    /* ---- 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:#F5F1E8;font-family:Poppins, sans-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.webp);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:#F5F1E8;font-family:Poppins, sans-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(17 24 39 / 69%);
        color: #D8B46A;
    }
    
    [off-canvas*=left]{
        background: linear-gradient(to bottom, rgb(250 202 101 / 0) 69.67%, 90.67%, #FACA65 95%), #243247;
        /* Own stacking context, so .lanterns' z-index:-1 lands above this background and below
           everything else: the menu, the logo and the opaque footer they rise out from behind. */
        isolation: isolate;
    }

    /* Sky lanterns - see the comment on .lanterns in index.php. Only transform and opacity are
       animated, which the browser runs on the GPU, so this is close to free on the CPU. */
    .lanterns{
        position: absolute; top: 55%; right: 0; bottom: 0; left: 0;
        z-index: -1;
        overflow: hidden;
        pointer-events: none;
        container-type: size; /* lets the climb be measured in cqh, i.e. this box's height */
    }
    .lanterns span{
        position: absolute; bottom: 0; left: var(--x);
        width: var(--size); height: calc(var(--size) * 1.3);
        opacity: 0;
    }
    /* Animated only while .lanterns has .on, which index.php's slidebars handlers set on opening
       and clear on closed. The panel is NEVER display:none (.custom-responsive-width forces
       display:flex!important), so without this the lanterns would climb behind a closed menu and
       be found mid-air on the next opening. */
    .lanterns.on span{
        animation: lantern-rise var(--dur) linear var(--delay) infinite;
    }
    /* The lantern itself, on a pseudo-element so its sway can run as a second animation without
       fighting the span's rise over the same transform property. */
    .lanterns span::before{
        content: "";
        position: absolute; inset: 0;
        /* Sky-lantern shape: nearly square shoulders on top, bottom corners curving in wide so
           the body narrows towards the opening where the candle sits. */
        border-radius: 25% 25% 45% 45% / 18% 18% 32% 32%;
        /* Top layer: the candle, a small white-hot core near the bottom, sized from --size so it
           scales with each lantern. Bottom layer: the paper, lit from that same point. */
        background:
            radial-gradient(circle calc(var(--size) * .4) at 50% 85%, #FFFFFF 0%, #FFF3C0 35%, rgb(255 243 192 / 0) 100%),
            radial-gradient(ellipse at 50% 85%, #FFF6D8 0%, #FACA65 45%, #DB7D27 100%);
        /* The first shadow is the candle's light spilling out under the lantern; the second is the
           soft halo around the whole lantern. */
        box-shadow:
            0 calc(var(--size) * .35) calc(var(--size) * .8) 0 rgb(255 236 170 / 70%),
            0 0 8px 2px rgb(250 202 101 / 50%);
    }
    .lanterns.on span::before{
        animation: lantern-sway var(--sway) ease-in-out infinite alternate;
    }
    @keyframes lantern-rise{
        0%   { transform: translateY(0) scale(1); opacity: 0; }
        12%  { opacity: 1; }
        40%  { opacity: .9; }
        100% { transform: translateY(-100cqh) scale(.5); opacity: 0; }
    }
    @keyframes lantern-sway{
        from { transform: translateX(-6px) rotate(-8deg); }
        to   { transform: translateX(6px) rotate(8deg); }
    }
    @media (prefers-reduced-motion: reduce){
        .lanterns{ display: none; }
    }

    [off-canvas*=right]{background-color:#111827;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:Poppins, sans-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, #111827 50%, rgb(36 50 71) 50%);
        border: 7px solid #f5f1e8;
        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: #111827;
        align-items: center;
    }
    .listphoto, .projectphoto{
        width:100px;height:100px;
        border:3px solid #f3f3f3;
        border-radius:7px;
        background-image:url(images/treasures-logo-200.webp);
        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:#d8b46a;
        background:none;
        font-family: Poppins, sans-serif;
        font-size: 16px;
        outline: 0;
        border: 3px solid #d8b46a;
        cursor: pointer;
    }
    #loadbutton::-moz-focus-inner{border:0}
    .metadata{
        padding: 20px 13px;
        background-color: #243247;
        flex:1;
    }
    .ptitulo{font-family:Poppins, sans-serif;font-size:1.45em;color:#d8b46a;}
    .pautor{
        font-style:italic;
        font-size:1.15em;
        color: #b7b7b7;
        margin-top: 7px;
        display: block;
    }
    .pabout{
        color:#f5f1e8;
        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:Poppins, sans-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:#F5F1E8;
        background-color:#000000db;
        text-align:center;
        font-size:1.4em;
        font-family:Poppins, sans-serif;
        align-items:center;
        justify-content:center
    }

    .disclaimer{
        font-size: 0.65em;
        max-width: 300px;
        color: #F5F1E8;
        margin: 0 auto;
    }

    #modalmessage{padding:20px}
    
    .searchOption{
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        text-align: center;
        border-radius: 30px;
        font-family: Poppins, sans-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:#D8B46A}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:rgb(23 28 41); border: solid 3px #D8B46A;border-radius:30px;color:#D8B46A;margin:30px auto;font-size:.8em;width:200px;display:block;cursor: pointer;font-family:Poppins, sans-serif;font-weight: 500;}input{-webkit-user-select:text}
    @media (hover:hover){#miboton:hover,#miok:hover,.optionbtn:hover,#recover-autosave:hover,#discard-autosave:hover{filter:drop-shadow(0px 0px 10px #d8b46a)}}
    
    #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: Poppins, sans-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: Poppins, sans-serif;
        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: Poppins, sans-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: Poppins, sans-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: Poppins, sans-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: Poppins, sans-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: Poppins, sans-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: Poppins, sans-serif;
        font-size: 0.9em;
        white-space: nowrap;
        cursor: pointer;
        -webkit-user-select: none;
        user-select: none;
    }
    /* #editorLink rules removed with the element (index.php) - no Editor on this instance. */
    .mydot{z-index:2000 !important}
    #menubar{
        height: 50px;
        width: 100%;
        /*background-color: rgb(36 50 71);*/
        background-color: #171c29;
        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, #111827, #00000075);*/
    }
    #projectbar{
        height: 50px;
        width: 100%;
        /*background-color: rgba(42,42,42,1);*/
        background-color: rgb(23 28 41);
        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, hsl(216 32% 23% / 1) 0%, hsl(216 33% 26% / 1) 100%);
        color: #F5F1E8;
        font-family: Poppins, sans-serif;
        filter: drop-shadow(-8px -10px 4px #111111);
        border-radius: 10px;
        padding: 20px 15px 20px 20px;
        bottom: 75px;
        max-width: 220px;
        font-size: 0.9rem;
        margin: 0 10px;
        /* left is set by positionBubble() (smplayer-400.js) from where #person-btn actually sits,
           since that depends on how many #projectbar icons are showing. */
        left: 0;
    }
    #bubble:after {
        content: '';
        position: absolute;
        display: block;
        width: 0;
        z-index: 1;
        border-style: solid;
        border-color: #28374e transparent;
        border-width: 20px 10px 0;
        bottom: -20px;
        left: 30px;     /* arrow tip; positionBubble() relies on this value */
        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%;
         }
    }
    