:root {
    --emerald: #059669;
}

@keyframes pulse-hint {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.8; transform: scale(1.04); }
}

* {
    box-sizing: border-box;
}

body {
    background-color: #fafaf9;
    color: #292524;
    font-family: 'Segoe UI', system-ui, sans-serif;
    /* `hidden` créait un conteneur de scroll qui cassait le sticky du header.
       `clip` coupe le débordement horizontal sans casser position: sticky
       (fallback `hidden` conservé pour les vieux navigateurs). */
    overflow-x: hidden;
    overflow-x: clip;
}

html {
    overflow-x: hidden;
    overflow-x: clip;
}

.appointment-card {
    margin: 2rem 0 1rem;
    overflow: hidden;
    border: 1px solid #bbf7d0;
    border-radius: 1.25rem;
    background: linear-gradient(135deg, #ecfdf5 0%, #f8faf7 52%, #fff 100%);
    box-shadow: 0 12px 30px rgba(6, 78, 59, .08);
}

.appointment-card__intro {
    max-width: 48rem;
    padding: 1.75rem 1.5rem 1.25rem;
    text-align: center;
    margin-inline: auto;
}

.appointment-card__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    margin-bottom: .7rem;
    color: #047857;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.appointment-card__eyebrow::before {
    width: .45rem;
    height: .45rem;
    border-radius: 999px;
    background: #10b981;
    box-shadow: 0 0 0 4px rgba(16, 185, 129, .14);
    content: '';
}

.appointment-card h3 {
    margin: 0;
    color: #064e3b;
    font-size: clamp(1.15rem, 2.5vw, 1.4rem);
    font-weight: 800;
    line-height: 1.3;
}

.appointment-card p {
    margin: .65rem auto 0;
    color: #276749;
    font-size: .925rem;
    line-height: 1.55;
}

.appointment-card__calendar {
    margin: 0 .75rem .75rem;
    overflow: hidden;
    border: 1px solid #d6d3d1;
    border-radius: 1rem;
    background: #fff;
}

.appointment-card__calendar iframe {
    display: block;
    width: 100%;
    min-height: 620px;
    border: 0;
}

@media (max-width: 640px) {
    .appointment-card {
        margin-top: 1.5rem;
        border-radius: 1rem;
    }

    .appointment-card__intro {
        padding: 1.35rem 1rem 1rem;
    }

    .appointment-card__calendar {
        margin: 0 .35rem .35rem;
        border-radius: .8rem;
    }

    .appointment-card__calendar iframe {
        min-height: 670px;
    }
}

img,
svg,
canvas,
iframe,
video {
    max-width: 100%;
}

.brand-name-mobile,
.mobile-panel-toggle,
.map-fullscreen-btn {
    display: none;
}

::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: #f5f5f4;
}

::-webkit-scrollbar-thumb {
    background: #d6d3d1;
    border-radius: 3px;
}

.tab-btn {
    border-bottom: 2px solid transparent;
    transition: color .2s, border-color .2s;
}

.tab-btn.active {
    border-bottom-color: #059669;
    color: #059669;
    font-weight: 600;
}

.tab-btn--in-progress {
    border-bottom: 3px solid #d9f900;
    color: #a16207;
}

.tab-btn--in-progress:hover,
.tab-btn--in-progress.active {
    border-bottom-color: #d9f900;
    color: #854d0e;
}

.tab-btn-status {
    display: inline-flex;
    align-items: center;
    margin-left: 6px;
    padding: 2px 6px;
    border-radius: 999px;
    color: #3f4f00;
    background: #d9f900;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
    vertical-align: middle;
}

.budget-global-card {
    margin: 0 0 20px;
    padding: 20px;
    border: 1px solid #b7e4cf;
    border-radius: 18px;
    background: linear-gradient(145deg, #f0fdf4 0%, #fff 54%, #fffbeb 100%);
    box-shadow: 0 12px 28px rgba(5, 150, 105, .08);
}

.budget-global-header,
.budget-global-phase-summary,
.budget-global-total,
.budget-global-detail,
.budget-global-detail-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.budget-global-header { align-items: flex-start; margin-bottom: 14px; }
.budget-global-header p { margin: 0 0 3px; color: #047857; font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.budget-global-header h2 { margin: 0; color: #14532d; font-size: 22px; line-height: 1.1; }
.budget-global-save { text-align: right; }
.budget-global-save button,
.budget-global-edit,
.budget-global-detail button {
    border: 0;
    border-radius: 8px;
    font: inherit;
    font-weight: 750;
    cursor: pointer;
}
.budget-global-save button { padding: 9px 12px; color: #fff; background: #047857; font-size: 12px; }
.budget-global-save button:hover { background: #065f46; }
.budget-global-save-status { max-width: 210px; margin: 5px 0 0 auto; font-size: 10px; line-height: 1.35; }
.budget-global-save-status--success { color: #047857; }.budget-global-save-status--error { color: #b91c1c; }.budget-global-save-status--saving { color: #57534e; }

.budget-global-combine { display: inline-flex; align-items: center; gap: 8px; color: #44403c; font-size: 12px; font-weight: 750; cursor: pointer; }
.budget-global-combine input,
.budget-global-phase-label input,
.budget-global-detail-toggle input { width: 15px; height: 15px; accent-color: #059669; cursor: pointer; }
.budget-global-hint { margin: 6px 0 14px; color: #78716c; font-size: 11px; line-height: 1.4; }
.budget-global-phases { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.budget-global-phase { padding: 13px; border: 1px solid #d6d3d1; border-radius: 12px; background: rgba(255, 255, 255, .9); }
.budget-global-phase--off { opacity: .62; }
.budget-global-phase-label { display: inline-flex; align-items: center; gap: 8px; color: #292524; font-size: 13px; font-weight: 800; cursor: pointer; }
.budget-global-phase-summary > strong { color: #047857; font-size: 17px; white-space: nowrap; }
.budget-global-details { margin-top: 10px; border-top: 1px solid #e7e5e4; }
.budget-global-details summary { padding-top: 9px; color: #57534e; font-size: 11px; font-weight: 750; cursor: pointer; }
.budget-global-details-body { display: grid; gap: 7px; margin-top: 9px; }
.budget-global-detail,
.budget-global-detail-toggle { color: #57534e; font-size: 11px; }
.budget-global-detail span,
.budget-global-detail-toggle span { flex: 1; }
.budget-global-detail strong,
.budget-global-detail-toggle strong { color: #292524; white-space: nowrap; }
.budget-global-detail button { padding: 4px 7px; color: #047857; background: #ecfdf5; font-size: 10px; }
.budget-global-nested { display: grid; gap: 6px; margin: 0 0 2px 22px; padding-left: 10px; border-left: 2px solid #d1fae5; }
.budget-global-edit { width: 100%; margin-top: 11px; padding: 7px; color: #166534; background: #dcfce7; font-size: 11px; }
.budget-global-empty { margin: 0; color: #78716c; font-size: 11px; }
.budget-global-total { margin-top: 14px; padding: 14px; border-radius: 12px; color: #ecfdf5; background: #064e3b; }
.budget-global-total span { font-size: 12px; font-weight: 750; }.budget-global-total strong { font-size: 24px; }
.budget-global-warning,
.budget-global-future { margin: 13px 0 0; font-size: 11px; line-height: 1.5; }
.budget-global-warning { padding: 10px 12px; border-left: 3px solid #f59e0b; color: #78350f; background: #fffbeb; }
.budget-global-future { color: #57534e; }

.support-offer-card { margin-top: 18px; padding: 20px; border: 1px solid #a7d9bf; border-radius: 14px; color: #292524; background: #fff; }
.support-offer-card--empty { background: #f7fcf9; }
.support-offer-eyebrow { margin: 0 0 5px; color: #047857; font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.support-offer-card h2 { margin: 0; color: #14532d; font-size: 21px; line-height: 1.18; }
.support-offer-card--empty > p:last-child { max-width: 560px; margin: 9px 0 0; color: #57534e; font-size: 13px; line-height: 1.5; }
.support-offer-intro { margin: 7px 0 0; color: #166534; font-size: 13px; font-weight: 700; }
.support-offer-overview { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(260px, .8fr); gap: 18px; margin-top: 16px; }
.support-offer-overview h3 { margin: 0 0 7px; color: #1c1917; font-size: 16px; }
.support-offer-overview p { margin: 0; color: #57534e; font-size: 13px; line-height: 1.55; }
.support-offer-pricing { padding: 14px; border: 1px solid #d1fae5; border-radius: 10px; background: #f0fdf4; }
.support-offer-price { color: #14532d !important; font-size: 13px !important; font-weight: 700; }
.support-offer-price strong { display: block; margin-top: 3px; color: #047857; font-size: 19px; }
.support-offer-toggle { display: flex; align-items: flex-start; gap: 8px; margin-top: 12px; color: #292524; font-size: 12px; font-weight: 750; line-height: 1.35; cursor: pointer; }
.support-offer-toggle input { width: 16px; height: 16px; margin: 0; accent-color: #059669; cursor: pointer; }
.support-offer-budget-line { margin-top: 8px !important; color: #57534e !important; font-size: 11px !important; line-height: 1.45 !important; }
.support-offer-disclaimer { margin: 15px 0 0; padding: 10px 12px; border-left: 3px solid #0f766e; color: #134e4a; background: #f0fdfa; font-size: 11px; line-height: 1.5; }
.support-offer-value-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 16px; }
.support-offer-value-card { padding: 12px; border: 1px solid #e7e5e4; border-radius: 10px; background: #fff; }
.support-offer-value-card > span { color: #047857; font-size: 19px; }
.support-offer-value-card h4 { margin: 6px 0 4px; color: #292524; font-size: 12px; }
.support-offer-value-card p { margin: 0; color: #57534e; font-size: 11px; line-height: 1.45; }
.support-offer-comparison { margin-top: 18px; padding-top: 16px; border-top: 1px solid #d6d3d1; }
.support-offer-comparison h3 { margin: 0 0 10px; color: #14532d; font-size: 15px; }
.support-offer-comparison-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.support-offer-comparison-table th,
.support-offer-comparison-table td { width: 50%; padding: 9px 10px; border: 1px solid #e7e5e4; text-align: left; vertical-align: top; line-height: 1.4; }
.support-offer-comparison-table th { color: #14532d; background: #ecfdf5; font-size: 11px; }
.support-offer-comparison-table td:last-child { background: #f8fffb; }
.support-offer-comparison-mobile { display: none; }
.support-offer-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 17px; }
.support-offer-action { display: inline-flex; align-items: center; justify-content: center; min-height: 37px; padding: 8px 12px; border: 1px solid transparent; border-radius: 8px; font-size: 12px; font-weight: 800; text-align: center; text-decoration: none; }
.support-offer-action--primary { color: #fff; background: #047857; }
.support-offer-action--primary:hover { background: #065f46; }
.support-offer-action--secondary { border-color: #86efac; color: #166534; background: #f0fdf4; }
.support-offer-action--secondary:hover { background: #dcfce7; }

@media (max-width: 640px) {
    .budget-global-card { padding: 15px; }
    .budget-global-header { flex-direction: column; }
    .budget-global-save { width: 100%; text-align: left; }
    .budget-global-save-status { margin-left: 0; }
    .budget-global-phases { grid-template-columns: 1fr; }
    .support-offer-card { padding: 15px; }
    .support-offer-overview { grid-template-columns: 1fr; gap: 12px; }
    .support-offer-value-grid { grid-template-columns: 1fr; }
    .support-offer-comparison-table { display: none; }
    .support-offer-comparison-mobile { display: grid; gap: 8px; }
    .support-offer-comparison-item { padding: 11px; border: 1px solid #e7e5e4; border-radius: 9px; }
    .support-offer-comparison-item h4 { margin: 0 0 8px; color: #14532d; font-size: 12px; }
    .support-offer-comparison-item div + div { margin-top: 8px; padding-top: 8px; border-top: 1px solid #f0eeeb; }
    .support-offer-comparison-item strong { color: #44403c; font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
    .support-offer-comparison-item p { margin: 3px 0 0; color: #57534e; font-size: 11px; line-height: 1.45; }
    .support-offer-actions { display: grid; grid-template-columns: 1fr; }
    .support-offer-action { width: 100%; }
}

@media (min-width: 641px) and (max-width: 920px) {
    .support-offer-value-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

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

#searchForm {
    position: relative;
    z-index: 970;
}

#searchForm:focus-within {
    z-index: 990;
}

#address-suggestions {
    z-index: 995;
    left: 0;
    right: 0;
    max-height: min(360px, calc(100vh - 150px));
    overflow-y: auto;
    border-radius: 12px;
    box-shadow: 0 18px 45px rgba(41, 37, 36, .18), 0 4px 14px rgba(41, 37, 36, .08);
}

#address-suggestions li {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-height: 58px;
    justify-content: center;
}

#address-suggestions li:first-child {
    border-top-left-radius: 12px;
    border-top-right-radius: 12px;
}

#address-suggestions li:last-child {
    border-bottom-left-radius: 12px;
    border-bottom-right-radius: 12px;
}

.app-tab-nav {
    position: sticky;
    top: 0;
    z-index: 960;
    background: rgba(255, 255, 255, .96);
    backdrop-filter: blur(12px);
    scrollbar-width: thin;
}

.app-tab-nav::before {
    content: "";
    position: sticky;
    left: 0;
    width: 1px;
    flex: 0 0 1px;
    background: linear-gradient(to right, rgba(255, 255, 255, .96), rgba(255, 255, 255, 0));
    pointer-events: none;
}

.tab-content {
    display: none;
    animation: fadeIn .3s ease;
}

.tab-content.active {
    display: block;
}

/* ╔════════════════════════════════════════════════════════════╗
   ║ ÉDITION DU RAPPORT D'ANALYSE                               ║
   ╚════════════════════════════════════════════════════════════╝ */
.report-editor-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin: 0 0 18px;
    padding: 24px 26px;
    border: 1px solid #cce9dc;
    border-radius: 20px;
    color: #ecfdf5;
    background: radial-gradient(circle at top right, rgba(110, 231, 183, .23), transparent 36%), linear-gradient(125deg, #064e3b, #047857);
    box-shadow: 0 16px 40px rgba(6, 78, 59, .14);
}

.report-editor-eyebrow,
.report-kicker {
    margin: 0 0 6px;
    color: #a7f3d0;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.report-editor-toolbar h2 { margin: 0; font-size: 24px; font-weight: 850; letter-spacing: -.025em; }
.report-editor-toolbar p:not(.report-editor-eyebrow) { margin: 5px 0 0; max-width: 650px; color: #d1fae5; font-size: 14px; }
.report-editor-actions { display: flex; flex-wrap: wrap; gap: 9px; flex-shrink: 0; }
.report-action { border: 0; border-radius: 10px; padding: 11px 14px; font-size: 13px; font-weight: 750; cursor: pointer; transition: transform .18s, background .18s; }
.report-action:hover { transform: translateY(-1px); }
.report-action-primary { background: #fff; color: #065f46; box-shadow: 0 4px 14px rgba(0, 0, 0, .16); }
.report-action-secondary { color: #ecfdf5; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .27); }
.report-status { margin: 0 0 16px; color: #57534e; font-size: 12px; }

.analysis-report {
    overflow: hidden;
    border: 1px solid #e7e5e4;
    border-radius: 22px;
    background: #fff;
    color: #292524;
    box-shadow: 0 18px 48px rgba(41, 37, 36, .09);
}

.report-cover { padding: 38px 42px 31px; color: #f0fdf4; background: radial-gradient(circle at 84% 5%, rgba(167, 243, 208, .22), transparent 23%), radial-gradient(circle at 92% 90%, rgba(251, 191, 36, .20), transparent 28%), linear-gradient(130deg, #052e2b 0%, #065f46 52%, #047857 100%); }
.report-cover-top { display: flex; justify-content: space-between; gap: 16px; color: #a7f3d0; font-size: 10px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.report-cover h1 { max-width: 620px; margin: 42px 0 8px; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(34px, 5vw, 56px); font-weight: 500; line-height: .99; letter-spacing: -.045em; }
.report-address { max-width: 720px; margin: 0; color: #d1fae5; font-size: 17px; line-height: 1.45; }
.report-cover-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 34px; }
.report-cover-grid div { min-height: 83px; padding: 14px 15px; border: 1px solid rgba(236, 253, 245, .22); border-radius: 12px; background: rgba(3, 44, 35, .25); }
.report-cover-grid span { display: block; margin-bottom: 7px; color: #a7f3d0; font-size: 10px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.report-cover-grid strong { display: block; color: #fff; font-size: 16px; line-height: 1.22; }
.report-completeness { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding: 11px 14px; border: 1px solid rgba(236, 253, 245, .2); border-radius: 10px; background: rgba(3, 44, 35, .23); font-size: 12px; }
.report-completeness span { color: #d1fae5; font-size: 11px; }
.report-access-card { display: flex; align-items: center; gap: 20px; padding: 42px; color: #44403c; border: 1px solid #d6d3d1; border-radius: 16px; background: #fff; }
.report-access-card > span { font-size: 38px; }
.report-access-card h2 { margin: 0 0 6px; color: #14532d; font-size: 20px; }
.report-access-card p { margin: 0 0 15px; line-height: 1.5; }
.report-access-card button { padding: 10px 13px; color: #fff; border: 0; border-radius: 9px; background: #047857; font: inherit; font-weight: 750; cursor: pointer; }

/* Contrôle qualité préalable à l'export PDF */
.report-quality-modal { position: fixed; z-index: 10020; inset: 0; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(10, 25, 20, .62); backdrop-filter: blur(5px); }
.report-quality-modal.hidden { display: none; }
.report-quality-dialog, .report-auth-dialog { width: min(720px, 100%); max-height: min(820px, calc(100vh - 40px)); overflow: auto; padding: 28px; border: 1px solid #d7e4d7; border-radius: 20px; background: #fff; box-shadow: 0 30px 80px rgba(5, 46, 43, .3); }
.report-quality-heading { display: flex; gap: 13px; align-items: flex-start; }
.report-quality-heading > span { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 12px; background: #ecfdf5; font-size: 22px; }
.report-quality-heading h2, .report-auth-dialog h2 { margin: 0; color: #14532d; font-size: 21px; line-height: 1.15; }
.report-quality-heading p, .report-auth-dialog p { margin: 7px 0 0; color: #57534e; font-size: 13px; line-height: 1.45; }
.report-quality-progress { margin: 21px 0 16px; padding: 14px; border-radius: 12px; background: #f0fdf4; }
.report-quality-progress > div:first-child { display: flex; justify-content: space-between; gap: 14px; color: #14532d; font-size: 13px; }
.report-quality-progress > div:first-child span { color: #4b6b5d; font-size: 12px; }
.report-quality-progress-track { height: 8px; overflow: hidden; margin-top: 10px; border-radius: 999px; background: #d1fae5; }
.report-quality-progress-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #059669, #84cc16); transition: width .25s ease; }
.report-confidence { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; padding: 11px 13px; border: 1px solid; border-radius: 11px; font-size: 12px; }
.report-confidence > span { font-size: 18px; }.report-confidence div { display: grid; gap: 2px; }.report-confidence small { color: #57534e; font-size: 11px; }.report-confidence--high { border-color: #86efac; background: #f0fdf4; color: #166534; }.report-confidence--medium { border-color: #fcd34d; background: #fffbeb; color: #a16207; }.report-confidence--low { border-color: #fca5a5; background: #fef2f2; color: #b91c1c; }
.report-confidence--cover { margin: 12px 0 0; border-color: rgba(236, 253, 245, .25); background: rgba(3, 44, 35, .26); color: #fff; }.report-confidence--cover small { color: #d1fae5; }
.report-quality-list { overflow: hidden; border: 1px solid #e7e5e4; border-radius: 12px; }
.report-quality-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 13px; border-bottom: 1px solid #f0eeeb; color: #292524; font-size: 13px; }
.report-quality-row:last-child { border-bottom: 0; }
.report-quality-badge { display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0; padding: 4px 8px; border-radius: 999px; font-size: 10px; font-weight: 800; }
.report-quality-badge b { display: grid; width: 15px; height: 15px; place-items: center; border-radius: 50%; font-size: 10px; }
.report-quality-badge--complete { color: #166534; background: #dcfce7; }.report-quality-badge--complete b { color: #fff; background: #16a34a; }
.report-quality-badge--partial { color: #a16207; background: #fef3c7; }.report-quality-badge--partial b { color: #fff; background: #d97706; }
.report-quality-badge--missing { color: #b91c1c; background: #fee2e2; }.report-quality-badge--missing b { color: #fff; background: #dc2626; }
.report-quality-breakdown { display: flex; flex-wrap: wrap; gap: 7px 14px; margin-top: 13px; color: #57534e; font-size: 11px; }.report-quality-breakdown b { width: 100%; color: #14532d; }
.report-quality-message { display: grid; gap: 3px; margin-top: 16px; padding: 13px; border-radius: 11px; font-size: 13px; }.report-quality-message span { color: #57534e; }.report-quality-message--complete { background: #ecfdf5; }.report-quality-message--partial { background: #fffbeb; }.report-quality-message--low { background: #fef2f2; }
.report-quality-missing { margin-top: 13px; padding: 12px 14px; border-left: 3px solid #dc2626; background: #fff7f7; color: #7f1d1d; font-size: 12px; }.report-quality-missing ul { display: flex; flex-wrap: wrap; gap: 3px 14px; margin: 7px 0 0; padding-left: 16px; }
.report-quality-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.report-quality-button { padding: 11px 14px; border-radius: 10px; font: inherit; font-size: 13px; font-weight: 750; cursor: pointer; }.report-quality-button:disabled { cursor: wait; opacity: .6; }.report-quality-button--primary { color: #fff; border: 1px solid #047857; background: #047857; }.report-quality-button--secondary { color: #14532d; border: 1px solid #a7c8b5; background: #fff; }
.report-auth-dialog { position: relative; max-width: 430px; text-align: center; }.report-auth-icon { display: grid; width: 55px; height: 55px; place-items: center; margin: 0 auto 15px; border-radius: 16px; background: #ecfdf5; font-size: 28px; }.report-auth-dialog .report-quality-actions { justify-content: center; }.report-quality-close { position: absolute; top: 12px; right: 14px; border: 0; color: #78716c; background: transparent; font-size: 23px; cursor: pointer; }
.report-generated { margin: 21px 0 0; color: #bbf7d0; font-size: 11px; }

.report-reading-note { display: flex; gap: 16px; align-items: flex-start; padding: 16px 42px; border-bottom: 1px solid #d1fae5; background: #ecfdf5; color: #065f46; font-size: 13px; line-height: 1.5; }
.report-reading-note strong { flex: 0 0 142px; font-size: 12px; }
.report-reading-note--warning { border-color: #fde68a; background: #fffbeb; color: #92400e; }
.report-toc { padding: 29px 42px 31px; border-bottom: 1px solid #e7e5e4; background: #fcfcfb; }
.report-toc > p { margin: 0 0 15px; color: #57534e; font-size: 10px; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.report-toc > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 30px; }
.report-toc a { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid #e7e5e4; color: #292524; font-size: 13px; font-weight: 650; text-decoration: none; }
.report-toc a span { color: #059669; font-size: 10px; font-weight: 850; letter-spacing: .08em; }
.report-body { padding: 0 42px; }
.report-section { padding: 39px 0; border-bottom: 1px solid #e7e5e4; }
.report-section:last-child { border-bottom: 0; }
.report-section-heading { display: flex; gap: 15px; align-items: flex-start; margin-bottom: 22px; }
.report-section-heading > span { display: grid; width: 29px; height: 29px; flex: 0 0 29px; place-items: center; border-radius: 50%; color: #fff; background: #047857; font-size: 11px; font-weight: 850; }
.report-section-heading p { margin: 0 0 3px; color: #059669; font-size: 10px; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.report-section-heading h2 { margin: 0; color: #1c1917; font-family: Georgia, 'Times New Roman', serif; font-size: 27px; font-weight: 500; letter-spacing: -.025em; line-height: 1.1; }
.report-section-body { font-size: 13px; line-height: 1.52; }
.report-section-body > div, .report-section-body > section, .report-section-body > details { break-inside: avoid; }
.report-section-body h1, .report-section-body h2 { font-size: 20px; }
.report-section-body h3 { font-size: 16px; }
.report-section-body h4 { font-size: 14px; }
.report-section-body h1, .report-section-body h2, .report-section-body h3, .report-section-body h4 { color: #1c1917; }
.report-section-body a { color: #047857; text-decoration: underline; text-underline-offset: 2px; }
.report-section-body img { height: auto; object-fit: contain; }
.report-section-body table { width: 100%; font-size: 11px; }
.report-section-body details { display: block; }
.report-section-body summary { cursor: default; }
.report-section-body .max-h-\[500px\], .report-section-body .max-h-\[420px\] { max-height: none !important; overflow: visible !important; }
.report-chart-image { display: block; width: 100%; max-height: 330px; margin: 12px auto; object-fit: contain; }
.report-user-answer { display: flex; gap: 8px; margin: 6px 0; padding: 8px 10px; border-left: 3px solid #34d399; border-radius: 0 7px 7px 0; background: #ecfdf5; font-size: 12px; }
.report-user-answer strong { min-width: 130px; color: #065f46; }
.report-empty { margin: 40px 0; padding: 22px; border: 1px dashed #a8a29e; border-radius: 12px; color: #78716c; text-align: center; }
.report-footer { display: flex; justify-content: space-between; gap: 20px; padding: 19px 42px; color: #78716c; border-top: 1px solid #e7e5e4; background: #fafaf9; font-size: 10px; }

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(6px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.chart-container {
    position: relative;
    width: 100%;
    height: 340px;
}

@media (max-width: 640px) {
    .chart-container {
        height: 220px;
    }
}

/* Registre admin de provenance des donnees */
.data-proof-backdrop {
    position: fixed;
    inset: 0;
    z-index: 10050;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(28, 25, 23, .68);
}

.data-proof-backdrop.hidden {
    display: none;
}

.data-proof-shell {
    display: flex;
    flex-direction: column;
    width: min(1040px, 100%);
    max-height: min(880px, calc(100vh - 40px));
    overflow: hidden;
    border: 1px solid #d6d3d1;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .34);
}

.data-proof-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 22px 24px 18px;
    border-bottom: 1px solid #e7e5e4;
}

.data-proof-header h2 {
    margin: 2px 0 5px;
    color: #1c1917;
    font-size: 1.25rem;
    font-weight: 900;
    letter-spacing: 0;
}

.data-proof-header p {
    max-width: 700px;
    margin: 0;
    color: #57534e;
    font-size: .78rem;
    line-height: 1.5;
}

.data-proof-header .data-proof-kicker {
    color: #047857;
    font-size: .65rem;
    font-weight: 900;
    text-transform: uppercase;
}

.data-proof-close {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border: 1px solid #d6d3d1;
    border-radius: 50%;
    background: #fff;
    color: #57534e;
    font-size: 1.3rem;
    line-height: 1;
    cursor: pointer;
}

.data-proof-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border-bottom: 1px solid #e7e5e4;
    background: #fafaf9;
}

.data-proof-summary button {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-height: 58px;
    padding: 12px 18px;
    border: 0;
    border-right: 1px solid #e7e5e4;
    background: transparent;
    color: #44403c;
    text-align: left;
    cursor: pointer;
}

.data-proof-summary button:last-child {
    border-right: 0;
}

.data-proof-summary strong {
    color: #1c1917;
    font-size: 1.35rem;
}

.data-proof-summary span {
    font-size: .7rem;
    font-weight: 800;
}

.data-proof-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 20px;
    border-bottom: 1px solid #e7e5e4;
}

.data-proof-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.data-proof-filters button,
.data-proof-footer button {
    min-height: 34px;
    border: 1px solid #d6d3d1;
    border-radius: 6px;
    background: #fff;
    color: #44403c;
    padding: 7px 10px;
    font-size: .7rem;
    font-weight: 800;
    cursor: pointer;
}

.data-proof-filters button.is-active {
    border-color: #047857;
    background: #ecfdf5;
    color: #065f46;
}

.data-proof-search input {
    width: min(290px, 32vw);
    min-height: 36px;
    border: 1px solid #d6d3d1;
    border-radius: 6px;
    padding: 7px 10px;
    color: #292524;
    font-size: .75rem;
}

.data-proof-list {
    flex: 1;
    overflow-y: auto;
    padding: 0 20px;
}

.data-proof-row {
    display: grid;
    grid-template-columns: minmax(230px, .9fr) auto minmax(320px, 1.35fr);
    align-items: start;
    gap: 18px;
    padding: 17px 0;
    border-bottom: 1px solid #e7e5e4;
}

.data-proof-row h3 {
    margin: 2px 0 4px;
    color: #1c1917;
    font-size: .86rem;
    font-weight: 900;
    letter-spacing: 0;
}

.data-proof-domain {
    margin: 0;
    color: #78716c;
    font-size: .6rem;
    font-weight: 900;
    text-transform: uppercase;
}

.data-proof-source {
    margin: 0;
    color: #78716c;
    font-size: .68rem;
}

.data-proof-source a {
    color: #047857;
    font-weight: 800;
    text-decoration: underline;
}

.data-proof-status {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    border: 1px solid;
    border-radius: 999px;
    padding: 4px 8px;
    font-size: .62rem;
    font-weight: 900;
    white-space: nowrap;
}

.data-proof-status--traceable { border-color: #86efac; background: #f0fdf4; color: #166534; }
.data-proof-status--derived { border-color: #7dd3fc; background: #f0f9ff; color: #075985; }
.data-proof-status--uncertified { border-color: #fcd34d; background: #fffbeb; color: #92400e; }
.data-proof-status--disabled { border-color: #d6d3d1; background: #f5f5f4; color: #57534e; }

.data-proof-details {
    display: grid;
    gap: 7px;
}

.data-proof-details p {
    display: grid;
    grid-template-columns: 58px 1fr;
    gap: 8px;
    margin: 0;
    color: #57534e;
    font-size: .7rem;
    line-height: 1.45;
}

.data-proof-details strong {
    color: #292524;
}

.data-proof-empty {
    padding: 40px 0;
    color: #78716c;
    text-align: center;
}

.data-proof-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 12px 20px;
    border-top: 1px solid #e7e5e4;
    background: #fafaf9;
}

.data-proof-footer p {
    margin: 0;
    color: #57534e;
    font-size: .68rem;
    line-height: 1.4;
}

.data-proof-footer button {
    flex: 0 0 auto;
    border-color: #047857;
    color: #065f46;
}

@media (max-width: 760px) {
    .data-proof-backdrop { padding: 0; }
    .data-proof-shell { width: 100%; max-height: 100vh; min-height: 100vh; border: 0; border-radius: 0; }
    .data-proof-header { padding: 18px 16px 14px; }
    .data-proof-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .data-proof-summary button:nth-child(2) { border-right: 0; }
    .data-proof-summary button:nth-child(-n+2) { border-bottom: 1px solid #e7e5e4; }
    .data-proof-toolbar { align-items: stretch; flex-direction: column; padding: 10px 14px; }
    .data-proof-search input { width: 100%; }
    .data-proof-list { padding: 0 14px; }
    .data-proof-row { grid-template-columns: 1fr auto; gap: 10px; }
    .data-proof-details { grid-column: 1 / -1; }
    .data-proof-footer { align-items: stretch; flex-direction: column; padding: 12px 14px; }
}

/* Mode Équiper — cartes assez larges pour rester manipulables au tactile. */
.equipment-room-card {
    min-width: 0;
}

.equipment-room-card--inactive {
    filter: saturate(.45);
}

.equipment-step-btn {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border: 1px solid #a7f3d0;
    border-radius: 10px;
    background: #ecfdf5;
    color: #047857;
    font-size: 1.35rem;
    font-weight: 800;
    line-height: 1;
}

.equipment-step-btn:hover {
    background: #d1fae5;
}

.equipment-summary {
    top: 88px;
}

.report-equipment-table {
    width: 100%;
    margin: 14px 0;
    border-collapse: collapse;
    font-size: .76rem;
}

.report-equipment-table th,
.report-equipment-table td {
    padding: 8px;
    border-bottom: 1px solid #e7e5e4;
    text-align: left;
    vertical-align: top;
}

.report-equipment-table th {
    background: #f0fdf4;
    color: #166534;
    font-size: .66rem;
    text-transform: uppercase;
}

.report-equipment-excluded {
    color: #a8a29e;
    font-size: .68rem;
    font-style: italic;
}

/* Mode Équiper — espace de travail par pièce. */
.equipment-dashboard,
.equipment-welcome {
    color: #172027;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.equipment-dashboard {
    display: grid;
    gap: 18px;
}

.equipment-welcome {
    max-width: 860px;
    padding: 30px;
    border: 1px solid #e7ece9;
    border-radius: 16px;
    background: #fff;
}

.equipment-kicker {
    margin: 0 0 6px;
    color: #07885d;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.equipment-welcome h3,
.equipment-dashboard-head h3 {
    margin: 0;
    color: #182028;
    font-size: 22px;
    font-weight: 780;
    letter-spacing: -.035em;
}

.equipment-welcome > p:not(.equipment-kicker) {
    max-width: 650px;
    margin: 8px 0 23px;
    color: #607078;
    font-size: 14px;
    line-height: 1.55;
}

.equipment-dashboard-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    padding: 7px 4px 1px;
}

.equipment-total {
    min-width: 255px;
    padding: 12px 16px;
    border: 1px solid #e3ebe7;
    border-radius: 12px;
    background: #fff;
}

.equipment-total span,
.equipment-total small {
    display: block;
    color: #647179;
    font-size: 11px;
}

.equipment-total span { font-weight: 750; }
.equipment-total strong { display: block; margin: 4px 0; color: #07885d; font-size: 25px; line-height: 1; }

.equipment-step {
    padding: 16px;
    border: 1px solid #e3e9e6;
    border-radius: 14px;
    background: #fff;
}

.equipment-step > h4 {
    margin: 0 0 12px;
    color: #1c252b;
    font-size: 14px;
    font-weight: 800;
}

.equipment-step > h4 span { margin-right: 7px; color: #07885d; }

.equipment-step-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(170px, .3fr) minmax(165px, .28fr);
    align-items: stretch;
    gap: 12px;
}

.equipment-housing-form {
    display: grid;
    grid-template-columns: 1.3fr 1.3fr .65fr .65fr .65fr auto;
    align-items: end;
    gap: 11px;
}

.equipment-housing-form label,
.equipment-note-label {
    display: grid;
    gap: 6px;
    color: #354148;
    font-size: 11px;
    font-weight: 700;
}

.equipment-housing-form input,
.equipment-housing-form select,
.equipment-note-label textarea,
.equipment-surface-editor input,
.equipment-add-room input,
.equipment-add-room select,
.equipment-room-picker select {
    box-sizing: border-box;
    width: 100%;
    min-height: 34px;
    border: 1px solid #d8e1dd;
    border-radius: 6px;
    background: #fff;
    color: #1e2930;
    font: inherit;
    outline: none;
}

.equipment-housing-form input,
.equipment-housing-form select,
.equipment-add-room input,
.equipment-add-room select,
.equipment-room-picker select { padding: 0 10px; }

.equipment-housing-form input:focus,
.equipment-housing-form select:focus,
.equipment-note-label textarea:focus,
.equipment-surface-editor input:focus,
.equipment-add-room input:focus,
.equipment-add-room select:focus,
.equipment-room-picker select:focus { border-color: #159c70; box-shadow: 0 0 0 3px rgba(21, 156, 112, .11); }

.equipment-number { position: relative; display: block; }
.equipment-number input { padding-right: 38px; }
.equipment-number b { position: absolute; right: 9px; top: 9px; color: #718087; font-size: 11px; font-weight: 600; }

.equipment-primary-button,
.equipment-add-room form > button,
.equipment-note-actions button {
    min-height: 34px;
    padding: 0 14px;
    border: 1px solid #07885d;
    border-radius: 6px;
    background: #07885d;
    color: #fff;
    font: inherit;
    font-size: 12px;
    font-weight: 750;
    cursor: pointer;
}

.equipment-primary-button:hover,
.equipment-add-room form > button:hover,
.equipment-note-actions button:hover { background: #056d4a; }

.equipment-surface-message {
    padding: 13px 14px;
    border-left: 3px solid #159c70;
    border-radius: 7px;
    background: #f8fcfa;
    color: #4d5c62;
    font-size: 11px;
    line-height: 1.45;
}

.equipment-surface-status {
    display: grid;
    align-content: center;
    gap: 3px;
    padding: 12px 14px;
    border-radius: 8px;
    background: #eff9f3;
}

.equipment-surface-status span { color: #16845f; font-size: 11px; font-weight: 750; }
.equipment-surface-status strong { color: #07885d; font-size: 15px; }
.equipment-surface-status small { color: #37755f; font-size: 11px; }
.equipment-surface-status.is-over { background: #fff4f2; }

.equipment-undo {
    display: flex;
    justify-content: space-between;
    padding: 10px 13px;
    border: 1px solid #f5ce8d;
    border-radius: 9px;
    background: #fffbeb;
    color: #8a5313;
    font-size: 12px;
}

.equipment-undo button,
.equipment-link-button {
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.equipment-plan-layout { display: grid; grid-template-columns: minmax(0, 1fr) 275px; gap: 14px; }
.equipment-bubble-panel { min-width: 0; padding: 16px; border: 1px solid #e8ecea; border-radius: 13px; }

.equipment-bubble-grid { display: flex; flex-wrap: wrap; gap: 10px; }

.equipment-room-bubble {
    --room-border: #bad8c7;
    --room-bg: #f5fbf7;
    --room-ink: #177852;
    display: flex;
    width: 170px;
    min-height: 87px;
    overflow: hidden;
    border: 1px solid var(--room-border);
    border-radius: 999px;
    background: var(--room-bg);
    transition: transform .16s ease, box-shadow .16s ease;
}

.equipment-room-bubble:hover { transform: translateY(-1px); box-shadow: 0 7px 16px rgba(23, 73, 55, .08); }
.equipment-room-bubble--selected { box-shadow: 0 0 0 3px rgba(7, 136, 93, .16); }
.equipment-room-bubble--inactive { opacity: .48; filter: grayscale(.3); }
.equipment-room-bubble--kitchen { --room-border:#9bcfda; --room-bg:#f0fbfc; --room-ink:#0d7d91; }
.equipment-room-bubble--dining { --room-border:#efb1a4; --room-bg:#fff5f1; --room-ink:#c35140; }
.equipment-room-bubble--bedroom { --room-border:#eeb6cf; --room-bg:#fff5f9; --room-ink:#b5366d; }
.equipment-room-bubble--water { --room-border:#c7c1ee; --room-bg:#f7f6ff; --room-ink:#6457c1; }
.equipment-room-bubble--service { --room-border:#e7c38f; --room-bg:#fffaf0; --room-ink:#b56d15; }
.equipment-room-bubble--outdoor { --room-border:#efd18b; --room-bg:#fffaf0; --room-ink:#ae7518; }
.equipment-room-bubble--work { --room-border:#b7d6bd; --room-bg:#f4fbf5; --room-ink:#3c8650; }

.equipment-room-select {
    display: flex;
    flex: 1;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 14px 8px 14px 14px;
    border: 0;
    background: transparent;
    color: #182027;
    text-align: left;
    cursor: pointer;
}

.equipment-room-select > span:last-child { min-width: 0; }
.equipment-room-select b { display: block; overflow: hidden; font-size: 12px; font-weight: 800; line-height: 1.16; white-space: normal; }
.equipment-room-select small { display: block; margin-top: 4px; color: #334149; font-size: 11px; font-weight: 650; }
.equipment-room-icon { color: var(--room-ink); font-size: 25px; line-height: 1; }
.material-symbols-outlined { font-variation-settings: 'FILL' 0, 'wght' 420, 'GRAD' 0, 'opsz' 24; }
.est-mode-icon { font-size: 20px; line-height: 1; }
.equipment-panel-icon { margin-right: 5px; color: #087d59; font-size: 18px; line-height: 1; vertical-align: -3px; }

.equipment-room-state {
    align-self: flex-end;
    width: 26px;
    height: 26px;
    margin: 0 10px 11px 0;
    border: 0;
    border-radius: 999px;
    background: #0a9966;
    color: #fff;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
}

.equipment-add-room { margin-top: 12px; text-align: center; }
.equipment-add-room summary { display: inline-flex; padding: 8px 14px; color: #087d59; font-size: 12px; font-weight: 800; cursor: pointer; }
.equipment-add-room form { display: grid; grid-template-columns: minmax(180px, 1.5fr) .7fr .9fr auto; gap: 8px; padding-top: 8px; text-align: left; }
.equipment-room-name-field { position: relative; min-width: 0; }
.equipment-room-surface-field { position: relative; min-width: 0; }
.equipment-room-surface-field input { padding-right: 34px; }
.equipment-room-surface-field b { position: absolute; top: 9px; right: 10px; color: #6d7a80; font-size: 11px; font-weight: 750; pointer-events: none; }
.equipment-room-suggestions { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; width: min(520px, calc(100vw - 76px)); max-height: 245px; overflow: auto; padding: 7px; border: 1px solid #dce7e1; border-radius: 9px; background: #fff; box-shadow: 0 12px 25px rgba(25, 50, 40, .14); }
.equipment-room-suggestion { --room-border: #bad8c7; --room-bg: #f5fbf7; --room-ink: #177852; display: flex; width: 100%; align-items: center; gap: 9px; padding: 8px 10px; border: 1px solid var(--room-border); border-radius: 7px; background: var(--room-bg); color: #243039; font: inherit; text-align: left; cursor: pointer; }
.equipment-room-suggestion:hover { border-color: var(--room-border); background: var(--room-bg); }
.equipment-room-suggestion > span:first-child { color: var(--room-ink); font-size: 20px; }
.equipment-room-suggestion b { display: block; font-size: 12px; font-weight: 800; }
.equipment-room-suggestion small { display: block; margin-top: 2px; color: #66757b; font-size: 10px; }
.equipment-room-suggestion--kitchen { --room-border:#9bcfda; --room-bg:#f0fbfc; --room-ink:#0d7d91; }
.equipment-room-suggestion--dining { --room-border:#efb1a4; --room-bg:#fff5f1; --room-ink:#c35140; }
.equipment-room-suggestion--bedroom { --room-border:#eeb6cf; --room-bg:#fff5f9; --room-ink:#b5366d; }
.equipment-room-suggestion--water { --room-border:#c7c1ee; --room-bg:#f7f6ff; --room-ink:#6457c1; }
.equipment-room-suggestion--service { --room-border:#e7c38f; --room-bg:#fffaf0; --room-ink:#b56d15; }
.equipment-room-suggestion--outdoor { --room-border:#efd18b; --room-bg:#fffaf0; --room-ink:#ae7518; }
.equipment-room-suggestion--work { --room-border:#b7d6bd; --room-bg:#f4fbf5; --room-ink:#3c8650; }
.equipment-room-no-suggestion { margin: 5px 7px; color: #68777e; font-size: 11px; line-height: 1.4; }
.equipment-room-surface-hint { grid-column: 1 / -1; color: #637178; font-size: 10px; }

.equipment-plan-help {
    display: grid;
    align-content: start;
    gap: 8px;
    padding: 16px;
    border: 1px solid #e8ecea;
    border-radius: 13px;
    color: #53626a;
    font-size: 11px;
}

.equipment-plan-help b { color: #1f2b31; font-size: 12px; }
.equipment-plan-help p { margin: 1px 0 8px; line-height: 1.45; }
.equipment-plan-help span:nth-of-type(1) { color: #258b64; }.equipment-plan-help span:nth-of-type(2) { color: #16869a; }.equipment-plan-help span:nth-of-type(3) { color: #bc4175; }.equipment-plan-help span:nth-of-type(4) { color: #6a60c7; }.equipment-plan-help span:nth-of-type(5) { color: #bc791e; }.equipment-plan-help span:nth-of-type(6) { color: #bd7d1c; }

.equipment-detail-step { overflow: visible; }
.equipment-detail-step > h4 { margin-bottom: 4px; }
.equipment-detail-intro { margin: 0 0 13px 25px; color: #66757b; font-size: 11px; }
.equipment-detail-stack { display: grid; gap: 15px; }
.equipment-room-detail-block { overflow: hidden; border: 1px solid #e4ebe7; border-radius: 11px; background: #fff; scroll-margin-top: 100px; }
.equipment-room-detail-block--inactive { opacity: .66; }
.equipment-room-detail-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #e9eeeb; background: #f8fbf9; }
.equipment-room-detail-heading > div { display: flex; align-items: center; gap: 7px; min-width: 0; }.equipment-room-detail-heading > div > span { color: #087d59; font-size: 20px; }.equipment-room-detail-heading h5 { margin: 0; color: #1f2b31; font-size: 14px; font-weight: 800; }.equipment-room-detail-heading small { color: #65747a; font-size: 11px; }.equipment-room-detail-heading > span { color: #087d59; font-size: 10px; font-weight: 800; white-space: nowrap; }
.equipment-room-picker { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px 44px; }
.equipment-room-picker label { display: flex; align-items: center; gap: 8px; color: #627078; font-size: 11px; font-weight: 700; }
.equipment-room-picker select { min-width: 205px; }
.equipment-room-picker > span { padding: 7px 10px; border: 1px solid #b8decb; border-radius: 6px; color: #087d59; font-size: 11px; font-weight: 800; }

.equipment-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) 265px; border-top: 1px solid #e9eeeb; }
.equipment-detail-table { min-width: 0; border-right: 1px solid #e9eeeb; }
.equipment-detail-head,
.equipment-detail-row { display: grid; grid-template-columns: 1.35fr .72fr 2.1fr .95fr .75fr; gap: 13px; align-items: center; padding: 12px 16px; }
.equipment-detail-head { min-height: 28px; border-bottom: 1px solid #e9eeeb; color: #65737a; font-size: 10px; font-weight: 750; }
.equipment-detail-row { min-height: 67px; border-bottom: 1px solid #edf1ef; font-size: 12px; }
.equipment-detail-row--off { opacity: .42; }
.equipment-item-label { display: flex; align-items: center; gap: 9px; min-width: 0; cursor: pointer; }
.equipment-item-label input { width: 15px; height: 15px; accent-color: #07885d; }
.equipment-item-label b { display: block; color: #263239; font-size: 12px; }.equipment-item-label small { display:block; margin-top:3px; color:#849097; font-size:10px; }
.equipment-quantity,.equipment-range { color:#66747b; font-size:11px; }
.equipment-quality { min-width: 0; }.equipment-quality span { display:flex; justify-content:space-between; margin-bottom:4px; }.equipment-quality em { color:#849097; font-size:9px; font-style:normal; }.equipment-quality em.is-selected { color:#07885d; font-weight:800; }.equipment-quality input { width:100%; accent-color:#07885d; }
.equipment-price { color:#07885d; font-size:14px; text-align:right; white-space:nowrap; }
.equipment-add-item { margin: 12px 16px; padding: 9px 12px; border: 1px solid #dce8e1; border-radius: 6px; background: #fff; color: #087d59; font: inherit; font-size: 11px; font-weight: 800; }
.equipment-add-item:hover { border-color: #159c70; background: #f4fbf7; cursor: pointer; }

.equipment-custom-name { width: 100%; min-height: 30px; padding: 0 8px; border: 1px solid #d6e0da; border-radius: 6px; background: #fff; color: #263239; font: inherit; font-size: 12px; font-weight: 700; }
.equipment-custom-name:focus { border-color: #159c70; outline: none; box-shadow: 0 0 0 3px rgba(21, 156, 112, .11); }
.equipment-custom-price { display: inline-flex; align-items: center; gap: 4px; }
.equipment-custom-price input { width: 72px; min-height: 30px; padding: 0 6px; border: 1px solid #d6e0da; border-radius: 6px; background: #fff; color: #263239; font: inherit; font-size: 11px; font-weight: 700; text-align: right; }
.equipment-custom-price input:focus { border-color: #159c70; outline: none; }
.equipment-custom-price b { color: #66747b; font-size: 10px; font-weight: 650; white-space: nowrap; }
.equipment-remove-item { padding: 0; border: 0; background: none; color: #c2410c; font: inherit; font-size: 10px; font-weight: 750; text-decoration: underline; cursor: pointer; }
.equipment-remove-item:hover { color: #9a3412; }

.equipment-room-summary { padding: 16px; background: #fbfcfb; }
.equipment-room-summary-head { display:flex; justify-content:space-between; gap:8px; }.equipment-room-summary h4 { margin:0 0 8px; color:#1f2a30; font-size:14px; }.equipment-link-button { color:#66747b; font-size:10px; }
.equipment-active-pill,.equipment-inactive-pill { display:inline-block; padding:4px 8px; border-radius:999px; font-size:10px; font-weight:800; }.equipment-active-pill { color:#0c7e57; background:#e3f5ea; }.equipment-inactive-pill { color:#6e7477; background:#ecefed; }
.equipment-surface-editor { display:flex; justify-content:space-between; align-items:center; gap:10px; margin:18px 0; color:#56646b; font-size:11px; font-weight:700; }.equipment-surface-editor > div { display:flex; align-items:center; width:132px; }.equipment-surface-editor input { min-height:30px; padding:0 3px; border-width:0 0 1px; border-radius:0; text-align:center; }.equipment-surface-editor button { width:26px; height:26px; border:1px solid #d6e4dc; border-radius:5px; background:#fff; color:#087d59; font-size:15px; font-weight:800; }.equipment-surface-editor b { margin-left:4px; color:#617078; font-size:10px; }
.equipment-budget-caption { margin:0 0 8px; color:#526068; font-size:11px; font-weight:800; }.equipment-budget-lines { margin:0; border-top:1px solid #e5ebe7; }.equipment-budget-lines div { display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid #e5ebe7; font-size:11px; }.equipment-budget-lines dt { color:#58666d; }.equipment-budget-lines dd { margin:0; color:#27333a; font-weight:750; }.equipment-budget-lines .is-main dt,.equipment-budget-lines .is-main dd { color:#07885d; font-weight:850; }
.equipment-note-label { margin-top:19px; }.equipment-note-label textarea { min-height:82px; padding:8px; resize:vertical; font-size:11px; font-weight:500; line-height:1.4; }.equipment-note-actions { display:flex; align-items:center; justify-content:space-between; gap:6px; margin-top:7px; color:#839097; font-size:10px; }.equipment-note-actions button { min-height:27px; padding:0 9px; font-size:10px; }.equipment-delete-room { width:100%; margin-top:22px; min-height:35px; border:1px solid #fecaca; border-radius:7px; background:#fff8f8; color:#d42b2b; font:inherit; font-size:11px; font-weight:800; }

.equipment-disclaimer { margin: -3px 0 0; color:#829097; font-size:11px; line-height:1.45; }

@media (max-width: 1080px) {
    .equipment-step-grid { grid-template-columns: 1fr 180px; }
    .equipment-surface-status { grid-column: 1 / -1; }
    .equipment-housing-form { grid-template-columns: 1.3fr 1.3fr .7fr .7fr .7fr auto; }
    .equipment-plan-layout { grid-template-columns: 1fr; }
    .equipment-plan-help { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .equipment-plan-help b, .equipment-plan-help p { grid-column: 1 / -1; }
    .equipment-detail-layout { grid-template-columns: 1fr; }
    .equipment-detail-table { border-right: 0; }
    .equipment-room-summary { border-top: 1px solid #e9eeeb; }
}

@media (max-width: 760px) {
    .equipment-welcome { padding: 20px; }
    .equipment-dashboard-head { align-items: stretch; flex-direction: column; }
    .equipment-total { min-width: 0; }
    .equipment-step { padding: 13px; }
    .equipment-step-grid, .equipment-housing-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .equipment-housing-form .equipment-primary-button { grid-column: 1 / -1; }
    .equipment-bedroom-field { display: none; }
    .equipment-surface-message, .equipment-surface-status { grid-column: 1 / -1; }
    .equipment-bubble-panel { padding: 11px; }
    .equipment-bubble-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .equipment-room-bubble { width: auto; min-height: 76px; }
    .equipment-room-select { padding: 11px 4px 11px 11px; }.equipment-room-icon { font-size: 21px; }.equipment-room-select b { font-size: 11px; }
    .equipment-plan-help { display: none; }
    .equipment-add-room form { grid-template-columns: 1fr 1fr; }.equipment-room-name-field { grid-column: 1 / -1; }.equipment-add-room button { grid-column: 1 / -1; }.equipment-room-surface-hint { grid-column: 1 / -1; }
    .equipment-room-picker { align-items: stretch; flex-direction: column; margin-left: 0; }.equipment-room-picker label { align-items: stretch; flex-direction: column; }.equipment-room-picker select { min-width: 0; }
    .equipment-room-detail-heading { align-items: flex-start; flex-direction: column; gap: 4px; }.equipment-detail-head { display: none; }
    .equipment-detail-row { grid-template-columns: 1fr auto; gap: 7px; min-height: 0; padding: 13px 0; }.equipment-detail-row > * { padding: 0 13px; }.equipment-quantity { display: none; }.equipment-custom-price { display: inline-flex; grid-column: 1 / -1; }.equipment-quality { grid-column: 1 / -1; }.equipment-range { grid-column: 1; }.equipment-price { grid-column: 2; grid-row: 3; }.equipment-add-item { margin-left: 0; }
}

@media (max-width: 640px) {
    .equipment-room-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .equipment-summary {
        top: 72px;
    }
}

.climate-carousel-track {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    padding: 2px 22px 12px 2px;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
}

.climate-carousel-slide {
    flex: 0 0 min(92%, 760px);
    min-width: 0;
    scroll-snap-align: start;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fff;
    padding: 16px;
}

.climate-carousel-button {
    display: inline-flex;
    width: 32px;
    height: 32px;
    align-items: center;
    justify-content: center;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fff;
    color: #44403c;
    font-size: 1.35rem;
    line-height: 1;
}

.climate-carousel-button:hover {
    background: #f5f5f4;
}

.climate-member-preview {
    position: relative;
}

.rainfall-table-toggle {
    list-style: none;
}

.rainfall-table-toggle::-webkit-details-marker {
    display: none;
}

.rainfall-table-action {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 8px 12px;
    border: 1px solid #bbf7d0;
    border-radius: 8px;
    background: #ecfdf5;
    color: #047857;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.rainfall-table-toggle:hover .rainfall-table-action {
    background: #d1fae5;
}

.rainfall-table-preview {
    position: relative;
    height: 58px;
    overflow: hidden;
}

.rainfall-table-preview::after {
    content: '';
    position: absolute;
    inset: 18px 0 0;
    background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 92%);
    pointer-events: none;
}

.rainfall-table-details[open] + .rainfall-table-preview,
.rainfall-table-details[open] ~ .rainfall-collapsed-summary {
    display: none;
}

.climate-heatmap-cell {
    min-height: 34px;
}

@media (min-width: 1024px) {
    .climate-carousel-slide {
        flex-basis: calc(86% - 20px);
    }
}

.risk-gauge {
    height: 8px;
    border-radius: 4px;
    background: #e7e5e4;
    overflow: hidden;
}

.risk-fill {
    height: 100%;
    width: 0%;
    border-radius: 4px;
    transition: width 1s cubic-bezier(.4, 0, .2, 1);
}

.fill-high {
    background: #dc2626;
}

.fill-med {
    background: #f59e0b;
}

.fill-low {
    background: #10b981;
}

.fill-none {
    background: #a8a29e;
}

.loader {
    border: 3px solid rgba(5, 150, 105, .15);
    border-top-color: #059669;
    border-radius: 50%;
    width: 18px;
    height: 18px;
    animation: spin 0.9s linear infinite;
    flex-shrink: 0;
}

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

.skeleton {
    background: linear-gradient(90deg, #e7e5e4 25%, #f5f5f4 50%, #e7e5e4 75%);
    background-size: 200%;
    animation: shimmer 1.4s infinite;
    border-radius: 8px;
}

@keyframes shimmer {
    0% {
        background-position: 200%;
    }

    100% {
        background-position: -200%;
    }
}

.score-ring {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 1rem;
    position: relative;
    flex-shrink: 0;
}

.score-ring::before {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 50%;
    background: conic-gradient(var(--ring-color, #a8a29e) var(--ring-pct, 0%), #e7e5e4 0%);
    z-index: -1;
}

.score-ring::after {
    content: '';
    position: absolute;
    inset: 4px;
    border-radius: 50%;
    background: white;
    z-index: -1;
}

@keyframes windPulse {
    0% {
        transform: translateY(-2px) scale(.95);
        opacity: .8;
    }

    100% {
        transform: translateY(2px) scale(1.05);
        opacity: 1;
    }
}

.card-hover {
    transition: transform .2s, box-shadow .2s;
}

.card-hover:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, .08);
}

.multiply-blend {
    mix-blend-mode: multiply;
    filter: contrast(1.2);
}

.north-arrow-stack {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.north-arrow-control,
.map-global-view-btn {
    width: 38px;
    min-height: 44px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 4px 0 5px;
    border: 1px solid rgba(120, 113, 108, .22);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    box-shadow: 0 8px 20px rgba(41, 37, 36, .10);
    backdrop-filter: blur(8px);
    color: #292524;
    line-height: 1;
}

.map-global-view-btn {
    min-height: 38px;
    cursor: pointer;
    font-size: 18px;
    font-weight: 900;
}

.map-global-view-btn:hover,
.map-global-view-btn:focus-visible {
    border-color: rgba(5, 150, 105, .42);
    background: rgba(236, 253, 245, .94);
    color: #047857;
    outline: none;
}

.north-arrow-symbol {
    font-size: 20px;
    font-weight: 900;
    transform: translateY(1px);
}

.north-arrow-label {
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .06em;
}

.smooth-zoom-control {
    overflow: hidden;
    border: 1px solid rgba(120, 113, 108, .22) !important;
    border-radius: 10px;
    background: rgba(255, 255, 255, .9);
    box-shadow: 0 10px 24px rgba(41, 37, 36, .14);
    backdrop-filter: blur(8px);
}

.smooth-zoom-control-button {
    display: flex !important;
    width: 38px !important;
    height: 38px !important;
    align-items: center;
    justify-content: center;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #292524;
    cursor: pointer;
    font-size: 21px !important;
    font-weight: 800;
    line-height: 1 !important;
    transition: background-color .18s ease, color .18s ease, transform .12s ease;
    user-select: none;
}

.smooth-zoom-control-button + .smooth-zoom-control-button {
    border-top: 1px solid rgba(214, 211, 209, .85) !important;
}

.smooth-zoom-control-button:hover,
.smooth-zoom-control-button:focus-visible {
    background: rgba(236, 253, 245, .94) !important;
    color: #047857;
    outline: none;
}

.smooth-zoom-control-button:active {
    background: rgba(209, 250, 229, .98) !important;
    transform: scale(.9);
}

#main-map-shell {
    transition: box-shadow .28s ease, border-color .28s ease;
}

#main-map-shell.is-map-zooming {
    border-color: rgba(16, 185, 129, .4);
    box-shadow: 0 16px 36px rgba(5, 150, 105, .14);
}

#main-map-shell .leaflet-tile-pane,
#main-map-shell .leaflet-overlay-pane {
    will-change: transform;
}

.map-zoom-separator {
    margin: 0 3px;
    color: rgba(120, 113, 108, .72);
}

.map-info-panel {
    position: absolute;
    top: 12px;
    left: 50%;
    z-index: 520;
    max-width: min(88%, 430px);
    transform: translate(-50%, -8px);
    padding: 8px 12px;
    border: 1px solid rgba(214, 211, 209, .9);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 12px 28px rgba(41, 37, 36, .12);
    color: #44403c;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.35;
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease;
}

.map-info-panel.is-visible {
    opacity: 1;
    transform: translate(-50%, 0);
}

.map-info-warn {
    border-color: rgba(245, 158, 11, .35);
    background: rgba(255, 251, 235, .94);
    color: #92400e;
}

.map-info-info {
    border-color: rgba(16, 185, 129, .24);
    background: rgba(240, 253, 244, .94);
    color: #065f46;
}

.map-layer-status {
    width: min(100%, 760px);
    margin: 8px 0 16px;
    padding: 10px 12px;
    border: 1px solid rgba(14, 165, 233, .24);
    border-radius: 10px;
    background: rgba(240, 249, 255, .9);
    color: #075985;
    font-size: 12px;
    font-weight: 650;
    line-height: 1.4;
}

.map-layer-status.hidden {
    display: none;
}

.map-layer-status-info {
    border-color: rgba(14, 165, 233, .28);
    background: rgba(240, 249, 255, .92);
    color: #075985;
}

.map-layer-status-warn {
    border-color: rgba(245, 158, 11, .34);
    background: rgba(255, 251, 235, .94);
    color: #92400e;
}

.map-layer-status-success {
    border-color: rgba(16, 185, 129, .3);
    background: rgba(240, 253, 244, .94);
    color: #065f46;
}

.map-settings-trigger {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(120, 113, 108, .22);
    border-radius: 10px;
    background: #fff;
    color: #57534e;
    font-size: 16px;
    line-height: 1;
    box-shadow: 0 1px 2px rgba(28, 25, 23, .06);
    transition: background .18s ease, color .18s ease, border-color .18s ease;
}

.map-settings-trigger:hover,
.map-settings-trigger[aria-expanded="true"] {
    border-color: rgba(5, 150, 105, .32);
    background: #ecfdf5;
    color: #047857;
}

.map-settings-panel {
    margin: -4px 0 18px;
    padding: 14px;
    border: 1px solid rgba(16, 185, 129, .18);
    border-radius: 12px;
    background: rgba(250, 250, 249, .92);
}

.map-settings-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.map-setting-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 7px 10px;
    align-items: center;
    padding: 10px;
    border: 1px solid rgba(214, 211, 209, .72);
    border-radius: 10px;
    background: #fff;
}

.map-setting-row input[type="range"] {
    grid-column: 1 / -1;
    width: 100%;
}

.map-setting-label {
    display: block;
    color: #44403c;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.map-setting-note {
    margin-top: 2px;
    color: #78716c;
    font-size: 10px;
    line-height: 1.25;
}

.map-setting-value {
    color: #047857;
    font-size: 11px;
    font-weight: 900;
    white-space: nowrap;
}

.map-settings-section-title {
    margin: 14px 0 8px;
    color: #57534e;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.map-settings-section-title:first-child {
    margin-top: 2px;
}

.map-settings-panel .map-settings-grid + .map-settings-section-title {
    padding-top: 12px;
    border-top: 1px dashed rgba(168, 162, 158, .45);
}

/* Sélecteur de fond de carte (panneau Contrôles) */
.basemap-pick-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.basemap-pick-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 38px;
    padding: 8px 6px;
    border: 1px solid rgba(214, 211, 209, .9);
    border-radius: 10px;
    background: #fafaf9;
    color: #44403c;
    font-size: 12px;
    font-weight: 700;
    text-align: center;
    transition: background .16s ease, border-color .16s ease, color .16s ease, box-shadow .16s ease;
}

.basemap-pick-btn:hover {
    background: #ecfdf5;
    border-color: rgba(5, 150, 105, .35);
}

.basemap-pick-btn.is-active {
    background: #059669;
    border-color: #047857;
    color: #fff;
    box-shadow: 0 4px 12px rgba(5, 150, 105, .28);
}

@media (max-width: 640px) {
    .map-settings-grid {
        grid-template-columns: 1fr;
    }
}

.map-legends {
    position: static;
    display: flex;
    width: 100%;
    flex-wrap: wrap;
    gap: 8px;
    margin: -8px 0 24px;
}

.map-legend-card {
    flex: 1 1 220px;
    padding: 9px 10px;
    border: 1px solid rgba(214, 211, 209, .78);
    border-radius: 8px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 10px 26px rgba(41, 37, 36, .11);
    backdrop-filter: blur(8px);
    color: #44403c;
}

.map-legend-card h4 {
    margin: 0 0 6px;
    color: #292524;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.map-legend-row {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 4px 0;
    font-size: 10px;
    line-height: 1.25;
}

.map-legend-note {
    margin: 7px 0 0;
    color: #78716c;
    font-size: 9px;
    line-height: 1.3;
}

.legend-fill,
.legend-hatch {
    width: 18px;
    height: 12px;
    flex: 0 0 auto;
    border: 1px solid rgba(68, 64, 60, .24);
    border-radius: 3px;
}

.legend-line {
    width: 22px;
    height: 0;
    flex: 0 0 auto;
    border-top: 3px solid currentColor;
}

.legend-point {
    width: 11px;
    height: 11px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: currentColor;
}

.legend-arrow {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    color: #0891b2;
}

.legend-arrow::before {
    content: "↑";
    display: block;
    font-weight: 900;
    line-height: 18px;
    text-align: center;
}

.legend-line-cadastre,
.legend-line-cadastre-neighbor { color: #ffffff; border-top-color: #ffffff; box-shadow: 0 0 0 1px rgba(41, 37, 36, .25); }
.legend-line-cadastre-selected { color: #10a36d; border-top-color: #10a36d; border-top-width: 4px; box-shadow: 0 0 0 2px rgba(255, 255, 255, .85); }
.legend-line-power { color: #ea580c; box-shadow: 0 0 0 2px rgba(254, 215, 170, .95); }
.legend-line-hydrography { color: #0284c7; border-top-width: 4px; box-shadow: 0 0 0 2px rgba(186, 230, 253, .9); }
.legend-hydrography-water { background: rgba(56, 189, 248, .58); border-color: #0284c7; }
.legend-point-power { color: #dc2626; }
.legend-relief { background: linear-gradient(135deg, rgba(120, 113, 108, .18), rgba(68, 64, 60, .48)); border-color: #78716c; }
.legend-plu-u { background: rgba(239, 68, 68, .78); border-color: #b91c1c; }
.legend-plu-au { background: rgba(251, 146, 60, .82); border-color: #c2410c; }
.legend-plu-a { background: rgba(254, 242, 74, .9); border-color: #a16207; }
.legend-plu-n { background: rgba(101, 184, 61, .86); border-color: #166534; }
.legend-plu-other { background: rgba(214, 211, 209, .9); border-color: #57534e; }

.plu-zone-label {
    background: rgba(255, 255, 255, .88);
    border: 1px solid rgba(68, 64, 60, .38);
    border-radius: 5px;
    box-shadow: 0 1px 2px rgba(255, 255, 255, .9), 0 2px 8px rgba(28, 25, 23, .32);
    color: #334155;
    font-size: 12px;
    font-weight: 900;
    line-height: 1;
    padding: 3px 5px;
    text-shadow: 0 1px 0 rgba(255, 255, 255, .85);
    text-transform: uppercase;
    letter-spacing: 0;
}

.plu-zone-label::before {
    display: none;
}
.legend-argile-low { background: rgba(187, 247, 208, .9); border-color: #059669; }
.legend-argile-med { background: rgba(253, 186, 116, .9); border-color: #f97316; }
.legend-argile-high { background: rgba(254, 202, 202, .9); border-color: #dc2626; }
.legend-flood { background: rgba(186, 230, 253, .9); border-color: #0284c7; }
.legend-flood-green { background: rgba(94, 210, 150, .72); border-color: #059669; }
.legend-flood-cyan { background: rgba(125, 211, 252, .7); border-color: #0284c7; }
.legend-flood-blue { background: rgba(37, 99, 235, .68); border-color: #1d4ed8; }
.legend-flood-purple { background: rgba(109, 40, 217, .68); border-color: #6d28d9; }
.legend-flood-red { background: rgba(220, 38, 38, .62); border-color: #b91c1c; }
.legend-flood-orange { background: rgba(251, 146, 60, .62); border-color: #ea580c; }
.legend-littoral-blue { background: rgba(191, 219, 254, .9); border-color: #2563eb; }
.legend-littoral-risk { background: rgba(254, 215, 170, .9); border-color: #ea580c; }
.legend-unknown { background: rgba(231, 229, 228, .9); border-color: #a8a29e; }

.legend-hatch {
    background: repeating-linear-gradient(
        135deg,
        rgba(120, 113, 108, .18),
        rgba(120, 113, 108, .18) 3px,
        rgba(255, 255, 255, .88) 3px,
        rgba(255, 255, 255, .88) 6px
    );
}

.map-popup {
    min-width: 190px;
    color: #44403c;
    font-size: 12px;
    line-height: 1.35;
}

.map-popup h3 {
    margin: 0 0 8px;
    color: #292524;
    font-size: 13px;
    font-weight: 900;
}

.map-popup p {
    margin: 4px 0;
}

.map-popup a {
    color: #047857;
    font-weight: 800;
    text-decoration: underline;
}

.map-popup-note {
    margin-top: 8px !important;
    color: #78716c;
    font-size: 10px;
}

@media (max-width: 640px) {
    .map-legends {
        flex-direction: column;
        margin-top: -4px;
    }

    .map-legend-card {
        padding: 8px;
    }

    .map-info-panel {
        top: 10px;
        font-size: 10px;
    }
}

.layer-control-disabled {
    cursor: not-allowed;
    color: #a8a29e !important;
    opacity: .58;
}

.layer-control-disabled input {
    cursor: not-allowed;
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  RESPONSIVE V1 — app mobile sans refonte métier           ║
   ╚════════════════════════════════════════════════════════════╝ */

@media (max-width: 1024px) {
    .site-header-row {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
    }

    .header-actions {
        width: 100%;
        flex-wrap: wrap;
        justify-content: space-between;
        gap: 8px !important;
    }

    #searchForm {
        flex: 0 1 auto;
        max-width: none !important;
        min-width: 0;
    }

    #auth-zone,
    #auth-guest {
        min-width: 0;
        flex-wrap: wrap;
    }
}

@media (max-width: 768px) {
    body {
        font-size: 15px;
    }

    .site-header {
        position: sticky;
    }

    .site-header > div {
        position: relative;
        padding: 10px 12px 8px !important;
    }

    .brand-block {
        min-height: 34px;
        padding-right: 142px;
    }

    .brand-title {
        font-size: 1.12rem !important;
        line-height: 1.05;
    }

    .brand-name-desktop {
        display: none;
    }

    .brand-name-mobile {
        display: inline;
        letter-spacing: .02em;
    }

    #searchForm {
        order: 2;
        display: grid !important;
        width: 100%;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 44px;
        gap: 8px;
        z-index: 980;
    }

    #searchForm > .relative {
        grid-column: 1 / 3;
        order: 1;
    }

    #searchForm button[onclick*="geolocateUser"] {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        order: 2;
        grid-column: 3;
        grid-row: 1;
        width: 44px;
        min-width: 44px;
        min-height: 44px;
        padding: 0;
    }

    #searchForm button[type="submit"] {
        order: 3;
        grid-column: 1 / 2;
        grid-row: 2;
        min-height: 44px;
        width: 100%;
        padding: 0 16px;
        font-size: .92rem;
    }

    #searchForm .mobile-full-analysis-btn {
        display: inline-flex;
        order: 4;
        grid-column: 2 / 4;
        grid-row: 2;
        width: 100%;
        min-width: 0;
        padding: 0 10px;
        font-size: .92rem;
    }

    #addressInput {
        min-height: 44px;
        font-size: 16px;
        border-radius: 12px;
    }

    .header-actions {
        order: 3;
    }

    .site-header .cta-btn {
        display: none !important;
        min-height: 44px;
        flex: 1 1 150px;
        justify-content: center;
        border-radius: 12px;
        padding: 8px 10px;
    }

    .site-header .cta-title {
        font-size: .76rem;
    }

    .site-header .cta-subtitle {
        display: none;
    }

    #auth-zone {
        position: absolute;
        top: 9px;
        right: 12px;
        z-index: 5;
        flex: 0 0 auto;
        justify-content: flex-end;
    }

    #auth-guest {
        width: auto;
        justify-content: flex-end;
        gap: 6px !important;
    }

    #auth-guest button,
    #auth-user > button,
    .auth-header-btn {
        min-height: 38px;
        padding: 8px 11px;
        border-radius: 12px;
    }

    .auth-header-btn {
        min-width: 126px;
        box-shadow: 0 6px 16px rgba(5, 150, 105, .1);
    }

    /* nav.app-tab-nav : spécificité nécessaire pour battre la règle desktop
       `.app-tab-nav { position: sticky; top: 0 }` — sinon le menu ne se fixe
       jamais en bas. `top: auto` obligatoire pour la même raison. */
    nav.app-tab-nav {
        position: fixed;
        top: auto;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 900;
        gap: 14px !important;
        margin-top: 0 !important;
        padding: 9px 12px calc(9px + env(safe-area-inset-bottom)) !important;
        border-top: 1px solid rgba(214, 211, 209, .85);
        border-bottom: 0 !important;
        background: rgba(255, 255, 255, .96);
        box-shadow: 0 -10px 30px rgba(41, 37, 36, .1);
        backdrop-filter: blur(14px);
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
    }

    nav.app-tab-nav::after {
        content: "→";
        position: sticky;
        right: 0;
        display: inline-flex;
        width: 28px;
        align-items: center;
        justify-content: center;
        color: #059669;
        background: linear-gradient(to right, rgba(255,255,255,0), #fff 45%);
        font-weight: 900;
        pointer-events: none;
    }

    body.map-fullscreen-active nav {
        display: none !important;
    }

    .tab-btn {
        min-height: 40px;
        scroll-snap-align: start;
        font-size: .82rem !important;
    }

    main {
        padding: 14px 12px calc(88px + env(safe-area-inset-bottom)) !important;
    }

    #synthese > .flex:first-child {
        gap: 12px !important;
        margin-bottom: 14px !important;
    }

    #main-map-shell {
        height: clamp(360px, 60vh, 540px) !important;
        border-radius: 14px;
    }

    .map-fullscreen-btn {
        display: inline-flex;
        position: absolute;
        top: 10px;
        left: 10px;
        z-index: 520;
        min-height: 38px;
        align-items: center;
        justify-content: center;
        border: 1px solid rgba(214, 211, 209, .9);
        border-radius: 10px;
        background: rgba(255, 255, 255, .92);
        color: #065f46;
        box-shadow: 0 8px 20px rgba(41, 37, 36, .14);
        padding: 8px 11px;
        font-size: 12px;
        font-weight: 900;
        backdrop-filter: blur(8px);
    }

    .mobile-basemap-btn {
        display: inline-flex;
        position: absolute;
        top: 10px;
        left: 104px;
        z-index: 520;
        min-height: 38px;
        align-items: center;
        justify-content: center;
        border: 1px solid rgba(214, 211, 209, .9);
        border-radius: 10px;
        background: rgba(255, 255, 255, .92);
        color: #065f46;
        box-shadow: 0 8px 20px rgba(41, 37, 36, .14);
        padding: 8px 11px;
        font-size: 12px;
        font-weight: 900;
        backdrop-filter: blur(8px);
    }

    #main-map-shell.is-map-fullscreen {
        position: fixed !important;
        inset: 0 !important;
        z-index: 9999 !important;
        width: 100vw !important;
        height: 100dvh !important;
        border: 0 !important;
        border-radius: 0 !important;
    }

    body.map-fullscreen-active {
        overflow: hidden;
    }

    body.map-fullscreen-active .mobile-basemap-btn {
        display: none !important;
    }

    .leaflet-control-zoom a {
        width: 38px !important;
        height: 38px !important;
        line-height: 38px !important;
        font-size: 20px !important;
    }

    .north-arrow-control {
        width: 34px;
        min-height: 38px;
    }

    #site-data-panel {
        max-height: none !important;
        padding: 14px !important;
        border-radius: 14px;
    }

    #site-data-panel.is-collapsed #synthese-cards,
    .mobile-collapsible.is-collapsed .mobile-panel-body {
        display: none !important;
    }

    .mobile-panel-toggle {
        display: inline-flex;
        min-height: 34px;
        align-items: center;
        justify-content: center;
        border: 1px solid #d6d3d1;
        border-radius: 999px;
        background: #fff;
        color: #047857;
        padding: 6px 10px;
        font-size: 11px;
        font-weight: 900;
        white-space: nowrap;
    }

    .mobile-panel-toggle::after {
        content: "⌄";
        margin-left: 6px;
        font-size: 12px;
        line-height: 1;
    }

    .is-collapsed > * > .mobile-panel-toggle::after,
    .is-collapsed .mobile-panel-toggle::after {
        content: "›";
    }

    #map-legends {
        margin: 0 0 14px;
    }

    .map-legend-card {
        flex-basis: 100%;
        box-shadow: 0 8px 18px rgba(41, 37, 36, .08);
    }

    #map-controls-panel {
        padding: 14px !important;
        border-radius: 14px;
        margin-bottom: 20px !important;
    }

    #map-controls-body {
        gap: 14px !important;
    }

    #map-controls-body label {
        min-height: 38px;
        align-items: center;
        border: 1px solid #e7e5e4;
        border-radius: 10px;
        background: #fafaf9;
        padding: 7px 9px;
    }

    #map-controls-body input[type="checkbox"] {
        width: 18px;
        height: 18px;
        flex: 0 0 auto;
    }

    .chart-container {
        height: 260px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .climate-carousel-track,
    .overflow-x-auto {
        -webkit-overflow-scrolling: touch;
    }

    .climate-carousel-slide {
        flex-basis: min(94%, 520px);
        padding: 13px;
    }

    table {
        min-width: 620px;
    }

}

@media (max-width: 480px) {
    .site-header > div {
        padding-inline: 10px !important;
    }

    .header-actions {
        flex-wrap: nowrap;
        align-items: stretch;
        gap: 6px !important;
    }

    .site-header .cta-btn {
        flex: 0 1 142px;
        min-width: 118px;
    }

    #auth-zone {
        right: 10px;
        min-width: 0;
    }

    #auth-guest {
        width: auto;
        flex-wrap: nowrap;
    }

    #auth-guest button {
        flex: 0 0 auto;
        min-width: 0;
        white-space: nowrap;
        font-size: 10.5px;
        padding-inline: 9px;
    }

    .brand-block {
        padding-right: 122px;
    }

    .brand-title .text-stone-400 {
        display: none !important;
    }

    .auth-header-btn {
        min-width: 112px;
    }

    main {
        padding-inline: 10px !important;
    }

    #main-map-shell {
        height: clamp(340px, 58vh, 500px) !important;
    }

    #synthese-cards .truncate {
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
    }

    .chart-container {
        height: 235px;
    }
}

@media (max-width: 700px) {
    .launch-quiz-shell {
        padding: 12px 0 84px;
    }

    .launch-frame {
        min-height: calc(100dvh - 150px);
    }

    .launch-options {
        grid-template-columns: 1fr !important;
    }

    .launch-option {
        min-height: 86px;
    }

    .launch-footer-actions {
        position: sticky;
        bottom: 0;
        z-index: 40;
        margin: 18px -14px -14px;
        padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
        border-top: 1px solid #e7e5e4;
        background: rgba(255, 255, 255, .96);
        backdrop-filter: blur(10px);
    }

    .launch-btn-primary,
    .launch-btn-secondary {
        min-height: 46px;
    }
}

@media (max-width: 380px) {
    .brand-block {
        padding-right: 48px;
    }

    .auth-header-btn {
        width: 40px;
        min-width: 40px;
        padding-inline: 0 !important;
    }

    .auth-header-text {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .tab-btn {
        font-size: .78rem !important;
    }

    #map-controls-body {
        grid-template-columns: 1fr !important;
    }
}

.badge {
    display: inline-flex;
    align-items: center;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .05em;
    padding: 2px 7px;
    border-radius: 999px;
    text-transform: uppercase;
}

.badge-red {
    background: #fee2e2;
    color: #b91c1c;
}

.badge-amber {
    background: #fef3c7;
    color: #b45309;
}

.badge-green {
    background: #d1fae5;
    color: #065f46;
}

.badge-gray {
    background: #e7e5e4;
    color: #57534e;
}

@keyframes loadbar {
    0% {
        margin-left: -33%;
        width: 33%;
    }

    100% {
        margin-left: 100%;
        width: 33%;
    }
}

#loadingBar .bar {
    animation: loadbar 1.5s ease-in-out infinite;
}

.cta-btn {
    background-color: #059669;
    color: white;
    padding: 8px 16px;
    border-radius: 8px;
    text-decoration: none;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s, transform 0.1s;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.cta-btn:hover {
    background-color: #047857;
    transform: translateY(-1px);
}

.header-booking-cta {
    min-width: 126px;
    min-height: 44px;
    flex-direction: row;
    white-space: nowrap;
}

/* Menu gestionnaire : projets clients synchronisés avec Observe */
.client-projects-menu {
    position: relative;
    flex: 0 0 auto;
}

.client-projects-trigger {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 8px 13px;
    border: 1px solid #a7f3d0;
    border-radius: 12px;
    background: linear-gradient(135deg, #047857, #059669);
    color: #fff;
    font-size: .79rem;
    font-weight: 850;
    white-space: nowrap;
    box-shadow: 0 8px 18px rgba(5, 150, 105, .18);
    transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.client-projects-trigger:hover,
.client-projects-trigger[aria-expanded="true"] {
    background: linear-gradient(135deg, #065f46, #047857);
    box-shadow: 0 11px 24px rgba(5, 150, 105, .24);
    transform: translateY(-1px);
}

.client-projects-trigger:focus-visible,
.client-projects-search input:focus-visible,
.client-project-result:focus-visible,
.client-project-result-open:focus-visible,
.client-project-result-drive:focus-visible,
.client-projects-heading button:focus-visible,
.client-projects-list-heading button:focus-visible {
    outline: 3px solid rgba(16, 185, 129, .32);
    outline-offset: 2px;
}

.client-projects-trigger-icon {
    display: inline-grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border-radius: 8px;
    background: rgba(255, 255, 255, .16);
    font-size: .9rem;
}

.client-projects-trigger-caret {
    font-size: .9rem;
    transition: transform .18s ease;
}

.client-projects-trigger[aria-expanded="true"] .client-projects-trigger-caret {
    transform: rotate(180deg);
}

.client-projects-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 1200;
    width: min(430px, calc(100vw - 24px));
    max-height: min(660px, calc(100vh - 110px));
    overflow: hidden;
    padding: 15px;
    border: 1px solid #d6d3d1;
    border-radius: 18px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 22px 56px rgba(41, 37, 36, .19), 0 5px 14px rgba(41, 37, 36, .08);
    backdrop-filter: blur(16px);
}

.client-projects-heading,
.client-projects-list-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.client-projects-heading strong {
    display: block;
    color: #1c1917;
    font-size: .96rem;
    line-height: 1.25;
}

.client-projects-heading span {
    display: block;
    margin-top: 2px;
    color: #78716c;
    font-size: .7rem;
}

.client-projects-heading button,
.client-projects-list-heading button {
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border-radius: 10px;
    color: #78716c;
    background: #f5f5f4;
    font-size: 1rem;
    font-weight: 800;
    transition: background .16s ease, color .16s ease, transform .16s ease;
}

.client-projects-heading button:hover,
.client-projects-list-heading button:hover {
    color: #047857;
    background: #ecfdf5;
}

.client-projects-list-heading button.is-loading {
    animation: client-projects-spin .8s linear infinite;
}

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

.client-projects-search {
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 14px 0 11px;
    padding: 0 12px;
    border: 1px solid #d6d3d1;
    border-radius: 13px;
    background: #fafaf9;
    color: #059669;
    transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.client-projects-search:focus-within {
    border-color: #34d399;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(52, 211, 153, .13);
}

.client-projects-search input {
    width: 100%;
    min-height: 43px;
    border: 0;
    outline: 0;
    background: transparent;
    color: #292524;
    font-size: .82rem;
}

.client-projects-search input::placeholder {
    color: #a8a29e;
}

.client-projects-list-heading {
    min-height: 30px;
    color: #57534e;
    font-size: .7rem;
    font-weight: 850;
    letter-spacing: .035em;
    text-transform: uppercase;
}

.client-projects-status {
    padding: 18px 8px;
    color: #78716c;
    font-size: .78rem;
    text-align: center;
}

.client-projects-status:empty,
.client-projects-status.hidden {
    display: none;
}

.client-projects-results {
    max-height: min(405px, calc(100vh - 280px));
    overflow-y: auto;
    margin: 5px -4px 0;
    padding: 0 4px 4px;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: #d6d3d1 transparent;
}

.client-project-result {
    width: 100%;
    display: grid;
    gap: 8px;
    margin-top: 7px;
    padding: 11px 12px;
    border: 1px solid #e7e5e4;
    border-radius: 14px;
    background: #fff;
    color: #292524;
    text-align: left;
    transition: border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}

.client-project-result:hover {
    border-color: #6ee7b7;
    background: #f0fdf4;
    transform: translateY(-1px);
    box-shadow: 0 7px 17px rgba(5, 150, 105, .1);
}

.client-project-result-open {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 7px 11px;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
}

.client-project-result-drive {
    width: 100%;
    padding: 7px 9px;
    border: 1px solid #a7f3d0;
    border-radius: 9px;
    color: #047857;
    background: #ecfdf5;
    font-size: .68rem;
    font-weight: 800;
    text-align: center;
}

.client-project-result-drive:hover {
    color: #065f46;
    background: #d1fae5;
}

.client-project-result-main {
    min-width: 0;
}

.client-project-result-name {
    display: block;
    overflow: hidden;
    color: #1c1917;
    font-size: .82rem;
    font-weight: 850;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.client-project-result-project,
.client-project-result-location {
    display: block;
    overflow: hidden;
    margin-top: 3px;
    color: #78716c;
    font-size: .7rem;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.client-project-result-location {
    color: #57534e;
}

.client-project-result-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
}

.client-project-type-badge {
    display: inline-flex;
    align-items: center;
    min-height: 21px;
    padding: 3px 7px;
    border-radius: 999px;
    font-size: .61rem;
    font-weight: 850;
    white-space: nowrap;
}

.client-project-type-badge.is-construction {
    color: #075985;
    background: #e0f2fe;
}

.client-project-type-badge.is-renovation {
    color: #9a3412;
    background: #ffedd5;
}

.client-project-type-badge.is-undefined {
    color: #57534e;
    background: #f5f5f4;
}

.client-project-result-date {
    color: #a8a29e;
    font-size: .61rem;
    font-weight: 700;
    white-space: nowrap;
}

.client-projects-observe-link {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    margin: 9px -15px -15px;
    padding: 10px;
    border-top: 1px solid #e7e5e4;
    color: #047857;
    background: #fafaf9;
    font-size: .72rem;
    font-weight: 800;
    text-decoration: none;
}

.client-projects-observe-link:hover {
    background: #ecfdf5;
    color: #065f46;
}

@media (max-width: 768px) {
    #header-booking-cta:not(.hidden) {
        display: inline-flex !important;
        width: 100%;
        flex: 1 1 100%;
    }

    .client-projects-menu {
        width: 100%;
    }

    .client-projects-trigger {
        width: 100%;
    }

    .client-projects-dropdown {
        left: 0;
        right: auto;
        width: 100%;
        max-height: calc(100dvh - 170px);
    }

    .client-projects-results {
        max-height: calc(100dvh - 380px);
    }
}

.analyze-btn,
.auth-header-btn,
.auth-mode-tab,
.cta-btn {
    min-height: 44px;
}

.analyze-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    border-radius: 12px;
    box-shadow: 0 8px 18px rgba(5, 150, 105, .2);
}

.mobile-full-analysis-btn {
    display: none;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 44px;
    border-radius: 12px;
    box-shadow: 0 8px 18px rgba(4, 120, 87, .22);
}

.selected-parcel-halo {
    filter: drop-shadow(0 0 4px rgba(0, 0, 0, .45));
}

.selected-parcel-outline {
    filter: drop-shadow(0 0 5px rgba(255, 255, 255, .95)) drop-shadow(0 0 12px rgba(5, 150, 105, .72));
}

.cadastre-context-outline {
    filter: drop-shadow(0 0 2px rgba(0, 0, 0, .72)) drop-shadow(0 0 4px rgba(255, 255, 255, .78));
}

.cadastre-info-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.cadastre-info-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border: 1px solid rgba(5, 150, 105, .35);
    border-radius: 999px;
    background: #ecfdf5;
    color: #047857;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
}

.cadastre-info-trigger:hover,
.cadastre-info-trigger:focus-visible {
    border-color: #059669;
    background: #d1fae5;
    outline: none;
}

.flood-info-trigger {
    border-color: rgba(37, 99, 235, .35);
    background: #eff6ff;
    color: #1d4ed8;
}

.flood-info-trigger:hover,
.flood-info-trigger:focus-visible {
    border-color: #2563eb;
    background: #dbeafe;
}

.flood-info-tooltip {
    border-color: rgba(37, 99, 235, .24);
}

.flood-info-tooltip strong {
    color: #1d4ed8;
}

.neutral-info-trigger {
    border-color: rgba(87, 83, 78, .34);
    background: #f5f5f4;
    color: #57534e;
}

.plu-info-trigger {
    border-color: rgba(217, 119, 6, .35);
    background: #fffbeb;
    color: #b45309;
}

.wind-info-trigger {
    border-color: rgba(8, 145, 178, .35);
    background: #ecfeff;
    color: #0e7490;
}

.argile-info-trigger {
    border-color: rgba(220, 38, 38, .35);
    background: #fef2f2;
    color: #b91c1c;
}

.littoral-info-trigger {
    border-color: rgba(79, 70, 229, .35);
    background: #eef2ff;
    color: #4338ca;
}

.power-info-trigger {
    border-color: rgba(249, 115, 22, .35);
    background: #fff7ed;
    color: #c2410c;
}

.cadastre-info-tooltip {
    position: absolute;
    left: 50%;
    bottom: calc(100% + 8px);
    z-index: 80;
    display: none;
    width: min(250px, calc(100vw - 32px));
    transform: translateX(-50%);
    border: 1px solid rgba(16, 185, 129, .24);
    border-radius: 10px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 14px 34px rgba(41, 37, 36, .16);
    padding: 10px 11px;
    color: #44403c;
    font-size: 11px;
    line-height: 1.35;
}

.cadastre-info-tooltip strong {
    display: block;
    margin-bottom: 5px;
    color: #047857;
    font-size: 12px;
}

.cadastre-info-tooltip span {
    display: block;
}

.layer-swatch {
    display: inline-block;
    width: 15px;
    height: 10px;
    margin-right: 5px;
    border: 1px solid currentColor;
    border-radius: 3px;
    vertical-align: -1px;
}

.swatch-plu-u { background: rgba(239, 68, 68, .78); color: #b91c1c; }
.swatch-plu-au { background: rgba(251, 146, 60, .82); color: #c2410c; }
.swatch-plu-a { background: rgba(254, 242, 74, .9); color: #a16207; }
.swatch-plu-n { background: rgba(101, 184, 61, .86); color: #166534; }
.swatch-plu-other { background: rgba(214, 211, 209, .9); color: #57534e; }
.swatch-flood-green { background: rgba(94, 210, 150, .72); color: #059669; }
.swatch-flood-cyan { background: rgba(125, 211, 252, .7); color: #0284c7; }
.swatch-flood-blue { background: rgba(37, 99, 235, .68); color: #1d4ed8; }
.swatch-flood-purple { background: rgba(109, 40, 217, .68); color: #6d28d9; }
.swatch-flood-red { background: rgba(220, 38, 38, .62); color: #b91c1c; }
.swatch-flood-orange { background: rgba(251, 146, 60, .62); color: #ea580c; }
.swatch-argile-low { background: rgba(254, 240, 138, .9); color: #ca8a04; }
.swatch-argile-med { background: rgba(251, 146, 60, .8); color: #ea580c; }
.swatch-argile-high { background: rgba(248, 113, 113, .82); color: #dc2626; }
.swatch-power-line { height: 3px; background: #f97316; color: #ea580c; vertical-align: 2px; }

.cadastre-info-wrap:hover .cadastre-info-tooltip,
.cadastre-info-wrap:focus-within .cadastre-info-tooltip,
.cadastre-info-wrap.is-open .cadastre-info-tooltip {
    display: block;
}

.map-help-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.map-help-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border: 1px solid rgba(120, 113, 108, .35);
    border-radius: 999px;
    background: #fff;
    color: #57534e;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
}

.map-help-trigger:hover,
.map-help-trigger:focus-visible {
    border-color: #059669;
    background: #ecfdf5;
    color: #047857;
    outline: none;
}

.map-help-popover {
    position: absolute;
    left: 0;
    top: calc(100% + 8px);
    z-index: 90;
    display: none;
    width: min(560px, calc(100vw - 32px));
    max-height: min(70vh, 520px);
    overflow: auto;
    border: 1px solid rgba(214, 211, 209, .9);
    border-radius: 14px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 18px 44px rgba(41, 37, 36, .18);
    padding: 12px;
    color: #44403c;
}

.map-help-popover.is-open {
    display: block;
}

.map-help-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
    color: #047857;
    font-size: 12px;
    font-weight: 900;
}

.map-help-head button {
    width: 28px;
    height: 28px;
    border: 1px solid rgba(214, 211, 209, .85);
    border-radius: 999px;
    background: #fff;
    color: #57534e;
    font-weight: 900;
}

.map-help-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 12px;
}

.map-help-grid p {
    margin: 0;
    font-size: 11px;
    line-height: 1.35;
}

.map-help-swatch {
    display: inline-block;
    width: 14px;
    height: 10px;
    margin-right: 5px;
    border: 1px solid currentColor;
    border-radius: 3px;
    vertical-align: -1px;
}

.map-help-swatch.plu-u { background: rgba(239, 68, 68, .78); color: #b91c1c; }
.map-help-swatch.plu-au { background: rgba(251, 146, 60, .82); color: #c2410c; }
.map-help-swatch.plu-a { background: rgba(254, 242, 74, .9); color: #a16207; }
.map-help-swatch.plu-n { background: rgba(101, 184, 61, .86); color: #166534; }
.map-help-swatch.plu-other { background: rgba(214, 211, 209, .9); color: #57534e; }

.satellite-labels-control {
    padding: 9px;
    border: 1px solid rgba(214, 211, 209, .75);
    border-radius: 10px;
    background: rgba(255, 255, 255, .62);
}

.satellite-labels-control input[type="range"] {
    width: 100%;
    accent-color: #059669;
}

.satellite-labels-control.is-disabled {
    opacity: .55;
}

.satellite-labels-control.is-disabled input {
    cursor: not-allowed;
}

.satellite-city-label {
    pointer-events: none;
    text-align: center;
}

.satellite-city-label span {
    display: inline-block;
    padding: 1px 5px 2px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .68);
    box-shadow: 0 1px 4px rgba(0, 0, 0, .24);
    color: #292524;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.15;
    text-shadow: 0 1px 0 rgba(255, 255, 255, .9);
    white-space: nowrap;
}

.satellite-city-label-rank-1 span {
    font-size: 12px;
    font-weight: 900;
}

.parcel-popup h3 {
    color: #047857;
}

.mobile-basemap-btn {
    display: none;
}

.basemap-sheet.hidden {
    display: none;
}

.basemap-sheet {
    position: fixed;
    inset: 0;
    z-index: 10000;
}

.basemap-sheet-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(28, 25, 23, .32);
}

.basemap-sheet-panel {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom));
    border: 1px solid #e7e5e4;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 22px 60px rgba(41, 37, 36, .22);
    padding: 16px;
}

.basemap-sheet-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.basemap-sheet-head h2 {
    color: #292524;
    font-size: 1rem;
    font-weight: 900;
}

.basemap-sheet-head button {
    width: 38px;
    height: 38px;
    border-radius: 999px;
    border: 1px solid #e7e5e4;
    background: #fafaf9;
    color: #57534e;
    font-size: 22px;
    line-height: 1;
}

.basemap-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.basemap-options button {
    min-height: 86px;
    border: 1px solid #e7e5e4;
    border-radius: 16px;
    background: #fafaf9;
    color: #292524;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 3px;
    padding: 14px;
    text-align: left;
}

.basemap-options button span {
    font-size: 1.3rem;
}

.basemap-options button strong {
    font-size: .9rem;
}

.basemap-options button small {
    color: #78716c;
    font-size: .72rem;
}

.basemap-options button.is-active {
    border-color: #059669;
    background: #ecfdf5;
    box-shadow: inset 0 0 0 1px rgba(5, 150, 105, .2);
}

@media (max-width: 768px) {
    .mobile-basemap-btn {
        display: inline-flex;
    }

    body.map-fullscreen-active .mobile-basemap-btn {
        display: none !important;
    }
}

.analyze-btn:focus-visible,
.mobile-full-analysis-btn:focus-visible,
.auth-header-btn:focus-visible,
.auth-mode-tab:focus-visible,
.cta-btn:focus-visible,
#auth-submit:focus-visible,
#auth-password-toggle:focus-visible {
    outline: 3px solid rgba(16, 185, 129, .35);
    outline-offset: 2px;
}

.auth-header-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-width: 132px;
    border-radius: 999px;
}

.auth-header-icon {
    line-height: 1;
}

/* Écran d'accès membre */
.member-access-gate {
    position: fixed;
    z-index: 10050;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    overflow-y: auto;
    background:
        radial-gradient(circle at 20% 15%, rgba(110, 231, 183, .28), transparent 32rem),
        linear-gradient(135deg, #032c23, #0c4a3f 55%, #14532d);
}

.member-access-card {
    width: min(100%, 460px);
    padding: clamp(28px, 6vw, 44px);
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 24px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 28px 80px rgba(0, 0, 0, .32);
    text-align: center;
}

.member-access-loading {
    display: grid;
    justify-items: center;
    gap: 13px;
    color: #14532d;
    font-weight: 750;
}

.member-access-mark {
    display: grid;
    width: 56px;
    height: 56px;
    place-items: center;
    margin: 0 auto 15px;
    border-radius: 18px;
    background: #ecfdf5;
    font-size: 28px;
}

.member-access-eyebrow {
    margin: 0 0 8px;
    color: #047857;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.member-access-card h1 {
    margin: 0;
    color: #14532d;
    font-size: clamp(25px, 5vw, 32px);
    line-height: 1.1;
}

.member-access-intro {
    margin: 13px 0 25px;
    color: #57534e;
    font-size: 15px;
    line-height: 1.55;
}

.member-access-button {
    display: block;
    width: 100%;
    min-height: 48px;
    margin-top: 10px;
    padding: 12px 16px;
    border: 1px solid transparent;
    border-radius: 12px;
    font: inherit;
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
    transition: transform .15s ease, background-color .15s ease, border-color .15s ease;
}

.member-access-button:hover {
    transform: translateY(-1px);
}

.member-access-button--primary {
    border-color: #047857;
    background: #047857;
    color: #fff;
}

.member-access-button--primary:hover {
    background: #065f46;
}

.member-access-button--secondary {
    border-color: #a7c8b5;
    background: #fff;
    color: #14532d;
}

.member-access-button--secondary:hover {
    border-color: #047857;
    background: #ecfdf5;
}

.member-access-note {
    margin: 20px 0 0;
    color: #78716c;
    font-size: 12px;
    line-height: 1.5;
}

.member-access-status {
    margin: 18px 0 0;
    padding: 10px 12px;
    border-radius: 10px;
    background: #fff7ed;
    color: #9a3412;
    font-size: 12px;
    line-height: 1.45;
}

.member-access-status--error {
    border: 1px solid #fed7aa;
}

html[data-member-access-state="member"] .member-access-gate {
    display: none;
}

/* Invitation « Je me lance » après l'ouverture d'une session membre. */
.launch-welcome-modal {
    position: fixed;
    z-index: 10055;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(12, 38, 28, .5);
    backdrop-filter: blur(7px);
}

.launch-welcome-modal.hidden { display: none; }

.launch-welcome-dialog {
    position: relative;
    width: min(100%, 550px);
    padding: clamp(30px, 6vw, 46px);
    overflow: hidden;
    border: 1px solid rgba(111, 135, 87, .35);
    border-radius: 26px;
    background:
        radial-gradient(circle at 92% 6%, rgba(203, 167, 82, .19), transparent 14rem),
        #fffdf6;
    box-shadow: 0 30px 90px rgba(0, 0, 0, .3);
}

.launch-welcome-dialog::after {
    content: '⌂';
    position: absolute;
    right: -12px;
    bottom: -35px;
    color: rgba(102, 132, 83, .1);
    font-family: Georgia, serif;
    font-size: 190px;
    line-height: 1;
    pointer-events: none;
}

.launch-welcome-close {
    position: absolute;
    z-index: 1;
    top: 13px;
    right: 16px;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    color: #647066;
    background: transparent;
    font-size: 25px;
    line-height: 1;
    cursor: pointer;
}

.launch-welcome-close:hover { color: #16432f; background: #edf2e8; }

.launch-welcome-eyebrow {
    position: relative;
    z-index: 1;
    margin: 0 0 12px;
    color: #8c6a25;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.launch-welcome-dialog h2 {
    position: relative;
    z-index: 1;
    max-width: 400px;
    margin: 0;
    color: #16432f;
    font-family: Georgia, serif;
    font-size: clamp(27px, 5vw, 38px);
    line-height: 1.07;
}

.launch-welcome-dialog > p:not(.launch-welcome-eyebrow) {
    position: relative;
    z-index: 1;
    max-width: 450px;
    margin: 17px 0 0;
    color: #526154;
    font-size: 14px;
    line-height: 1.55;
}

.launch-welcome-actions {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 27px;
}

.launch-welcome-primary,
.launch-welcome-secondary {
    min-height: 46px;
    padding: 11px 16px;
    border-radius: 12px;
    font: inherit;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
}

.launch-welcome-primary { border: 1px solid #16432f; background: #16432f; color: #fff; }
.launch-welcome-primary:hover { background: #0d3121; }
.launch-welcome-secondary { border: 1px solid #cbd6c7; background: #fff; color: #315a43; }
.launch-welcome-secondary:hover { border-color: #6c896d; background: #f5f8f1; }
.launch-welcome-note { position: relative; z-index: 1; display: block; margin-top: 16px; color: #7b847c; font-size: 11px; }

.auth-mode-tab {
    border: 1px solid #d6d3d1;
    border-radius: 14px;
    background: #fafaf9;
    color: #57534e;
    font-size: .88rem;
    font-weight: 800;
    transition: border-color .2s, background-color .2s, color .2s, box-shadow .2s;
}

.auth-mode-tab.is-active {
    border-color: #059669;
    background: #ecfdf5;
    color: #047857;
    box-shadow: inset 0 0 0 1px rgba(5, 150, 105, .18);
}

.cta-title {
    font-weight: bold;
    font-size: 0.9rem;
    line-height: 1.2;
}

.cta-subtitle {
    font-size: 0.7rem;
    opacity: 0.9;
}

.launch-quiz-shell {
    max-width: 920px;
    min-height: calc(100vh - 220px);
    margin: 0 auto;
}

.launch-frame {
    min-height: 640px;
    padding: 22px clamp(16px, 5vw, 54px) 36px;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fff;
    color: #292524;
}

.launch-brand {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 22px;
    padding-bottom: 16px;
    border-bottom: 1px solid #f5f5f4;
}

.launch-brand-logo {
    display: block;
    width: min(278px, 62vw);
    height: auto;
    object-fit: contain;
}

.launch-brand-label {
    color: #78716c;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
}

.launch-welcome,
.launch-centered {
    display: flex;
    flex-direction: column;
}

.launch-welcome-copy,
.launch-centered > h2,
.launch-centered > .launch-gate-question,
.launch-centered > .launch-microcopy {
    max-width: 620px;
    margin-right: auto;
    margin-left: auto;
    text-align: center;
}

.launch-welcome-copy {
    margin-top: auto;
    margin-bottom: 26px;
}

.launch-kicker {
    margin: 0 0 10px;
    color: #047857;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
}

.launch-welcome h2,
.launch-question h2,
.launch-centered h2,
.launch-result h2 {
    margin: 0 0 14px;
    color: #1c1917;
    font-size: 27px;
    line-height: 1.25;
    font-weight: 700;
}

.launch-welcome-copy > p:last-child,
.launch-microcopy,
.launch-gate-question,
.launch-result-intro {
    margin: 0;
    color: #57534e;
    font-size: 15px;
    line-height: 1.55;
}

.launch-resume {
    max-width: 500px;
    margin: 0 auto 20px;
    padding: 16px;
    border: 1px solid #d1fae5;
    border-radius: 8px;
    background: #f0fdf4;
    text-align: center;
}

.launch-resume p {
    margin: 0 0 14px;
    color: #44403c;
    font-size: 14px;
}

.launch-privacy {
    margin: auto auto 0;
    padding-top: 28px;
    color: #78716c;
    font-size: 12px;
    text-align: center;
}

.launch-clear {
    align-self: center;
    margin-top: 4px;
    color: #a8a29e;
    font-size: 12px;
}

.launch-progress-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0 auto 10px;
    max-width: 690px;
    color: #78716c;
    font-size: 13px;
    font-weight: 600;
}

.launch-back {
    color: #047857;
    font-weight: 600;
}

.launch-back:disabled {
    opacity: 0;
    pointer-events: none;
}

.launch-progress-track {
    width: 100%;
    max-width: 690px;
    height: 3px;
    margin: 0 auto 34px;
    overflow: hidden;
    border-radius: 2px;
    background: #e7e5e4;
}

.launch-progress-track span {
    display: block;
    height: 100%;
    border-radius: 2px;
    background: #059669;
    transition: width 0.25s ease;
}

.launch-question {
    max-width: 700px;
    margin: 0 auto 26px;
    text-align: center;
}

.launch-options {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    max-width: 730px;
    margin: 0 auto 24px;
}

.launch-option {
    display: flex;
    min-height: 130px;
    padding: 18px 12px 14px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 13px;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fff;
    color: #292524;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.35;
    text-align: center;
    transition: border-color .18s, background-color .18s, box-shadow .18s;
}

.launch-option:hover {
    border-color: #86efac;
    background: #f7fef9;
}

.launch-option.is-selected {
    border-color: #059669;
    background: #ecfdf5;
    box-shadow: 0 0 0 1px #059669;
    color: #065f46;
}

.launch-option-icon {
    display: inline-flex;
    width: 39px;
    height: 39px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: #ecfdf5;
    color: #047857;
    font-size: 23px;
    line-height: 1;
}

.launch-option.is-selected .launch-option-icon {
    background: #d1fae5;
}

.launch-note {
    display: block;
    max-width: 730px;
    margin: 0 auto 22px;
}

.launch-note span {
    display: block;
    margin-bottom: 8px;
    color: #57534e;
    font-size: 13px;
    font-weight: 700;
}

.launch-note textarea {
    display: block;
    width: 100%;
    resize: vertical;
    padding: 13px 14px;
    border: 1px solid #d6d3d1;
    border-radius: 8px;
    background: #fafaf9;
    color: #292524;
    font-size: 14px;
    line-height: 1.45;
}

.launch-note textarea:focus {
    outline: 2px solid #a7f3d0;
    border-color: #059669;
}

.launch-note-privacy {
    display: block;
    margin-top: 9px;
    color: #78716c;
    font-size: 11px;
    line-height: 1.45;
}

.launch-consent {
    display: flex;
    max-width: 730px;
    margin: -8px auto 24px;
    padding: 13px;
    align-items: flex-start;
    gap: 10px;
    border: 1px solid #d1fae5;
    border-radius: 8px;
    background: #f0fdf4;
    color: #44403c;
    font-size: 12px;
    line-height: 1.45;
}

.launch-consent input {
    margin-top: 2px;
    accent-color: #047857;
}

.launch-note.is-highlighted {
    padding: 15px;
    border: 1px solid #ede9fe;
    border-radius: 8px;
    background: #faf8ff;
}

.launch-feedback {
    max-width: 730px;
    margin: 0 auto 18px;
    padding: 10px 13px;
    border-radius: 8px;
    background: #fffbeb;
    color: #92400e;
    font-size: 13px;
    text-align: center;
}

.launch-actions,
.launch-footer-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
}

.launch-footer-actions {
    max-width: 730px;
    margin: 30px auto 0;
    justify-content: space-between;
}

.launch-actions-center {
    justify-content: center;
}

.launch-btn-primary,
.launch-btn-secondary {
    display: inline-flex;
    min-height: 46px;
    padding: 12px 22px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    transition: background-color .18s, border-color .18s;
}

.launch-btn-primary {
    border: 1px solid #047857;
    background: #047857;
    color: #fff;
}

.launch-btn-primary:hover {
    background: #065f46;
}

.launch-btn-secondary {
    border: 1px solid #d6d3d1;
    background: #fff;
    color: #44403c;
}

.launch-btn-secondary:hover {
    border-color: #86efac;
    background: #f0fdf4;
}

.launch-link {
    padding: 10px 4px;
    color: #78716c;
    font-size: 13px;
    font-weight: 600;
}

.launch-link:hover {
    color: #047857;
}

.launch-centered {
    justify-content: flex-start;
    text-align: center;
}

.launch-centered > .launch-kicker {
    margin-top: auto;
}

.launch-centered .launch-gate-question {
    margin-bottom: 12px;
    color: #292524;
    font-size: 19px;
    font-weight: 600;
}

.launch-centered .launch-actions {
    margin: 28px auto 16px;
}

.launch-pdf-locked {
    display: flex;
    width: 100%;
    max-width: 460px;
    margin: 25px auto 0;
    padding: 13px 16px;
    align-items: center;
    gap: 13px;
    border: 1px dashed #d6d3d1;
    border-radius: 8px;
    background: #fafaf9;
    color: #78716c;
    text-align: left;
}

.launch-pdf-locked span {
    font-size: 20px;
}

.launch-pdf-locked-button {
    display: block;
    padding: 0;
    color: #57534e;
    font-size: 14px;
    font-weight: 700;
}

.launch-pdf-locked p {
    margin: 2px 0 0;
    font-size: 12px;
}

.launch-offer {
    width: 100%;
    max-width: 500px;
    margin: 27px auto 0;
    padding: 21px;
    border: 1px solid #d1fae5;
    border-radius: 8px;
    background: #f0fdf4;
}

.launch-offer h3 {
    margin: 0 0 8px;
    color: #065f46;
    font-size: 25px;
    font-weight: 700;
}

.launch-offer p:not(.launch-kicker) {
    margin: 0;
    color: #44403c;
    font-size: 14px;
    line-height: 1.5;
}

.launch-offer-accent {
    border-color: #e9d5ff;
    background: #faf5ff;
}

.launch-offer-accent h3 {
    color: #6b3fa0;
}

.launch-result .launch-kicker {
    margin-top: 30px;
}

.launch-result-intro {
    max-width: 680px;
    margin: 0 0 25px;
}

.launch-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 20px;
}

.launch-result-grid > div,
.launch-next-step {
    padding: 18px;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fafaf9;
}

.launch-result h3 {
    margin: 0 0 10px;
    color: #1c1917;
    font-size: 15px;
    font-weight: 700;
}

.launch-result ul {
    margin: 0;
    padding-left: 18px;
    color: #57534e;
    font-size: 14px;
    line-height: 1.55;
}

.launch-next-step {
    margin-bottom: 26px;
    border-color: #d1fae5;
    background: #f0fdf4;
}

.launch-next-step p {
    margin: 0;
    color: #44403c;
    font-size: 14px;
}

.launch-pdf-member {
    margin: 0 0 22px;
    padding: 18px;
    border: 1px solid #d1fae5;
    border-radius: 8px;
    background: #f0fdf4;
}

.launch-pdf-member p {
    display: inline-block;
    margin: 0 0 0 14px;
    color: #57534e;
    font-size: 12px;
}

.launch-result-actions {
    justify-content: flex-start;
}

.launch-thank-page {
    min-height: 100vh;
    padding: 28px 16px;
}

.launch-thank-wrapper {
    max-width: 880px;
    margin: 0 auto;
}

.launch-thank-frame {
    min-height: 0;
}

.launch-thank-frame h1 {
    margin: 0 0 14px;
    color: #1c1917;
    font-size: 30px;
    line-height: 1.25;
    font-weight: 700;
}

.launch-thank-profile {
    margin: 26px 0;
    padding: 20px;
    border: 1px solid #d1fae5;
    border-radius: 8px;
    background: #f0fdf4;
}

.launch-thank-profile h2 {
    margin-bottom: 10px;
}

.launch-thank-actions {
    justify-content: flex-start;
    margin-bottom: 30px;
}

.launch-thank-upsell {
    padding: 23px;
    border: 1px solid #e7e5e4;
    border-radius: 8px;
    background: #fafaf9;
}

.launch-thank-upsell h2 {
    margin: 0 0 9px;
    font-size: 22px;
}

.launch-thank-upsell h3 {
    margin: 0 0 11px;
    color: #047857;
    font-size: 18px;
}

.launch-thank-upsell > p:not(.launch-kicker) {
    max-width: 670px;
    margin: 0 0 19px;
    color: #57534e;
    font-size: 14px;
    line-height: 1.55;
}

.launch-thank-status {
    margin: 18px 0 0;
    text-align: left;
}

.launch-thank-status:empty {
    display: none;
}

@media (max-width: 700px) {
    .launch-frame {
        min-height: 0;
        padding-top: 14px;
    }

    .launch-brand {
        align-items: flex-start;
        flex-direction: column;
        margin-bottom: 18px;
    }

    .launch-welcome h2,
    .launch-question h2,
    .launch-centered h2,
    .launch-result h2,
    .launch-thank-frame h1 {
        font-size: 23px;
    }

    .launch-options,
    .launch-result-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .launch-option {
        min-height: 112px;
        padding: 14px 9px;
        font-size: 13px;
    }

    .launch-footer-actions {
        flex-direction: column-reverse;
    }

    .launch-footer-actions .launch-btn-primary {
        width: 100%;
    }
}

@media print {

    body.print-land-purchase header,
    body.print-land-purchase nav,
    body.print-land-purchase footer,
    body.print-land-purchase .no-print,
    body.print-land-purchase .tab-btn,
    body.print-land-purchase .tab-content {
        display: none !important;
    }

    body.print-land-purchase #achat-terrain,
    body.print-land-purchase #land-purchase-report-shell,
    body.print-land-purchase #land-purchase-report {
        display: block !important;
    }

    body.print-land-purchase #achat-terrain-content > :not(#land-purchase-report-shell) {
        display: none !important;
    }

    body.print-land-purchase #land-purchase-report-shell {
        border: 0 !important;
        box-shadow: none !important;
        padding: 0 !important;
        margin: 0 !important;
    }

    body.print-land-purchase #land-purchase-report {
        border: 0 !important;
        padding: 0 !important;
    }

    body.print-checklist header,
    body.print-checklist nav,
    body.print-checklist footer,
    body.print-checklist .no-print,
    body.print-checklist .tab-btn {
        display: none !important;
    }

    body.print-checklist #checklist {
        display: block !important;
    }

    body.print-checklist details {
        display: block;
        break-inside: avoid;
        margin-bottom: 20px;
    }

    body.print-checklist details>summary {
        border-bottom: 2px solid #e7e5e4;
        padding-bottom: 10px;
        margin-bottom: 10px;
    }

    body.print-checklist details[open] summary~* {
        display: block !important;
    }

    body.print-checklist input,
    body.print-checklist textarea {
        border: 1px solid #ccc !important;
        box-shadow: none !important;
        background: white !important;
    }

    header,
    footer,
    #map,
    .no-print {
        display: none !important;
    }

    .tab-content.active {
        display: block !important;
    }

    body.print-analysis-report header,
    body.print-analysis-report footer,
    body.print-analysis-report .site-footer,
    body.print-analysis-report .no-print,
    body.print-analysis-report #loadingBar {
        display: none !important;
    }

    body.print-analysis-report main > .tab-content {
        display: none !important;
    }

    body.print-analysis-report main > #rapport {
        display: block !important;
    }

    body.print-analysis-report .analysis-report {
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }

    body.print-analysis-report .report-cover {
        min-height: 235mm;
        padding: 22mm 18mm;
        break-after: page;
    }

    body.print-analysis-report .report-reading-note,
    body.print-analysis-report .report-toc,
    body.print-analysis-report .report-body,
    body.print-analysis-report .report-footer {
        padding-left: 18mm;
        padding-right: 18mm;
    }

    body.print-analysis-report .report-toc {
        break-after: page;
    }

    body.print-analysis-report .report-section {
        break-before: page;
    }

    body.print-analysis-report .report-section-body,
    body.print-analysis-report .report-section-body * {
        max-height: none !important;
        overflow: visible !important;
    }

    body.print-analysis-report .report-section-body .grid,
    body.print-analysis-report .report-section-body .flex {
        break-inside: avoid;
    }

    body.print-analysis-report .report-section-body a {
        color: #065f46 !important;
    }
}

@media (max-width: 640px) {
    .report-editor-toolbar,
    .report-reading-note,
    .report-footer {
        align-items: stretch;
        flex-direction: column;
    }

    .report-editor-toolbar,
    .report-cover,
    .report-toc,
    .report-reading-note,
    .report-body,
    .report-footer {
        padding-left: 20px;
        padding-right: 20px;
    }

    .report-editor-actions { width: 100%; }
    .report-action { flex: 1; }
    .report-cover h1 { margin-top: 31px; }
    .report-cover-grid, .report-toc > div { grid-template-columns: 1fr; }
    .report-reading-note strong { flex-basis: auto; }
    .report-section-heading h2 { font-size: 23px; }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  PIED DE PAGE — logo ÔVIVANT global                        ║
   ╚════════════════════════════════════════════════════════════╝ */
.site-footer-brand {
    display: inline-flex;
    align-items: center;
    transition: opacity .18s ease, transform .18s ease;
}

.site-footer-brand:hover {
    opacity: .82;
    transform: translateY(-1px);
}

.site-footer-logo {
    height: 52px;
    width: auto;
    display: block;
}

.site-footer-meta {
    line-height: 1.5;
}

.site-footer-feedback {
    display: inline-flex;
    align-items: center;
    color: #047857;
    font-weight: 700;
    text-decoration: none;
    transition: color .18s ease;
}

.site-footer-feedback:hover {
    color: #065f46;
    text-decoration: underline;
}

.site-footer-feedback:focus-visible {
    outline: 2px solid #34d399;
    outline-offset: 3px;
    border-radius: 3px;
}

@media (max-width: 640px) {
    .site-footer-logo {
        height: 44px;
    }

    .site-footer-meta {
        text-align: center;
    }
}

/* ╔════════════════════════════════════════════════════════════╗
   ║  MODE D'EMPLOI ÔCARTO — accordéon d'étapes                 ║
   ╚════════════════════════════════════════════════════════════╝ */
.ocarto-guide {
    margin: 28px 0 8px;
    padding: 22px;
    border: 1px solid rgba(16, 185, 129, .22);
    border-radius: 20px;
    background:
        radial-gradient(120% 140% at 0% 0%, rgba(167, 139, 250, .10), transparent 55%),
        linear-gradient(180deg, #ffffff, #fafaf9);
    box-shadow: 0 14px 34px rgba(41, 37, 36, .06);
}

.ocarto-guide-head {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}

.ocarto-guide-spark {
    flex: 0 0 auto;
    width: 46px;
    height: 46px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    background: linear-gradient(135deg, #ecfdf5, #ede9fe);
    font-size: 24px;
    box-shadow: inset 0 0 0 1px rgba(16, 185, 129, .18);
}

.ocarto-guide-title {
    font-size: 1.15rem;
    font-weight: 900;
    color: #1c1917;
    line-height: 1.1;
}

.ocarto-guide-sub {
    margin-top: 3px;
    font-size: .8rem;
    color: #78716c;
}

.ocarto-guide-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.ocarto-step {
    border: 1px solid rgba(214, 211, 209, .8);
    border-radius: 14px;
    background: #fff;
    overflow: hidden;
    transition: border-color .18s ease, box-shadow .18s ease;
}

.ocarto-step[open] {
    border-color: rgba(5, 150, 105, .4);
    box-shadow: 0 8px 22px rgba(5, 150, 105, .1);
}

.ocarto-step > summary {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 14px;
    cursor: pointer;
    list-style: none;
    font-weight: 800;
    color: #292524;
    font-size: .9rem;
    user-select: none;
}

.ocarto-step > summary::-webkit-details-marker {
    display: none;
}

.ocarto-step > summary::after {
    content: "⌄";
    margin-left: auto;
    font-size: 1rem;
    color: #a8a29e;
    transition: transform .2s ease;
}

.ocarto-step[open] > summary::after {
    transform: rotate(180deg);
    color: #059669;
}

.ocarto-step-num {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #059669;
    color: #fff;
    font-size: .78rem;
    font-weight: 900;
}

.ocarto-step-emoji {
    font-size: 1.05rem;
}

.ocarto-step-label {
    min-width: 0;
}

.ocarto-step-body {
    padding: 0 14px 14px 48px;
    font-size: .82rem;
    line-height: 1.55;
    color: #57534e;
}

.ocarto-step-body strong {
    color: #1c1917;
    font-weight: 700;
}

.ocarto-guide-foot {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed rgba(168, 162, 158, .5);
    font-size: .76rem;
    color: #78716c;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .ocarto-guide {
        margin-top: 20px;
        padding: 16px;
        border-radius: 16px;
    }

    .ocarto-guide-grid {
        grid-template-columns: 1fr;
    }

    .ocarto-step-body {
        padding-left: 14px;
    }
}

/* Héliodon solaire — onglet 3D */
.solar-scene-panel {
    border: 1px solid #f6d79a;
    border-radius: 1rem;
    background: linear-gradient(135deg, #fffdf7 0%, #fff7df 100%);
    box-shadow: 0 8px 24px rgba(120, 82, 18, .08);
    padding: 1.1rem 1.25rem;
}
.solar-scene-heading, .solar-scene-time-controls { display: flex; gap: 1rem; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.solar-scene-display-options { display: grid; gap: .45rem; justify-items: start; }
.solar-scene-eyebrow { color: #a16207; font-size: .64rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.solar-scene-heading h3 { color: #44403c; font-weight: 800; font-size: 1.05rem; margin-top: .15rem; }
.solar-scene-heading p { color: #78716c; font-size: .78rem; margin-top: .2rem; }
.solar-scene-time-controls { justify-content: flex-start; border-top: 1px solid rgba(217, 167, 60, .28); margin-top: .9rem; padding-top: .85rem; }
.solar-scene-time-controls label { color: #57534e; display: grid; font-size: .72rem; font-weight: 700; gap: .28rem; }
.solar-scene-time-controls input[type="date"] { border: 1px solid #d6d3d1; border-radius: .45rem; padding: .35rem .45rem; background: #fff; }
.solar-scene-time-range { min-width: min(100%, 300px); flex: 1; }
.solar-scene-time-range input { width: 100%; accent-color: #d97706; }
.solar-scene-presets, .solar-object-library button, #solar-target-place, #solar-object-move, #solar-object-duplicate, #solar-object-delete { display: flex; gap: .4rem; flex-wrap: wrap; }
.solar-scene-presets button, .solar-object-library button, #solar-target-place, #solar-object-move, #solar-object-duplicate, #solar-object-delete { border: 1px solid #e7c46a; border-radius: .45rem; background: #fff; color: #78520b; font-size: .69rem; font-weight: 700; padding: .42rem .55rem; }
.solar-scene-presets button:hover, .solar-object-library button:hover, #solar-target-place:hover, #solar-object-move:hover, #solar-object-duplicate:hover { background: #fef3c7; }
#solar-object-delete { border-color: #fecaca; color: #b91c1c; }
.solar-objects-clear { display: block; margin-left: auto; color: #a8a29e; font-size: .68rem; text-decoration: underline; text-underline-offset: 2px; }
.solar-objects-clear:hover { color: #b91c1c; }
.solar-object-library button { justify-content: center; }
#solar-object-editor input { width: 100%; margin-top: .2rem; border: 1px solid #d6d3d1; border-radius: .35rem; padding: .3rem; }
@media (max-width: 640px) { .solar-scene-panel { padding: .9rem; } .solar-scene-time-range { min-width: 100%; } }

.heliodon-panel {
    background: linear-gradient(180deg, #fff 0%, #fffaf0 100%);
}

.heliodon-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    min-height: 520px;
}

.heliodon-map-wrap {
    position: relative;
    min-height: 520px;
    background: #f8fafc;
}

.heliodon-map {
    width: 100%;
    height: 100%;
    min-height: 520px;
}

.heliodon-overlay {
    position: absolute;
    inset: 0;
    z-index: 560;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: visible;
}

.heliodon-overlay .heliodon-svg-ring,
.heliodon-overlay .heliodon-svg-selected,
.heliodon-overlay .heliodon-svg-sun-ray,
.heliodon-overlay .heliodon-svg-shadow-ray,
.heliodon-overlay .heliodon-svg-sun-dot,
.heliodon-overlay .heliodon-svg-center {
    filter: drop-shadow(0 2px 5px rgba(15, 23, 42, .46));
}

.heliodon-overlay .heliodon-svg-reference {
    filter: drop-shadow(0 1px 3px rgba(15, 23, 42, .28));
}

.heliodon-overlay .heliodon-svg-cardinal {
    font-size: 15px;
    font-weight: 1000;
    paint-order: stroke;
    stroke: rgba(255, 255, 255, .95);
    stroke-width: 6px;
    stroke-linejoin: round;
}

.heliodon-overlay .heliodon-svg-hour {
    font-size: 12px;
    font-weight: 1000;
    fill: #fde047;
    paint-order: stroke;
    stroke: rgba(17, 24, 39, .86);
    stroke-width: 8px;
    stroke-linejoin: round;
}

.heliodon-map .leaflet-control-attribution {
    font-size: 10px;
}

.heliodon-map .leaflet-overlay-pane svg,
.heliodon-map .leaflet-overlay-pane canvas,
.heliodon-map .leaflet-pane svg,
.heliodon-map .leaflet-pane canvas {
    max-width: none !important;
}

.heliodon-map .heliodon-vector-pane,
.heliodon-map .heliodon-label-pane {
    pointer-events: none;
}

.heliodon-map .heliodon-vector-pane svg {
    overflow: visible;
}

.heliodon-map .heliodon-path-selected,
.heliodon-map .heliodon-sun-ray,
.heliodon-map .heliodon-shadow-ray,
.heliodon-map .heliodon-compass-ring {
    filter: drop-shadow(0 2px 4px rgba(15, 23, 42, .38));
}

.heliodon-map .heliodon-path-reference {
    filter: drop-shadow(0 1px 2px rgba(15, 23, 42, .22));
}

.heliodon-empty {
    position: absolute;
    inset: 16px 16px auto 16px;
    z-index: 600;
    display: flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    max-width: min(520px, calc(100% - 32px));
    padding: 10px 12px;
    border: 1px solid rgba(245, 158, 11, .35);
    border-radius: 12px;
    background: rgba(255, 251, 235, .94);
    color: #92400e;
    font-size: .78rem;
    font-weight: 700;
    box-shadow: 0 12px 30px rgba(146, 64, 14, .14);
    backdrop-filter: blur(8px);
}

.heliodon-empty.hidden {
    display: none;
}

.heliodon-map-caption {
    position: absolute;
    left: 14px;
    bottom: 14px;
    z-index: 600;
    max-width: min(520px, calc(100% - 28px));
    padding: 8px 10px;
    border: 1px solid rgba(255, 255, 255, .65);
    border-radius: 10px;
    background: rgba(255, 255, 255, .84);
    color: #44403c;
    font-size: .72rem;
    line-height: 1.35;
    box-shadow: 0 10px 28px rgba(15, 23, 42, .12);
    backdrop-filter: blur(8px);
}

.heliodon-tools {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 18px;
    border-left: 1px solid rgba(245, 158, 11, .18);
    background: rgba(255, 255, 255, .86);
}

.heliodon-address-badge {
    align-self: flex-start;
    max-width: 100%;
    padding: 8px 10px;
    border: 1px solid rgba(245, 158, 11, .25);
    border-radius: 999px;
    background: #fffbeb;
    color: #92400e;
    font-size: .72rem;
    font-weight: 800;
    line-height: 1.25;
}

.heliodon-tool-section {
    border: 1px solid rgba(214, 211, 209, .75);
    border-radius: 14px;
    background: #fff;
    padding: 13px;
}

.heliodon-tool-title {
    margin-bottom: 10px;
    color: #292524;
    font-size: .74rem;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.heliodon-field {
    display: block;
    margin-top: 11px;
}

.heliodon-field:first-of-type {
    margin-top: 0;
}

.heliodon-field > span,
.heliodon-check {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 6px;
    color: #57534e;
    font-size: .76rem;
    font-weight: 800;
}

.heliodon-field strong {
    color: #d97706;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: .74rem;
}

.heliodon-field input[type="date"] {
    width: 100%;
    padding: 8px 9px;
    border: 1px solid #d6d3d1;
    border-radius: 10px;
    color: #292524;
    font-size: .84rem;
    outline: none;
}

.heliodon-field input[type="date"]:focus {
    border-color: #f59e0b;
    box-shadow: 0 0 0 3px rgba(245, 158, 11, .18);
}

.heliodon-field input[type="range"] {
    width: 100%;
    accent-color: #f59e0b;
}

.heliodon-button-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 12px;
}

.heliodon-button-row button,
.heliodon-recenter-btn {
    min-height: 34px;
    border: 1px solid rgba(245, 158, 11, .3);
    border-radius: 10px;
    background: #fff7ed;
    color: #9a3412;
    font-size: .75rem;
    font-weight: 900;
    transition: background .16s ease, border-color .16s ease, transform .16s ease;
}

.heliodon-button-row button:hover,
.heliodon-recenter-btn:hover {
    border-color: rgba(245, 158, 11, .62);
    background: #ffedd5;
    transform: translateY(-1px);
}

.heliodon-check {
    justify-content: flex-start;
    margin: 12px 0 0;
    color: #44403c;
}

.heliodon-check input {
    width: 15px;
    height: 15px;
    accent-color: #f59e0b;
}

.heliodon-recenter-btn {
    width: 100%;
    margin-top: 12px;
    background: #fff;
}

.heliodon-info {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.heliodon-info-card {
    min-height: 62px;
    padding: 10px;
    border: 1px solid rgba(214, 211, 209, .72);
    border-radius: 12px;
    background: #fff;
}

.heliodon-info-card span {
    display: block;
    margin-bottom: 5px;
    color: #a8a29e;
    font-size: .66rem;
    font-weight: 900;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.heliodon-info-card strong {
    color: #292524;
    font-size: .94rem;
    line-height: 1.1;
}

.heliodon-summary {
    margin: 0;
    padding: 12px;
    border: 1px solid rgba(245, 158, 11, .26);
    border-radius: 13px;
    background: #fffbeb;
    color: #78350f;
    font-size: .78rem;
    line-height: 1.45;
}

.heliodon-cardinal-icon,
.heliodon-hour-icon,
.heliodon-center-icon {
    pointer-events: none;
}

.heliodon-cardinal-icon span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 22px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .82);
    font-size: .74rem;
    font-weight: 1000;
    text-shadow: 0 1px 2px rgba(255, 255, 255, .8);
    box-shadow: 0 4px 12px rgba(15, 23, 42, .12);
}

.heliodon-hour-icon span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: rgba(17, 24, 39, .72);
    color: #fde047;
    font-size: .62rem;
    font-weight: 900;
    box-shadow: 0 3px 10px rgba(15, 23, 42, .18);
}

.heliodon-center-icon span {
    display: block;
    width: 16px;
    height: 16px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: #16a34a;
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .55), 0 6px 16px rgba(15, 23, 42, .28);
}

.climate-info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    min-width: 34px;
    min-height: 34px;
    padding: .35rem .55rem;
    border: 1px solid #fde68a;
    border-radius: .5rem;
    background: #fffbeb;
    color: #92400e;
    font-size: 11px;
    font-weight: 900;
    line-height: 1;
    white-space: nowrap;
    transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}

.climate-info-btn:hover {
    background: #fef3c7;
    border-color: #fbbf24;
    color: #78350f;
}

@media (max-width: 640px) {
    .climate-info-btn {
        width: 32px;
        min-width: 32px;
        min-height: 32px;
        padding: 0;
        gap: .12rem;
        font-size: 10px;
    }
}

@media (max-width: 1024px) {
    .heliodon-layout {
        grid-template-columns: 1fr;
    }

    .heliodon-tools {
        border-left: 0;
        border-top: 1px solid rgba(245, 158, 11, .18);
    }
}

@media (max-width: 640px) {
    .heliodon-map-wrap,
    .heliodon-map {
        min-height: 430px;
    }

    .heliodon-tools {
        padding: 14px;
    }

    .heliodon-button-row,
    .heliodon-info {
        grid-template-columns: 1fr;
    }

    .heliodon-map-caption {
        right: 10px;
        left: 10px;
        bottom: 10px;
        max-width: none;
    }
}

/* Carte parcellaire — Valeur & décision */
.valuation-parcel-map-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 16px 0 12px;
}

.valuation-parcel-map-toolbar button {
    min-height: 34px;
    padding: 0 12px;
    border: 1px solid #d6d3d1;
    border-radius: 999px;
    background: #fff;
    color: #57534e;
    font-size: .72rem;
    font-weight: 850;
    transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}

.valuation-parcel-map-toolbar button:hover {
    border-color: #6ee7b7;
    background: #ecfdf5;
    color: #065f46;
}

.valuation-parcel-map-toolbar button.is-active {
    border-color: #047857;
    background: #047857;
    color: #fff;
}

.valuation-parcel-map-limit {
    margin-left: auto;
    color: #78716c;
    font-size: .68rem;
    font-weight: 750;
}

.valuation-parcel-map-wrap {
    position: relative;
    min-height: 410px;
    overflow: hidden;
    border: 1px solid #d6d3d1;
    border-radius: 16px;
    background: #e7e5e4;
}

.valuation-parcel-map {
    width: 100%;
    min-height: 410px;
    height: min(520px, 61vh);
    background: #e7e5e4;
}

.valuation-parcel-map .leaflet-control-attribution {
    padding: 2px 5px;
    border-radius: 4px 0 0 0;
    background: rgba(255, 255, 255, .78);
    color: #57534e;
    font-size: 8px;
}

.valuation-parcel-map .leaflet-control-zoom {
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .78);
    border-radius: 9px;
    box-shadow: 0 5px 16px rgba(28, 25, 23, .24);
}

.valuation-parcel-map .leaflet-control-zoom a {
    width: 30px;
    height: 30px;
    border-color: #e7e5e4;
    color: #292524;
    line-height: 29px;
}

.valuation-sale-label-anchor,
.valuation-address-marker-anchor {
    border: 0 !important;
    background: transparent !important;
}

.valuation-sale-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: 4px 8px;
    transform: translate(-50%, -100%);
    border: 1px solid rgba(255, 255, 255, .72);
    border-radius: 7px;
    color: #fff;
    font-size: .8rem;
    font-weight: 900;
    letter-spacing: -.015em;
    line-height: 1;
    white-space: nowrap;
    text-shadow: 0 1px 1px rgba(0, 0, 0, .35);
    box-shadow: 0 5px 15px rgba(15, 23, 42, .45);
}

.valuation-sale-label--house {
    background: rgba(28, 25, 23, .92);
}

.valuation-sale-label--terrain {
    background: rgba(120, 53, 15, .94);
}

.valuation-address-marker {
    display: block;
    width: 16px;
    height: 16px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: #047857;
    box-shadow: 0 0 0 3px rgba(4, 120, 87, .6), 0 4px 12px rgba(15, 23, 42, .36);
}

.valuation-parcel-map-empty {
    position: absolute;
    z-index: 650;
    top: 50%;
    left: 50%;
    display: flex;
    width: min(92%, 460px);
    flex-direction: column;
    gap: 5px;
    padding: 14px 16px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(254, 243, 199, .78);
    border-radius: 12px;
    background: rgba(28, 25, 23, .87);
    color: #fff;
    font-size: .76rem;
    line-height: 1.45;
    text-align: center;
    pointer-events: none;
    box-shadow: 0 8px 26px rgba(28, 25, 23, .35);
}

.valuation-parcel-map-empty span {
    color: #e7e5e4;
}

.valuation-parcel-map-empty.hidden {
    display: none;
}

.valuation-parcel-map-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 14px;
    margin-top: 12px;
    color: #57534e;
    font-size: .68rem;
    font-weight: 750;
}

.valuation-parcel-map-legend span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.valuation-parcel-map-legend-dot,
.valuation-parcel-map-legend-address {
    display: inline-block;
    width: 10px;
    height: 10px;
    border: 2px solid #fff;
    border-radius: 999px;
    box-shadow: 0 0 0 1px rgba(28, 25, 23, .28);
}

.valuation-parcel-map-legend-dot--house {
    background: #1c1917;
}

.valuation-parcel-map-legend-dot--land {
    background: #78350f;
}

.valuation-parcel-map-legend-address {
    background: #047857;
    box-shadow: 0 0 0 2px rgba(4, 120, 87, .38);
}

.valuation-parcel-map-chip {
    display: inline-flex;
    align-items: center;
    min-height: 27px;
    padding: 0 9px;
    border: 1px solid #d6d3d1;
    border-radius: 999px;
    background: #fafaf9;
    color: #57534e;
    font-size: .66rem;
    font-weight: 850;
}

.valuation-parcel-map-chip--house {
    border-color: #d6d3d1;
    background: #f5f5f4;
    color: #292524;
}

.valuation-parcel-map-chip--land {
    border-color: #fde68a;
    background: #fffbeb;
    color: #92400e;
}

.valuation-parcel-map-alert {
    margin: 13px 0 0;
    padding: 9px 11px;
    border: 1px solid #fde68a;
    border-radius: 9px;
    background: #fffbeb;
    color: #92400e;
    font-size: .72rem;
    font-weight: 700;
}

.valuation-parcel-map-info {
    margin: 13px 0 0;
    padding: 9px 11px;
    border: 1px solid #bfdbfe;
    border-radius: 9px;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: .72rem;
    font-weight: 700;
}

.valuation-sale-popup .leaflet-popup-content-wrapper {
    border-radius: 12px;
}

.valuation-sale-popup .leaflet-popup-content {
    margin: 13px 15px;
}

.valuation-sale-popup-content {
    min-width: 190px;
    color: #44403c;
    font-family: inherit;
}

.valuation-sale-popup-content h4 {
    margin: 2px 0 7px;
    color: #1c1917;
    font-size: .88rem;
    font-weight: 900;
}

.valuation-sale-popup-content p {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin: 5px 0;
    font-size: .68rem;
}

.valuation-sale-popup-content p span {
    color: #78716c;
}

.valuation-sale-popup-content p strong {
    color: #44403c;
    text-align: right;
}

.valuation-sale-popup-content .valuation-sale-popup-eyebrow {
    display: block;
    margin: 0;
    color: #047857;
    font-size: .6rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.valuation-sale-popup-content .valuation-sale-popup-price {
    display: block;
    margin: 0 0 8px;
    color: #1c1917;
    font-size: 1.25rem;
    font-weight: 950;
}

.valuation-sale-popup-content .valuation-sale-popup-note {
    display: block;
    margin: 10px 0 0;
    padding-top: 8px;
    border-top: 1px solid #e7e5e4;
    color: #78716c;
    font-size: .62rem;
    line-height: 1.4;
}

.valuation-parcel-map-fallback {
    margin: 0;
    padding: 24px;
    color: #57534e;
    font-size: .82rem;
}

@media (max-width: 640px) {
    .valuation-parcel-map-wrap,
    .valuation-parcel-map {
        min-height: 350px;
    }

    .valuation-parcel-map {
        height: 350px;
    }

    .valuation-parcel-map-limit {
        width: 100%;
        margin-left: 0;
    }

    .valuation-sale-label {
        min-height: 27px;
        padding: 4px 7px;
        font-size: .7rem;
    }
}

/* Operational health alerts for admin-only analysis blocks. */
.block-health-alerts {
    margin: 0 0 1.25rem;
    border: 1px solid #fbbf24;
    border-radius: 8px;
    background: #fffbeb;
    color: #78350f;
    overflow: hidden;
}

.block-health-alerts__head {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 1rem;
    border-bottom: 1px solid #fde68a;
    font-size: .82rem;
}

.block-health-alerts__head span { color: #92400e; }
.block-health-alerts__list { display: grid; gap: 1px; background: #fde68a; }

.block-health-alerts__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .8rem 1rem;
    background: #fffbeb;
}

.block-health-alerts__item strong { display: block; font-size: .82rem; }
.block-health-alerts__item p { margin: .2rem 0 0; font-size: .75rem; line-height: 1.35; }

.block-health-alerts__item button {
    flex: 0 0 auto;
    border: 1px solid #d97706;
    border-radius: 6px;
    background: #fff;
    color: #92400e;
    padding: .4rem .65rem;
    font-size: .75rem;
    font-weight: 700;
}

.solar-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.solar-metric { min-width: 0; border: 1px solid #e7e5e4; border-radius: 8px; padding: 1rem; }
.solar-metric p { margin: 0 0 .35rem; font-size: .68rem; font-weight: 800; letter-spacing: 0; text-transform: uppercase; color: #78716c; }
.solar-metric strong { display: block; font-size: 1.5rem; line-height: 1.1; color: #1c1917; }
.solar-metric strong span { font-size: .72rem; font-weight: 700; }
.solar-metric small { display: block; margin-top: .55rem; font-size: .72rem; line-height: 1.35; color: #57534e; }
.solar-metric--irradiation { border-color: #fed7aa; background: #fff7ed; }
.solar-metric--irradiation strong { color: #c2410c; }
.solar-metric--cloud { border-color: #bae6fd; background: #f0f9ff; }
.solar-metric--cloud strong { color: #0369a1; }
.solar-metric--unavailable { border-style: dashed; background: #f8fafc; }
.solar-metric--unavailable strong { font-size: 1rem; color: #57534e; }
.solar-source-note { margin: .8rem 0 0; color: #78716c; font-size: .7rem; }
.solar-source-note a, .solar-block-error a { color: #047857; font-weight: 700; text-decoration: underline; }
.solar-block-error { border: 1px solid #fbbf24; border-radius: 8px; background: #fffbeb; padding: 1rem; color: #78350f; font-size: .8rem; }
.solar-block-error__title { margin: 0; font-size: .9rem; font-weight: 800; }
.solar-block-error p:not(.solar-block-error__title) { margin: .35rem 0 .7rem; }

@media (max-width: 639px) {
    .solar-metrics { grid-template-columns: 1fr; }
    .block-health-alerts__head,
    .block-health-alerts__item { align-items: flex-start; flex-direction: column; }
}
