/**
 * Feuille de style principale de Taxi-Pro.fr.
 * Les sections sont séparées pour faciliter les futures modifications.
 */

:root {
    --navy: #102a43;
    --navy-dark: #0b1f31;
    --blue: #1261a0;
    --yellow: #ffc928;
    --light: #f5f8fb;
    --purple: #6b2b83;
    --text: #172b3a;
    --border: #dbe6ef;
    --shadow: 0 10px 32px rgba(16, 42, 67, 0.12);
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    margin: 0;
    color: var(--text);
    background: #ffffff;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

a {
    text-decoration: none;
}

button,
a,
input,
select,
textarea {
    -webkit-tap-highlight-color: transparent;
}

/* En-tête et navigation */
.navbar-brand {
    font-weight: 800;
    letter-spacing: -0.02em;
}

.navbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.55rem 1rem;
}

.store-links-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
}

.home-return-bar {
    padding: 0.55rem 0;
    border-top: 1px solid #e3ebf2;
    border-bottom: 1px solid #e3ebf2;
    background: var(--light);
}

.home-return-bar a {
    color: var(--blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Accueil et recherche */
.hero {
    padding: 5rem 0;
    color: #ffffff;
    background: linear-gradient(135deg, var(--navy), var(--blue));
}

.searchbox {
    max-width: 850px;
    padding: 1rem;
    border-radius: 1rem;
    background: #ffffff;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
}

.home-searchbox {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(150px, 1fr) minmax(150px, 1fr);
    gap: 0.5rem;
}

.home-searchbox > div {
    display: flex;
}

.home-searchbox .btn,
.home-searchbox .form-control {
    min-height: 58px;
}

.home-searchbox .btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    line-height: 1.2;
    white-space: normal;
}

.btn-taxi {
    color: var(--text);
    background: var(--yellow);
    font-weight: 800;
}

.btn-taxi:hover,
.btn-taxi:focus {
    color: var(--text);
    background: #ffd75d;
}

.all-cities-link {
    display: inline-block;
    color: #ffffff;
    font-weight: 600;
    text-decoration: underline;
}

.all-cities-link:hover {
    color: #ffffff;
    text-decoration: none;
}

.geolocation-status {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    max-width: 100%;
    padding: 0.65rem 0.9rem;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 999px;
    color: #ffffff;
    background: rgba(0, 0, 0, 0.18);
    font-weight: 600;
}

.geolocation-status.is-error {
    border-color: #ffe09a;
    color: #3f2c00;
    background: #fff1c7;
}

.button-spinner,
.status-spinner {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    flex: 0 0 auto;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: taxipro-spin 0.7s linear infinite;
}

@keyframes taxipro-spin {
    to {
        transform: rotate(360deg);
    }
}

/* Cartes de villes et de taxis */
.city-card,
.taxi-card {
    border: 0;
    border-radius: 1rem;
    box-shadow: 0 8px 28px rgba(16, 42, 67, 0.08);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.city-card:hover,
.taxi-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow);
}

/* Zone blanche de l’accueil : mode carte dynamique de France. */
.home-dynamic-map {
    --taxipro-map-blue: #0066ff;
    --taxipro-map-yellow: #ffc107;
    max-width: 920px;
    margin: 0 auto;
    text-align: center;
}

.home-map-title {
    margin: 0 0 0.65rem;
    color: var(--navy);
    font-size: clamp(1.7rem, 3vw, 2.35rem);
    font-weight: 850;
    letter-spacing: -0.025em;
}

.home-france-map-button {
    display: block;
    position: relative;
    width: min(100%, 720px);
    margin: 0 auto;
    padding: 0;
    border: 0;
    color: inherit;
    background: transparent;
    cursor: pointer;
}

.home-france-map-button:focus-visible {
    outline: 4px solid rgba(0, 102, 255, 0.35);
    outline-offset: 5px;
}

.home-france-map-svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
    transition: transform 0.25s ease, filter 0.25s ease;
}

.home-france-map-button:hover .home-france-map-svg,
.home-france-map-button:focus-visible .home-france-map-svg {
    transform: translateY(-2px) scale(1.012);
    filter: saturate(1.08);
}

.home-map-region {
    fill: url(#home-map-premium-land);
    stroke: none;
}

.home-map-region-1 {
    opacity: 0.96;
}

.home-map-region-2 {
    opacity: 0.91;
}

.home-map-land-stop-a {
    stop-color: #ffffff;
}

.home-map-land-stop-b {
    stop-color: #e6f0ff;
}

.home-map-land-stop-c {
    stop-color: #fff5d8;
}

.home-map-sheen {
    fill: url(#home-map-premium-sheen);
    pointer-events: none;
}

.home-map-region-boundaries {
    fill: none;
    stroke: rgba(0, 102, 255, 0.3);
    stroke-width: 1.05;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
    pointer-events: none;
}

.home-map-country-outline {
    fill: none;
    stroke: var(--taxipro-map-blue);
    stroke-width: 2.8;
    stroke-linejoin: round;
    stroke-linecap: round;
    vector-effect: non-scaling-stroke;
    pointer-events: none;
}

.home-map-route {
    fill: none;
    stroke: url(#home-map-premium-route);
    stroke-width: 1.65;
    stroke-linecap: round;
    stroke-dasharray: 5 10;
    vector-effect: non-scaling-stroke;
}

.home-map-node-halo,
.home-map-node-ring {
    transform-box: fill-box;
    transform-origin: center;
}

.home-map-node-halo {
    opacity: 0.16;
    fill: var(--taxipro-map-yellow);
}

.home-map-node-ring {
    opacity: 0.48;
    fill: none;
    stroke: var(--taxipro-map-yellow);
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}

.home-map-node-core {
    fill: var(--taxipro-map-yellow);
    stroke: #ffffff;
    stroke-width: 2.6;
    vector-effect: non-scaling-stroke;
    filter: url(#home-map-premium-node-shadow);
}

.home-map-node-dot {
    fill: var(--taxipro-map-blue);
    pointer-events: none;
}

.home-map-node {
    pointer-events: none;
}

.home-map-action {
    display: flex;
    justify-content: center;
    margin-top: 1rem;
}

.home-map-action .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: min(100%, 520px);
    min-height: 58px;
    padding: 0.8rem 1.25rem;
    border: 2px solid #e0aa00;
    border-radius: 0.8rem;
    box-shadow: 0 8px 20px rgba(224, 170, 0, 0.2);
}

.home-map-geolocation-status {
    display: flex;
    width: min(100%, 620px);
    margin: 0.9rem auto 0;
    border-color: #b9d6f5;
    border-radius: 0.75rem;
    color: #0b467e;
    background: #f3f8fe;
}

.home-map-geolocation-status.is-error {
    border-color: #e5b84a;
    color: #513900;
    background: #fff4c9;
}

.home-dynamic-map.is-animated .home-map-route {
    animation: home-map-link-flow 7s linear infinite;
    animation-delay: var(--link-delay, 0s);
}

.home-dynamic-map.is-animated .home-map-node-halo {
    animation: home-map-node-pulse 3.2s ease-out infinite;
    animation-delay: var(--node-delay, 0s);
}

.home-dynamic-map.is-animated .home-map-node-ring {
    animation: home-map-node-ring 3.2s ease-out infinite;
    animation-delay: var(--node-delay, 0s);
}

@keyframes home-map-link-flow {
    0% { opacity: 0.24; stroke-dashoffset: 30; }
    48% { opacity: 0.74; }
    100% { opacity: 0.24; stroke-dashoffset: 0; }
}

@keyframes home-map-node-pulse {
    0% { opacity: 0.26; transform: scale(0.68); }
    72%, 100% { opacity: 0; transform: scale(1.55); }
}

@keyframes home-map-node-ring {
    0% { opacity: 0.56; transform: scale(0.76); }
    72%, 100% { opacity: 0; transform: scale(1.36); }
}

.taxi-detail-link {
    display: inline-block;
    font-size: 0.92rem;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.city-search-card {
    border: 0;
    background: var(--light);
}

/* Cartouche de coordonnées public */
.contact-dynamic-box {
    max-width: 680px;
}

.contact-card-shell {
    padding: 0;
    border: 0;
    background: transparent;
}

.contact-card {
    display: inline-flex;
    max-width: 100%;
    overflow: hidden;
    border: 2px solid #b31187;
    border-radius: 0.2rem;
    color: inherit;
    background: #ffffff;
    text-decoration: none;
    vertical-align: top;
    cursor: pointer;
    touch-action: manipulation;
}

.contact-card:hover,
.contact-card:focus-visible {
    color: inherit;
    text-decoration: none;
    box-shadow: 0 0 0 0.2rem rgba(179, 17, 135, 0.18);
}

.contact-primary-panel {
    display: flex;
    flex: 0 0 auto;
    min-width: max-content;
    align-items: center;
    gap: 0.42rem;
    padding: 0.5rem 0.65rem;
    background: #ffffff;
    line-height: 1;
}

.contact-icon {
    width: 1em;
    height: 1em;
    flex: 0 0 auto;
}

.dynamic-contact {
    display: block;
    flex: 0 0 auto;
    min-width: max-content;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.contact-information-panel {
    display: flex;
    flex: 1 1 132px;
    align-items: center;
    justify-content: center;
    min-width: 96px;
    max-width: 190px;
    padding: 0.38rem 0.55rem;
    color: #ffffff;
    background: #b31187;
    line-height: 1.12;
    overflow-wrap: anywhere;
    text-align: center;
}

.contact-information-text {
    display: block;
    width: 100%;
}

.infotel2 {
    font-size: 0.95rem;
}

.contact-configurable-reveal:hover,
.contact-configurable-reveal:focus-visible {
    filter: brightness(0.94);
}

.directory-contact-card:hover,
.directory-contact-card:focus-visible {
    box-shadow: 0 0 0 0.15rem var(--real-card-border-color, #0b2845);
}

.directory-contact-panel-full {
    flex: 1 1 auto;
}

.directory-contact-label {
    min-width: 96px;
}

.phone-schedule-row {
    background: #f8fafc;
}

.phone-schedule-days {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
}

.phone-schedule-days .form-check {
    min-width: 78px;
    margin-bottom: 0;
}

.contact-reveal {
    min-width: 210px;
}


.contact-reveal-gold {
    background-image: linear-gradient(135deg, #FFD600 0%, #FFB300 100%);
    box-shadow: 0 4px 10px rgba(13, 41, 66, 0.22);
    transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}

.contact-reveal-gold:hover,
.contact-reveal-gold:focus-visible {
    background-image: linear-gradient(135deg, #FFE033 0%, #FFC107 100%);
    box-shadow: 0 6px 14px rgba(13, 41, 66, 0.28);
    filter: saturate(1.04);
    transform: translateY(-1px);
}

.contact-reveal-gold:active {
    box-shadow: 0 3px 8px rgba(13, 41, 66, 0.22);
    transform: translateY(0);
}

.contact-compact {
    max-width: none;
}

.contact-compact .contact-reveal {
    min-width: 0;
}

@media (max-width: 420px) {
    .contact-card {
        display: flex;
        width: 100%;
    }

    .contact-primary-panel {
        flex: 0 0 auto;
        min-width: max-content;
        padding-right: 0.45rem;
        padding-left: 0.55rem;
    }

    .contact-information-panel {
        flex: 1 1 110px;
        min-width: 0;
        max-width: none;
        padding-right: 0.4rem;
        padding-left: 0.4rem;
    }
}

/* Pied de page */
.footer {
    color: #d9e4ec;
    background: var(--navy-dark);
}

.footer a {
    color: #ffffff;
}

.footer-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.8rem 1.2rem;
}

.footer-signature {
    border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.footer-signature-line {
    overflow-wrap: anywhere;
    line-height: 1.45;
}

.footer-signature-secondary {
    margin-top: 0.25rem;
}

.store-links-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 1rem;
}

.store-link-button {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 155px;
    padding: 0.55rem 0.75rem;
    border-radius: 0.7rem;
}

.store-link-button-footer {
    border: 1px solid rgba(255, 255, 255, 0.28);
    color: #ffffff;
    background: rgba(255, 255, 255, 0.06);
}

.store-link-button-footer:hover,
.store-link-button-footer:focus {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.12);
}

.store-link-button-header {
    min-width: 142px;
    padding: 0.42rem 0.6rem;
    border: 1px solid var(--border);
    color: var(--navy);
    background: var(--light);
}

.store-link-button-header:hover,
.store-link-button-header:focus {
    color: var(--navy);
    border-color: #b7c9d8;
    background: #eaf2f8;
}

.store-link-button-header .store-link-icon {
    color: #ffffff;
    background: var(--navy);
}

.store-link-button small,
.app-download-link small {
    display: block;
    font-size: 0.68rem;
    line-height: 1.1;
}

.store-link-button strong,
.app-download-link strong {
    display: block;
    line-height: 1.15;
}

.store-link-icon,
.app-download-symbol {
    display: grid;
    width: 1.85rem;
    height: 1.85rem;
    place-items: center;
    border-radius: 0.45rem;
    color: #ffffff;
    background: rgba(255, 255, 255, 0.16);
    font-weight: 800;
}

.apple-store-icon {
    font-family: Georgia, serif;
}

/* Bouton d’application mobile toujours visible pendant le défilement */
.app-download-floating {
    position: fixed;
    right: max(0.75rem, env(safe-area-inset-right));
    bottom: max(0.75rem, env(safe-area-inset-bottom));
    z-index: 1060;
    display: flex;
    align-items: center;
    max-width: calc(100vw - 1.5rem);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 0.9rem;
    background: var(--navy-dark);
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.28);
}

.app-download-floating[hidden] {
    display: none !important;
}

.app-download-link {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 52px;
    padding: 0.55rem 2.3rem 0.55rem 0.7rem;
    color: #ffffff;
}

.app-download-link:hover,
.app-download-link:focus {
    color: #ffffff;
}

.app-download-close {
    position: absolute;
    top: 0.2rem;
    right: 0.25rem;
    width: 1.85rem;
    height: 1.85rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    color: #ffffff;
    background: transparent;
    font-size: 1.25rem;
    line-height: 1;
}

.app-download-close:hover,
.app-download-close:focus {
    background: rgba(255, 255, 255, 0.12);
}

/* Emplacements AdSense */
.taxipro-ad-shell{display:block;width:100%;margin:28px 0;min-height:90px}.taxipro-ad-shell[hidden]{display:none}.taxipro-ad-label{font-size:.72rem;color:#6b7280;margin-bottom:.25rem}.taxipro-ad-unit{width:100%}
.taxipro-ad-shell {
    overflow: hidden;
    min-height: 90px;
    padding: 0;
    border: 0;
    background: transparent;
}

.taxipro-ad-label {
    margin-bottom: 0.3rem;
    color: #6c757d;
    font-size: 0.7rem;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.taxipro-ad-unit {
    width: 100%;
}

.taxi-detail-layout .taxipro-ad-detail {
    width: min(100%, 500px);
    min-height: 300px;
    margin: 0 auto !important;
}

.taxi-detail-layout .taxipro-ad-detail .taxipro-ad-unit {
    min-height: 280px;
}

@media (max-width: 991.98px) {
    .taxi-detail-layout .taxipro-ad-detail {
        min-height: 250px;
        margin-top: 1.5rem !important;
    }
}

/* Pages de contenu paramétrables */
.configurable-content-page > h1 {
    color: var(--page-title-color);
    font-family: var(--page-title-font);
    font-size: var(--page-title-size);
    font-weight: var(--page-title-weight);
    font-style: var(--page-title-style);
    text-decoration: var(--page-title-decoration);
    text-align: var(--page-title-align);
    line-height: 1.2;
}

.configurable-page-content {
    color: var(--page-content-color);
    font-family: var(--page-content-font);
    font-size: var(--page-content-size);
    font-weight: var(--page-content-weight);
    font-style: var(--page-content-style);
    text-decoration: var(--page-content-decoration);
    text-align: var(--page-content-align);
    line-height: 1.55;
}

.configurable-page-content h2,
.configurable-page-content h3,
.configurable-page-content h4 {
    color: var(--page-heading-color);
    font-family: var(--page-heading-font);
    font-size: var(--page-heading-size);
    font-weight: var(--page-heading-weight);
    font-style: var(--page-heading-style);
    text-decoration: var(--page-heading-decoration);
    text-align: var(--page-heading-align);
    line-height: 1.25;
}

/* Administration */
.settings-quick-nav {
    border: 0;
    border-top: 5px solid var(--navy);
    background: #ffffff;
}

.settings-quick-nav-title {
    margin-bottom: 0.7rem;
    color: var(--navy);
    font-size: 0.95rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.settings-quick-nav-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.settings-quick-nav-links a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0.5rem 0.8rem;
    border: 1px solid #cbd9e4;
    border-radius: 0.65rem;
    color: var(--navy);
    background: #f5f9fc;
    font-weight: 700;
    text-decoration: none;
}

.settings-quick-nav-links a:hover,
.settings-quick-nav-links a:focus-visible {
    border-color: var(--blue);
    color: var(--navy);
    background: #e8f3fb;
}

.settings-section-form {
    scroll-margin-top: 1rem;
}

.admin-body .settings-section-form > .card {
    --settings-accent: #0c4783;
    position: relative;
    overflow: hidden;
    border: 0;
    border-top: 5px solid var(--settings-accent);
    box-shadow: 0 8px 26px rgba(16, 42, 67, 0.08);
}

#settings-general > .card {
    --settings-accent: #0c4783;
}

#settings-phone-display > .card {
    --settings-accent: #8b1b72;
}

#settings-applications > .card {
    --settings-accent: #08745d;
}

#settings-adsense > .card {
    --settings-accent: #a65d00;
}
.adsense-mode-disabled{opacity:.58}.adsense-mode-disabled input:disabled,.adsense-mode-disabled button:disabled{cursor:not-allowed}

#settings-page-legal > .card {
    --settings-accent: #48566a;
}

#settings-page-terms > .card {
    --settings-accent: #5c4aa8;
}

#settings-page-privacy > .card {
    --settings-accent: #2b7188;
}

.admin-body .settings-section-form > .card h2 {
    color: var(--settings-accent);
}

.admin-body .settings-section-form > .card > hr {
    border-top-width: 2px;
    border-top-color: #dbe5ed;
    opacity: 1;
}

.settings-config-block {
    padding: 1rem;
    border: 1px solid #d8e2ea;
    border-left: 4px solid var(--settings-accent, #0c4783);
    border-radius: 0.65rem;
    background: #fbfdff;
}

.settings-config-block > h4,
.settings-config-block > .d-flex h4 {
    color: var(--settings-accent, #0c4783);
    font-weight: 800;
}

.admin-body {
    background: #f4f7fa;
}

.admin-body main.container {
    max-width: 1240px;
}

.admin-body .card {
    border-color: #dde6ee;
    box-shadow: 0 4px 18px rgba(16, 42, 67, 0.05);
}

.admin-sidebar {
    min-height: 100vh;
    color: #ffffff;
    background: var(--navy);
}

.admin-sidebar a {
    display: block;
    padding: 0.7rem;
    color: #ffffff;
}

/* Page de maintenance */
.maintenance-body {
    min-height: 100vh;
    color: #ffffff;
    background:
        radial-gradient(circle at 20% 20%, rgba(255, 201, 40, 0.22), transparent 30%),
        linear-gradient(145deg, var(--navy-dark), var(--blue));
}

.maintenance-page {
    display: grid;
    min-height: 100vh;
    padding: 1.5rem;
    place-items: center;
}

.maintenance-card {
    width: min(680px, 100%);
    padding: clamp(1.5rem, 5vw, 3.5rem);
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 1.5rem;
    background: rgba(11, 31, 49, 0.78);
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.32);
    text-align: center;
    backdrop-filter: blur(8px);
}

.maintenance-logo {
    margin-bottom: 1.4rem;
    font-size: 1.35rem;
    font-weight: 900;
}

.maintenance-logo span {
    color: #78bbed;
}

.maintenance-logo strong {
    color: var(--yellow);
}

.maintenance-illustration {
    position: relative;
    height: 92px;
    margin: 0 auto 1.3rem;
    overflow: hidden;
    border-radius: 1rem;
    background: linear-gradient(#d8efff 0 58%, #4d5963 58% 100%);
}

.maintenance-road {
    position: absolute;
    right: 0;
    bottom: 14px;
    left: 0;
    height: 4px;
    background: repeating-linear-gradient(
        90deg,
        transparent 0 24px,
        #ffffff 24px 48px
    );
    animation: road-move 1.2s linear infinite;
}

.maintenance-taxi {
    position: absolute;
    bottom: 23px;
    left: 50%;
    width: 110px;
    padding: 0.55rem;
    border-radius: 0.75rem 0.75rem 0.4rem 0.4rem;
    color: var(--text);
    background: var(--yellow);
    font-weight: 900;
    transform: translateX(-50%);
}

.maintenance-taxi::before,
.maintenance-taxi::after {
    position: absolute;
    bottom: -8px;
    width: 18px;
    height: 18px;
    border: 4px solid #d7e0e6;
    border-radius: 50%;
    background: #1c2730;
    content: "";
}

.maintenance-taxi::before {
    left: 14px;
}

.maintenance-taxi::after {
    right: 14px;
}

.maintenance-kicker {
    margin-bottom: 0.45rem;
    color: var(--yellow);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.maintenance-card h1 {
    margin-bottom: 1rem;
    font-size: clamp(2rem, 6vw, 3.2rem);
}

.maintenance-message {
    margin-right: auto;
    margin-left: auto;
    max-width: 560px;
    font-size: clamp(1.05rem, 3vw, 1.3rem);
}

.maintenance-thanks {
    margin-bottom: 0;
    color: #d7e7f3;
}

@keyframes road-move {
    to {
        background-position-x: -48px;
    }
}

/* Responsive */
@media (max-width: 767.98px) {
    .hero {
        padding: 3.5rem 0;
    }

    .home-searchbox {
        grid-template-columns: 1fr;
    }

    .home-searchbox .btn,
    .home-searchbox .form-control {
        min-height: 52px;
    }

    .home-map-title {
        margin-bottom: 0.25rem;
        font-size: 1.55rem;
    }

    .home-map-action {
        margin-top: 0.75rem;
    }

    .home-map-action .btn {
        min-height: 54px;
        padding: 0.7rem 0.8rem;
        font-size: 0.96rem;
        line-height: 1.2;
        white-space: normal;
    }

    .configurable-content-page > h1 {
        font-size: min(var(--page-title-size), 2.25rem);
    }

    .configurable-page-content h2,
    .configurable-page-content h3,
    .configurable-page-content h4 {
        font-size: min(var(--page-heading-size), 1.75rem);
    }

    .footer-links {
        justify-content: flex-start;
    }
}

@media (prefers-reduced-motion: reduce) {
    .home-dynamic-map.is-animated .home-map-route,
    .home-dynamic-map.is-animated .home-map-node-halo,
    .home-dynamic-map.is-animated .home-map-node-ring {
        animation: none;
    }

    .home-france-map-svg {
        transition: none;
    }
}

@media (max-width: 575.98px) {
    .home-return-bar {
        text-align: center;
    }

    .city-search-card .input-group {
        display: grid;
        grid-template-columns: 1fr;
    }

    .city-search-card .input-group > * {
        width: 100%;
        margin-bottom: 0.5rem;
        border-radius: 0.375rem !important;
    }

    .dynamic-contact {
        font-size: 1.3rem;
    }

    .contact-information-panel {
        width: 100%;
        max-width: none;
    }

    .cookie-actions {
        grid-template-columns: 1fr;
    }

    .navbar .container {
        gap: 0.6rem;
    }

    .navbar-actions {
        gap: 0.4rem 0.65rem;
    }

    .store-link-button-header {
        min-width: auto;
        padding: 0.36rem 0.5rem;
    }

    .store-link-button-header small {
        display: none;
    }

    .store-link-button-header .store-link-icon {
        width: 1.55rem;
        height: 1.55rem;
    }

    .app-download-floating {
        right: max(0.55rem, env(safe-area-inset-right));
        bottom: max(0.55rem, env(safe-area-inset-bottom));
    }

    .app-download-link {
        min-height: 48px;
        padding-top: 0.45rem;
        padding-bottom: 0.45rem;
    }
}

.private-consent-banner {
    position: fixed;
    z-index: 2147483000;
    left: 50%;
    bottom: max(1rem, env(safe-area-inset-bottom));
    transform: translateX(-50%);
    width: min(760px, calc(100% - 2rem));
    padding: 1rem;
    border: 1px solid #9bb6d3;
    border-radius: 14px;
    background: #fff;
    color: #0b2845;
    box-shadow: 0 16px 46px rgba(11,40,69,.24);
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 1rem;
    align-items: center;
}
.private-consent-banner[hidden] { display:none!important; }
.private-consent-copy p { margin:.35rem 0 0; }
.private-consent-banner .cookie-actions { display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:.5rem; }

@media (max-width: 575.98px) {
    .private-consent-banner { grid-template-columns:1fr;width:calc(100% - 1rem);bottom:max(.5rem,env(safe-area-inset-bottom)); }
}

@media (min-width: 992px) {
    .app-download-floating {
        display: none !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
    }
}

/* Gestion des quatre cartouches téléphoniques dorés. */
.custom-contact-card-static {
    cursor: default;
}

.custom-contact-panel {
    width: auto;
    min-width: 0;
    min-height: 0;
    flex: 1 1 auto;
    gap: .65rem;
}

.custom-contact-copy {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
}

.custom-contact-content {
    display: block;
    min-width: 0;
    white-space: pre-line;
    overflow-wrap: anywhere;
}

.custom-contact-shell .dynamic-contact {
    display: block;
    font-size: 1.15em;
}

.ip-admin-table td,
.ip-admin-table th {
    vertical-align: middle;
}


.ip-admin-table .ip-stat-col,
.ip-admin-table .ip-stat-cell {
    min-width: 88px;
    text-align: center;
}

.ip-admin-table .ip-stat-col > a,
.ip-admin-table .ip-stat-col > span {
    display: inline-block;
    text-align: center;
}

.ip-stat-stack {
    display: flex;
    min-height: 58px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    text-align: center;
}

.ip-stat-stack strong,
.ip-stat-stack small {
    display: block;
    width: 100%;
    margin: 0;
    line-height: 1.15;
    text-align: center;
}

.custom-contact-label {
    flex: 0 1 190px;
}

.number-management-nav {
    position: sticky;
    top: .5rem;
    z-index: 4;
}

.number-management-nav a {
    white-space: nowrap;
}

/* Version 23 — prévisualisation des cartouches et tableau IP */
.card-live-preview-wrap {
    width: 100%;
    transition: width .2s ease;
}
.card-live-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    width: 100%;
    min-height: 58px;
    text-decoration: none;
    border-style: solid;
    box-shadow: 0 3px 0 rgba(115, 75, 0, .22), 0 8px 18px rgba(13, 41, 66, .10);
    transition: transform .15s ease, box-shadow .15s ease;
}
.card-live-preview:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 0 rgba(115, 75, 0, .22), 0 10px 22px rgba(13, 41, 66, .14);
}
.card-live-preview.is-not-clickable {
    cursor: default;
}
.card-live-preview-label {
    margin-left: auto;
    padding: .45rem .75rem;
    border-radius: .45rem;
    font-size: .72em;
    white-space: nowrap;
}
.ip-admin-table th,
.ip-admin-table td {
    vertical-align: middle;
}
.ip-admin-table .badge {
    white-space: normal;
}

/* Version 26 — administration lisible, repliable et aides intégrées. */
.admin-collapsible-section {
    border: 0;
    overflow: hidden;
    box-shadow: 0 2px 10px rgba(13, 41, 66, .08);
}
.admin-section-toggle {
    width: 100%;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    padding: 1rem 1.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.admin-section-toggle:hover { filter: brightness(.985); }
.admin-section-toggle:focus-visible { outline: 3px solid rgba(13, 110, 253, .35); outline-offset: -3px; }
.admin-section-arrow { min-width: 1.5rem; font-size: 1.1rem; text-align: center; }
.admin-section-summary { font-size: .875rem; opacity: .8; margin-top: .2rem; }
.admin-section-content { padding: 1.25rem; background: #fff; border-top: 1px solid rgba(13, 41, 66, .08); }
.admin-section-tracking .admin-section-toggle { background: #eee7fb; border-left: 6px solid #7456a5; }
.admin-section-protection .admin-section-toggle { background: #e6f2ff; border-left: 6px solid #2774ae; }
.admin-section-mode4 .admin-section-toggle { background: #fff0e3; border-left: 6px solid #d97706; }
.admin-section-rules .admin-section-toggle { background: #fff4d6; border-left: 6px solid #d49b00; }
.admin-section-active .admin-section-toggle { background: #e7f7ec; border-left: 6px solid #2f8f4e; }
.admin-section-archive .admin-section-toggle { background: #edf1f5; border-left: 6px solid #64748b; }
.admin-section-stats .admin-section-toggle { background: #e2f8f5; border-left: 6px solid #178b80; }
.admin-section-retention .admin-section-toggle { background: #fff0e3; border-left: 6px solid #d97706; }
.admin-section-display .admin-section-toggle { border-left: 6px solid var(--section-accent,#d99000); }
.admin-section-display-modes .admin-section-toggle { background:#e6f2ff; color:#123f66; }
.admin-section-display-cards .admin-section-toggle { background:#eee7fb; color:#49356f; }
.admin-info-button {
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    border: 1px solid #3b6f91;
    background: #fff;
    color: #0b4f78;
    font-size: .75rem;
    line-height: 1;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    padding: 0;
}
.admin-help-panel {
    position: fixed;
    z-index: 1090;
    right: 1rem;
    bottom: 1rem;
    width: min(420px, calc(100vw - 2rem));
    max-height: min(70vh, 560px);
    overflow: auto;
    background: #fff;
    color: #18212a;
    border: 1px solid #b9c8d3;
    border-radius: .75rem;
    box-shadow: 0 16px 42px rgba(13, 41, 66, .22);
    padding: 1.25rem 3rem 1.25rem 1.25rem;
}
.admin-help-close {
    position: absolute;
    top: .55rem;
    right: .65rem;
    border: 0;
    background: transparent;
    font-size: 1.5rem;
}
.ip-custom-name { font-weight: 700; cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }
.ip-classification-normal { background: #eef2f5; color: #334155; }
.ip-classification-whitelist { background: #dcfce7; color: #166534; }
.ip-classification-blacklist { background: #fee2e2; color: #991b1b; }
.ip-inline-editor { min-width: 270px; }
.ip-geo-status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .75rem; }
.ip-geo-status-item { border: 1px solid #d7e0e7; border-radius: .5rem; padding: .75rem; background: #fff; }
.ip-geo-status-ok { border-left: 5px solid #2f8f4e; }
.ip-geo-status-missing { border-left: 5px solid #c2410c; }
.disabled-setting { opacity: .55; }
.number-display-editor { border: 1px solid #d8e0e6; border-radius: .75rem; padding: 1rem; height: 100%; background: #fff; }
.number-display-editor > .editor-title { background: #fff7d6; border-left: 5px solid #e69a00; margin: -1rem -1rem 1rem; padding: 1rem; border-radius: .75rem .75rem 0 0; }
.card-live-preview-wrap { max-width: 660px; }
.additional-information-box { width: 100%; }

.dashboard-tone-seo { --dashboard-accent:#0086c9; --dashboard-soft:#eef9ff; }
.dashboard-tone-seo .admin-dashboard-indicator { color:var(--dashboard-accent)!important; }
.seo-indicator-danger { color:#b00020!important; font-weight:800; }
.seo-indicator-ok { color:#176b35!important; font-weight:800; }
.seo-indicator-pending { color:#6b4f00!important; font-weight:700; }
.seo-audit-intro { border:2px solid #184f83; }
.seo-audit-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; padding:14px; border:3px solid; border-radius:12px; }
.seo-audit-summary > div { display:flex; flex-direction:column; padding:10px; border-radius:8px; background:#fff; }
.seo-audit-summary-danger { border-color:#e00020; background:#fff0f2; color:#8b0015; }
.seo-audit-summary-ok { border-color:#23823d; background:#eefaf1; color:#155f2a; }
.seo-audit-danger-banner,.seo-sensitive-warning { padding:12px 14px; border:3px solid #e00020; border-radius:8px; color:#a00018; background:#fff0f2; font-weight:800; }
.seo-sensitive-field { border:3px solid #e00020!important; box-shadow:0 0 0 .2rem rgba(224,0,32,.14)!important; }

/* Site-79 : chaque bandeau principal SEO possède une teinte distincte. */
.seo-audit-page .seo-band-summary{--section-accent:#2563eb;--section-bg:#eef4ff}
.seo-audit-page>form>section:first-of-type{--section-accent:#008577;--section-bg:#edf9f7}
.seo-audit-page>form>section:last-of-type{--section-accent:#7c3aed;--section-bg:#f5f0ff}
.seo-audit-page .seo-band-gravity{--section-accent:#d97706;--section-bg:#fff6e8}
.seo-audit-page .seo-band-results{--section-accent:#15803d;--section-bg:#eef9f1}
.seo-audit-page .seo-band-history{--section-accent:#be185d;--section-bg:#fff1f6}
.seo-audit-page .admin-band-level-1>.admin-section-toggle .admin-section-title-copy strong,
.seo-audit-page .admin-band-level-1>.admin-section-toggle .admin-section-arrow{color:color-mix(in srgb,var(--section-accent) 72%,#102a43)}
.seo-audit-page [data-seo-individual-control]{transition:opacity .15s ease}
.seo-audit-page [data-seo-individual-control].is-disabled{opacity:.38}
.seo-audit-page [data-seo-active-table] [data-seo-check-all]{width:1rem;height:1rem}

@media (max-width: 767px) {
    .admin-section-toggle { padding: .85rem; }
    .admin-section-content { padding: .85rem; }
}


/* Version 26 — paramètres complets du bouton avant révélation. */
.contact-configurable-reveal {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
}
.contact-reveal-button-icon {
    width: 1.05em;
    height: 1.05em;
    flex: 0 0 auto;
}

/* Site OK-29 — graphique annuel des statistiques anonymisées */
.annual-stats-panel {
    border: 1px solid #b9e4df;
    border-radius: .75rem;
    background: #f7fffd;
    padding: 1rem;
}
.annual-chart-wrap {
    position: relative;
    width: 100%;
    min-height: 360px;
    border: 1px solid #d9e3e7;
    border-radius: .65rem;
    background: #fff;
    overflow: hidden;
}
.annual-chart-wrap canvas {
    display: block;
    width: 100%;
    min-height: 360px;
}
.annual-chart-tooltip {
    position: absolute;
    z-index: 3;
    max-height: 300px;
    max-width: min(360px, calc(100% - 16px));
    overflow: auto;
    border: 1px solid #ccd3d9;
    border-radius: .5rem;
    background: rgba(255,255,255,.97);
    box-shadow: 0 .25rem .75rem rgba(0,0,0,.12);
    padding: .65rem .8rem;
    font-size: .82rem;
    pointer-events: none;
}
.annual-chart-empty {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: #6c757d;
    background: rgba(255,255,255,.9);
    text-align: center;
    padding: 1rem;
}
.annual-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
.annual-chart-legend-item {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    border: 1px solid #d4d9de;
    border-radius: 999px;
    background: #fff;
    color: #26323c;
    padding: .3rem .65rem;
    font-size: .78rem;
}
.annual-chart-legend-item:hover,
.annual-chart-legend-item:focus-visible {
    border-color: #7c8b96;
}
.annual-chart-legend-item.is-hidden {
    opacity: .4;
    text-decoration: line-through;
}
.annual-chart-legend-swatch {
    display: inline-block;
    width: 1.5rem;
    border-top: 3px solid var(--legend-color, #0d6efd);
}
.annual-chart-metrics {
    padding: .75rem;
    border: 1px solid #d9e3e7;
    border-radius: .5rem;
    background: #fff;
}
@media (max-width: 575.98px) {
    .annual-stats-panel { padding: .75rem; }
    .annual-chart-wrap,
    .annual-chart-wrap canvas { min-height: 330px; }
    .annual-chart-legend-item { font-size: .72rem; }
}

/* Site OK-30 — hiérarchie harmonieuse des menus et aperçu public exact. */
.number-display-editor {
    padding: 0;
    border: 0;
}
.number-display-editor > .admin-section-content {
    padding: 1.25rem;
}
.number-display-parent-sva > .admin-section-toggle {
    background: #e7f7f7;
    border-left: 6px solid #208a8a;
}
.number-display-parent-real > .admin-section-toggle {
    background: #e8f2ff;
    border-left: 6px solid #326fa8;
}
.number-display-parent-whitelist > .admin-section-toggle {
    background: #e7f7ec;
    border-left: 6px solid #2f8f4e;
}
.number-display-parent-blacklist > .admin-section-toggle {
    background: #fdebec;
    border-left: 6px solid #b94b55;
}
.number-editor-subsection {
    border: 1px solid #d9e2e8;
    border-radius: .65rem;
    box-shadow: none;
}
.number-editor-button-section > .admin-section-toggle {
    background: #f0ebff;
    border-left: 5px solid #7456a5;
}
.number-editor-card-section > .admin-section-toggle {
    background: #fff0e3;
    border-left: 5px solid #d97706;
}
.number-editor-subsection > .admin-section-content {
    padding: 1rem;
}
.number-editor-preview-column {
    align-self: flex-start;
}
.number-public-preview-result {
    min-height: 0;
}
.number-public-preview-result .contact-card-shell {
    display: inline-block;
    max-width: 100%;
}
.number-public-preview-result .contact-card {
    max-width: 100%;
}
.number-public-preview-result .infotel2 {
    max-width: 660px;
}

/* Couleur propre à chaque zone de la gestion IP. */
.admin-section-alerts .admin-section-toggle {
    background: #fdeaf1;
    border-left: 6px solid #b84c73;
}
.admin-ip-nav a {
    border-width: 1px;
    color: #243447;
}
.admin-ip-nav .nav-tracking { background: #f4effc; border-color: #7456a5; }
.admin-ip-nav .nav-alerts { background: #fdeaf1; border-color: #b84c73; }
.admin-ip-nav .nav-protection { background: #e6f2ff; border-color: #2774ae; }
.admin-ip-nav .nav-active { background: #e7f7ec; border-color: #2f8f4e; }
.admin-ip-nav .nav-archive { background: #edf1f5; border-color: #64748b; }
.admin-ip-nav .nav-rules { background: #fff4d6; border-color: #d49b00; }
.admin-ip-nav .nav-stats { background: #e2f8f5; border-color: #178b80; }
.admin-ip-nav .nav-retention { background: #fff0e3; border-color: #d97706; }
.admin-ip-nav a:hover,
.admin-ip-nav a:focus-visible { filter: brightness(.96); color: #111827; }

/* Paramètres du site : menus repliables et couleurs distinctes. */
.admin-section-settings-general > .admin-section-toggle { background:#eaf2ff; border-left:6px solid #4169a1; }
.admin-section-settings-city > .admin-section-toggle { background:#eaf8f2; border-left:6px solid #2f8f6a; }
.admin-section-settings-apps > .admin-section-toggle { background:#f0ebff; border-left:6px solid #7456a5; }
.admin-section-settings-ads > .admin-section-toggle { background:#fdeaf1; border-left:6px solid #b84c73; }
.admin-section-settings-sva > .admin-section-toggle { background:#e7f7fb; border-left:6px solid #2384a0; }
.admin-section-settings-legal > .admin-section-toggle { background:#edf1f5; border-left:6px solid #64748b; }
.admin-section-settings-terms > .admin-section-toggle { background:#fff0e3; border-left:6px solid #d97706; }
.admin-section-settings-privacy > .admin-section-toggle { background:#e7f7ec; border-left:6px solid #2f8f4e; }

@media (min-width: 1200px) {
    .number-editor-preview-column {
        position: sticky;
        top: 5.5rem;
    }
}
@media (max-width: 1199px) {
    .number-editor-preview-column { position: static; }
}
.behavior-criteria-grid > div {
    display: flex;
}
.behavior-criteria-grid .form-check {
    width: 100%;
    margin: 0;
    padding: .7rem .8rem .7rem 2.25rem;
    border: 1px solid #d8e2e8;
    border-radius: .55rem;
    background: #f9fbfc;
}

/* Site OK-32 — mise en évidence de l'accès SVA des IP déjà suspectes. */
.ip-admin-table tbody tr.ip-row-robot-passive > td {
    background: #f8f9fa !important;
}
.ip-admin-table tbody tr.ip-row-robot-passive > td:first-child {
    border-left: 4px solid #8a94a3;
}
.ip-admin-table tbody tr.ip-row-sva-attempted > td {
    background: #fff8df !important;
}
.ip-admin-table tbody tr.ip-row-sva-attempted > td:first-child {
    border-left: 5px solid #d99b00;
}
.ip-admin-table tbody tr.ip-row-sva-revealed > td {
    background: #fff0dc !important;
}
.ip-admin-table tbody tr.ip-row-sva-revealed > td:first-child {
    border-left: 6px solid #e36b23;
}
.ip-admin-table tbody tr.ip-row-sva-extractor > td {
    background: #ffe4e6 !important;
}
.ip-admin-table tbody tr.ip-row-sva-extractor > td:first-child {
    border-left: 7px solid #a61b2b;
}
.ip-admin-table tbody tr.ip-row-sva-extractor .ip-sva-access-cell {
    box-shadow: inset 0 0 0 2px rgba(166, 27, 43, .18);
}
.ip-sva-access-cell {
    min-width: 190px;
}
.ip-sva-detail-card {
    background: #fffaf1;
    border-color: #efc98d !important;
}
.ip-sva-detail-card code {
    font-size: 1rem;
    color: #7a2e00;
}

/* Site OK-33 — critères regroupés, dépendances visuelles et sous-menus. */
.behavior-criterion-card {
    height: 100%;
    padding: 1rem;
    border: 1px solid #d8e2e8;
    border-radius: .7rem;
    background: #fbfcfd;
}
.behavior-criterion-card > .form-check {
    margin-bottom: .65rem;
}
.behavior-criterion-card [data-dependent-fields] {
    transition: opacity .15s ease;
}
.disabled-setting {
    opacity: .5;
}
.disabled-setting input,
.disabled-setting select,
.disabled-setting textarea,
.disabled-setting button {
    cursor: not-allowed;
}
.admin-settings-subsection {
    margin: 0 0 1rem;
    border: 1px solid #dce4ea;
    border-radius: .65rem;
    box-shadow: none;
}
.admin-settings-subsection > .admin-section-toggle {
    padding: .8rem 1rem;
}
.admin-settings-subsection > .admin-section-content {
    padding: 1rem;
}
.admin-settings-subsection-1 > .admin-section-toggle { background:#f2f7ff; border-left:5px solid #6487b7; }
.admin-settings-subsection-2 > .admin-section-toggle { background:#f1faf6; border-left:5px solid #55a17a; }
.admin-settings-subsection-3 > .admin-section-toggle { background:#fff8e8; border-left:5px solid #d4a13d; }
.admin-settings-subsection-4 > .admin-section-toggle { background:#f7f1ff; border-left:5px solid #8a6bb0; }
.admin-section-content > .admin-settings-subsection:last-child { margin-bottom: 0; }
@media (max-width: 767px) {
    .behavior-criterion-card { padding: .85rem; }
}

/* Site OK-34 — signalétique tarifaire SVA rose, rendue en SVG accessible. */
.contact-information-panel-image {
    display: block;
    width: 172px;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
}
.regulated-information-panel {
    color: #ffffff !important;
    background: #b01883 !important;
    border-color: #b01883 !important;
}


/* Site OK-34 — barre d’actions IP structurée. */
.ip-action-toolbar {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .85rem;
}
.ip-action-group {
    padding: .9rem;
    border: 1px solid #d8e2e8;
    border-radius: .7rem;
}
.ip-action-group-selection { background: #eef5ff; border-left: 5px solid #4169a1; }
.ip-action-group-dns { background: #f5effd; border-left: 5px solid #7456a5; }
.ip-action-group-geo { background: #eaf8f2; border-left: 5px solid #2f8f6a; }
.ip-action-group-title { margin-bottom: .65rem; font-weight: 700; color: #263746; }
.ip-action-group-title small { display: block; margin-top: .15rem; font-weight: 400; color: #637381; }
.ip-action-delete-all { grid-column: 1 / -1; display: flex; justify-content: flex-end; }
.ip-action-delete-all .form-control { max-width: 190px; }
@media (max-width: 1100px) { .ip-action-toolbar { grid-template-columns: 1fr; } }

/* Sous-zones des paramètres : repère vertical assorti au sous-menu parent. */
.admin-settings-subsection-1 { --settings-sub-accent: #6487b7; }
.admin-settings-subsection-2 { --settings-sub-accent: #55a17a; }
.admin-settings-subsection-3 { --settings-sub-accent: #d4a13d; }
.admin-settings-subsection-4 { --settings-sub-accent: #8a6bb0; }
.admin-settings-subsection > .admin-section-content > .border.rounded,
.admin-settings-subsection > .admin-section-content > .row > [class*="col"] > .border.rounded,
.admin-settings-subsection > .admin-section-content .settings-inner-zone {
    border-left: 5px solid var(--settings-sub-accent) !important;
}

/* Site OK-36 — aide contextuelle des colonnes IP et alignement des alertes. */
.ip-admin-table th.ip-column-help {
    position: relative;
    cursor: help;
}
.ip-admin-table th.ip-column-help::after {
    position: absolute;
    z-index: 40;
    top: calc(100% + .35rem);
    left: 50%;
    width: max-content;
    max-width: 280px;
    padding: .55rem .7rem;
    border: 1px solid #cbd5e1;
    border-radius: .45rem;
    background: #ffffff;
    color: #1f2937;
    box-shadow: 0 6px 18px rgba(15, 23, 42, .16);
    content: attr(data-ip-help);
    font-size: .82rem;
    font-weight: 400;
    line-height: 1.35;
    text-align: left;
    white-space: normal;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate(-50%, -.2rem);
    transition: opacity .12s ease, transform .12s ease, visibility .12s ease;
}
.ip-admin-table th.ip-column-help:hover::after,
.ip-admin-table th.ip-column-help:focus::after,
.ip-admin-table th.ip-column-help:focus-within::after {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}
.tracking-alert-recipient-row .form-control,
.tracking-alert-recipient-row .btn {
    min-height: 42px;
}
@media (max-width: 991.98px) {
    .tracking-alert-recipient-row .btn {
        width: 100%;
    }
}


/* Version 38 */
.contact-reveal-box,.phone-display,.number-display,.phone-number-value{max-width:100%;overflow:visible!important;text-overflow:clip!important;white-space:normal!important;overflow-wrap:anywhere;word-break:normal;min-width:0}.taxi-gallery-image{aspect-ratio:4/3;object-fit:cover}.footer-links a{margin-left:1rem}details>summary{cursor:pointer}

/* Version 39 */
.contact-card,.phone-display-card{overflow:visible!important;max-width:100%!important;width:max-content!important;min-width:min(100%,520px)!important;display:flex!important;}
.contact-card .contact-value,.phone-display-card .phone-display-value{flex:1 1 auto!important;min-width:max-content!important;white-space:nowrap!important;overflow:visible!important;}
.contact-card .contact-action,.phone-display-card .phone-display-action{flex:0 0 auto!important;white-space:nowrap!important;}
@media(max-width:520px){.contact-card,.phone-display-card{width:100%!important;min-width:0!important;flex-wrap:wrap!important}.contact-card .contact-value,.phone-display-card .phone-display-value{min-width:0!important;flex:1 1 62%!important;font-size:clamp(1.25rem,7vw,2rem)!important}.contact-card .contact-action,.phone-display-card .phone-display-action{flex:1 1 38%!important}}
.legal-html-editor{font-family:Consolas,"Courier New",monospace!important;line-height:1.55!important;padding:1rem!important;white-space:pre-wrap!important;tab-size:2}
.admin-subcard{border:1px solid #d7e1ea;border-left:6px solid;padding:1.25rem;border-radius:12px;background:#fff}.admin-subcard-blue{border-left-color:#4d78b7;background:#f4f8ff}.admin-subcard-green{border-left-color:#45a56e;background:#f3fbf6}
.taxi-zone{padding:1.25rem;margin-bottom:1.4rem;border-radius:12px;border-left:6px solid}.taxi-zone-blue{background:#f4f8ff;border-color:#4d78b7}.taxi-zone-green{background:#f3fbf6;border-color:#45a56e}
.phone-mode-priority-notice{color:#172b3a!important;background:#eef7ff!important;border-color:#9dccf1!important;font-size:1rem}
.admin-tool-row{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.admin-tool-row .pagination{margin:0}.admin-tool-row .delete-all-form{display:flex;align-items:center;gap:.5rem;margin:0}.admin-tool-row .delete-all-form input{width:210px}
.ip-filters-tools summary,.ip-rule-creator summary{font-weight:700;cursor:pointer;padding:1rem;background:#eef5ff;border-left:6px solid #4d78b7;border-radius:10px}.ip-filters-tools[open] summary,.ip-rule-creator[open] summary{margin-bottom:1rem}
.alert-settings-card{border:1px solid #d8e1e8;border-left:6px solid;border-radius:12px;padding:1.25rem;margin-bottom:1.25rem}.alert-behavior{background:#fff4f8;border-left-color:#c74d7b}.alert-sva{background:#fff9ec;border-left-color:#dfa82f}
.alert-band-messaging > .admin-section-toggle{background:#fff0f2;border-left:6px solid #c84255}


/* Site OK-40 — cartouches sans troncature */
.contact-card,
.directory-contact-card,
.custom-contact-card,
.number-public-preview-result .contact-card {
  display:inline-flex!important;
  width:max-content!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:visible!important;
  flex-wrap:nowrap!important;
}
.contact-card .contact-primary-panel,
.contact-card .custom-contact-content,
.contact-card .directory-contact-panel-full {
  flex:1 1 auto!important;
  min-width:max-content!important;
  overflow:visible!important;
  white-space:nowrap!important;
}
.contact-card .dynamic-contact {white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;}
.contact-card .contact-information-panel,
.contact-card .custom-contact-label,
.contact-card .directory-contact-label {flex:0 0 auto!important;white-space:nowrap!important;}
@media(max-width:520px){
 .contact-card,.directory-contact-card,.custom-contact-card{width:100%!important;max-width:100%!important;}
 .contact-card .contact-primary-panel,.contact-card .custom-contact-content{min-width:0!important;flex:1 1 auto!important;}
 .contact-card .dynamic-contact{max-width:none!important;}
}
/* Administration */
.ip-pagination-delete{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin:.75rem 0;}
.ip-pagination-delete .pagination{margin:0;}
.ip-delete-inline{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap;}
.ip-delete-inline input{width:210px;}
@media(max-width:650px){.ip-pagination-delete{align-items:flex-start}.ip-delete-inline{flex-wrap:wrap}.ip-delete-inline input{width:100%}}
.taxi-zone{border:1px solid #dbe4ee;border-left-width:6px;border-radius:12px;padding:1.25rem;margin-bottom:1.25rem;background:#fff;}
.taxi-zone-blue{border-left-color:#4f7dbd}.taxi-zone-green{border-left-color:#3aa76d}.taxi-zone-yellow{border-left-color:#d9a62e}.taxi-zone-purple{border-left-color:#8159b8}.taxi-zone-orange{border-left-color:#d97822}.taxi-zone-red{border-left-color:#c64d5f}.taxi-zone-gray{border-left-color:#7b8794}
.taxi-live-preview{position:sticky;top:1rem;border:1px solid #dbe4ee;border-radius:12px;padding:1rem;background:#fff;}
.taxi-preview-card{border:1px solid #e1e7ee;border-radius:10px;padding:1rem;background:#f8fafc;}
.admin-login-form .info-icon,.admin-login-form [data-tooltip]{display:none!important;}
.messaging-toolbar{display:flex;gap:.75rem;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:1rem;}

/* Site OK-41 */
.admin-login-page .admin-info-button,.admin-login-page .info-icon,.admin-login-page [data-tooltip]{display:none!important;}
.ip-pagination-delete{display:flex!important;align-items:center!important;gap:.6rem!important;flex-wrap:wrap!important;margin:.75rem 0!important;}
.ip-pagination-delete .pagination{margin:0!important;}
.ip-delete-inline{display:flex!important;align-items:center!important;gap:.45rem!important;flex-wrap:nowrap!important;}
.ip-delete-inline input{width:220px!important;max-width:220px!important;min-width:180px!important;}
.ip-delete-inline button{width:auto!important;white-space:nowrap!important;}
@media(max-width:650px){.ip-pagination-delete,.ip-delete-inline{flex-wrap:wrap!important}.ip-delete-inline input{width:210px!important;max-width:100%!important}}


/* Site OK-42 : droits lecture seule, aide utile uniquement et cartouches partagés */
.admin-readonly form[method="post"] { opacity: .72; }
.admin-readonly form[method="post"] :is(input,select,textarea,button):disabled { cursor: not-allowed; }
.admin-readonly-banner { position: sticky; top: .5rem; z-index: 1030; }
.admin-login-page .admin-info-button,
.admin-login-page .admin-help-panel,
.admin-login-page label::after { display: none !important; }

/* Une seule structure pour tous les contenus numériques, y compris la liste blanche. */
.contact-card,
.directory-contact-card,
.custom-contact-card {
    display: inline-flex !important;
    align-items: stretch !important;
    width: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: visible !important;
}
.contact-card > .contact-primary-panel,
.directory-contact-card > .contact-primary-panel,
.custom-contact-card > .contact-primary-panel {
    display: flex !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: auto !important;
}
.contact-card .dynamic-contact,
.directory-contact-card .dynamic-contact,
.custom-contact-card .dynamic-contact {
    display: inline-block !important;
    flex: 0 0 auto !important;
    min-width: max-content !important;
    max-width: none !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
}
.contact-card > .contact-information-panel,
.directory-contact-card > .contact-information-panel,
.custom-contact-card > .contact-information-panel {
    flex: 0 0 auto !important;
    max-width: none !important;
    white-space: nowrap !important;
}
@media (max-width: 480px) {
    .contact-card,
    .directory-contact-card,
    .custom-contact-card { width: 100% !important; flex-wrap: wrap !important; }
    .contact-card > .contact-primary-panel,
    .directory-contact-card > .contact-primary-panel,
    .custom-contact-card > .contact-primary-panel { flex: 1 1 100% !important; justify-content: center; }
    .contact-card > .contact-information-panel,
    .directory-contact-card > .contact-information-panel,
    .custom-contact-card > .contact-information-panel { flex: 1 1 100% !important; width: 100% !important; }
}


/* Site OK-43 — le message long de la liste noire ne doit jamais passer sous son libellé. */
.custom-contact-blacklist .custom-contact-card-blacklist {
    display: flex !important;
    align-items: stretch !important;
    width: min(100%, 1000px) !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: hidden !important;
    flex-wrap: nowrap !important;
}
.custom-contact-blacklist .custom-contact-card-blacklist > .custom-contact-panel {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: auto !important;
    height: auto !important;
    align-items: center !important;
}
.custom-contact-blacklist .custom-contact-card-blacklist .custom-contact-copy,
.custom-contact-blacklist .custom-contact-card-blacklist .custom-contact-content {
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    line-height: 1.2 !important;
}
.custom-contact-blacklist .custom-contact-card-blacklist > .custom-contact-label {
    flex: 0 0 auto !important;
    min-width: 120px !important;
    max-width: 220px !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}
@media (max-width: 620px) {
    .custom-contact-blacklist .custom-contact-card-blacklist { flex-wrap: wrap !important; }
    .custom-contact-blacklist .custom-contact-card-blacklist > .custom-contact-panel,
    .custom-contact-blacklist .custom-contact-card-blacklist > .custom-contact-label {
        flex: 1 1 100% !important;
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* Site OK-43 — pagination et suppression des IP. */
.ip-delete-toolbar {
    display: flex;
    align-items: center;
}
.ip-delete-inline {
    display: flex;
    align-items: stretch;
    gap: .65rem;
    flex-wrap: nowrap;
}
.ip-delete-inline .form-control,
.ip-delete-inline .btn,
.ip-pagination-only .page-link {
    min-height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ip-delete-inline .form-control {
    width: 330px;
    max-width: 44vw;
}
.ip-pagination-only .pagination {
    align-items: stretch !important;
}
.ip-pagination-only .page-item {
    display: flex;
}
@media (max-width: 700px) {
    .ip-delete-inline {
        flex-wrap: wrap;
        width: 100%;
    }
    .ip-delete-inline .form-control {
        width: 100%;
        max-width: none;
        flex: 1 1 100%;
    }
    .ip-pagination-only .pagination {
        flex-wrap: wrap !important;
    }
}


/* Site OK-45 — mode 4, paramètres généraux et pied de page dynamique. */
.taxi-private-comment{border:1px solid #d7dde5;border-radius:.75rem;padding:1rem;margin:1rem 0;background:#f8fafc}
.taxi-private-comment-alert{border:2px solid #dc3545;background:#fff1f2;box-shadow:0 0 0 .15rem rgba(220,53,69,.08)}
.taxi-private-comment-alert h2{color:#b02a37}
.taxi-comment-attention{text-decoration:none!important;letter-spacing:.02em}
.ip-pagination-delete .ip-pagination-only{margin-top:0!important}
.ip-pagination-delete{justify-content:space-between}
.ip-delete-inline .form-control,.ip-delete-inline .btn{height:38px}


/* Site OK-46 — cartouches SVA et numéro réel horizontaux, partagés entre aperçu et public. */
.contact-card-shell:not(.custom-contact-shell) .contact-card,
.directory-contact-shell .directory-contact-card {
    display: flex !important;
    flex-flow: row nowrap !important;
    align-items: stretch !important;
    width: min(100%, 520px) !important;
    min-width: 0 !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow: visible !important;
}
.contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-primary-panel,
.directory-contact-shell .directory-contact-card > .contact-primary-panel {
    display: flex !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: auto !important;
    align-items: center !important;
    /* L'alignement configuré (gauche, centre ou droite) est porté par le
       style du cartouche. Il doit gagner ici comme dans son rendu SVG. */
    justify-content: flex-start;
    box-sizing: border-box !important;
}
.contact-card-shell:not(.custom-contact-shell) .contact-card .dynamic-contact,
.directory-contact-shell .directory-contact-card .dynamic-contact {
    display: block !important;
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    line-height: 1.05 !important;
}
.contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-information-panel,
.directory-contact-shell .directory-contact-card > .contact-information-panel {
    flex: 0 1 132px !important;
    width: auto !important;
    min-width: 108px !important;
    max-width: 42% !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    overflow: visible !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    padding: .36rem .4rem !important;
    border-radius: 0 .12rem .12rem 0;
}
.regulated-information-lines {
    display: flex;
    width: 100%;
    min-width: 0;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .08rem;
    line-height: 1.08;
    text-align: center;
}
.regulated-information-line {
    display: block;
    width: 100%;
    white-space: nowrap;
}
.directory-contact-shell .directory-contact-label .contact-information-text {
    line-height: 1.1;
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
}
@media (max-width: 430px) {
    .contact-card-shell:not(.custom-contact-shell) .contact-card,
    .directory-contact-shell .directory-contact-card {
        flex-wrap: nowrap !important;
        width: 100% !important;
    }
    .contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-primary-panel,
    .directory-contact-shell .directory-contact-card > .contact-primary-panel {
        flex: 1 1 auto !important;
        width: auto !important;
        padding: .45rem .48rem !important;
        gap: .3rem !important;
    }
    .contact-card-shell:not(.custom-contact-shell) .contact-card .dynamic-contact,
    .directory-contact-shell .directory-contact-card .dynamic-contact {
        letter-spacing: 0 !important;
    }
    .contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-information-panel,
    .directory-contact-shell .directory-contact-card > .contact-information-panel {
        flex-basis: 112px !important;
        width: auto !important;
        min-width: 98px !important;
        max-width: 42% !important;
        padding-inline: .28rem !important;
    }
}
@media (max-width: 350px) {
    .contact-card-shell:not(.custom-contact-shell) .contact-card .dynamic-contact,
    .directory-contact-shell .directory-contact-card .dynamic-contact {
    }
    .contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-information-panel,
    .directory-contact-shell .directory-contact-card > .contact-information-panel {
        flex-basis: 100px !important;
        width: auto !important;
        min-width: 88px !important;
        max-width: 43% !important;
    }
}

/* Administration Site OK-46 */
.admin-unread-messages {
    color: #dc3545 !important;
    font-style: italic;
    text-decoration: none;
    text-align: right;
}
.admin-unread-messages:hover,
.admin-unread-messages:focus { text-decoration: underline; }
.ip-auto-action-settings > summary {
    cursor: pointer;
    padding: 1rem;
    border-left: 6px solid #657b95;
    border-radius: 10px;
    background: #eef2f6;
    font-weight: 700;
}
.ip-auto-action-settings[open] > summary { margin-bottom: 1rem; }
.stats-daily-table tr.stats-day-start > * {
    border-top: 4px solid #6c7f91 !important;
}
.stats-pagination .pagination { margin-bottom: 0; }
.admin-section-auto-history > .admin-section-toggle {
    background: #fff4e8;
    border-left-color: #e67e00;
}

/* Administration Site OK-47 */
.taxi-main-and-comment { overflow: hidden; }
.taxi-main-and-comment .taxi-private-comment {
    margin-bottom: 0;
}
.taxi-about-locked {
    background: #e9ecef !important;
    color: #6c757d !important;
    cursor: not-allowed;
}
.taxi-customization-subsection {
    border: 1px solid #dbe4ee;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}
.taxi-customization-subsection > summary {
    cursor: pointer;
    padding: .9rem 1rem;
    font-weight: 700;
    background: #f8fafc;
    border-left: 5px solid #c64d5f;
    list-style-position: inside;
}
.taxi-customization-subsection[open] > summary {
    border-bottom: 1px solid #dbe4ee;
}
.taxi-preview-independent {
    clear: both;
    display: block;
    width: 100%;
}
.taxi-reference-section {
    margin-top: 2rem;
    padding-top: 1.25rem;
    border-top: 1px solid #dbe4ee;
}
.taxi-reference-section strong {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}
.admin-section-auto-history > .admin-section-toggle {
    border-left: 6px solid #e67e00 !important;
    background: #fff4e8 !important;
}
.admin-section-auto-history > .admin-section-toggle::before {
    background: #e67e00 !important;
}
.backup-disabled-field,
.disabled-setting {
    opacity: .58;
}
.tracking-submenu {
    border: 1px solid #d7cbed;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}
.tracking-submenu > summary {
    cursor: pointer;
    padding: 1rem;
    font-weight: 700;
    background: #f4effc;
    border-left: 6px solid #7456a5;
}
.tracking-submenu[open] > summary { border-bottom: 1px solid #d7cbed; }

/* Site OK-48 — navigation, listes IP, historique et origine des automatismes. */
.ip-tab-count {
    font-size: .88em;
    font-style: italic;
    color: #61758a;
    margin-left: .18rem;
    font-weight: 600;
}
.ip-auto-origin-badge {
    display: block;
    width: 100%;
    margin-top: .45rem;
    padding: .28rem .45rem;
    border-radius: .45rem;
    border: 1px solid;
    font-size: .76rem;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    white-space: normal;
}
.ip-auto-origin-badge.whitelist {
    background: #fff0d2;
    border-color: #e6952f;
    color: #8a3f15;
}
.ip-auto-origin-badge.blacklist {
    background: #ffe1d6;
    border-color: #dc6947;
    color: #8e2f20;
}
.ip-action-group-selection {
    background: #fff3dd !important;
    border-left-color: #dd8a20 !important;
}
.ip-action-group-selection .ip-action-group-title { color: #74420d; }
.ip-action-toolbar {
    padding: .9rem;
    border: 1px solid #c9d8e6;
    border-left: 6px solid #416f9e;
    border-radius: .75rem;
    background: #edf5fc;
}
.ip-pagination-delete .ip-pagination-left { flex: 1 1 auto; }
.ip-pagination-delete .ip-delete-inline { margin-left: auto; }
.ip-pagination-only { margin-top: .75rem; }
.ip-pagination-delete .ip-pagination-only { margin-top: 0; }
.ip-rules-table th, .ip-rules-table td { vertical-align: middle; }
.nav-auto-history { background: #fff0e1; border-color: #e67e00; color: #8a4500; }
.nav-auto-history:hover, .nav-auto-history:focus { background: #ffe3c4; color: #743800; }
@media (max-width: 700px) {
    .ip-pagination-delete { align-items: stretch !important; }
    .ip-pagination-delete .ip-pagination-left,
    .ip-pagination-delete .ip-delete-inline { width: 100%; margin-left: 0; }
    .ip-pagination-delete .ip-delete-inline { justify-content: flex-start; }
}


/* Site OK-51 : composant uniforme des bandeaux principaux. */
.admin-main-banded-section,
.admin-body .admin-collapsible-section.admin-section-alerts,
.admin-body .admin-collapsible-section.admin-section-tracking,
.admin-body .admin-collapsible-section.admin-section-protection,
.admin-body .admin-collapsible-section.admin-section-mode4,
.admin-body .admin-collapsible-section.admin-section-active,
.admin-body .admin-collapsible-section.admin-section-archive,
.admin-body .admin-collapsible-section.admin-section-rules,
.admin-body .admin-collapsible-section.admin-section-auto-history,
.admin-body .admin-collapsible-section.admin-section-stats,
.admin-body .admin-collapsible-section.admin-section-retention { border-top:5px solid var(--section-accent, #1f5b99) !important; }
.admin-section-alerts{--section-accent:#b84c73}.admin-section-tracking{--section-accent:#7456a5}.admin-section-protection{--section-accent:#2774ae}.admin-section-mode4{--section-accent:#d97706}.admin-section-active{--section-accent:#2f8f4e}.admin-section-archive{--section-accent:#64748b}.admin-section-rules{--section-accent:#d49b00}.admin-section-auto-history{--section-accent:#e06424}.admin-section-stats{--section-accent:#178b80}.admin-section-retention{--section-accent:#d97706}
.taxi-about-filter-label{white-space:nowrap;min-width:max-content}.text-nowrap{white-space:nowrap!important}
.pwa-install-prompt{position:fixed;z-index:1085;bottom:max(16px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:12px;max-width:min(620px,calc(100vw - 24px));padding:14px 16px;background:var(--pwa-bg);color:var(--pwa-text);border:1px solid color-mix(in srgb,var(--pwa-text) 18%,transparent);border-radius:var(--pwa-radius);box-shadow:0 14px 38px rgba(0,0,0,.22)}
.pwa-install-prompt[hidden]{display:none!important}.pwa-bottom-left{left:12px}.pwa-bottom-center{left:50%;transform:translateX(-50%)}.pwa-bottom-right{right:12px}.pwa-install-prompt img{border-radius:12px;flex:none}.pwa-install-copy{min-width:0;flex:1}.pwa-install-copy strong{display:block}.pwa-install-copy p{margin:2px 0 0;font-size:.9rem}.pwa-ios-instructions{font-style:italic}.pwa-install-actions{display:flex;gap:8px;flex-wrap:wrap}.pwa-install-button{background:var(--pwa-primary);color:#fff}.pwa-later-button{border:1px solid var(--pwa-secondary);color:var(--pwa-secondary)}
.pwa-admin-groups{display:grid;gap:12px}.pwa-admin-preview{display:grid;gap:6px;max-width:620px;padding:14px;border:1px solid #d7dee8;border-radius:16px;background:#fff}.pwa-diagnostic-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.pwa-diagnostic-grid>div{padding:12px;border:1px solid #dbe2eb;border-radius:10px;background:#f8fafc}
@media(max-width:767px){.pwa-install-prompt{left:12px!important;right:12px!important;transform:none!important;align-items:flex-start;flex-wrap:wrap}.pwa-install-actions{width:100%}.pwa-diagnostic-grid{grid-template-columns:1fr 1fr}.taxi-about-filter-label{white-space:normal}.taxi-about-filter-label .text-nowrap{white-space:nowrap!important}}

.ip-inner-collapsible{margin:0 0 12px;border:1px solid #d8e0ea;border-left:5px solid var(--section-accent,#567);border-radius:10px;background:#fff;overflow:hidden}.ip-inner-collapsible>summary{padding:14px 16px;font-weight:700;cursor:pointer;background:#f7f9fc;list-style:none}.ip-inner-collapsible>summary::before{content:'▶';display:inline-block;margin-right:8px;transition:transform .15s}.ip-inner-collapsible[open]>summary::before{transform:rotate(90deg)}.ip-protection-groups{display:grid;gap:12px}

.conversation-status{display:inline-block;padding:.25rem .55rem;border-radius:999px;font-size:.82rem;font-weight:700}.conversation-status-unread{background:#ffe1b3;color:#7a4300}.conversation-status-waiting{background:#fff1a8;color:#685100}.conversation-status-progress{background:#dceaff;color:#174e91}.conversation-status-replied{background:#d9f6e5;color:#17643a}.conversation-status-closed{background:#e5e7eb;color:#374151}.conversation-status-archived{background:#dce3eb;color:#415164}.conversation-timeline{display:grid;gap:12px}.conversation-message{padding:16px;border:1px solid #dce2e9;border-radius:12px}.conversation-message-professional{border-left:5px solid #6f59ad;background:#fbf9ff}.conversation-message-admin{border-left:5px solid #319665;background:#f7fffa}.conversation-message header{display:flex;gap:10px;align-items:baseline;margin-bottom:8px}.conversation-message header small{color:#6b7280}.conversation-attachment{display:grid;gap:7px;margin-top:12px;padding:10px;border:1px solid;border-radius:10px}.attachment-professional{border-color:#a99cdb;background:#f5f1ff}.attachment-admin{border-color:#91d4b0;background:#effbf4}.conversation-attachment img{display:block;max-width:100%;max-height:260px;object-fit:contain;border-radius:7px}.conversation-attachment small{display:block;color:#6b7280}.conversation-attachment-summary{margin-top:10px;border:1px solid #dce2e9;border-radius:10px}.conversation-attachment-summary>summary{padding:12px 14px;font-weight:700;cursor:pointer}.conversation-management{padding:18px;border:1px solid #d6deea;border-radius:12px;background:#f8fafc}.conversation-quick-actions{display:flex;gap:8px;flex-wrap:wrap}

.backup-section-create{--section-accent:#2878b5;border-left:5px solid var(--section-accent)!important}.backup-section-auto{--section-accent:#2f8f4e;border-left:5px solid var(--section-accent)!important}.backup-section-restore{--section-accent:#d97706;border-left:5px solid var(--section-accent)!important}.backup-section-history{--section-accent:#7456a5;border-left:5px solid var(--section-accent)!important}.admin-section-display{border-left-color:var(--section-accent,#d99000)!important}.admin-section-display-modes{--section-accent:#2774ae}.admin-section-display-cards{--section-accent:#7456a5}

/* Galerie taxis : images protégées, état indisponible et agrandissement. */
.taxi-gallery-link{display:block;position:relative;text-decoration:none;border-radius:.5rem;overflow:hidden;background:#eef2f5;min-height:140px}.taxi-gallery-link:focus-visible{outline:3px solid currentColor;outline-offset:2px}.taxi-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;min-height:140px;padding:1rem;text-align:center;background:#eef2f5;color:#5f6b76;font-weight:600;border:1px dashed #aeb8c2;border-radius:.5rem}.taxi-image-placeholder-static{aspect-ratio:4/3}.taxi-gallery-link.taxi-image-load-error{pointer-events:none}.taxi-lightbox-open{overflow:hidden}.taxi-lightbox{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:1rem}.taxi-lightbox[hidden]{display:none!important}.taxi-lightbox-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82)}.taxi-lightbox-panel{position:relative;z-index:1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;width:min(1100px,100%);max-height:95vh;background:#111;border-radius:1rem;box-shadow:0 1rem 3rem rgba(0,0,0,.45);overflow:hidden}.taxi-lightbox-figure{grid-column:2;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;max-height:95vh}.taxi-lightbox-image{display:block;max-width:100%;max-height:82vh;object-fit:contain}.taxi-lightbox-figure figcaption{width:100%;padding:.75rem 1rem;color:#fff;background:rgba(0,0,0,.72);display:flex;flex-direction:column;gap:.2rem}.taxi-lightbox-error{padding:4rem 2rem;color:#fff;text-align:center}.taxi-lightbox-close,.taxi-lightbox-nav{position:relative;z-index:2;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:2rem;line-height:1;cursor:pointer}.taxi-lightbox-close{position:absolute;top:.5rem;right:.5rem;width:2.75rem;height:2.75rem;border-radius:50%}.taxi-lightbox-nav{width:3rem;height:5rem;border-radius:.5rem;margin:.5rem}.taxi-lightbox-nav:hover,.taxi-lightbox-close:hover,.taxi-lightbox-nav:focus-visible,.taxi-lightbox-close:focus-visible{background:rgba(255,255,255,.28)}@media(max-width:767px){.taxi-lightbox-panel{grid-template-columns:2.5rem minmax(0,1fr) 2.5rem}.taxi-lightbox-nav{width:2.25rem;height:4rem;margin:.15rem}.taxi-lightbox-image{max-height:76vh}}

/* Statistiques d’installation PWA */
.pwa-stats-period-grid,
.pwa-stats-metric-grid,
.pwa-stats-activity-grid {
    display: grid;
    gap: 1rem;
}
.pwa-stats-period-grid {
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.pwa-stats-metric-grid {
    grid-template-columns: repeat(auto-fit, minmax(235px, 1fr));
}
.pwa-stats-activity-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.pwa-stats-period-card,
.pwa-stats-metric-grid > article,
.pwa-stats-activity-grid > article {
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
    padding: 1rem;
}
.pwa-stats-period-card {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.pwa-stats-period-card > strong {
    color: #0b2845;
    font-size: 1rem;
}
.pwa-stats-period-card > span {
    color: #526476;
}
.pwa-stats-metric-grid > article {
    display: flex;
    min-height: 105px;
    flex-direction: column;
    justify-content: space-between;
    gap: .75rem;
}
.pwa-stats-metric-grid > article > span {
    color: #526476;
    font-weight: 600;
}
.pwa-stats-metric-grid > article > strong {
    color: #0b2845;
    font-size: 1.65rem;
}
.pwa-stats-chart-wrap {
    position: relative;
    min-height: 330px;
    width: 100%;
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #fff;
    padding: .5rem;
}
.pwa-stats-chart-wrap canvas {
    display: block;
    max-width: 100%;
}
.pwa-stats-chart-empty {
    min-height: 310px;
    display: grid;
    place-items: center;
    color: #6c757d;
}

.pwa-stats-activity-grid>article{display:flex;flex-direction:column;gap:.35rem}.pwa-stats-activity-grid>article>strong{font-size:1.65rem;color:#0b2845}.pwa-stats-activity-grid>article>span{color:#475569}

/* Site OK-52 — navigation dynamique et charte uniforme des zones d’administration. */
.admin-dynamic-section-nav{display:flex;flex-wrap:wrap;gap:.65rem;margin:0 0 1.25rem;padding:.85rem;border:1px solid #d8e2ec;border-radius:14px;background:#f8fafc;position:sticky;top:.5rem;z-index:20;box-shadow:0 4px 14px rgba(11,40,69,.08)}
.admin-dynamic-section-nav a{display:inline-flex;align-items:center;justify-content:center;padding:.55rem .8rem;border:1px solid;border-radius:9px;font-weight:700;text-decoration:none;transition:.15s ease;background:#fff}
.admin-dynamic-section-nav a.is-active{box-shadow:0 0 0 3px rgba(13,110,253,.18);transform:translateY(-1px)}
.nav-tone-blue{border-color:#5a9bd5!important;color:#174f81!important;background:#eef6ff!important}.nav-tone-cyan{border-color:#2e9e9a!important;color:#176660!important;background:#ebfbfa!important}.nav-tone-orange{border-color:#d97706!important;color:#8a4500!important;background:#fff6e8!important}.nav-tone-purple{border-color:#7a4fb3!important;color:#57337f!important;background:#f5f0ff!important}.nav-tone-green{border-color:#2e9b59!important;color:#1f6d3d!important;background:#eef9f1!important}.nav-tone-pink{border-color:#b84c73!important;color:#7a2947!important;background:#fff0f6!important}

.admin-mobile-main-block{margin:1rem 0;border:1px solid #cfdbe8!important;border-left:6px solid #426f9f!important;border-top:4px solid #426f9f!important;border-radius:14px!important;background:#f7fbff!important}
.admin-mobile-subgroups{display:grid;gap:.85rem}.admin-mobile-subband{margin:.8rem 0;border:1px solid var(--band-border,#5a7fa5)!important;border-left:6px solid var(--band-border,#5a7fa5)!important;border-top:4px solid var(--band-border,#5a7fa5)!important;border-radius:12px!important;background:var(--band-bg,#f5f8fb)!important;overflow:hidden}
.admin-mobile-subband>.admin-section-toggle{background:var(--band-bg,#f5f8fb)!important}.admin-mobile-subband>.admin-section-content{padding:1rem;background:rgba(255,255,255,.76)}
.mobile-band-blue{--band-bg:#eef6ff;--band-border:#2f80c9}.mobile-band-green{--band-bg:#eef9f1;--band-border:#2e9b59}.mobile-band-purple{--band-bg:#f5f0ff;--band-border:#7a4fb3}.mobile-band-orange{--band-bg:#fff6e8;--band-border:#d97706}.mobile-band-pink{--band-bg:#fff0fb;--band-border:#b84c9d}.mobile-band-cyan{--band-bg:#ebfbfa;--band-border:#268e88}.mobile-band-stats{--band-bg:#eef8ff;--band-border:#156f9f}

.pwa-period-selector{display:flex;flex-wrap:wrap;gap:.55rem;margin:0 0 1rem}.pwa-period-button{border:1px solid #9eb4c8;border-radius:9px;background:#fff;color:#29465f;font-weight:700;padding:.55rem .85rem}.pwa-period-button.is-active{background:#0b5f9c;color:#fff;border-color:#0b5f9c;box-shadow:0 0 0 3px rgba(11,95,156,.15)}
.pwa-primary-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.8rem;margin-bottom:1.1rem}.pwa-primary-metrics article{display:flex;flex-direction:column;justify-content:space-between;gap:.6rem;min-height:105px;padding:1rem;border:1px solid #d6e1eb;border-radius:12px;background:#fff}.pwa-primary-metrics span{font-weight:650;color:#526476}.pwa-primary-metrics strong{font-size:1.65rem;color:#0b2845}
.pwa-stats-table-wrap{border:1px solid #d6e1eb;border-radius:12px;background:#fff}.pwa-stats-table{min-width:1080px;margin-bottom:0}.pwa-daily-table{min-width:1900px}.pwa-stats-table thead th{background:#eef4f8;color:#243e56;vertical-align:middle;white-space:normal;padding:.75rem}.pwa-stats-table td{padding:.65rem .75rem;white-space:nowrap}.pwa-stats-table tbody tr:nth-child(even){background:#f8fafc}
.inline-info-tooltip{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;margin-left:.2rem;padding:0;border:1px solid #64809a;border-radius:50%;background:#fff;color:#365b78;font-size:.72rem;font-weight:800;line-height:1;vertical-align:middle}.inline-info-tooltip:focus-visible{outline:3px solid rgba(13,110,253,.28);outline-offset:2px}.inline-tooltip-bubble{position:absolute;z-index:3000;padding:.75rem .85rem;border:1px solid #476a87;border-radius:9px;background:#102f49;color:#fff;box-shadow:0 10px 28px rgba(0,0,0,.25);font-size:.88rem;line-height:1.35}

/* Fonds validés de la page Sauvegardes. */
.backup-section-create{--section-accent:#2F80C9;background:#EEF6FF!important;border-color:#2F80C9!important}.backup-section-auto{--section-accent:#2E9B59;background:#EEF9F1!important;border-color:#2E9B59!important}.backup-section-restore{--section-accent:#D97706;background:#FFF6E8!important;border-color:#D97706!important}.backup-section-history{--section-accent:#7A4FB3;background:#F5F0FF!important;border-color:#7A4FB3!important}.backup-section-create>.admin-section-toggle,.backup-section-auto>.admin-section-toggle,.backup-section-restore>.admin-section-toggle,.backup-section-history>.admin-section-toggle{background:transparent!important}

/* Charte des bandeaux Messagerie. */
.messaging-band-outgoing{--band-bg:#eef6ff;--band-border:#2f80c9}.messaging-band-messages{--band-bg:#eef9f1;--band-border:#2e9b59}.messaging-band-conversations{--band-bg:#f5f0ff;--band-border:#7a4fb3}.messaging-charter-band{border:1px solid var(--band-border)!important;border-left:6px solid var(--band-border)!important;border-top:4px solid var(--band-border)!important;background:var(--band-bg)!important;border-radius:12px!important;margin-bottom:1rem}.messaging-charter-band>.admin-section-toggle{background:transparent!important}

@media(max-width:767px){.admin-dynamic-section-nav{flex-wrap:nowrap;overflow-x:auto;position:static}.admin-dynamic-section-nav a{flex:0 0 auto}.pwa-primary-metrics{grid-template-columns:1fr 1fr}.admin-mobile-subband>.admin-section-content{padding:.75rem}}
@media(max-width:480px){.pwa-primary-metrics{grid-template-columns:1fr}}


/* Site OK-54 — composants d’administration centralisés. */
.admin-compact-section-nav{display:block;position:sticky;top:.5rem;z-index:20;border:1px solid #d8e2ec!important;border-radius:14px!important;background:#f8fafc!important;box-shadow:0 4px 14px rgba(11,40,69,.08)}
.admin-compact-section-nav .d-flex{gap:.55rem!important}.admin-compact-section-nav a.btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:.42rem .72rem;border:1px solid;border-radius:8px;font-weight:700;text-decoration:none;transition:.15s ease}.admin-compact-section-nav a.is-active{box-shadow:0 0 0 3px rgba(13,110,253,.18);transform:translateY(-1px)}

/* Hiérarchie des bandeaux : niveau 1 parent, niveau 2 hérité, niveau 3 compact. */
.admin-collapsible-section{--admin-band-accent:var(--admin-inherited-accent,var(--section-accent,var(--band-border,#426f9f)))}
.admin-band-level-1{border-top:4px solid var(--admin-band-accent)!important;border-left:5px solid var(--admin-band-accent)!important}
.admin-band-level-2{margin:.85rem 0!important;border:1px solid color-mix(in srgb,var(--admin-band-accent) 58%,#fff)!important;border-left:6px solid var(--admin-band-accent)!important;border-radius:12px!important;background:color-mix(in srgb,var(--admin-band-accent) 9%,#fff)!important;overflow:hidden}
.admin-band-level-2>.admin-section-toggle{justify-content:flex-start!important;gap:.75rem;background:transparent!important}.admin-band-level-2>.admin-section-toggle .admin-section-arrow{order:-1;flex:0 0 auto}.admin-band-level-2>.admin-section-toggle .admin-section-title-copy{flex:1}
.admin-band-level-3{margin:.7rem 0!important;border:1px solid color-mix(in srgb,var(--admin-band-accent) 45%,#fff)!important;border-left:4px solid var(--admin-band-accent)!important;border-radius:10px!important;background:color-mix(in srgb,var(--admin-band-accent) 5%,#fff)!important;overflow:hidden}
.admin-band-level-3>.admin-section-toggle{min-height:58px;background:transparent!important}.admin-band-level-2>.admin-section-content,.admin-band-level-3>.admin-section-content{padding:1rem;background:rgba(255,255,255,.68)}
.admin-section-toggle{width:100%;border:0;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:1rem}.admin-section-title-copy{min-width:0}.admin-section-summary{font-weight:400;opacity:.78;margin-top:.12rem}

/* Tableau de bord : cartes plus lisibles et toujours intégralement cliquables. */
.admin-dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.admin-dashboard-card{--dashboard-accent:#2f80c9;--dashboard-ink:color-mix(in srgb,var(--dashboard-accent) 42%,#102a43);--dashboard-muted:color-mix(in srgb,var(--dashboard-accent) 24%,#52677a);position:relative;min-height:178px;padding:1.35rem 1.35rem 2.2rem!important;border:1px solid color-mix(in srgb,var(--dashboard-accent) 32%,#dce5ed)!important;border-top:5px solid var(--dashboard-accent)!important;border-radius:14px!important;background:color-mix(in srgb,var(--dashboard-accent) 5%,#fff)!important;color:var(--dashboard-ink);text-decoration:none;box-shadow:0 5px 16px rgba(11,40,69,.08);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.admin-dashboard-card:hover,.admin-dashboard-card:focus-visible{transform:translateY(-3px);box-shadow:0 10px 24px rgba(11,40,69,.16);border-color:var(--dashboard-accent)!important}.admin-dashboard-card strong{font-size:1.02rem;margin:.5rem 0 .35rem;padding-right:1.5rem;color:var(--dashboard-ink)}.admin-dashboard-card small{color:var(--dashboard-muted);line-height:1.45}.admin-dashboard-icon{width:2.35rem;height:2.35rem;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--dashboard-accent) 15%,#fff);color:var(--dashboard-accent);font-size:1.15rem;font-weight:800}.admin-dashboard-arrow{position:absolute;right:1rem;bottom:.8rem;font-size:1.35rem;color:var(--dashboard-accent);transition:transform .16s ease}.admin-dashboard-card:hover .admin-dashboard-arrow{transform:translateX(3px)}.admin-dashboard-indicator{display:block;margin-top:.75rem;font-size:.78rem;font-weight:700;color:var(--dashboard-accent)}
.dashboard-card-with-alert{padding:0!important}.admin-dashboard-card-main{display:flex;flex-direction:column;min-height:173px;padding:1.35rem 1.35rem 2.2rem;color:inherit;text-decoration:none}.dashboard-messaging-alert{position:absolute;left:1.35rem;bottom:.75rem;z-index:2;text-decoration:none}
.dashboard-tone-blue{--dashboard-accent:#005eb8}.dashboard-tone-cyan{--dashboard-accent:#008577}.dashboard-tone-orange{--dashboard-accent:#e06b00}.dashboard-tone-purple{--dashboard-accent:#7c3aed}.dashboard-tone-green{--dashboard-accent:#15803d}.dashboard-tone-pink{--dashboard-accent:#d2185b}.dashboard-tone-statistics{--dashboard-accent:#9a6f00}.dashboard-tone-cron{--dashboard-accent:#0891B2;--dashboard-ink:#155E75;--dashboard-soft:#ECFEFF}.dashboard-tone-cron .admin-dashboard-icon{background:#CFFAFE}.dashboard-tone-messaging{--dashboard-accent:#3949ab}.dashboard-tone-backups{--dashboard-accent:#546e7a}

/* Aperçu PWA permanent à gauche et réglages de niveau 3 à droite. */
.pwa-content-layout{display:grid;grid-template-columns:minmax(280px,38%) minmax(0,1fr);gap:1.25rem;align-items:start}.pwa-mobile-preview{position:sticky;top:5.5rem}.pwa-mobile-screen{position:relative;width:min(100%,360px);min-height:620px;margin:auto;padding:1rem;border:9px solid #172b3a;border-radius:32px;background:#f4f7f9;box-shadow:0 12px 28px rgba(11,40,69,.18);overflow:hidden}.pwa-mobile-status{display:flex;justify-content:space-between;font-size:.72rem;font-weight:700;color:#40566a}.pwa-mobile-page-skeleton{display:grid;gap:.75rem;margin-top:3rem}.pwa-mobile-page-skeleton span{display:block;height:72px;border-radius:12px;background:linear-gradient(90deg,#dfe7ed,#edf2f5,#dfe7ed)}.pwa-preview-prompt{position:absolute;left:50%;bottom:1rem;width:calc(100% - 2rem);transform:translateX(-50%);display:grid;grid-template-columns:auto 1fr;gap:.65rem;padding:.9rem;box-shadow:0 8px 22px rgba(11,40,69,.24);transition:left .15s ease,transform .15s ease}.pwa-preview-prompt[data-preview-position="bottom-left"]{left:1rem;transform:none}.pwa-preview-prompt[data-preview-position="bottom-right"]{left:auto;right:1rem;transform:none}.pwa-preview-app-icon{width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:.65rem;background:#0b2845;color:#fff;font-size:.8rem;font-weight:800}.pwa-preview-app-icon[hidden]{display:none}.pwa-preview-copy{min-width:0;display:flex;flex-direction:column;gap:.2rem}.pwa-preview-copy strong{font-size:.88rem}.pwa-preview-copy span,.pwa-preview-copy small{font-size:.72rem;line-height:1.35}.pwa-preview-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:.45rem}.pwa-preview-actions button{border:1px solid;border-radius:.5rem;padding:.42rem .65rem;font-size:.72rem;font-weight:700}.pwa-preview-actions button:first-child{color:#fff}.pwa-preview-actions button:last-child{background:transparent}.pwa-level3-settings{min-width:0}

/* Page Statistiques autonome. */
.statistics-section-journals{--section-accent:#7a4fb3}
.statistics-section-overview{--section-accent:#2f80c9}.statistics-section-daily{--section-accent:#268e88}.statistics-section-pwa{--section-accent:#7a4fb3}.statistics-section-cities{--section-accent:#d97706}.statistics-section-exports{--section-accent:#2e9b59}.statistics-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem}.statistics-overview-grid article{display:flex;flex-direction:column;gap:.35rem;padding:1rem;border:1px solid #d7e2eb;border-radius:12px;background:#fff}.statistics-overview-grid article span{font-weight:650;color:#526476}.statistics-overview-grid article strong{font-size:1.65rem;color:#0b2845}.statistics-daily-chart{position:relative;min-height:320px;padding:.75rem;border:1px solid #d6e1eb;border-radius:12px;background:#fff;overflow:hidden}.statistics-daily-chart canvas{display:block;max-width:100%}.statistics-chart-empty{display:grid;place-items:center;min-height:280px;color:#657686}.statistics-table-wrap{border:1px solid #d6e1eb;border-radius:12px;background:#fff}.statistics-table-wrap table{min-width:1180px;margin:0}.statistics-inactivity-settings{--admin-inherited-accent:#7a4fb3;margin-top:1rem!important}

/* Pages juridiques : espacement lisible sans lignes vides artificielles. */
.configurable-page-content>p,.configurable-page-content>ul,.configurable-page-content>ol{margin-bottom:1rem}.configurable-page-content>p:empty{display:none}.configurable-page-content br+br{display:none}

@media(max-width:991px){.admin-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pwa-content-layout{grid-template-columns:1fr}.pwa-mobile-preview{position:static}.statistics-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.admin-compact-section-nav{position:static;overflow-x:auto}.admin-compact-section-nav .d-flex{flex-wrap:nowrap!important}.admin-compact-section-nav a.btn{flex:0 0 auto}.admin-dashboard-grid{grid-template-columns:1fr}.pwa-mobile-screen{min-height:560px}.statistics-overview-grid{grid-template-columns:1fr}}

/* Site OK-54 — hiérarchie figée des bandeaux et suppression des doubles liserés. */
.admin-section-settings-general{--section-accent:#4169a1;--section-bg:#eaf2ff}
.admin-section-settings-city{--section-accent:#2f8f6a;--section-bg:#eaf8f2}
.admin-section-settings-apps{--section-accent:#7456a5;--section-bg:#f0ebff}
.admin-section-settings-ads{--section-accent:#b84c73;--section-bg:#fdeaf1}
.admin-section-settings-sva{--section-accent:#2384a0;--section-bg:#e7f7fb}
.admin-section-settings-legal{--section-accent:#64748b;--section-bg:#edf1f5}
.admin-section-settings-terms{--section-accent:#d97706;--section-bg:#fff0e3}
.admin-section-settings-privacy{--section-accent:#2f8f4e;--section-bg:#e7f7ec}
.admin-section-alerts{--section-bg:#fdeaf1}
.admin-section-tracking{--section-bg:#eee7fb}
.admin-section-protection{--section-bg:#e6f2ff}
.admin-section-mode4{--section-bg:#fff0e3}
.admin-section-active{--section-bg:#e7f7ec}
.admin-section-archive{--section-bg:#edf1f5}
.admin-section-rules{--section-bg:#fff4d6}
.admin-section-auto-history{--section-bg:#fff0e1}
.admin-section-retention{--section-bg:#fff0e3}
.admin-section-display-modes{--section-bg:#e6f2ff}
.admin-section-display-cards{--section-bg:#eee7fb}
.statistics-section-overview{--section-bg:#eef6ff}
.statistics-section-daily{--section-bg:#ebfbfa}
.statistics-section-pwa{--section-bg:#f5f0ff}
.statistics-section-cities{--section-bg:#fff6e8}
.statistics-section-exports{--section-bg:#eef9f1}

.admin-body .admin-collapsible-section.admin-band-level-1{
    margin-bottom:1.5rem!important;
    border:1px solid color-mix(in srgb,var(--section-accent,#426f9f) 42%,#dce5ed)!important;
    border-top:5px solid var(--section-accent,#426f9f)!important;
    border-left:0!important;
    border-radius:14px!important;
    background:#fff!important;
    box-shadow:0 5px 16px rgba(11,40,69,.09)!important;
    overflow:hidden!important;
}
.admin-body .admin-collapsible-section.admin-band-level-1>.admin-section-toggle{
    min-height:82px;
    padding:1rem 1.25rem!important;
    background:var(--section-bg,color-mix(in srgb,var(--section-accent,#426f9f) 10%,#fff))!important;
    border:0!important;
    border-left:6px solid var(--section-accent,#426f9f)!important;
    border-radius:0!important;
}
.admin-body .admin-collapsible-section.admin-band-level-1>.admin-section-content{
    padding:1.25rem!important;
    background:#fff!important;
}

.admin-body .admin-collapsible-section.admin-band-level-2{
    --admin-band-accent:var(--admin-inherited-accent,var(--section-accent,#426f9f));
    margin:.9rem 0!important;
    border:1px solid color-mix(in srgb,var(--admin-band-accent) 48%,#fff)!important;
    border-left:6px solid var(--admin-band-accent)!important;
    border-top:1px solid color-mix(in srgb,var(--admin-band-accent) 48%,#fff)!important;
    border-radius:12px!important;
    background:color-mix(in srgb,var(--admin-band-accent) 9%,#fff)!important;
    box-shadow:0 2px 8px rgba(11,40,69,.06)!important;
    overflow:hidden!important;
}
.admin-body .admin-collapsible-section.admin-band-level-2>.admin-section-toggle{
    min-height:70px;
    padding:.85rem 1rem!important;
    justify-content:flex-start!important;
    gap:.8rem!important;
    background:transparent!important;
    border:0!important;
    border-left:0!important;
}
.admin-body .admin-collapsible-section.admin-band-level-2>.admin-section-content{
    padding:1rem!important;
    background:rgba(255,255,255,.76)!important;
}

.admin-body .admin-collapsible-section.admin-band-level-3{
    --admin-band-accent:var(--admin-inherited-accent,var(--section-accent,#426f9f));
    margin:.75rem 0!important;
    border:1px solid color-mix(in srgb,var(--admin-band-accent) 38%,#fff)!important;
    border-left:4px solid var(--admin-band-accent)!important;
    border-top:1px solid color-mix(in srgb,var(--admin-band-accent) 38%,#fff)!important;
    border-radius:10px!important;
    background:color-mix(in srgb,var(--admin-band-accent) 5%,#fff)!important;
    box-shadow:none!important;
    overflow:hidden!important;
}
.admin-body .admin-collapsible-section.admin-band-level-3>.admin-section-toggle{
    min-height:60px;
    padding:.75rem .9rem!important;
    justify-content:flex-start!important;
    gap:.7rem!important;
    background:transparent!important;
    border:0!important;
    border-left:0!important;
}
.admin-body .admin-collapsible-section.admin-band-level-3>.admin-section-content{
    padding:.9rem!important;
    background:rgba(255,255,255,.8)!important;
}

/* Neutralise les anciennes palettes locales qui créaient un deuxième liseré. */
.admin-body .admin-band-level-2>.admin-section-toggle,
.admin-body .admin-band-level-3>.admin-section-toggle,
.admin-body .admin-band-level-2.number-display-parent-sva>.admin-section-toggle,
.admin-body .admin-band-level-2.number-display-parent-real>.admin-section-toggle,
.admin-body .admin-band-level-2.number-display-parent-whitelist>.admin-section-toggle,
.admin-body .admin-band-level-2.number-display-parent-blacklist>.admin-section-toggle,
.admin-body .admin-band-level-3.number-editor-button-section>.admin-section-toggle,
.admin-body .admin-band-level-3.number-editor-card-section>.admin-section-toggle,
.admin-body .admin-band-level-2.admin-settings-subsection-1>.admin-section-toggle,
.admin-body .admin-band-level-2.admin-settings-subsection-2>.admin-section-toggle,
.admin-body .admin-band-level-2.admin-settings-subsection-3>.admin-section-toggle,
.admin-body .admin-band-level-2.admin-settings-subsection-4>.admin-section-toggle{
    background:transparent!important;
    border-left:0!important;
}
.admin-body .admin-band-level-2>.admin-section-toggle .admin-section-arrow,
.admin-body .admin-band-level-3>.admin-section-toggle .admin-section-arrow{
    order:-1;
    flex:0 0 auto;
    color:var(--admin-band-accent);
    font-weight:800;
}
.admin-body .admin-band-level-2>.admin-section-toggle .admin-section-title-copy,
.admin-body .admin-band-level-3>.admin-section-toggle .admin-section-title-copy{flex:1;min-width:0}

/* Le menu IP conserve sa palette historique validée. */
.admin-ip-nav.admin-compact-section-nav .nav-alerts{background:#fdeaf1!important;border-color:#b84c73!important;color:#6f2744!important}
.admin-ip-nav.admin-compact-section-nav .nav-tracking{background:#f4effc!important;border-color:#7456a5!important;color:#49356f!important}
.admin-ip-nav.admin-compact-section-nav .nav-protection{background:#e6f2ff!important;border-color:#2774ae!important;color:#123f66!important}
.admin-ip-nav.admin-compact-section-nav .nav-mode4{background:#fff0e3!important;border-color:#d97706!important;color:#824000!important}
.admin-ip-nav.admin-compact-section-nav .nav-active{background:#e7f7ec!important;border-color:#2f8f4e!important;color:#1e6336!important}
.admin-ip-nav.admin-compact-section-nav .nav-archive{background:#edf1f5!important;border-color:#64748b!important;color:#415164!important}
.admin-ip-nav.admin-compact-section-nav .nav-rules{background:#fff4d6!important;border-color:#d49b00!important;color:#725400!important}
.admin-ip-nav.admin-compact-section-nav .nav-auto-history{background:#fff0e1!important;border-color:#e06424!important;color:#8a4500!important}
.admin-ip-nav.admin-compact-section-nav .nav-retention{background:#edf2f6!important;border-color:#52677d!important;color:#34495d!important}
.admin-ip-nav.admin-compact-section-nav a:hover,
.admin-ip-nav.admin-compact-section-nav a:focus-visible{filter:brightness(.96);color:#111827!important}

/* Les details internes IP utilisent eux aussi un seul repère hérité. */
.admin-band-level-1 .ip-inner-collapsible{
    border-left:5px solid var(--section-accent,#426f9f)!important;
}
.admin-band-level-1 .ip-inner-collapsible>summary{
    background:color-mix(in srgb,var(--section-accent,#426f9f) 7%,#fff)!important;
}

.statistics-operation-log{
    margin:0;
    padding-left:1.2rem;
}
.statistics-operation-log li+li{margin-top:.4rem}
.statistics-filter-note{padding:.8rem 1rem;border:1px solid #d9e2ec;border-radius:10px;background:#f8fafc;color:#536779}

@media(max-width:767px){
    .admin-body .admin-collapsible-section.admin-band-level-1>.admin-section-toggle{min-height:72px;padding:.85rem!important}
    .admin-body .admin-collapsible-section.admin-band-level-2>.admin-section-toggle{min-height:64px;padding:.75rem .8rem!important}
    .admin-body .admin-collapsible-section.admin-band-level-3>.admin-section-toggle{min-height:56px;padding:.7rem .75rem!important}
}

/* Site OK-58 — module Statistiques complet, navigation fonctionnelle et cinq bandeaux principaux. */
.statistics-main-nav a.is-active{background:color-mix(in srgb,currentColor 10%,#fff)!important;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 18%,transparent)!important;transform:translateY(-1px)}
.statistics-main-panel>.admin-section-content{min-width:0}
.statistics-main-panel .statistics-table-wrap{overflow:auto}
.statistics-main-panel .stats-daily-table{min-width:1900px}
.statistics-main-panel .pwa-stats-table{min-width:1750px}
.statistics-main-panel .pwa-daily-table{min-width:2250px}
.statistics-main-panel .pwa-stats-detail-grid,.statistics-main-panel .pwa-stats-activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem}
.statistics-main-panel .pwa-stats-detail-grid article,.statistics-main-panel .pwa-stats-activity-grid article{display:flex;flex-direction:column;gap:.3rem;padding:.9rem;border:1px solid color-mix(in srgb,var(--admin-band-accent,#7a4fb3) 20%,#dce5ed);border-radius:11px;background:#fff}
.statistics-main-panel .pwa-stats-detail-grid article span,.statistics-main-panel .pwa-stats-activity-grid article span{font-weight:650;color:#526476}
.statistics-main-panel .pwa-stats-detail-grid article strong,.statistics-main-panel .pwa-stats-activity-grid article strong{font-size:1.35rem;color:#0b2845}
.statistics-main-panel .pwa-ios-summary{padding:.8rem 1rem;border:1px solid color-mix(in srgb,#7a4fb3 30%,#dce5ed);border-radius:10px;background:#faf8ff}
.statistics-main-panel .pwa-stats-period-tabs{display:flex;flex-wrap:wrap;gap:.55rem}
.statistics-main-panel .pwa-stats-period-tabs .is-active{background:#7a4fb3!important;border-color:#7a4fb3!important;color:#fff!important}
.statistics-main-panel .stats-day-start td{border-top:3px solid color-mix(in srgb,var(--section-accent,#268e88) 55%,#fff)}
.statistics-main-panel .annual-stats-panel{margin:0}
.statistics-main-panel .admin-section-content>.admin-collapsible-section:first-child{margin-top:0!important}
.statistics-main-panel .admin-section-content>.admin-collapsible-section:last-child{margin-bottom:0!important}
@media(max-width:991px){.statistics-main-panel .pwa-stats-detail-grid,.statistics-main-panel .pwa-stats-activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.statistics-main-panel .pwa-stats-detail-grid,.statistics-main-panel .pwa-stats-activity-grid{grid-template-columns:1fr}.statistics-main-nav .d-flex{min-width:max-content}}


/* Site OK-58 — Statistiques accessibles sans JavaScript avec details/summary natifs. */
.statistics-native-band > summary{list-style:none;cursor:pointer;-webkit-user-select:none;user-select:none}
.statistics-native-band > summary::-webkit-details-marker{display:none}
.statistics-native-band > summary::marker{content:""}
.statistics-native-band > summary .admin-section-arrow{display:inline-block;transition:transform .16s ease;transform-origin:center;color:var(--admin-band-accent,var(--section-accent,#426f9f))}
.statistics-native-band[open] > summary .admin-section-arrow{transform:rotate(90deg)}
.statistics-native-band > .admin-section-content{display:none}
.statistics-native-band[open] > .admin-section-content{display:block}
.statistics-native-band:target{scroll-margin-top:1rem;box-shadow:0 0 0 4px color-mix(in srgb,var(--section-accent,#426f9f) 20%,transparent),0 5px 16px rgba(11,40,69,.09)!important}
.statistics-main-panel{display:block!important}
.statistics-main-nav a.is-active{background:color-mix(in srgb,currentColor 10%,#fff)!important;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 18%,transparent)!important;transform:translateY(-1px)}
.statistics-native-band.admin-band-level-2{--admin-band-accent:var(--section-accent,#426f9f)}
.statistics-native-band.admin-band-level-2 > summary{border-left:0!important}
.statistics-native-band.admin-band-level-2 > .admin-section-content{border-left:0!important}
@media(max-width:767px){.statistics-native-band:target{scroll-margin-top:.5rem}}


/* Site OK-58 — héritage ciblé des couleurs dans Gestion des adresses IP. */
.admin-main-banded-section.admin-section-mode4{--section-accent:#d97706;--section-bg:#fff0e3;--ip-parent-accent:#d97706}
.admin-main-banded-section.admin-section-active{--section-accent:#2f8f4e;--section-bg:#e7f7ec;--ip-parent-accent:#2f8f4e}
.admin-main-banded-section.admin-section-archive{--section-accent:#64748b;--section-bg:#edf1f5;--ip-parent-accent:#64748b}
.admin-main-banded-section.admin-section-rules{--section-accent:#d49b00;--section-bg:#fff4d6;--ip-parent-accent:#d49b00}
.admin-main-banded-section.admin-section-auto-history{--section-accent:#c85a1b;--section-bg:#fff0e1;--ip-parent-accent:#c85a1b}
.admin-main-banded-section.admin-section-retention{--section-accent:#52677d;--section-bg:#edf2f6;--ip-parent-accent:#52677d}
.admin-main-banded-section.admin-section-mode4 .admin-band-level-2,.admin-main-banded-section.admin-section-mode4 .ip-inner-collapsible,
.admin-main-banded-section.admin-section-active .admin-band-level-2,.admin-main-banded-section.admin-section-active .ip-inner-collapsible,
.admin-main-banded-section.admin-section-archive .admin-band-level-2,.admin-main-banded-section.admin-section-archive .ip-inner-collapsible,
.admin-main-banded-section.admin-section-rules .admin-band-level-2,.admin-main-banded-section.admin-section-rules .ip-inner-collapsible,
.admin-main-banded-section.admin-section-auto-history .admin-band-level-2,.admin-main-banded-section.admin-section-auto-history .ip-inner-collapsible,
.admin-main-banded-section.admin-section-retention .admin-band-level-2,.admin-main-banded-section.admin-section-retention .ip-inner-collapsible{
 --admin-band-accent:var(--ip-parent-accent)!important;border-color:color-mix(in srgb,var(--ip-parent-accent) 48%,#fff)!important;border-left:6px solid var(--ip-parent-accent)!important;background:color-mix(in srgb,var(--ip-parent-accent) 9%,#fff)!important}
.admin-main-banded-section.admin-section-mode4 .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-mode4 .ip-inner-collapsible>summary,
.admin-main-banded-section.admin-section-active .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-active .ip-inner-collapsible>summary,
.admin-main-banded-section.admin-section-archive .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-archive .ip-inner-collapsible>summary,
.admin-main-banded-section.admin-section-rules .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-rules .ip-inner-collapsible>summary,
.admin-main-banded-section.admin-section-auto-history .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-auto-history .ip-inner-collapsible>summary,
.admin-main-banded-section.admin-section-retention .admin-band-level-2>.admin-section-toggle,.admin-main-banded-section.admin-section-retention .ip-inner-collapsible>summary{border-left:0!important;background:color-mix(in srgb,var(--ip-parent-accent) 9%,#fff)!important}

/* Site OK-58 — l’état vide des graphiques PWA ne doit jamais rester visible lorsque le canvas contient des données. */
.pwa-stats-chart-empty[hidden] {
    display: none !important;
}

/* Site OK-59 — identité visuelle centralisée, diagnostic PWA et héritages ciblés. */
.branding-settings-section{--admin-inherited-accent:var(--section-accent,#4169a1)}
.branding-usage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.branding-usage-card,.branding-import-panel,.branding-variants{border:1px solid color-mix(in srgb,var(--admin-band-accent,#4169a1) 24%,#dce5ed);border-radius:12px;background:rgba(255,255,255,.78);padding:1rem}
.branding-preview{min-height:92px;display:grid;place-items:center;margin:.65rem 0 1rem;padding:.65rem;border:1px dashed color-mix(in srgb,var(--admin-band-accent,#4169a1) 36%,#ccd7e0);border-radius:10px;background:#fff;overflow:hidden}
.branding-preview img{display:block;max-width:100%;max-height:90px;object-fit:contain}.branding-preview-small img{width:32px;height:32px}
.branding-variant-grid{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:.75rem}.branding-variant-grid figure{margin:0;text-align:center}.branding-variant-grid figure>div{height:96px;display:grid;place-items:center;border-radius:9px;background:#fff;border:1px solid #e0e7ee}.branding-variant-grid img{max-width:82px;max-height:82px;object-fit:contain}.branding-variant-grid figcaption{font-size:.76rem;margin-top:.35rem;color:#526476}
.branding-library{display:grid;gap:.75rem}.branding-logo-card{display:grid;grid-template-columns:92px minmax(180px,1fr) minmax(320px,auto);align-items:center;gap:1rem;padding:.85rem;border:1px solid #dce5ed;border-radius:12px;background:#fff}.branding-logo-card>img{width:84px;height:84px;object-fit:contain;border-radius:12px;border:1px solid #e1e7ed}.branding-logo-meta{display:flex;flex-direction:column;gap:.32rem}.branding-logo-meta small{color:#687b8d}.branding-usage-badges{display:flex;flex-wrap:wrap;gap:.3rem}.branding-logo-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem}
.pwa-active-icon-reference{display:flex;align-items:center;gap:1rem;padding:1rem;border:1px solid color-mix(in srgb,var(--admin-band-accent,#d97706) 22%,#dce5ed);border-radius:12px;background:#fff}.pwa-active-icon-reference img{width:76px;height:76px;object-fit:contain;border-radius:12px}
.pwa-preview-app-icon{width:48px!important;height:48px!important;display:block!important;object-fit:contain;border-radius:.65rem;background:transparent!important}.pwa-preview-app-icon[hidden]{display:none!important}.pwa-install-logo{object-fit:contain;border-radius:.6rem}
.pwa-diagnostic-summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin:.75rem 0 1rem;padding:1rem;border:1px solid #d8e2eb;border-left:6px solid #64748b;border-radius:12px;background:#f8fafc}.pwa-diagnostic-summary[data-state="ok"]{border-left-color:#2e9b59;background:#eff9f2}.pwa-diagnostic-summary[data-state="warning"]{border-left-color:#d49b00;background:#fff9e8}.pwa-diagnostic-summary[data-state="error"]{border-left-color:#c13d3d;background:#fff0f0}.pwa-diagnostic-summary>div:first-child{display:flex;flex-direction:column;gap:.2rem}.pwa-diagnostic-counts{display:flex;gap:.55rem;flex-wrap:wrap}.pwa-diagnostic-counts span{padding:.3rem .55rem;border-radius:999px;background:#fff;border:1px solid #dce5ed;font-size:.82rem}.pwa-diagnostic-counts .status-ok{color:#216c3b}.pwa-diagnostic-counts .status-warning{color:#765800}.pwa-diagnostic-counts .status-error{color:#9c2f2f}.pwa-diagnostic-grid{display:grid;gap:.75rem}.pwa-diagnostic-list{display:grid;gap:.45rem}.pwa-diagnostic-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .7rem;border-radius:8px;background:#fff;border:1px solid #e2e8ee}.pwa-diagnostic-row strong[data-state="ok"],.pwa-diagnostic-row [data-pwa-icon-status][data-state="ok"]{color:#216c3b}.pwa-diagnostic-row strong[data-state="warning"]{color:#765800}.pwa-diagnostic-row strong[data-state="error"],.pwa-diagnostic-row [data-pwa-icon-status][data-state="error"]{color:#a03030}
.taxi-pro-brand{display:inline-flex;align-items:center;gap:.55rem}.taxi-pro-header-icon{object-fit:contain;border-radius:8px;flex:0 0 auto}.taxi-pro-site-logo{width:auto;max-width:230px;object-fit:contain}.taxi-pro-footer-brand{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.taxi-pro-footer-icon{object-fit:contain;border-radius:10px;flex:0 0 auto}

.admin-main-banded-section.admin-section-mode4{--section-accent:#d97706!important;--section-bg:#fff0e3!important;--ip-parent-accent:#d97706!important}
.admin-main-banded-section.admin-section-active{--section-accent:#2f8f4e!important;--section-bg:#e7f7ec!important;--ip-parent-accent:#2f8f4e!important}
.admin-main-banded-section.admin-section-archive{--section-accent:#64748b!important;--section-bg:#edf1f5!important;--ip-parent-accent:#64748b!important}
.admin-main-banded-section.admin-section-rules{--section-accent:#d49b00!important;--section-bg:#fff4d6!important;--ip-parent-accent:#d49b00!important}
.admin-main-banded-section.admin-section-auto-history{--section-accent:#c85a1b!important;--section-bg:#fff0e1!important;--ip-parent-accent:#c85a1b!important}
.admin-main-banded-section.admin-section-retention{--section-accent:#52677d!important;--section-bg:#edf2f6!important;--ip-parent-accent:#52677d!important}
.admin-main-banded-section:is(.admin-section-mode4,.admin-section-active,.admin-section-archive,.admin-section-rules,.admin-section-auto-history,.admin-section-retention)>.admin-section-toggle{background:var(--section-bg)!important;border-left:0!important}
.admin-main-banded-section:is(.admin-section-mode4,.admin-section-active,.admin-section-archive,.admin-section-rules,.admin-section-auto-history,.admin-section-retention) :is(.admin-band-level-2,.ip-inner-collapsible,.ip-auto-action-settings,.ip-rule-creator,.ip-filters-tools){--admin-inherited-accent:var(--ip-parent-accent)!important;--admin-band-accent:var(--ip-parent-accent)!important;border:1px solid color-mix(in srgb,var(--ip-parent-accent) 48%,#fff)!important;border-left:6px solid var(--ip-parent-accent)!important;background:color-mix(in srgb,var(--ip-parent-accent) 9%,#fff)!important;border-radius:12px!important;overflow:hidden}
.admin-main-banded-section:is(.admin-section-mode4,.admin-section-active,.admin-section-archive,.admin-section-rules,.admin-section-auto-history,.admin-section-retention) :is(.admin-band-level-2,.ip-inner-collapsible,.ip-auto-action-settings,.ip-rule-creator,.ip-filters-tools)>:is(.admin-section-toggle,summary){background:color-mix(in srgb,var(--ip-parent-accent) 9%,#fff)!important;border-left:0!important;border-top:0!important}
.admin-main-banded-section:is(.admin-section-mode4,.admin-section-active,.admin-section-archive,.admin-section-rules,.admin-section-auto-history,.admin-section-retention) :is(.admin-band-level-2,.ip-inner-collapsible,.ip-auto-action-settings,.ip-rule-creator,.ip-filters-tools)>.admin-section-content{border-left:0!important}
.admin-ip-nav.admin-compact-section-nav .nav-mode4{background:#fff0e3!important;border-color:#d97706!important;color:#824000!important}

.messaging-band-outgoing{--band-bg:#eef6ff!important;--band-border:#2f80c9!important;--section-accent:#2f80c9!important;--admin-inherited-accent:#2f80c9!important;--admin-band-accent:#2f80c9!important}
.messaging-band-messages{--band-bg:#eef9f1!important;--band-border:#2e9b59!important;--section-accent:#2e9b59!important;--admin-inherited-accent:#2e9b59!important;--admin-band-accent:#2e9b59!important}
.messaging-band-conversations{--band-bg:#f5f0ff!important;--band-border:#7a4fb3!important;--section-accent:#7a4fb3!important;--admin-inherited-accent:#7a4fb3!important;--admin-band-accent:#7a4fb3!important}
.messaging-charter-band :is(.admin-band-level-2,.admin-collapsible-section:not(.messaging-charter-band),details.conversation-attachment-summary){--admin-band-accent:var(--section-accent)!important;border-color:color-mix(in srgb,var(--section-accent) 48%,#fff)!important;border-left:6px solid var(--section-accent)!important;background:color-mix(in srgb,var(--section-accent) 9%,#fff)!important}
.messaging-charter-band :is(.admin-band-level-2,.admin-collapsible-section:not(.messaging-charter-band),details.conversation-attachment-summary)>:is(.admin-section-toggle,summary){background:color-mix(in srgb,var(--section-accent) 9%,#fff)!important;border-left:0!important}

@media(max-width:991px){.branding-usage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.branding-variant-grid{grid-template-columns:repeat(3,minmax(90px,1fr))}.branding-logo-card{grid-template-columns:76px 1fr}.branding-logo-card>img{width:68px;height:68px}.branding-logo-actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:767px){.branding-usage-grid{grid-template-columns:1fr}.branding-variant-grid{grid-template-columns:repeat(2,minmax(90px,1fr))}.branding-logo-card{grid-template-columns:64px 1fr}.branding-logo-card>img{width:58px;height:58px}.pwa-diagnostic-summary,.pwa-diagnostic-row{align-items:flex-start;flex-direction:column}.taxi-pro-site-logo{max-width:165px}.taxi-pro-header-icon{max-width:34px;max-height:34px}}


/* ============================================================
   Site OK-61 — identité, lisibilité admin et prévisualisations
   ============================================================ */

/* L'icône d'en-tête utilise une taille de référence PC tout en restant
   automatiquement raisonnable sur tablette et mobile. */
.taxi-pro-header-icon{
    width:var(--header-icon-size,64px);
    height:var(--header-icon-size,64px);
    max-width:none;
    max-height:none;
    object-fit:contain;
    border-radius:12px;
}
.taxi-pro-brand-text{
    display:inline-flex;
    align-items:baseline;
    line-height:1;
    white-space:nowrap;
}
@media (max-width:991.98px){
    .taxi-pro-header-icon{
        width:min(var(--header-icon-size,64px),56px);
        height:min(var(--header-icon-size,64px),56px);
    }
}
@media (max-width:767.98px){
    .taxi-pro-header-icon{
        width:min(var(--header-icon-size,64px),48px)!important;
        height:min(var(--header-icon-size,64px),48px)!important;
        max-width:48px!important;
        max-height:48px!important;
    }
}

/* Editeur du logo textuel. */
.site-text-logo-preview{
    display:flex;
    align-items:center;
    min-height:82px;
    padding:1rem 1.25rem;
    border:1px solid #d8e2ec;
    border-radius:12px;
    background:linear-gradient(135deg,#fff,#f7fafc);
    font-size:22px;
    font-weight:700;
    line-height:1;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.7);
}
.site-logo-part-editor{
    padding:1rem;
    border:1px solid #e1e8ef;
    border-radius:10px;
    background:#fff;
}
.branding-usage-card.is-disabled{
    opacity:.62;
    background:#f3f5f7;
}
.branding-usage-card.is-disabled .branding-preview,
.branding-usage-card.is-disabled select,
.branding-usage-card.is-disabled input[type="number"]{
    filter:grayscale(.35);
}

/* Prévisualisations des cartouches : le moteur public est conservé, mais
   l'espace admin plus étroit doit pouvoir contracter le numéro sans troncature. */
.number-public-preview-result{
    width:100%;
    overflow:visible;
}
.number-public-preview-result .contact-card-shell{
    display:block;
    width:100%;
    max-width:100%;
}
.number-public-preview-result .contact-card,
.number-public-preview-result .directory-contact-card,
.number-public-preview-result .custom-contact-card{
    display:flex!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow:visible!important;
    flex-wrap:nowrap!important;
}
.number-public-preview-result .contact-primary-panel,
.number-public-preview-result .custom-contact-panel,
.number-public-preview-result .directory-contact-panel-full{
    flex:1 1 auto!important;
    min-width:0!important;
    max-width:100%!important;
    overflow:visible!important;
}
.number-public-preview-result .dynamic-contact{
    min-width:0!important;
    white-space:nowrap!important;
    overflow:visible!important;
    text-overflow:clip!important;
    font-size:inherit!important;
}
.number-public-preview-result .contact-information-panel,
.number-public-preview-result .directory-contact-label,
.number-public-preview-result .custom-contact-label{
    flex:0 0 auto!important;
    white-space:nowrap!important;
}
@media(max-width:520px){
    .number-public-preview-result .contact-card,
    .number-public-preview-result .directory-contact-card,
    .number-public-preview-result .custom-contact-card{
        flex-wrap:wrap!important;
    }
    .number-public-preview-result .contact-primary-panel,
    .number-public-preview-result .custom-contact-panel,
    .number-public-preview-result .directory-contact-panel-full{
        flex:1 1 60%!important;
    }
}

/* Gérer les villes : couleur fonctionnelle, sobre et cohérente. */
.city-editor-card{
    border:1px solid #bfd5ee;
    border-left:6px solid #3578c4;
    background:#f5f9fe;
}
.city-editor-card .form-control,
.city-editor-card .form-select{
    background:#fff;
}
.city-filter-bar{
    margin-left:0;
    margin-right:0;
    padding:.85rem;
    border:1px solid #d3e2f2;
    border-radius:10px;
    background:#eef6ff;
}
.city-admin-table thead th{
    background:#e8f2fc;
    color:#17324d;
    border-bottom-color:#c8dbee;
}
.city-admin-table tbody tr{
    transition:background-color .12s ease;
}
.city-admin-table tbody tr:hover td{
    background:#f2f8ff;
}
.city-taxi-count{
    min-width:2rem;
    background:#d8eaff;
    color:#0b5fb3;
    border:1px solid #b7d7fb;
}

/* Fiche taxi : chaque zone hérite visuellement de sa couleur de bandeau. */
.taxi-zone{
    --zone-accent:#6b7280;
    --zone-bg:#f8fafc;
    --zone-border:#d9e1e8;
    border-color:var(--zone-border)!important;
    border-left-color:var(--zone-accent)!important;
    background:var(--zone-bg)!important;
}
.taxi-zone .form-control,
.taxi-zone .form-select,
.taxi-zone textarea{
    background:#fff;
}
.taxi-zone-blue{--zone-accent:#4c7fc4;--zone-bg:#f2f7fd;--zone-border:#c8d9ef;}
.taxi-zone-green{--zone-accent:#2f9d62;--zone-bg:#f1faf5;--zone-border:#c4e7d2;}
.taxi-zone-yellow{--zone-accent:#d6a100;--zone-bg:#fffbec;--zone-border:#f0df9a;}
.taxi-zone-purple{--zone-accent:#7c55b8;--zone-bg:#f7f3fc;--zone-border:#dacbef;}
.taxi-zone-teal{--zone-accent:#268a91;--zone-bg:#f0f9fa;--zone-border:#bfe1e3;}
.taxi-zone-red{--zone-accent:#c65353;--zone-bg:#fdf3f3;--zone-border:#efc9c9;}
.taxi-zone-gray{--zone-accent:#64748b;--zone-bg:#f7f9fb;--zone-border:#d8e0e8;}
.taxi-private-comment{
    background:rgba(255,255,255,.65)!important;
    border-color:var(--zone-border,#d9e1e8)!important;
}

.taxi-pro-footer-icon{
    width:var(--footer-icon-size,64px);
    height:var(--footer-icon-size,64px);
}
@media (max-width:991.98px){
    .taxi-pro-footer-icon{
        width:min(var(--footer-icon-size,64px),56px);
        height:min(var(--footer-icon-size,64px),56px);
    }
}
@media (max-width:767.98px){
    .taxi-pro-footer-icon{
        width:min(var(--footer-icon-size,64px),48px);
        height:min(var(--footer-icon-size,64px),48px);
    }
}


/* Site OK-62 — cohérence prévisualisation/public et ergonomie admin. */
.statistics-overview-grid-compact {
    grid-template-columns: repeat(4, minmax(0,1fr));
    gap: .75rem;
}
.statistics-overview-grid-compact article { min-height: 78px; padding: .85rem 1rem; }
.statistics-overview-grid-compact article span { font-size: .85rem; }
.statistics-overview-grid-compact article strong { font-size: 1.45rem; }
@media (max-width: 1200px){ .statistics-overview-grid-compact{grid-template-columns:repeat(3,minmax(0,1fr));} }
@media (max-width: 800px){ .statistics-overview-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width: 480px){ .statistics-overview-grid-compact{grid-template-columns:1fr;} }

.statistics-ranking-list { list-style-position: inside; margin:0; padding:0; display:grid; gap:.5rem; }
.statistics-ranking-list li { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(70px,35%) auto; gap:.6rem; align-items:center; padding:.45rem .6rem; border-radius:.5rem; overflow:hidden; }
.statistics-ranking-bar { height:.5rem; border-radius:999px; background:linear-gradient(90deg,rgba(13,110,253,.24) var(--rank),rgba(13,110,253,.06) var(--rank)); }
.statistics-ranking-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.statistics-global-period { position:relative; z-index:2; }

.dashboard-tone-alerts { --dashboard-accent:#c62828; --dashboard-tone:#c62828; --dashboard-tone-soft:#fff1f1; }

.conversation-dedicated-view .conversation-attachment img,
.conversation-dedicated-view .conversation-image-link img {
    width:auto;
    height:auto;
    max-width:min(var(--message-attachment-preview,200px),100%);
    max-height:var(--message-attachment-preview,200px);
    object-fit:contain;
    border-radius:.55rem;
    cursor:zoom-in;
}
.conversation-attachment { align-items:flex-start; }
.conversation-attachment small { display:block; color:#6b7280; }
.conversation-lightbox {
    position:fixed; inset:0; z-index:10050; display:none; place-items:center;
    background:rgba(0,0,0,.86); padding:2rem;
}
.conversation-lightbox.is-open { display:grid; }
.conversation-lightbox img { max-width:94vw; max-height:88vh; object-fit:contain; border-radius:.5rem; }
.conversation-lightbox-close { position:fixed; right:1.25rem; top:1rem; z-index:10051; }

.number-editor-preview-column { position:relative; }
.number-editor-preview-column .card-live-preview-wrap {
    position:sticky; top:1rem; z-index:20; background:var(--bs-body-bg,#fff); padding:.75rem; border-radius:.75rem;
}
.number-config-group { border:1px solid #dde4ec; border-radius:.65rem; margin:.75rem 0; background:rgba(255,255,255,.55); }
.number-config-group > summary { cursor:pointer; font-weight:700; padding:.8rem 1rem; }
.number-config-group > .number-config-group-body { padding:0 1rem 1rem; }
.number-editor-save-row { position:sticky; bottom:.5rem; z-index:15; display:flex; justify-content:flex-end; padding:.65rem; background:rgba(255,255,255,.94); border-top:1px solid #e5e7eb; }

.contact-card-shell:not(.custom-contact-shell) .contact-card,
.directory-contact-shell .directory-contact-card,
.custom-contact-shell .custom-contact-card {
    max-width:100%!important;
    overflow:visible!important;
}
.contact-card-shell:not(.custom-contact-shell) .contact-card .dynamic-contact,
.directory-contact-shell .directory-contact-card .dynamic-contact,
.custom-contact-shell .custom-contact-card .dynamic-contact {
    white-space:nowrap!important;
    overflow:visible!important;
    text-overflow:clip!important;
    max-width:none!important;
    flex-shrink:0!important;
}
.regulated-information-lines,
.directory-contact-shell .directory-contact-label .contact-information-text {
    font-size:inherit;
}
@media (max-width:430px) {
    .contact-card-shell:not(.custom-contact-shell) .contact-card,
    .directory-contact-shell .directory-contact-card,
    .custom-contact-shell .custom-contact-card { flex-wrap:wrap!important; }
    .contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-primary-panel,
    .directory-contact-shell .directory-contact-card > .contact-primary-panel,
    .custom-contact-shell .custom-contact-card > .contact-primary-panel { flex:1 0 100%!important; width:100%!important; }
    .contact-card-shell:not(.custom-contact-shell) .contact-card > .contact-information-panel,
    .directory-contact-shell .directory-contact-card > .contact-information-panel,
    .custom-contact-shell .custom-contact-card > .contact-information-panel { flex:1 0 100%!important; width:100%!important; max-width:100%!important; border-radius:0 0 .4rem .4rem!important; }
}
.admin-edit-drawer {
    position:fixed; inset:0 0 0 auto; width:min(74vw,1200px); z-index:1040; overflow:auto;
    background:#fff; box-shadow:-18px 0 40px rgba(15,23,42,.22); padding:1.25rem;
}
.admin-edit-drawer-backdrop { position:fixed; inset:0; z-index:1039; background:rgba(15,23,42,.28); }
.admin-edit-drawer-actions { position:sticky; bottom:0; z-index:5; background:rgba(255,255,255,.96); border-top:1px solid #dbe3ec; padding:.75rem 0; }
@media (max-width:767px){ .admin-edit-drawer{width:100vw;} }

.admin-edit-drawer { display:flex; flex-direction:column; padding:0; }
.admin-edit-drawer-header { position:sticky; top:0; z-index:8; display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 1.25rem; background:rgba(255,255,255,.98); border-bottom:1px solid #dbe3ec; }
.admin-edit-drawer-body { padding:1.25rem; overflow:visible; }
.admin-edit-drawer-backdrop { cursor:default; }


/* Site OK-63 — identité textuelle et aperçu visuel */
.site-text-logo-live-preview{position:sticky;top:.75rem;z-index:15;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.site-text-logo-preview-card{border:1px solid #dfe6ee;border-radius:12px;padding:.9rem 1rem;overflow:hidden}
.site-text-logo-preview-card.is-light{background:#fff;color:#111827}
.site-text-logo-preview-card.is-dark{background:#13283a;color:#fff}
.site-text-logo-preview-card>small{display:block;margin-bottom:.65rem;opacity:.72;font-weight:600}
.site-text-logo-preview{display:inline-flex;align-items:baseline;white-space:nowrap;line-height:1}
.site-text-logo-preview.is-disabled-preview{opacity:.42}
.site-logo-segment-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem}
.site-logo-part-editor{border:1px solid #dfe6ee;border-radius:12px;padding:1rem;background:#fff}
@media(max-width:1199px){.site-logo-segment-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){.site-text-logo-live-preview{position:static;grid-template-columns:1fr}.site-logo-segment-grid{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.site-logo-segment-grid{grid-template-columns:1fr}}

/* Site OK-63 — le résumé natif des statistiques reste toujours visible, même avant JS. */
.statistics-native-band{display:block!important;visibility:visible!important}
.statistics-native-band>summary{display:flex!important;visibility:visible!important}
.statistics-native-band:not([open])>.admin-section-content{display:none!important}

/* Site OK-63 — anti-FOUC des bandeaux admin.
   Le contenu brut reste invisible jusqu'à l'initialisation JS, avec secours
   automatique après 3 secondes si le script principal ne démarre pas. */
.collapsible-pending .admin-body [data-collapsible-section]:not([data-collapsible-ready="1"]){
    min-height:72px;
    overflow:hidden!important;
}
.collapsible-pending .admin-body [data-collapsible-section]:not([data-collapsible-ready="1"])>*{
    visibility:hidden!important;
}


/* ==========================================================
   Site OK-64 — STATISTIQUES 2.0
   Nouveau moteur d'accordéons indépendant de details/summary
   et du moteur global des bandeaux de l'administration.
   ========================================================== */
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-panel{
    --stats2-accent: var(--section-accent,#426f9f);
    display:block !important;
    visibility:visible !important;
    position:relative;
    margin:0 0 1rem;
    border:1px solid color-mix(in srgb,var(--stats2-accent) 30%,#dbe5ee);
    border-left:6px solid var(--stats2-accent);
    border-radius:14px;
    background:color-mix(in srgb,var(--stats2-accent) 6%,#fff);
    box-shadow:0 3px 14px rgba(11,40,69,.06);
    overflow:clip;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-1{
    margin-bottom:1.35rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-2{
    margin:.85rem 0;
    border-radius:12px;
    box-shadow:none;
    background:color-mix(in srgb,var(--stats2-accent) 4%,#fff);
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-toggle{
    appearance:none;
    width:100%;
    min-height:78px;
    padding:1rem 1.2rem;
    display:flex;
    align-items:center;
    gap:.85rem;
    border:0;
    background:transparent;
    color:#10283b;
    text-align:left;
    cursor:pointer;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-2>.stats2-toggle{
    min-height:66px;
    padding:.85rem 1rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-toggle:hover{
    background:color-mix(in srgb,var(--stats2-accent) 7%,transparent);
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-toggle:focus-visible{
    outline:3px solid color-mix(in srgb,var(--stats2-accent) 40%,transparent);
    outline-offset:-3px;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-arrow{
    flex:0 0 1.25rem;
    color:var(--stats2-accent);
    font-size:1.05rem;
    line-height:1;
    transition:transform .16s ease;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-toggle[aria-expanded="true"] .stats2-arrow{
    transform:rotate(90deg);
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-title-copy{
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:.18rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-title-copy>strong{
    font-size:1.02rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-summary{
    color:#5f6f7c;
    font-size:.88rem;
    font-weight:400;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-content{
    padding:1.15rem;
    border-top:1px solid color-mix(in srgb,var(--stats2-accent) 18%,#e8edf2);
    background:#fff;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-content[hidden]{
    display:none !important;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-parameters{
    --section-accent:#426f9f;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] [data-stats2-main-panel]{
    scroll-margin-top:1rem;
}
@media(max-width:767px){
    .statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-toggle{
        min-height:68px;
        padding:.85rem .9rem;
    }
    .statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-content{
        padding:.85rem;
    }
}


/* ==========================================================
   Site OK-65 — charte admin harmonisée et teintes douces
   ========================================================== */

/* Statistiques 2.0 : même hiérarchie visuelle que Gestion des IP,
   tout en conservant son moteur technique indépendant. */
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-panel{
    --stats2-accent:var(--section-accent,#64748b);
    background:color-mix(in srgb,var(--stats2-accent) 6%,#fff);
    border-color:color-mix(in srgb,var(--stats2-accent) 28%,#e5e7eb);
    border-left:6px solid var(--stats2-accent);
    border-top:5px solid var(--stats2-accent);
    border-radius:12px;
    box-shadow:0 3px 12px rgba(15,23,42,.05);
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-1>.stats2-toggle{
    min-height:72px;
    padding:1rem 1.15rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-1>.stats2-toggle .stats2-title-copy{order:1}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-1>.stats2-toggle .stats2-arrow{
    order:2;
    margin-left:auto;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-2{
    border-top:1px solid color-mix(in srgb,var(--stats2-accent) 28%,#e5e7eb);
    border-left:5px solid var(--stats2-accent);
    background:color-mix(in srgb,var(--stats2-accent) 4%,#fff);
    box-shadow:none;
    margin:.85rem 0;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-2>.stats2-toggle{
    min-height:58px;
    padding:.75rem 1rem;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .stats2-level-2>.stats2-toggle .stats2-arrow{
    order:0;
    margin-left:0;
}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-parameters{--section-accent:#64748b}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-overview{--section-accent:#3b82f6}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-daily{--section-accent:#23958b}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-pwa{--section-accent:#7c55b8}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-cities{--section-accent:#df7a00}
.statistics-admin-page[data-statistics-build="Site-OK-66-STATS2"] .statistics-section-exports{--section-accent:#2f9d62}

/* Les bandeaux principaux de l'administration utilisent désormais un fond pastel
   très léger, comme les Statistiques validées. */
.admin-body .admin-main-banded-section,
.admin-body .admin-collapsible-section.admin-section-alerts,
.admin-body .admin-collapsible-section.admin-section-tracking,
.admin-body .admin-collapsible-section.admin-section-protection,
.admin-body .admin-collapsible-section.admin-section-mode4,
.admin-body .admin-collapsible-section.admin-section-active,
.admin-body .admin-collapsible-section.admin-section-archive,
.admin-body .admin-collapsible-section.admin-section-rules,
.admin-body .admin-collapsible-section.admin-section-auto-history,
.admin-body .admin-collapsible-section.admin-section-stats,
.admin-body .admin-collapsible-section.admin-section-retention{
    border-top-color:var(--section-accent,#64748b)!important;
}
.admin-body .admin-main-banded-section>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-alerts>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-tracking>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-protection>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-mode4>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-active>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-archive>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-rules>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-auto-history>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-stats>.admin-section-toggle,
.admin-body .admin-collapsible-section.admin-section-retention>.admin-section-toggle{
    background:color-mix(in srgb,var(--section-accent,#64748b) 8%,#fff)!important;
    border-left:6px solid var(--section-accent,#64748b)!important;
}

/* Alertes : sous-bandeaux plus compacts et cohérents avec les niveaux 2 des IP. */
.alerts-central-form .admin-main-banded-section{--section-accent:#b84c73}
.alerts-central-form .admin-settings-subsection>.admin-section-toggle,
.alerts-central-form [data-admin-band-level="2"]>.admin-section-toggle{
    background:#fff7fa!important;
    border-left:5px solid #c9688a!important;
    min-height:58px;
}

/* Gestion des villes = identité violette du bloc Dashboard. */
.city-filter-bar{
    border-color:#ddd2f0!important;
    background:#f7f3fc!important;
}
.city-admin-table thead th{
    background:#f0eafb!important;
    color:#372757!important;
    border-bottom-color:#dcccf0!important;
}
.city-admin-table tbody tr:nth-child(even) td{background:#fcfaff}
.city-admin-table tbody tr{transition:background-color .14s ease}
.city-admin-table tbody tr:hover td{background:#f1eafd!important}
.city-taxi-count{
    background:#eee4fb!important;
    color:#65409d!important;
    border-color:#d5c0ef!important;
}

/* Gestion des taxis = identité verte du bloc Dashboard. */
.taxi-management-tools{
    border-color:#b8dfc8!important;
    background:#eef9f2!important;
}
.taxi-admin-table thead th{
    background:#d8f0e2!important;
    color:#174a2d!important;
    border-bottom-color:#a9d8bc!important;
}
.taxi-admin-table tbody tr{transition:background-color .14s ease}
.taxi-admin-table tbody tr:nth-child(even) td{background:#fbfefc}
.taxi-admin-table tbody tr:hover td{background:#eaf8f0!important}

/* Dépendances de paramètres. */
.admin-dependent-disabled{
    opacity:.48;
    filter:grayscale(.25);
    transition:opacity .14s ease;
}
.admin-dependent-disabled input,
.admin-dependent-disabled select,
.admin-dependent-disabled textarea,
.admin-dependent-disabled button{
    cursor:not-allowed!important;
}

/* Actions IP : les trois cartes vivent directement dans le niveau 2,
   sans grand cartouche bleu intermédiaire. */
.ip-filters-tools .ip-action-toolbar{
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    padding:.75rem 0 0!important;
}
.ip-action-group-selection{background:#fff5df!important;border:1px solid #e8ca85!important}
.ip-action-group-dns{background:#f5effd!important;border:1px solid #d8c9ec!important}
.ip-action-group-geo{background:#e8f8fa!important;border:1px solid #b9e1e7!important}

/* Cartes des paramètres liste blanche/noire. */
.ip-rule-settings-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:1rem;
}
.ip-rule-settings-card{
    padding:1rem;
    border:1px solid #eadfbf;
    border-radius:12px;
    background:#fffdf8;
}
.ip-rule-settings-card h4{margin-bottom:.75rem}
.ip-rule-settings-card.is-wide{grid-column:1/-1}
.ip-rule-expiration-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
.ip-rule-expiration-box{padding:.85rem;border:1px solid #eadfbf;border-radius:10px;background:#fff}
@media(max-width:850px){
    .ip-rule-settings-grid,.ip-rule-expiration-grid{grid-template-columns:1fr}
    .ip-rule-settings-card.is-wide{grid-column:auto}
}

/* Panneau latéral Opérateurs SVA : réutilise exactement la mécanique Villes/Taxis. */
.provider-edit-drawer .admin-edit-drawer-body{padding-bottom:5.5rem}
.provider-edit-drawer .provider-drawer-form{border:0!important;box-shadow:none!important;margin:0!important;padding:0!important}

/* Logo texte : choix de graisse. */
.site-logo-weight-control{min-width:180px}

/* ==========================================================
   Site OK-66 — dépendances explicites sans perte de valeurs
   ========================================================== */
.admin-soft-disabled,
.disabled-setting.admin-soft-disabled,
.admin-dependent-disabled {
    opacity:.48;
    filter:grayscale(.22);
    transition:opacity .14s ease, filter .14s ease;
}
.admin-soft-disabled {
    position:relative;
}
.admin-soft-disabled input:not([type="hidden"]),
.admin-soft-disabled select,
.admin-soft-disabled textarea,
.admin-soft-disabled button:not(.admin-section-toggle),
.admin-soft-disabled label {
    pointer-events:none!important;
    cursor:not-allowed!important;
}
.admin-soft-disabled .admin-section-toggle {
    pointer-events:auto!important;
}
.admin-soft-disabled [aria-disabled="true"] {
    cursor:not-allowed!important;
}
/* Charte Alertes : une famille douce par niveau 1, héritée au niveau 2. */
.alerts-central-form .alert-band-behavior { --section-accent:#b84c73; }
.alerts-central-form .alert-band-sva      { --section-accent:#7456a5; }
.alerts-central-form .alert-band-optico   { --section-accent:#d88418; }

.alerts-central-form .alert-band-behavior > .admin-section-toggle { background:#fff2f7!important; }
.alerts-central-form .alert-band-sva > .admin-section-toggle      { background:#f5f0fc!important; }
.alerts-central-form .alert-band-optico > .admin-section-toggle   { background:#fff7e8!important; }

.alerts-central-form .alert-band-behavior .admin-band-level-2 > .admin-section-toggle,
.alerts-central-form .alert-band-behavior .admin-settings-subsection > .admin-section-toggle {
    background:#fff8fb!important;border-left-color:#d58aa4!important;
}
.alerts-central-form .alert-band-sva .admin-band-level-2 > .admin-section-toggle,
.alerts-central-form .alert-band-sva .admin-settings-subsection > .admin-section-toggle {
    background:#faf7fe!important;border-left-color:#9b84bf!important;
}
.alerts-central-form .alert-band-optico .admin-band-level-2 > .admin-section-toggle,
.alerts-central-form .alert-band-optico .admin-settings-subsection > .admin-section-toggle {
    background:#fffbf3!important;border-left-color:#e3ad60!important;
}
/* Lisibilité du segment PRO du logo textuel, identique en aperçu et sur le site public. */
.taxi-pro-brand-text [data-brand-segment="pro"],
.site-text-logo-preview [data-logo-part="pro"] {
    -webkit-text-stroke:.65px #111827;
    paint-order:stroke fill;
    text-shadow:
        -0.45px -0.45px 0 #111827,
         0.45px -0.45px 0 #111827,
        -0.45px  0.45px 0 #111827,
         0.45px  0.45px 0 #111827;
}


/* Site OK-68 --------------------------------------------------------- */
.taxi-pro-brand-text{display:inline-flex;align-items:center;line-height:1.18;padding-top:.08em;overflow:visible}
.navbar-brand,.taxi-pro-brand{overflow:visible}

.city-geolocation-card{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  align-items:center;
  justify-content:space-between;
  padding:18px 20px;
  overflow:hidden;
  border:2px solid #1769d2;
  border-left:7px solid #ffc107;
  border-right:7px solid #ffc107;
  border-radius:14px;
  background:linear-gradient(110deg,#eaf4ff 0%,#f5f9ff 58%,#fff6cf 100%);
  box-shadow:0 7px 20px rgba(11,40,69,.13);
}
.city-geolocation-card-sticky{position:sticky;top:0;z-index:1020}
.contact-card-notice{display:block;margin-top:.4rem;width:100%}
.city-geolocation-copy{display:flex;flex:1;flex-direction:column;gap:3px;min-width:240px;color:#0b2845}
.city-geolocation-copy strong{font-size:1.08rem;font-weight:800;line-height:1.25}
.city-geolocation-copy > span{font-size:.95rem}
.city-geolocation-actions{display:flex;gap:9px;flex-wrap:wrap}
.city-geolocation-actions .btn{display:inline-flex;align-items:center;justify-content:center;min-width:160px;min-height:44px;font-weight:700}
.city-geolocation-status,.city-geolocation-choice{flex-basis:100%;width:100%}
.city-geolocation-status{
  margin:0;
  padding:9px 11px;
  border:1px solid #a8c9ef;
  border-radius:10px;
  color:#0b467e;
  background:rgba(255,255,255,.72);
  font-weight:600;
}
.city-geolocation-card .geolocation-status{display:flex;max-width:none;color:#0b467e;background:rgba(255,255,255,.72)}
.city-geolocation-status.is-error,.city-geolocation-card .geolocation-status.is-error{border-color:#e5b84a;color:#513900;background:#fff4c9}
.city-geolocation-choice{padding:12px;border:1px solid #8bb8ea;border-radius:11px;background:rgba(255,255,255,.84)}
.city-geolocation-choice-text{margin:0 0 10px;color:#0b2845;font-weight:600}
.city-geolocation-choice-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:620px}
.city-geolocation-choice-actions .btn{display:flex;align-items:center;justify-content:center;min-width:0;min-height:46px;padding:9px 12px;line-height:1.2;text-align:center;white-space:normal}
.taxi-distance-badge{display:inline-flex;align-items:center;gap:4px;width:max-content;max-width:100%;margin:0 0 12px;padding:5px 9px;border-radius:999px;background:#eef6ff;color:#084b8a;font-size:.9rem;font-weight:600}
.taxi-distance-badge.is-nearest{background:#eaf8ee;color:#176b35}

.contact-card-visual{display:block;width:100%;max-width:520px}
.contact-card-visual svg{display:block;width:100%;height:auto}
.contact-image-card{display:block;text-decoration:none;max-width:520px}
.contact-image-shell{max-width:520px}

/* Site OK-70 : l'image est rendue à sa largeur CSS réelle. Les tailles de
   police restent donc strictement celles du mode Texte, sans réduction du SVG. */
.contact-card-shell.contact-image-shell{display:block!important;width:min(100%,520px)!important}
.contact-card-shell.contact-image-shell .contact-card.contact-image-card{
  display:block!important;
  width:min(100%,520px)!important;
  max-width:520px!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
.contact-card-shell.contact-image-shell .contact-image-card .contact-card-visual{
  display:block!important;
  flex:0 0 auto!important;
  max-width:100%!important;
  object-fit:fill;
}
.regulated-information-lines{align-items:stretch;text-align:inherit}

.pwa-mode-help-chip{display:inline-block;padding:5px 8px;border:1px solid #d9dee7;border-radius:8px;margin:2px 4px 2px 0;background:#fff}
.pwa-shortcut-instructions{margin-top:8px;font-size:.9rem}

@media (max-width:575.98px){
  .contact-card,.directory-contact-card,.custom-contact-card{display:flex!important;flex-wrap:nowrap!important;align-items:stretch!important;width:100%!important}
  .contact-primary-panel,.directory-contact-panel-full,.custom-contact-panel{flex:1 1 auto!important;width:auto!important;min-width:0!important}
  .contact-information-panel,.directory-contact-label,.custom-contact-label{flex:0 0 auto!important;width:auto!important;max-width:44%!important}
  .dynamic-contact{font-size:inherit!important;white-space:nowrap}
  .city-geolocation-card{align-items:stretch;gap:8px;padding:11px 12px;border-left-width:5px;border-right-width:5px;border-radius:12px;box-shadow:0 5px 15px rgba(11,40,69,.12)}
  .city-geolocation-copy{gap:0;min-width:0;width:100%}
  .city-geolocation-copy strong{font-size:.98rem;line-height:1.25}
  .city-geolocation-copy > span{display:none}
  .city-geolocation-actions{width:100%}
  .city-geolocation-actions .btn{flex:1 1 0;min-width:0;min-height:40px;padding:7px 10px}
  .city-geolocation-status{padding:8px 9px;font-size:.87rem;line-height:1.3}
  .city-geolocation-choice{padding:9px}
  .city-geolocation-choice-text{margin-bottom:8px;font-size:.88rem;line-height:1.3}
  .city-geolocation-choice-actions{gap:7px}
  .city-geolocation-choice-actions .btn{min-height:44px;padding:7px 5px;font-size:.82rem;line-height:1.15}
}
.text-bg-clicker{color:#fff!important;background-color:#A80996!important}
tr.ip-behavior-clicker>td{background-color:#f9e8f5!important}
.ip-country-badge{font-weight:700}
.ip-country-badge.ip-country-allowed{background:#0FCCBB;color:#062f2a}
.ip-country-badge.ip-country-outside{background:#4D53F0;color:#fff}

/* Site 84 — hiérarchie chromatique validée des bandeaux de niveau 1. */
.nav-tone-slate{border-color:#64748b!important;color:#425166!important;background:#f1f4f7!important}
.admin-body :is(.settings-admin-page,.ip-management-page,.statistics-admin-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) [data-admin-band-level="1"]>.admin-section-toggle .admin-section-title-copy strong,
.admin-body :is(.settings-admin-page,.ip-management-page,.statistics-admin-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) [data-admin-band-level="1"]>.admin-section-toggle .admin-section-arrow,
.admin-body :is(.settings-admin-page,.ip-management-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) .admin-band-level-1>.admin-section-toggle .admin-section-title-copy strong,
.admin-body :is(.settings-admin-page,.ip-management-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) .admin-band-level-1>.admin-section-toggle .admin-section-arrow,
.admin-body :is(.settings-admin-page,.ip-management-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) .admin-main-banded-section>.admin-section-toggle .admin-section-title-copy strong,
.admin-body :is(.settings-admin-page,.ip-management-page,.messaging-admin-page,.alerts-admin-page,.backups-admin-page,.seo-audit-page) .admin-main-banded-section>.admin-section-toggle .admin-section-arrow{
    color:color-mix(in srgb,var(--section-accent,var(--band-border,#426f9f)) 76%,#102a43)!important;
}
.statistics-admin-page .stats2-level-1>.stats2-toggle :is(.stats2-title-copy strong,.stats2-arrow){color:color-mix(in srgb,var(--section-accent) 76%,#102a43)!important}
.settings-admin-page .admin-section-settings-privacy{--section-accent:#238b91;--section-bg:#e9f9f9}
.settings-admin-page .admin-section-settings-privacy>.admin-section-toggle{background:#e9f9f9!important;border-left-color:#238b91!important}

.alerts-central-form .alert-band-general{--section-accent:#64748b;--section-bg:#f1f4f7}
.alerts-central-form .alert-band-behavior{--section-accent:#b84c73;--section-bg:#fff2f7}
.alerts-central-form .alert-band-sva{--section-accent:#7456a5;--section-bg:#f5f0fc}
.alerts-central-form .alert-band-optico{--section-accent:#d88418;--section-bg:#fff7e8}
.alerts-central-form .alert-band-messaging{--section-accent:#2e9b59;--section-bg:#eef9f1}
.alerts-central-form .alert-band-seo{--section-accent:#238b91;--section-bg:#e9f9f9}
.alerts-central-form :is(.alert-band-general,.alert-band-behavior,.alert-band-sva,.alert-band-optico,.alert-band-messaging,.alert-band-seo)>.admin-section-toggle{background:var(--section-bg)!important}
.alerts-central-form :is(.alert-band-general,.alert-band-behavior,.alert-band-sva,.alert-band-optico,.alert-band-messaging,.alert-band-seo){border-color:color-mix(in srgb,var(--section-accent) 45%,#dce5ed)!important;border-left-color:var(--section-accent)!important;border-top-color:var(--section-accent)!important}

.seo-audit-page .seo-band-run{--section-accent:#7c3aed;--section-bg:#f5f0ff}
.seo-audit-page>form>section:first-of-type{--section-accent:#7c3aed;--section-bg:#f5f0ff}

.messaging-charter-band{--section-accent:var(--band-border)!important}
.backup-section-create,.backup-section-auto,.backup-section-restore,.backup-section-history{--section-bg:color-mix(in srgb,var(--section-accent) 8%,#fff)}

/* Le planning est visible mais inactif tant que le mode 3 n'est pas sélectionné. */
[data-phone-schedule-planner].admin-soft-disabled{opacity:.42;filter:grayscale(.32);background:#f1f3f5;border-radius:10px;padding:.75rem}
