:root{
    --bg:#0e0f12;--fg:#e4e2dd;--muted:#706e68;--accent:#c8944a;
    --accent-glow:rgba(200,148,74,.2);--card:rgba(18,20,24,.97);
    --border:rgba(200,148,74,.15);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
body{font-family:-apple-system,'DM Sans',sans-serif;background:var(--bg);color:var(--fg);height:100vh;height:100dvh;overflow:hidden;}
#map{position:fixed;inset:0;z-index:1;}
.leaflet-control-attribution{display:none!important;}

header{
    position:fixed;top:0;left:0;right:0;z-index:1000;
    padding:8px 10px;display:flex;align-items:center;gap:6px;
    background:linear-gradient(180deg,rgba(14,15,18,.97) 0%,rgba(14,15,18,.75) 80%,transparent 100%);
}
.hdr-btn{
    width:36px;height:36px;border-radius:9px;border:1px solid var(--border);
    background:var(--card);color:var(--accent);cursor:pointer;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;position:relative;
}
.hdr-btn:active{background:var(--accent);color:var(--bg);}
@media(hover:hover){.hdr-btn:hover{background:rgba(200,148,74,.12);}}
.hdr-btn.logged-in{background:var(--accent);color:var(--bg);}

#authGateOverlay{z-index:20000;}
.hdr-btn svg{pointer-events:none;}
.layers-label{overflow:visible;}
.layers-label select{position:absolute;top:0;left:0;height:100%;width:auto;min-width:100%;opacity:0;cursor:pointer;font-size:16px;}

.search-wrap{flex:1;min-width:0;position:relative;}
#searchInput{width:100%;appearance:none;-webkit-appearance:none;background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:9px;padding:7px 28px 7px 10px;font-family:inherit;font-size:16px;font-weight:500;outline:none;}
#searchInput::placeholder{color:var(--muted);}
#searchInput:focus{border-color:var(--accent);}
.search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:22px;height:22px;border:none;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer;display:none;align-items:center;justify-content:center;}
.search-clear.vis{display:flex;}
.search-clear:active{color:var(--fg);}

.results{position:fixed;top:52px;left:10px;right:10px;z-index:1001;background:var(--card);border:1px solid var(--border);border-radius:11px;overflow:hidden;display:none;max-height:calc(100dvh - 100px);overflow-y:auto;box-shadow:0 12px 40px rgba(0,0,0,.6);scrollbar-width:thin;scrollbar-color:var(--border) transparent;}
.results.open{display:block;}
.results::-webkit-scrollbar{width:3px;}
.results::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
.r-item{padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--border);}
.r-item:last-child{border-bottom:none;}
.r-item:active{background:rgba(200,148,74,.1);}
@media(hover:hover){.r-item:hover{background:rgba(200,148,74,.08);}}
.r-type{display:inline-block;font-size:.52rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);background:rgba(200,148,74,.1);padding:1px 5px;border-radius:3px;margin-bottom:3px;}
.r-name{font-size:.8rem;font-weight:600;color:var(--fg);margin-bottom:1px;}
.r-detail{font-size:.66rem;color:var(--muted);line-height:1.3;}
.r-empty{padding:18px 12px;text-align:center;font-size:.76rem;color:var(--muted);}

.toolbar{position:fixed!important;right:10px!important;top:50%!important;transform:translateY(-50%)!important;z-index:1000;background:var(--card)!important;border:1px solid var(--border)!important;border-radius:14px!important;padding:4px!important;box-shadow:0 6px 24px rgba(0,0,0,.5)!important;display:flex!important;flex-direction:column!important;align-items:center!important;gap:2px!important;}
.leaflet-control-zoom{display:none!important;}
.tb-btn{width:46px!important;height:46px!important;line-height:46px!important;font-size:1.3rem!important;font-weight:700!important;color:var(--fg)!important;background:transparent!important;border:none!important;border-radius:10px!important;text-align:center!important;text-decoration:none!important;cursor:pointer!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important; margin:0!important;}
.tb-btn:hover{background:rgba(200,148,74,.12)!important;color:var(--accent)!important;}
.tb-btn:active{background:var(--accent)!important;color:var(--bg)!important;}
.tb-btn svg{pointer-events:none;}
.tb-lvl{font-size:.56rem!important;color:var(--muted)!important;font-family:inherit!important;font-variant-numeric:tabular-nums;height:18px!important;line-height:18px!important;}
.tb-div{width:calc(100% - 12px)!important;height:1px!important;background:var(--border)!important;}

.tools-wrapper {position: relative; display: flex; align-items: center; justify-content: center; width: 46px; height: 46px;}
.sub-toolbar {position: absolute; right: calc(100% + 8px); top: 50%; transform: translateY(-50%); z-index: 1001; background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 4px; box-shadow: 0 6px 24px rgba(0,0,0,.5); display: none; flex-direction: row; align-items: center; gap: 4px;}
.sub-toolbar.visible { display: flex; }
.sub-toolbar .tb-btn { width: 40px !important; height: 40px !important; line-height: 40px !important; }
.sub-toolbar .tb-div { width: 1px !important; height: calc(100% - 12px) !important; }

.edit-toolbar{display:none;flex-direction:column;align-items:center;gap:2px;}
.edit-toolbar.visible{display:flex;}
.tb-btn.tb-on{background:var(--accent)!important;color:var(--bg)!important;}
.tb-btn:disabled{opacity:.3!important;cursor:default!important;pointer-events:none;}

.tb-btn.server-unavailable{display:none!important;}
.tb-btn.nogo-hidden{display:none!important;}

.edit-pt{width:9px;height:9px;background:var(--bg);border:2px solid var(--accent);border-radius:2px;box-shadow:0 1px 4px rgba(0,0,0,.6);}
.edit-anchor{width:13px;height:13px;background:var(--accent);border:2px solid var(--bg);border-radius:2px;box-shadow:0 1px 4px rgba(0,0,0,.6);}
.drag-pt-icon { cursor: crosshair !important; display: block; }
.drag-pt { width: 12px; height: 12px; background: var(--bg);border: 2px solid var(--accent); border-radius: 3px; box-shadow: 0 1px 6px rgba(0,0,0,.8);transition: transform 0.1s; }
.drag-pt-icon:hover .drag-pt { transform: scale(1.2); }
.edit-line-interactive { cursor: crosshair !important; }

.scale-box{position:fixed;bottom:10px;right:10px;z-index:999;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:5px 9px;font-size:.6rem;color:var(--muted);display:none;align-items:center;gap:5px;}
@media(min-width:600px){.scale-box{display:flex;}}
.scale-bar{width:40px;height:2px;background:var(--accent);border-radius:2px;position:relative;}
.scale-bar::before,.scale-bar::after{content:'';position:absolute;width:2px;height:4px;background:var(--accent);top:-1px;}
.scale-bar::before{left:0;}.scale-bar::after{right:0;}

.gpx-list{position:fixed;top:60px;left:10px;z-index:1000;width:260px;background:var(--card);border:1px solid var(--border);border-radius:11px;box-shadow:0 6px 24px rgba(0,0,0,.5);max-height:calc(100dvh - 80px);overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--border) transparent;}
.gpx-list.visible{display:block;}
.gpx-list::-webkit-scrollbar{width:3px;}
.gpx-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
.gpx-item{display:flex;align-items:center;padding:10px 10px;gap:5px;border-bottom:1px solid var(--border);cursor:pointer;transition: background 0.15s ease;}
.gpx-item:last-child{border-bottom:none;}
@media(hover:hover){.gpx-item:hover{background:rgba(200,148,74,.05);}}
.gpx-item.active-trace{background: rgba(200, 148, 74, 0.2); box-shadow: inset 3px 0 0 var(--accent);}
@media(hover:hover){.gpx-item.active-trace:hover{background: rgba(200, 148, 74, 0.2);}}
.gpx-icon-btn.tb-on{color:var(--accent);background:rgba(200,148,74,.15);}
.gpx-name{font-size:.8rem;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:3px;}
.gpx-icon-btn{width:20px;height:20px;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted);border-radius:4px;transition:color .15s,background .15s;}
.gpx-icon-btn:active{color:var(--accent);background:rgba(200,148,74,.12);}
@media(hover:hover){.gpx-icon-btn:hover{color:var(--accent);background:rgba(200,148,74,.1);}}
.gpx-color{width:20px;height:20px;border-radius:4px;cursor:pointer;border:1px solid rgba(255,255,255,0.1);transition: transform 0.1s;flex-shrink:0;}
.gpx-color:active{transform:scale(0.9);}
.gpx-tooltip-floating {position: fixed;z-index: 10005;background: var(--bg);color: var(--fg);text-align: center;border-radius: 6px;padding: 5px 10px;border: 1px solid var(--border);box-shadow: 0 4px 12px rgba(0,0,0,.5);pointer-events: none;font-size: 0.7rem;white-space: nowrap;opacity: 0;transition: opacity 0.2s;}

.color-popup{position:fixed;z-index:10000;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:6px;box-shadow:0 8px 24px rgba(0,0,0,.6);display:grid;grid-template-columns:repeat(5, 1fr);gap:4px;max-height:calc(100dvh - 20px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent;}
.color-opt{width:22px;height:22px;border-radius:4px;cursor:pointer;border:2px solid transparent;transition:border-color 0.2s, transform 0.1s;}
.color-opt:hover{transform:scale(1.1);}
.color-opt.active{border-color:var(--fg);}
.style-section{grid-column:1 / -1;display:flex;flex-direction:column;gap:4px;margin-top:4px;padding-top:6px;border-top:1px solid var(--border);}
.style-label{font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.style-row{display:flex;gap:4px;}
.style-btn{flex:1;height:26px;border-radius:5px;cursor:pointer;border:1px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;}
.style-btn:hover{border-color:var(--accent);}
.style-btn.active{border-color:var(--accent);background:rgba(200,148,74,.15);}
.style-btn svg{pointer-events:none;}
.style-btn-wide{flex:1;}

.main-pin{width:26px;height:26px;background:linear-gradient(135deg,var(--accent),#a67430);border-radius:50% 50% 50% 4px;transform:rotate(-45deg);box-shadow:0 3px 12px var(--accent-glow),0 0 0 3px rgba(200,148,74,.1);animation:drop .5s cubic-bezier(.22,1,.36,1);position:relative;}
.main-pin::after{content:'';position:absolute;inset:4px;background:var(--bg);border-radius:50%;}
@keyframes drop{from{opacity:0;transform:rotate(-45deg) translateY(-18px) scale(.5);}to{opacity:1;transform:rotate(-45deg) translateY(0) scale(1);}}
.pin-pulse{position:absolute;bottom:-2px;left:-2px;width:30px;height:30px;border-radius:50%;background:rgba(200,148,74,.18);animation:pp 2s ease-out infinite;}
@keyframes pp{0%{transform:scale(.8);opacity:1;}100%{transform:scale(2);opacity:0;}}
.search-pin{width:22px;height:22px;background:linear-gradient(135deg,#e06040,#c04828);border-radius:50% 50% 50% 3px;transform:rotate(-45deg);box-shadow:0 2px 8px rgba(224,96,64,.3),0 0 0 2px rgba(224,96,64,.1);animation:drop .4s cubic-bezier(.22,1,.36,1);position:relative;}
.search-pin::after{content:'';position:absolute;inset:4px;background:var(--bg);border-radius:50%;}

.leaflet-popup-content-wrapper{background:var(--card)!important;border:1px solid var(--border)!important;border-radius:11px!important;color:var(--fg)!important;box-shadow:0 10px 32px rgba(0,0,0,.5)!important;}
.leaflet-popup-tip{background:var(--card)!important;}
.leaflet-popup-content{margin:10px 12px!important;font-family:inherit!important;font-size:.78rem!important;line-height:1.4!important;}
.leaflet-popup-close-button{color:var(--muted)!important;}
.pp-t{font-weight:700;font-size:.84rem;color:var(--accent);margin-bottom:2px;}
.pp-d{color:rgba(228,226,221,.8);}

.toast{position:fixed;top:58px;left:50%;transform:translateX(-50%) translateY(-12px);z-index:10005;background:var(--card);border:1px solid var(--accent);border-radius:12px;padding:16px 24px;font-size:1rem;font-weight:500;color:var(--fg);opacity:0;pointer-events:none;transition:all .3s cubic-bezier(.22,1,.36,1);box-shadow:0 10px 40px rgba(0,0,0,.6);white-space:nowrap;text-align:center;max-width:90vw;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

@media(max-width:380px){header{padding:6px 6px;gap:4px;}.hdr-btn{width:32px;height:32px;}.layers-label select{font-size:14px;}#searchInput{font-size:14px;padding:6px 24px 6px 8px;}.results{top:46px;left:6px;right:6px;}.toolbar{right:6px!important;}.tb-btn{width:40px!important;height:40px!important;line-height:40px!important;}.gpx-list{left:6px;width:230px;}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}}
.leaflet-container.editing,.leaflet-container.editing .leaflet-grab,.leaflet-container.editing .leaflet-interactive { cursor: crosshair !important; }
.modal-overlay{position:fixed;inset:0;z-index:10001;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease;}
.modal-box{background:var(--card);border:1px solid var(--border);border-radius:11px;padding:20px;width:300px;max-width:calc(100vw - 40px);box-shadow:0 12px 40px rgba(0,0,0,.6);}
.modal-title{font-weight:700;font-size:.9rem;color:var(--accent);margin-bottom:12px;}
.modal-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:8px 10px;color:var(--fg);font-family:inherit;font-size:16px;outline:none;margin-bottom:16px;}
.modal-input:focus{border-color:var(--accent);}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;}
.modal-btn{padding:7px 14px;border-radius:7px;cursor:pointer;font-size:.78rem;font-family:inherit;border:1px solid var(--border);background:transparent;color:var(--fg);transition:background .15s;}
.modal-btn:hover{background:rgba(200,148,74,.1);}
.modal-btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);}
.modal-btn.primary:hover{background:rgba(200,148,74,.85);}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}

.minimap-window {position: fixed;top: 60px;right: 70px;width: 400px;height: 230px;background: var(--bg);border: 1px solid var(--accent);border-radius: 8px;box-shadow: 0 8px 24px rgba(0,0,0,.6);z-index: 1005;display: none;flex-direction: column;overflow: hidden;}
.minimap-window.visible { display: flex; }
.minimap-header {background: var(--card);padding: 6px 8px;cursor: move;display: flex;align-items: center;gap: 8px;border-bottom: 1px solid var(--border);flex-shrink: 0;}
.minimap-header .drag-handle {cursor: move;color: var(--muted);font-size: 1.2rem;line-height: 1;user-select: none;}
.minimap-header select {background: var(--bg);color: var(--fg);border: 1px solid var(--border);border-radius: 4px;font-size: 0.7rem;padding: 3px;outline: none;flex: 1;cursor: pointer;}
.minimap-map-container {flex: 1;position: relative;background: var(--bg);}
.minimap-resizer {position: absolute;bottom: 0;right: 0;width: 15px;height: 15px;cursor: nwse-resize;z-index: 1000;background: linear-gradient(135deg, transparent 50%, var(--accent) 50%);}
.minimap-window .leaflet-control-attribution { display: none !important; }

/* --- FENÊTRES FLOTTANTES (MESURE, ITINÉRAIRE, COORDONNÉES) --- */
.measure-window {position: fixed;top: 58px;left: 50%;transform: translateX(-50%) translateY(-12px);z-index: 10002;background: var(--card);border: 1px solid var(--accent);border-radius: 12px;padding: 12px 20px;display: none;flex-direction: column;align-items: center;gap: 8px;box-shadow: 0 10px 40px rgba(0,0,0,.6);max-width: 90vw;opacity: 0;transition: all .3s cubic-bezier(.22,1,.36,1);}
.measure-window.visible { opacity: 1; transform: translateX(-50%) translateY(0); display: flex; }
.measure-text { font-size: 1rem; font-weight: 500; color: var(--fg); text-align: center; white-space: nowrap; }
.measure-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.measure-btn { padding: 6px 12px; border-radius: 6px; cursor: pointer; font-size: 0.8rem; font-family: inherit; border: 1px solid var(--border); background: transparent; color: var(--fg); transition: background .15s; }
.measure-btn:hover { background: rgba(200,148,74,.1); }
.measure-btn.primary { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.measure-btn.primary:hover { background: rgba(200,148,74,.85); }

/* --- SPÉCIFIQUE ITINÉRAIRE --- */
.route-window .measure-actions { flex-wrap: wrap; justify-content: center; }
.route-window .measure-btn.primary { flex: 1; min-width: 110px; }

/* --- COORDONNÉES GPS --- */
.coord-pin {
    width: 20px;
    height: 20px;
    background: var(--accent);
    border-radius: 50%;
    border: 3px solid var(--bg);
    box-shadow: 0 0 0 2px var(--accent), 0 2px 8px rgba(0,0,0,.6);
    animation: drop .4s cubic-bezier(.22,1,.36,1);
}
.coord-window .measure-actions { justify-content: center; }
.coord-window .coord-input-group {
    display: flex;
    width: 100%;
    gap: 8px;
    margin-top: 4px;
}
.coord-window #coordTextInput {
    flex: 1;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 5px 8px;
    color: var(--fg);
    font-family: monospace;
    font-size: 0.8rem;
    outline: none;
    min-width: 0;
}
.coord-window #coordTextInput:focus { border-color: var(--accent); }
.coord-window .coord-copy-btn {
    padding: 5px 12px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--fg);
    cursor: pointer;
    font-size: 0.7rem;
    transition: background .15s;
    white-space: nowrap;
}
.coord-window .coord-copy-btn:hover { background: rgba(200,148,74,.15); }
.coord-window .coord-copy-btn.copied { background: var(--accent); color: var(--bg); border-color: var(--accent); }

/* --- Simulation : préchargement & bouton Passer --- */
.sim-preload-overlay {
    position: absolute;
    inset: 0;
    z-index: 10;
    background: rgba(10, 10, 12, 0.92);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
}
.sim-preload-bar-bg {
    width: 220px;
    height: 3px;
    background: rgba(200, 148, 74, 0.15);
    border-radius: 2px;
    overflow: hidden;
}
.sim-preload-bar-fill {
    height: 100%;
    background: var(--accent);
    width: 0%;
    transition: width 0.2s linear;
}
.sim-skip-btn {
    margin-top: 6px;
    font-size: 0.78rem;
    padding: 6px 16px;
}
.sim-skip-warning {
    margin-top: 2px;
    font-size: 0.65rem;
    color: var(--muted);
    text-align: center;
    max-width: 260px;
    line-height: 1.4;
    padding: 0 12px;
}
/* --- NOGO : panneau interdiction --- */
.nogo-forbid-icon {
    background: transparent;
    border: none;
}

.nogo-forbid {
    width: 100%;
    height: 100%;
    background: #E30613;
    border-radius: 50%;
    position: relative;
    box-shadow: 0 1px 4px rgba(0,0,0,.45);
}

.nogo-forbid::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 56%;
    height: 14%;
    background: #fff;
    border-radius: 2px;
}