:root {
    --bg: var(--background-default-grey);
    --panel: var(--background-alt-grey);
    --accent: var(--text-action-high-blue-france);
    --text: var(--text-default-grey);
    --muted: var(--text-mention-grey);
    --border: var(--border-default-grey);
    --no-inter: var(--success-425-625);
    --strict-inter: var(--error-425-625);
    --buffer-inter: var(--orange-terre-battue-main-645);
    --focus: var(--blue-france-main-525);
}

/* --- Accessibilité : skip link --- */
.skip-link {
    position:absolute;
    left:-999px;
    top:4px;
    z-index:10000;
    padding:8px 16px;
    background:var(--accent);
    color:var(--bg);
    font-size:14px;
    text-decoration:none;
}
.skip-link:focus {
    left:8px;
}

html,body {
    height:100%;
    font-size:14px;
}

.layout {
    height:100%;
    display:flex;
    flex-direction:column;
}

/* Header : ajustements sur la base fr-header */
.header-controls {
    display:inline-flex;
    align-items:center;
    gap:8px;
}

#projectType {
    width:auto;
    font-size:12px;
    padding:4px 2rem 4px 8px;
}

/* Auth — desktop : bouton texte dans tools-links / mobile (<62em) : icône dans navbar */
.fr-header__tools { display:flex; align-items:center; margin-left:auto }
.btn-auth { white-space:nowrap; max-width:none !important; overflow:visible !important }
.modal-login-body { max-width:28rem; margin:0 auto; padding:1.5rem }
.auth-submit-btn { margin-top:1rem }

#hiddenLayersWarning { margin-bottom:8px }

/* Callout statut — compact dans le panneau latéral */
#status.fr-callout {
    padding:.75rem 1rem;
    margin-bottom:8px;
}
#status .fr-callout__text {
    font-size:.875rem;
}

#status.status-alert .fr-callout__text {
    font-weight:600;
}

#status.status-warn {
    box-shadow:inset .25rem 0 0 0 var(--buffer-inter);
}

#status.status-error {
    box-shadow:inset .25rem 0 0 0 var(--strict-inter);
}


.main {
    flex:1;
    display:flex;
    min-height:0;
}

.map-pane {
    flex:1;
    min-height:0;
    position:relative;
    display:flex;
    flex-direction:column;
}

.map-header {
    padding:6px 10px;
    min-height:28px;
    background:var(--panel);
    border-bottom:1px solid var(--border);
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
}

#map {
    flex:1;
}

.map-footer {
    padding:6px 10px;
    min-height:28px;
    color:var(--muted);
    background:var(--panel);
    border-top:1px solid var(--border);
    font-size:12px;
    display:flex;
    align-items:center;
    justify-content:space-between;
}

.map-footer-metrics {
    flex:1;
    display:flex;
    align-items:center;
    justify-content:space-between;
    color:var(--accent);
    font-weight:600;
}

.metrics-left {
    display:flex;
    gap:6px;
}


.side-pane {
    width:560px;
    flex-shrink:0;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border-left:1px solid var(--border);
}

.panel {
    display:flex;
    flex-direction:column;
    height:100%;
    padding:10px;
}


.inter-results-banner {
    display:flex;
    gap:8px;
    margin-bottom:8px;
}

.inter-results-banner.disabled {
    display:none;
}

/* Quand les résultats sont affichés, masquer le message de statut */
#status:has(+ .inter-results-banner:not(.disabled)) {
    display:none;
}

.inter-results-card {
    flex:1;
    display:flex;
    flex-direction:column;
    align-items:center;
    padding:10px 4px;
    background:var(--bg);
    border:1px solid var(--border);
    border-top:2px solid var(--border);
}

.inter-results-value {
    font-size:22px;
    font-weight:700;
}

.inter-results-label {
    font-size:11px;
    color:var(--muted);
}

.table-wrap {
    flex:1;
    overflow-y:auto;
    min-height:0;
    padding-right:4px;
    scrollbar-width:auto;
    scrollbar-color:var(--muted) var(--panel);
}

/* État désactivé (avant analyse) */
.layers-idle .layer-group-block {
    opacity:.5;
}
.layers-idle .layer-group-header {
    cursor:default;
}

.layer-group-block {
    margin-bottom:8px;
    border:1px solid var(--border);
    background:var(--panel);
    overflow:hidden;
    transition:opacity .3s;
}

.layer-group-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:8px 10px;
    cursor:pointer;
    border-bottom:1px solid var(--border);
    background:rgba(0,0,145,.06);
}

.layer-group-name {
    font-size:11px;
    color:var(--accent);
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.5px;
}

.layer-group-badge {
    font-size:16px;
    font-weight:700;
    display:none;
    margin-left:6px;
}

.layer-group-body.collapsed {
    display:none;
}

.layer-group-block table {
    width:100%;
    border-collapse:collapse;
}

.layer-group-block td {
    padding:6px 8px;
    border-bottom:1px solid var(--border);
}

.layer-icon {
    width:24px;
    text-align:center;
    font-size:11px;
}
.state-strict-inter .layer-icon {
    font-size:18px;
}

.layer-chevron {
    width:20px;
    text-align:right;
    color:var(--muted);
}

.chevron-btn {
    all:unset;
    display:inline-block;
    cursor:pointer;
    font-size:16px;
    font-weight:bold;
    color:inherit;
    transition:transform .15s ease;
}
.layer-chevron.open .chevron-btn {
    transform:rotate(90deg);
}

.layer-row {
    cursor:pointer;
    color:var(--text-title-grey);
}

.layer-warning {
    color:var(--text);
    margin-left:4px;
    cursor:help;
    font-size:12px;
}

.layer-entities-summary {
    font-size:11px;
    color:var(--muted);
}

.detail-row td {
    padding:4px 6px 6px 48px !important;
}

.detail-content {
    color:var(--muted);
    max-height:196px;
    overflow-y:auto;
}

.detail-content .entity-name {
    display:block;
    font-style:italic;
}

.detail-columns {
    display:flex;
    gap:6px;
}

.detail-col {
    flex:1;
}

/* Couleurs */
.state-strict-inter .layer-icon, .badge-strict, .col-strict .detail-col-header,
.inter-results-banner:not(.disabled) [data-type="strict-inter"] .inter-results-value {
    color:var(--strict-inter);
}

.state-buffer-inter .layer-icon, .badge-buffer, .col-buffer .detail-col-header,
.inter-results-banner:not(.disabled) [data-type="buffer-inter"] .inter-results-value {
    color:var(--buffer-inter);
}

.state-no-inter .layer-icon,
.inter-results-banner:not(.disabled) [data-type="no-inter"] .inter-results-value {
    color:var(--no-inter);
}

.state-pending .layer-icon {
    color:var(--muted);
}

.inter-results-banner:not(.disabled) [data-type="strict-inter"] {
    border-top-color:var(--strict-inter);
}
.inter-results-banner:not(.disabled) [data-type="buffer-inter"] {
    border-top-color:var(--buffer-inter);
}
.inter-results-banner:not(.disabled) [data-type="no-inter"] {
    border-top-color:var(--no-inter);
}

/* Bouton oeil (preview couche) — base DSFR fr-btn--tertiary-no-outline */
.layer-eye {
    width: 28px;
    text-align: center;
    padding: 2px 4px !important;
}

.eye-btn { padding:2px 4px; min-height:auto; font-size:14px; opacity:.7; transition:opacity .15s; }
.eye-btn:hover { opacity:1; }
.eye-btn.eye-loading { opacity:.7; animation:eye-pulse .8s ease-in-out infinite; }
.eye-btn.eye-active { opacity:1; }
.eye-btn.eye-empty { opacity:.5; }
.eye-btn.eye-error { opacity:.8; color:var(--strict-inter); }

@keyframes eye-pulse {
    0%, 100% { opacity:.3; }
    50%      { opacity:.9; }
}

/* Tooltip visualisation Leaflet */
.preview-tooltip {
    background: rgba(255,255,255,.96);
    color: var(--text);
    border: 1px solid var(--border);
    font-size: 12px;
    padding: 4px 8px;
    border-radius: 0;
    box-shadow: 0 2px 6px rgba(0,0,0,.12);
}

/* Leaflet — neutralise le style de lien DSFR sur les contrôles */
.leaflet-control-container a[href] {
    background-image:none;
    background-size:auto;
    background-position:50% 50%;
    background-repeat:no-repeat;
    border-bottom:none;
}
a[href].leaflet-control-layers-toggle {
    background-image:url('vendor/leaflet/images/layers.png');
}

/* Leaflet — thème DSFR */
.leaflet-bar { border-radius:0!important }
.leaflet-bar a { color:var(--accent)!important; width:40px!important; height:40px!important; line-height:40px!important }
.leaflet-control-zoom a { font-size:20px!important }
.leaflet-bar a:hover { background-color:var(--accent)!important; color:#fff!important }

/* Barre dessin — icônes SVG mask-image (style cartes.gouv.fr) */
.leaflet-draw-toolbar a {
    background-image:none!important;
    font-size:0!important;
    position:relative!important;
}
.leaflet-draw-toolbar a::after {
    content:"";
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
    width:20px;
    height:20px;
    background-color:var(--accent);
    -webkit-mask-size:contain;
    mask-size:contain;
    -webkit-mask-repeat:no-repeat;
    mask-repeat:no-repeat;
    -webkit-mask-position:center;
    mask-position:center;
}
.leaflet-draw-toolbar a:hover::after {
    background-color:#fff;
}
.leaflet-draw-toolbar a.leaflet-disabled::after {
    background-color:var(--muted);
}
.leaflet-draw-draw-polygon::after {
    -webkit-mask-image:url('icons/map/polygon.svg');
    mask-image:url('icons/map/polygon.svg');
}
.leaflet-draw-draw-rectangle::after {
    -webkit-mask-image:url('icons/map/rectangle.svg');
    mask-image:url('icons/map/rectangle.svg');
}
.leaflet-draw-edit-edit::after {
    -webkit-mask-image:url('icons/map/edit.svg');
    mask-image:url('icons/map/edit.svg');
}
.leaflet-draw-edit-remove::after {
    -webkit-mask-image:url('icons/map/delete.svg');
    mask-image:url('icons/map/delete.svg');
}

/* Mesure — même pattern SVG */
.measure-control a { font-size:0!important; position:relative!important }
.measure-control a::after {
    content:"";
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
    width:20px;
    height:20px;
    background-color:var(--accent);
    -webkit-mask:url('icons/map/ruler.svg') center/contain no-repeat;
    mask:url('icons/map/ruler.svg') center/contain no-repeat;
}
.measure-control a:hover::after,
.measure-control a.active::after {
    background-color:#fff;
}
.measure-control a.active { background-color:var(--accent) }

/* Actions dessin (Annuler, Terminer) */
.leaflet-draw-actions a { background:var(--accent)!important; color:#fff!important; font-family:Marianne,arial,sans-serif!important }
.leaflet-draw-actions a:hover { background:var(--focus)!important }
.leaflet-div-icon { background:var(--focus); border:2px solid #000091; border-radius:50% }

/* Footer compact (style cartes.gouv) */
.fr-footer--compact {
    padding-top:0;
    box-shadow:inset 0 1px 0 0 var(--border-default-grey);
}
.fr-footer--compact .fr-footer__bottom {
    margin-top:0;
}
.fr-footer--compact .fr-footer__bottom-list {
    text-align:center;
}

/* Breakpoints DSFR : LG=62em, MD=48em, SM=36em */
@media (max-width:62em) {
    /* Passer en page scrollable au lieu du layout 100vh contraint */
    html, body { height:auto }
    .layout { height:auto; min-height:100vh }
    .main { flex-direction:column; flex:none }
    .map-pane { flex:none; height:60vh }
    #map { min-height:0 }
    .side-pane { width:auto; flex-shrink:1; border-left:none; border-top:1px solid var(--border); overflow:visible }
    .panel { height:auto }
    .table-wrap { overflow-y:visible; max-height:none }
    .inter-results-banner { flex-wrap:wrap }
}

@media (max-width:48em) {
    .fr-header__body-row { flex-wrap:wrap; gap:8px }
    .fr-header__service-title { font-size:.85rem }
    .map-pane { height:50vh }
    .map-header { flex-wrap:wrap; justify-content:center }
    .map-footer { flex-direction:column; gap:4px }
    .map-footer-metrics { flex-direction:column; gap:2px }
    .inter-results-value { font-size:18px }
    .inter-results-label { font-size:10px }
    .layer-group-header { padding:6px 8px }
    .layer-group-block td { padding:5px 6px }
    .detail-row td { padding:4px 6px 6px 32px!important }
    .header-controls { flex-wrap:wrap }
    #projectType { width:100% }
}
