/* Hide on mobile */
@media (max-width: 768px){
    .hide-mobile{
        display: none !important;
    }
}
/* =====================================================
C) CENTER NODE — SOFT BRAND GLOW EMITTER
=====================================================*/
.lap-center{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%, -50%);
    overflow:visible;
}

.lap-center::before{
    content:"";
    position:absolute;
    inset:-18px;
    border-radius:50%;
    pointer-events:none;

    background:
        radial-gradient(circle at center,
            color-mix(in srgb, var(--lap-brand) 35%, transparent) 0%,
            color-mix(in srgb, var(--lap-brand) 18%, transparent) 35%,
            color-mix(in srgb, var(--lap-brand) 8%, transparent) 55%,
            transparent 70%
        );

    animation:lapCenterGlow 3.8s ease-out infinite;
}

@keyframes lapCenterGlow{
    0%{
        opacity:.55;
        transform:scale(.88);
    }
    60%{
        opacity:.25;
        transform:scale(1.05);
    }
    100%{
        opacity:0;
        transform:scale(1.22);
    }
}


/* =====================================================
D) PLACE ICON — HOVER RIPPLE WAVE
=====================================================*/
.lap-place{
    position:absolute;
    overflow:visible;
}

/* ----------------------------------
ICON RIPPLE FIXED VERSION
---------------------------------- */

.lap-place::after{
    content:"";
    position:absolute;

    /* anchor ripple to icon center */
    top:18px;
    left:50%;
    transform:translateX(-50%) scale(.4);

    width:42px;
    height:42px;
    border-radius:50%;

    pointer-events:none;
    opacity:0;

    background:
        radial-gradient(circle,
            color-mix(in srgb, var(--lap-brand) 35%, transparent) 0%,
            color-mix(in srgb, var(--lap-brand) 20%, transparent) 45%,
            transparent 70%
        );

    transition:
        transform .55s cubic-bezier(.22,1,.36,1),
        opacity .4s ease;
}

.lap-place:hover::after{
    opacity:.9;
    transform:translateX(-50%) scale(1.8);
}

@keyframes lapPlaceRipple{
    0%{
        opacity:.55;
        transform:translate(-50%, -50%) scale(.55);
        filter:blur(0px);
    }
    70%{
        opacity:.25;
    }
    100%{
        opacity:0;
        transform:translate(-50%, -50%) scale(2.3);
        filter:blur(2px);
    }
}


/* =====================================================
E) MAP — LUXURY MICRO ROTATION (BREATHING MOTION)
=====================================================*/
.lap-map{
    animation:lapMapFloat 14s ease-in-out infinite;
    transform-origin:center center;
}

@keyframes lapMapFloat{
    0%   { transform:rotate(0deg) scale(1); }
    25%  { transform:rotate(.45deg) scale(1.003); }
    50%  { transform:rotate(0deg) scale(1); }
    75%  { transform:rotate(-.45deg) scale(1.003); }
    100% { transform:rotate(0deg) scale(1); }
}
.lap-section{
    background:var(--lap-bg);
}

.lap-heading{
    font-size:var(--lap-hsize);
}

.lap-desc{
    font-size:var(--lap-tsize);
}

/* =====================================================
ACTIVE BUTTON (SOFT BRAND GRADIENT)
=====================================================*/
.lap-time-btn.active{
    color:#fff;
    border-color:var(--lap-brand);

    background:
        radial-gradient(circle at center,
            var(--lap-brand) 0%,
            color-mix(in srgb, var(--lap-brand) 85%, #000 15%) 55%,
            color-mix(in srgb, var(--lap-brand) 70%, #000 30%) 100%
        );

    box-shadow:
        0 6px 16px color-mix(in srgb, var(--lap-brand) 35%, transparent);

    transition: all .35s ease;
}


/* =====================================================
ACTIVE RING CORE (THICK CENTRE GLOW)
=====================================================*/
.lap-ring.active-ring{

    border-color:var(--lap-brand);

    /* Strong centre glow */
    box-shadow:
        0 0 0 2px color-mix(in srgb, var(--lap-brand) 90%, #000 10%),
        0 0 18px color-mix(in srgb, var(--lap-brand) 45%, transparent),
        0 0 40px color-mix(in srgb, var(--lap-brand) 20%, transparent);

    transform:translate(-50%, -50%) scale(1.045);

    position:absolute;
    overflow:visible;
}


/* =====================================================
RADIAL CENTRE → OUTWARD GLOW WAVE
=====================================================*/
.lap-ring.active-ring::before{
    content:"";
    position:absolute;
    inset:-20px;
    border-radius:50%;
    pointer-events:none;

    background:
        radial-gradient(circle at center,

            /* strong centre */
            color-mix(in srgb, var(--lap-brand) 60%, transparent) 0%,

            /* mid fade */
            color-mix(in srgb, var(--lap-brand) 35%, transparent) 18%,

            /* softer ring */
            color-mix(in srgb, var(--lap-brand) 18%, transparent) 38%,

            /* feathered outer */
            color-mix(in srgb, var(--lap-brand) 8%, transparent) 55%,

            transparent 75%
        );

    animation:lapRadiusExpand 2.6s ease-out infinite;
}


/* =====================================================
SECOND SOFT PULSE RING
=====================================================*/
.lap-ring.active-ring::after{
    content:"";
    position:absolute;
    inset:-8px;
    border-radius:50%;
    border:1px solid color-mix(in srgb, var(--lap-brand) 40%, transparent);

    animation:lapPulseRing 2.6s ease-out infinite;
}


/* =====================================================
ANIMATIONS — PREMIUM SMOOTH WAVE
=====================================================*/
@keyframes lapRadiusExpand{
    0%{
        opacity:.75;
        transform:scale(.82);
        filter:blur(0px);
    }
    40%{
        opacity:.45;
    }
    100%{
        opacity:0;
        transform:scale(1.25);
        filter:blur(2px);
    }
}

@keyframes lapPulseRing{
    0%{
        opacity:.5;
        transform:scale(.96);
    }
    60%{
        opacity:.2;
    }
    100%{
        opacity:0;
        transform:scale(1.18);
    }
}


/* =========================================
PLUGIN SAFE FULL WIDTH BREAKOUT
Works in ANY theme / builder
========================================= */

.lap-fullwidth{
    position:relative;
    width:100vw;
    max-width:100vw;
    margin-left:calc(50% - 50vw) !important;
    margin-right:calc(50% - 50vw) !important;
}

/* =====================================================
SECTION BASE
=====================================================*/
.lap-section{
    padding:100px 20px;
    
}

/* INNER CONTAINER */
.lap-container{
    max-width:1300px;
    margin:0 auto;
    padding:0 40px;
    width:100%;
}
@media (max-width: 768px){
    .lap-container{
        padding: 0;
    }
}
/* =====================================================
GRID LAYOUT (MAP LEFT — CONTENT RIGHT)
=====================================================*/
.lap-grid{
    display:grid;
    grid-template-columns: 1.4fr 1fr;
    gap:var(--lap-gap, 80px);
    align-items:center;
    width:100%;
}

/* LEFT MAP COLUMN */
.lap-map-wrap{
    display:flex;
    justify-content:flex-start;
    align-items:center;
    width:100%;
}

/* RIGHT CONTENT COLUMN */
.lap-content{
    max-width:480px;
}

/* =====================================================
TEXT
=====================================================*/
.lap-heading{
    
    margin-bottom:var(--lap-hfilter-gap,18px);
    line-height:1.2;
}

.lap-desc{
    
    color:#666;
    margin:18px 0 28px;
}


/* =====================================================
MAP SIZE
=====================================================*/
/* =====================================================
AUTO SCALE MAP
=====================================================*/

.lap-map{

    /* responsive size */
    width:min(100%, 620px);

    /* keep perfect circle */
    aspect-ratio:1 / 1;

    /* fallback for old browsers */
    height:auto;

    position:relative;

    /* scale system */
    --lap-scale: calc(100% / 620);
}

/* =====================================================
RINGS
=====================================================*/
.lap-ring{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    border-radius:50%;
    border:2px solid var(--lap-brand);
    box-sizing:border-box;
    transition:.5s;
}

.lap-ring.inactive{
    transform:translate(-50%,-50%) scale(.92);
    opacity:.45;
}



.lap-ring-label{
    position:absolute;
    top:-18px;
    left:50%;
    transform:translateX(-50%);
    background:#fff;
    padding:3px 10px;
    font-size:12px;
    border-radius:20px;
    border:1px solid #ddd;
    color:#444;
}

/* =====================================================
CENTER NODE
=====================================================*/
.lap-center{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    width:130px;
    height:130px;
    background:#f3f6f3;
    border-radius:50%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    box-shadow:0 0 0 12px rgba(160,180,160,0.15);
    z-index:5;
}

.lap-center-icon{
    width:65px !important;
    height:65px !important;
    object-fit:contain;
}

.lap-center-label{
    font-size:14px;
    margin-top:6px;
    font-weight:600;
}

/* =====================================================
PLACES
=====================================================*/
.lap-place{
    position:absolute;
    left:50%;
    top:50%;
    text-align:center;
    width:90px;
    font-size:12px;
    z-index:10;
    transition:.35s;

    /* NEW */
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    isolation:isolate; /* allows pseudo glow to render properly */
}

.lap-place.dim{
    opacity:.25;
    filter:blur(1px);
}

.lap-place img{
    width:36px !important;
    height:36px !important;
    object-fit:contain !important;
    display:block !important;
    margin:0 auto 4px !important;
}

/* =====================================================
RIGHT PANEL
=====================================================*/
/* =====================================================
ORB PANEL BASE
=====================================================*/

.lap-orb-panel{
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    margin-top:20px;
}

/* =====================================================
ORB SHAPE
=====================================================*/

.lap-orb{
    width:110px;
    height:110px;
    border-radius:50%;
    background:
        radial-gradient(circle at 40% 35%,
            rgba(255,255,255,0.6) 0%,
            rgba(255,255,255,0.15) 25%,
            var(--lap-brand) 60%,
            color-mix(in srgb,var(--lap-brand) 70%, black 30%) 100%
        );

    display:flex;
    align-items:center;
    justify-content:center;

    box-shadow:
        inset 0 0 25px rgba(255,255,255,0.4),
        0 10px 30px color-mix(in srgb,var(--lap-brand) 30%, transparent);

    position:relative;
    overflow:hidden;

    animation:lapOrbPulse 4s ease-in-out infinite;
}

/* glow halo */
.lap-orb::after{
    content:"";
    position:absolute;
    inset:-20px;
    border-radius:50%;
    background:
        radial-gradient(circle,
            color-mix(in srgb,var(--lap-brand) 40%, transparent) 0%,
            transparent 70%
        );
    opacity:.6;
    animation:lapOrbHalo 3.5s ease-out infinite;
}

/* icon inside orb */
.lap-orb-icon img{
    width:46px;
    height:46px;
    object-fit:contain;
    filter:drop-shadow(0 2px 6px rgba(0,0,0,0.3));
}

/* =====================================================
TEXT UNDER ORB
=====================================================*/

.lap-orb-text{
    margin-top:16px;
}

.lap-panel-title{
    font-size:18px;
    margin:0 0 6px;
}

.lap-panel-time{
    font-size:14px;
    color:#666;
}

/* =====================================================
ANIMATIONS
=====================================================*/

@keyframes lapOrbPulse{
    0%   { transform:scale(1); }
    50%  { transform:scale(1.06); }
    100% { transform:scale(1); }
}

@keyframes lapOrbHalo{
    0%   { transform:scale(.8); opacity:.7; }
    70%  { transform:scale(1.2); opacity:.2; }
    100% { transform:scale(1.3); opacity:0; }
}

/* =====================================================
ANIMATION
=====================================================*/
@keyframes lapGlowPulse{
    0%   { box-shadow:0 0 0 0 rgba(10,124,60,0.18); }
    70%  { box-shadow:0 0 0 22px rgba(10,124,60,0); }
    100% { box-shadow:0 0 0 0 rgba(10,124,60,0); }
}

/* =====================================================
TABLET
=====================================================*/
@media(max-width:1100px){

    .lap-grid{
        grid-template-columns:1fr;
        gap:60px;
    }

    .lap-content{
        text-align:center;
        margin:0 auto;
    }
}

/* =====================================================
OPTIONAL VISUAL CONTROL SUPPORT (SAFE ADDON)
These do nothing unless variables exist
=====================================================*/

/* Optional icon size override */
.lap-place img{
    width:var(--lap-icon-size, inherit) !important;
    height:var(--lap-icon-size, inherit) !important;
}

/* Optional font controls */
.lap-heading{
    font-family:var(--lap-heading-font, inherit);
    font-weight:var(--lap-heading-weight, inherit);
    letter-spacing:var(--lap-heading-spacing, normal);
}

.lap-desc{
    font-family:var(--lap-text-font, inherit);
    font-weight:var(--lap-text-weight, inherit);
    letter-spacing:var(--lap-text-spacing, normal);
}

/* =====================================================
TIMELINE FILTER
=====================================================*/

.lap-timeline{
    width:100%;
    margin:25px 0 20px;
}

.lap-timeline-track{
    position:relative;
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:0 10px;
}

/* base line */
.lap-timeline-track::before{
    content:"";
    position:absolute;
    left:0;
    right:0;
    height:3px;
    background:#e6ebe6;
    top:18px;
    z-index:0;
}

/* progress line */
.lap-timeline-progress{
    position:absolute;
    left:0;
    top:18px;
    height:3px;
    background:var(--lap-brand);
    width:0%;
    transition:width .5s cubic-bezier(.22,1,.36,1);
    z-index:1;
}

/* nodes */
.lap-time-node{
    position:relative;
    z-index:2;
    cursor:pointer;
    text-align:center;
    width:70px;
}

/* dot */
.lap-node-dot{
    display:block;
    width:14px;
    height:14px;
    margin:0 auto 8px;
    border-radius:50%;
    background:#cfd8cf;
    transition:.3s ease;
}

/* label */
.lap-node-label{
    font-size:13px;
    color:#666;
    transition:.3s ease;
}

/* active node */
.lap-time-node.active .lap-node-dot{
    background:var(--lap-brand);
    transform:scale(1.35);
    box-shadow:0 0 0 6px color-mix(in srgb, var(--lap-brand) 18%, transparent);
}

.lap-time-node.active .lap-node-label{
    color:#111;
    font-weight:600;
}

/* hover */
.lap-time-node:hover .lap-node-dot{
    transform:scale(1.25);
}

/* =====================================================
MOBILE
=====================================================*/
@media(max-width:600px){

    .lap-section{ padding:60px 16px; }

    .lap-heading{ font-size:26px; }
    .lap-desc{ font-size:14px; }

    .lap-center{
        width:90px;
        height:90px;
    }

    .lap-center-icon{
        width:40px !important;
        height:40px !important;
    }

    .lap-place{
        width:60px;
        font-size:10px;
    }

    .lap-place img{
        width:26px !important;
        height:26px !important;
    }
}
.lap-heading{
    margin-bottom:var(--lap-hfilter-gap,18px);
}
