.map-page{width:min(1240px,calc(100% - 32px));margin:36px auto 80px}.map-page.wide{width:min(1480px,calc(100% - 24px))}.map-hero{text-align:center;margin-bottom:28px}.map-hero h1,.map-page-header h1,.spot-detail h1{margin:.3rem 0;font-size:clamp(2rem,5vw,3.2rem)}.map-eyebrow{color:#42b1ff;font-size:.74rem;font-weight:900;letter-spacing:.15em}.map-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;margin-bottom:22px}.map-button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border:1px solid rgba(255,255,255,.13);border-radius:11px;background:rgba(255,255,255,.05);color:#fff;text-decoration:none;font:inherit;font-weight:800;cursor:pointer}.map-button.primary{background:#168eea;border-color:#168eea}.map-button.success{background:#218d5e;border-color:#218d5e}.map-button.warning{background:#a97020;border-color:#a97020}.map-button.danger{background:#ae3f4c;border-color:#ae3f4c}.map-button.disabled{opacity:.5;cursor:not-allowed}.destination-map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.destination-map-card{overflow:hidden;border:1px solid rgba(255,255,255,.09);border-radius:18px;background:#0d1825}.destination-map-card>img,.map-placeholder{width:100%;height:190px;object-fit:cover;background:linear-gradient(135deg,#132638,#0b1420)}.map-placeholder{display:grid;place-items:center;color:#6f8294}.destination-map-content{padding:18px}.destination-map-content h2{margin:.3rem 0}.map-filters{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr)) auto auto;align-items:end;gap:10px;margin-bottom:16px;padding:14px;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:#0d1825}.map-filters label,.spot-create-form label,.map-admin-form label{display:grid;gap:6px;font-size:.82rem;font-weight:800}.map-filters input,.map-filters select,.spot-create-form input,.spot-create-form select,.spot-create-form textarea,.map-admin-form input,.map-admin-form select,.moderation-content textarea,.spot-comments textarea,.spot-report select,.spot-report textarea{width:100%;box-sizing:border-box;padding:11px;border:1px solid rgba(255,255,255,.13);border-radius:9px;background:#07111b;color:#fff;font:inherit}.interactive-map-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(330px,.7fr);gap:16px;align-items:start}.image-map-shell{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:#050a10;line-height:0;cursor:crosshair}.image-map{display:block;width:100%;height:auto;user-select:none}.map-markers{position:absolute;inset:0;pointer-events:none}.map-marker{position:absolute;z-index:4;width:26px;height:26px;padding:0;border:3px solid #fff;border-radius:50% 50% 50% 0;background:var(--marker-color,#2ea8ff);box-shadow:0 4px 18px rgba(0,0,0,.6);transform:translate(-50%,-100%) rotate(-45deg);cursor:pointer;pointer-events:auto;transition:.18s transform}.map-marker>span{display:block;width:8px;height:8px;margin:auto;border-radius:50%;background:#fff}.map-marker:hover,.map-marker.active{z-index:8;transform:translate(-50%,-100%) rotate(-45deg) scale(1.35)}.map-marker.static{pointer-events:none}.map-marker.draft{--marker-color:#ffcf44;z-index:12}.spot-list{display:grid;gap:10px;max-height:78vh;overflow:auto}.spot-list-card{display:grid;grid-template-columns:95px 1fr;gap:12px;padding:11px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:#0d1825;transition:.18s}.spot-list-card.active,.spot-list-card:hover{border-color:#299deb;transform:translateY(-1px)}.spot-list-card>img{width:95px;height:95px;object-fit:cover;border-radius:10px}.spot-list-card h2{margin:.2rem 0;font-size:1.05rem}.spot-list-card p{margin:.25rem 0;color:#95a4b4;font-size:.85rem}.spot-list-card a{color:#54b9ff}.spot-fish{color:#58c0ff;font-size:.72rem;font-weight:900;text-transform:uppercase}.spot-dialog{width:min(950px,calc(100% - 28px));max-height:90vh;padding:0;border:1px solid rgba(255,255,255,.13);border-radius:19px;background:#0b1521;color:#fff}.spot-dialog::backdrop{background:rgba(0,0,0,.8)}.spot-create-form{padding:22px}.spot-create-form>header{display:flex;justify-content:space-between;gap:18px}.dialog-close{border:0;background:none;color:#fff;font-size:2rem;cursor:pointer}.marker-help{padding:12px;border-radius:10px;background:rgba(255,190,60,.1)}.marker-help.selected{background:rgba(40,180,110,.12)}.spot-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.spot-form-grid .full{grid-column:1/-1}.map-actions,.spot-actions form{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.spot-detail{padding:22px;border:1px solid rgba(255,255,255,.09);border-radius:20px;background:#0d1825}.spot-detail>header{display:flex;justify-content:space-between;gap:24px}.spot-map-preview,.moderation-map-preview{position:relative;overflow:hidden;border-radius:15px;margin:18px 0;line-height:0}.spot-map-preview img,.moderation-map-preview img{width:100%;height:auto}.spot-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.spot-photo-grid img{width:100%;height:220px;object-fit:cover;border-radius:13px}.spot-information-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:18px}.spot-information-grid section,.spot-description,.spot-comments,.spot-report{padding:17px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(0,0,0,.12)}.spot-information-grid dl{margin:0}.spot-information-grid dl div{display:flex;justify-content:space-between;gap:18px;padding:8px 0;border-top:1px solid rgba(255,255,255,.06)}.spot-comments article{padding:12px 0;border-top:1px solid rgba(255,255,255,.08)}.spot-comments time{color:#738497;font-size:.78rem}.spot-comments form,.spot-report form{display:grid;gap:10px}.my-spots-grid,.moderation-spot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.my-spots-grid>article,.moderation-spot-card,.map-admin-panel{padding:18px;border:1px solid rgba(255,255,255,.09);border-radius:17px;background:#0d1825}.map-status{display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.08);font-size:.72rem;font-weight:900}.map-status.approved{color:#68d99f;background:rgba(35,170,101,.13)}.map-status.pending{color:#ffca65;background:rgba(225,164,50,.13)}.map-status.rejected{color:#ff8a95;background:rgba(210,65,80,.13)}.map-status.changes_requested{color:#afb3ff;background:rgba(111,117,230,.13)}.map-alert{padding:13px;border-radius:11px}.map-alert.warning{background:rgba(235,168,51,.11);border:1px solid rgba(235,168,51,.22)}.map-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:18px}.map-stats article{padding:18px;border:1px solid rgba(255,255,255,.09);border-radius:15px;background:#0d1825}.map-stats span{display:block;color:#8da0b1}.map-stats strong{font-size:2rem}.map-admin-form{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;align-items:end}.moderation-spot-card{display:grid;grid-template-columns:42% 1fr;gap:15px}.moderation-map-preview{margin:0}.map-tabs{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:17px}.map-tabs a{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.06);color:#fff;text-decoration:none}.map-tabs a.active{background:#168eea}.map-empty{padding:45px;text-align:center;border:1px dashed rgba(255,255,255,.15);border-radius:16px}@media(max-width:1050px){.destination-map-grid{grid-template-columns:repeat(2,1fr)}.map-filters{grid-template-columns:repeat(3,1fr)}.interactive-map-layout{grid-template-columns:1fr}.spot-list{grid-template-columns:repeat(2,1fr);max-height:none}.moderation-spot-card{grid-template-columns:1fr}}@media(max-width:720px){.map-page-header,.spot-detail>header{flex-direction:column}.destination-map-grid,.spot-list,.spot-form-grid,.spot-information-grid,.my-spots-grid,.moderation-spot-grid,.map-stats{grid-template-columns:1fr}.map-filters,.map-admin-form{grid-template-columns:1fr}.spot-list-card{grid-template-columns:75px 1fr}.spot-list-card>img{width:75px;height:75px}.spot-photo-grid{grid-template-columns:1fr}.spot-photo-grid img{height:auto}}


/* V25.0 — Bitmap interactive avec zoom et déplacement */
.bitmap-panel{min-width:0}.bitmap-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;padding:10px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:#0d1825}.map-control{display:grid;place-items:center;min-width:40px;height:40px;padding:0 12px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:#07111b;color:#fff;font:inherit;font-size:1.25rem;font-weight:900;cursor:pointer}.map-control:hover{border-color:#2ea8ff;background:#10263a}.map-control.text{font-size:.85rem}.bitmap-zoom,.bitmap-coordinates{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;border:1px solid rgba(255,255,255,.09);border-radius:10px;background:rgba(255,255,255,.04);color:#9bcff2;font:700 .8rem ui-monospace,SFMono-Regular,Consolas,monospace}.bitmap-coordinates{margin-left:auto}.image-map-shell{height:clamp(480px,68vh,820px);line-height:normal;cursor:grab;touch-action:none;background:#d4d4d4}.image-map-shell.is-dragging{cursor:grabbing}.image-map-stage{position:absolute;inset:0;transform-origin:0 0;will-change:transform}.image-map{width:100%;height:100%;object-fit:contain;pointer-events:none;background:#fff}.map-markers{position:absolute;inset:0}.bitmap-hint{position:absolute;left:12px;bottom:12px;z-index:20;padding:8px 10px;border-radius:9px;background:rgba(3,12,21,.82);color:#d9ecf9;font-size:.75rem;line-height:1.2;pointer-events:none;backdrop-filter:blur(6px)}.image-map-shell.is-zoomed .bitmap-hint{opacity:.65}.map-marker{transform-origin:center bottom}.map-marker.static.draft{position:absolute}.map-marker.static.draft>span{display:block}.map-marker:focus-visible{outline:3px solid #fff;outline-offset:4px}@media(max-width:720px){.bitmap-coordinates{order:2;width:100%;margin-left:0}.image-map-shell{height:470px}.bitmap-hint{font-size:.68rem}}

/* V25.1 — carte communautaire bitmap interactive */
.community-map-board--interactive {
    position: relative;
    overflow: hidden;
    min-height: 560px;
    touch-action: none;
    cursor: crosshair;
    user-select: none;
    background: #5f5f61;
}

.community-map-board--interactive.is-zoomed {
    cursor: grab;
}

.community-map-board--interactive.is-dragging {
    cursor: grabbing;
}

.community-map-stage {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    transform-origin: 0 0;
    will-change: transform;
}

.community-map-stage > img[data-community-map-image] {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    pointer-events: none;
    -webkit-user-drag: none;
}

.community-map-controls {
    position: absolute;
    z-index: 30;
    left: 16px;
    bottom: 16px;
    display: grid;
    gap: 8px;
}

.community-map-controls button {
    width: 44px;
    height: 44px;
    border: 1px solid rgba(89, 187, 255, .35);
    border-radius: 999px;
    color: #eaf7ff;
    background: rgba(5, 24, 40, .92);
    font-size: 1.25rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .28);
}

.community-map-controls button:hover,
.community-map-controls button:focus-visible {
    background: #0d80d8;
}

.community-map-coordinates,
.community-map-zoom-label {
    position: absolute;
    z-index: 30;
    top: 16px;
    padding: 8px 12px;
    border: 1px solid rgba(89, 187, 255, .28);
    border-radius: 999px;
    color: #eaf7ff;
    background: rgba(5, 24, 40, .9);
    font: 600 .78rem/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .2);
}

.community-map-coordinates { left: 16px; }
.community-map-zoom-label { right: 16px; }

.community-map-stage .community-map-marker,
.community-map-stage .community-map-draft-marker {
    z-index: 10;
}

@media (max-width: 760px) {
    .community-map-board--interactive {
        min-height: 430px;
    }

    .community-map-controls {
        left: 10px;
        bottom: 10px;
    }

    .community-map-controls button {
        width: 40px;
        height: 40px;
    }

    .community-map-coordinates,
    .community-map-zoom-label {
        top: 10px;
        padding: 7px 10px;
        font-size: .7rem;
    }

    .community-map-coordinates { left: 10px; }
    .community-map-zoom-label { right: 10px; }
}
