        :root {
            --font-ui: "DM Sans", ui-sans-serif, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            --font-ai: "Orbitron", ui-sans-serif, system-ui, sans-serif;
            --font-weight-light: 300;
            --font-weight-regular: 400;
            --font-weight-medium: 500;
            --font-weight-bold: 700;
            --font-mono: ui-monospace, "Cascadia Code", "Courier New", monospace;
            --geogeo-pv-ticker-height: 45px; /* 36px + 25% */
        }
        html, body {
            margin: 0;
            height: 100%;
            overflow: hidden; /* Map mode: no page scroll; panels use transform off-screen */
        }
        body {
            padding: 0;
            font-family: var(--font-ui);
            font-weight: var(--font-weight-regular);
        }
        /* Leaflet: match app font (assets/leaflet.css uses Helvetica stack) */
        .leaflet-container {
            font-family: var(--font-ui);
        }

        /* Loading Screen */
        .loading-screen {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: #ffffff;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            z-index: 9999;
            opacity: 1;
            transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1);
            overflow: hidden;
        }
        
        /* Video Background – display at 2x logical size for sharpness on retina; no re-encoding in pipeline */
        .loading-video {
            width: 500px;
            max-width: 90vw;
            height: auto;
            opacity: 0;
            object-fit: contain;
            border-radius: 8px;
            margin-bottom: 20px;
        }
        /* Content container */
        .loading-content {
            position: relative;
            z-index: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
        
        /* Reserve space so logo doesn't jump when video loads */
        .loading-video-wrap {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 500px;
            max-width: 90vw;
            min-height: 281px; /* 16:9 at 500px; fallback if aspect-ratio unsupported */
            aspect-ratio: 16/9;
        }

        .loading-video-wrap.video-visible .loading-video {
            transition: opacity 1.5s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .loading-video-wrap.video-fade-out .loading-video {
            opacity: 0;
        }

        .loading-screen.fade-out {
            opacity: 0;
            pointer-events: none;
        }
        
        /* Spinning Animation */
        .spinner {
            width: 60px;
            height: 60px;
            border: 4px solid #f3f3f3;
            border-top: 4px solid #1E3A8A;
            border-radius: 50%;
            animation: spin 1.2s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
            margin-bottom: 30px;
        }
        
        @keyframes spin {
            0% { 
                transform: rotate(0deg) scale(1);
                opacity: 1;
            }
            50% { 
                transform: rotate(180deg) scale(1.1);
                opacity: 0.8;
            }
            100% { 
                transform: rotate(360deg) scale(1);
                opacity: 1;
            }
        }
        
        /* Logo Animation */
        .loading-logo {
            max-width: 250px;
            height: auto;
            opacity: 0;
            transform: translateY(20px) scale(0.9);
            animation: logoReveal 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.5s forwards;
            filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1));
        }
        
        @keyframes logoReveal {
            0% {
                opacity: 0;
                transform: translateY(20px) scale(0.9);
            }
            60% {
                opacity: 0.8;
                transform: translateY(-5px) scale(1.05);
            }
            100% {
                opacity: 1;
                transform: translateY(0) scale(1);
            }
        }
        
        /* Loading Text */
        .loading-text {
            margin-top: 20px;
            color: #666;
            font-size: 14px;
            font-weight: 400;
            opacity: 0;
        }
        
        .loading-sequence {
            position: relative;
            width: 100%;
            min-height: 72px;
            margin-top: 26px; /* start lower under the logo */
        }

        .loading-sequence .loading-text {
            position: absolute;
            left: 50%;
            top: 0;
            transform: translate3d(-50%, 0, 0);
            margin-top: 0;
            width: min(720px, calc(100% - 32px));
            white-space: normal;
            text-align: center;
            line-height: 1.35;
        }

        .loading-text.loading-text-step {
            margin-top: 8px;
        }

        .loading-screen.intro-sequence-start .loading-text {
            animation: textFadeIn 1s ease-out forwards;
            animation-iteration-count: 1;
        }

        /* Rotating disclaimer lines fade in then out; final "Chargement..." stays */
        .loading-screen.intro-sequence-start .loading-text.step-0,
        .loading-screen.intro-sequence-start .loading-text.step-1,
        .loading-screen.intro-sequence-start .loading-text.step-2,
        .loading-screen.intro-sequence-start .loading-text.step-3 {
            animation: textFadeInOut 2.4s ease-out forwards;
            animation-iteration-count: 1;
        }
        .loading-screen.intro-sequence-start .loading-text.step-2 {
            animation-duration: 3.6s; /* longer legal line */
        }
        .loading-screen.intro-sequence-start .loading-text.step-4 {
            /* Fade in, then loop the same green pulse used on popup status/bidder updates */
            animation:
                textFadeIn 1s ease-out forwards,
                flashGreen 1.2s ease-in-out infinite;
        }

        .loading-screen.intro-sequence-start .loading-text.step-0 { animation-delay: 0.5s; }
        .loading-screen.intro-sequence-start .loading-text.step-1 { animation-delay: 2.9s; }
        .loading-screen.intro-sequence-start .loading-text.step-2 { animation-delay: 5.3s; }
        .loading-screen.intro-sequence-start .loading-text.step-3 { animation-delay: 8.9s; }
        .loading-screen.intro-sequence-start .loading-text.step-4 { animation-delay: 11.5s, 12.5s; }

        .loading-bottom-credits {
            position: absolute;
            left: 50%;
            bottom: 22px;
            transform: translateX(-50%);
            width: min(980px, calc(100% - 44px));
            color: #8a8a8a;
            font-size: 12px;
            line-height: 1.35;
            text-align: center;
            opacity: 0.95;
        }

        .loading-bottom-credits a {
            color: inherit;
            text-decoration: none;
        }

        /* Intro Passer show/hide (position block lives after .header-register-btn so it wins) */
        .intro-passer-btn {
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
            transition: opacity 0.35s ease, visibility 0.35s ease;
        }

        .intro-passer-btn.intro-passer-btn--visible {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
        }

        /* During intro: hide auth/paywall overlays so they never cover the loading screen */
        body.intro-active .auth-modal,
        body.intro-active #proPopup {
            display: none !important;
        }

        @keyframes textFadeIn {
            from {
                opacity: 0;
                transform: translate3d(-50%, 10px, 0);
            }
            to {
                opacity: 1;
                transform: translate3d(-50%, 0, 0);
            }
        }

        /* Same feel as textFadeIn: smooth ease-out in, then smooth ease-out fade away */
        @keyframes textFadeInOut {
            0% {
                opacity: 0;
                transform: translate3d(-50%, 10px, 0);
            }
            18% {
                opacity: 1;
                transform: translate3d(-50%, 0, 0);
            }
            72% {
                opacity: 1;
                transform: translate3d(-50%, 0, 0);
            }
            100% {
                opacity: 0;
                transform: translate3d(-50%, 0, 0);
            }
        }
        
        /* Pulse effect for extra polish */
        .spinner::after {
            content: '';
            position: absolute;
            top: -2px;
            left: -2px;
            right: -2px;
            bottom: -2px;
            border: 2px solid transparent;
            border-top: 2px solid rgba(30, 58, 138, 0.3);
            border-radius: 50%;
            animation: pulse 2s ease-in-out infinite;
        }
        
        @keyframes pulse {
            0%, 100% {
                transform: scale(1);
                opacity: 0.5;
            }
            50% {
                transform: scale(1.1);
                opacity: 0.8;
            }
        }
        
        /* Search highlighting styles */
        .search-highlight {
            background-color: #dbeafe;  /* Light blue background */
            color: #1e40af;            /* Dark blue text */
            padding: 2px 4px;
            border-radius: 3px;
            font-weight: 600;
        }
        
        /* Header */
        .header {
            height: 80px;
            background: white;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 0 20px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            z-index: 1001;
            position: relative;
        }
        
        .header-container {
            display: grid;
            grid-template-columns: 1fr auto 1fr;
            align-items: center;
            width: 100%;
            max-width: 1200px;
        }

        /* Flatten on desktop; mobile header groups intro + banner inside this block */
        .header-mobile-brand-block {
            display: contents;
        }

        /* Phase 1: wrapper rows flatten on desktop so grid placement below applies */
        .header-mobile-row {
            display: contents;
        }
        .header-left {
            grid-column: 1;
            grid-row: 1;
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 15px;
        }
        .header-center {
            grid-column: 2;
            grid-row: 1;
        }
        .header-right {
            grid-column: 3;
            grid-row: 1;
        }
        .header-actions {
            grid-column: 3;
            grid-row: 1;
        }

        /* Mobile-only header branding; hidden on desktop grid */
        .geogeo-header-mobile-only {
            display: none;
        }

        .header-intro-logo,
        .header-mobile-logo {
            object-fit: contain;
            flex-shrink: 0;
            cursor: pointer;
        }
        
        .header-banner-text {
            display: inline-flex;
            align-items: center;
            cursor: pointer;
            transition: opacity 0.3s ease;
            position: absolute;
            left: 20px;
            top: 50%;
            transform: translateY(-50%);
            z-index: 1001;
        }
        
        .header-banner-text:hover {
            opacity: 0.8;
        }
        
        .banner-text {
            font-size: 27.6px; /* 24px + 15% desktop */
            font-weight: 700;
            white-space: nowrap;
            font-family: var(--font-ui);
            position: relative;
            z-index: 1;
            /* Keep gradient on the outer span too: prod HTML still uses
               plain .banner-text (no .banner-text-line). Without this,
               text falls back to inherited black. */
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }

        .banner-text-line {
            font: inherit;
            /* Gradient on the text carriers (works with 3-line mobile spans) */
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }

        /* Desktop: one line; spaces between phrase spans */
        .banner-text-line + .banner-text-line::before {
            content: ' ';
        }
        
        /* Fallback for browsers without gradient text support */
        @supports not (-webkit-background-clip: text) {
            .banner-text {
                color: #1E3A8A;
                -webkit-text-fill-color: #1E3A8A;
            }
        }
        
        .banner-icon {
            height: 30px;  /* 30% smaller than 43px */
            width: auto;
            object-fit: contain;
            transition: opacity 0.3s ease;
            position: relative;
            margin-left: 0px;  /* No gap - stuck together with text */
            vertical-align: middle;
            /* Transparency gradient: opaque on left, transparent on right - wider opaque section */
            -webkit-mask-image: linear-gradient(to right, 
                rgba(0,0,0,1) 0%,      /* Fully opaque at left edge */
                rgba(0,0,0,1) 20%,     /* Stays fully opaque to 20% */
                rgba(0,0,0,0.8) 40%,  /* Mostly opaque */
                rgba(0,0,0,0.6) 60%,  /* More visible */
                rgba(0,0,0,0.4) 80%,  /* Gradually becoming transparent */
                rgba(0,0,0,0.2) 90%,  /* Still visible but fading */
                rgba(0,0,0,0) 100%);   /* Fully transparent at right edge */
            mask-image: linear-gradient(to right, 
                rgba(0,0,0,1) 0%, 
                rgba(0,0,0,1) 20%, 
                rgba(0,0,0,0.8) 40%, 
                rgba(0,0,0,0.6) 60%, 
                rgba(0,0,0,0.4) 80%, 
                rgba(0,0,0,0.2) 90%, 
                rgba(0,0,0,0) 100%);
        }
        
        .banner-beta-text {
            font-size: 12px;
            font-weight: 600;
            color: #666;
            margin-left: 10px;
            display: inline-block;
        }
        
        .header-banner-text:hover .banner-icon {
            opacity: 0.9;
        }
        
        .header-register-btn {
            position: absolute;
            right: 20px;
            top: 50%;
            transform: translateY(-50%);
            padding: 12px 24px;
            background: #1E3A8A;
            color: white;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
            z-index: 1002;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }
        
        .header-register-btn:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(calc(-50% - 1px));
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }

        /*
         * Intro Passer: centered above credits.
         * Uses #id so header-register-btn top:50% / translateY cannot pull it mid-screen.
         * Desktop: sit higher in the empty band (not cramped on the source lines).
         * Mobile height pass (after centering): bottom 56px -> 80px — do not change that block.
         */
        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn {
            position: absolute;
            left: 50%;
            right: auto;
            top: auto;
            bottom: 120px;
            transform: translateX(-50%);
            z-index: 2;
            margin: 0;
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
            background: #ffffff;
            color: #1e3a8a;
            border: 2px solid #1e3a8a;
            box-shadow: none;
            transition: opacity 0.35s ease, visibility 0.35s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
        }

        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn.intro-passer-btn--visible {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
        }

        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn.intro-passer-btn--visible[hidden] {
            display: flex;
        }

        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn:hover,
        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn:focus-visible {
            transform: translateX(-50%);
            background: #eff6ff;
            color: #1e3a8a;
            border-color: #1e3a8a;
            box-shadow: none;
        }

        #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn:focus-visible {
            outline: 2px solid #1e3a8a;
            outline-offset: 2px;
        }

        @media (max-width: 768px) {
            /* Drop desktop 281px video reserve; keep true 16:9 so stack clears Passer */
            .loading-video-wrap {
                min-height: 0;
                width: min(420px, 86vw);
                max-width: 86vw;
            }

            .loading-video {
                margin-bottom: 12px;
            }

            .loading-logo {
                max-width: min(200px, 52vw);
            }

            .loading-sequence {
                margin-top: 16px;
            }

            /* Reserve bottom band for Passer + credits; shifts centered stack up */
            .loading-screen {
                padding-bottom: max(128px, calc(112px + env(safe-area-inset-bottom, 0px)));
                box-sizing: border-box;
            }

            .loading-content {
                max-height: calc(100% - 8px);
            }

            /* Compact credits so Passer (80px) clears them — final intro stack */
            .loading-bottom-credits {
                font-size: 10px;
                line-height: 1.3;
                width: calc(100% - 24px);
                bottom: max(10px, env(safe-area-inset-bottom, 0px));
            }

            /* Height pass after centering: 56px -> 80px */
            #loadingScreen #introPasserBtn.intro-passer-btn.header-register-btn {
                bottom: max(80px, calc(68px + env(safe-area-inset-bottom, 0px)));
                padding: 11px 22px;
                font-size: 14px;
            }
        }
        
        /* Auth button icons */
        .auth-icon-container {
            position: relative;
            width: 18px;
            height: 18px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .auth-icon {
            width: 18px;
            height: 18px;
            object-fit: contain;
            transition: opacity 0.3s ease;
            flex-shrink: 0;
        }
        
        .auth-icon-normal {
            opacity: 1;
            position: relative;
        }
        
        .auth-icon-hover {
            opacity: 0;
            position: absolute;
            top: 0;
            left: 0;
        }
        
        /* Inverted: white icon shows normally, blue icon shows on hover */
        .header-register-btn:hover .auth-icon-normal,
        .header-logout-btn:hover .auth-icon-normal {
            opacity: 0;
        }
        
        .header-register-btn:hover .auth-icon-hover,
        .header-logout-btn:hover .auth-icon-hover {
            opacity: 1;
        }
        
        .auth-text {
            display: inline-block;
        }
        
        #plan-pro-btn {
            right: 230px; /* Ensures 15px gap from register button (20px + ~195px button width + 15px gap) */
        }
        
        /* Settings button (round with cogwheel icon) */
        .header-settings-btn {
            position: absolute;
            right: 20px;
            top: 50%;
            transform: translateY(-50%);
            width: 44px;
            height: 44px;
            padding: 0;
            background: #1E3A8A;
            color: white;
            border: none;
            border-radius: 50%;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s ease;
            z-index: 1002;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
        }
        
        .header-settings-btn:hover {
            background: #7BEC7B;
            transform: translateY(calc(-50% - 1px)) rotate(15deg);
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .header-settings-btn img {
            width: 24px;
            height: 24px;
            filter: brightness(0) invert(1); /* White icon on blue background */
            transition: all 0.2s ease;
            pointer-events: none; /* Allow clicks to pass through to button */
        }
        
        .header-settings-btn:hover img {
            filter: none; /* Remove filter when using blue image */
            transform: rotate(90deg);
        }
        
        .header-settings-btn.active {
            background: #7BEC7B;
        }
        
        .header-settings-btn.active img {
            filter: none;
        }
        
        /* Prevent hover rotation when button is active */
        .header-settings-btn.active:hover img {
            transform: none;
        }
        
        /* Logout button */
        .header-logout-btn {
            position: absolute;
            right: 79px;
            top: 50%;
            transform: translateY(-50%);
            padding: 12px 24px;
            background: #1E3A8A;
            color: white;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
            z-index: 1002;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }
        
        .header-logout-btn:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(calc(-50% - 1px));
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .header-center {
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
        }
        
        .header-right {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 15px;
            position: relative;
        }
        
        .header-actions {
            /* Container for grouping buttons - buttons use absolute positioning relative to header */
            /* No positioning needed - buttons position themselves absolutely */
        }
        
        .header-logo {
            height: 60px;
            max-width: 200px;
            width: auto;
            object-fit: contain;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            transition: opacity 0.15s ease;
            cursor: pointer;
            backface-visibility: hidden;
        }
        
        .header-logo-normal {
            opacity: 1;
        }
        
        .header-logo-jump {
            opacity: 0;
        }
        
        .header-center:hover .header-logo-normal {
            opacity: 0;
        }
        
        .header-center:hover .header-logo-jump {
            opacity: 1;
        }
        
        /* Search row container - holds search box and filters info */
        .search-row-container {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 30px;
        }
        
        .search-container {
            display: flex;
            align-items: center;
            flex: 0 0 auto; /* Don't grow or shrink */
        }
        
        /* Filters info container - holds counter and clear button */
        .filters-info-container {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-shrink: 0;
        }

        /* In filter box: search row is search-only (filtres actifs lives in pinned header) */
        .filter-controls .search-row-container {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 20px;
        }
        .filter-controls .search-container {
            display: flex;
            align-items: center;
            flex: 1 1 auto;
            min-width: 0;
            width: 100%;
            position: relative;
            gap: 8px; /* match .filter-group h4 / .date-slider-label icon spacing */
        }
        .filter-controls .search-row-container .search-icon {
            margin-right: 0; /* spacing via gap on .search-container */
            flex-shrink: 0;
        }
        .filter-controls .search-row-container .header-search {
            width: 100%;
            max-width: none;
            box-sizing: border-box;
            flex: 1 1 auto;
            min-width: 0;
        }
        .filter-controls .filter-top-meta-row .filters-info-container {
            width: auto;
            min-width: 0;
            flex: 0 0 auto;
            justify-content: flex-end;
            margin-left: auto;
        }
        .filter-top-meta-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            width: 100%;
            min-width: 0;
        }
        .filter-top-meta-row .filter-pin-count {
            flex: 0 1 auto;
            min-width: 0;
            white-space: nowrap;
        }
        
        .header-search {
            width: 240px;
            padding: 12px 16px;
            border: 2px solid #1E3A8A;
            border-radius: 25px;
            font-size: 14px;
            background: #f8f9fa;
            color: #333;
            transition: all 0.3s ease;
        }
        
        .header-search::placeholder {
            color: rgba(107, 114, 128, 0.55);
            opacity: 1; /* override Firefox default placeholder opacity stacking */
        }
        
        .header-search:hover {
            border-color: #147CEC;
            background: #f0f8ff;
            transform: translateY(-1px);
        }
        
        .header-search:focus {
            outline: none;
            border-color: #147CEC;
            background: white;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
            transform: translateY(-1px);
        }
        
        .search-icon {
            font-size: 24px;
            color: #1E3A8A;
            margin-right: 12px;
            transition: color 0.3s ease;
            position: relative; /* Ensure it doesn't create positioning artifacts */
            z-index: 1; /* Ensure it's above any background elements */
        }
        
        .search-container:hover .search-icon {
            color: #147CEC;
        }
        
        /* Clear search button - search-container already defined above */
        .search-container {
            position: relative;
        }
        
        .clear-search-btn {
            position: absolute;
            right: 12px;
            background: none;
            border: none;
            color: #6b7280;
            cursor: pointer;
            font-size: 18px;
            padding: 4px 8px;
            display: none;
            align-items: center;
            justify-content: center;
            transition: color 0.2s ease;
            z-index: 10;
        }
        
        .clear-search-btn:hover {
            color: #1E3A8A;
        }
        
        .clear-search-btn.visible {
            display: flex;
        }
        
        .header-search {
            padding-right: 40px; /* Make room for clear button */
        }
        
        /* Active filter indicators */
        .filter-indicators {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 20px;
            padding: 12px 16px;
            background: #f0f8ff;
            border-radius: 8px;
            border: 1px solid #e0e7ff;
        }
        
        /* Match .saved-search-btn (1/2/3) height: 28px */
        .active-filters-badge {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            box-sizing: border-box;
            height: 28px;
            padding: 0 10px;
            background: #147CEC;
            color: white;
            border-radius: 14px;
            font-size: 12px;
            font-weight: 600;
            line-height: 1;
            white-space: nowrap;
        }
        
        .active-filters-count {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            box-sizing: border-box;
            min-width: 1.5em;
            height: 18px;
            padding: 0 5px;
            background: rgba(255, 255, 255, 0.3);
            border-radius: 9px;
            font-size: 12px;
            font-weight: 700;
            line-height: 1;
            font-variant-numeric: tabular-nums;
            flex-shrink: 0;
        }
        
        .clear-all-filters-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            box-sizing: border-box;
            width: 28px;
            height: 28px;
            min-width: 28px;
            padding: 0;
            background: white;
            color: #147CEC;
            border: 2px solid #147CEC;
            border-radius: 50%;
            cursor: pointer;
            font-family: var(--font-ui);
            transition: all 0.2s ease;
            flex-shrink: 0;
        }
        .clear-all-filters-btn .clear-all-filters-icon {
            width: 14px;
            height: 14px;
            object-fit: contain;
            pointer-events: none;
            /* Dark SVG -> brand blue #147CEC */
            filter: invert(34%) sepia(98%) saturate(1800%) hue-rotate(191deg) brightness(95%) contrast(96%);
        }
        
        .clear-all-filters-btn:hover {
            background: #147CEC;
            color: white;
            transform: translateY(-1px);
        }
        .clear-all-filters-btn:hover .clear-all-filters-icon {
            filter: brightness(0) invert(1);
        }
        
        .clear-all-filters-btn:disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }
        
        .clear-all-filters-btn:disabled:hover {
            transform: none;
            background: white;
            color: #147CEC;
        }
        .clear-all-filters-btn:disabled:hover .clear-all-filters-icon {
            filter: invert(34%) sepia(98%) saturate(1800%) hue-rotate(191deg) brightness(95%) contrast(96%);
        }
        
        /* Source switches (SEAO / CanadaBuys) - same track+thumb style as Favoris box */
        .filter-source-switches {
            display: flex;
            flex-direction: column;
            gap: 10px;
            margin-bottom: 16px;
        }
        .filter-source-row {
            display: flex;
            align-items: center;
            gap: 12px;
        }
        .filter-source-toggle {
            position: relative;
            width: 40px;
            height: 20px;
            border-radius: 20px;
            background: #ffffff;
            border: 2px solid #1E3A8A;
            cursor: pointer;
            flex-shrink: 0;
        }
        .filter-source-toggle.on {
            background: #ffffff;
            border-color: #1E3A8A;
        }
        .filter-source-toggle .filter-source-thumb {
            position: absolute;
            top: 2px;
            left: 2px;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: #1E3A8A;
            transition: transform 0.2s ease;
        }
        .filter-source-toggle.on .filter-source-thumb {
            transform: translateX(24px);
        }
        .filter-source-label {
            font-size: 14px;
            font-weight: 600;
            color: #1E3A8A;
        }
        .filter-source-label.greyed {
            color: #9CA3AF;
        }
        
        /* Toast notifications — centered on screen; text centered inside */
        .toast {
            position: fixed;
            top: 50%;
            left: 50%;
            right: auto;
            bottom: auto;
            padding: 14px 20px;
            background: #1E3A8A;
            color: white;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
            z-index: 10000;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 12px;
            text-align: center;
            opacity: 0;
            transform: translate(-50%, calc(-50% + 16px));
            transition: opacity 0.3s ease, transform 0.3s ease;
            /* Short copy labels ("Copié") used to shrink into tiny pills */
            min-width: 180px;
            max-width: min(300px, calc(100vw - 32px));
            font-size: 15px;
            line-height: 1.35;
            box-sizing: border-box;
        }
        .toast > span {
            text-align: center;
        }
        
        .toast.show {
            opacity: 1;
            transform: translate(-50%, -50%);
        }
        
        .toast.success {
            background: rgb(88, 190, 88); /* same green as PME+ tag */
        }
        
        .toast.error {
            background: #ef4444;
        }

        /* Copy toasts for fixed list meta tags — match chip colors; same footprint as success */
        .toast.tag-unspsc,
        .toast.tag-projet,
        .toast.tag-ref {
            min-width: 180px;
            font-size: 15px;
        }
        .toast.tag-unspsc {
            background: #22c55e;
            color: #fff;
        }
        .toast.tag-projet {
            background: #16a34a;
            color: #fff;
        }
        .toast.tag-ref {
            background: #1E3A8A;
            color: #fff;
        }
        
        .toast-icon {
            font-size: 20px;
            color: #fff;
            -webkit-text-fill-color: #fff;
            /* Prefer text glyph so ✓ is not a green emoji on the success toast */
            font-variant-emoji: text;
            font-family: "Segoe UI Symbol", "Arial Unicode MS", "DM Sans", sans-serif;
            font-weight: 700;
            line-height: 1;
            flex-shrink: 0;
        }
        
        /* Wrapper for map-list + I.A. - fixed position so spacing never overlaps logo or auth buttons */
        .header-right-buttons {
            position: absolute;
            right: 180px; /* Well right of center so no overlap with logo; buffer between logo and buttons */
            top: 50%;
            transform: translateY(-50%);
            display: flex;
            flex-direction: row;
            align-items: center;
            gap: 30px;
            z-index: 1002;
        }
        .header-toggle {
            padding: 12px 24px;
            background: #7BEC7B;
            color: #1E3A8A;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
            display: flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
            -webkit-tap-highlight-color: transparent;
            touch-action: manipulation;
        }

        /* list-mode is a JS flag, not a different rest color (label/icon carry the mode). */
        .header-toggle.list-mode {
            background: #7BEC7B;
            color: #1E3A8A;
        }

        /* Pressed look must not persist after finger-up (mobile :hover is sticky). */
        .header-toggle:active {
            background: #1E3A8A;
            color: white;
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        /* Toggle button icons */
        .toggle-icon {
            width: 18px;
            height: 18px;
            object-fit: contain;
            transition: opacity 0.2s ease;
            flex-shrink: 0;
        }
        
        .toggle-icon-container {
            position: relative;
            width: 18px;
            height: 18px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .toggle-icon-normal {
            opacity: 1;
            position: relative;
        }
        
        .toggle-icon-hover {
            opacity: 0;
            position: absolute;
            top: 0;
            left: 0;
        }

        .header-toggle:active .toggle-icon-normal {
            opacity: 0;
        }

        .header-toggle:active .toggle-icon-hover {
            opacity: 1;
        }

        @media (hover: hover) and (pointer: fine) {
            .header-right-buttons .header-toggle:hover,
            .header-right-buttons .header-ai-btn:hover {
                transform: translateY(-1px);
            }
            .header-toggle:hover,
            .header-toggle.list-mode:hover {
                background: #1E3A8A;
                color: white;
                box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
            }
            .header-toggle:hover .toggle-icon-normal {
                opacity: 0;
            }
            .header-toggle:hover .toggle-icon-hover {
                opacity: 1;
            }
        }
        
        .toggle-text {
            display: inline-block;
        }

        /* I.A. label: tech/robotic face, distinct from Liste / auth chrome */
        .header-ai-btn .toggle-text {
            font-family: var(--font-ai);
            font-weight: 700;
            font-size: 15px;
            letter-spacing: 0.06em;
            line-height: 1;
        }
        
        /* I.A. button - always visible; Pro unlocks (free = soft gate) */
        /* No transition: avoids flash when returning to tab (browser re-evaluates :hover and would run transition) */
        .header-ai-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative; /* medal is absolute overlay only */
            transition: none;
            /* Match Liste height (~42px) while keeping 36px brain icon box */
            padding: 3px 24px;
            overflow: visible;
        }
        /* Pro medal overlays the pill; never part of text/icon centering */
        .header-ai-btn > .geogeo-pro-ribbon {
            position: absolute;
            flex: none;
        }
        .header-ai-btn.visible {
            display: flex;
        }
        /* Brain SVG is oversized; reserve 36px layout box (18px base × scale 2) so glyph matches intended size */
        .header-ai-btn .toggle-icon-container {
            position: relative;
            width: 36px;
            height: 36px;
            display: flex;
            align-items: center;
            justify-content: center;
            align-self: center;
            overflow: hidden;
            flex-shrink: 0;
        }
        .header-ai-btn .ai-icon-normal,
        .header-ai-btn .ai-icon-hover {
            transition: none;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 18px;
            height: 18px;
            margin: 0;
            transform: translate(-50%, -50%) scale(2);
            transform-origin: center center;
        }
        .header-ai-btn .ai-icon-normal { opacity: 1; }
        .header-ai-btn .ai-icon-hover { opacity: 0; }
        .header-ai-btn:active .ai-icon-normal { opacity: 0; }
        .header-ai-btn:active .ai-icon-hover { opacity: 1; }
        @media (hover: hover) and (pointer: fine) {
            .header-ai-btn:hover .ai-icon-normal { opacity: 0; }
            .header-ai-btn:hover .ai-icon-hover { opacity: 1; }
        }
        
        #map { 
            height: calc(100vh - 80px - var(--geogeo-pv-ticker-height, 36px)); 
            width: 100%; 
        }
        .popup-content { 
            position: relative;
            max-width: 300px; 
        }
        /* Map popup: one chrome only — flatten Leaflet wrapper; inner card is the surface. */
        .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-content-wrapper,
        .leaflet-popup:has(.popup-content-loading) .leaflet-popup-content-wrapper {
            background: transparent;
            box-shadow: none;
            border: none;
            border-radius: 0;
            padding: 0;
        }
        .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-content,
        .leaflet-popup:has(.popup-content-loading) .leaflet-popup-content {
            margin: 0;
            min-width: 0;
        }
        .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-tip,
        .leaflet-popup:has(.popup-content-loading) .leaflet-popup-tip {
            background: #fff;
            box-shadow: none;
        }
        .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-close-button,
        .leaflet-popup:has(.popup-content-loading) .leaflet-popup-close-button {
            display: none;
        }
        /* Map popup: mobile-list balance — full-height rail, tags one row, variable height. */
        .popup-content.popup-content--list-card {
            --list-mobile-row-gap: 4px;
            /* Match mobile list: room for locked 8.2ch HH:MM:SS + Ouvert tag. */
            --list-mobile-clock-col: 96px;
            --list-mobile-clock-bumper: 18px;
            --list-mobile-star-clearance: 18px;
            position: relative;
            max-width: 340px;
            min-width: 260px;
            min-height: 132px;
            padding: 8px var(--list-mobile-clock-col) 10px 10px;
            margin: 0;
            background: #fff;
            border-radius: 8px;
            box-shadow: 0 3px 14px rgba(0, 0, 0, 0.28);
            overflow-x: hidden;
            overflow-y: visible;
            box-sizing: border-box;
        }
        .popup-content.popup-content-loading {
            background: #fff;
            border-radius: 8px;
            box-shadow: 0 3px 14px rgba(0, 0, 0, 0.28);
            box-sizing: border-box;
        }
        /* Mobile map: full list-card spans screen width (Leaflet also sets inline width).
           Loading chip stays compact — do not stretch "Chargement..." to the viewport. */
        @media (max-width: 768px) {
            .popup-content.popup-content--list-card {
                width: calc(100vw - 16px);
                max-width: calc(100vw - 16px);
                min-width: 0;
            }
            .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-content-wrapper {
                width: calc(100vw - 16px);
                max-width: calc(100vw - 16px);
            }
            .leaflet-popup:has(.popup-content--list-card) .leaflet-popup-content {
                width: calc(100vw - 16px) !important;
                max-width: calc(100vw - 16px) !important;
                min-width: 0 !important;
            }
            .popup-content.popup-content-loading {
                width: auto;
                max-width: 280px;
                min-width: 180px;
            }
            .leaflet-popup:has(.popup-content-loading):not(:has(.popup-content--list-card)) .leaflet-popup-content-wrapper,
            .leaflet-popup:has(.popup-content-loading):not(:has(.popup-content--list-card)) .leaflet-popup-content {
                width: auto !important;
                max-width: 280px !important;
                min-width: 0 !important;
            }
        }
        .popup-content.popup-content--list-card .list-item-body {
            display: flex;
            flex-direction: column;
            gap: var(--list-mobile-row-gap, 4px);
            min-width: 0;
            max-width: 100%;
            padding: 0;
        }
        .popup-content.popup-content--list-card .list-item-header-main {
            display: flex;
            flex-direction: column;
            gap: var(--list-mobile-row-gap, 4px);
            min-width: 0;
        }
        .popup-content.popup-content--list-card .list-item-action-rail,
        .popup-content.popup-content--list-card .list-item-action-rail--clock-only {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            width: var(--list-mobile-clock-col);
            height: auto;
            padding: 8px 2px 8px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            gap: 0;
            box-sizing: border-box;
            z-index: 2;
            pointer-events: none;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-slot {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 100%;
            position: static;
            left: auto;
            right: auto;
            top: auto;
            bottom: auto;
            transform: none;
            flex: 0 0 auto;
            pointer-events: auto;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-clock {
            flex: 0 0 auto;
            width: 100%;
            min-height: 14px;
            align-items: center;
            justify-content: center;
            position: relative;
            z-index: 1;
        }
        .popup-content.popup-content--list-card .list-item-clock-bumper {
            flex: 0 0 auto;
            width: 100%;
            height: var(--list-mobile-clock-bumper, 18px);
            min-height: var(--list-mobile-clock-bumper, 18px);
            margin: 0;
            padding: 0;
            pointer-events: none;
            visibility: hidden;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-fav {
            position: absolute;
            top: 50%;
            left: 0;
            right: 0;
            transform: translateY(-50%);
            flex: 0 0 auto;
            min-height: 0;
            height: auto;
            z-index: 1;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-share {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 8px;
            transform: none;
            flex: 0 0 auto;
            min-height: 0;
            height: auto;
            z-index: 1;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-btn,
        .popup-content.popup-content--list-card .tender-favorite-btn.list-item-action-rail-btn {
            width: 32px;
            height: 32px;
            min-width: 32px;
            min-height: 32px;
            padding: 0;
            border: none;
            border-radius: 6px;
            background: transparent;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            flex-shrink: 0;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-btn img {
            width: 22px;
            height: 22px;
            object-fit: contain;
        }
        .popup-content.popup-content--list-card .list-item-title {
            font-size: 14px;
            line-height: 1.3;
            min-width: 0;
            overflow-wrap: anywhere;
        }
        .popup-content.popup-content--list-card .list-item-details {
            font-size: 13px;
            min-width: 0;
        }
        .popup-content.popup-content--list-card .list-item-details .list-item-text {
            min-width: 0;
            overflow-wrap: anywhere;
        }
        .popup-content.popup-content--list-card .list-item-bottom-rows {
            display: flex;
            flex-direction: column;
            gap: var(--list-mobile-row-gap, 4px);
            margin-top: 2px;
            min-width: 0;
            max-width: 100%;
        }
        .popup-content.popup-content--list-card .list-item-actions .list-item-link,
        .popup-content.popup-content--list-card .list-item-link {
            width: fit-content;
            max-width: 100%;
            font-size: 13px;
            font-weight: 700;
            color: #147CEC;
            text-decoration: none;
            display: inline-flex;
            align-items: flex-start;
            gap: 8px;
            min-width: 0;
        }
        .popup-content.popup-content--list-card .list-item-link:hover {
            color: #1E3A8A;
            text-decoration: underline;
        }
        .popup-content.popup-content--list-card .list-item-tags-row {
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 4px;
            box-sizing: border-box;
            /* Same as mobile list: reclaim clock column; share is absolute in the rail. */
            width: calc(100% + var(--list-mobile-clock-col));
            max-width: none;
            margin: 0 calc(-1 * var(--list-mobile-clock-col)) 0 0;
            padding: 0 2px 0 0;
            overflow: hidden;
        }
        .popup-content.popup-content--list-card .list-item-tags-scroll {
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 5px;
            flex: 1 1 auto;
            min-width: 0;
            max-width: 100%;
            overflow-x: auto;
            overflow-y: hidden;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }
        .popup-content.popup-content--list-card .list-item-tags-scroll::-webkit-scrollbar {
            display: none;
        }
        .popup-content.popup-content--list-card .list-item-tags-scroll .tender-tags {
            display: inline-flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 5px;
            margin: 0;
            flex-shrink: 0;
        }
        /*
         * Stack width = tag chip strip; formulaire matches that width.
         * Cap includes clock column so the fixed tag row does not stop short of the rail.
         */
        .popup-content.popup-content--list-card .list-item-tags-formulaire-stack {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            gap: var(--list-mobile-row-gap, 4px);
            box-sizing: border-box;
            width: max-content;
            max-width: calc(100% + var(--list-mobile-clock-col));
            padding-right: 2px;
            min-width: 0;
        }
        .popup-content.popup-content--list-card .list-item-tags-formulaire-stack .list-item-tags-row {
            width: auto;
            max-width: 100%;
            margin: 0;
            padding-right: 0;
        }
        .popup-content.popup-content--list-card .list-item-tags-formulaire-stack .list-item-tags-scroll {
            flex: 0 1 auto;
            min-width: 0;
            max-width: 100%;
        }
        .popup-content.popup-content--list-card .list-item-formulaire-row {
            display: flex;
            align-items: center;
            margin: 0;
            padding: 0;
            min-height: 18px;
            box-sizing: border-box;
            width: auto;
            max-width: none;
            align-self: stretch;
        }
        .popup-content.popup-content--list-card .list-item-formulaire-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            margin: 0;
            padding: 4px 10px;
            width: 100%;
            box-sizing: border-box;
            background: #fff;
            color: #1E3A8A;
            border: 1.5px solid #1E3A8A;
            border-radius: 6px;
            font-size: 12px;
            font-weight: 600;
            font-family: var(--font-ui, inherit);
            line-height: 1.25;
            cursor: pointer;
            white-space: nowrap;
        }
        .popup-content.popup-content--list-card .list-item-formulaire-btn:hover,
        .popup-content.popup-content--list-card .list-item-formulaire-btn:focus-visible {
            background: #f8fafc;
            outline: none;
        }
        .popup-content.popup-content--list-card .tender-corner-row {
            display: none;
        }

        .popup-title { 
            font-weight: bold; 
            margin-bottom: 8px; 
            display: flex;
            align-items: flex-start;
            color: #1E3A8A;
            word-wrap: break-word;
            word-break: break-word;
            overflow-wrap: break-word;
            hyphens: auto;
        }
        
        .popup-title > *:not(.popup-icon) {
            flex: 1;
            min-width: 0;
            word-wrap: break-word;
            word-break: break-word;
            overflow-wrap: break-word;
        }
        .popup-info { 
            font-size: 12px; 
            color: #666; 
            margin: 2px 0; 
            display: flex;
            align-items: flex-start;
        }
        .popup-info-block { margin-top: 6px; }
        .popup-label { font-weight: 600; color: #444; margin-right: 6px; }
        .popup-desc-snippet { font-size: 11px; line-height: 1.35; color: #555; margin-top: 4px; max-height: 4.5em; overflow: hidden; }
        
        .popup-icon {
            width: 14px;
            height: 14px;
            margin-right: 6px;
            vertical-align: middle;
            opacity: 0.8;
            filter: brightness(0) saturate(100%) invert(20%) sepia(100%) saturate(2000%) hue-rotate(220deg) brightness(0.8) contrast(1.2);
            transition: all 0.2s ease;
        }
        
        .popup-icon:hover {
            opacity: 1;
            transform: scale(1.1);
            filter: brightness(0) saturate(100%) invert(15%) sepia(100%) saturate(2000%) hue-rotate(220deg) brightness(0.9) contrast(1.3);
        }
        
        .popup-title .popup-icon {
            width: 16px;
            height: 16px;
            margin-right: 8px;
        }
        
        .popup-info a {
            color: #147CEC;
            text-decoration: none;
        }
        
        .popup-info a:hover {
            color: #1E3A8A;
            text-decoration: underline;
        }

        .popup-bids-block {
            margin-top: 8px;
            font-size: 12px;
        }
        .popup-bids-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 4px;
        }
        .popup-bids-table th,
        .popup-bids-table td {
            padding: 3px 6px;
            text-align: left;
            border-bottom: 1px solid #e5e7eb;
        }
        .popup-bids-table th {
            font-weight: 600;
            color: #374151;
        }
        .popup-bids-table tr.bid-winner td {
            font-weight: 600;
            color: #047857;
        }
        .popup-bids-more {
            margin-top: 4px;
            color: #6b7280;
            font-size: 11px;
        }
        .popup-bids-empty {
            margin-top: 4px;
            font-size: 11px;
            color: #6b7280;
            font-style: italic;
        }
        .popup-lot-titles {
            margin: 4px 0 0 16px;
            padding: 0;
            font-size: 11px;
            color: #374151;
        }
        .popup-lot-titles li { margin-bottom: 2px; }
        
        /* Filter mismatch marker styling - orange border, reduced opacity */
        .filter-mismatch-marker {
            animation: pulseMismatch 2s ease-in-out infinite;
        }
        
        @keyframes pulseMismatch {
            0%, 100% {
                opacity: 0.7;
            }
            50% {
                opacity: 0.9;
            }
        }
        
        /* Filter mismatch badge in popup */
        .popup-filter-mismatch-badge {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: #f59e0b;
            color: white;
            padding: 6px 12px;
            border-radius: 12px;
            font-size: 11px;
            font-weight: 500;
            margin: 8px 0;
            animation: slideInBadge 0.3s ease-out;
        }
        
        /* Tender tags (popup and list) – colors/shape per TAGS_FULL_AUDIT */
        .tender-tags {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            margin: 8px 0;
        }
        .tender-tag {
            display: inline-block;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 500;
            background: #e2e8f0;
            color: #334155;
        }
        /* Tag colors – locked 3-row panel (2026-08-07) */
        .tender-tag.tag-municipal,
        .tag-filter-btn.tag-municipal { background: rgb(96, 165, 250); color: #fff; }

        /* Provincial (quebec): former Canada slot color */
        .tender-tag.tag-quebec,
        .tag-filter-btn.tag-quebec { background: rgb(37, 99, 235); color: #fff; }

        /* Canada: former PME+ slot color */
        .tender-tag.tag-canada,
        .tag-filter-btn.tag-canada { background: rgb(30, 58, 138); color: #fff; }

        /* List fixed category tags — same palette as pinColors / category filters */
        .tender-tag.tag-category-construction { background: #2E8B57; color: #fff; }
        .tender-tag.tag-category-goods { background: #147CEC; color: #fff; }
        .tender-tag.tag-category-professional { background: #1E3A8A; color: #fff; }
        .tender-tag.tag-category-services { background: #5B8DEF; color: #fff; }
        .tender-tag.tag-category-services-lies-aux-biens { background: rgb(104, 81, 117); color: #fff; }
        .tender-tag.tag-category-technical { background: #7BEC7B; color: #fff; }

        /* Category fused into list title text (before title words) */
        .list-item-title .list-item-text .list-title-category {
            display: inline;
            margin-right: 0.35em;
            vertical-align: baseline;
        }
        .list-item-title .list-item-text .list-title-category .tender-tag.tag-category {
            display: inline-block;
            vertical-align: middle;
            margin: 0 0 0.1em 0;
            padding: 2px 7px;
            font-size: 10px;
            font-weight: 600;
            line-height: 1.2;
            border-radius: 5px;
            white-space: nowrap;
        }

        /* List map focus tag (S-B / services-lies-aux-biens color) */
        .tag-map-wrap {
            position: relative;
            display: inline-flex;
            align-items: center;
            margin: 0;
            padding: 0;
            border: 0;
            background: transparent;
            cursor: pointer;
            line-height: 0;
            vertical-align: middle;
        }
        .tag-map {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 4px 8px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 500;
            background: rgb(104, 81, 117);
            color: #fff;
            min-width: 28px;
            min-height: 22px;
            box-sizing: border-box;
        }
        .tag-map-wrap:hover .tag-map,
        .tag-map-wrap:focus-visible .tag-map {
            background: rgb(84, 64, 96);
        }
        .tag-map-wrap:focus-visible {
            outline: none;
        }
        .tag-map-icon {
            display: block;
            width: 12px;
            height: 12px;
            transform: scale(1.2);
            transform-origin: center;
            pointer-events: none;
        }
        .list-item.list-item--map-focus {
            outline: 2px solid #1E3A8A;
            outline-offset: 2px;
            transition: outline-color 0.2s ease;
        }

        /* PME+: former ouverture-sous-estimation bg, white text */
        .tender-tag.tag-pme,
        .tag-filter-btn.tag-pme { background: rgb(88, 190, 88); color: #fff; }

        /* Countdown long / Ouvert / date tags: projet green (unified with clocks) */
        .countdown-block .countdown-days-tag.long { background: #16a34a; color: #fff; }

        .tender-tag.tag-calendrier,
        .tag-filter-btn.tag-calendrier { background: rgb(28, 66, 107); color: #fff; }

        .tender-tag.tag-securite,
        .tag-filter-btn.tag-securite { background: rgb(18, 44, 94); color: #fff; }

        /* Compétitif: former résultats-publiés color */
        .tender-tag.tag-competitive,
        .tag-filter-btn.tag-competitive { background: rgb(66, 168, 66); color: #fff; }

        /* Peu de soumissionnaire: former attribué color */
        .tender-tag.tag-few-bids,
        .tag-filter-btn.tag-few-bids { background: rgb(17, 84, 57); color: #fff; }

        .tender-tag.tag-under-estimate,
        .tag-filter-btn.tag-under-estimate { background: rgb(30, 115, 60); color: #fff; }

        .tender-tag.tag-over-estimate,
        .tag-filter-btn.tag-over-estimate { background: rgb(17, 84, 57); color: #fff; }

        .tender-tag.tag-matches-favorites,
        .tag-filter-btn.tag-matches-favorites { background: rgb(114, 107, 143); color: #fff; }

        .tender-tag.tag-matches-alerts,
        .tag-filter-btn.tag-matches-alerts { background: rgb(104, 81, 117); color: #fff; }

        .tender-tag.tag-matches-saved-searches,
        .tag-filter-btn.tag-matches-saved-searches { background: rgb(104, 81, 117); color: #fff; }
        /* Idle/hover: full-strength color. Keep active opacity drop so selection is visible. */
        .tag-filter-btn.tag-matches-saved-searches,
        .tag-filter-btn.tag-matches-saved-searches:hover:not(.active) {
            opacity: 1;
        }

        .tender-tag.tag-estimated-amount,
        .tag-filter-btn.tag-estimated-amount { background: rgb(79, 48, 75); color: #fff; }

        /* Tags not in current filter row – keep readable defaults */

        .tender-tag.tag-no-bids,
        .tag-filter-btn.tag-no-bids { background: rgb(30, 115, 60); color: #fff; }

        .tender-tag.tag-multi-phase,
        .tag-filter-btn.tag-multi-phase { background: rgb(28, 66, 107); color: #fff; }

        .tender-tag.tag-multi-lot,
        .tag-filter-btn.tag-multi-lot { background: rgb(18, 44, 94); color: #fff; }

        .tender-tag.tag-results-published,
        .tag-filter-btn.tag-results-published { background: rgb(66, 168, 66); color: #fff; }

        .tender-tag.tag-awarded,
        .tag-filter-btn.tag-awarded { background: rgb(17, 84, 57); color: #fff; }

        .tender-tag.tag-matches-analytics,
        .tag-filter-btn.tag-matches-analytics { background: rgb(104, 81, 117); color: #fff; }

        .tender-tag.tag-matches-recently-viewed,
        .tag-filter-btn.tag-matches-recently-viewed { background: rgb(95, 66, 99); color: #fff; }

        .tender-tag.tag-matches-shared,
        .tag-filter-btn.tag-matches-shared { background: rgb(79, 48, 75); color: #fff; }

        /* Status tags added after the design-spec pass (Jun 12 evening) – provisional
           shades within the green ladder; adjust hexes here if you want other steps. */
        .tender-tag.tag-award-pending,
        .tag-filter-btn.tag-award-pending { background: rgb(42, 126, 61); color: #fff; }
        .tender-tag.tag-opening-pending,
        .tag-filter-btn.tag-opening-pending { background: rgb(161, 98, 7); color: #fff; }
        .tag-filter-btn.tag-seao-only[hidden] { display: none; }

        .tender-tag.tag-opening-under-estimate,
        .tag-filter-btn.tag-opening-under-estimate { background: rgb(88, 190, 88); color: #1e3a8a; }

        .tender-tag.tag-opening-over-estimate,
        .tag-filter-btn.tag-opening-over-estimate { background: rgb(48, 140, 63); color: #fff; }
        .tag-unspsc-wrap, .tag-projet-wrap, .tag-ref-wrap { position: relative; display: inline-block; }
        .list-item-tags-row .tag-copyable {
            cursor: pointer;
        }
        .list-item-tags-row .tag-copyable.tag-copied .tag-unspsc,
        .list-item-tags-row .tag-copyable.tag-copied .tag-projet,
        .list-item-tags-row .tag-copyable.tag-copied .tag-ref {
            outline: 2px solid #7BEC7B;
            outline-offset: 1px;
        }
        .tag-unspsc {
            display: inline-block;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 500;
            background: #22c55e;
            color: #fff;
        }
        .tag-unspsc:hover { background: #16a34a; }
        .tag-projet {
            display: inline-block;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 500;
            background: #16a34a;
            color: #fff;
        }
        .tag-projet:hover { background: #15803d; }
        .tag-ref {
            display: inline-block;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 500;
            background: #1E3A8A;
            color: #fff;
        }
        .tag-ref:hover { background: #1e40af; }
        /* Meta tags (UNSPSC, Projet, Ref): use geogeo-data-tooltip-portal (above). Legacy bubbles off. */
        .unspsc-tooltip-bubble,
        .meta-tooltip-bubble {
            display: none !important;
        }
        .list-item .tender-tags { margin: 6px 0; }
        .list-item .tender-tag { font-size: 12px; padding: 4px 9px; border-radius: 6px; }
        .list-item .tag-unspsc, .list-item .tag-projet, .list-item .tag-ref { font-size: 12px; padding: 4px 9px; }
        
        /* List item: left-edge favorite strip (vertical bar, 15–20px), then content */
        .list-item-favorite-strip {
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            width: 54px; /* tripled width for more presence */
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 2;
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn {
            width: 54px; /* match strip width */
            height: 100%; /* cover full list item height */
            padding: 0;
            border: 2px solid #1E3A8A;
            border-radius: 4px;
            background: #ffffff; /* idle: white strip */
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s ease, border-color 0.2s ease;
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn.starred {
            background: #22c55e;
            border-color: #22c55e;
        }
        /* Star icon: neutral by default; colors controlled per state below */
        .tender-favorite-btn img {
            opacity: 1 !important;
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn img {
            width: 30px;
            height: 30px;
            object-fit: contain;
            /* Idle: native SVG fill #1E3A8A (same navy as Terminé / share / Canada tag) */
            filter: none;
        }
        /* Hover on the whole tender row (but not overriding strip hover): bright green star, except when row is locked as favorite */
        .list-item:hover .list-item-favorite-strip .tender-favorite-btn img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        .list-item.favoris-selected:hover .list-item-favorite-strip .tender-favorite-btn img {
            /* Locked selected row: keep dark blue star, ignore row hover color */
            filter: brightness(0) saturate(100%) invert(13%) sepia(51%) saturate(2872%) hue-rotate(208deg) brightness(90%) contrast(102%);
        }
        /* Hover on the strip itself: dark blue background + white star (only when not locked as selected) */
        .list-item .list-item-favorite-strip:hover .tender-favorite-btn {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        .list-item .list-item-favorite-strip:hover .tender-favorite-btn img {
            filter: brightness(0) invert(1);
        }
        .list-item.favoris-selected .list-item-favorite-strip:hover .tender-favorite-btn {
            /* When row is selected/green, keep the strip green as the source of truth */
            background: #7BEC7B;
            border-color: #7BEC7B;
        }
        .list-item.favoris-selected .list-item-favorite-strip:hover .tender-favorite-btn img {
            /* And keep the star dark blue while selected */
            filter: brightness(0) saturate(100%) invert(13%) sepia(51%) saturate(2872%) hue-rotate(208deg) brightness(90%) contrast(102%);
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn:focus {
            outline: none;
        }
        /* Favoris strip tooltips (list/favorites/recents): dark blue bubble above button */
        .list-item .list-item-favorite-strip .tender-favorite-btn,
        .favorites-item-strip-btn,
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn {
            position: relative;
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn:hover::after,
        .favorites-item-strip-btn:hover::after,
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::after {
            content: attr(data-fav-tooltip);
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 8px;
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 600;
            white-space: nowrap;
            z-index: 2147483000;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
            font-family: var(--font-ui);
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn:hover::before,
        .favorites-item-strip-btn:hover::before,
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::before {
            content: '';
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 3px;
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
            z-index: 2147483000;
            pointer-events: none;
        }
        /* Favorites/Recents strip: portal-only tooltips (disable CSS pseudo bubble to prevent duplicates/jitter). */
        .favorites-item-strip-btn:hover::after,
        .favorites-item-strip-btn:hover::before,
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::after,
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::before {
            display: none !important;
            content: '' !important;
        }
        /* Tender list favorite tooltip: place to the right of button center */
        .list-item .list-item-favorite-strip .tender-favorite-btn:hover::after {
            bottom: auto;
            top: 50%;
            left: calc(100% + 10px);
            transform: translateY(-50%);
            margin-bottom: 0;
            margin-left: 0;
        }
        .list-item .list-item-favorite-strip .tender-favorite-btn:hover::before {
            bottom: auto;
            top: 50%;
            left: calc(100% + 2px);
            transform: translateY(-50%);
            margin-bottom: 0;
            border: 5px solid transparent;
            border-right-color: #1E3A8A; /* arrow points left, toward the button */
            border-top-color: transparent;
            border-left-color: transparent;
            border-bottom-color: transparent;
        }
        /* Portal tooltip for favorites strip buttons (not clipped by overflow containers). */
        .fav-strip-tooltip-portal {
            position: fixed;
            z-index: 2147483000;
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 600;
            white-space: nowrap;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
            font-family: var(--font-ui);
            transform: translate(-50%, -100%);
            opacity: 0;
            transition: opacity 0.05s ease;
        }
        .fav-strip-tooltip-portal.fav-strip-tooltip-right {
            transform: translate(0, -50%);
        }
        .fav-strip-tooltip-portal.fav-strip-tooltip-right::after {
            top: 50%;
            left: -5px;
            transform: translateY(-50%);
            border: 5px solid transparent;
            border-right-color: #1E3A8A; /* arrow points left */
            border-top-color: transparent;
            border-left-color: transparent;
            border-bottom-color: transparent;
        }
        .fav-strip-tooltip-portal::after {
            content: '';
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
        }
        /* Body portal for data-tooltip controls (tags, clear filters, overflow panels) */
        .geogeo-data-tooltip-portal {
            position: fixed;
            z-index: 2147483000;
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 600;
            max-width: min(320px, calc(100vw - 16px));
            white-space: normal;
            text-align: center;
            line-height: 1.35;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
            font-family: var(--font-ui);
            opacity: 0;
            transition: opacity 0.05s ease;
            transform: translate(-50%, calc(-100% - 8px));
        }
        .geogeo-data-tooltip-portal.is-visible {
            opacity: 1;
        }
        .geogeo-data-tooltip-portal::after {
            content: '';
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
        }

        /* Inline filter help: ? stays in the title row; panel opens below */
        .filter-heading-with-help {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin: 0 0 12px 0;
        }
        .filter-heading-label {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            min-width: 0;
            flex-wrap: nowrap;
        }
        .filter-heading-text {
            font: inherit;
        }
        .geogeo-filter-help-summary {
            list-style: none;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 22px;
            height: 22px;
            border-radius: 50%;
            border: 1px solid #1E3A8A;
            color: #1E3A8A;
            font-size: 12px;
            font-weight: 700;
            line-height: 1;
            cursor: pointer;
            font-family: var(--font-ui);
            background: #fff;
            user-select: none;
            padding: 0;
            margin: 0;
            flex-shrink: 0;
        }
        .geogeo-filter-help-summary[aria-expanded="true"] {
            background: #1E3A8A;
            color: #fff;
        }
        .geogeo-filter-help-body {
            display: block;
            width: 100%;
            max-width: 100%;
            margin: 0 0 10px 0;
            padding: 10px 12px;
            background: #f8fafc;
            color: #1e293b;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            font-size: 11px;
            font-weight: 400;
            line-height: 1.45;
            font-family: var(--font-ui);
            box-sizing: border-box;
        }
        .geogeo-filter-help-body[hidden] {
            display: none !important;
        }
        .geogeo-filter-help-body .geogeo-filter-help-title {
            font-weight: 700;
            color: #1E3A8A;
            margin: 0 0 6px 0;
            font-size: 12px;
        }
        .geogeo-filter-help-body .geogeo-filter-help-lead { margin: 0 0 8px 0; }
        .geogeo-filter-help-body table {
            width: 100%;
            border-collapse: collapse;
            font-size: 10px;
        }
        .geogeo-filter-help-body th,
        .geogeo-filter-help-body td {
            text-align: left;
            vertical-align: top;
            padding: 4px 6px;
            border-bottom: 1px solid #e2e8f0;
        }
        .geogeo-filter-help-body th {
            font-weight: 600;
            color: #1E3A8A;
            background: #f8fafc;
        }
        .geogeo-filter-help-body .geogeo-filter-help-note {
            margin: 8px 0 0 0;
            font-size: 10px;
            font-weight: 600;
            color: #475569;
        }
        .geogeo-filter-help-portal,
        .geogeo-notice-type-help-portal {
            display: none !important;
        }

        /* Pro soft-gate portal (I.A., Recherches, AchatsCanada, CSV, …) */
        .geogeo-pro-gate-tooltip-portal {
            position: fixed;
            z-index: 2147483646;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            max-width: min(320px, calc(100vw - 16px));
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            font-weight: 600;
            line-height: 1.2;
            white-space: nowrap;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
            font-family: var(--font-ui);
            opacity: 0;
            transition: opacity 0.05s ease;
        }
        .geogeo-pro-gate-tooltip-portal.is-visible {
            opacity: 1;
        }
        /* plan_pro_w.svg is 800x800 — must clamp or hover becomes a giant blue square */
        .geogeo-pro-gate-tooltip-portal .geogeo-pro-gate-tooltip-icon {
            width: 14px;
            height: 14px;
            max-width: 14px;
            max-height: 14px;
            flex: 0 0 14px;
            object-fit: contain;
            display: inline-block;
            vertical-align: middle;
        }
        .geogeo-pro-gate-tooltip-portal .geogeo-pro-gate-tooltip-plan {
            font-weight: 700;
        }
        .geogeo-pro-gate-tooltip-portal::after {
            content: '';
            position: absolute;
            border: 5px solid transparent;
            pointer-events: none;
        }
        .geogeo-pro-gate-tooltip-portal.placement-top {
            transform: translate(-50%, -100%);
        }
        .geogeo-pro-gate-tooltip-portal.placement-top::after {
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border-top-color: #1E3A8A;
        }
        .geogeo-pro-gate-tooltip-portal.placement-right {
            transform: translate(0, -50%);
        }
        .geogeo-pro-gate-tooltip-portal.placement-right::after {
            top: 50%;
            right: 100%;
            transform: translateY(-50%);
            border-right-color: #1E3A8A;
        }
        /* List row border when favorited - high specificity so it always shows */
        .list-item.favoris-selected,
        div.list-item.favoris-selected {
            border: 2px solid #7BEC7B !important;
            box-sizing: border-box;
        }
        
        /* Full-height right rail: clock top; star = tender mid; share = bottom. */
        .list-item-action-rail {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            /* Wide enough for locked HH:MM:SS grid at list size (8 fixed ch). */
            width: 120px;
            z-index: 2;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            /* Match .list-item vertical padding so clock sits on the title row. */
            padding: 15px 4px;
            box-sizing: border-box;
            pointer-events: none; /* slots/buttons re-enable */
        }
        .list-item-action-rail-slot {
            flex: 0 0 auto;
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            pointer-events: auto;
        }
        .list-item-action-rail-clock {
            flex: 0 0 auto;
            align-items: flex-start;
            min-height: 25px; /* match list clock line so title row lines up */
            position: relative;
            z-index: 1;
        }
        /* Star: exact vertical center of the tender (rail is full item height). */
        .list-item-action-rail-fav {
            position: absolute;
            top: 50%;
            left: 0;
            right: 0;
            transform: translateY(-50%);
            flex: 0 0 auto;
            min-height: 0;
            height: auto;
            align-items: center;
            justify-content: center;
            z-index: 1;
        }
        /* Share: pinned to tender bottom — never follows the star. */
        .list-item-action-rail-share {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 15px;
            transform: none;
            flex: 0 0 auto;
            min-height: 0;
            height: auto;
            align-items: center;
            justify-content: center;
            z-index: 1;
        }
        .list-item-action-rail-clock .countdown-block,
        .list-item-action-rail-clock .countdown-corner {
            align-items: center;
        }
        /* List: when a live clock is shown, hide the days label (clock only). */
        .list-item .countdown-block:has(.countdown-live) .countdown-days-tag {
            display: none;
        }
        /* Rail icon buttons: match left-strip star (30px) / header icons (~24–30px). */
        .list-item-action-rail .list-item-action-rail-btn {
            width: 40px;
            height: 40px;
            min-width: 40px;
            min-height: 40px;
            padding: 0;
            border: none;
            border-radius: 6px;
            background: transparent;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            flex-shrink: 0;
            position: relative;
        }
        .list-item-action-rail .list-item-action-rail-btn img {
            width: 30px;
            height: 30px;
            object-fit: contain;
        }
        .list-item-action-rail .tender-favorite-btn img {
            /* Native SVG #1E3A8A — match Terminé / share exactly */
            filter: none;
        }
        .list-item-action-rail .tender-favorite-btn.starred img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        /* Match left-strip star: green on hover, no dark blue wash */
        .list-item-action-rail .tender-favorite-btn:hover,
        .list-item-action-rail .tender-favorite-btn.starred:hover {
            background: transparent;
        }
        .list-item-action-rail .tender-favorite-btn:hover img,
        .list-item-action-rail .tender-favorite-btn.starred:hover img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        .list-item-action-rail .list-item-action-rail-btn:hover {
            background: rgba(30, 58, 138, 0.1);
        }
        .list-item-action-rail .tender-favorite-btn.list-item-action-rail-btn:hover,
        .list-item-action-rail .list-item-corner-share-btn.list-item-action-rail-btn:hover {
            background: transparent;
        }
        /* Share under star: same green icon hover, no dark wash */
        .list-item-action-rail .list-item-corner-share-btn img {
            filter: none;
        }
        .list-item-action-rail .list-item-corner-share-btn:hover img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        .list-item-actions-stack {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            gap: 4px;
            flex-shrink: 0;
        }
        .list-item-corner-share-wrap {
            display: flex;
            align-items: center;
            gap: 2px;
            flex-shrink: 0;
        }
        .list-item-corner-share-btn {
            padding: 3px;
            border: none;
            border-radius: 4px;
            background: transparent;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            cursor: pointer;
        }
        .list-item-corner-share-btn:hover {
            background: transparent;
        }
        .list-item-corner-share-btn img {
            width: 20px;
            height: 20px;
            object-fit: contain;
        }
        /* Unified share tooltips (all share buttons): dark blue bubble above button */
        .list-share-btn,
        .list-item-corner-share-btn,
        .favorites-header-share-btn,
        .favorites-item-share-btn {
            position: relative;
        }
        .list-share-btn:hover::after,
        .list-item-corner-share-btn:hover::after,
        .favorites-header-share-btn:hover::after,
        .favorites-item-share-btn:hover::after {
            content: attr(data-share-tooltip);
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 8px;
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            white-space: nowrap;
            z-index: 2147483000;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
            font-family: var(--font-ui);
            font-weight: 600;
        }
        .list-share-btn:hover::before,
        .list-item-corner-share-btn:hover::before,
        .favorites-header-share-btn:hover::before,
        .favorites-item-share-btn:hover::before {
            content: '';
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 3px;
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
            z-index: 2147483000;
            pointer-events: none;
        }
        .tender-favorite-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 28px;
            height: 28px;
            padding: 0;
            border: none;
            background: transparent;
            cursor: pointer;
            flex-shrink: 0;
        }
        .tender-favorite-btn img {
            width: 24px;
            height: 24px;
            object-fit: contain;
        }
        .tender-favorite-btn:focus {
            outline: none;
        }
        /* Popup corner row (star + countdown). List uses .list-item-action-rail instead. */
        .tender-corner-row {
            position: absolute;
            top: 8px;
            right: 8px;
            z-index: 2;
            display: flex;
            align-items: center;
            gap: 12px;
        }
        /* Countdown: inside corner row (list item) or as before in popup. */
        .countdown-corner {
            position: relative;
            top: auto;
            right: auto;
            z-index: 2;
        }
        .list-item-action-rail-clock .countdown-block {
            align-items: center;
        }
        .list-item-action-rail-clock .countdown-live {
            justify-items: center;
        }
        .countdown-block {
            display: inline-flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 4px;
            opacity: 1;
            position: relative;
        }
        /* Numerical clock: tag pill form (same language as Ouvert / date tags) */
        .countdown-block .countdown-live {
            display: inline-grid;
            grid-template-columns: repeat(8, 1fr);
            box-sizing: border-box;
            width: auto;
            min-width: 8.2ch;
            max-width: none;
            padding: 4px 8px;
            border-radius: 6px;
            letter-spacing: 0;
            font-variant-numeric: tabular-nums;
            font-feature-settings: "tnum" 1, "lnum" 1;
            font-kerning: none;
            font-size: 29px;
            line-height: 1;
            font-weight: 700; /* loaded DM Sans weight (600 was synthetic → jitter) */
            white-space: nowrap;
            overflow: hidden;
            color: #fff;
            background: #16a34a; /* same green as Ouvert / date tags */
        }
        .countdown-block .countdown-live .countdown-ch {
            display: block;
            width: 100%;
            min-width: 0;
            text-align: center;
            font: inherit;
            font-variant-numeric: inherit;
            font-feature-settings: inherit;
            color: inherit;
        }
        /* Text under the numbers – rectangle with rounded corners (same as filter tags) */
        .countdown-block .countdown-days-tag {
            display: inline-block;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 12px;
            font-weight: 600;
            white-space: nowrap;
        }
        /* Unified greens: base = Projet/Ouvert #16a34a; <=24h = UNSPSC brighter #22c55e */
        .countdown-block .countdown-days-tag.urgent { background: #22c55e; color: #fff; }
        .countdown-block .countdown-days-tag.soon { background: #16a34a; color: #fff; }
        .countdown-block .countdown-days-tag.long { background: #16a34a; color: #fff; }
        /* 0:00 / Passé: same navy as Terminé */
        .countdown-block .countdown-days-tag.passed { background: rgb(30, 58, 138); color: #fff; }
        /* Status-only corner: Terminé = same navy as star/share SVG (#1E3A8A); Annulé = Favori match */
        .countdown-block .countdown-days-tag.termine { background: rgb(30, 58, 138); color: #fff; }
        .countdown-block .countdown-days-tag.annule { background: rgb(114, 107, 143); color: #fff; }
        .countdown-block .countdown-live.urgent { background: #22c55e; color: #fff; }
        .countdown-block .countdown-live.soon { background: #16a34a; color: #fff; }
        .countdown-block .countdown-live.long { background: #16a34a; color: #fff; }
        .countdown-block .countdown-live.passed { background: rgb(30, 58, 138); color: #fff; }
        .list-item .countdown-block .countdown-live {
            font-size: 25px;
            width: auto;
            min-width: 8.2ch;
            max-width: none;
        }
        .list-item .countdown-block {
            min-width: 0;
        }
        .list-item-action-rail-clock .countdown-block {
            align-items: center;
            min-width: 0;
            width: auto;
        }
        .list-item .countdown-block .countdown-days-tag { font-size: 14px; padding: 4px 10px; border-radius: 6px; }
        /* Favorites + Recents: countdown clock should be 50% smaller than list view */
        .favorites-item .countdown-block .countdown-live,
        .favorites-recents-item .countdown-block .countdown-live {
            font-size: 12.5px; /* list is 25px */
        }
        .favorites-item .countdown-block .countdown-days-tag,
        .favorites-recents-item .countdown-block .countdown-days-tag {
            font-size: 7px; /* list is 14px */
            padding: 2px 5px;
            border-radius: 6px;
        }
        /* Popup: corner row at bottom-right; list-card countdown matches mobile list rail. */
        .popup-content .tender-corner-row { top: auto; bottom: 8px; right: 8px; }
        .popup-content .countdown-corner { bottom: auto; right: auto; }
        .popup-content .countdown-block { gap: 2px; }
        .popup-content .countdown-block .countdown-live { font-size: 14px; letter-spacing: 0.01em; }
        .popup-content .countdown-block .countdown-days-tag { font-size: 9px; padding: 2px 6px; border-radius: 6px; }
        /* List-card popup: same clock / Ouvert|Terminé sizing as geogeo-mobile-list-mode. */
        .popup-content.popup-content--list-card .countdown-block {
            gap: 4px;
            align-items: center;
        }
        .popup-content.popup-content--list-card .list-item-action-rail-clock .countdown-block {
            width: auto;
            min-width: 0;
            max-width: 100%;
        }
        .popup-content.popup-content--list-card .countdown-block .countdown-live {
            font-size: 12.5px;
            width: 8.2ch;
            min-width: 8.2ch;
            max-width: 8.2ch;
            letter-spacing: 0;
            padding: 4px 8px;
        }
        .popup-content.popup-content--list-card .countdown-block .countdown-days-tag {
            font-size: 12px;
            padding: 4px 8px;
            line-height: 1.2;
            border-radius: 6px;
        }
        /* Same as list: live HH:MM:SS replaces the days label. */
        .popup-content.popup-content--list-card .countdown-block:has(.countdown-live) .countdown-days-tag {
            display: none;
        }
        
        /* Filter message popup styling - larger, more visible (kept for backward compatibility) */
        .filter-message-popup .leaflet-popup-content-wrapper {
            background: #f8f9fa;
            border: 2px solid #28a745;
            border-radius: 12px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
        }
        
        .filter-message-popup .leaflet-popup-content {
            margin: 0;
            padding: 0;
        }
        
        /* Enhanced tooltip styling */
        .popup-content [title] {
            position: relative;
        }
        
        .popup-content [title]:hover::after {
            content: attr(title);
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.9);
            color: white;
            padding: 4px 8px;
            border-radius: 4px;
            font-size: 11px;
            white-space: nowrap;
            z-index: 1000;
            pointer-events: none;
            margin-bottom: 5px;
        }
        
        .popup-content [title]:hover::before {
            content: '';
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 4px solid transparent;
            border-top-color: rgba(0, 0, 0, 0.9);
            z-index: 1000;
            pointer-events: none;
            margin-bottom: 1px;
        }
        
        /* Pin popups close via map click / hover leave; no X control. */
        .popup-close-btn {
            display: none !important;
        }
        
        /* Green flash animation for real-time status updates */
        .flash-green {
            animation: flashGreen 1.2s ease-in-out;
        }
        
        @keyframes flashGreen {
            0% { 
                color: inherit;
            }
            25% { 
                color: #22c55e;
            }
            50% { 
                color: #16a34a;
            }
            75% { 
                color: #22c55e;
            }
            100% { 
                color: inherit;
            }
        }
        
        .status-text, .bidder-text {
            transition: color 0.3s ease;
        }
        
        /* Hide the default Leaflet popup close button */
        .leaflet-popup-close-button {
            display: none !important;
        }
        
        /* Hide Leaflet zoom control - it conflicts with filter box position */
        .leaflet-top.leaflet-left .leaflet-control-zoom {
            display: none !important;
        }

        /* City entry logo (/{slug} hydrate) — frosted chip while entry view active */
        #map {
            position: relative;
        }
        .geogeo-city-entry-logo {
            position: absolute;
            top: 14px;
            left: 50%;
            right: auto;
            transform: translateX(-50%);
            z-index: 650;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 12px;
            max-width: min(300px, calc(100% - 32px));
            padding: 8px 14px 8px 8px;
            border-radius: 999px;
            background: rgba(248, 249, 250, 0.32);
            border: 1px solid rgba(255, 255, 255, 0.4);
            box-shadow:
                0 1px 2px rgba(15, 23, 42, 0.04),
                0 8px 24px rgba(15, 23, 42, 0.05),
                inset 0 1px 0 rgba(255, 255, 255, 0.45);
            backdrop-filter: blur(14px) saturate(1.15);
            -webkit-backdrop-filter: blur(14px) saturate(1.15);
            pointer-events: none;
            opacity: 0;
            visibility: hidden;
            transition:
                opacity 0.35s ease,
                visibility 0.35s ease,
                transform 0.35s ease;
            transform: translateX(-50%) translateY(-4px);
        }
        .geogeo-city-entry-logo.is-visible {
            opacity: 1;
            visibility: visible;
            transform: translateX(-50%) translateY(0);
        }
        .geogeo-city-entry-logo.is-instant {
            transition: none !important;
        }
        .geogeo-city-entry-logo-img {
            width: 36px;
            height: 36px;
            object-fit: contain;
            flex-shrink: 0;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.45);
            border: 1px solid rgba(148, 163, 184, 0.28);
            box-sizing: border-box;
            padding: 3px;
        }
        .geogeo-city-entry-logo-name {
            font-size: 13px;
            font-weight: 500;
            letter-spacing: 0.01em;
            color: rgba(30, 41, 59, 0.78);
            line-height: 1.2;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        /* Distance place-frame typeahead (municipal picker) */
        .distance-filter-group.geogeo-place-frame-host {
            position: relative;
        }
        .geogeo-place-frame-input-wrap {
            position: relative;
            display: inline-flex;
            align-items: center;
            gap: 4px;
            max-width: 220px;
            vertical-align: middle;
        }
        .geogeo-place-frame-dropdown {
            position: absolute;
            left: 0;
            right: 0;
            top: calc(100% + 4px);
            z-index: 1100;
            min-width: 220px;
            max-height: 240px;
            overflow: hidden; /* clip scrollbar to rounded shell */
            background: #fff;
            border: 2px solid #1E3A8A;
            border-radius: 12px;
            box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
            padding: 0;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
        }
        .geogeo-place-frame-dropdown-scroll {
            flex: 1 1 auto;
            min-height: 0;
            overflow-x: hidden;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            padding: 4px;
            box-sizing: border-box;
            scrollbar-width: thin;
            scrollbar-color: #1E3A8A transparent;
        }
        .geogeo-place-frame-dropdown-scroll::-webkit-scrollbar {
            width: 8px;
        }
        .geogeo-place-frame-dropdown-scroll::-webkit-scrollbar-track {
            background: transparent;
        }
        .geogeo-place-frame-dropdown-scroll::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 8px;
        }
        .geogeo-place-frame-dropdown-scroll::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }
        /* Body portal: escape filter sheet overflow; JS sets fixed left/top/width */
        .geogeo-place-frame-dropdown.geogeo-place-frame-dropdown--portal {
            position: fixed;
            left: auto;
            right: auto;
            top: auto;
            bottom: auto;
            min-width: 0;
            max-width: calc(100vw - 16px);
            z-index: 9990; /* Below .pro-popup (10000) / auth; above filter sheet */
        }
        body.geogeo-paywall-open .geogeo-place-frame-dropdown,
        body.geogeo-paywall-open .date-picker-popover.is-open {
            visibility: hidden !important;
            pointer-events: none !important;
        }
        .geogeo-place-frame-option {
            display: flex;
            align-items: center;
            gap: 10px;
            width: 100%;
            border: 0;
            background: transparent;
            text-align: left;
            padding: 6px 8px;
            border-radius: 8px;
            cursor: pointer;
            color: #1E3A8A;
            font-family: DM Sans, ui-sans-serif, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            font-size: 13px;
        }
        .geogeo-place-frame-option:hover,
        .geogeo-place-frame-option.is-active {
            background: rgba(30, 58, 138, 0.08);
        }
        .geogeo-place-frame-option-logo {
            width: 28px;
            height: 28px;
            object-fit: contain;
            border-radius: 50%;
            flex-shrink: 0;
            background: rgba(248, 250, 252, 0.9);
            border: 1px solid rgba(148, 163, 184, 0.35);
            padding: 2px;
            box-sizing: border-box;
        }
        .geogeo-place-frame-option-logo--empty {
            display: inline-block;
        }
        .geogeo-place-frame-option-text {
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 0;
            flex: 1;
        }
        .geogeo-place-frame-option-name {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .geogeo-place-frame-hint {
            flex-shrink: 0;
            font-size: 10px;
            font-weight: 600;
            letter-spacing: 0.04em;
            color: #64748b;
            border: 1px solid rgba(100, 116, 139, 0.35);
            border-radius: 4px;
            padding: 1px 5px;
        }

        /* Place-frame lock: point user at Distance when they try to pan/zoom the map */
        @keyframes geogeoPlaceFrameShake {
            0%, 100% { transform: translateX(0); }
            20% { transform: translateX(-4px); }
            40% { transform: translateX(4px); }
            60% { transform: translateX(-3px); }
            80% { transform: translateX(3px); }
        }
        .distance-filter-group.geogeo-place-frame-nudge {
            animation: geogeoPlaceFrameShake 0.45s ease;
        }
        #mainLocationInput.geogeo-place-frame-nudge-green,
        #mainLocationStatus.geogeo-place-frame-nudge-green {
            animation: flashGreen 0.9s ease-in-out;
        }
        #mainLocationInput.geogeo-place-frame-nudge-green {
            border-color: #22C55E !important;
            box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.28) !important;
        }
        #mainLocationStatus.geogeo-place-frame-nudge-green {
            color: #16a34a !important;
            font-weight: 600;
        }
        
        /* Filter Controls: wrapper (no contour) + body (contour) + tab outside like calendar */
        .filter-controls {
            position: absolute;
            top: 90px;
            left: 10px;
            right: auto;
            width: max-content;
            max-width: min(420px, calc(100vw - 64px));
            /* Above .pv-ticker (1005) in map mode so the sheet is not buried under the strip */
            z-index: 1006;
            transform: translateZ(0);
            will-change: transform;
            transition: transform 0.3s ease;
            outline: none !important;
        }
        .filter-controls.filter-collapsed {
            transform: translateX(calc(-100% - 10px)) translateZ(0);
        }
        /* Off-canvas body must not steal list/map clicks; tab stays hit-target */
        .filter-controls.filter-collapsed .filter-controls-body {
            pointer-events: none;
        }
        .filter-controls.filter-collapsed .filter-collapse-tab {
            pointer-events: auto;
            z-index: 2;
        }
        .filter-controls-body {
            background: #fff;
            /* No horizontal padding here: scrollbar on body-inner must sit on the left border */
            padding: 0;
            border: 3px solid #1E3A8A;
            border-radius: 15px;
            box-shadow: 0 4px 20px -2px rgba(0,0,0,0.15);
            min-width: 350px;
            /* Keep bottom of sheet above the PV ticker (top 90px + gap) */
            max-height: calc(100vh - 90px - var(--geogeo-pv-ticker-height, 45px) - 8px);
            overflow: hidden;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
        }
        /* Scroll lives on inner only so .filter-top-row stays pinned; rtl keeps bar on left edge */
        .filter-controls-body-inner {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            overflow-x: hidden;
            -webkit-overflow-scrolling: touch;
            scrollbar-color: #1E3A8A transparent;
            direction: rtl;
            padding: 12px 20px 12px 20px;
            box-sizing: border-box;
        }
        .filter-controls-body-inner > * {
            direction: ltr;
        }
        .filter-controls-body-inner::-webkit-scrollbar {
            width: 8px;
        }
        .filter-controls-body-inner::-webkit-scrollbar-track {
            background: transparent;
        }
        .filter-controls-body-inner::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 8px;
        }
        .filter-controls-body-inner::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }
        /* Jump-to-top after last filter; ~1in white space above Haut. */
        .filter-scroll-haut-endcap {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 100%;
            padding: 1in 0 4px;
            margin: 0;
            box-sizing: border-box;
            direction: ltr;
        }
        .filter-scroll-haut-btn {
            display: inline-flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;
            gap: 8px;
            margin: 0;
            padding: 8px 16px;
            border: none;
            border-radius: 25px;
            background: #1E3A8A;
            color: #fff;
            cursor: pointer;
            font-family: var(--font-ui);
            font-size: 13px;
            font-weight: 600;
            letter-spacing: 0.2px;
            line-height: 1;
            direction: ltr;
            -webkit-tap-highlight-color: transparent;
            transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
        }
        .filter-scroll-haut-btn:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(-1px);
        }
        .filter-scroll-haut-btn:focus {
            outline: none;
        }
        .filter-scroll-haut-btn:focus-visible {
            outline: 2px solid #7BEC7B;
            outline-offset: 2px;
        }
        .filter-scroll-haut-icon {
            font-size: 14px;
            line-height: 1;
            font-weight: 700;
        }
        .filter-scroll-haut-label {
            font-size: inherit;
            font-weight: inherit;
            letter-spacing: inherit;
            line-height: 1;
            text-transform: none;
        }
        .filter-collapse-tab {
            position: absolute;
            bottom: 33%;
            right: -42px;
            width: 42px;
            height: 84px; /* twice as high */
            border: 3px solid #1E3A8A;
            border-left: none;
            border-radius: 0 12px 12px 0;
            background: #fff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 1;
            outline: none;
            transition: transform 0.2s ease;
        }
        .filter-collapse-tab:hover {
            transform: translateY(-6px);
        }
        .filter-collapse-tab:focus {
            outline: none;
        }
        /* White strip on tab covering junction; height inside blue border only */
        .filter-collapse-tab::after {
            content: '';
            position: absolute;
            left: -6px;
            top: 50%;
            transform: translateY(-50%);
            width: 6px;
            height: 78px; /* 84 - 2*3px border = inside contour */
            background: #fff;
            pointer-events: none;
        }
        .filter-collapse-tab .filter-tab-icon {
            width: 40px;
            height: 40px;
            display: block;
            object-fit: contain;
        }
        
        /* Favorites Sidebar: right side, same contour/dismissable pattern as filter box */
        .favorites-sidebar {
            position: absolute;
            top: 90px;
            right: 10px;
            z-index: 1003;
            transform: translateZ(0);
            will-change: transform;
            transition: transform 0.3s ease;
            outline: none !important;
        }
        .favorites-sidebar.favorites-collapsed {
            transform: translateX(calc(100% + 10px)) translateZ(0);
        }
        .favorites-sidebar.favorites-collapsed .favorites-sidebar-body {
            pointer-events: none;
        }
        .favorites-sidebar.favorites-collapsed .favorites-sidebar-tab {
            pointer-events: auto;
            z-index: 2;
        }

        /* Conseils (PV) sidebar — twin of Favoris; tab sits under Favoris tab */
        .pv-councils-sidebar {
            position: absolute;
            top: 90px;
            right: 10px;
            z-index: 1002;
            transform: translateZ(0);
            will-change: transform;
            transition: transform 0.3s ease;
            outline: none !important;
        }
        .pv-councils-sidebar.pv-councils-collapsed {
            transform: translateX(calc(100% + 10px)) translateZ(0);
        }
        .pv-councils-sidebar.pv-councils-collapsed .pv-councils-sidebar-body {
            pointer-events: none;
        }
        .pv-councils-sidebar.pv-councils-collapsed .pv-councils-sidebar-tab {
            pointer-events: auto;
            z-index: 2;
        }
        .pv-councils-sidebar-body {
            background: #fff;
            padding: 6px 20px 20px 20px;
            border: 3px solid #1E3A8A;
            border-radius: 15px;
            box-shadow: 0 4px 20px -2px rgba(0,0,0,0.15);
            width: 33vw;
            min-width: 280px;
            max-width: 480px;
            min-height: 320px;
            max-height: calc(100vh - 100px);
            overflow-y: auto;
            overflow-x: hidden;
        }
        .pv-councils-sidebar-header {
            margin-bottom: 10px;
        }
        .pv-councils-sidebar-title-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
        }
        .pv-councils-sidebar-title {
            display: flex;
            align-items: center;
            gap: 8px;
            margin: 0;
            font-size: 1.1rem;
            color: #1E3A8A;
        }
        .pv-councils-title-icon {
            width: 20px;
            height: 20px;
            object-fit: contain;
        }
        .pv-councils-search-wrap {
            margin-top: 4px;
        }
        .pv-councils-search {
            width: 100%;
            box-sizing: border-box;
            border: 2px solid #1E3A8A;
            border-radius: 10px;
            padding: 8px 12px;
            font-family: var(--font-ui);
            font-size: 0.95rem;
            color: #1E3A8A;
        }
        .pv-councils-search:focus {
            outline: none;
            box-shadow: 0 0 0 2px rgba(123, 236, 123, 0.55);
        }
        .pv-councils-sidebar-content {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .pv-councils-empty-msg {
            color: #64748b;
            font-size: 0.92rem;
            line-height: 1.4;
            margin: 8px 0;
        }
        .pv-councils-item {
            display: block;
            text-decoration: none;
            color: inherit;
            border: 1px solid rgba(30, 58, 138, 0.18);
            border-radius: 10px;
            padding: 10px 12px;
            transition: background 0.15s ease, border-color 0.15s ease;
        }
        .pv-councils-item:hover {
            background: rgba(123, 236, 123, 0.18);
            border-color: #1E3A8A;
        }
        .pv-councils-item-meta {
            display: flex;
            gap: 10px;
            font-size: 0.8rem;
            color: #1E3A8A;
            margin-bottom: 4px;
        }
        .pv-councils-item-phrase {
            font-size: 0.92rem;
            line-height: 1.35;
            color: #0f172a;
        }
        .pv-councils-item-link {
            display: inline-block;
            margin-top: 6px;
            font-size: 0.8rem;
            color: #1E3A8A;
            text-decoration: underline;
        }
        .pv-councils-sidebar-tab {
            position: absolute;
            top: 292px; /* under Favoris tab (200 + 84 + ~8) */
            left: -42px;
            width: 42px;
            height: 84px;
            border: 3px solid #1E3A8A;
            border-right: none;
            border-radius: 12px 0 0 12px;
            background: #fff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 1;
            outline: none;
            transition: transform 0.2s ease;
        }
        .pv-councils-sidebar-tab:hover {
            transform: translateY(-6px);
        }
        .pv-councils-sidebar-tab::after {
            content: '';
            position: absolute;
            right: -6px;
            top: 50%;
            transform: translateY(-50%);
            width: 6px;
            height: 78px;
            background: #fff;
            pointer-events: none;
        }
        .pv-councils-sidebar-tab .pv-councils-tab-icon {
            width: 28px;
            height: 28px;
            display: block;
            object-fit: contain;
            position: relative;
            z-index: 2;
        }

        /* Conseils tab always visible (all plans). Keep absolute — global .geogeo-pro-gate-self is relative. */
        .pv-councils-sidebar-tab.geogeo-pro-gate,
        .pv-councils-sidebar-tab.geogeo-pro-gate-self,
        #pv-councils-collapse-tab.geogeo-pro-gate-self {
            position: absolute;
            overflow: visible;
        }
        .pv-councils-sidebar-tab .geogeo-pro-gate-surface {
            display: inline-flex;
            align-items: center;
            justify-content: center;
        }
        /* Locked: slight icon fade only (no blur); medal hangs left like AI ribbon size */
        .pv-councils-sidebar-tab.geogeo-pro-gate--locked .geogeo-pro-gate-surface {
            filter: none;
            opacity: 0.55;
            pointer-events: none;
        }
        .pv-councils-sidebar-tab .pv-councils-pro-ribbon {
            position: absolute;
            top: -10px;
            left: -16px;
            right: auto;
            width: 36px;
            height: 36px;
            /* Nudge 45deg toward bottom-right so tab contour doesn't clip the medal */
            transform: translate(6px, 6px);
            z-index: 5;
            opacity: 1;
            pointer-events: none;
            display: none;
        }
        .pv-councils-sidebar-tab.geogeo-pro-gate--locked .pv-councils-pro-ribbon,
        .pv-councils-sidebar-tab.geogeo-pro-gate--locked > .geogeo-pro-ribbon {
            display: block;
        }
        /* Locked councils FAB: same wash as I.A.
           Surface is display:contents — opacity must hit the icon, not the span. */
        #geogeo-mobile-fab-councils.geogeo-pro-gate--locked {
            background: rgba(123, 236, 123, 0.42) !important;
            border-color: rgba(30, 58, 138, 0.42);
            box-shadow: none;
        }
        #geogeo-mobile-fab-councils.geogeo-pro-gate--locked .geogeo-pro-gate-surface {
            filter: none;
            pointer-events: none;
        }
        #geogeo-mobile-fab-councils.geogeo-pro-gate--locked .geogeo-mobile-fab-icon {
            opacity: 0.42;
        }
        #geogeo-mobile-fab-councils .pv-councils-fab-pro-ribbon {
            position: absolute;
            top: -10px;
            left: -12px;
            right: auto;
            width: 36px;
            height: 36px;
            transform: translate(6px, 6px);
            z-index: 5;
            opacity: 1;
            pointer-events: none;
            display: none;
        }
        #geogeo-mobile-fab-councils.geogeo-pro-gate--locked .pv-councils-fab-pro-ribbon,
        #geogeo-mobile-fab-councils.geogeo-pro-gate--locked > .geogeo-pro-ribbon {
            display: block;
        }
        /* Keep fixed like sibling FABs; pro-gate default position:relative was desyncing it */
        #geogeo-mobile-fab-councils.geogeo-pro-gate-self {
            position: fixed;
            overflow: visible;
        }

        /* Bottom PV ticker — banner chrome: logo, city, date, green tag, excerpt */
        .pv-ticker {
            --geogeo-pv-ticker-height: 45px;
            position: fixed;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 1005;
            height: var(--geogeo-pv-ticker-height);
            background: #fff;
            border-top: 2px solid #1E3A8A;
            border-bottom: 2px solid #1E3A8A;
            box-sizing: border-box;
        }
        .pv-ticker-viewport {
            overflow: hidden;
            height: 100%;
            display: flex;
            align-items: center;
        }
        .pv-ticker-track {
            display: flex;
            width: max-content;
            /* Longer duration = slower scroll (was 280s). */
            animation: pv-ticker-scroll 560s linear infinite;
        }
        .pv-ticker:hover .pv-ticker-track {
            animation-play-state: paused;
        }
        .pv-ticker-seq {
            display: flex;
            align-items: center;
            gap: 1.35rem;
            white-space: nowrap;
            padding-right: 3rem;
        }
        .pv-ticker-item {
            display: inline-flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 0.45rem;
            /* Natural chip width — JS clamps excerpt; avoid crushing copy. */
            max-width: none;
            width: max-content;
            max-height: 100%;
            overflow: visible;
            white-space: nowrap;
            color: #1E3A8A;
            font-size: 0.92rem;
            font-weight: var(--font-weight-medium);
            font-family: var(--font-ui);
            line-height: 1.2;
            text-decoration: none;
            padding: 0 0.1rem;
            background: none;
            border: 0;
            cursor: pointer;
            vertical-align: middle;
        }
        a.pv-ticker-item:hover .pv-ticker-city,
        a.pv-ticker-item:hover .pv-ticker-date,
        button.pv-ticker-item--gate:hover .pv-ticker-city,
        button.pv-ticker-item--gate:hover .pv-ticker-date {
            text-decoration: underline;
        }
        button.pv-ticker-item--gate {
            font: inherit;
            color: inherit;
        }
        .pv-ticker-logo {
            width: 32px;
            height: 32px;
            object-fit: contain;
            flex-shrink: 0;
            border-radius: 50%;
            background: #fff;
            border: 1px solid rgba(30, 58, 138, 0.35);
            box-sizing: border-box;
            padding: 2px;
        }
        .pv-ticker-city {
            font-weight: var(--font-weight-bold);
            color: #1E3A8A;
            flex-shrink: 0;
        }
        .pv-ticker-date {
            color: #1E3A8A;
            opacity: 0.82;
            flex-shrink: 0;
            font-weight: var(--font-weight-medium);
        }
        /* Match homebrew .banner-signal-tag */
        .pv-ticker-signal-tag {
            display: inline-flex;
            align-items: center;
            padding: 0.12em 0.4em;
            border-radius: 6px;
            background: rgb(66, 168, 66);
            color: #fff;
            -webkit-text-fill-color: #fff;
            font: inherit;
            font-weight: var(--font-weight-bold);
            line-height: 1.25;
            flex-shrink: 0;
            white-space: nowrap;
        }
        /* Banner-like excerpt — length clamped in JS; do not flex-crush to zero. */
        .pv-ticker-excerpt {
            flex: 0 0 auto;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
            font-weight: var(--font-weight-bold);
        }
        @supports not (-webkit-background-clip: text) {
            .pv-ticker-excerpt {
                color: #1E3A8A;
                -webkit-text-fill-color: #1E3A8A;
            }
        }
        .pv-ticker-item--fallback {
            color: #475569;
            font-weight: var(--font-weight-regular);
            max-width: none;
        }
        .pv-ticker-sep {
            display: none; /* v2: no · / | separators */
        }
        @keyframes pv-ticker-scroll {
            from { transform: translateX(0); }
            to { transform: translateX(-50%); }
        }
        @media (prefers-reduced-motion: reduce) {
            .pv-ticker-track {
                animation: none;
                transform: none;
                max-width: 100%;
                flex-wrap: nowrap;
                overflow: hidden;
            }
            .pv-ticker-seq:last-child {
                display: none;
            }
        }
        .favorites-sidebar-body {
            background: #fff;
            /* Horizontal padding only on header / inner so scrollbar sits cleanly */
            padding: 0;
            border: 3px solid #1E3A8A;
            border-radius: 15px;
            box-shadow: 0 4px 20px -2px rgba(0,0,0,0.15);
            width: 33vw;
            min-width: 280px;
            max-width: 480px;
            min-height: 400px;
            max-height: calc(100vh - 100px);
            overflow: hidden;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
        }
        /* Scroll lives on inner only so .favorites-sidebar-header stays pinned */
        .favorites-sidebar-body-inner {
            flex: 1 1 auto;
            min-height: 0;
            overflow-y: auto;
            overflow-x: hidden;
            -webkit-overflow-scrolling: touch;
            scrollbar-color: #1E3A8A transparent;
            padding: 0 20px 20px 20px;
            box-sizing: border-box;
        }
        .favorites-sidebar-body-inner::-webkit-scrollbar {
            width: 8px;
        }
        .favorites-sidebar-body-inner::-webkit-scrollbar-track {
            background: transparent;
        }
        .favorites-sidebar-body-inner::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 8px;
        }
        .favorites-sidebar-body-inner::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }
        /* Favoris header: pinned outside scroll (matches filter .filter-top-row) */
        .favorites-sidebar-header {
            display: flex;
            flex-direction: column;
            gap: 0;
            margin: 0;
            /* Keep same total header height (25+4=29px padding), but center contents visually */
            padding: 14px 20px 15px 20px;
            border-bottom: 1px solid rgba(30, 58, 138, 0.2);
            flex-shrink: 0;
            box-sizing: border-box;
        }
        .favorites-sidebar-title-row {
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 6px;
            margin: 0;
            padding: 0;
        }
        .favorites-sidebar-title-wrap {
            display: flex;
            align-items: center;
            gap: 4px;
            flex: 1 1 auto;
            min-width: 0;
            overflow: hidden;
            margin: 0;
            padding: 0;
        }
        /* Share cluster; close X is a sibling (not inside display:contents) */
        .favorites-export-controls {
            display: flex;
            align-items: center;
            gap: 4px;
            flex-shrink: 0;
            margin: 0;
            padding: 0;
        }
        .favorites-sidebar .favorites-close-btn {
            position: relative;
            z-index: 6;
            flex-shrink: 0;
            margin-left: 4px;
            pointer-events: auto;
        }
        .favorites-sidebar-title {
            margin: 0;
            padding: 0;
            font-size: 24px;
            font-weight: 600;
            line-height: 1.25;
            font-family: var(--font-ui);
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .favorites-sidebar-title-text {
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }
        @supports not (-webkit-background-clip: text) {
            .favorites-sidebar-title-text { color: #1E3A8A; -webkit-text-fill-color: #1E3A8A; }
        }
        .favorites-sidebar-title .favorites-title-icon {
            width: 23px;
            height: 23px;
            flex-shrink: 0;
            object-fit: contain;
        }
        /* Share-all-favoris: 3 icon buttons + blue tooltip (same blue as app tooltips) */
        .favorites-header-share-wrap {
            position: relative;
            display: flex;
            align-items: center;
            gap: 4px;
            flex-shrink: 0;
        }
        .favorites-header-share-tooltip {
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 8px;
            padding: 6px 10px;
            background: #1E3A8A;
            color: white;
            font-size: 12px;
            font-weight: 600;
            border-radius: 4px;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.2s ease;
            z-index: 2147483000;
            font-family: var(--font-ui);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
        }
        .favorites-header-share-tooltip::after {
            content: '';
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
        }
        .favorites-header-share-wrap:hover .favorites-header-share-tooltip {
            opacity: 1;
        }
        .favorites-header-share-btn {
            width: 32px;
            height: 32px;
            padding: 0;
            border: none;
            border-radius: 6px;
            background: transparent;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            flex-shrink: 0;
        }
        .favorites-header-share-btn:hover {
            background: rgba(30, 58, 138, 0.1);
        }
        .favorites-header-share-btn img {
            width: 22px;
            height: 22px;
            object-fit: contain;
        }
        /* Export button: CSV only */
        .favorites-export-btn {
            padding: 6px 10px;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            cursor: pointer;
            border-radius: 12px;
            transition: all 0.2s ease;
            flex-shrink: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            min-width: 72px;
        }
        .favorites-export-btn-pdf {
            background: #1E3A8A;
            color: white;
            border: 2px solid #1E3A8A;
        }
        .favorites-export-btn-pdf:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            border-color: #7BEC7B;
        }
        .favorites-export-btn-pdf:hover .favorites-export-icon-normal,
        .favorites-export-btn-pdf:hover .favorites-export-icon-hover {
            filter: brightness(0) saturate(100%) invert(18%) sepia(52%) saturate(2500%) hue-rotate(210deg) brightness(0.92) contrast(1.1); /* Dark blue #1E3A8A */
        }
        .favorites-export-btn-csv {
            background: #7BEC7B;
            color: #1E3A8A;
            border: 2px solid transparent; /* same box size as PDF button which has 2px border */
        }
        .favorites-export-btn-csv:hover {
            background: #1E3A8A;
            color: white;
            border-color: transparent;
        }
        .favorites-export-btn .favorites-export-icon-wrap {
            position: relative;
            width: 16px;
            height: 14px;
            flex-shrink: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
        }
        .favorites-export-btn .favorites-export-icon-normal,
        .favorites-export-btn .favorites-export-icon-hover {
            position: absolute;
            width: 16px;
            height: 14px;
            object-fit: contain;
            transition: opacity 0.2s ease;
        }
        .favorites-export-btn .favorites-export-icon-normal { opacity: 1; }
        .favorites-export-btn .favorites-export-icon-hover { opacity: 0; }
        .favorites-export-btn:hover .favorites-export-icon-normal { opacity: 0; }
        .favorites-export-btn:hover .favorites-export-icon-hover { opacity: 1; }
        .favorites-sidebar-content {
            flex: 0 0 auto;
            min-height: 0;
            overflow: visible;
        }
        .favorites-empty-msg {
            padding: 12px;
            color: #64748b;
            font-size: 13px;
            margin: 0;
        }
        .favorites-item {
            position: relative;
            padding: 10px 12px 10px 58px; /* space for favoris strip */
            margin-bottom: 8px;
            border: 1px solid rgba(0, 0, 0, 0.12);
            border-radius: 6px;
            font-size: 13px;
            overflow: visible;
            min-width: 0;
        }
        .favorites-item-header-row {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 8px;
            min-width: 0;
        }
        .favorites-item:last-child { margin-bottom: 0; }
        .favorites-item:hover { z-index: 2000; }
        .favorites-item-icon {
            width: 14px;
            height: 14px;
            margin-right: 6px;
            flex-shrink: 0;
            object-fit: contain;
        }
        .favorites-item-header-main { min-width: 0; flex: 1; }
        .favorites-item-title {
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 4px;
            display: flex;
            align-items: flex-start;
            gap: 6px;
            min-width: 0;
        }
        .favorites-item-title .favorites-item-icon { margin-top: 2px; }
        .favorites-item-title .favorites-item-title-text {
            min-width: 0;
            flex: 1;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            text-overflow: ellipsis;
            word-break: break-word;
        }
        .favorites-item-org {
            color: #64748b;
            font-size: 12px;
            margin-bottom: 6px;
            display: flex;
            align-items: center;
            gap: 6px;
            min-width: 0;
        }
        .favorites-item-org .favorites-item-org-text { min-width: 0; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .favorites-item-actions {
            margin-top: 6px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            flex-wrap: nowrap;
            min-width: 0;
        }
        .favorites-item-actions .favorites-item-link { margin-right: 0; flex-shrink: 0; }
        .favorites-item-share-wrap {
            position: relative;
            display: flex;
            align-items: center;
            gap: 2px;
            flex-shrink: 0;
        }
        .favorites-item-share-tooltip {
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 6px;
            padding: 5px 8px;
            background: #1E3A8A;
            color: white;
            font-size: 11px;
            font-weight: 600;
            border-radius: 4px;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.2s ease;
            z-index: 2147483000;
            font-family: var(--font-ui);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
        }
        .favorites-item-share-tooltip::after {
            content: '';
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 4px solid transparent;
            border-top-color: #1E3A8A;
        }
        .favorites-item-share-wrap:hover .favorites-item-share-tooltip {
            opacity: 1;
        }
        .favorites-item-countdown-wrap {
            flex-shrink: 0;
            min-width: 0;
        }
        .favorites-item-link {
            color: #147CEC;
            text-decoration: none;
            font-size: 12px;
            font-weight: 500;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            min-width: 0;
        }
        .favorites-item-link:hover {
            color: #1E3A8A;
            text-decoration: underline;
        }
        /* Favoris strip inside favorites list: left vertical bar with remove star */
        .favorites-item-strip {
            position: absolute;
            left: 8px;
            top: 8px;
            bottom: 8px;
            width: 44px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .favorites-item-strip-btn {
            width: 44px;
            height: 100%;
            padding: 0;
            border: 2px solid #1E3A8A;
            border-radius: 4px;
            background: #ffffff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s ease, border-color 0.2s ease;
        }
        .favorites-item-strip-btn img {
            width: 26px;
            height: 26px;
            object-fit: contain;
            /* Idle: dark blue star */
            filter: brightness(0) saturate(100%) invert(13%) sepia(51%) saturate(2872%) hue-rotate(208deg) brightness(90%) contrast(102%);
        }
        /* Hover on the whole favorites row: bright green star, mirroring list view */
        .favorites-item:hover .favorites-item-strip-btn img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        /* Hover directly on strip: dark blue background + white star */
        .favorites-item-strip-btn:hover {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        .favorites-item-strip-btn:hover img {
            filter: brightness(0) invert(1);
        }
        .favorites-item-date {
            font-size: 12px;
            color: #64748b;
            margin-bottom: 4px;
        }
        .favorites-item-date-wrap {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-shrink: 0;
        }
        .favorites-item-date-wrap.favorites-item-countdown-wrap .favorites-item-date { margin-bottom: 0; }
        .favorites-item-share-btn {
            padding: 4px;
            border: none;
            border-radius: 4px;
            background: transparent;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
        }
        .favorites-item-share-btn:hover {
            background: rgba(30, 58, 138, 0.1);
        }
        /* Match list view header: all share icons same size so LinkedIn/Mail match fatter FB icon */
        .favorites-item-share-btn img {
            width: 24px;
            height: 24px;
            object-fit: contain;
        }
        .favorites-item-just-added {
            /* No green accent; class kept for possible future use */
        }
        .favorites-recents-section {
            margin-top: 10px;
            padding-top: 10px;
            border-top: 2px solid rgba(30, 58, 138, 0.15);
        }
        /* Recents items: same layout as favorites (strip + title/org | countdown, then Détails | share) */
        .favorites-recents-item {
            position: relative;
            padding: 10px 12px 10px 58px;
            margin-bottom: 8px;
            border: 1px solid rgba(0, 0, 0, 0.12);
            border-radius: 6px;
            font-size: 13px;
            cursor: default;
            overflow: visible;
            min-width: 0;
        }
        .favorites-recents-item:last-child { margin-bottom: 0; }
        .favorites-recents-item:hover { z-index: 2000; }
        .favorites-recents-item .favorites-item-strip {
            position: absolute;
            left: 8px;
            top: 8px;
            bottom: 8px;
            width: 44px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn {
            width: 44px;
            height: 100%;
            min-height: 44px;
            padding: 0;
            border: 2px solid #1E3A8A;
            border-radius: 4px;
            background: #ffffff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s ease, border-color 0.2s ease;
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn img {
            width: 26px;
            height: 26px;
            object-fit: contain;
            filter: brightness(0) saturate(100%) invert(13%) sepia(51%) saturate(2872%) hue-rotate(208deg) brightness(90%) contrast(102%);
        }
        /* Hover on the whole recents row: bright green star, mirroring list view */
        .favorites-recents-item:hover .favorites-item-strip .tender-favorite-btn img {
            filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn.starred img {
            filter: brightness(0) saturate(100%) invert(13%) sepia(51%) saturate(2872%) hue-rotate(208deg) brightness(90%) contrast(102%);
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover img {
            filter: brightness(0) invert(1);
        }
        .favorites-recents-item .favorites-item-strip .tender-favorite-btn.starred:hover img {
            filter: brightness(0) invert(1);
        }
        .favorites-recents-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 6px;
            position: relative;
            padding-top: 8px;
            padding-bottom: 8px;
        }
        /* Bright green border accent above and below Recents (same as pagination) */
        .favorites-recents-header::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: #7BEC7B;
        }
        .favorites-recents-header::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: #7BEC7B;
        }
        .favorites-recents-title-wrap {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .favorites-recents-title-wrap .favorites-title-icon {
            width: 22px;
            height: 22px;
            flex-shrink: 0;
            object-fit: contain;
        }
        .favorites-recents-title {
            font-size: 24px;
            font-weight: 600;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }
        @supports not (-webkit-background-clip: text) {
            .favorites-recents-title { color: #1E3A8A; -webkit-text-fill-color: #1E3A8A; }
        }
        .favorites-recents-list {
            max-height: none;
            overflow: visible;
        }
        /* Recents: only Détails link gets underline on hover, not the title */
        .favorites-sidebar-tab {
            position: absolute;
            /* Anchor relative to the top of the favorites box so it does not drift when content height changes */
            top: 200px;
            left: -42px;
            width: 42px;
            height: 84px; /* twice as high */
            border: 3px solid #1E3A8A;
            border-right: none;
            border-radius: 12px 0 0 12px;
            background: #fff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 1;
            outline: none;
            transition: transform 0.2s ease;
        }
        .favorites-sidebar-tab:hover {
            transform: translateY(-6px);
        }
        .favorites-sidebar-tab:focus {
            outline: none;
        }
        /* White strip on tab covering junction; height inside blue border only */
        .favorites-sidebar-tab::after {
            content: '';
            position: absolute;
            right: -6px;
            top: 50%;
            transform: translateY(-50%);
            width: 6px;
            height: 78px; /* 84 - 2*3px border = inside contour */
            background: #fff;
            pointer-events: none;
        }
        .favorites-sidebar-tab .favorites-tab-icon {
            width: 28px;
            height: 28px;
            display: block;
            object-fit: contain;
            transform-origin: center center;
            opacity: 0.9;
            position: relative;
            z-index: 2;
        }
        /* FX layer: glow + micro-particles, only while spinning */
        /* Only apply the glow FX geometry to ::before.
           The favorites tab uses ::after as the white seam; overriding ::after causes the seam to disappear briefly. */
        .favorites-sidebar-tab.favorites-tab-fx::before {
            content: '';
            position: absolute;
            left: 50%;
            top: 50%;
            width: 26px;
            height: 26px;
            transform: translate(-50%, -50%);
            pointer-events: none;
            z-index: 1; /* below the white seam strip */
        }
        .favorites-sidebar-tab.favorites-tab-fx::before {
            border-radius: 50%;
            /* Make the spin glow more obvious */
            background: radial-gradient(circle, rgba(123, 236, 123, 0.55) 0%, rgba(123, 236, 123, 0.28) 40%, rgba(123, 236, 123, 0.00) 75%);
            filter: blur(1px);
            /* Run both animations: radial glow + micro-particles (sparks). */
            animation: favorites-tab-glow 0.24s ease-out 1, favorites-tab-sparks 0.24s ease-out 1;
        }
        @keyframes favorites-tab-glow {
            0% { opacity: 0; transform: translate(-50%, -50%) scale(0.6); }
            35% { opacity: 1; transform: translate(-50%, -50%) scale(1.15); }
            100% { opacity: 0; transform: translate(-50%, -50%) scale(1.45); }
        }
        @keyframes favorites-tab-sparks {
            0% {
                opacity: 0;
                transform: translate(-50%, -50%) scale(0.6);
                box-shadow:
                    0 -10px 0 0 rgba(123, 236, 123, 0.0),
                    7px -7px 0 0 rgba(123, 236, 123, 0.0),
                    10px 0 0 0 rgba(123, 236, 123, 0.0),
                    7px 7px 0 0 rgba(123, 236, 123, 0.0),
                    0 10px 0 0 rgba(123, 236, 123, 0.0),
                    -7px 7px 0 0 rgba(123, 236, 123, 0.0),
                    -10px 0 0 0 rgba(123, 236, 123, 0.0),
                    -7px -7px 0 0 rgba(123, 236, 123, 0.0);
            }
            35% {
                opacity: 0.55;
                transform: translate(-50%, -50%) scale(1.15);
                box-shadow:
                    0 -16px 0 0 rgba(123, 236, 123, 0.55),
                    11px -11px 0 0 rgba(123, 236, 123, 0.35),
                    16px 0 0 0 rgba(123, 236, 123, 0.55),
                    11px 11px 0 0 rgba(123, 236, 123, 0.35),
                    0 16px 0 0 rgba(123, 236, 123, 0.55),
                    -11px 11px 0 0 rgba(123, 236, 123, 0.35),
                    -16px 0 0 0 rgba(123, 236, 123, 0.55),
                    -11px -11px 0 0 rgba(123, 236, 123, 0.35);
            }
            100% {
                opacity: 0;
                transform: translate(-50%, -50%) scale(1.5);
                box-shadow:
                    0 -18px 0 0 rgba(123, 236, 123, 0.0),
                    13px -13px 0 0 rgba(123, 236, 123, 0.0),
                    18px 0 0 0 rgba(123, 236, 123, 0.0),
                    13px 13px 0 0 rgba(123, 236, 123, 0.0),
                    0 18px 0 0 rgba(123, 236, 123, 0.0),
                    -13px 13px 0 0 rgba(123, 236, 123, 0.0),
                    -18px 0 0 0 rgba(123, 236, 123, 0.0),
                    -13px -13px 0 0 rgba(123, 236, 123, 0.0);
            }
        }
        .favorites-tab-icon-spin {
            animation: favorites-tab-spin 0.15s linear infinite;
            will-change: transform; /* Own layer so load doesn't choke it */
        }
        .favorites-tab-icon-spin-reverse {
            animation: favorites-tab-spin-reverse 0.15s linear infinite;
            will-change: transform;
        }
        @keyframes favorites-tab-spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }
        @keyframes favorites-tab-spin-reverse {
            from { transform: rotate(0deg); }
            to { transform: rotate(-360deg); }
        }
        
        /* Remove any pseudo-elements that might create doubled corners */
        .filter-controls::before,
        .filter-controls::after {
            display: none !important;
            content: none !important;
        }
        
        /* Static header: Recherches, pin count, filtres actifs (outside scroll) */
        .filter-top-row {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: flex-start;
            margin: 0;
            padding: 20px 20px 10px 20px;
            border-bottom: 1px solid rgba(30, 58, 138, 0.2);
            gap: 8px;
            flex-shrink: 0;
            direction: ltr;
            box-sizing: border-box;
        }
        .filter-top-row-lead {
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 0;
        }
        .filter-top-row-lead .saved-searches-row {
            flex: 1 1 auto;
            min-width: 0;
        }
        /* Mobile-only exit; hidden on desktop */
        .filters-close-btn {
            display: none;
        }
        .filter-pin-count {
            margin: 0;
            padding: 0;
            border: none;
            font-family: var(--font-ui);
            font-size: 24px;
            font-weight: 600;
            white-space: nowrap;
        }
        /* "N avis" in filter header / "X appels d'offres" elsewhere — number green, suffix blue */
        .filter-pin-count-number {
            background: linear-gradient(to top, #0D3B0D 0%, #166534 35%, #22C55E 65%, #4ADE80 85%, #86EFAC 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #166534;
        }
        @supports not (-webkit-background-clip: text) {
            .filter-pin-count-number { color: #166534; -webkit-text-fill-color: #166534; }
        }
        .filter-pin-count-suffix {
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }
        @supports not (-webkit-background-clip: text) {
            .filter-pin-count-suffix { color: #1E3A8A; -webkit-text-fill-color: #1E3A8A; }
        }
        .saved-searches-row {
            display: flex;
            align-items: center;
            gap: 6px;
        }
        /* "Recherches" - same style as Afficher/Masquer label (blue gradient) */
        .saved-searches-label {
            font-size: 24px;
            font-weight: 600;
            white-space: nowrap;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }
        @supports not (-webkit-background-clip: text) {
            .saved-searches-label { color: #1E3A8A; -webkit-text-fill-color: #1E3A8A; }
        }
        .saved-search-btn {
            width: 28px;
            height: 28px;
            border-radius: 50%;
            border: 2px solid #e5e7eb;
            background: #f8f9fa;
            color: #374151;
            font-size: 13px;
            font-weight: 700;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 0;
            transition: all 0.3s ease;
        }
        .saved-search-btn:hover {
            background: #f0fdf4;
            border-color: #7BEC7B;
            color: #166534;
        }
        .saved-search-btn.active {
            background: #1E3A8A;
            color: #fff;
            border-color: #1E3A8A;
        }
        .saved-search-btn.active:hover {
            background: #7BEC7B;
            border-color: #7BEC7B;
            color: #1E3A8A;
        }
        
        .filter-group {
            margin-bottom: 20px;
        }
        
        /* Extra spacing before distance filter group */
        .distance-filter-group {
            margin-top: 30px; /* Extra space above distance slider */
        }

        .filter-input {
            width: 100%;
            padding: 10px 14px;
            border: 2px solid #1E3A8A;
            border-radius: 8px;
            font-size: 13px;
            background-color: white;
            color: #1E3A8A;
            font-family: var(--font-ui);
            transition: all 0.3s ease;
        }
        
        .filter-input:focus {
            outline: none;
            border-color: #147CEC;
            background-color: white;
        }
        
        .filter-input::placeholder {
            color: #9CA3AF;
        }
        
        /* Style PlaceAutocompleteElement web component - Dark blue / Bright green color scheme */
        gmp-place-autocomplete {
            display: inline-block;
            width: 100%;
            max-width: 200px; /* Match main input max-width */
            --gmpx-color-surface: white;
            --gmpx-color-on-surface: #1E3A8A; /* Dark blue text */
            --gmpx-color-on-surface-variant: #9CA3AF;
            --gmpx-color-primary: #22C55E; /* Bright green for focus/active */
            --gmpx-font-family-base: var(--font-ui);
            --gmpx-font-size-base: 13px;
            /* Force styling on the component itself */
            border-radius: 25px !important;
            overflow: hidden !important;
        }
        
        /* Direct styling for gmp-place-autocomplete web component (no wrapper) */
        gmp-place-autocomplete {
            display: inline-block;
            --gmpx-color-surface: white;
            --gmpx-color-on-surface: #1E3A8A; /* Dark blue text */
            --gmpx-color-on-surface-variant: #9CA3AF;
            --gmpx-color-primary: #22C55E; /* Bright green for focus/active */
            --gmpx-font-family-base: var(--font-ui);
            --gmpx-font-size-base: 13px;
        }
        
        /* Style the clear button (X) - remove black background */
        gmp-place-autocomplete::part(clear-button) {
            background: transparent !important;
            background-color: transparent !important;
            color: #1E3A8A !important;
            border: none !important;
        }
        
        gmp-place-autocomplete::part(clear-button):hover {
            background: rgba(30, 58, 138, 0.1) !important;
            color: #1E3A8A !important;
        }
        
        /* Remove hover effects from old input styles */
        .notification-input:hover,
        .filter-input:hover {
            border-color: #1E3A8A !important;
            background: white !important;
            transform: none !important;
        }
        
        /* Main filter location input styling */
        .main-location-autocomplete {
            max-width: 200px;
        }
        
        /* Alert panel location input styling */
        .alert-location-autocomplete {
            max-width: 180px;
            --gmpx-font-size-base: 12px;
        }
        
        /* Google Places Autocomplete dropdown - ensure it appears above everything */
        .pac-container {
            z-index: 10001 !important; /* Higher than filter controls and modals */
            border-radius: 8px !important;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
            margin-top: 4px !important;
        }
        
        /* Hide Google Maps error messages in autocomplete dropdown (false positives for file:/// URLs) */
        .pac-container .pac-item {
            position: relative;
        }
        
        /* Hide error messages - check for common error text patterns */
        .pac-container .pac-item:has-text("Impossible de charger"),
        .pac-container .pac-item:has-text("Unable to load"),
        .pac-container .pac-item:has-text("Ce site Web vous appartient"),
        .pac-container .pac-item:has-text("Does this website belong to you") {
            display: none !important;
        }
        
        /* Also hide items with error styling */
        .pac-container .pac-item[style*="color: rgb(204, 0, 0)"],
        .pac-container .pac-item[style*="color: #cc0000"],
        .pac-container .pac-item[style*="color: rgb(217, 48, 37)"] {
            display: none !important;
        }
        
        .pac-item {
            padding: 10px 14px !important;
            font-size: 13px !important;
            font-family: var(--font-ui) !important;
            cursor: pointer !important;
            border-top: 1px solid #e5e7eb !important;
        }
        
        .pac-item:first-child {
            border-top: none !important;
        }
        
        .pac-item:hover {
            background-color: #f0f8ff !important;
        }
        
        .pac-item-selected {
            background-color: #e0f2fe !important;
        }
        
        .pac-icon {
            margin-right: 10px !important;
        }
        
        /* Use deep selector to style internal input (if shadow DOM allows) */
        gmp-place-autocomplete input,
        gmp-place-autocomplete::shadow input,
        gmp-place-autocomplete >>> input {
            border-radius: 25px !important;
            border: 2px solid #1E3A8A !important; /* Dark blue border */
            padding: 4px 8px !important;
            font-size: 13px !important;
            font-family: var(--font-ui) !important;
            color: #1E3A8A !important; /* Dark blue text */
            background-color: white !important;
        }
        
        gmp-place-autocomplete input:focus,
        gmp-place-autocomplete::shadow input:focus,
        gmp-place-autocomplete >>> input:focus {
            border-color: #22C55E !important; /* Bright green on focus */
            box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2) !important; /* Bright green glow */
            outline: none !important;
        }
        
        .alert-location-autocomplete input,
        .alert-location-autocomplete::shadow input,
        .alert-location-autocomplete >>> input {
            font-size: 12px !important;
            max-width: 180px !important;
        }
        
        .filter-button {
            padding: 10px 16px;
            background: #1E3A8A;
            color: white;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            font-size: 13px;
            font-family: var(--font-ui);
            transition: all 0.3s ease;
            white-space: nowrap;
        }
        
        .filter-button:hover {
            background: #147CEC;
        }
        
        .filter-button:active {
            background: #0F5AA3;
        }
        
        .filter-select {
            width: 100%;
            padding: 10px 14px;
            padding-right: 35px; /* Space for dropdown arrow */
            border: 2px solid #1E3A8A;
            border-radius: 8px;
            font-size: 13px;
            background-color: white;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%231E3A8A' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
            color: #1E3A8A;
            font-family: var(--font-ui);
            cursor: pointer;
            transition: all 0.3s ease;
            appearance: none;
            -webkit-appearance: none;
            -moz-appearance: none;
        }

        .filter-select:hover {
            border-color: #147CEC;
            background-color: #f0f8ff;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23147CEC' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
        }

        .filter-select:focus {
            outline: none;
            border-color: #147CEC;
            background-color: white;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23147CEC' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
        }

        .filter-select option {
            background: white;
            color: #1E3A8A;
            padding: 8px;
        }

        /* Organisation: in-app checkbox menu (Clos style). Hidden native select stays for restore/sync. */
        .org-category-filter-hidden,
        select#org-category-filter[hidden] {
            display: none !important;
        }
        .org-category-picker {
            width: 100%;
        }
        .org-category-trigger {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            width: 100%;
            padding: 10px 14px;
            border: 2px solid #1E3A8A;
            border-radius: 8px;
            font-size: 13px;
            font-weight: 500;
            line-height: 1.2;
            background-color: #fff;
            color: #1E3A8A;
            font-family: var(--font-ui);
            text-align: left;
            cursor: pointer;
            box-sizing: border-box;
            -webkit-tap-highlight-color: transparent;
        }
        .org-category-trigger:hover {
            border-color: #147CEC;
            background-color: #f0f8ff;
        }
        .org-category-trigger:focus-visible {
            outline: none;
            border-color: #147CEC;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
        }
        #org-category-trigger-label {
            min-width: 0;
            flex: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .org-category-trigger-chevron {
            width: 0;
            height: 0;
            flex-shrink: 0;
            border-left: 5px solid transparent;
            border-right: 5px solid transparent;
            border-top: 6px solid #1E3A8A;
            transition: transform 0.15s ease;
        }
        .org-category-trigger[aria-expanded="true"] .org-category-trigger-chevron {
            transform: rotate(180deg);
        }
        .org-category-submenu {
            display: grid;
            justify-content: start;
            justify-items: start;
            gap: 2px;
            width: 100%;
            margin-top: 6px;
            padding: 2px 0 0;
            max-height: 240px;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
        }
        .org-category-submenu[hidden] {
            display: none !important;
        }
        .org-category-submenu .filter-tous-btn {
            margin: 0;
            padding: 3px 4px;
            font-size: 12px;
            gap: 5px;
            justify-content: flex-start;
            width: 100%;
        }
        .org-category-submenu .filter-tous-box {
            width: 13px;
            height: 13px;
        }
        .org-category-submenu .filter-tous-btn.active .filter-tous-box::after {
            font-size: 10px;
        }
        .org-category-submenu .filter-tous-text {
            white-space: normal;
        }
        
        .filter-group h4 {
            margin: 0 0 12px 0;
            font-size: 16px;
            font-weight: 600;
            color: #1E3A8A;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .filter-group h4:has(.filter-tous-btn) {
            justify-content: space-between;
        }
        .filter-group-heading {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            min-width: 0;
        }
        /* Compact Tous control beside filter titles (replaces big Tous buttons) */
        .filter-tous-btn {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            margin: 0;
            padding: 2px 4px;
            border: none;
            background: transparent;
            color: #1E3A8A;
            font-family: var(--font-ui);
            font-size: 13px;
            font-weight: 600;
            line-height: 1;
            cursor: pointer;
            flex-shrink: 0;
            border-radius: 4px;
        }
        .filter-tous-btn:hover {
            background: rgba(30, 58, 138, 0.06);
        }
        .filter-tous-btn:focus-visible {
            outline: 2px solid #147CEC;
            outline-offset: 2px;
        }
        .filter-tous-box {
            width: 16px;
            height: 16px;
            box-sizing: border-box;
            border: 2px solid #1E3A8A;
            border-radius: 3px;
            background: #fff;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }
        .filter-tous-btn.active .filter-tous-box {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        .filter-tous-btn.active .filter-tous-box::after {
            content: '\2713';
            color: #fff;
            font-size: 11px;
            font-weight: 700;
            line-height: 1;
        }
        .filter-tous-text {
            white-space: nowrap;
        }

        /* Statut Clos: centered framed unit; chevron unlocks only when Clos is down. */
        .filter-buttons.filter-buttons--statut {
            display: grid;
            grid-template-columns: 1fr auto 1fr;
            align-items: start;
            gap: 8px;
            width: 100%;
        }
        .filter-buttons--statut > [data-status="active"] {
            justify-self: end;
        }
        .filter-buttons--statut > [data-status="cancelled"] {
            justify-self: start;
        }
        .statut-clos-wrap {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-self: center;
            min-width: 0;
            gap: 6px;
            margin-top: -8px;
            padding: 6px 8px 7px;
            border: 2px solid rgba(30, 58, 138, 0.28);
            border-radius: 18px;
            background: transparent;
            box-sizing: border-box;
            transition: border-color 0.2s ease;
        }
        .statut-clos-wrap.is-unlocked {
            border-color: #1E3A8A;
        }
        .statut-clos-wrap .filter-btn {
            margin-bottom: 0;
        }
        .statut-clos-arrow {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 36px;
            min-width: 36px;
            height: 16px;
            margin: 0;
            padding: 0;
            border: none;
            border-radius: 8px;
            background: #1E3A8A;
            color: #fff;
            cursor: default;
            opacity: 0.22;
            pointer-events: none;
            -webkit-tap-highlight-color: transparent;
        }
        .statut-clos-wrap.is-unlocked .statut-clos-arrow {
            opacity: 1;
            cursor: pointer;
            pointer-events: auto;
        }
        .statut-clos-arrow:hover,
        .statut-clos-arrow:focus-visible {
            background: #162e6e;
            outline: none;
        }
        .statut-clos-wrap:not(.is-unlocked) .statut-clos-arrow:hover,
        .statut-clos-wrap:not(.is-unlocked) .statut-clos-arrow:focus-visible {
            background: #1E3A8A;
        }
        .statut-clos-arrow-chevron {
            width: 0;
            height: 0;
            border-left: 6px solid transparent;
            border-right: 6px solid transparent;
            border-top: 7px solid #fff;
            transition: transform 0.15s ease;
        }
        .statut-clos-arrow[aria-expanded="true"] .statut-clos-arrow-chevron {
            transform: rotate(180deg);
        }
        .statut-clos-submenu {
            display: grid;
            justify-content: center;
            justify-items: start;
            gap: 2px;
            width: 100%;
            flex-basis: 100%;
            margin-top: 4px;
            padding: 2px 0 0;
        }
        .statut-clos-submenu[hidden] {
            display: none !important;
        }
        .statut-clos-submenu .filter-tous-btn {
            margin: 0;
            padding: 1px 4px;
            font-size: 12px;
            gap: 5px;
            justify-content: flex-start;
        }
        .statut-clos-submenu .filter-tous-box {
            width: 13px;
            height: 13px;
        }
        .statut-clos-submenu .filter-tous-btn.active .filter-tous-box::after {
            font-size: 10px;
        }
        .statut-clos-submenu .filter-tous-btn.tag-seao-only[hidden] {
            display: none !important;
        }
        
        .filter-icon {
            width: 18px;
            height: 18px;
            opacity: 0.8;
        }
        
        .filter-buttons {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }
        .filter-buttons.filter-buttons--dollars {
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            gap: 8px;
            width: 100%;
        }
        .filter-buttons--dollars-row {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 8px;
            width: 100%;
        }
        .filter-buttons--dollars-row--thresholds {
            grid-template-columns: repeat(3, minmax(0, 1fr));
            width: 75%;
            margin: 0 auto;
        }
        .filter-buttons--dollars .filter-btn {
            font-weight: 800;
            color: #1E3A8A;
            width: 100%;
            box-sizing: border-box;
            text-align: center;
            padding-left: 6px;
            padding-right: 6px;
        }
        .filter-buttons--dollars .filter-btn .dollar-op {
            color: #7BEC7B;
            font-weight: 800;
        }
        .filter-buttons--dollars .filter-btn:hover {
            color: #1E3A8A;
        }
        .filter-buttons--dollars .filter-btn.active {
            color: #fff;
        }
        .filter-buttons--dollars .filter-btn.active .dollar-op,
        .filter-buttons--dollars .filter-btn:hover .dollar-op {
            color: #7BEC7B;
        }
        #methode-filter-group .filter-buttons {
            flex-wrap: nowrap;
            gap: 6px;
            width: 100%;
        }
        #methode-filter-group .filter-btn {
            flex: 1 0 auto;
            box-sizing: border-box;
            padding: 8px 6px;
            white-space: nowrap;
            text-align: center;
        }
        .filter-buttons-category .filter-btn,
        #notice-type-filter-group .filter-btn,
        #statut-filter-group .filter-btn,
        #methode-filter-group .filter-btn {
            font-weight: 500;
            color: #1E3A8A;
        }
        .filter-buttons-category .filter-btn:hover,
        #notice-type-filter-group .filter-btn:hover,
        #statut-filter-group .filter-btn:hover,
        #methode-filter-group .filter-btn:hover {
            color: #1E3A8A;
        }
        .filter-buttons-category .filter-btn.active,
        #notice-type-filter-group .filter-btn.active,
        #statut-filter-group .filter-btn.active,
        #methode-filter-group .filter-btn.active {
            color: #fff;
        }
        .filter-buttons-category,
        .filter-buttons-tag {
            flex-direction: column;
            flex-wrap: nowrap;
            align-items: flex-start;
        }
        .filter-buttons-row {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }
        
        .filter-group[data-filter="ministry"] .filter-buttons {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
        }
        
        /* Allow buttons to size naturally based on content within grid cells */
        .filter-group[data-filter="ministry"] .filter-buttons .filter-btn {
            width: fit-content;
            min-width: 0;
            white-space: nowrap;
            padding: 8px 14px;
            justify-self: start;
        }
        
        @media (max-width: 1200px) {
            .filter-group[data-filter="ministry"] .filter-buttons {
                grid-template-columns: repeat(4, 1fr);
            }
        }
        
        @media (max-width: 768px) {
            .filter-group[data-filter="ministry"] .filter-buttons {
                grid-template-columns: repeat(3, 1fr);
            }
        }
        
        
        @media (max-width: 768px) {
            /* Mobile header: 2 rows — intro+auth / mascot+3-line banner+controls */
            .header {
                height: auto;
                min-height: 0;
                padding: 6px 10px;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
            }

            .geogeo-header-mobile-only {
                display: block;
            }

            .geogeo-header-desktop-only {
                display: none !important;
            }

            .header-container {
                display: flex;
                flex-direction: column;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
                gap: 6px;
            }

            .header-mobile-brand-block {
                display: flex;
                flex-direction: column;
                gap: 0;
                width: 100%;
            }

            .header-mobile-row {
                display: flex;
                align-items: center;
                width: 100%;
                box-sizing: border-box;
            }

            .header-mobile-row-1 {
                position: relative;
                justify-content: flex-start;
                gap: 8px;
                align-items: flex-start;
                /* Reserve right chrome so intro_logo cannot run under Plan Pro / auth */
                padding-right: 118px;
            }

            .header-mobile-row-2 {
                display: none;
            }

            .header-mobile-row-3 {
                justify-content: flex-start;
                align-items: center;
                gap: 4px; /* was 8px — tighter logo ↔ banner */
                min-height: 0;
                margin-top: 0;
                min-width: 0;
            }

            .header-intro-logo {
                height: 30px; /* was 26px; +15% */
                width: auto;
                /* Shrink to free right-side buttons (base rule sets flex-shrink: 0) */
                max-width: 100%;
                flex: 1 1 auto;
                flex-shrink: 1;
                min-width: 0;
                display: block;
                align-self: flex-start;
                object-fit: contain;
                object-position: left center;
            }

            .header-mobile-logo {
                height: 48px;
                width: auto;
                max-width: 24%;
                /* Allow slight shrink on very narrow phones (base is flex-shrink: 0) */
                flex-shrink: 1;
                min-width: 36px;
                object-fit: contain;
                object-position: left center;
            }

            .header-left,
            .header-center,
            .header-right,
            .header-actions {
                grid-column: auto;
                grid-row: auto;
            }

            .header-center {
                display: none;
            }

            .header-actions {
                position: absolute;
                top: 0;
                right: 0;
                display: flex;
                justify-content: flex-end;
                align-items: flex-start;
                gap: 8px;
                flex-shrink: 0;
                z-index: 1002;
            }

            .header-left {
                flex: 1 1 auto;
                min-width: 0;
                justify-content: flex-start;
                align-items: center;
                overflow: hidden;
            }

            .header-right {
                flex: 0 0 auto;
                justify-content: flex-end;
                margin-left: 4px;
            }

            /* Header chrome only — do not restyle #introPasserBtn (shares header-register-btn) */
            /* Uniform mobile header control height (Plan Pro / Liste reference) */
            .header .header-register-btn,
            .header .header-logout-btn,
            .header .header-settings-btn,
            .header .header-toggle,
            .header .header-ai-btn {
                height: 36px;
                min-height: 36px;
                max-height: 36px;
                box-sizing: border-box;
                align-items: center;
            }

            .header .header-register-btn,
            .header .header-logout-btn {
                position: static;
                padding: 0 12px;
                font-size: 11px;
                transform: none;
                right: auto;
                top: auto;
                white-space: nowrap;
                flex-shrink: 0;
            }

            /* Se connecter / Déconnecter: icon only on mobile; Plan Pro keeps label */
            #register-btn .auth-text,
            #logout-btn .auth-text {
                display: none;
            }
            #register-btn,
            #logout-btn {
                width: 36px;
                min-width: 36px;
                padding: 0;
                gap: 0;
            }

            .header .header-register-btn:hover,
            .header .header-logout-btn:hover {
                transform: translateY(-1px);
            }

            #plan-pro-btn,
            .header-logout-btn {
                right: auto;
            }

            .header-settings-btn {
                position: static;
                width: 36px;
                min-width: 36px;
                padding: 0;
                transform: none;
                right: auto;
                top: auto;
            }

            .header-settings-btn:hover {
                transform: rotate(15deg);
            }

            .header-settings-btn img {
                width: 18px;
                height: 18px;
            }

            .header-banner-text {
                position: static;
                left: auto;
                top: auto;
                transform: none;
                display: block;
                width: auto;
                max-width: 100%;
                min-width: 0;
                box-sizing: border-box;
                font-size: clamp(9px, 2.8vw, 11px);
                line-height: 1.15;
                overflow: hidden;
            }

            .header-banner-text .banner-text {
                font-size: 1em;
                display: flex;
                flex-direction: column;
                align-items: flex-start;
                white-space: normal;
                text-align: left;
                line-height: 1.15;
                max-width: 100%;
                min-width: 0;
            }

            /* Exactly 3 rows beside the logo — ellipsize if row still too wide */
            .header-banner-text .banner-text-line {
                display: block;
                white-space: nowrap;
                max-width: 100%;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .header-banner-text .banner-text-line + .banner-text-line::before {
                content: none;
            }

            .header-banner-text .geogeo-header-mobile-only {
                display: block;
            }

            .header-toggle {
                position: static;
                right: auto;
                top: auto;
                transform: none;
                padding: 0 12px;
                font-size: 11px;
                white-space: nowrap;
                flex-shrink: 0;
            }

            /* I.A. mobile: Orbitron size; DOM order text→icon (desktop reverses at min-width 769) */
            .header-ai-btn {
                padding: 0 12px;
            }
            .header-ai-btn .toggle-text {
                font-size: 13px;
                letter-spacing: 0.08em;
                /* Optical: move letters toward icon without shifting the flex group/icon. */
                margin-left: 0;
                transform: translateX(6px);
            }
            /* Brain icon 15% smaller on mobile only */
            .header-ai-btn .toggle-icon-container {
                width: 30.6px; /* 36 * 0.85 */
                height: 30.6px;
                align-self: center;
            }
            /* SVG stem pulls optical mass down vs Orbitron “I.A.” — nudge icon up */
            .header-ai-btn .ai-icon-normal,
            .header-ai-btn .ai-icon-hover {
                width: 15.3px; /* 18 * 0.85 */
                height: 15.3px;
                top: 50%;
                left: 50%;
                transform: translate(-50%, calc(-50% - 2px)) scale(2);
            }

            .header-right-buttons {
                position: static;
                right: auto;
                top: auto;
                transform: none;
                margin-left: 0;
                gap: 10px;
            }

            #ai-tool-btn.geogeo-pro-gate--locked .geogeo-pro-ribbon {
                top: -15px;
                right: -15px;
            }

            .header-right-buttons .geogeo-pro-gate--locked.header-ai-btn:hover {
                transform: none;
                background: rgba(123, 236, 123, 0.42);
                color: rgba(30, 58, 138, 0.85);
                box-shadow: none;
            }

            /* Phase 2: FABs + full-page filter/favoris; side tabs hidden */
            :root {
                --geogeo-mobile-header-height: 132px;
                --geogeo-mobile-fab-size: 56px;
                --geogeo-mobile-fab-inset: max(16px, env(safe-area-inset-bottom, 0px));
                --geogeo-pv-ticker-height: 44px;
                --geogeo-mobile-fab-bottom-inset: calc(
                    var(--geogeo-pv-ticker-height) + var(--geogeo-mobile-fab-size) + var(--geogeo-mobile-fab-inset) + 12px
                );
                --geogeo-list-mobile-bar-height: 56px;
                --geogeo-list-mobile-bar-gap: 8px;
                /* List panel reaches the Affichage bar; filter/conseils/fav FABs float on top. */
                --geogeo-list-mobile-stack-bottom: calc(
                    var(--geogeo-list-mobile-bar-height) + env(safe-area-inset-bottom, 0px)
                );
            }

            body.geogeo-mobile-sheet-open,
            body.geogeo-list-drawer-open {
                overflow: hidden;
            }

            .geogeo-mobile-fab {
                display: flex;
                align-items: center;
                justify-content: center;
                position: fixed;
                bottom: calc(var(--geogeo-pv-ticker-height) + var(--geogeo-mobile-fab-inset));
                width: var(--geogeo-mobile-fab-size);
                height: var(--geogeo-mobile-fab-size);
                border-radius: 50%;
                border: 3px solid #1E3A8A;
                background: #7BEC7B;
                color: #1E3A8A;
                box-shadow: 0 4px 14px rgba(30, 58, 138, 0.28);
                cursor: pointer;
                z-index: 1006;
                padding: 0;
                transition: background 0.2s ease, transform 0.2s ease;
            }
            .geogeo-mobile-fab--filters {
                left: max(16px, env(safe-area-inset-left, 0px));
            }
            /* search_tab.svg has more viewBox padding than star/council — scale up to match visual weight */
            .geogeo-mobile-fab--filters .geogeo-mobile-fab-icon {
                width: 32px;
                height: 32px;
            }
            .geogeo-mobile-fab--councils,
            #geogeo-mobile-fab-councils.geogeo-pro-gate-self {
                position: fixed;
                left: 50%;
                right: auto;
                transform: translateX(-50%);
            }
            .geogeo-mobile-fab--councils.geogeo-mobile-fab--active,
            #geogeo-mobile-fab-councils.geogeo-mobile-fab--active {
                transform: translateX(-50%);
            }
            .geogeo-mobile-fab--favorites {
                right: max(16px, env(safe-area-inset-right, 0px));
            }
            .geogeo-mobile-fab--active {
                background: #1E3A8A;
                /* Only the open sheet's FAB rises above the panel; siblings stay covered */
                z-index: 1011;
            }
            .geogeo-mobile-fab--active .geogeo-mobile-fab-icon {
                filter: brightness(0) invert(1);
            }
            .geogeo-mobile-fab-icon {
                width: 26px;
                height: 26px;
                object-fit: contain;
                pointer-events: none;
            }

            .geogeo-mobile-sheet-overlay {
                display: block;
                position: fixed;
                inset: 0;
                z-index: 1002;
                background: rgba(15, 30, 90, 0.42);
                opacity: 0;
                visibility: hidden;
                pointer-events: none;
                transition: opacity 0.25s ease, visibility 0.25s ease;
            }
            .geogeo-mobile-sheet-overlay.geogeo-mobile-sheet-overlay--visible {
                opacity: 1;
                visibility: visible;
                pointer-events: auto;
            }

            /* Login + signup + paywall: full-viewport sheet (own bottom X; not FAB-band inset) */
            .auth-modal,
            .pro-popup {
                padding: 0;
                align-items: stretch;
                justify-content: flex-start;
                box-sizing: border-box;
            }

            .auth-modal-content,
            .pro-popup-content {
                border: 3px solid #1E3A8A;
                border-radius: 15px;
                box-shadow: 0 4px 20px -2px rgba(0, 0, 0, 0.15);
                width: 100%;
                max-width: none;
                margin-top: 0;
                margin-bottom: 0;
                flex: 1 1 auto;
                height: 100dvh;
                min-height: 100dvh;
                max-height: 100dvh;
                padding: max(6px, env(safe-area-inset-top, 0px)) 12px max(16px, env(safe-area-inset-bottom, 0px)) 12px;
                overflow-y: auto;
                overflow-x: hidden;
                -webkit-overflow-scrolling: touch;
                box-sizing: border-box;
                scrollbar-color: #1E3A8A transparent;
            }

            .auth-modal-content::-webkit-scrollbar,
            .pro-popup-content::-webkit-scrollbar {
                width: 8px;
            }

            .auth-modal-content::-webkit-scrollbar-track,
            .pro-popup-content::-webkit-scrollbar-track {
                background: transparent;
            }

            .auth-modal-content::-webkit-scrollbar-thumb,
            .pro-popup-content::-webkit-scrollbar-thumb {
                background: #1E3A8A;
                border-radius: 8px;
            }

            .auth-modal-content::-webkit-scrollbar-thumb:hover,
            .pro-popup-content::-webkit-scrollbar-thumb:hover {
                background: #147CEC;
            }

            /* Connexion modal: even vertical rhythm (do not flex-grow the form) */
            #authModal .auth-modal-content {
                display: flex;
                flex-direction: column;
                justify-content: space-evenly;
                align-items: stretch;
                gap: 0;
            }

            #authModal #loginForm.auth-form {
                flex: 0 0 auto;
                display: block;
                width: 100%;
            }

            #authModal .auth-login-heading {
                font-size: 28px;
                margin-bottom: 14px;
            }

            #authModal .auth-turnstile-slot {
                margin: 12px 0 8px;
            }

            #authModal .forgot-password-text {
                margin-bottom: 0;
            }

            #authModal .auth-modal-topbar {
                min-height: 40px;
                margin: 0;
            }

            #authModal .auth-login-heading {
                margin-top: 1rem;
            }

            #authModal .auth-plan-lead {
                margin: 1rem 0 14px;
            }

            #authModal .auth-plan-lead-line {
                font-size: 1em;
                font-weight: 700;
                line-height: inherit;
            }

            #authModal .auth-plan-section {
                flex: 0 0 auto;
                margin-top: 0;
                margin-bottom: 0;
                padding-top: 0;
            }

            #authModal .close-popup.auth-modal-close-top {
                /* Match filter-box tucked corner X size; anchored in topbar row */
                top: 0;
                right: 0;
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                font-size: 24px;
            }

            #authModal .auth-modal-footer {
                flex: 0 0 auto;
                /* Bumper above bottom X so it is not jammed under plan content */
                margin-top: 20px;
                padding-top: 12px;
            }

            /* Connexion modal: desktop-style pill cards (scaled) + tighter footer gap */
            .auth-modal-content .auth-plan-section {
                margin-bottom: 0;
                padding-bottom: 0;
            }

            .auth-modal-content .auth-plan-section .auth-plan-title {
                margin-bottom: 12px;
            }

            .auth-modal-content .auth-plan-buttons-row {
                display: grid;
                grid-template-columns: 88px minmax(0, 1fr) 88px;
                width: 100%;
                column-gap: 0;
                margin-top: 0;
                align-items: flex-end;
            }

            .auth-modal-content .auth-plan-plan-col {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                width: 88px;
                min-height: 76px;
                flex-shrink: 0;
                border-radius: 16px;
                box-sizing: border-box;
                padding: 10px 6px;
                gap: 4px;
                position: relative;
                z-index: 2;
                margin-top: 28px;
                transition: background 0.2s ease, color 0.2s ease;
            }

            .auth-modal-content .auth-plan-plan-col--gratuit {
                justify-self: start;
                margin-right: -22px;
                background: #1E3A8A;
                color: #fff;
            }

            .auth-modal-content .auth-plan-plan-col--pro {
                justify-self: end;
                margin-left: -22px;
                background: #7BEC7B;
                color: #1E3A8A;
            }

            .auth-modal-content .auth-plan-plan-col--gratuit:has(.plan-gratuit-button:hover) {
                background: #7BEC7B;
                color: #1E3A8A;
            }

            .auth-modal-content .auth-plan-plan-col--pro:has(.plan-pro-button:hover) {
                background: #1E3A8A;
                color: #fff;
            }

            .auth-modal-content .auth-plan-center-image {
                justify-self: center;
                align-self: flex-end;
                position: relative;
                z-index: 1;
                width: auto;
                max-width: 120px;
                height: 112px;
                margin: 0;
                object-fit: contain;
                object-position: center center;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                text-align: center;
                width: 100%;
                height: auto;
                min-height: 0;
                margin: 0;
                padding: 0;
                gap: 0;
                border: none;
                border-radius: 0;
                font-size: inherit;
                font-weight: inherit;
                letter-spacing: normal;
                background: transparent !important;
                box-shadow: none;
                transform: none;
                flex-shrink: 0;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button:hover {
                transform: none;
                box-shadow: none;
            }

            .auth-modal-content .auth-plan-buttons-row .auth-plan-btn-face {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                width: 100%;
                text-align: center;
                gap: 2px;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button-icon {
                display: block;
                width: 14px;
                height: 14px;
                margin: 0;
                flex-shrink: 0;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button-main {
                display: block;
                width: 100%;
                font-size: 9px;
                font-weight: 600;
                line-height: 1.15;
                text-align: center;
            }

            .auth-modal-content .auth-plan-plan-col > .plan-button-sub {
                display: block;
                margin-top: 0;
                font-size: 8px;
                line-height: 1.2;
                text-align: center;
                color: inherit;
                font-weight: 400;
                width: 100%;
                opacity: 0.9;
                padding: 0;
            }

            .auth-modal-content .auth-plan-section + .auth-modal-footer,
            #authModal .auth-plan-section + .auth-modal-footer {
                margin-top: 20px;
                padding-top: 12px;
            }

            .filter-collapse-tab,
            .favorites-sidebar-tab {
                display: none !important;
            }

            .filter-controls {
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                width: auto;
                max-width: none;
                /* Full viewport like Favoris; dedicated FAB (active, 1011) is exit */
                bottom: 0;
                height: 100dvh;
                max-height: 100dvh;
                z-index: 1010;
                transform: none !important;
                visibility: hidden;
                pointer-events: none;
                opacity: 0;
                transition: opacity 0.25s ease, visibility 0.25s ease;
            }
            .filter-controls.filter-collapsed {
                transform: none !important;
                pointer-events: none;
            }
            .filter-controls.filter-mobile-open {
                visibility: visible;
                pointer-events: auto;
                opacity: 1;
            }
            /* Match Favoris mobile sheet contour; header pinned, scroll on body-inner (RTL bar on left) */
            .filter-controls-body {
                position: relative;
                min-width: 0;
                width: 100%;
                height: 100%;
                max-height: none;
                padding: max(10px, env(safe-area-inset-top, 0px)) 0 0 0;
                border: 3px solid #1E3A8A;
                border-radius: 15px;
                box-shadow: 0 4px 20px -2px rgba(0,0,0,0.15);
                box-sizing: border-box;
                overflow: hidden;
                display: flex;
                flex-direction: column;
            }
            .filter-controls-body-inner {
                min-width: 0;
                flex: 1 1 auto;
                min-height: 0;
                overflow-y: auto;
                overflow-x: hidden;
                direction: rtl;
                /* Tight bottom — Haut sits right under the last filter (no FAB cave). */
                padding: 10px 12px 12px 12px;
                box-sizing: border-box;
            }
            .filter-controls .filter-top-row {
                /* Bumper + right clearance so header clears the tucked corner X */
                padding: 18px 56px 12px 12px;
            }
            .filter-controls .filters-close-btn {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                box-sizing: border-box;
                /* Tucked a few px inside the sheet border */
                position: absolute;
                top: 6px;
                right: 6px;
                z-index: 3;
                margin: 0;
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                padding: 0;
                border: 3px solid #1E3A8A;
                border-radius: 50%;
                background: #7BEC7B;
                color: #1E3A8A;
                font-size: 24px;
                font-weight: 600;
                line-height: 1;
                font-family: var(--font-ui);
                cursor: pointer;
                transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
                box-shadow: 0 4px 12px rgba(30, 58, 138, 0.2);
            }
            .filter-controls .filters-close-btn:hover {
                background: #1E3A8A;
                color: #fff;
                transform: translateY(-1px);
                box-shadow: 0 4px 14px rgba(30, 58, 138, 0.35);
            }
            .filter-controls .filter-top-row,
            .filter-controls .search-row-container,
            .filter-controls .filter-source-switches,
            .filter-controls .filter-group,
            .filter-controls .tag-filter-btns {
                min-width: 0;
                max-width: 100%;
            }
            .filter-controls .filter-top-row {
                gap: 8px;
            }
            .filter-controls .filter-pin-count {
                font-size: 20px;
                min-width: 0;
            }
            .filter-controls .saved-searches-label {
                font-size: 18px;
            }
            .filter-controls .filter-group {
                margin-bottom: 14px;
            }
            .filter-controls .filter-group[data-filter="ministry"] .filter-buttons .filter-btn {
                white-space: normal;
                text-align: center;
                width: 100%;
                justify-self: stretch;
                padding: 6px 6px;
                font-size: 11px;
            }

            /* Search row: search-only on mobile (filtres actifs is in pinned header) */
            .search-row-container {
                display: flex;
                align-items: center;
                gap: 12px;
                margin-bottom: 20px;
            }
            .filter-controls .filter-top-meta-row .filters-info-container {
                width: auto;
                min-width: 0;
                flex: 0 0 auto;
                justify-content: flex-end;
            }
            .filter-controls .filter-top-meta-row .filter-pin-count {
                font-size: 18px;
            }
            .search-container {
                display: flex;
                align-items: center;
                flex: 1 1 auto;
                min-width: 0;
                width: 100%;
                position: relative;
            }
            .search-row-container .search-icon {
                flex-shrink: 0;
            }
            .search-row-container .header-search {
                width: 100%;
                max-width: none;
                box-sizing: border-box;
                flex: 1 1 auto;
                min-width: 0;
            }

            .favorites-sidebar {
                display: block !important;
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                height: 100dvh;
                max-height: 100dvh;
                z-index: 1010; /* above other FABs/ticker; favoris FAB stays at 1011 */
                transform: none !important;
                visibility: hidden;
                pointer-events: none;
                opacity: 0;
                transition: opacity 0.25s ease, visibility 0.25s ease;
            }
            .favorites-sidebar.favorites-collapsed {
                transform: none !important;
            }
            .favorites-sidebar.favorites-mobile-open {
                visibility: visible;
                pointer-events: auto;
                opacity: 1;
            }

            .pv-councils-sidebar {
                display: block !important;
                position: fixed;
                top: var(--geogeo-mobile-header-height);
                left: 0;
                right: 0;
                bottom: var(--geogeo-mobile-fab-bottom-inset);
                z-index: 1004;
                transform: none !important;
                visibility: hidden;
                pointer-events: none;
                opacity: 0;
                transition: opacity 0.25s ease, visibility 0.25s ease;
            }
            .pv-councils-sidebar.pv-councils-collapsed {
                transform: none !important;
            }
            .pv-councils-sidebar.pv-councils-mobile-open {
                visibility: visible;
                pointer-events: auto;
                opacity: 1;
            }
            .pv-councils-sidebar-body {
                width: 100%;
                min-width: 0;
                max-width: none;
                height: 100%;
                max-height: none;
                box-sizing: border-box;
                padding: 6px 12px 16px 12px;
            }
            .pv-councils-sidebar-tab {
                display: none !important;
            }
            .pv-ticker {
                z-index: 1007;
                --geogeo-pv-ticker-height: 44px;
                height: var(--geogeo-pv-ticker-height);
            }
            /* Narrow viewport: same px/s feels much faster — half again vs desktop. */
            .pv-ticker-track {
                animation-duration: 1120s;
            }
            /* Single row only — natural-width chips scroll past; excerpt length clamped in JS. */
            .pv-ticker-seq {
                gap: 1.6rem;
                align-items: center;
            }
            .pv-ticker-item {
                display: inline-flex;
                flex-wrap: nowrap;
                align-items: center;
                gap: 0.35rem;
                max-width: none;
                width: max-content;
                max-height: 100%;
                overflow: visible;
                white-space: nowrap;
                font-size: 0.78rem;
                line-height: 1.15;
                padding: 0 0.15rem;
            }
            .pv-ticker-logo {
                width: 24px;
                height: 24px;
            }
            .pv-ticker-signal-tag {
                padding: 0.08em 0.3em;
                border-radius: 5px;
                font-size: 0.74rem;
            }
            .pv-ticker-excerpt {
                max-width: none;
                /* Solid fill — gradient + clip fights readability at small size. */
                background: none;
                -webkit-background-clip: border-box;
                background-clip: border-box;
                -webkit-text-fill-color: #1E3A8A;
                color: #1E3A8A;
            }
            .favorites-sidebar-body {
                position: relative;
                width: 100%;
                min-width: 0;
                max-width: none;
                height: 100%;
                max-height: none;
                min-height: 0;
                box-sizing: border-box;
                border-radius: 15px;
                padding: 0;
                overflow: hidden;
            }
            .favorites-sidebar-header {
                /* Clear tucked corner X + safe-area bumper */
                padding: max(14px, env(safe-area-inset-top, 0px)) 44px 12px 12px;
            }
            .favorites-sidebar-body-inner {
                padding: 0 12px calc(var(--geogeo-mobile-fab-bottom-inset) + 8px) 12px;
            }
            .favorites-sidebar .favorites-recents-list {
                max-height: none;
                overflow: visible;
            }

            /* Favoris header: row 1 = title + close X (right); row 2 = share icons */
            .favorites-sidebar-title-row {
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto;
                grid-template-rows: auto auto;
                align-items: center;
                column-gap: 8px;
                row-gap: 10px;
            }
            .favorites-sidebar-title-wrap {
                grid-column: 1;
                grid-row: 1;
                min-width: 0;
                overflow: hidden;
            }
            .favorites-export-controls {
                display: block;
                grid-column: 1 / -1;
                grid-row: 2;
            }
            .favorites-sidebar .close-popup.favorites-close-btn {
                /* Match filter-box tucked corner X */
                position: absolute;
                top: 6px;
                right: 6px;
                z-index: 3;
                grid-column: auto;
                grid-row: auto;
                justify-self: auto;
                margin: 0;
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                font-size: 24px;
                pointer-events: auto;
            }
            .favorites-header-share-wrap {
                justify-content: flex-start;
                width: 100%;
            }

            /* Touch: hover tooltips are desktop-only (no persistent hover on phone) */
            .fav-strip-tooltip-portal,
            .geogeo-pro-gate-tooltip-portal,
            .geogeo-data-tooltip-portal {
                display: none !important;
                opacity: 0 !important;
                visibility: hidden !important;
            }
            .geogeo-filter-help-trigger--desktop,
            .geogeo-notice-type-help-trigger--desktop {
                pointer-events: none;
            }
            .list-item .list-item-favorite-strip .tender-favorite-btn:hover::after,
            .favorites-item-strip-btn:hover::after,
            .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::after,
            .list-item .list-item-favorite-strip .tender-favorite-btn:hover::before,
            .favorites-item-strip-btn:hover::before,
            .favorites-recents-item .favorites-item-strip .tender-favorite-btn:hover::before,
            .list-share-btn:hover::after,
            .list-item-corner-share-btn:hover::after,
            .favorites-header-share-btn:hover::after,
            .favorites-item-share-btn:hover::after,
            .list-share-btn:hover::before,
            .list-item-corner-share-btn:hover::before,
            .favorites-header-share-btn:hover::before,
            .favorites-item-share-btn:hover::before,
            .popup-content [title]:hover::after,
            .popup-content [title]:hover::before,
            .data-view-btn:hover::after,
            .data-view-tout-afficher-btn:hover::after,
            .list-item .list-icon-wrap:hover::after,
            .list-item .list-icon-wrap:hover::before {
                content: none !important;
                display: none !important;
            }
            .list-order-switch:hover .list-order-tooltip {
                opacity: 0 !important;
                visibility: hidden !important;
            }
            .tag-unspsc-wrap:hover .unspsc-tooltip-bubble,
            .tag-projet-wrap:hover .meta-tooltip-bubble,
            .tag-ref-wrap:hover .meta-tooltip-bubble,
            .unspsc-tooltip-bubble,
            .meta-tooltip-bubble {
                opacity: 0 !important;
                visibility: hidden !important;
                display: none !important;
            }

            /* Phase 3: map + list container fill viewport below sticky header (above FABs + PV strip) */
            :root {
                --geogeo-pv-ticker-height: 44px;
                --geogeo-mobile-fab-bottom-inset: calc(
                    var(--geogeo-pv-ticker-height) + var(--geogeo-mobile-fab-size) + var(--geogeo-mobile-fab-inset) + 12px
                );
            }

            .header {
                position: sticky;
                top: 0;
                z-index: 1001;
            }

            #map {
                top: auto;
                width: 100%;
                height: calc(100dvh - var(--geogeo-mobile-header-height));
                min-height: 180px;
            }

            .list-container {
                position: fixed;
                top: var(--geogeo-mobile-header-height);
                left: 0;
                right: 0;
                bottom: var(--geogeo-mobile-fab-bottom-inset);
                --list-filter-right-edge-offset: 0px;
                --list-filter-shift: 0px;
                border-radius: 0;
                box-shadow: none;
                z-index: 999;
            }
            /* List mode: panel to Affichage bar; FABs overlay the list (not inset). */
            body.geogeo-mobile-list-mode .list-container {
                bottom: var(--geogeo-list-mobile-stack-bottom);
            }
            .list-container.list-filters-open {
                --list-filter-shift: 0px;
            }
            .list-filter-blade {
                width: 0 !important;
                min-width: 0;
            }
            .list-content-row .list-content {
                overflow-x: hidden;
            }

            .pagination-wrapper {
                flex-direction: row;
                align-items: center;
                justify-content: center;
                gap: 0;
                box-sizing: border-box;
                width: 100%;
                /* Right edge bumper so "400 avis/page" never kisses/clips the screen */
                padding: 6px max(14px, env(safe-area-inset-right, 0px)) 6px max(8px, env(safe-area-inset-left, 0px));
            }
            .pagination-container,
            #pagination-controls {
                width: 100%;
                max-width: 100%;
                min-width: 0;
                display: flex;
                justify-content: stretch;
                box-sizing: border-box;
            }
            .pagination-wrapper .pagination--mobile-compact,
            #pagination-controls .pagination--mobile-compact {
                width: 100%;
                max-width: 100%;
                min-width: 0;
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto max-content;
                align-items: center;
                gap: 8px;
                box-sizing: border-box;
            }
            .pagination-wrapper .pagination-mobile-nav,
            #pagination-controls .pagination-mobile-nav {
                justify-self: start;
                min-width: 0;
                overflow: hidden;
            }
            .pagination-wrapper .pagination-mobile-summary,
            #pagination-controls .pagination-mobile-summary {
                flex: 0 0 auto;
                text-align: center;
                font-size: 13px;
                font-weight: 700;
                color: #1E3A8A;
                white-space: nowrap;
                min-width: 0;
            }
            .pagination-wrapper .pagination-mobile-total-count,
            #pagination-controls .pagination-mobile-total-count {
                display: inline-flex;
                align-items: center;
                justify-self: center;
                font-size: 11px;
                font-weight: 700;
                line-height: 1;
                white-space: nowrap;
            }
            .pagination-wrapper .pagination-mobile-total-count .filter-pin-count-number,
            #pagination-controls .pagination-mobile-total-count .filter-pin-count-number {
                font-size: inherit;
                font-weight: 700;
            }
            .pagination-wrapper .pagination--mobile-compact .pagination-page-size,
            #pagination-controls .pagination--mobile-compact .pagination-page-size {
                margin-left: 0;
                justify-self: end;
                font-size: 11px;
                white-space: nowrap;
                flex-shrink: 0;
                min-width: max-content;
            }
            .pagination-wrapper .pagination--mobile-compact .pagination-arrow-btn,
            #pagination-controls .pagination--mobile-compact .pagination-arrow-btn,
            .list-pagination-bottom .pagination--mobile-compact .pagination-arrow-btn {
                flex-shrink: 0;
                width: 24px;
                height: 24px;
                min-width: 24px;
                min-height: 24px;
                margin: 0;
                padding: 0;
                border: none;
                border-radius: 50%;
                background: #1E3A8A !important;
                color: #fff !important;
                font-size: 22px;
                font-weight: 700;
                line-height: 1;
                box-shadow: none;
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }
            .pagination-wrapper .pagination--mobile-compact .pagination-arrow-btn:hover,
            #pagination-controls .pagination--mobile-compact .pagination-arrow-btn:hover,
            .list-pagination-bottom .pagination--mobile-compact .pagination-arrow-btn:hover {
                background: #1E3A8A !important;
                border: none;
                color: #fff !important;
                transform: none;
            }
            .pagination-wrapper .pagination--mobile-compact .pagination-arrow-btn:disabled,
            #pagination-controls .pagination--mobile-compact .pagination-arrow-btn:disabled,
            .list-pagination-bottom .pagination--mobile-compact .pagination-arrow-btn:disabled {
                background: #1E3A8A !important;
                border: none !important;
                color: #fff !important;
                opacity: 0.35;
            }
            .list-pagination-bottom .pagination--mobile-compact {
                width: auto;
                justify-content: center;
            }
            .list-pagination-bottom .pagination-mobile-summary {
                flex: 0 0 auto;
            }
            .list-right-section,
            body.geogeo-mobile-list-mode .list-right-section,
            body.geogeo-mobile-list-mode #plan-button-container {
                display: none !important;
            }
            .pagination {
                gap: 4px;
            }
            .pagination-btn {
                min-width: 40px;
                min-height: 40px;
                padding: 8px 12px;
            }
            .pagination-page-size {
                margin-left: 6px;
                font-size: 13px;
                white-space: normal;
            }
            .pagination-meta {
                transform: none !important;
            }

            /* Mobile list: reclaim vertical space — drop stats strip + extra Plan button
               (main top Plan control stays). Desktop keeps list-header stats. */
            .list-header,
            .pagination-wrapper {
                flex-shrink: 0;
            }
            body.geogeo-mobile-list-mode .list-mobile-stats-bar {
                display: none !important;
            }

            /* Mobile list mode: compact rows (Favoris-style header + actions)
               Restored from June mobile session — prevents flex-collapsed
               letter-by-letter vertical text stacking via min-width:0 +
               nowrap/ellipsis on detail rows and 2-line clamp on titles. */
            body.geogeo-mobile-list-mode .list-item,
            body.geogeo-mobile-list-mode .list-item--mobile-compact {
                --list-mobile-row-gap: 4px;
                /* Wide clock at top; narrower star/share below (tags reclaim the difference). */
                --list-mobile-clock-col: 84px;
                --list-mobile-btn-col: 36px;
                /* Beauty floor under clock/Ouvert/Terminé/dates — star cannot climb into this. */
                --list-mobile-clock-bumper: 18px;
                --list-mobile-star-clearance: 18px;
                padding: 8px var(--list-mobile-clock-col) 8px 10px;
                overflow-x: hidden;
                overflow-y: visible;
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-favorite-strip {
                display: none;
            }
            /*
             * Clock-only rail on the title row. Star lives in .list-item-mobile-fav-band
             * (between org and category). Share lives in the tags row.
             */
            body.geogeo-mobile-list-mode .list-item-action-rail,
            body.geogeo-mobile-list-mode .list-item-action-rail--clock-only {
                width: var(--list-mobile-clock-col);
                top: 0;
                bottom: auto;
                height: auto;
                padding: 8px 2px 0;
                align-items: center;
                justify-content: flex-start;
                gap: 0;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail-clock {
                flex: 0 0 auto;
                width: 100%;
                min-height: 14px;
                align-items: center;
                justify-content: center;
            }
            /*
             * Clock-column beauty bumper (absolute rail only).
             * Reserves air under clock / Ouvert|Terminé / dates so the star never crowds them.
             * Does not enter .list-item-body — left info spacing stays untouched.
             */
            body.geogeo-mobile-list-mode .list-item-clock-bumper {
                flex: 0 0 auto;
                width: 100%;
                height: var(--list-mobile-clock-bumper, 18px);
                min-height: var(--list-mobile-clock-bumper, 18px);
                margin: 0;
                padding: 0;
                pointer-events: none;
                visibility: hidden;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail--clock-only .list-item-action-rail-fav,
            body.geogeo-mobile-list-mode .list-item-action-rail--clock-only .list-item-action-rail-share {
                display: none !important;
            }
            /*
             * Star host: zero-height so left info rhythm is unchanged.
             * Vertical position is set in JS — dwells at tender mid-height,
             * floored by .list-item-clock-bumper (never crowds clock/status/dates).
             */
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band {
                position: relative;
                display: block;
                box-sizing: border-box;
                width: 100%;
                max-width: none;
                height: 0;
                min-height: 0;
                margin: 0;
                /* Two flex gaps would otherwise stack around this item — collapse one. */
                margin-top: calc(-1 * var(--list-mobile-row-gap, 4px));
                padding: 0;
                overflow: visible;
                pointer-events: none;
                z-index: 2;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band .list-item-action-rail-btn {
                position: absolute;
                top: 0; /* overwritten by syncMobileListStarBumpers (tender center) */
                /* Center the 32px control inside the right clock column. */
                right: calc(-1 * var(--list-mobile-clock-col) + (var(--list-mobile-clock-col) - 32px) / 2);
                transform: translateY(-50%);
                pointer-events: auto;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band .list-item-action-rail-btn,
            body.geogeo-mobile-list-mode .list-item-tags-share-slot .list-item-action-rail-btn {
                width: 32px;
                height: 32px;
                min-width: 32px;
                min-height: 32px;
                padding: 0;
                border: none;
                border-radius: 6px;
                background: transparent;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                cursor: pointer;
                flex-shrink: 0;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band .list-item-action-rail-btn img,
            body.geogeo-mobile-list-mode .list-item-tags-share-slot .list-item-action-rail-btn img {
                width: 22px;
                height: 22px;
                object-fit: contain;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail .list-item-action-rail-btn {
                width: 32px;
                height: 32px;
                min-width: 32px;
                min-height: 32px;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail .list-item-action-rail-btn img {
                width: 22px;
                height: 22px;
            }
            body.geogeo-mobile-list-mode .list-item .countdown-block .countdown-live {
                font-size: 14px;
                width: auto;
                min-width: 8.2ch;
                max-width: none;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail-clock .countdown-block {
                width: auto;
                min-width: 0;
                max-width: 100%;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail-clock .countdown-block:has(.countdown-live) {
                width: auto;
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-body {
                display: flex;
                flex-direction: column;
                gap: var(--list-mobile-row-gap, 4px);
                max-width: 100%;
                padding-right: 0;
                padding-top: 0;
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-header-main {
                display: flex;
                flex-direction: column;
                gap: var(--list-mobile-row-gap, 4px);
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-split-row {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 8px;
                min-width: 0;
                margin: 0;
            }
            body.geogeo-mobile-list-mode .list-item-split-main {
                flex: 1 1 auto;
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-split-main .list-item-details {
                margin: 0;
            }
            body.geogeo-mobile-list-mode .list-item-split-main .list-item-text {
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            body.geogeo-mobile-list-mode .list-item-category-row .list-item-corner-column {
                display: none;
            }
            body.geogeo-mobile-list-mode .list-item-category-row .list-item-countdown-wrap {
                display: none;
            }
            body.geogeo-mobile-list-mode .list-item-competition-row .list-item-actions-stack {
                display: none;
            }
            body.geogeo-mobile-list-mode .list-item-competition-row .list-item-corner-share-wrap {
                display: none;
            }
            body.geogeo-mobile-list-mode .list-item-bottom-rows {
                display: flex;
                flex-direction: column;
                gap: var(--list-mobile-row-gap, 4px);
                flex-shrink: 0;
                margin: 0;
                min-height: 0;
                position: relative;
                z-index: 1;
            }
            body.geogeo-mobile-list-mode .list-item-action-rail-share,
            body.geogeo-mobile-list-mode .list-item-action-rail-fav {
                display: flex !important;
                visibility: visible;
                opacity: 1;
            }
            body.geogeo-mobile-list-mode .list-item-actions,
            body.geogeo-mobile-list-mode .list-item-actions--details-only,
            body.geogeo-mobile-list-mode .list-item-link-row {
                display: block;
                margin: 0;
            }
            body.geogeo-mobile-list-mode .list-item-actions .list-item-link,
            body.geogeo-mobile-list-mode .list-item-link-row .list-item-link {
                width: fit-content;
                max-width: 100%;
                font-size: 14px;
                font-weight: 700;
                line-height: 1.3;
                align-items: center;
            }
            /* Fixed list tags + share on the same bottom row. */
            body.geogeo-mobile-list-mode .list-item-tags-row,
            body.geogeo-mobile-list-mode .list-item-tags-row--with-share {
                display: flex;
                flex-wrap: nowrap;
                align-items: center;
                gap: 4px;
                box-sizing: border-box;
                width: calc(100% + var(--list-mobile-clock-col));
                max-width: none;
                margin: 0 calc(-1 * var(--list-mobile-clock-col)) 0 0;
                padding-right: 2px;
                overflow: hidden;
            }
            body.geogeo-mobile-list-mode .list-item-tags-scroll {
                display: flex;
                flex-wrap: nowrap;
                align-items: center;
                gap: 5px;
                flex: 1 1 auto;
                min-width: 0;
                overflow-x: auto;
                overflow-y: hidden;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
            }
            body.geogeo-mobile-list-mode .list-item-tags-scroll::-webkit-scrollbar {
                display: none;
            }
            /* Share stays absolutely positioned; do not reserve the full clock column here —
               that stole width from the tag strip (map chip). Keep a small edge inset only. */
            body.geogeo-mobile-list-mode .list-item-tags-row {
                padding-right: 2px;
            }
            /*
             * Share pin: bottom of tender + same X as star/clock column.
             * Independent of star centering — do not touch in star sync JS.
             */
            body.geogeo-mobile-list-mode .list-item-mobile-share-pin {
                position: absolute;
                right: calc((var(--list-mobile-clock-col) - 32px) / 2);
                bottom: 8px;
                width: 32px;
                height: 32px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                z-index: 3;
                pointer-events: none;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-share-pin .list-item-action-rail-btn {
                pointer-events: auto;
                width: 32px;
                height: 32px;
                min-width: 32px;
                min-height: 32px;
                padding: 0;
                border: none;
                border-radius: 6px;
                background: transparent;
                display: inline-flex;
                align-items: center;
                justify-content: center;
                cursor: pointer;
                flex-shrink: 0;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-share-pin .list-item-action-rail-btn img {
                width: 22px;
                height: 22px;
                object-fit: contain;
            }
            body.geogeo-mobile-list-mode .list-item-tags-row::-webkit-scrollbar {
                display: none;
            }
            body.geogeo-mobile-list-mode .list-item-tags-row .tender-tags,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tender-tags {
                display: inline-flex;
                flex-wrap: nowrap;
                align-items: center;
                gap: 5px;
                margin: 0;
                flex: 0 0 auto;
            }
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-unspsc-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-projet-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-ref-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-map-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-unspsc-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-projet-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-ref-wrap,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-map-wrap {
                display: inline-flex;
                align-items: center;
                flex: 0 0 auto;
            }
            body.geogeo-mobile-list-mode .list-item-tags-row .tender-tag,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-unspsc,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-projet,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-ref,
            body.geogeo-mobile-list-mode .list-item-tags-row .tag-map,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tender-tag,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-unspsc,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-projet,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-ref,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .tag-map {
                font-size: 11px;
                font-weight: 500;
                padding: 4px 8px;
                line-height: 1.25;
                white-space: nowrap;
                border-radius: 6px;
            }
            body.geogeo-mobile-list-mode .list-item-tags-row .unspsc-tooltip-bubble,
            body.geogeo-mobile-list-mode .list-item-tags-row .meta-tooltip-bubble,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .unspsc-tooltip-bubble,
            body.geogeo-mobile-list-mode .list-item-tags-scroll .meta-tooltip-bubble {
                display: none !important;
            }
            /* Keep star/share icon colors when moved out of the absolute rail. */
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band .tender-favorite-btn img {
                /* Native SVG #1E3A8A — match Terminé / share exactly */
                filter: none;
            }
            body.geogeo-mobile-list-mode .list-item-mobile-fav-band .tender-favorite-btn.starred img {
                filter: brightness(0) saturate(100%) invert(61%) sepia(71%) saturate(489%) hue-rotate(86deg) brightness(96%) contrast(91%);
            }

            body.geogeo-mobile-list-mode .list-item-title,
            body.geogeo-mobile-list-mode .list-item-details,
            body.geogeo-mobile-list-mode .list-item-actions--details-only,
            body.geogeo-mobile-list-mode .list-item-link-row {
                margin: 0;
                min-height: 18px;
                align-items: center;
                gap: 6px;
                line-height: 1.3;
            }
            body.geogeo-mobile-list-mode .list-item-title {
                font-size: 12px;
                font-weight: 600;
            }
            body.geogeo-mobile-list-mode .list-item-title .list-item-text {
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                overflow: hidden;
                word-break: break-word;
            }
            body.geogeo-mobile-list-mode .list-item-details--org .list-item-text {
                display: block;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            body.geogeo-mobile-list-mode .list-item-details {
                font-size: 12px;
            }
            body.geogeo-mobile-list-mode .list-item-title .list-icon,
            body.geogeo-mobile-list-mode .list-item-details .list-icon,
            body.geogeo-mobile-list-mode .list-item-link .list-icon {
                width: 14px;
                height: 14px;
                margin-right: 0;
                flex: 0 0 14px;
            }
            /* Tags + formulaire start at icon column (no text-gutter indent) */
            body.geogeo-mobile-list-mode .list-item-tags-row,
            body.geogeo-mobile-list-mode .list-item-tags-row--with-share {
                padding-left: 0;
            }
            /*
             * Stack width = tag chip strip (MUNI vs QC vs CAN…).
             * Formulaire stretches to that same width; long strips cap and scroll.
             */
            body.geogeo-mobile-list-mode .list-item-tags-formulaire-stack {
                display: flex;
                flex-direction: column;
                align-items: stretch;
                gap: var(--list-mobile-row-gap, 4px);
                box-sizing: border-box;
                width: max-content;
                max-width: calc(100% + var(--list-mobile-clock-col));
                padding-right: 2px;
                min-width: 0;
            }
            body.geogeo-mobile-list-mode .list-item-tags-formulaire-stack .list-item-tags-row,
            body.geogeo-mobile-list-mode .list-item-tags-formulaire-stack .list-item-tags-row--with-share {
                width: auto;
                max-width: 100%;
                margin: 0;
                padding-right: 0;
            }
            body.geogeo-mobile-list-mode .list-item-tags-formulaire-stack .list-item-tags-scroll {
                flex: 0 1 auto;
                min-width: 0;
                max-width: 100%;
            }
            body.geogeo-mobile-list-mode .list-item-formulaire-row {
                display: flex;
                align-items: center;
                margin: 0;
                padding: 0;
                min-height: 18px;
                box-sizing: border-box;
                width: auto;
                max-width: none;
                align-self: stretch;
            }
            body.geogeo-mobile-list-mode .list-item-formulaire-btn {
                display: inline-flex;
                align-items: center;
                justify-content: center;
                margin: 0;
                padding: 4px 10px;
                width: 100%;
                box-sizing: border-box;
                background: #fff;
                color: #1E3A8A;
                border: 1.5px solid #1E3A8A;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 600;
                font-family: var(--font-ui, inherit);
                line-height: 1.25;
                cursor: pointer;
                white-space: nowrap;
                -webkit-tap-highlight-color: transparent;
            }
            body.geogeo-mobile-list-mode .list-item-formulaire-btn:hover,
            body.geogeo-mobile-list-mode .list-item-formulaire-btn:focus-visible {
                background: #f8fafc;
                color: #1E3A8A;
                outline: none;
            }
            body.geogeo-mobile-list-mode .list-item .countdown-block .countdown-live {
                font-size: 12.5px;
                width: 8.2ch;
                min-width: 8.2ch;
                max-width: 8.2ch;
            }
            body.geogeo-mobile-list-mode .list-item .countdown-block .countdown-days-tag {
                font-size: 12px;
                padding: 4px 8px;
                line-height: 1.2;
            }
            body.geogeo-mobile-list-mode .list-content {
                padding: 6px 8px;
            }
            /* Keep list panel shape; free "Haut de la liste" with in-scroller bumper only */
            body.geogeo-mobile-list-mode .list-endcap-spacer {
                display: block;
                width: 100%;
                /* Bumper + Affichage bar + FAB overlay so last cards can scroll clear. */
                height: calc(
                    1.5in + var(--geogeo-list-mobile-bar-height) + env(safe-area-inset-bottom, 0px) +
                    var(--geogeo-list-mobile-bar-gap) + var(--geogeo-mobile-fab-size) +
                    var(--geogeo-mobile-fab-inset)
                );
                flex-shrink: 0;
                pointer-events: none;
            }

            /* Phase 3c: hide top list header; bottom bar + drawer (list mode only) */
            body.geogeo-mobile-list-mode .list-header {
                display: none !important;
            }
            /* Affichage bar owns the bottom chrome — don't stack PV ticker under it. */
            body.geogeo-mobile-list-mode .pv-ticker {
                display: none !important;
            }
            .geogeo-list-mobile-bar,
            .geogeo-list-mobile-drawer {
                display: none !important;
            }
            body.geogeo-mobile-list-mode .geogeo-list-mobile-bar:not([hidden]) {
                display: flex !important;
            }
            /* Drawer only when open — avoids a full-screen layer over the bottom bar */
            body.geogeo-mobile-list-mode .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--open:not([hidden]) {
                display: block !important;
            }
            .geogeo-list-mobile-bar {
                position: fixed;
                left: 0;
                right: 0;
                bottom: 0;
                z-index: 1008;
                isolation: isolate;
                min-height: var(--geogeo-list-mobile-bar-height);
                height: auto;
                align-items: center;
                justify-content: space-around;
                gap: 8px;
                padding: 0 12px;
                padding-bottom: max(6px, env(safe-area-inset-bottom, 0px));
                background: #fff;
                border-top: 1px solid #e5e7eb;
                box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.06);
                box-sizing: border-box;
            }
            /* List mode: FABs float above Affichage bar; list scrolls underneath.
               Do not set z-index here — active FAB must stay above the open filter sheet. */
            body.geogeo-mobile-list-mode .geogeo-mobile-fab {
                bottom: calc(
                    var(--geogeo-list-mobile-bar-height) + env(safe-area-inset-bottom, 0px) +
                    var(--geogeo-list-mobile-bar-gap)
                );
            }
            body.geogeo-mobile-list-mode .geogeo-mobile-fab--active {
                z-index: 1012 !important;
            }
            .geogeo-list-mobile-bar-btn {
                flex: 1 1 0;
                max-width: 80px;
                position: relative;
                min-height: 44px;
                display: inline-flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                gap: 2px;
                border: none;
                border-radius: 12px;
                background: transparent;
                cursor: pointer;
                padding: 4px 6px 2px;
                transition: background 0.15s ease;
                font-family: var(--font-ui);
            }
            .geogeo-list-mobile-bar-btn--active,
            .geogeo-list-mobile-bar-btn[aria-expanded="true"] {
                background: rgba(30, 58, 138, 0.08);
            }
            .geogeo-list-mobile-bar-btn-icon {
                width: 24px;
                height: 24px;
                object-fit: contain;
                flex-shrink: 0;
            }
            .geogeo-list-mobile-bar-btn-label {
                font-size: 10px;
                font-weight: 400;
                line-height: 1.1;
                letter-spacing: 0.02em;
                color: #64748b;
                white-space: nowrap;
            }
            .geogeo-list-mobile-bar-btn--active .geogeo-list-mobile-bar-btn-label,
            .geogeo-list-mobile-bar-btn[aria-expanded="true"] .geogeo-list-mobile-bar-btn-label {
                color: #1E3A8A;
                font-weight: 500;
            }
            .geogeo-list-mobile-bar-pro-ribbon {
                position: absolute;
                top: -4px;
                left: calc(50% + 10px);
                right: auto;
                width: 24px;
                height: 24px;
                pointer-events: none;
                z-index: 2;
                opacity: 1;
            }
            .geogeo-list-mobile-bar-btn.geogeo-pro-gate-self .geogeo-list-mobile-bar-btn-icon {
                position: relative;
                z-index: 1;
                opacity: 1;
            }
            .geogeo-list-mobile-drawer {
                position: fixed;
                inset: 0;
                z-index: 1007;
                pointer-events: none;
            }
            .geogeo-list-mobile-drawer--open {
                pointer-events: auto;
            }
            .geogeo-list-mobile-drawer-backdrop {
                position: absolute;
                inset: 0;
                border: none;
                padding: 0;
                margin: 0;
                background: rgba(0, 0, 0, 0.28);
                opacity: 0;
                transition: opacity 0.2s ease;
                cursor: pointer;
            }
            .geogeo-list-mobile-drawer--open .geogeo-list-mobile-drawer-backdrop {
                opacity: 1;
            }
            .geogeo-list-mobile-drawer-sheet {
                position: absolute;
                left: 0;
                right: 0;
                bottom: calc(var(--geogeo-list-mobile-bar-height) + env(safe-area-inset-bottom, 0px));
                max-height: min(42vh, 320px);
                background: #fff;
                border-radius: 16px 16px 0 0;
                box-shadow: 0 -8px 28px rgba(0, 0, 0, 0.12);
                padding: 14px 16px 16px;
                box-sizing: border-box;
                transform: translateY(110%);
                transition: transform 0.25s ease;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
            }
            .geogeo-list-mobile-drawer--open .geogeo-list-mobile-drawer-sheet {
                transform: translateY(0);
            }
            .geogeo-list-mobile-drawer-panel[hidden] {
                display: none !important;
            }
            .geogeo-list-drawer-message {
                margin: 0 0 12px;
                font-size: 13px;
                line-height: 1.45;
                color: #374151;
                font-family: var(--font-ui);
            }
            .geogeo-list-drawer-message strong {
                color: #1E3A8A;
                font-weight: 700;
            }
            .geogeo-list-drawer-actions {
                display: flex;
                flex-direction: column;
                gap: 8px;
            }
            .geogeo-list-drawer-btn {
                min-height: 44px;
                padding: 10px 14px;
                border-radius: 22px;
                font-size: 13px;
                font-weight: 600;
                font-family: var(--font-ui);
                cursor: pointer;
                border: 2px solid transparent;
            }
            .geogeo-list-drawer-btn--primary {
                background: #1E3A8A;
                color: #fff;
                border-color: #1E3A8A;
            }
            .geogeo-list-drawer-btn--ghost {
                background: #fff;
                color: #6b7280;
                border-color: #e5e7eb;
            }
            .geogeo-list-drawer-share-channels {
                display: flex;
                justify-content: center;
                gap: 10px;
                margin-top: 12px;
                padding-top: 10px;
                border-top: 1px solid #eee;
            }
            .geogeo-list-drawer-share-channels.u-hidden {
                display: none !important;
            }
            .geogeo-list-drawer-share-channels .list-share-btn {
                width: 44px;
                height: 44px;
                min-width: 44px;
                min-height: 44px;
            }
            .geogeo-list-mobile-drawer-mount .data-view-toggle-accent-header .data-view-toggle-label {
                display: none;
            }
            .geogeo-list-mobile-drawer-mount .data-view-toggle-accent,
            .geogeo-list-mobile-drawer-mount .data-view-toggle-accent-header {
                margin: 0;
                padding: 0;
                border: none;
            }
            .geogeo-list-mobile-drawer-mount .data-view-toggle-accent-header {
                justify-content: flex-end;
            }
            /* Affichage drawer: plain words (same pattern as Ordonner) */
            .geogeo-list-mobile-drawer-mount .data-view-tout-afficher-btn {
                min-height: 44px;
                padding: 8px 2px;
                font-size: 13px;
                font-weight: 600;
                font-family: var(--font-ui);
                color: #16a34a;
                background: transparent;
                border: none;
                border-radius: 0;
                box-shadow: none;
            }
            .geogeo-list-mobile-drawer-mount .data-view-tout-afficher-btn:hover {
                background: transparent;
                color: #15803d;
                filter: none;
                text-decoration: underline;
                text-underline-offset: 4px;
            }
            .geogeo-list-mobile-drawer-mount .data-view-buttons {
                gap: 0;
                width: 100%;
            }
            .geogeo-list-mobile-drawer-mount .data-view-row {
                display: flex;
                flex-wrap: wrap;
                align-items: center;
                justify-content: center;
                gap: 16px 20px;
                width: 100%;
                margin: 0;
                padding: 8px 4px;
            }
            .geogeo-list-mobile-drawer-mount .data-view-row .data-view-btn,
            .geogeo-list-mobile-drawer-mount .data-view-accent-header-row .data-view-btn {
                flex: 0 1 auto;
                min-width: 0;
                min-height: 44px;
                margin: 0;
                padding: 8px 2px;
                gap: 0;
                justify-content: center;
                align-items: center;
                border: none;
                border-radius: 0;
                background: transparent;
                box-shadow: none;
                font-size: 14px;
                font-weight: 500;
                font-family: var(--font-ui);
                line-height: 1.2;
                color: #64748b;
                cursor: pointer;
                text-decoration: none;
                white-space: nowrap;
                transition: color 0.15s ease, font-weight 0.15s ease;
                transform: none;
                -webkit-appearance: none;
                appearance: none;
            }
            .geogeo-list-mobile-drawer-mount .data-view-row .data-view-btn .data-view-icon,
            .geogeo-list-mobile-drawer-mount .data-view-accent-header-row .data-view-btn .data-view-icon {
                display: none !important;
            }
            .geogeo-list-mobile-drawer-mount .data-view-row .data-view-btn:hover,
            .geogeo-list-mobile-drawer-mount .data-view-accent-header-row .data-view-btn:hover {
                background: transparent;
                color: #1e3a8a;
                border-color: transparent;
                transform: none;
            }
            .geogeo-list-mobile-drawer-mount .data-view-row .data-view-btn.active,
            .geogeo-list-mobile-drawer-mount .data-view-accent-header-row .data-view-btn.active {
                background: transparent;
                color: #1e3a8a;
                border-color: transparent;
                font-weight: 700;
                text-decoration: underline;
                text-underline-offset: 4px;
                text-decoration-thickness: 2px;
            }
            .geogeo-list-mobile-drawer-mount .data-view-btn:hover::before,
            .geogeo-list-mobile-drawer-mount .data-view-btn:hover::after,
            .geogeo-list-mobile-drawer-mount .data-view-tout-afficher-btn:hover::before,
            .geogeo-list-mobile-drawer-mount .data-view-tout-afficher-btn:hover::after {
                content: none !important;
                display: none !important;
            }
            .geogeo-list-mobile-drawer-mount .list-order-label,
            .geogeo-list-mobile-drawer-mount #list-order-switch {
                display: none !important;
            }
            .geogeo-list-mobile-drawer-mount .list-order-toggle-accent,
            .geogeo-list-mobile-drawer-mount .list-order-toggle {
                margin: 0;
                padding: 0;
                border: none;
            }
            /* Ordonner drawer: plain word choices (no pill / segmented control chrome) */
            .geogeo-list-mobile-drawer-mount .list-order-segments {
                display: flex;
                flex-wrap: wrap;
                align-items: center;
                justify-content: center;
                gap: 20px;
                width: 100%;
                min-height: 44px;
                margin: 0;
                padding: 8px 4px;
                border: none;
                border-radius: 0;
                overflow: visible;
                background: transparent;
                box-shadow: none;
            }
            .geogeo-list-mobile-drawer-mount .list-order-segments .list-order-segment {
                flex: 0 1 auto;
                min-height: 44px;
                margin: 0;
                padding: 8px 2px;
                border: none;
                border-radius: 0;
                background: transparent;
                box-shadow: none;
                font-size: 14px;
                font-weight: 500;
                font-family: var(--font-ui);
                line-height: 1.2;
                color: #64748b;
                cursor: pointer;
                text-decoration: none;
                transition: color 0.15s ease, font-weight 0.15s ease;
            }
            .geogeo-list-mobile-drawer-mount .list-order-segments .list-order-segment:hover {
                color: #1e3a8a;
            }
            .geogeo-list-mobile-drawer-mount .list-order-segments .list-order-segment[aria-pressed="true"],
            .geogeo-list-mobile-drawer-mount .list-order-segments .list-order-segment.active {
                background: transparent;
                color: #1e3a8a;
                font-weight: 700;
                text-decoration: underline;
                text-underline-offset: 4px;
                text-decoration-thickness: 2px;
            }
            .list-header-mobile-toolbar,
            .list-mobile-columns-toggle,
            .list-share-mobile-trigger {
                display: none !important;
            }

            /* Affichage only: frameless compact sheet + 4-column word grid (3 cols @360px) */
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns .geogeo-list-mobile-drawer-sheet {
                max-height: none;
                height: auto;
                overflow: hidden;
                padding: 8px 12px 10px;
                border-radius: 0;
                box-shadow: none;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .list-header-card {
                margin: 0;
                border: none;
                border-radius: 0;
                background: transparent;
                padding: 0;
                box-shadow: none;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-toggle-accent-header {
                display: flex;
                flex-wrap: nowrap;
                align-items: center;
                justify-content: flex-end;
                gap: 12px;
                width: 100%;
                margin-bottom: 6px;
                padding-left: 6px;
                padding-right: 2px;
                box-sizing: border-box;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-toggle-accent-header
                .data-view-tout-afficher-btn {
                flex-shrink: 0;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-buttons {
                display: grid;
                grid-template-columns: repeat(4, minmax(0, 1fr));
                gap: 6px 4px;
                width: 100%;
                margin: 0;
                padding: 0;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-row {
                display: contents;
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-row
                .data-view-btn {
                justify-content: center;
                text-align: center;
                min-height: 36px;
                padding: 4px 2px;
                font-size: 12px;
            }
            @media (max-width: 360px) {
                .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                    .geogeo-list-mobile-drawer-mount
                    .data-view-buttons {
                    grid-template-columns: repeat(3, minmax(0, 1fr));
                }
            }
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-btn:hover::before,
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-btn:hover::after,
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-tout-afficher-btn:hover::before,
            .geogeo-list-mobile-drawer.geogeo-list-mobile-drawer--panel-columns
                .geogeo-list-mobile-drawer-mount
                .data-view-tout-afficher-btn:hover::after {
                content: none !important;
                display: none !important;
            }
        }

        /* Mobile-only list stats strip (desktop keeps stats in list-header center card) */
        .list-mobile-stats-bar {
            display: none;
        }
        /* Ordonner word segments: drawer-only (desktop keeps the switch) */
        .list-order-segments,
        .list-mobile-columns-toggle,
        .list-share-mobile-trigger {
            display: none;
        }
        .list-order-segment {
            font-family: var(--font-ui);
        }

        /* Desktop: mobile toolbar wrapper is layout-neutral (Ordonner + Partager stay side-by-side) */
        @media (min-width: 769px) {
            .list-header-mobile-toolbar {
                display: contents;
            }
            .list-mobile-stats-bar {
                display: none !important;
            }
        }

        /* Mobile FABs + sheet overlay + list chrome: hidden on desktop */
        @media (min-width: 769px) {
            .geogeo-mobile-fab,
            .geogeo-mobile-sheet-overlay,
            .geogeo-list-mobile-bar,
            .geogeo-list-mobile-drawer {
                display: none !important;
            }
            .filter-toggle-btn {
                display: none !important;
            }
            .filter-overlay {
                display: none !important;
            }
        }

        /* Desktop map view: bottom-center list FAB (mobile round chrome, icon only) */
        .geogeo-desktop-map-fab {
            display: none;
        }
        @media (min-width: 769px) {
            .geogeo-desktop-map-fab {
                display: flex;
                align-items: center;
                justify-content: center;
                position: fixed;
                left: 50%;
                transform: translateX(-50%);
                bottom: calc(var(--geogeo-pv-ticker-height, 45px) + 16px);
                width: 56px;
                height: 56px;
                border-radius: 50%;
                border: 3px solid #1E3A8A;
                background: #7BEC7B;
                color: #1E3A8A;
                box-shadow: 0 4px 14px rgba(30, 58, 138, 0.28);
                cursor: pointer;
                z-index: 1006;
                padding: 0;
                transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
            }
            .geogeo-desktop-map-fab:hover {
                background: #1E3A8A;
                transform: translateX(-50%) translateY(-1px);
                box-shadow: 0 6px 16px rgba(30, 58, 138, 0.35);
            }
            .geogeo-desktop-map-fab-icon {
                width: 26px;
                height: 26px;
                object-fit: contain;
                pointer-events: none;
            }
            .geogeo-desktop-map-fab:hover .geogeo-desktop-map-fab-icon {
                filter: brightness(0) invert(1);
            }
            /* Map view only — hide once list mode is open */
            body.geogeo-list-mode .geogeo-desktop-map-fab {
                display: none !important;
            }
        }

        .distance-slider-container {
            padding: 10px 0;
        }
        
        .distance-slider {
            position: relative;
            width: 100%;
        }
        
        .slider {
            width: 100%;
            height: 6px;
            border-radius: 3px;
            background: #e5e7eb;
            outline: none;
            -webkit-appearance: none;
            appearance: none;
        }
        
        .slider:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            background: #d1d5db;
        }
        
        .slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: #7BEC7B; /* Bright green */
            cursor: pointer;
            border: 2px solid #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        .slider:disabled::-webkit-slider-thumb {
            background: #9ca3af;
            cursor: not-allowed;
        }
        
        .slider::-moz-range-thumb {
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: #7BEC7B; /* Bright green */
            cursor: pointer;
            border: 2px solid #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        .slider:disabled::-moz-range-thumb {
            background: #9ca3af;
            cursor: not-allowed;
        }
        
        .slider-labels {
            display: flex;
            justify-content: space-between;
            margin-top: 8px;
            font-size: 12px;
            color: #6b7280;
        }
        
        .slider-labels span {
            font-weight: 500;
        }
        
        .filter-btn {
            padding: 8px 16px;
            border: 2px solid #e5e7eb;
            background: #f8f9fa;
            border-radius: 20px;
            cursor: pointer;
            font-size: 12px;
            font-weight: 500;
            transition: all 0.3s ease;
            color: #374151;
        }

        .filter-btn.filter-btn--pro-notice {
            position: relative;
            padding-right: 28px;
        }

        .filter-btn .notice-type-pro-ribbon {
            position: absolute;
            top: -6px;
            right: -4px;
            width: 18px;
            height: 18px;
            pointer-events: none;
        }
        
        /* Category-specific idle states: transparent border with category color */
        .filter-btn[data-category="professional"] {
            border-color: rgba(30, 58, 138, 0.6);
            background: transparent;
        }
        
        .filter-btn[data-category="services"] {
            border-color: rgba(91, 141, 239, 0.6);
            background: transparent;
        }
        .filter-btn[data-category="services-lies-aux-biens"] {
            border-color: rgba(104, 81, 117, 0.6);
            background: transparent;
        }
        .filter-btn[data-category="technical"] {
            border-color: rgba(123, 236, 123, 0.6);
            background: transparent;
        }
        
        .filter-btn[data-category="construction"] {
            border-color: rgba(46, 139, 87, 0.6);
            background: transparent;
        }
        
        .filter-btn[data-category="goods"] {
            border-color: rgba(20, 124, 236, 0.6);
            background: transparent;
        }
        
        .filter-btn[data-category="other"] {
            border-color: rgba(107, 114, 128, 0.6);
            background: transparent;
        }
        
        .filter-btn[data-category="all"] {
            border-color: rgba(30, 58, 138, 0.6);
            background: transparent;
        }
        
        .filter-btn:hover {
            background: #f8f9fa;
            transform: translateY(-1px);
        }
        
        /* Category buttons hover: keep transparent background */
        .filter-btn:hover[data-category] {
            background: transparent;
        }
        
        /* Category-specific hover: border becomes opaque */
        .filter-btn:hover[data-category="professional"] {
            border-color: #1E3A8A;
        }
        
        .filter-btn:hover[data-category="services"] {
            border-color: #5B8DEF;
        }
        .filter-btn:hover[data-category="services-lies-aux-biens"] {
            border-color: rgb(104, 81, 117);
        }
        .filter-btn:hover[data-category="technical"] {
            border-color: #7BEC7B;
        }
        
        .filter-btn:hover[data-category="construction"] {
            border-color: #2E8B57;
        }
        
        .filter-btn:hover[data-category="goods"] {
            border-color: #147CEC;
        }
        
        .filter-btn:hover[data-category="other"] {
            border-color: #6B7280;
        }
        
        .filter-btn:hover[data-category="all"] {
            border-color: #1E3A8A;
        }
        
        .filter-btn.active {
            background: #1E3A8A;
            color: white;
            border-color: #1E3A8A;
        }
        
        .filter-btn.active[data-category="professional"] {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        
        .filter-btn.active[data-category="services"] {
            background: #5B8DEF;
            border-color: #5B8DEF;
        }
        .filter-btn.active[data-category="services-lies-aux-biens"] {
            background: rgb(104, 81, 117);
            border-color: rgb(104, 81, 117);
        }
        .filter-btn.active[data-category="technical"] {
            background: #7BEC7B;
            border-color: #7BEC7B;
            color: #fff;
        }
        
        .filter-btn.active[data-category="construction"] {
            background: #2E8B57;
            border-color: #2E8B57;
        }
        
        .filter-btn.active[data-category="goods"] {
            background: #147CEC;
            border-color: #147CEC;
        }
        
        .filter-btn.active[data-category="other"] {
            background: #6B7280;
            border-color: #6B7280;
        }
        
        .filter-btn.active[data-category="all"] {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        
        /* Tag filter: same size as category buttons (filter-btn) */
        .tag-filter-btns { display: flex; flex-direction: column; gap: 6px; }
        .tag-filter-row { display: flex; flex-wrap: wrap; gap: 6px; }
        .tag-filter-btn {
            display: inline-block;
            padding: 8px 16px;
            border-radius: 6px;
            font-size: 12px;
            font-weight: 500;
            border: none;
            outline: none;
            cursor: pointer;
            transition: opacity 0.2s, box-shadow 0.2s;
        }
        .tag-filter-btn { opacity: 0.8; } /* 20% transparent idle */
        .tag-filter-btn:hover:not(.active) { opacity: 0.65; } /* 35% transparent hover */
        .tag-filter-btn.active,
        .tag-filter-btn.active:hover { opacity: 0.3; box-shadow: none; } /* 70% transparent selected */
        /* Per-tag colors live in the combined design-spec block near .tender-tag (top of file) */
        
        /* Status filter count badges */
        .filter-count {
            display: inline-block;
            margin-left: 6px;
            padding: 2px 6px;
            background: rgba(30, 58, 138, 0.15);
            border-radius: 10px;
            font-size: 10px;
            font-weight: 600;
            color: #1E3A8A;
            min-width: 20px;
            text-align: center;
        }
        
        .filter-btn.active .filter-count {
            background: rgba(255, 255, 255, 0.3);
            color: white;
        }
        
        /* List Mode Styles */
        .list-container {
            display: none;
            position: absolute;
            top: 90px;
            left: 10px;
            right: 10px;
            bottom: 10px;
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            z-index: 1000;
            overflow: hidden;
            flex-direction: column;
            /*
             * Fallback only: JS syncListFilterBladeOffset() measures filter body +
             * ~10% of prior visual gap (accounts for .list-content 10px pad).
             * Fallback ≈ min body 350 - 8 (pad-compensated keep).
             */
            --list-filter-right-edge-offset: 342px;
            /* Shared horizontal shift for elements that should be bumped by filter panel. */
            --list-filter-shift: 0px;
        }
        /* Mobile list: full-bleed over the map (must come after desktop insets above). */
        @media (max-width: 768px) {
            .list-container,
            body.geogeo-mobile-list-mode .list-container {
                position: fixed;
                top: var(--geogeo-mobile-header-height);
                left: 0;
                right: 0;
                bottom: var(--geogeo-mobile-fab-bottom-inset);
                width: auto;
                max-width: none;
                border-radius: 0;
                box-shadow: none;
            }
            body.geogeo-mobile-list-mode .list-container {
                bottom: var(--geogeo-list-mobile-stack-bottom);
            }
        }
        /*
         * List must stay BELOW filter/favoris chrome (incl. peek tabs).
         * Collapsed panel bodies use pointer-events:none; tabs stay hit-targets.
         * (Raising list to 1004 buried the tabs — do not restore that.)
         */
        body.geogeo-list-mode .list-container {
            z-index: 1000 !important;
        }
        body.geogeo-list-mode .filter-controls,
        body.geogeo-list-mode .favorites-sidebar,
        body.geogeo-list-mode .pv-councils-sidebar {
            z-index: 1010 !important;
        }
        body.geogeo-list-mode .filter-controls.filter-collapsed .filter-collapse-tab,
        body.geogeo-list-mode .favorites-sidebar.favorites-collapsed .favorites-sidebar-tab,
        body.geogeo-list-mode .pv-councils-sidebar.pv-councils-collapsed .pv-councils-sidebar-tab {
            z-index: 1011 !important;
            pointer-events: auto !important;
        }
        .list-container.list-filters-open {
            --list-filter-shift: var(--list-filter-right-edge-offset);
        }
        /* Row that holds only the tenders + blade; header and pagination stay full width */
        .list-content-row {
            display: flex;
            flex-direction: row;
            flex: 1;
            min-height: 0;
            overflow: hidden;
        }
        /*
         * Blade: left-tier spacer so filter overlay sits here; tenders start after it.
         * No width transition — animating width reflows every tender card each frame (sluggish).
         * Filter panel still slides via its own transform; blade snaps to measured width.
         */
        .list-filter-blade {
            width: var(--list-filter-shift);
            min-height: 100%;
            flex-shrink: 0;
            overflow: hidden;
        }
        .list-content-row .list-content {
            flex: 1;
            min-width: 0;
            overflow-x: hidden;
        }
        
        /* List header: three zones; optional full-area background image sits under all zones. */
        .list-header {
            display: flex;
            justify-content: space-between;
            align-items: stretch;
            gap: 20px;
            padding: 10px 15px;
            margin-bottom: 0;
            border-bottom: 1px solid #eee;
            background-color: #f8f9fa;
            position: relative;
            isolation: isolate;
            /* Path is relative to this CSS file (assets/map_shell/), not the HTML page */
            --list-header-bg-image: url('../ribbon_banner_list_view.png');
        }
        .list-header::before {
            content: "";
            position: absolute;
            inset: 0;
            z-index: 0;
            background-image: var(--list-header-bg-image);
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            opacity: 0.5;
            pointer-events: none;
        }
        .list-header > * {
            position: relative;
            z-index: 1;
        }
        .list-header-zone-left {
            flex: 0 0 auto;
            min-width: 0;
            display: flex;
            align-items: stretch;
            justify-content: flex-start;
        }
        .list-header-zone-center {
            flex: 0 0 auto;
            display: flex;
            align-items: stretch;
            justify-content: center;
        }
        .list-header-zone-right {
            flex: 0 0 auto;
            min-width: 0;
            display: flex;
            align-items: stretch;
            justify-content: flex-end;
            gap: 24px;
            margin-left: -10px; /* 50% closer to center (header gap is 20px) */
        }
        
        .list-right-section {
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 10px;
            flex: 0 0 auto;
            margin-right: 20px;
            /* Stay on the right without shifting the centered pagination cluster */
            position: absolute;
            right: 0;
            top: 50%;
            transform: translateY(-50%);
            z-index: 1;
        }
        
        .list-controls {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            gap: 10px;
            margin-bottom: 0;
        }
        
        .email-button {
            padding: 12px 24px;
            background: #7BEC7B;
            color: #1E3A8A;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.3s ease;
            line-height: 1.2;
            text-align: center;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .email-button:hover {
            background: #1E3A8A;
            color: white;
            transform: translateY(-1px);
            box-shadow: 0 4px 8px rgba(30, 58, 138, 0.3);
        }
        
        .email-button:hover .auth-icon-normal {
            opacity: 0;
        }
        
        .email-button:hover .auth-icon-hover {
            opacity: 1;
        }
        
        .plan-button-text {
            white-space: nowrap;
        }
        
        #plan-button-container {
            position: relative;
            display: inline-block;
        }
        
        /* List view image card
           Outer card = list-header-card (same top/bottom as others)
           Inner wrapper = original image sizing + hover swap (no squish) */
        .list-view-image-card {
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }
        .list-view-image-wrapper {
            position: relative;
            display: inline-block;
            flex-shrink: 0;
            align-self: center;
        }
        .list-view-pro-image {
            height: 120px;
            width: auto;
            object-fit: contain;
            display: block;
        }
        .list-view-pro-image-normal { opacity: 1; }
        .list-view-pro-image-hover {
            position: absolute;
            top: 0;
            left: 0;
            height: 100%;
            width: auto;
            opacity: 0;
            pointer-events: none;
        }
        /* Center hit area – 30% less wide (24.5%), height 35%, centered */
        .list-view-image-hit {
            position: absolute;
            left: 37.75%;
            top: 32.5%;
            width: 24.5%;
            height: 35%;
            pointer-events: auto;
            cursor: default;
            z-index: 1;
        }
        .list-view-image-wrapper:has(.list-view-image-hit:hover) .list-view-pro-image-normal {
            opacity: 0;
        }
        .list-view-image-wrapper:has(.list-view-image-hit:hover) .list-view-pro-image-hover {
            opacity: 1;
        }
        
        
        /* Refresh button styles for list items */
        .list-refresh-btn {
            display: inline-block;
            width: 16px;
            height: 16px;
            margin-left: 6px;
            cursor: pointer;
            opacity: 0.6;
            transition: opacity 0.2s, transform 0.2s;
            vertical-align: middle;
            background-image: url('../maj.svg');
            background-size: contain;
            background-repeat: no-repeat;
            background-position: center;
        }
        
        .list-refresh-btn:hover {
            opacity: 1;
            transform: rotate(180deg);
        }
        
        .list-refresh-btn.refreshing {
            animation: spin 1s linear infinite;
            opacity: 1;
        }
        
        @keyframes spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }
        
        /* Flash green animation for list items (same as popup) */
        .list-item .flash-green {
            animation: flashGreen 1.2s ease-in-out;
        }
        
        .csv-export-button {
            padding: 12px 24px;
            background: #7BEC7B;
            color: #1E3A8A;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.3s ease;
            line-height: 1.2;
            text-align: center;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .csv-export-button:hover {
            background: #1E3A8A;
            color: white;
            transform: translateY(-1px);
            box-shadow: 0 4px 8px rgba(30, 58, 138, 0.3);
        }
        
        .csv-export-button .csv-export-icon-wrap {
            position: relative;
            width: 18px;
            height: 18px;
            flex-shrink: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
        }
        .csv-export-button .csv-export-icon-normal,
        .csv-export-button .csv-export-icon-hover {
            position: absolute;
            top: 0;
            left: 0;
            width: 18px;
            height: 18px;
            object-fit: contain;
            transition: opacity 0.2s ease;
        }
        .csv-export-button .csv-export-icon-normal { opacity: 1; }
        .csv-export-button .csv-export-icon-hover { opacity: 0; }
        .csv-export-button:hover .csv-export-icon-normal { opacity: 0; }
        .csv-export-button:hover .csv-export-icon-hover { opacity: 1; }
        
        .csv-export-count {
            background: rgba(255, 255, 255, 0.3);
            padding: 2px 8px;
            border-radius: 12px;
            font-size: 12px;
            font-weight: 700;
        }
        
        .email-input-container {
            display: flex;
            align-items: center;
            justify-content: center;
            margin: 15px 0;
        }
        
        .email-container {
            display: flex;
            align-items: center;
        }
        
        .email-input {
            width: 250px;
            padding: 10px 15px;
            border: 2px solid #1E3A8A;
            border-radius: 25px;
            font-size: 14px;
            background: #f8f9fa;
            color: #333;
            transition: all 0.3s ease;
            font-family: var(--font-ui);
        }
        
        .email-input::placeholder {
            color: #6b7280;
        }
        
        .email-input:hover {
            border-color: #147CEC;
            background: #f0f8ff;
            transform: translateY(-1px);
        }
        
        .email-input:focus {
            outline: none;
            border-color: #147CEC;
            background: white;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
            transform: translateY(-1px);
        }
        
        .email-icon {
            font-size: 20px;
            color: #1E3A8A;
            margin-right: 12px;
            transition: color 0.3s ease;
        }
        
        .email-container:hover .email-icon {
            color: #147CEC;
        }
        
        /* Stats + Export group: elements stacked and centered on each other */
        .list-header-stats-group {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }
        .list-header-stats-group .list-stats {
            align-self: center;
        }
        .list-stats {
            flex: 0 0 auto;
            margin-bottom: 0;
            align-self: flex-end;
        }
        
        .list-header-stats-group .stats-display {
            align-items: center;
        }
        .stats-display {
            display: flex;
            flex-direction: column;
            gap: 8px;
            align-items: flex-end;
        }
        
        .list-header-stats-group .stat-item {
            text-align: center;
        }
        /* Tender count in list header: bigger than other stat (same league as Afficher/Masquer label) */
        .list-header-stats-group .list-pin-count,
        .list-header-stats-group .list-pin-count .filter-pin-count-number,
        .list-header-stats-group .list-pin-count .filter-pin-count-suffix {
            font-size: 22px;
            font-weight: 700;
        }
        /* Ensure space between number and "appels d'offres" in list header */
        .list-header-stats-group .list-pin-count .filter-pin-count-suffix {
            margin-left: 0.2em;
        }
        /* Keep "X appels d'offres" on one line on the center card */
        .list-header-stats-group .list-pin-count {
            white-space: nowrap;
        }
        .stat-item {
            font-size: 18px;
            color: #1E3A8A;
            font-weight: 700;
            text-align: right;
        }
        
        .value-amount {
            color: #147CEC;
        }
        
        
        /* List header cards: semi-transparent white with dark-blue accent border */
        .list-header-card {
            background: rgba(255, 255, 255, 0.64);
            border: 2px solid #1E3A8A;
            border-radius: 16px;
            padding: 10px 14px;
            flex: 0 0 auto;
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            justify-content: flex-start;
        }
        /* Cards in zones: same height, centered content where needed */
        .list-header-zone-center .list-header-card {
            align-items: center;
        }
        /* Descriptive row: same height so labels sit on one horizontal line */
        .list-header .data-view-toggle-accent-header,
        .list-header .list-share-card-header {
            min-height: 40px;
            display: flex;
            align-items: center;
        }
        .list-header .list-header-stats-group .stats-display .stat-item.list-pin-count {
            min-height: 40px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .list-header .list-order-toggle .list-order-label {
            min-height: 40px;
            margin-bottom: 0;
            display: inline-flex;
            align-items: center;
        }
        .list-header .list-order-toggle .list-order-switch {
            margin-top: 8px;
        }
        .list-header .data-view-toggle-accent,
        .list-header .list-order-toggle-accent {
            margin-top: 0;
        }
        .list-header .list-header-card {
            min-width: 0;
        }
        /* Ordonner and Share: trim to content height (no stretch), slightly less padding */
        .list-header-zone-right .list-header-card {
            flex: 0 0 auto;
            align-self: flex-start;
            padding-top: 6px;
            padding-bottom: 6px;
        }
        .list-header .data-view-toggle-accent,
        .list-header .data-view-toggle {
            flex: 0 1 auto;
            min-width: 0;
        }
        .list-header .list-header-stats-group,
        .list-header .list-order-toggle-accent {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
        }
        /* Partager la liste: icon + descriptive, then 3 buttons */
        .list-share-card-header {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 8px;
        }
        .list-share-card-header .list-share-icon {
            width: 24px;
            height: 24px;
            flex-shrink: 0;
            object-fit: contain;
        }
        .list-share-card-label {
            font-size: 19px;
            font-weight: 600;
            white-space: nowrap;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }
        @supports not (-webkit-background-clip: text) {
            .list-share-card-label {
                color: #1E3A8A;
                -webkit-text-fill-color: #1E3A8A;
            }
        }
        /* Share card: center icon, label and buttons left-right within the card */
        .list-share-card {
            align-items: center;
        }
        .list-share-buttons {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
            justify-content: center;
        }
        .list-share-btn {
            width: 42px;
            height: 42px;
            padding: 0;
            border: none;
            border-radius: 8px;
            background: transparent;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            flex-shrink: 0;
        }
        .list-share-btn:hover {
            background: rgba(30, 58, 138, 0.1);
        }
        .list-share-btn img {
            width: 30px;
            height: 30px;
            object-fit: contain;
        }
        /* LinkedIn and Mail: scale up 20% (36px) so they match the Facebook icon */
        #list-share-linkedin img,
        #list-share-email img {
            width: 36px;
            height: 36px;
            object-fit: contain;
            object-position: center;
        }
        /* Afficher/Masquer wrapper: no blue rectangle accent, just layout */
        .data-view-toggle-accent {
            border: none;
            border-radius: 0;
            padding: 0;
            position: static;
            margin-top: 5px;
            margin-bottom: 0;
        }
        .data-view-toggle-accent-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            margin-bottom: 8px;
        }
        .data-view-toggle-accent-header .data-view-toggle-label {
            margin-bottom: 0;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            cursor: pointer;
            transition: opacity 0.2s ease;
        }
        .data-view-toggle-accent-header .data-view-toggle-label:hover {
            opacity: 0.7;
        }
        .data-view-toggle-accent-header .data-view-toggle-label-icon {
            width: 29px;
            height: 29px;
            flex-shrink: 0;
            object-fit: contain;
        }
        .data-view-tout-afficher-btn {
            flex-shrink: 0;
            padding: 5px 10px;
            font-size: 10px;
            font-weight: 600;
            color: #fff;
            background: #22c55e;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-family: var(--font-ui);
            transition: background 0.2s ease, filter 0.2s ease;
        }
        .data-view-tout-afficher-btn:hover {
            background: #16a34a;
            filter: brightness(1.05);
        }
        .data-view-tout-afficher-btn:focus {
            outline: none;
        }
        .list-header .list-order-toggle-accent {
            flex: 0 0 auto;
        }
        /* Ordonner wrapper: no blue rectangle accent, just layout */
        .list-order-toggle-accent {
            border: none;
            border-radius: 0;
            padding: 0;
            margin-top: 5px;
            margin-bottom: 0;
        }
        .list-header .list-order-toggle-accent {
            margin-top: 0;
        }
        .list-order-toggle-accent .list-order-toggle {
            margin-bottom: 0;
        }
        /* List order: label "Ordonner" above switch (same text style as Afficher/Masquer); switch centered under label */
        .list-order-toggle {
            display: flex;
            flex-direction: column;
            align-items: center;
            margin-bottom: 12px;
        }
        .list-order-toggle .list-order-label {
            margin-bottom: 8px;
            display: inline-flex;
            align-items: center;
            gap: 8px;
            cursor: pointer;
            transition: opacity 0.2s ease;
        }
        .list-header .list-order-toggle .list-order-label {
            margin-bottom: 0;
        }
        .list-order-toggle .list-order-label:hover {
            opacity: 0.7;
        }
        .list-order-toggle .list-order-label-icon {
            width: 36px;
            height: 36px;
            flex-shrink: 0;
            object-fit: contain;
        }
        /* Track + thumb – white track (soft-gates), navy border/thumb */
        .list-order-switch {
            position: relative;
            width: 40px;
            height: 20px;
            border-radius: 20px;
            background: #ffffff;
            border: 2px solid #1E3A8A;
            cursor: pointer;
            flex-shrink: 0;
        }
        .list-order-switch .list-order-thumb {
            position: absolute;
            top: 2px;
            left: 2px;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background: #1E3A8A;
            transition: transform 0.2s ease;
        }
        .list-order-switch.mode-ending-soon .list-order-thumb {
            transform: translateX(24px);
        }
        /* Two simultaneous tooltips on left and right of switch; arrow on side pointing toward switch */
        .list-order-switch .list-order-tooltip {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            padding: 6px 10px;
            background: #1E3A8A;
            color: white;
            font-size: 11px;
            font-weight: 600;
            border-radius: 4px;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.2s ease;
            z-index: 2147483000;
            font-family: var(--font-ui);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
        }
        /* Left tooltip: to the left of switch, arrow on right side pointing toward switch */
        .list-order-switch .list-order-tooltip-left {
            right: 100%;
            margin-right: 10px;
        }
        .list-order-switch .list-order-tooltip-left::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 100%;
            transform: translateY(-50%);
            border: 5px solid transparent;
            border-left-color: #1E3A8A;
        }
        /* Right tooltip: to the right of switch, arrow on left side pointing toward switch */
        .list-order-switch .list-order-tooltip-right {
            left: 100%;
            margin-left: 10px;
        }
        .list-order-switch .list-order-tooltip-right::after {
            content: '';
            position: absolute;
            top: 50%;
            right: 100%;
            transform: translateY(-50%);
            border: 5px solid transparent;
            border-right-color: #1E3A8A;
        }
        .list-order-switch:hover .list-order-tooltip {
            opacity: 1;
        }
        
        /* Data View Toggle Styles (inner content; accent wrapper is .data-view-toggle-accent) */
        .data-view-toggle {
            margin-top: 0;
            margin-bottom: 0;
        }
        
        .data-view-toggle-label {
            font-size: 19px;  /* Afficher/Masquer section 20% smaller */
            font-weight: 600;
            white-space: nowrap;
            font-family: var(--font-ui);
            /* Gradient effect: same as banner text */
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;  /* Fallback for browsers that don't support gradient text */
            margin-bottom: 10px;
        }
        
        /* Fallback for browsers without gradient text support */
        @supports not (-webkit-background-clip: text) {
            .data-view-toggle-label {
                color: #1E3A8A;
                -webkit-text-fill-color: #1E3A8A;
            }
        }
        
        .data-view-detail {
            font-size: 11px;
            color: #6B7280;
            margin-bottom: 10px;
            font-style: italic;
        }
        
        
        .data-view-buttons {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        
        .data-view-row {
            display: flex;
            flex-wrap: nowrap;
            gap: 6px;
            justify-content: flex-start;
            position: relative;
            padding-bottom: 0;
            width: 100%;
        }
        
        .data-view-row:last-child {
            padding-bottom: 0;
            margin-bottom: 0;
        }
        
        /* Equal-width buttons so both rows have the same overall length */
        .data-view-row .data-view-btn {
            flex: 1 1 0;
            min-width: 0;
            justify-content: center;
        }
        
        .data-view-btn {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 10px 16px;
            border: 2px solid #e5e7eb;
            background: #f8f9fa;
            border-radius: 16px;
            cursor: pointer;
            font-size: 12px;
            font-weight: 500;
            transition: all 0.3s ease;
            color: #374151;
            white-space: nowrap;
        }
        
        .data-view-btn:hover {
            background: #f0fdf4;
            border-color: #7BEC7B;
            transform: translateY(-1px);
        }
        
        /* Desktop list header: inactive Affichage chips stay glassy so banner shows through */
        @media (min-width: 769px) {
            .list-header .data-view-btn:not(.active) {
                background: rgba(255, 255, 255, 0.28);
                border-color: rgba(30, 58, 138, 0.32);
                backdrop-filter: blur(1px);
            }
            .list-header .data-view-btn:not(.active):hover {
                background: rgba(240, 253, 244, 0.45);
                border-color: #7BEC7B;
            }
        }
        
        .data-view-btn.active {
            background: #1E3A8A;
            color: white;
            border-color: #1E3A8A;
        }
        
        .data-view-btn.active:hover {
            background: #7BEC7B;
            border-color: #7BEC7B;
            color: #1E3A8A;
        }
        
        .data-view-icon {
            width: 13px;
            height: 13px;
            opacity: 0.8;
        }
        
        .data-view-btn.active .data-view-icon {
            opacity: 1;
            filter: brightness(0) saturate(100%) invert(100%); /* White */
        }
        
        .data-view-btn.active:hover .data-view-icon {
            filter: brightness(0) saturate(100%) invert(18%) sepia(52%) saturate(2500%) hue-rotate(210deg) brightness(0.92) contrast(1.1); /* Dark blue #1E3A8A */
        }
        /* Afficher/Masquer section custom tooltips: dark blue, above button */
        .data-view-btn,
        .data-view-tout-afficher-btn {
            position: relative;
        }
        .data-view-btn:hover::after,
        .data-view-tout-afficher-btn:hover::after {
            content: attr(data-tooltip);
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 8px;
            background: #1E3A8A;
            color: #fff;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 11px;
            white-space: nowrap;
            z-index: 2147483000;
            pointer-events: none;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        }
        .data-view-btn:hover::before,
        .data-view-tout-afficher-btn:hover::before {
            content: '';
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            margin-bottom: 3px;
            border: 5px solid transparent;
            border-top-color: #1E3A8A;
            z-index: 2147483000;
            pointer-events: none;
        }
        
        /* Pagination Wrapper - Contains both pagination and right controls */
        .pagination-wrapper {
            display: flex;
            justify-content: center;
            align-items: center;
            margin-top: 0;
            position: relative;
            padding-top: 10px;
            padding-bottom: 10px;
        }
        
        /* Bright green accent line above pagination (matches line below) */
        .pagination-wrapper::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: #7BEC7B;
        }
        
        .pagination-wrapper::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 2px;
            background: linear-gradient(to right, #7BEC7B, #7BEC7B);
            background-size: 100% 2px;
            background-repeat: no-repeat;
            background-position: 0 100%;
        }
        
        /* Pagination Styles - Stacked Layout */
        .pagination-container {
            text-align: center;
            position: relative;
            flex: 0 0 auto;
            display: flex;
            justify-content: center;
            max-width: 100%;
        }
        
        .pagination {
            display: flex;
            gap: 6px;
            align-items: center;
            flex-wrap: wrap;
            justify-content: flex-start;
        }
        /* Compact cluster (‹ Page N/M › + avis): centered on desktop + mobile */
        .pagination--mobile-compact {
            flex-wrap: nowrap;
            justify-content: center;
            gap: 8px;
            width: auto;
            max-width: 100%;
        }
        .pagination-mobile-nav {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
        }
        .pagination-mobile-total-count {
            display: none;
        }
        @media (max-width: 768px) {
            body.geogeo-mobile-list-mode .pagination-wrapper .pagination-mobile-total-count,
            body.geogeo-mobile-list-mode #pagination-controls .pagination-mobile-total-count {
                display: inline-flex;
                align-items: center;
                justify-self: center;
                font-size: 11px;
                font-weight: 700;
                line-height: 1;
                white-space: nowrap;
            }
            body.geogeo-mobile-list-mode .pagination-wrapper .pagination-mobile-total-count .filter-pin-count-number,
            body.geogeo-mobile-list-mode #pagination-controls .pagination-mobile-total-count .filter-pin-count-number {
                font-size: inherit;
                font-weight: 700;
            }
        }
        .pagination-mobile-summary {
            flex: 0 0 auto;
            text-align: center;
            font-size: 14px;
            font-weight: 700;
            color: #1E3A8A;
            white-space: nowrap;
            min-width: 0;
        }
        .pagination--mobile-compact .pagination-page-size {
            margin-left: 4px;
            font-size: 12px;
            white-space: nowrap;
            flex-shrink: 0;
        }
        .pagination--mobile-compact .pagination-arrow-btn {
            flex-shrink: 0;
        }
        .pagination-pages {
            display: inline-flex;
            gap: 6px;
            align-items: center;
            flex-wrap: wrap;
        }
        .pagination-meta {
            display: inline-flex;
            gap: 6px;
            align-items: center;
            transform: translateX(var(--pagination-meta-shift, 0px));
        }
        
        .pagination-page-size {
            margin-left: 18px;
            font-size: 18px;
            font-weight: 700;
            color: #1E3A8A;
            white-space: nowrap;
        }
        .pagination-page-size-number {
            color: #147CEC; /* match .value-amount blue */
            font-weight: 700;
        }
        .pagination-page-size-label {
            color: #1E3A8A; /* same dark blue as stat label */
            font-weight: 700;
        }
        
        
        .pagination-btn {
            padding: 8px 16px;
            border: 2px solid #e5e7eb;
            background: #f8f9fa;
            border-radius: 20px;
            cursor: pointer;
            font-size: 12px;
            font-weight: 500;
            transition: all 0.3s ease;
            color: #374151;
        }
        
        .pagination-btn:hover {
            background: #e6f3ff;
            border-color: #147CEC;
            transform: translateY(-1px);
        }
        
        .pagination-btn.active {
            background: #1E3A8A;
            color: white;
            border-color: #1E3A8A;
        }
        
        .pagination-arrow-btn {
            width: 36px;
            height: 36px;
            /* Halve the horizontal spacing around the end arrows */
            margin: 0 2.5px;
            border: 2px solid #e5e7eb;
            background: #f8f9fa !important;
            border-radius: 50%;
            cursor: pointer;
            font-size: 18px;
            font-weight: 700;
            line-height: 1;
            color: #1E3A8A !important;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            transition: all 0.3s ease;
        }
        
        .pagination-arrow-btn:hover {
            background: #e6f3ff;
            border-color: #147CEC;
            transform: translateY(-1px);
        }
        
        .pagination-arrow-btn:disabled {
            opacity: 1;
            background: #f8f9fa !important;
            border-color: #e5e7eb !important;
            color: #94a3b8 !important;
            cursor: not-allowed;
            transform: none;
        }
        
        .list-content {
            /* Fit the scroller exactly inside list-container (flex parent)
               so the last tender isn't clipped at the bottom. */
            height: 100%;
            overflow-y: auto;
            padding: 10px;
            scrollbar-color: #1E3A8A transparent;
            margin-top: 0;
        }
        .list-content::-webkit-scrollbar {
            width: 8px;
        }
        .list-content::-webkit-scrollbar-track {
            background: transparent;
        }
        .list-content::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 8px;
        }
        .list-content::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }

        /* Bottom-of-list pagination: centered cluster (‹ Page N/M › + avis), not full-width spread */
        .list-pagination-bottom {
            padding: 14px 16px 10px;
            margin: 4px 0 0;
            background: #fff;
            border-radius: 8px;
            border-top: 2px solid #7bec7b;
            display: flex;
            justify-content: center;
        }
        .list-pagination-bottom .pagination--mobile-compact {
            width: auto;
            max-width: 100%;
            flex-wrap: nowrap;
            justify-content: center;
            gap: 8px;
        }
        .list-pagination-bottom .pagination-mobile-summary {
            flex: 0 0 auto;
            text-align: center;
        }
        .list-pagination-bottom .pagination-page-size {
            margin-left: 4px;
        }

            /* Endcap row at the bottom of list mode (fake tender) */
            .list-endcap-item {
                padding: 15px 20px;
                margin-bottom: 0;
                background: #fff;
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                /* Keep consistent spacing inside the scroll area */
                border-bottom: 0;
            }
            /* Desktop: no bumper. Mobile list mode enables .list-endcap-spacer. */
            .list-endcap-spacer {
                display: none;
            }

        .list-endcap-btn {
            background: #1E3A8A; /* dark blue on idle */
            color: #fff;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            padding: 10px 18px;
            transition: all 0.3s ease;
            letter-spacing: 0.2px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
        }

        .list-endcap-btn:hover {
            background: #7BEC7B; /* bright green on hover */
            color: #1E3A8A;
            transform: translateY(-1px);
        }

        .list-endcap-btn:focus {
            outline: none;
        }

        .list-endcap-btn-icon {
            font-size: 18px;
            line-height: 1;
            font-weight: 700;
        }
        
        .list-item {
            position: relative;
            padding: 15px 128px 15px 62px;
            border-bottom: 1px solid #e5e7eb;
            cursor: pointer;
            transition: background 0.2s;
            border-radius: 8px;
            margin-bottom: 8px;
            background: white;
        }
        /* Desktop: keep ~10px clear of the right edge so filter/favoris tabs don't cover the clock. */
        @media (min-width: 769px) {
            .list-item {
                padding-right: 138px;
            }
            .list-item-action-rail {
                right: 10px;
            }
        }
        .list-item-body {
            display: flex;
            flex-direction: column;
            gap: 6px;
            max-width: 100%;
            overflow: visible;
            padding-right: 0;
        }
        .list-item-body > * {
            max-width: 100%;
        }
        .list-item-header-main {
            display: flex;
            flex-direction: column;
            gap: 6px;
            min-width: 0;
        }
        .list-item:hover {
            background: #f8f9fa;
            z-index: 2000;
        }
        
        .list-item:last-child {
            border-bottom: none;
        }
        
        /* Filter mismatch indicator - when item no longer matches filters after update */
        .list-item.filter-mismatch {
            background: #fff7ed;
            border-left: 4px solid #f59e0b;
            opacity: 0.85;
            position: relative;
        }
        
        .list-item.filter-mismatch:hover {
            background: #ffedd5;
            opacity: 1;
        }
        
        .filter-mismatch-badge {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: #f59e0b;
            color: white;
            padding: 4px 10px;
            border-radius: 12px;
            font-size: 11px;
            font-weight: 500;
            margin-top: 8px;
            animation: slideInBadge 0.3s ease-out;
        }
        
        .filter-mismatch-badge .dismiss-btn {
            background: rgba(255, 255, 255, 0.3);
            border: none;
            color: white;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            cursor: pointer;
            font-size: 12px;
            line-height: 1;
            padding: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s;
        }
        
        .filter-mismatch-badge .dismiss-btn:hover {
            background: rgba(255, 255, 255, 0.5);
        }
        
        @keyframes slideInBadge {
            from {
                opacity: 0;
                transform: translateY(-5px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        .list-item-title {
            font-weight: 600;
            font-size: 16px;
            margin: 0;
            color: #1E3A8A;
            word-break: break-word;
            overflow-wrap: anywhere;
            white-space: normal;
            display: flex;
            align-items: flex-start;
            gap: 8px;
        }
        
        .list-item-details {
            font-size: 14px;
            color: #374151;
            margin: 0;
            display: flex;
            align-items: flex-start;
            gap: 8px;
        }
        .list-item-text {
            flex: 1;
            min-width: 0;
            overflow-wrap: anywhere;
            word-break: break-word;
        }
        
        /* Equal vertical rhythm: title / org / status… / link share body gap. */
        .list-item-bottom-rows {
            margin: 0;
            display: flex;
            flex-direction: column;
            gap: 6px;
        }
        .list-item-link-row,
        .list-item-actions,
        .list-item-actions--details-only {
            margin: 0;
        }
        /* Shrink-wrap hit target to the label (not full row) — no visible chrome. */
        .list-item-link-row a.list-item-link,
        a.list-item-link {
            color: #147CEC;
            text-decoration: none;
            font-size: 14px;
            font-weight: 700;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            width: fit-content;
            max-width: 100%;
            box-sizing: border-box;
            padding: 0;
            border: none;
            background: transparent;
            line-height: 1.2;
        }
        .list-item-link .list-icon {
            margin-right: 0;
            flex: 0 0 auto;
        }
        .list-item-link .list-item-link-label {
            flex: 0 1 auto;
            min-width: 0;
        }
        .list-item-link-row a.list-item-link:hover,
        a.list-item-link:hover {
            color: #1E3A8A;
            text-decoration: underline;
        }
        .list-item-tags-row {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 4px 8px;
            margin: 0;
            /* Align with icon column (same start as row icons). */
            padding-left: 0;
            box-sizing: border-box;
        }
        .list-item-tags-row .tender-tags { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 8px; }
        
        .list-icon {
            width: 16px;
            height: 16px;
            margin-right: 8px;
            vertical-align: middle;
            opacity: 0.7;
            filter: brightness(0) saturate(100%) invert(20%) sepia(100%) saturate(2000%) hue-rotate(220deg) brightness(0.8) contrast(1.2);
            transition: all 0.2s ease;
        }
        
        .list-icon:hover {
            opacity: 1;
            transform: scale(1.1);
            filter: brightness(0) saturate(100%) invert(15%) sepia(100%) saturate(2000%) hue-rotate(220deg) brightness(0.9) contrast(1.3);
        }
        
        /* When using flex "icon + text", we control spacing via flex gap */
        .list-item-title .list-icon,
        .list-item-details .list-icon {
            margin-right: 0;
        }
        
        /* List mode icon tooltips: wrapper required (::after does not work on img). Blue, to the right. */
        .list-item .list-icon-wrap {
            position: relative;
            display: inline-block;
        }
        .list-item .list-icon-wrap:hover::after {
            content: attr(data-tooltip) !important;
            position: absolute !important;
            left: calc(100% + 8px) !important;
            top: 50% !important;
            transform: translateY(-50%) !important;
            background: #1E3A8A !important;
            color: #fff !important;
            padding: 6px 10px !important;
            border-radius: 6px !important;
            font-size: 11px !important;
            white-space: nowrap !important;
            z-index: 2147483000 !important;
            pointer-events: none !important;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;
        }
        .list-item .list-icon-wrap:hover::before {
            content: '' !important;
            position: absolute !important;
            left: 100% !important;
            top: 50% !important;
            transform: translateY(-50%) !important;
            margin-left: 2px !important;
            border: 5px solid transparent !important;
            border-right-color: #1E3A8A !important;
            z-index: 2147483000 !important;
            pointer-events: none !important;
        }
        
        .legend {
            margin-top: 20px;
            padding-top: 20px;
            border-top: 2px solid #7BEC7B;
        }
        
        .legend h4 {
            margin: 0 0 12px 0;
            font-size: 14px;
            font-weight: 600;
            color: #1E3A8A;
        }
        
        .legend-item {
            display: flex;
            align-items: center;
            margin: 6px 0;
            font-size: 12px;
            color: #374151;
        }
        
        .legend-color {
            width: 12px;
            height: 12px;
            border-radius: 50%;
            margin-right: 8px;
        }
        
        /* Statistics Card - Center Bottom */
        /* Recently Updated Tenders Card - removed from map: hidden, replaced by list-order toggle in list mode */
        .updated-tenders-card {
            display: none !important;
            position: fixed;
            bottom: 20px; /* Bottom right corner (took categories card position) */
            right: 20px; /* Right side of screen */
            background: linear-gradient(135deg, #ffffff 0%, #f0fdf4 100%);
            padding: 18px;
            border-radius: 16px;
            border: 2px solid #147CEC;
            box-shadow: 0 8px 24px rgba(20, 124, 236, 0.2), 0 2px 8px rgba(0,0,0,0.1);
            z-index: 1000; /* Lower than settings menu (1001) to stay behind it */
            min-width: 300px; /* Match stats card min-width */
            transition: all 0.3s ease;
            max-width: 380px;
            height: auto; /* Explicit height for better layout calculation */
            max-height: 480px; /* Tripled from 160px */
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }
        
        @media (max-width: 768px) {
            .updated-tenders-card {
                bottom: 180px;
                right: 10px;
                left: 10px;
                max-width: none;
                max-height: 420px; /* Tripled from 140px */
            }
        }
        
        .updated-tenders-card .updated-tenders-title {
            margin: 0 0 12px 0;
            padding: 0;
            font-size: 16px;
            font-weight: 600;
            color: #1E3A8A;
            border-bottom: 2px solid #7BEC7B;
            padding-bottom: 8px;
        }
        
        /* Content areas */
        .updated-tenders-card .updated-tenders-content {
            padding: 0;
            overflow-y: auto !important;
            overflow-x: hidden !important;
            flex: 1 1 0%; /* Explicit flex-basis for better browser support */
            min-height: 0; /* Critical: allows flex item to shrink below content size */
            max-height: 100%; /* Prevent overflow beyond parent */
            font-size: 13px;
            -webkit-overflow-scrolling: touch; /* iOS smooth scrolling */
            scrollbar-width: thin; /* Firefox */
            scrollbar-color: #1E3A8A #e5e7eb; /* Firefox */
        }
        
        /* Webkit scrollbar styling (Chrome, Safari, Edge) */
        .updated-tenders-card .updated-tenders-content::-webkit-scrollbar {
            width: 8px;
        }
        
        .updated-tenders-card .updated-tenders-content::-webkit-scrollbar-track {
            background: #e5e7eb;
            border-radius: 4px;
        }
        
        .updated-tenders-card .updated-tenders-content::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 4px;
        }
        
        .updated-tenders-card .updated-tenders-content::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }
        
        /* Ensure scrollbar is always visible when content overflows */
        .updated-tenders-card:not([style*="display: none"]) .updated-tenders-content {
            overflow-y: auto !important;
        }
        
        .updated-tenders-card:hover {
            box-shadow: 0 12px 32px rgba(20, 124, 236, 0.25), 0 4px 12px rgba(0,0,0,0.15);
            transform: translateY(-2px);
        }
        
        .updated-tenders-card .newest-tender-item {
            padding: 12px;
            margin-bottom: 10px;
            background: #f8f9fa;
            border-radius: 8px;
            transition: all 0.2s ease;
            border-left: 3px solid #147CEC;
            cursor: pointer;
            transition: background 0.2s;
        }
        
        .updated-tenders-card .newest-tender-item:hover {
            background: #e9ecef;
        }
        
        /* Green separator between items in updated tenders card */
        .updated-tenders-card .newest-tender-item:not(:last-child) {
            border-bottom: 1px solid #147CEC;
            margin-bottom: 8px;
            padding-bottom: 10px;
        }
        
        /* Link styling in updated tenders card */
        .updated-tenders-card .tender-link {
            display: inline-block;
            margin-top: 6px;
            font-size: 11px;
            color: #147CEC;
            text-decoration: none;
            font-weight: 600;
            transition: color 0.2s;
        }
        
        .updated-tenders-card .tender-link:hover {
            color: #0d5aa7;
            text-decoration: underline;
        }
        
        /* Ensure tender title, org, date styles work for both cards */
        .updated-tenders-card .newest-tender-item .tender-title {
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 4px;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
        
        .updated-tenders-card .newest-tender-item .tender-org {
            font-size: 12px;
            color: #666;
            margin-bottom: 4px;
        }
        
        .updated-tenders-card .newest-tender-item .tender-date {
            font-size: 11px;
            color: #999;
        }
        
        
        /* AUTH MODAL STYLES */
        .auth-modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.7);
            z-index: 10000;
            align-items: center;
            justify-content: center;
        }
        
        .auth-modal.active {
            display: flex;
        }
        
        .auth-modal-content {
            position: relative;
            background: white;
            padding: 40px;
            border-radius: 16px;
            max-width: 520px;
            width: 90%;
            text-align: center;
            box-shadow: 0 20px 60px rgba(0,0,0,0.25);
        }
        
        .auth-tabs {
            display: flex;
            margin-bottom: 20px;
            border-bottom: 2px solid #e5e7eb;
        }
        
        .auth-tab {
            flex: 1;
            padding: 10px;
            cursor: pointer;
            border: none;
            background: none;
            font-size: 16px;
            color: #666;
        }
        
        .auth-tab.active {
            color: #1E3A8A;
            border-bottom: 2px solid #1E3A8A;
            font-weight: bold;
        }
        
        .auth-form input {
            width: 100%;
            padding: 12px 16px;
            margin: 10px 0;
            border: 2px solid #1E3A8A;
            border-radius: 25px;
            box-sizing: border-box;
            font-size: 14px;
            background: #f8f9fa;
            color: #333;
            transition: all 0.3s ease;
        }

        .auth-form input::placeholder {
            color: #6b7280;
        }

        .auth-form input:hover {
            border-color: #147CEC;
            background: #f0f8ff;
            transform: translateY(-1px);
        }

        .auth-form input:focus {
            outline: none;
            border-color: #147CEC;
            background: white;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
            transform: translateY(-1px);
        }
        
        .auth-form button {
            width: 100%;
            padding: 12px 18px;
            margin: 10px 0;
            background: #1E3A8A;
            color: white;
            border: none;
            border-radius: 25px;
            cursor: pointer;
            font-size: 16px;
            font-weight: 600;
            font-family: var(--font-ui);
            transition: all 0.3s ease;
        }
        
        .auth-form button:hover {
            background: #147CEC;
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(20, 124, 236, 0.35);
        }
        
        .forgot-password-text {
            margin-top: 4px;
            margin-bottom: 16px;
            font-size: 13px;
            color: #147CEC;
            text-align: right;
        }

        .auth-login-heading {
            font-weight: 700;
            font-size: 28px;
            margin: 0 0 12px;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }

        .auth-turnstile-slot {
            width: 100%;
            min-height: 65px;
            margin: 12px 0 4px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .auth-turnstile-placeholder {
            width: 100%;
            min-height: 65px;
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 12px 14px;
            box-sizing: border-box;
            border: 1px solid #d1d5db;
            border-radius: 4px;
            background: #f9fafb;
            color: #4b5563;
            font-size: 13px;
            text-align: left;
        }

        .auth-turnstile-box {
            width: 28px;
            height: 28px;
            flex-shrink: 0;
            border: 2px solid #9ca3af;
            border-radius: 3px;
            background: #fff;
        }

        .auth-turnstile-slot[data-turnstile-ready="1"] .auth-turnstile-placeholder {
            display: none;
        }

        .auth-plan-lead {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 2px;
            width: 100%;
            /* ~one body-text row of air above "Ou bien" */
            font-size: 24px;
            line-height: 1.15;
            margin: 1rem 0 12px;
            text-align: center;
        }

        .auth-plan-lead-line {
            display: block;
            font-size: 1em;
            font-weight: 700;
            line-height: inherit;
            font-family: var(--font-ui);
            letter-spacing: 0.02em;
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;
        }

        /* Dedicated row for top X so it does not share the Connexion heading line */
        #authModal .auth-modal-topbar {
            position: relative;
            flex: 0 0 auto;
            width: 100%;
            min-height: 52px;
            margin: 0;
        }

        /* ~one body-text row of air between top X row and "Connexion" */
        #authModal .auth-login-heading {
            line-height: 1.15;
            margin-top: 1rem;
        }

        .auth-modal .close-popup.auth-modal-close-top {
            position: absolute;
            top: 0;
            right: 0;
            z-index: 2;
            margin: 0;
            /* Match footer X exactly (avoid absolute vs flow paint drift) */
            box-sizing: border-box;
            width: 52px;
            height: 52px;
            min-width: 52px;
            max-width: 52px;
            max-height: 52px;
            font-size: 28px;
        }
        
        .auth-plan-section {
            border-top: 1px solid #7BEC7B;
            margin-top: 8px;
            padding-top: 8px;
        }

        #authModal .auth-plan-section {
            border-top: none;
            margin-top: 0;
            padding-top: 0;
        }
        
        .auth-plan-title {
            font-weight: 600;
            font-size: 30px;
            margin-bottom: 8px;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        
        .signup-title {
            position: relative;
            display: inline-block;
            width: 100%;
            padding-bottom: 8px;
        }
        
        .signup-title::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 80%;
            height: 3px;
            background: #7BEC7B;
            border-radius: 2px;
        }
        
        .auth-plan-subtext {
            font-size: 13px;
            color: #6b7280;
            margin-bottom: 12px;
        }
        
        .auth-plan-buttons-row {
            display: flex;
            align-items: flex-start;
            justify-content: center;
            gap: 12px;
            margin-bottom: 4px;
            margin-top: -30px;
        }
        
        .auth-plan-buttons-row .plan-button {
            width: 160px;
            height: 100px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 16px 12px;
            gap: 6px;
        }
        
        /* Plan Gratuit: Blue idle, Green hover */
        .auth-plan-buttons-row .plan-gratuit-button {
            background: #1E3A8A;
            color: white;
        }
        
        .auth-plan-buttons-row .plan-gratuit-button:hover {
            background: #7BEC7B;
            color: #1E3A8A;
        }
        
        /* Plan Pro: Green idle, Blue hover */
        .auth-plan-buttons-row .plan-pro-button {
            background: #7BEC7B;
            color: #1E3A8A;
        }
        
        .auth-plan-buttons-row .plan-pro-button:hover {
            background: #1E3A8A;
            color: white;
        }
        
        .auth-plan-buttons-row .plan-button-icon {
            width: 24px;
            height: 24px;
            margin-bottom: 4px;
            object-fit: contain;
            transition: all 0.2s ease;
        }
        
        .auth-plan-buttons-row .plan-gratuit-button:hover .plan-button-icon {
            filter: brightness(0) saturate(100%) invert(27%) sepia(95%) saturate(2000%) hue-rotate(210deg) brightness(0.85) contrast(1.2);
        }
        
        .auth-plan-buttons-row .plan-pro-button:hover .plan-button-icon {
            filter: brightness(0) invert(1);
        }
        
        .auth-plan-buttons-row .plan-button-main {
            font-size: 16px;
            font-weight: 600;
            line-height: 1.2;
        }
        
        .auth-plan-buttons-row .plan-button-sub {
            font-size: 11px;
            font-weight: 400;
            line-height: 1.2;
            opacity: 0.9;
        }
        
        .auth-plan-center-image {
            width: 200px;
            height: 200px;
            object-fit: contain;
            align-self: flex-end;
            margin-top: 50px;
        }
        
        .auth-plan-caption {
            display: flex;
            justify-content: space-between;
            font-size: 11px;
            color: #6b7280;
            margin-top: 2px;
        }
        
        .auth-plan-caption span:first-child {
            text-align: left;
        }
        
        .auth-plan-caption span:last-child {
            text-align: right;
        }
        
        .auth-close {
            position: absolute;
            top: 10px;
            right: 10px;
            font-size: 22px;
            cursor: pointer;
            color: #6b7280;
            background: transparent;
            border: none;
            padding: 4px;
            line-height: 1;
        }
        
        .auth-close:hover {
            color: #111827;
        }
        
        /* PRO POPUP STYLES - Large Modal */
        .pro-popup {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.7);
            display: none; /* Hidden by default, shown via JavaScript */
            align-items: center;
            justify-content: center;
            z-index: 10000;
            padding: 20px;
            box-sizing: border-box;
        }
        
        .pro-popup-content {
            background: white;
            border-radius: 12px;
            max-width: 1200px;
            width: 100%;
            max-height: 90vh;
            overflow-y: auto;
            padding: 40px;
            box-shadow: 0 10px 40px rgba(0,0,0,0.3);
            position: relative;
        }
        
        .pro-popup .close-popup {
            position: absolute;
            top: 20px;
            right: 20px;
            background: none;
            border: none;
            color: #666;
            font-size: 32px;
            cursor: pointer;
            padding: 0;
            width: 40px;
            height: 40px;
            line-height: 40px;
            transition: color 0.2s;
        }
        
        .pro-popup .close-popup:hover {
            color: #000;
        }
        
        .pro-popup h2 {
            margin: 0 0 30px 0;
            font-size: 38px;
            font-weight: 600;
            white-space: nowrap;
            font-family: var(--font-ui);
            /* Gradient effect: darker blue at bottom, lighter at top - more light blue at tip */
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: #1E3A8A;  /* Fallback for browsers that don't support gradient text */
            text-align: center;
            position: relative;
            z-index: 1;
            padding-bottom: 8px;
        }
        
        /* Decorative green underline accent */
        .pro-popup h2::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 60px;
            height: 3px;
            background: #7BEC7B;
            border-radius: 2px;
        }
        
        /* Fallback for browsers without gradient text support */
        @supports not (-webkit-background-clip: text) {
            .pro-popup h2 {
                color: #1E3A8A;
                -webkit-text-fill-color: #1E3A8A;
            }
        }
        
        .plans-container {
            display: grid;
            gap: 30px;
            margin-top: 30px;
            min-width: 0;
        }
        
        .plan-card {
            border: 2px solid #e5e7eb;
            border-radius: 8px;
            padding: 50px 35px; /* Increased from 40px 25px for thicker cards */
            text-align: center;
            transition: transform 0.2s, box-shadow 0.2s;
            background: white;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            min-height: 500px; /* More elongated, less stocky */
            min-width: 0;
            width: 100%;
            box-sizing: border-box;
        }
        
        .plan-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 20px rgba(0,0,0,0.1);
        }
        
        .plan-card.gratuit {
            border-color: #1E3A8A; /* Header button blue */
            max-width: none;
            overflow: hidden;
        }
        
        .plan-card.gratuit .plan-name {
            font-size: 68px; /* 75% of Pro (90px * 0.75) */
            word-break: keep-all;
        }
        
        .plan-card.gratuit .plan-features .feature-icon {
            width: 24px; /* Same size as Pro */
            height: 24px; /* Same size as Pro */
        }
        
        .plan-card.base {
            border-color: #1E3A8A; /* Header button blue */
        }
        
        .plan-card.base .plan-name {
            font-size: 68px; /* 75% of Pro (90px * 0.75) */
        }
        
        .plan-card.base .plan-features .feature-icon {
            width: 24px; /* Same size as Pro */
            height: 24px; /* Same size as Pro */
        }
        
        .plan-card.pro {
            border-color: #1E3A8A; /* Header button blue */
            border-width: 3px;
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.2);
            min-height: calc(500px * 1.1); /* 10% taller than base min-height */
            padding-top: 50px; /* Same as base for alignment */
            padding-bottom: 55px; /* 10% more bottom padding (50px * 1.1) */
        }
        
        /* Desktop: center Gratuit + Pro with same footprint as old 3-card row (cols 1–2 of 1+1.2+1) */
        @media (min-width: 969px) {
            .plans-container {
                grid-template-columns: 1fr 1.2fr;
                width: calc(100% * 2.2 / 3.2);
                max-width: 100%;
                margin-left: auto;
                margin-right: auto;
            }

            .plan-card.pro {
                padding-top: 50px; /* Match base card padding */
            }
        }
        
        .plan-emoji {
            font-size: 48px;
            margin-bottom: 15px;
        }
        
        .plan-price-display {
            text-align: center;
            margin-bottom: 10px;
            min-height: 50px;
            display: flex;
            align-items: baseline;
            justify-content: center;
            gap: 8px;
            flex-wrap: wrap;
        }

        .plan-price-was {
            font-size: 22px;
            font-weight: 600;
            color: #94a3b8;
            text-decoration: line-through;
            line-height: 1;
        }
        
        .plan-price-amount {
            font-size: 42px;
            font-weight: bold;
            color: #1E3A8A;
            line-height: 1;
            transition: all 0.3s ease;
        }
        
        .plan-price-amount.rolling {
            animation: rollNumber 0.5s ease-in-out;
        }
        
        @keyframes rollNumber {
            0% { transform: translateY(0) scale(1); opacity: 1; }
            50% { transform: translateY(-10px) scale(0.95); opacity: 0.5; }
            100% { transform: translateY(0) scale(1); opacity: 1; }
        }
        
        .plan-price-period {
            font-size: 20px;
            color: #1E3A8A;
            margin-left: 4px;
        }
        
        .plan-name {
            font-size: 90px; /* Increased from 72px for larger text */
            font-weight: bold;
            margin-bottom: 15px;
            color: #1E3A8A;
            width: 100%;
            text-align: center;
            min-height: 100px; /* Reduced to make room for price */
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .plan-billing-toggle {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 12px;
            margin-bottom: 20px;
            min-height: 40px;
        }
        
        .toggle-switch {
            position: relative;
            width: 50px;
            height: 26px;
            background-color: #ccc;
            border-radius: 26px;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        
        .toggle-switch.active {
            background-color: #1E3A8A;
        }
        
        .toggle-switch::after {
            content: '';
            position: absolute;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: white;
            top: 3px;
            left: 3px;
            transition: transform 0.3s ease;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        .toggle-switch.active::after {
            transform: translateX(24px);
        }
        
        .toggle-label {
            font-size: 16px;
            color: #666;
            font-weight: 500;
        }
        
        .plan-card.gratuit .plan-billing-toggle {
            display: none; /* Hide toggle for free plan */
        }

        /* Beta: monthly only — annual billing not offered yet */
        .plan-billing-toggle--beta-monthly .toggle-switch {
            display: none;
        }

        .plan-billing-toggle--beta-monthly .toggle-label {
            font-size: 13px;
            color: #1E3A8A;
            font-weight: 600;
            text-align: center;
            line-height: 1.35;
            max-width: 16rem;
            white-space: normal;
        }

        .plan-beta-pipe {
            color: #7BEC7B;
            font-weight: 700;
        }
        
        .plan-features {
            list-style: none;
            padding: 0;
            margin: 0;
            text-align: left;
            flex-grow: 1; /* Take available space to push button down */
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            min-height: 0; /* Allow flexbox to work properly */
        }
        
        /* Ensure feature lists align horizontally across cards on desktop */
        @media (min-width: 969px) {
            /* Ensure consistent spacing above feature lists */
            .plan-card.base .plan-price-display,
            .plan-card.pro .plan-price-display {
                min-height: 50px;
                margin-bottom: 10px;
            }
            
            .plan-card.base .plan-name,
            .plan-card.pro .plan-name {
                min-height: 100px;
                margin-bottom: 15px;
            }
            
            .plan-card.base .plan-billing-toggle,
            .plan-card.pro .plan-billing-toggle {
                min-height: 40px;
                margin-bottom: 20px;
            }
            
            /* Ensure feature lists start at same position */
            .plan-card.base .plan-features,
            .plan-card.pro .plan-features {
                margin-top: 0;
                padding-top: 0;
            }
        }
        
        .plan-features li {
            padding: 15px 0;
            font-size: 18px; /* Increased from 16px for larger text */
            border-bottom: 1px solid #f3f4f6;
            display: flex;
            align-items: center;
        }
        
        .plan-features li:last-child {
            border-bottom: none;
        }
        
        .plan-features .feature-icon {
            margin-right: 10px;
            width: 24px; /* Width for checkmark image */
            height: 24px; /* Height for checkmark image */
            object-fit: contain;
            flex-shrink: 0; /* Prevent image from shrinking */
        }
        
        .plan-button {
            width: 100%;
            padding: 16px 24px; /* Increased from 12px for thicker button */
            margin-top: auto; /* Push to bottom */
            border: none;
            border-radius: 25px; /* Same as header buttons */
            font-size: 16px; /* Increased from 14px for larger text */
            font-weight: 600; /* Same as header buttons */
            font-family: var(--font-ui); /* Same as header */
            letter-spacing: 0.5px; /* Same as header buttons */
            cursor: pointer;
            transition: all 0.2s ease; /* Same as header buttons */
            background: #1E3A8A; /* Header button blue */
            color: white;
        }
        
        .plan-button:hover {
            background: #7BEC7B; /* Header button hover green */
            color: #1E3A8A;
            transform: translateY(-1px); /* Same as header buttons */
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4); /* Same as header buttons */
        }
        
        .gratuit-image {
            width: 100%;
            height: auto;
            margin: 15px 0;
            display: block;
            object-fit: contain;
        }
        
        @media (max-width: 968px) {
            .plans-container {
                grid-template-columns: 1fr;
                gap: 20px;
            }
            
            .pro-popup-content {
                padding: 30px 20px;
            }
            
            /* Mobile-optimized title */
            .pro-popup h2 {
                font-size: 28px;
                white-space: normal; /* Allow wrapping on mobile */
                line-height: 1.3;
            }
            
            /* Mobile-optimized plan cards */
            .plan-card {
                padding: 30px 20px; /* Reduced from 50px 35px */
                min-height: 400px; /* Reduced from 500px */
            }
            
            /* Mobile-optimized plan names */
            .plan-name {
                font-size: 48px; /* Reduced from 90px for Pro */
            }
            
            .plan-card.gratuit .plan-name,
            .plan-card.base .plan-name {
                font-size: 36px; /* Reduced from 68px */
            }
            
            /* Mobile-optimized Pro card */
            .plan-card.pro {
                min-height: 440px; /* Reduced from 550px (400px * 1.1) */
                padding-top: 33px; /* Reduced from 55px */
                padding-bottom: 33px; /* Reduced from 55px */
            }
            
            /* Mobile-optimized feature text */
            .plan-features li {
                font-size: 16px; /* Slightly reduced from 18px */
                padding: 12px 0; /* Reduced from 15px */
            }
            
            /* Mobile-optimized feature icons */
            .plan-features .feature-icon {
                width: 20px; /* Reduced from 24px */
                height: 20px; /* Reduced from 24px */
            }
            
            .plan-card.gratuit .plan-features .feature-icon,
            .plan-card.base .plan-features .feature-icon {
                width: 20px; /* Same size as Pro on mobile */
                height: 20px; /* Same size as Pro on mobile */
            }
            
            /* Mobile-optimized plan name height */
            .plan-name {
                min-height: 70px; /* Reduced from 100px for mobile */
            }
            
            /* Mobile-optimized pricing */
            .plan-price-display {
                min-height: 40px;
                margin-bottom: 8px;
            }

            .plan-price-was {
                font-size: 18px;
            }
            
            .plan-price-amount {
                font-size: 32px;
            }
            
            .plan-price-period {
                font-size: 16px;
            }
            
            .plan-billing-toggle {
                margin-bottom: 15px;
                gap: 10px;
            }
            
            .toggle-switch {
                width: 44px;
                height: 24px;
            }
            
            .toggle-switch::after {
                width: 18px;
                height: 18px;
                top: 3px;
                left: 3px;
            }
            
            .toggle-switch.active::after {
                transform: translateX(20px);
            }
            
            .toggle-label {
                font-size: 14px;
            }
            
            /* Mobile-optimized buttons - ensure good touch targets */
            .plan-button {
                padding: 14px 24px; /* Increased from 12px for better touch target */
                font-size: 16px; /* Increased from 14px for readability */
                min-height: 44px; /* Ensure minimum touch target size */
            }
            
            /* Mobile-optimized close button */
            .pro-popup .close-popup {
                width: 44px; /* Increased from 40px for better touch target */
                height: 44px; /* Increased from 40px */
                font-size: 36px; /* Increased from 32px */
                top: 10px;
                right: 10px;
            }
        }
        
        /* HIDDEN BY DEFAULT - PLAN-BASED FEATURES */
        .email-notif-ui {
            display: none; /* Will be shown for Pro */
        }
        
        .csv-export-ui {
            display: none; /* Will be shown for Pro only */
        }
        
        /* Settings Menu */
        /* Settings Menu — slide in via transform (avoid max-height layout animation jank) */
        .settings-menu {
            position: fixed;
            top: 80px; /* Below header */
            right: 0;
            width: 40%; /* Reduced from 50% */
            max-height: 80vh;
            background: #1E3A8A;
            color: white;
            z-index: 10055; /* Above .header stacking (10050), below .auth-modal (10060) */
            overflow: hidden;
            display: flex;
            flex-direction: column;
            transform: translate3d(100%, 0, 0);
            visibility: hidden;
            pointer-events: none;
            transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.28s;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
            border-radius: 0 0 0 20px; /* Rounded corners on left side */
        }
        
        .settings-menu.open {
            transform: translate3d(0, 0, 0);
            visibility: visible;
            pointer-events: auto;
            transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s;
        }
        
        .settings-menu-content {
            padding: 15px 40px 30px 40px; /* Reduced top padding from 30px to 15px */
            width: 100%;
            min-width: 0;
            max-width: 100%;
            flex: 1 1 auto;
            min-height: 0;
            max-height: none;
            margin: 0;
            box-sizing: border-box;
            overflow-y: auto;
            overflow-x: hidden;
            -webkit-overflow-scrolling: touch;
            scrollbar-color: #7BEC7B transparent;
        }

        .settings-menu-content::-webkit-scrollbar {
            width: 8px;
        }

        .settings-menu-content::-webkit-scrollbar-thumb {
            background: #7BEC7B;
            border-radius: 8px;
        }
        
        .settings-user-email {
            color: white;
            font-size: 18px;
            font-family: var(--font-ui);
            text-align: right;
            margin-bottom: 12px; /* Reduced from 20px to 12px */
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 8px;
            padding: 4px 8px;
            border-radius: 8px;
            transition: all 0.2s ease;
            user-select: none;
            background: transparent;
            width: 100%;
            box-sizing: border-box;
        }
        
        .user-plan-text {
            font-size: 14px;
            color: #7BEC7B;
            font-weight: 500;
            margin-left: 4px;
        }
        
        .settings-user-email:hover {
            color: #7BEC7B;
            background: transparent;
        }
        
        .user-icon-container {
            position: relative;
            width: 20px;
            height: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .user-icon {
            width: 20px;
            height: 20px;
            object-fit: contain;
            transition: opacity 0.3s ease;
            flex-shrink: 0;
        }
        
        .user-icon-normal {
            opacity: 1;
            position: relative;
        }
        
        .user-icon-hover {
            opacity: 0;
            position: absolute;
            top: 0;
            left: 0;
        }
        
        .settings-user-email:hover .user-icon-normal {
            opacity: 0;
        }
        
        .settings-user-email:hover .user-icon-hover {
            opacity: 1;
        }
        
        .settings-close-btn {
            background: transparent;
            border: 2px solid white;
            color: white;
            padding: 8px 20px;
            border-radius: 25px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 600;
            font-family: var(--font-ui);
            transition: all 0.2s ease;
        }
        
        .settings-close-btn:hover {
            background: white;
            color: #1E3A8A;
            transform: translateY(-1px);
        }
        
        .notification-tabs {
            display: none; /* Hidden for base plan */
            margin-bottom: 0;
            margin-left: 0;
            margin-right: 0;
            padding: 0;
            background: transparent;
            border-radius: 0;
            position: relative;
        }
        
        .notification-tabs.active {
            display: flex;
            align-items: flex-end;
            gap: 0;
            position: relative;
            z-index: 10;
            height: 42px;
            min-height: 42px;
            box-sizing: border-box;
            margin-bottom: -2px;
            overflow: hidden;
        }
        
        .notification-tab {
            background: #d1d5db;
            border: 2px solid #7BEC7B;
            border-bottom: 2px solid #7BEC7B;
            color: #1E3A8A;
            padding: 6px 10px 8px;
            margin-top: 8px;
            font-size: 11px;
            font-weight: 600;
            font-family: var(--font-ui);
            cursor: pointer;
            appearance: none;
            -webkit-appearance: none;
            transition: background-color 0.2s ease, color 0.2s ease, margin-top 0.2s ease, padding 0.2s ease;
            position: relative;
            z-index: 9;
            flex: 0 0 auto;
            min-width: 75px;
            box-sizing: border-box;
            border-top-left-radius: 15px;
            border-top-right-radius: 15px;
            border-bottom-left-radius: 0;
            border-bottom-right-radius: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }

        .notification-tab:focus,
        .notification-tab:focus-visible,
        .historical-tab:focus,
        .historical-tab:focus-visible {
            outline: none;
        }
        
        .tab-alert-icon {
            width: 14px;
            height: 14px;
            object-fit: contain;
            flex-shrink: 0;
        }
        
        /* First tab: ensure left corner is rounded */
        .notification-tab:first-child {
            border-top-left-radius: 15px;
            border-top-right-radius: 15px; /* Also rounded on right */
            border-left: 2px solid #7BEC7B;
        }
        
        /* Last tab: ensure right corner is rounded */
        .notification-tab:last-child {
            border-top-left-radius: 15px; /* Also rounded on left */
            border-top-right-radius: 15px;
            border-right: 2px solid #7BEC7B;
        }
        
        .notification-tab.active {
            background: white;
            color: #1E3A8A;
            z-index: 12;
            margin-top: 0;
            padding: 10px 10px 10px;
            border-bottom-color: #fff;
            border-bottom-width: 2px;
        }
        
        .notification-tab:hover:not(.active) {
            margin-top: 6px;
            animation: tabTextPulse 0.3s ease;
            background: #d1d5db;
            color: #1E3A8A;
        }
        
        .notification-tab.active:hover {
            animation: none;
        }
        
        #baseNotificationTab {
            display: none;
            align-items: flex-end;
            height: 42px;
            min-height: 42px;
            margin-bottom: -2px;
            overflow: hidden;
        }

        #baseNotificationTab.active {
            display: flex;
        }

        #baseNotificationTab .notification-tab {
            background: white !important;
            color: #1E3A8A !important;
            margin-top: 0 !important;
            padding: 10px 10px 10px !important;
            border-bottom-color: #fff !important;
            border-bottom-width: 2px !important;
        }
        
        .tab-checkmark {
            width: 16px;
            height: 16px;
            margin-left: 8px;
            vertical-align: middle;
            display: inline-block;
            transition: all 0.2s ease;
        }
        
        /* Grayout checkmark when tab is not active */
        .notification-tab:not(.active) .tab-checkmark {
            opacity: 0.4;
            filter: brightness(0.3) grayscale(1);
        }
        
        /* Full opacity when tab is active */
        .notification-tab.active .tab-checkmark {
            opacity: 1;
            filter: brightness(1) grayscale(0);
        }
        
        /* Historical tab checkmark styling (same as notification tabs) */
        .historical-tab:not(.active) .tab-checkmark {
            opacity: 0.4;
            filter: brightness(0.3) grayscale(1);
        }
        
        .historical-tab.active .tab-checkmark {
            opacity: 1;
            filter: brightness(1) grayscale(0);
        }
        
        @keyframes tabTextPulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.04); }
            100% { transform: scale(1.02); }
        }
        
        /* Notification Panel - White cards like filter panel */
        .notification-panel {
            background: white;
            border-top-left-radius: 0 !important; /* Always sharp 90-degree corner */
            border-top-right-radius: 15px; /* Rounded top-right */
            border-bottom-left-radius: 15px; /* Rounded bottom-left */
            border-bottom-right-radius: 15px; /* Rounded bottom-right */
            padding: 15px;
            padding-top: 25px; /* Reduced from 50px for tighter spacing */
            margin-bottom: 20px; /* Balanced spacing to historical data section */
            margin-top: 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
            border: 2px solid #7BEC7B; /* Single green accent border - no conflicts */
            position: relative;
            overflow: hidden; /* Hide the lower parts of tabs that sit behind */
        }
        
        /* Fuse visible panels to tab strip (all alert tabs; baseNotificationTab blocks + sibling) */
        .notification-tabs.active ~ .notification-panel:not(.hidden),
        #baseNotificationTab.active + .notification-panel {
            border-top: none;
            border-top-left-radius: 0 !important;
            border-top-right-radius: 15px !important;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            margin-top: -2px;
        }
        
        .notification-panel.hidden {
            display: none;
        }
        
        .plan-indicator {
            margin-bottom: 15px;
            padding: 10px 15px;
            background-color: #f3f4f6;
            border-radius: 6px;
            text-align: center;
            border: 1px solid #e5e7eb;
        }
        
        .plan-indicator-base {
            background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
            border-color: #3b82f6;
        }
        
        .plan-upgrade-prompt {
            animation: fadeIn 0.3s ease-in;
        }
        
        @keyframes fadeIn {
            from {
                opacity: 0;
                transform: translateY(-5px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        .notification-panel-title {
            font-size: 18px;
            font-weight: 600;
            margin-bottom: 20px;
            color: #1E3A8A;
        }
        
        .notification-form-group {
            margin-bottom: 12px;
            position: relative; /* For absolute positioning of bidou image */
        }
        
        /* Two-column row layout for notification form fields */
        .notification-form-row {
            display: flex;
            gap: 12px;
            margin-bottom: 12px;
        }
        
        .notification-form-row .notification-form-group {
            flex: 1;
            margin-bottom: 0;
        }
        
        /* Compact date sliders for notification panels - 4 per row */
        .notification-date-slider-group {
            margin-bottom: 0; /* Remove margin since row already has margin-bottom */
            flex: 1;
        }
        .notification-date-slider-label {
            display: flex;
            align-items: center;
            gap: 4px;
            font-size: 11px;
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 4px;
        }
        .notification-date-slider-label .date-icon {
            width: 12px;
            height: 12px;
            opacity: 0.8;
        }
        .notification-date-slider-container {
            margin: 4px 0;
            padding: 0 2px;
        }
        .notification-date-slider {
            height: 4px;
            margin: 8px 0;
        }
        .notification-date-slider .noUi-connect {
            background: #1E3A8A;
        }
        .notification-date-slider .noUi-handle {
            width: 16px;
            height: 16px;
            right: -8px;
            top: -6px;
            border: 2px solid #fff;
            background: #1E3A8A;
            border-radius: 50%;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
            cursor: grab;
        }
        .notification-date-slider .noUi-handle::before,
        .notification-date-slider .noUi-handle::after {
            display: none !important;
            content: none !important;
        }
        .notification-date-slider .noUi-handle * {
            display: none !important;
        }
        .notification-date-slider .noUi-handle:hover {
            background: #7BEC7B;
            border-color: #7BEC7B;
            box-shadow: 0 2px 6px rgba(123, 236, 123, 0.4);
        }
        .notification-date-slider .noUi-handle:active {
            cursor: grabbing;
            background: #7BEC7B;
        }
        .notification-date-slider.precise-mode .noUi-connect {
            background: #7BEC7B;
        }
        .notification-date-slider.precise-mode .noUi-handle {
            background: #7BEC7B;
            border-color: #7BEC7B;
        }
        .notification-date-slider-values {
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-size: 10px;
            color: #1E3A8A;
            font-weight: 600;
            margin-top: 2px;
            padding: 0 2px;
        }
        .notification-date-slider-values span.date-hover-scroll-target {
            cursor: ns-resize;
        }
        .notification-date-slider-values span {
            transition: transform 0.3s ease, color 0.3s ease;
            display: inline-flex;
            align-items: center;
        }
        .notification-date-slider-values span:hover {
            transform: translateY(-3px);
            color: #147CEC;
        }
        .notification-date-slider-separator {
            color: #7BEC7B;
            margin: 0 2px;
        }
        
        /* Compact distance slider for notification panels - 4 per row */
        .notification-distance-slider-group {
            margin-bottom: 0; /* Remove margin since row already has margin-bottom */
            flex: 1;
        }
        /* When distance slider is alone in a row, make it full width */
        .notification-form-row:has(.notification-distance-slider-group:only-child) .notification-distance-slider-group {
            flex: 1 1 100%;
            width: 100%;
        }
        .notification-distance-slider-label {
            display: flex;
            align-items: center;
            gap: 4px;
            font-size: 11px;
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 4px;
        }
        .notification-distance-slider-label .distance-icon {
            width: 12px;
            height: 12px;
            opacity: 0.8;
        }
        .notification-distance-slider-container {
            padding: 4px 0;
        }
        .notification-distance-slider {
            position: relative;
            width: 100%;
        }
        .notification-distance-slider .slider {
            width: 100%;
            height: 4px;
            border-radius: 2px;
            background: #e5e7eb;
            outline: none;
            -webkit-appearance: none;
            appearance: none;
        }
        
        .notification-distance-slider .slider:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            background: #d1d5db;
        }
        
        .notification-distance-slider .slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: #7BEC7B;
            cursor: pointer;
            border: 2px solid #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        .notification-distance-slider .slider:disabled::-webkit-slider-thumb {
            background: #9ca3af;
            cursor: not-allowed;
        }
        
        .notification-distance-slider .slider::-moz-range-thumb {
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: #7BEC7B;
            cursor: pointer;
            border: 2px solid #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        .notification-distance-slider .slider:disabled::-moz-range-thumb {
            background: #9ca3af;
            cursor: not-allowed;
        }
        
        /* Alert panel clear location button (X button) */
        .alert-clear-btn {
            display: none;
            align-items: center;
            justify-content: center;
            background: #1E3A8A;
            color: white;
            border: 2px solid #1E3A8A;
            border-radius: 50%;
            width: 18px;
            height: 18px;
            font-size: 14px;
            line-height: 1;
            cursor: pointer;
            padding: 0;
            margin-left: 4px;
            transition: all 0.2s ease;
            vertical-align: middle;
            flex-shrink: 0;
        }
        
        .alert-clear-btn:hover {
            background: #22C55E;
            border-color: #22C55E;
            transform: scale(1.1);
        }
        
        .alert-clear-btn:active {
            transform: scale(0.95);
        }
        
        /* Main filter location clear button (X button) */
        .main-location-clear-btn {
            display: none;
            align-items: center;
            justify-content: center;
            background: #1E3A8A;
            color: white;
            border: 2px solid #1E3A8A;
            border-radius: 50%;
            width: 20px;
            height: 20px;
            font-size: 16px;
            line-height: 1;
            cursor: pointer;
            padding: 0;
            margin-left: 4px;
            transition: all 0.2s ease;
            vertical-align: middle;
            flex-shrink: 0;
        }
        
        .main-location-clear-btn:hover {
            background: #22C55E;
            border-color: #22C55E;
            transform: scale(1.1);
        }
        
        .main-location-clear-btn:active {
            transform: scale(0.95);
        }
        .notification-distance-slider .slider::-moz-range-thumb {
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: #7BEC7B;
            cursor: pointer;
            border: 2px solid #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        .notification-slider-labels {
            display: flex;
            justify-content: space-between;
            margin-top: 3px;
            font-size: 8px;
            color: #6b7280;
        }
        .notification-slider-labels span {
            flex: 1;
            text-align: center;
        }
        
        .notification-search-container {
            display: flex;
            align-items: center;
            gap: 12px;
            position: relative; /* For absolute positioning of bidou image */
            padding-right: 180px; /* Reserve space for the image (160px + 20px margin) */
        }
        
        .notification-search-input-wrapper {
            flex: 0 0 auto;
        }
        
        .notification-bidou-image {
            position: absolute;
            right: 0;
            top: 50%;
            transform: translateY(-50%);
            width: 160px; /* Doubled from 80px */
            height: auto;
            z-index: 1;
            pointer-events: none; /* Allow clicks to pass through to input if needed */
        }
        
        .notification-label {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 14px;
            font-weight: 600;
            margin-bottom: 8px;
            color: #1E3A8A;
        }
        
        .notification-buttons-container {
            display: flex;
            gap: 10px;
            margin-top: 15px;
        }
        
        .notification-icon {
            width: 18px;
            height: 18px;
            opacity: 0.8;
        }
        
        /* Base Plan Upsell Card */
        .base-upsell-card {
            background: white;
            border-top-left-radius: 15px; /* Rounded to match other corners */
            border-top-right-radius: 15px;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            padding: 12px;
            padding-top: 20px;
            margin-bottom: 12px;
            margin-top: 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
            border: 2px solid #7BEC7B;
            position: relative;
            overflow: hidden;
        }
        
        .base-upsell-title {
            font-weight: 600;
            font-size: 30px;
            margin-bottom: 15px;
            font-family: var(--font-ui);
            background: linear-gradient(to top, #0F1E5A 0%, #1E3A8A 35%, #2563EB 65%, #3B82F6 85%, #60A5FA 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            text-align: center;
            position: relative;
            display: inline-block;
            width: 100%;
            padding-bottom: 8px;
        }
        
        .base-upsell-title::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 80%;
            height: 3px;
            background: #7BEC7B;
            border-radius: 2px;
        }
        
        .base-upsell-content {
            display: flex;
            align-items: center;
            gap: 20px;
            justify-content: flex-start;
            flex-wrap: nowrap;
        }
        
        .base-upsell-image {
            width: auto;
            max-width: none;
            min-width: 400px;
            height: auto;
            object-fit: contain;
            flex: 1 1 auto;
        }
        
        .base-upsell-button {
            width: 160px;
            height: 100px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 16px 12px;
            gap: 6px;
            border-radius: 25px;
            border: none;
            cursor: pointer;
            transition: all 0.3s ease;
            font-family: var(--font-ui);
            flex-shrink: 0;
            margin-left: auto;
            background: #7BEC7B; /* Green background like Plan Pro button */
            color: #1E3A8A; /* Blue text */
        }
        
        .base-upsell-button:hover {
            background: #1E3A8A; /* Blue background on hover */
            color: white; /* White text on hover */
        }
        
        .base-upsell-button .plan-button-icon {
            width: 24px;
            height: 24px;
            margin-bottom: 4px;
            object-fit: contain;
            transition: all 0.2s ease;
            /* plan_pro_blue.svg should be blue - no filter needed by default */
            /* If icon appears white, it may need a filter to show as blue */
        }
        
        .base-upsell-button:hover .plan-button-icon {
            filter: brightness(0) invert(1); /* Invert to white icon on blue background on hover */
        }
        
        .base-upsell-button .plan-button-main {
            font-size: 16px;
            font-weight: 600;
            line-height: 1.2;
        }
        
        .base-upsell-button .plan-button-sub {
            font-size: 11px;
            font-weight: 400;
            line-height: 1.2;
            opacity: 0.9;
        }
        
        /* Historical Data Section */
        .historical-data-section {
            margin-top: 0; /* Spacing handled by notification panel margin-bottom */
        }
        
        /* Settings Subscription Section for Gratuit Users */
        .settings-subscription-section {
            margin-top: 20px;
            padding: 30px;
            background: white;
            border-radius: 12px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }
        
        .settings-subscription-section .auth-plan-section {
            border-top: none;
            margin-top: 0;
            padding-top: 0;
        }
        
        .settings-subscription-section .auth-plan-title {
            text-align: center;
            position: relative;
            display: inline-block;
            width: 100%;
            padding-bottom: 8px;
        }
        
        .settings-subscription-section .auth-plan-title::after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 50%;
            transform: translateX(-50%);
            width: 80%;
            height: 3px;
            background: #7BEC7B;
            border-radius: 2px;
        }
        
        /* Settings Footer Card with Action Buttons */
        .settings-footer-card {
            margin-top: 20px; /* Balanced spacing from historical data section */
            margin-bottom: 0; /* No bottom margin needed */
            padding: 12px; /* Reduced from 20px for slimmer card */
            background: white;
            border-radius: 12px;
            border: 2px solid #7BEC7B; /* Green accent border matching other cards */
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }
        
        .settings-footer-buttons {
            display: flex;
            gap: 8px; /* Reduced from 10px */
            justify-content: space-between;
            align-items: stretch;
        }
        
        .settings-footer-button {
            flex: 1 1 0;
            min-width: 0;
            box-sizing: border-box;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #1E3A8A;
            color: white;
            border: none;
            padding: 4px 12px; /* Reduced vertical padding for shorter buttons */
            border-radius: 22px;
            cursor: pointer;
            font-size: 11px; /* Slightly smaller font for more compact look */
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
            text-align: center;
            line-height: 1.3; /* Tighter line height for compact buttons */
        }
        
        .settings-footer-button:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .settings-footer-button:active {
            transform: translateY(0);
        }
        
        /* Free/gratuit: equal roomier pills for every visible footer action */
        .settings-menu.plan-gratuit .settings-footer-button {
            min-height: 44px;
            padding: 12px 16px;
            font-size: 13px;
        }
        
        /* Add green border accent to both cards in gratuit plan */
        .settings-menu.plan-gratuit .settings-subscription-section {
            border: 2px solid #7BEC7B;
        }
        
        .settings-menu.plan-gratuit .settings-footer-card {
            border: 2px solid #7BEC7B;
        }
        
        .historical-tabs {
            display: flex;
            align-items: flex-end;
            gap: 0;
            height: 42px;
            min-height: 42px;
            box-sizing: border-box;
            margin-bottom: -2px;
            position: relative;
            z-index: 10;
            overflow: hidden;
        }
        
        .historical-tab {
            background: #d1d5db;
            border: 2px solid #7BEC7B;
            border-bottom: 2px solid #7BEC7B;
            color: #1E3A8A;
            padding: 6px 10px 8px;
            margin-top: 8px;
            font-size: 11px;
            font-weight: 600;
            font-family: var(--font-ui);
            cursor: pointer;
            appearance: none;
            -webkit-appearance: none;
            transition: background-color 0.2s ease, color 0.2s ease, margin-top 0.2s ease, padding 0.2s ease;
            position: relative;
            z-index: 9;
            flex: 0 0 auto;
            min-width: 75px;
            box-sizing: border-box;
            border-top-left-radius: 15px;
            border-top-right-radius: 15px;
            border-bottom-left-radius: 0;
            border-bottom-right-radius: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }
        
        .tab-calendar-icon {
            width: 14px;
            height: 14px;
            object-fit: contain;
            flex-shrink: 0;
        }
        
        .historical-tab:first-child {
            border-top-left-radius: 15px;
            border-top-right-radius: 15px;
            border-left: 2px solid #7BEC7B;
        }
        
        .historical-tab:last-child {
            border-top-left-radius: 15px;
            border-top-right-radius: 15px;
            border-right: 2px solid #7BEC7B;
        }
        
        .historical-tab.active {
            background: white;
            color: #1E3A8A;
            z-index: 12;
            margin-top: 0;
            padding: 10px 10px 10px;
            border-bottom-color: #fff;
            border-bottom-width: 2px;
        }
        
        .historical-tab:hover:not(.active) {
            margin-top: 6px;
            animation: tabTextPulse 0.3s ease;
            background: #d1d5db;
            color: #1E3A8A;
        }
        
        .historical-tab.active:hover {
            animation: none;
        }
        
        .historical-panel {
            background: white;
            border-top-left-radius: 0 !important;
            border-top-right-radius: 15px;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            padding: 12px;
            padding-top: 20px; /* Reduced from 35px for tighter spacing */
            margin-bottom: 12px;
            margin-top: 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
            border: 2px solid #7BEC7B;
            position: relative;
            overflow: hidden;
        }
        
        .historical-tabs ~ .historical-panel:not(.hidden) {
            border-top: none;
            border-top-left-radius: 0 !important;
            border-top-right-radius: 15px !important;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            margin-top: -2px;
        }
        
        .historical-panel.hidden {
            display: none;
        }
        
        .historical-panel-title {
            font-size: 14px;
            font-weight: 600;
            margin-bottom: 8px;
            color: #1E3A8A;
        }
        
        .historical-load-btn {
            position: absolute;
            top: 8px; /* Moved up slightly from 12px */
            right: 12px;
            background: #7BEC7B;
            color: #1E3A8A;
            border: none;
            padding: 8px 16px;
            border-radius: 20px;
            font-size: 13px;
            font-weight: 600;
            font-family: var(--font-ui);
            cursor: pointer;
            transition: all 0.2s ease;
            z-index: 10;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        
        .historical-load-btn:hover {
            background: #1E3A8A;
            color: white;
            transform: translateY(-1px);
            box-shadow: 0 4px 8px rgba(30, 58, 138, 0.4);
        }
        
        .historical-load-btn:active {
            transform: translateY(0);
        }
        
        .months-container {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 4px;
            margin-top: 8px; /* Added space above months container */
            max-height: calc(85vh - 250px);
            overflow-y: auto;
            overflow-x: hidden;
            padding-right: 5px;
        }
        
        /* Custom scrollbar for months container */
        .months-container::-webkit-scrollbar {
            width: 6px;
        }
        
        .months-container::-webkit-scrollbar-track {
            background: #f1f1f1;
            border-radius: 3px;
        }
        
        .months-container::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 3px;
        }
        
        .months-container::-webkit-scrollbar-thumb:hover {
            background: #7BEC7B;
        }
        
        .month-card {
            background: #f8f9fa;
            border: 2px solid #e5e7eb;
            border-radius: 6px;
            padding: 6px 4px;
            text-align: center;
        }
        
        .month-name {
            font-size: 10px;
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 4px;
            font-family: var(--font-ui);
        }
        
        .weeks-row {
            display: flex;
            justify-content: center;
            gap: 4px;
            flex-wrap: wrap;
        }
        
        .week-circle {
            width: 22px;
            height: 22px;
            border-radius: 50%;
            border: 2px solid #1E3A8A;
            background: white;
            cursor: pointer;
            transition: all 0.2s ease;
            padding: 0;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .week-circle:hover {
            transform: scale(1.1);
            border-color: #7BEC7B;
        }
        
        .week-circle.selected {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }
        
        .week-circle.selected:hover {
            background: #7BEC7B;
            border-color: #7BEC7B;
        }
        
        /* Week circle tooltip */
        .week-circle {
            position: relative;
        }
        
        .week-circle-tooltip {
            position: absolute;
            right: calc(100% + 8px);
            top: 50%;
            transform: translateY(-50%);
            padding: 6px 10px;
            background: #1E3A8A;
            color: white;
            font-size: 11px;
            font-weight: 600;
            border-radius: 4px;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.2s ease;
            z-index: 2147483000;
            font-family: var(--font-ui);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
        }
        
        .week-circle-tooltip::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 100%;
            transform: translateY(-50%);
            border: 5px solid transparent;
            border-left-color: #1E3A8A;
        }
        
        .week-circle:hover .week-circle-tooltip {
            opacity: 1;
        }
        
        .notification-input {
            width: 280px; /* Shorter width similar to header search (300px) */
            padding: 10px 14px;
            border: 2px solid #1E3A8A;
            border-radius: 25px;
            font-size: 13px;
            background: #f8f9fa;
            color: #333;
            font-family: var(--font-ui);
            transition: all 0.3s ease;
        }
        
        .notification-input::placeholder {
            color: #6b7280;
        }
        
        /* Removed hover effect - using web component now */
        .notification-input:hover {
            /* No hover effect - web component handles this */
        }
        
        .notification-input:focus {
            outline: none;
            border-color: #147CEC;
            background: white;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
            transform: translateY(-1px);
        }
        
        .notification-select {
            width: 100%;
            padding: 10px 14px;
            padding-right: 35px; /* Space for custom arrow */
            border: 2px solid #1E3A8A;
            border-radius: 8px;
            font-size: 13px;
            background-color: white;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%231E3A8A' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
            color: #1E3A8A;
            font-family: var(--font-ui);
            cursor: pointer;
            transition: all 0.3s ease;
            appearance: none;
            -webkit-appearance: none;
            -moz-appearance: none;
        }
        
        .notification-select:hover {
            border-color: #147CEC;
            background-color: #f0f8ff;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23147CEC' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
        }
        
        .notification-select:focus {
            outline: none;
            border-color: #147CEC;
            background-color: white;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23147CEC' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
            box-shadow: 0 0 0 3px rgba(20, 124, 236, 0.2);
        }
        
        .notification-select option {
            background: white;
            color: #1E3A8A;
            padding: 8px;
        }
        
        .notification-select option:hover,
        .notification-select option:checked {
            background: #1E3A8A;
            color: white;
        }
        
        .notification-button {
            background: #1E3A8A;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 25px;
            cursor: pointer;
            font-size: 13px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
        }
        
        .notification-button:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .notification-button-cancel {
            background: #1E3A8A;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 25px;
            cursor: pointer;
            font-size: 13px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
        }
        
        .notification-button-cancel:hover {
            background: #7BEC7B;
            color: #1E3A8A;
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .notification-button-test {
            background: #7BEC7B;
            color: #1E3A8A;
            border: none;
            padding: 10px 20px;
            border-radius: 25px;
            cursor: pointer;
            font-size: 13px;
            font-weight: 600;
            font-family: var(--font-ui);
            letter-spacing: 0.5px;
            transition: all 0.2s ease;
        }
        
        .notification-button-test:hover {
            background: #1E3A8A;
            color: white;
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4);
        }
        
        .notification-button-test:disabled {
            cursor: not-allowed !important;
            opacity: 0.6;
            background: #9ca3af !important;
            color: #6b7280 !important;
            transform: none !important;
            box-shadow: none !important;
        }
        
        .notification-button-test:disabled:hover {
            background: #9ca3af !important;
            color: #6b7280 !important;
            transform: none !important;
            box-shadow: none !important;
        }
        
        /* Disable interactions in settings menu during test email */
        .settings-menu.test-email-loading {
            pointer-events: none;
            cursor: wait;
        }
        
        .settings-menu.test-email-loading * {
            cursor: wait !important;
        }
        
        /* Notification button icons */
        .notification-button,
        .notification-button-cancel,
        .notification-button-test,
        .historical-load-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }
        
        .notification-icon-container {
            position: relative;
            width: 16px;
            height: 16px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .notification-btn-icon {
            width: 16px;
            height: 16px;
            object-fit: contain;
            transition: opacity 0.3s ease;
            flex-shrink: 0;
        }
        
        .notification-btn-icon-normal {
            opacity: 1;
            position: relative;
        }
        
        .notification-btn-icon-hover {
            opacity: 0;
            position: absolute;
            top: 0;
            left: 0;
        }
        
        /* Enregistrer button: white icon normally, blue on hover */
        .notification-button:hover .notification-btn-icon-normal {
            opacity: 0;
        }
        
        .notification-button:hover .notification-btn-icon-hover {
            opacity: 1;
        }
        
        /* Annuler button: white icon normally, blue on hover */
        .notification-button-cancel:hover .notification-btn-icon-normal {
            opacity: 0;
        }
        
        .notification-button-cancel:hover .notification-btn-icon-hover {
            opacity: 1;
        }
        
        /* Tester button: blue icon normally, white on hover (inverted) */
        .notification-button-test .notification-btn-icon-normal {
            opacity: 0;
        }
        
        .notification-button-test .notification-btn-icon-hover {
            opacity: 1;
        }
        
        .notification-button-test:hover .notification-btn-icon-normal {
            opacity: 1;
        }
        
        .notification-button-test:hover .notification-btn-icon-hover {
            opacity: 0;
        }
        
        /* Charger button: blue icon normally, white on hover (inverted) */
        .historical-load-btn .notification-btn-icon-normal {
            opacity: 0;
        }
        
        .historical-load-btn .notification-btn-icon-hover {
            opacity: 1;
        }
        
        .historical-load-btn:hover .notification-btn-icon-normal {
            opacity: 1;
        }
        
        .historical-load-btn:hover .notification-btn-icon-hover {
            opacity: 0;
        }
        
        /* Date Smasher Tool Styles */
        .date-smasher-tool {
            /* Removed background/card styling - now just a container */
            margin: 0;
            padding: 0;
            background: transparent;
            border: none;
        }
        .date-smasher-title {
            margin: 0 0 5px 0;
            font-size: 14px;
            font-weight: 600;
            color: #1E3A8A;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .date-smasher-title::before {
            content: "📅";
            font-size: 16px;
        }
        .date-smasher-subtitle {
            margin: 0 0 15px 0;
            font-size: 11px;
            font-weight: 400;
            color: #666;
            font-style: italic;
        }
        .date-slider-group {
            margin-bottom: 20px;
        }
        .date-slider-group:last-child {
            margin-bottom: 0;
        }
        .date-slider-label {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 16px;
            font-weight: 600;
            color: #1E3A8A; /* Dark blue like other filter labels */
            margin-bottom: 12px;
        }
        .date-slider-label .date-icon {
            width: 18px;
            height: 18px;
            opacity: 0.8;
            cursor: pointer;
            transition: transform 0.25s ease, opacity 0.25s ease;
        }
        .date-slider-label:hover .date-icon {
            transform: scale(1.15);
            opacity: 1;
        }
        .date-slider-label .date-icon:active {
            transform: scale(0.95);
        }
        .date-slider-container {
            margin: 10px 0;
            padding: 0 5px;
        }
        .date-slider {
            height: 6px;
            margin: 15px 0;
        }
        .date-slider .noUi-connect {
            background: #1E3A8A;
        }
        .date-slider .noUi-handle {
            width: 20px;
            height: 20px;
            right: -10px;
            top: -7px;
            border: 2px solid #fff;
            background: #1E3A8A; /* Dark blue like distance slider */
            border-radius: 50%;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
            cursor: grab;
            transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
        }
        /* Remove any inner elements that create lines - noUiSlider default styling */
        .date-slider .noUi-handle::before,
        .date-slider .noUi-handle::after {
            display: none !important;
            content: none !important;
        }
        /* Hide any child elements inside the handle */
        .date-slider .noUi-handle * {
            display: none !important;
        }
        .date-slider .noUi-handle:hover {
            background: #7BEC7B; /* Bright green on hover */
            border-color: #7BEC7B;
            box-shadow: 0 2px 6px rgba(123, 236, 123, 0.4);
        }
        .date-slider .noUi-handle:active {
            cursor: grabbing;
            background: #7BEC7B; /* Keep green when dragging */
        }
        .date-slider .noUi-handle:focus {
            outline: none;
            box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.2);
        }
        .date-slider.precise-mode .noUi-connect {
            background: #7BEC7B;
        }
        .date-slider.precise-mode .noUi-handle {
            background: #7BEC7B; /* Green background in precise mode */
            border-color: #7BEC7B;
            box-shadow: 0 2px 6px rgba(123, 236, 123, 0.4);
        }
        .date-slider.precise-mode .noUi-handle:hover {
            background: #7BEC7B; /* Keep green on hover in precise mode */
            border-color: #7BEC7B;
            box-shadow: 0 2px 8px rgba(123, 236, 123, 0.6);
        }
        .date-slider-values {
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-size: 18px; /* 25% larger than previous 14px */
            color: #1E3A8A;
            font-weight: 600;
            margin-top: 5px;
            padding: 0 5px;
        }
        .date-slider-separator {
            color: #7BEC7B;
            margin: 0 5px;
        }
        .calendrier-count-in-filter {
            font-size: 12px;
            color: #666;
            margin-bottom: 8px;
            font-style: italic;
        }
        .calendrier-count-in-filter .count-number {
            font-weight: 600;
            color: #147CEC;
        }
        /* Date picker popover: sheet with tucked green X (match filters/favoris) */
        .date-picker-popover {
            position: fixed;
            z-index: 1100;
            display: none;
            background: transparent;
            padding: 0;
        }
        .date-picker-popover.is-open {
            display: block;
        }
        /* Tab is only a hit-target host for the close control (no folder ear) */
        .date-picker-popover-tab {
            position: absolute;
            top: 6px;
            right: 6px;
            width: 40px;
            height: 40px;
            margin: 0;
            padding: 0;
            border: none;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 3;
        }
        .date-picker-popover-close {
            box-sizing: border-box;
            width: 40px;
            height: 40px;
            min-width: 40px;
            max-width: 40px;
            max-height: 40px;
            margin: 0;
            padding: 0;
            border: 3px solid #1E3A8A;
            border-radius: 50%;
            background: #7BEC7B;
            color: #1E3A8A;
            font-size: 24px;
            font-weight: 600;
            line-height: 1;
            font-family: var(--font-ui);
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.2);
        }
        .date-picker-popover-close:hover {
            background: #1E3A8A;
            color: #fff;
            transform: translateY(-1px);
            box-shadow: 0 4px 14px rgba(30, 58, 138, 0.35);
        }
        .date-picker-popover-body {
            border: 3px solid #1E3A8A;
            border-radius: 8px;
            background: #fff;
            /* Clear tucked corner X (same geometry as filter sheet) */
            padding: 12px 52px 12px 12px;
            box-shadow: 0 4px 16px rgba(30, 58, 138, 0.15);
            scrollbar-width: thin;
            scrollbar-color: #1E3A8A transparent;
        }
        .date-picker-popover-body::-webkit-scrollbar {
            width: 8px;
        }
        .date-picker-popover-body::-webkit-scrollbar-track {
            background: transparent;
        }
        .date-picker-popover-body::-webkit-scrollbar-thumb {
            background: #1E3A8A;
            border-radius: 8px;
        }
        .date-picker-popover-body::-webkit-scrollbar-thumb:hover {
            background: #147CEC;
        }
        .date-picker-calendars {
            display: flex;
            gap: 20px;
        }
        .date-picker-cal {
            min-width: 176px;
        }
        .date-picker-cal-label {
            font-size: 11px;
            font-weight: 600;
            color: #1E3A8A;
            margin-bottom: 6px;
            text-align: center;
        }
        .date-picker-cal-nav {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 6px;
            margin-bottom: 6px;
        }
        .date-picker-cal-nav .cal-nav-group {
            display: inline-flex;
            align-items: center;
            gap: 0;
            min-width: 0;
            flex: 1 1 50%;
            justify-content: center;
        }
        .date-picker-cal-nav button {
            width: 22px;
            height: 22px;
            padding: 0;
            border: none;
            background: none;
            color: #1E3A8A;
            font-size: 14px;
            cursor: pointer;
            border-radius: 4px;
            flex: 0 0 auto;
        }
        .date-picker-cal-nav button:hover {
            background: #7BEC7B;
            color: #fff;
        }
        .date-picker-cal-nav .cal-nav-text {
            font-size: 11px;
            font-weight: 600;
            color: #1E3A8A;
            min-width: 2.6rem;
            text-align: center;
            line-height: 1.2;
        }
        .date-picker-cal-nav .cal-nav-year-label {
            min-width: 2.4rem;
        }
        .date-picker-cal-nav span {
            font-size: 12px;
            font-weight: 600;
            color: #1E3A8A;
        }
        .date-picker-cal-grid {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 2px;
            font-size: 11px;
        }
        .date-picker-cal-dow {
            text-align: center;
            font-weight: 600;
            color: #1E3A8A;
            padding: 2px 0;
        }
        .date-picker-cal-day {
            text-align: center;
            padding: 0;
            width: 26px;
            height: 26px;
            min-width: 26px;
            min-height: 26px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            border-radius: 50%;
            color: #333;
            border: 1px solid #1E3A8A;
            background: transparent;
        }
        .date-picker-cal-day:hover {
            background: rgba(123, 236, 123, 0.3);
        }
        .date-picker-cal-day:focus {
            outline: 1px solid #1E3A8A;
            outline-offset: 1px;
        }
        .date-picker-cal-day.other-month {
            color: #bbb;
            cursor: default;
            border-color: rgba(30, 58, 138, 0.35);
        }
        .date-picker-cal-day.empty {
            border: none;
            background: none;
            visibility: hidden;
            pointer-events: none;
        }
        .date-picker-cal-day.selected {
            background: #7BEC7B;
            color: #fff;
            font-weight: 600;
            border-color: #1E3A8A;
        }
        .date-picker-cal-day.in-range {
            background: rgba(123, 236, 123, 0.25);
            border-color: #1E3A8A;
        }
        .date-slider-values span {
            transition: transform 0.3s ease, color 0.3s ease;
            display: inline-flex;
            align-items: center;
        }
        .date-slider-values span.date-hover-scroll-target {
            cursor: ns-resize;
        }
        .date-slider-values span:hover {
            transform: translateY(-3px);
            color: #147CEC;
        }
        @media (max-width: 768px) {
            .date-smasher-tool {
                padding: 0;
                margin: 0;
            }
            .date-slider-group {
                margin-bottom: 15px;
            }
            .date-slider-label {
                font-size: 14px;
            }
            .date-slider-values {
                font-size: 18px;
                color: #1E3A8A;
                font-weight: 600;
            }

            /* Date calendars: stacked sheet, larger taps, centered on screen */
            .date-picker-popover.date-picker-popover--mobile {
                width: min(360px, calc(100vw - 24px));
                max-height: min(86dvh, 720px);
                z-index: 1200;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-tab {
                top: 6px;
                right: 6px;
                width: 40px;
                height: 40px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-close {
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                font-size: 24px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-body {
                padding: 14px 52px 16px 12px;
                max-height: min(78dvh, 680px);
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                border-radius: 8px;
                scrollbar-width: thin;
                scrollbar-color: #1E3A8A transparent;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-body::-webkit-scrollbar {
                width: 8px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-body::-webkit-scrollbar-track {
                background: transparent;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-body::-webkit-scrollbar-thumb {
                background: #1E3A8A;
                border-radius: 8px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-popover-body::-webkit-scrollbar-thumb:hover {
                background: #147CEC;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-calendars {
                flex-direction: column;
                gap: 18px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal {
                min-width: 0;
                width: 100%;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-nav {
                gap: 8px;
                margin-bottom: 10px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-nav button {
                width: 32px;
                height: 32px;
                font-size: 18px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-nav .cal-nav-text {
                font-size: 13px;
                min-width: 3rem;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-grid {
                gap: 4px;
                font-size: 13px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-day {
                width: 36px;
                height: 36px;
                min-width: 36px;
                min-height: 36px;
            }
            .date-picker-popover.date-picker-popover--mobile .date-picker-cal-dow {
                font-size: 12px;
                padding: 4px 0;
            }
        }

        /* Publication lazy hydration (list chunks + pin popup) */
        .list-chunk-loading {
            display: flex;
            align-items: center;
            justify-content: center;
            min-height: 120px;
            padding: 24px 16px;
            color: #666;
            font-size: 14px;
        }
        .list-chunk-loading-text {
            font-weight: 400;
            color: #666;
            animation: popupLoadingFlashGreen 1.2s ease-in-out infinite;
        }
        /* Same grey + green flash pulse as intro step-4 "Chargement des données..." */
        .popup-content-loading {
            min-width: 180px;
            padding: 10px 8px 8px;
        }
        .popup-loading-msg {
            display: block;
            margin: 0;
            padding: 0;
            border: none;
            color: #666;
            font-size: 14px;
            font-weight: 400;
            font-style: normal;
            line-height: 1.35;
            text-align: center;
            /* Explicit #666 endpoints: flashGreen's `inherit` depends on parent color */
            animation: popupLoadingFlashGreen 1.2s ease-in-out infinite;
        }
        @keyframes popupLoadingFlashGreen {
            0%, 100% { color: #666; }
            25%, 75% { color: #22c55e; }
            50% { color: #16a34a; }
        }
        .popup-expand-btn {
            display: none;
        }
        .popup-slim-expand {
            display: none;
        }


        /* Desktop: hide mobile-only header bits (base .geogeo-header-mobile-only is display:none) */
        @media (min-width: 769px) {
            .geogeo-header-mobile-only { display: none !important; }
            .header-mobile-brand-block,
            .header-mobile-row { display: contents; }
            .geogeo-mobile-fab,
            .geogeo-mobile-sheet-overlay,
            .geogeo-list-mobile-bar,
            .geogeo-list-mobile-drawer { display: none !important; }
        }

        /* --- Pro soft gates: dim surface only; ribbon + tooltips stay opaque --- */
        .geogeo-pro-gate,
        .geogeo-pro-gate-self {
            position: relative;
        }
        .geogeo-pro-gate--locked {
            cursor: pointer;
        }
        .geogeo-pro-gate--locked .geogeo-pro-gate-surface,
        .geogeo-pro-gate--locked > .toggle-icon-container,
        .geogeo-pro-gate--locked > .auth-icon-container {
            opacity: 0.42;
        }
        .geogeo-pro-gate-surface {
            display: contents;
        }
        .header-ai-btn.geogeo-pro-gate-self .geogeo-pro-gate-surface,
        .csv-export-gate-surface,
        .saved-searches-gate-surface,
        .favorites-export-gate-surface {
            display: flex;
            align-items: center;
        }
        .header-ai-btn.geogeo-pro-gate-self .geogeo-pro-gate-surface {
            gap: 3px;
            flex: 1 1 auto;
            width: 100%;
            min-width: 0;
            justify-content: center; /* center text+icon as a group; medal is outside this box */
        }
        @media (min-width: 769px) {
            /* DOM is text→icon; desktop flips to icon→text */
            .header-ai-btn.geogeo-pro-gate-self .geogeo-pro-gate-surface {
                flex-direction: row-reverse;
            }
        }
        .header-ai-btn {
            gap: 3px;
        }
        .csv-export-gate-surface {
            gap: 8px;
        }
        .saved-searches-gate-surface {
            gap: 6px;
        }
        .favorites-export-gate-surface {
            gap: 4px;
        }
        /* Inner slot buttons: parent gate receives click + tooltip when locked */
        .geogeo-pro-gate--locked .saved-search-btn {
            pointer-events: none;
        }

        /* Pill buttons: dim outer fill; I.A. keeps clearer text/icon than CSV/export */
        #ai-tool-btn.geogeo-pro-gate--locked,
        #csv-export-button.geogeo-pro-gate--locked,
        #favorites-export-btn.geogeo-pro-gate--locked {
            background: rgba(123, 236, 123, 0.42);
            color: rgba(30, 58, 138, 0.55);
            box-shadow: none;
        }
        #ai-tool-btn.geogeo-pro-gate--locked {
            color: rgba(30, 58, 138, 0.85);
        }
        #csv-export-button.geogeo-pro-gate--locked .geogeo-pro-gate-surface,
        #favorites-export-btn.geogeo-pro-gate--locked .geogeo-pro-gate-surface {
            opacity: 0.42;
        }
        #ai-tool-btn.geogeo-pro-gate--locked .geogeo-pro-gate-surface {
            opacity: 0.78;
        }
        .geogeo-pro-gate--locked.header-toggle:hover,
        .geogeo-pro-gate--locked.header-ai-btn:hover,
        .header-right-buttons .geogeo-pro-gate--locked.header-ai-btn:hover {
            background: rgba(123, 236, 123, 0.42);
            color: rgba(30, 58, 138, 0.85);
            box-shadow: none;
            transform: none;
        }
        .geogeo-pro-gate--locked.csv-export-button:hover,
        .geogeo-pro-gate--locked.favorites-export-btn:hover,
        .geogeo-pro-gate--locked#favorites-export-btn:hover {
            background: rgba(123, 236, 123, 0.42);
            color: rgba(30, 58, 138, 0.55);
            transform: none;
            box-shadow: none;
        }
        /* Locked I.A.: clearer surface (0.78); no hover icon swap */
        #ai-tool-btn.geogeo-pro-gate--locked .geogeo-pro-gate-surface .ai-icon-normal,
        #ai-tool-btn.geogeo-pro-gate--locked.header-ai-btn:hover .geogeo-pro-gate-surface .ai-icon-normal,
        #ai-tool-btn.geogeo-pro-gate--locked.header-toggle:hover .geogeo-pro-gate-surface .ai-icon-normal {
            opacity: 1;
        }
        #ai-tool-btn.geogeo-pro-gate--locked .geogeo-pro-gate-surface .ai-icon-hover,
        #ai-tool-btn.geogeo-pro-gate--locked.header-ai-btn:hover .geogeo-pro-gate-surface .ai-icon-hover,
        #ai-tool-btn.geogeo-pro-gate--locked.header-toggle:hover .geogeo-pro-gate-surface .ai-icon-hover {
            opacity: 0;
        }
        #csv-export-button.geogeo-pro-gate--locked .geogeo-pro-gate-surface .csv-export-icon-normal,
        #csv-export-button.geogeo-pro-gate--locked:hover .geogeo-pro-gate-surface .csv-export-icon-normal {
            opacity: 1;
        }
        #csv-export-button.geogeo-pro-gate--locked .geogeo-pro-gate-surface .csv-export-icon-hover,
        #csv-export-button.geogeo-pro-gate--locked:hover .geogeo-pro-gate-surface .csv-export-icon-hover {
            opacity: 0;
        }
        .filter-source-toggle-wrap {
            flex-shrink: 0;
        }
        .filter-source-toggle-wrap .geogeo-pro-gate-surface,
        .filter-source-toggle-wrap .canadabuys-toggle-surface {
            display: block;
        }
        .canadabuys-label-gate {
            position: relative;
            display: inline-flex;
            align-items: center;
        }
        .canadabuys-label-gate.geogeo-pro-gate--locked {
            opacity: 1;
            cursor: pointer;
        }
        .canadabuys-label-gate.geogeo-pro-gate--locked .filter-source-label {
            color: #9CA3AF;
        }
        #source-canadabuys-row:has(#source-canadabuys-gate.geogeo-pro-gate--locked) .canadabuys-toggle-surface {
            opacity: 1;
        }
        #source-canadabuys-row:has(#source-canadabuys-gate.geogeo-pro-gate--locked) .filter-source-toggle {
            background: transparent;
            border-color: rgba(30, 58, 138, 0.42);
            pointer-events: none;
        }
        #source-canadabuys-row:has(#source-canadabuys-gate.geogeo-pro-gate--locked) .filter-source-toggle .filter-source-thumb {
            background: rgba(30, 58, 138, 0.42);
        }
        .geogeo-pro-gate--locked .filter-source-toggle {
            pointer-events: none;
        }
        .geogeo-pro-ribbon {
            position: absolute;
            top: -10px;
            right: -10px;
            width: 36px;
            height: 36px;
            opacity: 1;
            pointer-events: none;
            z-index: 5;
            display: none;
        }
        .geogeo-pro-gate--locked > .geogeo-pro-ribbon,
        .geogeo-pro-gate--locked.geogeo-pro-gate-self > .geogeo-pro-ribbon {
            display: block;
        }
        #source-canadabuys-gate.geogeo-pro-gate--locked .geogeo-pro-ribbon {
            top: -20px;
            right: -18px;
        }
        #saved-searches-gate.geogeo-pro-gate--locked .geogeo-pro-ribbon {
            top: -18px;
            right: -16px;
        }
        #ai-tool-btn.geogeo-pro-gate--locked .geogeo-pro-ribbon {
            top: -10px;
            right: -10px;
        }

        /* ==========================================================================
           Restored settings-menu design (June 12 final: pro-gated regions, tab
           labels, alert toggle row, historical month picker) — recovered from
           session history after the workflow split.
           ========================================================================== */

        /* Historical Data Section */
        .historical-data-section {
            margin-top: 0; /* Spacing handled by notification panel margin-bottom */
        }

        /* Settings Pro regions: free plan — tabs dimmed; blur only inside each feature card */
        .settings-pro-region {
            position: relative;
        }

        .geogeo-settings-gated-card {
            position: relative;
            overflow: hidden;
            isolation: isolate;
            border-radius: 0 15px 15px 15px;
        }

        .geogeo-settings-gated-card > .notification-panel,
        .geogeo-settings-gated-card > .historical-panel {
            margin-bottom: 0;
        }

        #settings-alerts-region .geogeo-settings-gated-card {
            margin-bottom: 20px;
        }

        #settings-historical-region .geogeo-settings-gated-card {
            margin-bottom: 12px;
        }

        /* Dim inactive tabs only — active tab stays full white to fuse with card */
        .settings-menu.plan-free #settings-alerts-region .notification-tabs,
        .settings-menu.plan-free #settings-historical-region .historical-tabs {
            pointer-events: none;
        }

        .settings-menu.plan-free #settings-alerts-region .notification-tab:not(.active),
        .settings-menu.plan-free #settings-historical-region .historical-tab:not(.active) {
            opacity: 0.82;
        }

        .settings-menu.plan-free #settings-alerts-region .notification-tab.active,
        .settings-menu.plan-free #settings-historical-region .historical-tab.active {
            opacity: 1;
        }

        .settings-menu.plan-free .geogeo-settings-gated-card .notification-panel,
        .settings-menu.plan-free .geogeo-settings-gated-card .historical-panel {
            pointer-events: none;
            user-select: none;
        }

        /*
         * Blur on each panel ::after (not gated-card) so it sits above in-panel UI.
         * .historical-load-btn used z-index: 10 globally — kept below blur here.
         */
        .settings-menu.plan-free .geogeo-settings-gated-card .historical-load-btn {
            z-index: 2;
        }

        /* z-index only — do not override Bidou position:absolute (desktop overlay layout) */
        .settings-menu.plan-free .geogeo-settings-gated-card .notification-bidou-image {
            z-index: 2;
        }

        .settings-menu.plan-free .geogeo-settings-gated-card .notification-distance-slider,
        .settings-menu.plan-free .geogeo-settings-gated-card .notification-distance-slider .slider {
            z-index: 2;
        }

        .settings-menu.plan-free .geogeo-settings-gated-card .notification-panel::after,
        .settings-menu.plan-free .geogeo-settings-gated-card .historical-panel::after {
            content: '';
            position: absolute;
            inset: 0;
            z-index: 11;
            pointer-events: none;
            border-radius: inherit;
            -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
            -webkit-mask-image: radial-gradient(
                ellipse 92% 82% at 50% 44%,
                rgba(0, 0, 0, 1) 0%,
                rgba(0, 0, 0, 0.94) 18%,
                rgba(0, 0, 0, 0.78) 38%,
                rgba(0, 0, 0, 0.58) 55%,
                rgba(0, 0, 0, 0.4) 72%,
                rgba(0, 0, 0, 0.32) 90%,
                rgba(0, 0, 0, 0.2) 96%,
                rgba(0, 0, 0, 0.12) 100%
            );
            mask-image: radial-gradient(
                ellipse 92% 82% at 50% 44%,
                rgba(0, 0, 0, 1) 0%,
                rgba(0, 0, 0, 0.94) 18%,
                rgba(0, 0, 0, 0.78) 38%,
                rgba(0, 0, 0, 0.58) 55%,
                rgba(0, 0, 0, 0.4) 72%,
                rgba(0, 0, 0, 0.32) 90%,
                rgba(0, 0, 0, 0.2) 96%,
                rgba(0, 0, 0, 0.12) 100%
            );
        }

        .geogeo-settings-pro-overlay {
            display: none;
            position: absolute;
            inset: 0;
            z-index: 12;
            align-items: center;
            justify-content: center;
            padding: 12px;
            box-sizing: border-box;
            cursor: pointer;
            background: transparent;
        }

        .settings-menu.plan-free .geogeo-settings-gated-card .geogeo-settings-pro-overlay {
            display: flex;
        }

        .settings-menu.plan-pro .geogeo-settings-pro-overlay {
            display: none;
        }

        .geogeo-settings-pro-overlay-card {
            position: relative;
            flex-shrink: 0;
            background: #fff;
            border: 2px solid #1E3A8A;
            border-radius: 12px;
            padding: 18px 22px;
            max-width: 260px;
            width: auto;
            text-align: center;
            box-shadow: 0 4px 16px rgba(30, 58, 138, 0.18);
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 8px;
        }

        .geogeo-settings-pro-overlay-ribbon {
            width: 32px;
            height: 32px;
            object-fit: contain;
        }

        .geogeo-settings-pro-overlay-text {
            margin: 0;
            font-size: 15px;
            font-weight: 600;
            color: #1E3A8A;
            font-family: var(--font-ui);
            line-height: 1.35;
        }

        /* Historical month picker squares (JS builds grid inside .months-container) */
        .historical-month-square {
            width: 28px;
            height: 28px;
            border-radius: 4px;
            border: 2px solid #1E3A8A;
            background: white;
            cursor: pointer;
            transition: all 0.2s ease;
            padding: 0;
            display: block;
            box-sizing: border-box;
        }

        .historical-month-square:hover {
            transform: scale(1.08);
            border-color: #7BEC7B;
        }

        .historical-month-square.selected {
            background: #1E3A8A;
            border-color: #1E3A8A;
        }

        .historical-month-square.selected:hover {
            background: #7BEC7B;
            border-color: #7BEC7B;
        }

        /* Long/short label pairs: desktop shows long, mobile swaps (see media block) */
        .settings-tab-label-short {
            display: none;
        }

        .historical-panel-title-short {
            display: none;
        }

        .tab-checkmark {
            margin-left: 8px;
            vertical-align: middle;
            display: inline-block;
        }

        /* Free plan: roomier footer pills for all visible actions (mobile shows support) */
        .settings-menu.plan-free .settings-footer-button {
            min-height: 44px;
            padding: 12px 16px;
            font-size: 13px;
        }
        
        .settings-menu.plan-free .settings-footer-card {
            border: 2px solid #7BEC7B;
        }

        /* Fuse visible panels to tab strip (gated-card wrapper must pull up too) */
        .notification-tabs.active ~ .geogeo-settings-gated-card {
            margin-top: -2px;
        }

        .notification-tabs.active ~ .geogeo-settings-gated-card .notification-panel:not(.hidden),
        .notification-tabs.active ~ .notification-panel:not(.hidden) {
            border-top: none;
            border-top-left-radius: 0 !important;
            border-top-right-radius: 15px !important;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            margin-top: -2px;
        }

        .historical-tabs ~ .geogeo-settings-gated-card {
            margin-top: -2px;
        }

        .historical-tabs ~ .geogeo-settings-gated-card .historical-panel:not(.hidden),
        .historical-tabs ~ .historical-panel:not(.hidden) {
            border-top: none;
            border-top-left-radius: 0 !important;
            border-top-right-radius: 15px !important;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            margin-top: -2px;
        }

        /* Search block: row 1 = switch (left); row 2 = label; row 3 = input + Bidou overlay */
        .notification-search-block {
            margin-bottom: 6px;
        }

        .notification-alert-switch-row {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .notification-alert-status-icon {
            width: 20px;
            height: 20px;
            object-fit: contain;
            flex-shrink: 0;
        }

        .notification-search-top-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin-bottom: 6px;
        }

        .notification-search-inline-icon {
            position: absolute;
            left: 10px;
            top: 50%;
            transform: translateY(-50%);
            pointer-events: none;
            font-size: 13px;
            color: #6b7280;
        }

        .notification-search-block .notification-alert-switch-row {
            margin: 0 0 6px 0;
        }

        .notification-search-block .notification-label {
            margin-bottom: 4px;
        }

        .notification-search-container {
            position: relative;
            padding-right: 168px;
        }

        .notification-search-input-wrapper {
            min-width: 0;
        }

        .notification-search-container .notification-input {
            width: 100%;
            box-sizing: border-box;
        }

        /* Bidou overlays search row (must live inside .notification-search-container) */
        .notification-bidou-image {
            position: absolute;
            right: 0;
            top: 50%;
            transform: translateY(-50%);
            width: 160px;
            height: auto;
            max-height: 72px;
            object-fit: contain;
            object-position: right center;
            pointer-events: none;
        }

        /* Phase 4 mobile settings: must follow desktop .settings-menu (cascade) */
        @media (max-width: 768px) {
            .settings-menu {
                top: var(--geogeo-mobile-header-height);
                left: 0;
                right: 0;
                bottom: var(--geogeo-mobile-fab-bottom-inset);
                width: 100%;
                max-width: 100%;
                max-height: none;
                overflow: hidden;
                border-radius: 0;
                box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
                transform: none;
                transition: opacity 0.15s ease, visibility 0.15s ease;
                visibility: hidden;
                pointer-events: none;
                opacity: 0;
            }

            .settings-menu.open {
                max-height: none;
                transform: none;
                visibility: visible;
                pointer-events: auto;
                opacity: 1;
                transition: opacity 0.15s ease, visibility 0s;
            }

            .settings-menu-content {
                width: 100%;
                min-width: 0;
                max-width: 100%;
                height: 100%;
                max-height: none;
                margin: 0;
                padding: 6px 12px 16px 12px;
                box-sizing: border-box;
                overflow-y: auto;
                overflow-x: hidden;
                -webkit-overflow-scrolling: touch;
                scrollbar-color: #7BEC7B transparent;
            }

            .settings-menu-content::-webkit-scrollbar {
                width: 8px;
            }

            .settings-menu-content::-webkit-scrollbar-thumb {
                background: #7BEC7B;
                border-radius: 8px;
            }

            .settings-tab-label-long {
                display: none;
            }

            .settings-tab-label-short {
                display: inline;
            }

            .settings-tab-label--base-only-long {
                display: none;
            }

            .historical-panel-title-long {
                display: none;
            }

            .historical-panel-title-short {
                display: inline;
            }

            .settings-user-email {
                font-size: 14px;
                flex-wrap: wrap;
                min-width: 0;
            }

            .settings-user-email .user-email-text {
                min-width: 0;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .settings-menu .notification-form-row {
                flex-direction: column;
                gap: 12px;
            }

            .settings-menu .notification-form-row .notification-form-group,
            .settings-menu .notification-panel,
            .settings-menu .historical-data-section,
            .settings-menu .historical-panel {
                width: 100%;
                max-width: 100%;
                min-width: 0;
                box-sizing: border-box;
            }

            .settings-menu .notification-distance-slider-label--row {
                flex-wrap: wrap;
            }

            .settings-menu .notification-search-container {
                max-width: 100%;
                padding-right: 104px;
            }

            .settings-menu .notification-bidou-image {
                width: 96px;
                max-height: 56px;
            }

            .notification-tabs.active {
                width: 100%;
                max-width: 100%;
                min-width: 0;
                height: auto;
                min-height: 48px;
                overflow-x: auto;
                overflow-y: hidden;
                flex-wrap: nowrap;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: thin;
            }

            .notification-tab {
                min-width: 48px;
                padding: 6px 8px 8px;
                margin-top: 8px;
                gap: 4px;
                flex-shrink: 0;
            }

            .notification-tab.active {
                margin-top: 0;
                padding: 10px 8px;
                border-bottom-color: #fff;
                border-bottom-width: 2px;
            }

            .notification-tab .tab-checkmark {
                margin-left: 2px;
                width: 14px;
                height: 14px;
            }

            .notification-tab .tab-alert-icon {
                width: 16px;
                height: 16px;
            }

            /* Historical years: top tab row (unchanged layout), sideways year only */
            .settings-menu .historical-tabs {
                flex-direction: row;
                align-items: flex-end;
                width: 100%;
                max-width: 100%;
                min-width: 0;
                height: auto;
                min-height: 48px;
                overflow-x: auto;
                overflow-y: hidden;
                flex-wrap: nowrap;
                -webkit-overflow-scrolling: touch;
                margin-bottom: -2px;
                margin-right: 0;
                scrollbar-width: thin;
            }

            .settings-menu .historical-tab {
                flex-direction: row;
                justify-content: center;
                align-items: center;
                width: auto;
                min-width: 32px;
                min-height: 44px;
                padding: 4px 6px 6px;
                margin-top: 8px;
                margin-right: 0;
                gap: 0;
                flex-shrink: 0;
                border-top-left-radius: 12px;
                border-top-right-radius: 12px;
                border-bottom-left-radius: 0;
                border-bottom-right-radius: 0;
            }

            .settings-menu .historical-tab:first-child,
            .settings-menu .historical-tab:last-child {
                border-top-left-radius: 12px;
                border-top-right-radius: 12px;
                border-bottom-left-radius: 0;
                border-bottom-right-radius: 0;
            }

            .settings-menu .historical-tab.active {
                margin-top: 0;
                padding: 6px 6px 8px;
                border-bottom-color: #fff;
                border-bottom-width: 2px;
            }

            .settings-menu .historical-tab:hover:not(.active) {
                margin-top: 6px;
                margin-right: 0;
            }

            .settings-menu .historical-tab .tab-calendar-icon,
            .settings-menu .historical-tab .tab-checkmark {
                display: none !important;
            }

            .settings-menu .historical-tab .settings-tab-label {
                display: flex;
                align-items: center;
                justify-content: center;
                width: 1.25em;
                min-height: 2.5em;
            }

            .settings-menu .historical-tab .settings-tab-label-short {
                display: inline-block;
                transform: rotate(-90deg);
                white-space: nowrap;
                font-size: 11px;
                line-height: 1;
            }

            .settings-menu .historical-tabs ~ .geogeo-settings-gated-card .historical-panel:not(.hidden),
            .settings-menu .historical-tabs ~ .historical-panel:not(.hidden) {
                width: 100%;
                margin-top: -2px;
                margin-left: 0;
                border-top: none;
                border-top-left-radius: 0 !important;
            }

            .settings-menu .months-container {
                grid-template-columns: repeat(3, 1fr);
                max-height: none;
            }

            .settings-menu .historical-month-square {
                width: 26px;
                height: 26px;
            }
        }


        /* ==========================================================================
           Restored connecter + paywall modal design (June 6 final) — 2-card
           paywall (Gratuit + Pro), speech-bubble Bidou, pill plan columns in the
           Se connecter modal, footer close buttons. Recovered from session history.
           ========================================================================== */

        /* Paywall: Gratuit card tweaks */
        .plan-card.gratuit .plan-billing-toggle {
            display: none; /* Hide toggle for free plan */
        }

        .plan-card.gratuit .plan-features {
            align-self: center;
            width: min(100%, 15.5rem);
            margin-left: auto;
            margin-right: auto;
            text-align: left;
            align-items: stretch;
        }

        .plan-card.gratuit .plan-features li {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: flex-start;
            width: 100%;
            margin: 0;
            color: #1E3A8A;
        }

        .plan-card.gratuit .plan-features .feature-icon {
            margin-right: 10px;
            flex-shrink: 0;
        }

        .plan-card.pro .plan-features li {
            color: #1E3A8A;
            font-family: var(--font-ui);
            font-weight: 400;
        }

        /* Pro only: breathing room above S'abonner (keeps margin-top: auto on button) */
        .plan-card.pro .plan-features {
            padding-bottom: 18px;
        }

        /* Bidou + speech bubble in the Gratuit card */
        .gratuit-bidou-wrap {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            width: 100%;
            margin: 15px 0;
            min-height: 0;
        }

        /* Soft navy glass — calmer than comic black/white sticker */
        .gratuit-speech-bubble {
            position: relative;
            align-self: flex-end;
            z-index: 2;
            max-width: 88%;
            margin: 0 0 18px;
            padding: 12px 18px 14px;
            background: rgba(30, 58, 138, 0.10);
            border: 2px solid rgba(30, 58, 138, 0.55);
            border-radius: 24px;
            box-shadow: none;
            text-align: center;
            font-family: var(--font-ui);
            pointer-events: none;
            color: #1E3A8A;
            backdrop-filter: blur(2px);
            -webkit-backdrop-filter: blur(2px);
        }

        /* Tail: stacked triangles (navy outline + matching fill) */
        .gratuit-speech-bubble::before {
            content: '';
            position: absolute;
            bottom: -11px;
            left: 22%;
            transform: translateX(-50%);
            width: 0;
            height: 0;
            border-left: 11px solid transparent;
            border-right: 11px solid transparent;
            border-top: 12px solid rgba(30, 58, 138, 0.55);
        }

        .gratuit-speech-bubble::after {
            content: '';
            position: absolute;
            bottom: -7px;
            left: 22%;
            transform: translateX(-50%);
            width: 0;
            height: 0;
            border-left: 8px solid transparent;
            border-right: 8px solid transparent;
            /* Match card wash so the tail does not flash white */
            border-top: 9px solid rgba(236, 240, 248, 0.96);
        }

        .gratuit-speech-line {
            display: block;
            font-size: 20px;
            font-weight: 600;
            color: #1E3A8A;
            line-height: 1.2;
        }

        .gratuit-speech-line + .gratuit-speech-line {
            margin-top: 2px;
            font-size: 20px;
            font-weight: 600;
            color: #1E3A8A;
        }

        .gratuit-image {
            width: 60%;
            height: auto;
            margin: 0;
            display: block;
            object-fit: contain;
            flex-shrink: 0;
            align-self: flex-start;
        }

        /* Se connecter modal: plan section divider + gaps */
        .auth-plan-section {
            border-top: 1px solid #7BEC7B;
            margin-top: 8px;
            padding-top: 8px;
        }

        /* Connexion modal: plan title/footer gaps (desktop only; mobile rules in @768 block) */
        @media (min-width: 769px) {
            .auth-modal-content .auth-plan-section .auth-plan-title {
                margin-bottom: 16px;
            }

            .auth-modal-content .auth-plan-section + .auth-modal-footer {
                margin-top: 64px;
                padding-top: 16px;
            }
        }

        /* Se connecter modal: pill plan columns around center image */
        .auth-plan-buttons-row {
            display: flex;
            align-items: flex-start;
            justify-content: center;
            gap: 12px;
            margin-bottom: 4px;
            margin-top: -30px;
        }

        /* Connexion modal plan row: desktop only (mobile rules live in @768 block) */
        @media (min-width: 769px) {
            .auth-modal-content .auth-plan-buttons-row {
                align-items: flex-end;
            }

            .auth-modal-content .auth-plan-plan-col {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                width: 160px;
                min-height: 100px;
                flex-shrink: 0;
                border-radius: 25px;
                box-sizing: border-box;
                padding: 16px 12px;
                gap: 6px;
                margin-top: 50px;
                align-self: flex-end;
                transition: background 0.2s ease, color 0.2s ease;
            }

            .auth-modal-content .auth-plan-plan-col--gratuit {
                background: #1E3A8A;
                color: #fff;
            }

            .auth-modal-content .auth-plan-plan-col--pro {
                background: #7BEC7B;
                color: #1E3A8A;
            }

            .auth-modal-content .auth-plan-plan-col--gratuit:has(.plan-gratuit-button:hover) {
                background: #7BEC7B;
                color: #1E3A8A;
            }

            .auth-modal-content .auth-plan-plan-col--pro:has(.plan-pro-button:hover) {
                background: #1E3A8A;
                color: #fff;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button {
                width: 100%;
                height: auto;
                min-height: 0;
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                padding: 0;
                gap: 6px;
                border-radius: 0;
                background: transparent !important;
                box-shadow: none;
                transform: none;
            }

            .auth-modal-content .auth-plan-buttons-row .plan-button:hover {
                transform: none;
                box-shadow: none;
            }

            .auth-modal-content .auth-plan-plan-col > .plan-button-sub {
                margin-top: 0;
                font-size: 11px;
                line-height: 1.2;
                text-align: center;
                color: inherit;
                font-weight: 400;
                width: 100%;
                opacity: 0.9;
            }

            .auth-modal-content .auth-plan-buttons-row .auth-plan-btn-face {
                display: contents;
            }

            .auth-modal-content .auth-plan-center-image {
                grid-column: 2;
                grid-row: 1;
                justify-self: center;
                align-self: end;
                width: 200px;
                height: 200px;
                max-width: none;
                max-height: none;
                margin-top: 50px;
                object-fit: contain;
                object-position: center center;
            }
        }

        /* Pro medal icon: no invert filter on the colored medal, swap on hover */
        .auth-plan-buttons-row .plan-pro-button .plan-button-icon,
        .auth-plan-buttons-row .plan-pro-button:hover .plan-button-icon {
            filter: none;
        }

        .plan-pro-button .plan-button-icon--pro-white {
            display: none;
        }

        .plan-pro-button:hover .plan-button-icon--pro-blue {
            display: none;
        }

        .plan-pro-button:hover .plan-button-icon--pro-white {
            display: block;
        }

        .auth-modal-content .auth-plan-plan-col--pro:has(.plan-pro-button:hover) .plan-button-icon--pro-blue {
            display: none;
        }

        .auth-modal-content .auth-plan-plan-col--pro:has(.plan-pro-button:hover) .plan-button-icon--pro-white {
            display: block;
        }

        .plan-pro-button:hover .pro-plan-medal-icon,
        .auth-modal-content .auth-plan-plan-col--pro:has(.plan-pro-button:hover) .pro-plan-medal-icon {
            filter: brightness(0) invert(1);
        }

        #email-button:hover .pro-plan-medal-icon {
            filter: brightness(0) invert(1);
        }

        /* Modal footers: centered round close button (green, blue on hover) */
        .auth-modal-footer,
        .pro-popup-footer {
            display: flex;
            justify-content: center;
            align-items: center;
            margin-top: 28px;
            padding-top: 8px;
        }

        .auth-modal .close-popup,
        .pro-popup .close-popup,
        .favorites-sidebar .close-popup.favorites-close-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 52px;
            height: 52px;
            min-width: 52px;
            padding: 0;
            border: 3px solid #1E3A8A;
            border-radius: 50%;
            background: #7BEC7B;
            color: #1E3A8A;
            font-size: 28px;
            font-weight: 600;
            line-height: 1;
            font-family: var(--font-ui);
            cursor: pointer;
            position: static;
            transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
            box-shadow: 0 4px 12px rgba(30, 58, 138, 0.2);
            box-sizing: border-box;
        }

        .auth-modal .close-popup:hover,
        .pro-popup .close-popup:hover,
        .favorites-sidebar .close-popup.favorites-close-btn:hover {
            background: #1E3A8A;
            color: #fff;
            transform: translateY(-1px);
            box-shadow: 0 4px 14px rgba(30, 58, 138, 0.35);
        }

        /*
         * Mobile modal sheets — MUST stay after desktop .auth-modal-content /
         * .pro-popup-content (padding: 40px etc.) or those desktop tokens win.
         * Plan-row geometry stays in the main @768 block above (overlap / baseline).
         */
        @media (max-width: 768px) {
            .auth-modal,
            .pro-popup {
                padding: 0;
                align-items: stretch;
                justify-content: flex-start;
                box-sizing: border-box;
            }

            .auth-modal-content,
            .pro-popup-content {
                border: 3px solid #1E3A8A;
                border-radius: 15px;
                box-shadow: 0 4px 20px -2px rgba(0, 0, 0, 0.15);
                width: 100%;
                max-width: none;
                margin-top: 0;
                margin-bottom: 0;
                flex: 1 1 auto;
                height: 100dvh;
                min-height: 100dvh;
                max-height: 100dvh;
                padding: max(6px, env(safe-area-inset-top, 0px)) 12px max(16px, env(safe-area-inset-bottom, 0px)) 12px;
                overflow-y: auto;
                overflow-x: hidden;
                -webkit-overflow-scrolling: touch;
                box-sizing: border-box;
                scrollbar-color: #1E3A8A transparent;
            }

            /* Re-assert connexion layout after desktop footer tokens (cascade) */
            #authModal .auth-modal-content {
                display: flex;
                flex-direction: column;
                justify-content: space-evenly;
                align-items: stretch;
            }

            #authModal #loginForm.auth-form {
                flex: 0 0 auto;
                display: block;
            }

            #authModal .auth-modal-topbar {
                min-height: 40px;
                margin: 0;
            }

            #authModal .auth-login-heading {
                margin-top: 1rem;
            }

            #authModal .auth-plan-lead {
                margin: 1rem 0 14px;
            }

            #authModal .auth-plan-lead-line {
                font-size: 1em;
                font-weight: 700;
            }

            #authModal .close-popup.auth-modal-close-top {
                top: 0;
                right: 0;
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                font-size: 24px;
            }

            #authModal .auth-modal-footer,
            .auth-modal-content .auth-plan-section + .auth-modal-footer,
            #authModal .auth-plan-section + .auth-modal-footer {
                margin-top: 20px;
                padding-top: 12px;
            }

            @media (max-width: 360px) {
                .auth-modal-content .auth-plan-buttons-row {
                    grid-template-columns: 80px minmax(0, 1fr) 80px;
                }

                .auth-modal-content .auth-plan-plan-col {
                    width: 80px;
                }

                .auth-modal-content .auth-plan-center-image {
                    max-width: 100px;
                    height: 100px;
                }
            }

            .pro-popup .close-popup {
                box-sizing: border-box;
                width: 56px;
                height: 56px;
                min-width: 56px;
                max-width: 56px;
                max-height: 56px;
                font-size: 30px;
            }

            /*
             * Final mobile close tokens (must follow unscoped .close-popup rules above
             * that set position:static / 52px, or Favoris/Connexion lose the tucked corner).
             * Top-corner Xs only — bottom Connexion X keeps the larger footer size.
             */
            #authModal .close-popup.auth-modal-close-top,
            .favorites-sidebar .close-popup.favorites-close-btn,
            .filter-controls .filters-close-btn {
                box-sizing: border-box;
                position: absolute;
                top: 6px;
                right: 6px;
                z-index: 3;
                margin: 0;
                width: 40px;
                height: 40px;
                min-width: 40px;
                max-width: 40px;
                max-height: 40px;
                font-size: 24px;
            }
            /* Connexion top X lives in its own topbar row (not over Connexion) */
            #authModal .auth-modal-topbar .close-popup.auth-modal-close-top {
                top: 0;
                right: 0;
            }
            /* Bottom Connexion X: original larger size (not the tucked corner token) */
            #authModal .auth-modal-footer .close-popup {
                position: static;
                top: auto;
                right: auto;
                width: 56px;
                height: 56px;
                min-width: 56px;
                max-width: 56px;
                max-height: 56px;
                font-size: 30px;
            }
            .favorites-sidebar-body {
                position: relative;
            }

            /* Mobile-optimized buttons - ensure good touch targets */
            .pro-popup .plan-button,
            .plan-card .plan-button {
                padding: 14px 24px;
                font-size: 16px;
                min-height: 44px;
            }

            /* Speech bubble: keep near desktop type (was 13px — too small) */
            .gratuit-speech-bubble {
                padding: 10px 14px 12px;
                max-width: min(260px, 88%);
                margin-bottom: 14px;
                border-radius: 20px;
                border-width: 2px;
            }

            .gratuit-speech-bubble::before {
                bottom: -10px;
                border-left-width: 9px;
                border-right-width: 9px;
                border-top-width: 10px;
            }

            .gratuit-speech-bubble::after {
                bottom: -6px;
                border-left-width: 7px;
                border-right-width: 7px;
                border-top-width: 8px;
            }

            .gratuit-image {
                width: 55%;
            }

            .gratuit-speech-line,
            .gratuit-speech-line + .gratuit-speech-line {
                font-size: 18px;
                line-height: 1.2;
            }
        }
