*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,-apple-system,sans-serif;font-size:14px;color:#1a1a1a;background:#f5f5f5}
.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh}
.login-box{background:#fff;border:1px solid #ddd;border-radius:10px;padding:2rem;width:100%;max-width:380px}
.login-box h1{font-size:18px;font-weight:600;margin-bottom:1.5rem;text-align:center}
.login-box form{display:flex;flex-direction:column;gap:1rem}
.login-box label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:#555}
.login-box input[type=text],.login-box input[type=password]{padding:8px 10px;border:1px solid #ccc;border-radius:6px;font-size:14px;outline:none;transition:border-color .2s}
.login-box input:focus{border-color:#4a90e2}
.login-box button{padding:9px;background:#4a90e2;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer}
.login-box button:hover{background:#357abf}
.error{color:#c0392b;font-size:13px;margin-bottom:.5rem}
.app-layout{display:flex;height:100vh;overflow:hidden}
.sidebar{width:300px;min-width:260px;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;overflow-y:auto}
.sidebar-header{padding:16px;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;justify-content:space-between}
.sidebar-header h1{font-size:16px;font-weight:600}
.logout-link{font-size:12px;color:#888;text-decoration:none}
.logout-link:hover{color:#c0392b}
.sidebar-section{padding:16px;border-bottom:1px solid #f0f0f0}
.sidebar-section h2{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:10px}
.hint{font-size:12px;color:#888;margin-bottom:8px}
.hint code{background:#f4f4f4;padding:1px 4px;border-radius:3px;font-size:11px}
.file-label{display:block;padding:8px 12px;border:1px dashed #ccc;border-radius:6px;cursor:pointer;font-size:13px;color:#555;text-align:center;margin-bottom:8px;transition:border-color .2s,background .2s}
.file-label:hover{border-color:#4a90e2;background:#f0f7ff}
.file-label.has-file{border-style:solid;border-color:#27ae60;color:#27ae60;background:#f0fff4}
.btn-primary{display:block;width:100%;padding:9px;background:#4a90e2;color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}
.btn-primary:hover:not(:disabled){background:#357abf}
.btn-primary:disabled{opacity:.4;cursor:not-allowed}
.error-list{margin-top:8px;background:#fff5f5;border:1px solid #f5c6c6;border-radius:6px;padding:8px 12px;font-size:12px;color:#c0392b;max-height:120px;overflow-y:auto}
.error-list p{margin:2px 0}
#color-pickers{display:flex;flex-direction:column;gap:8px}
.color-row{display:flex;align-items:center;gap:8px}
.color-row label{flex:1;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.color-row input[type=color]{width:36px;height:28px;border:1px solid #ccc;border-radius:4px;cursor:pointer;padding:2px}
.tile-options{display:flex;flex-direction:column;gap:6px}
.tile-option{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.map-container{flex:1;position:relative}
#map{width:100%;height:100%}
#loading-overlay{position:absolute;inset:0;background:rgba(255,255,255,.7);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;z-index:9999;font-size:14px;color:#555}
.spinner{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#4a90e2;border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.leaflet-tooltip.map-tooltip{background:rgba(30,30,30,.88);color:#fff;border:none;border-radius:6px;padding:6px 10px;font-size:13px;line-height:1.5;pointer-events:none}
.leaflet-tooltip.map-tooltip::before{display:none}
.tooltip-cp{font-weight:700;font-size:14px}
.tooltip-name{color:#ccc;font-size:12px}
.tooltip-val{margin-top:2px}
.tooltip-badge{display:inline-block;padding:1px 7px;border-radius:3px;font-size:12px;font-weight:600}
#stats{font-size:13px;color:#555}
#stats strong{color:#1a1a1a}
.btn-secondary {
    display: block;
    width: 100%;
    padding: 9px;
    background: #fff;
    color: #e74c3c;
    border: 1px solid #e74c3c;
    border-radius: 6px;
    font-size: 14px;
    cursor: pointer;
    margin-top: 6px;
    transition: background .2s, color .2s;
}
.btn-secondary:hover { background: #fff5f5; }

.poi-legend {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.poi-legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: #555;
}

.poi-label-permanent {
    background: rgba(255, 255, 255, 0.85);
    border: none;
    border-radius: 3px;
    padding: 2px 6px;
    font-size: 11px;
    font-weight: 600;
    color: #1a1a1a;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.poi-label-permanent::before {
    display: none;
}

.help-link {
    font-size: 12px;
    color: #4a90e2;
    text-decoration: none;
    padding: 2px 8px;
    border: 1px solid #4a90e2;
    border-radius: 10px;
    transition: background .2s, color .2s;
}
.help-link:hover {
    background: #4a90e2;
    color: #fff;
}


/* ─── Toggle sidebar ─────────────────────────────────────────── */
#btn-toggle-sidebar {
    position: absolute;
    top: 50%;
    left: 300px;
    transform: translateY(-50%);
    z-index: 1000;
    width: 20px;
    height: 48px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-left: none;
    border-radius: 0 6px 6px 0;
    cursor: pointer;
    font-size: 10px;
    color: #888;
    padding: 0;
    transition: left .3s, background .2s;
}
#btn-toggle-sidebar:hover {
    background: #f0f7ff;
    color: #4a90e2;
}
.sidebar-hidden .sidebar {
    display: none;
}
.sidebar-hidden #btn-toggle-sidebar {
    left: 0;
    border-left: 1px solid #e0e0e0;
    border-radius: 0 6px 6px 0;
}
.sidebar-hidden #btn-toggle-sidebar::after {
    content: '▶';
}

@media print {
    .sidebar { display: none !important; }
    #btn-toggle-sidebar { display: none !important; }
    .map-container { width: 100% !important; }
    #map { height: 100vh !important; }
}
3. Dans map.js — ajoute ces lignes juste avant initMap() :
javascript// ─── Toggle sidebar ───────────────────────────────────────────
var btnToggle = document.getElementById('btn-toggle-sidebar');
if (btnToggle) {
    btnToggle.addEventListener('click', function() {
        document.querySelector('.app-layout').classList.toggle('sidebar-hidden');
        map.invalidateSize();
    });
}