/* Carte collaborative Kyushu 2026
   Palette et typographie reprises des pages d'itineraire, adaptees a un outil :
   ici on scrute et on manipule, donc la hierarchie sert la lecture rapide. */

@font-face{font-family:"HerosCn";font-weight:400;font-style:normal;font-display:swap;
  src:url(/fonts/heroscn-400.woff2) format("woff2")}
@font-face{font-family:"HerosCn";font-weight:700;font-style:normal;font-display:swap;
  src:url(/fonts/heroscn-700.woff2) format("woff2")}
@font-face{font-family:"Schola";font-weight:400;font-style:normal;font-display:swap;
  src:url(/fonts/schola-400.woff2) format("woff2")}
@font-face{font-family:"Schola";font-weight:400;font-style:italic;font-display:swap;
  src:url(/fonts/schola-400i.woff2) format("woff2")}
@font-face{font-family:"Schola";font-weight:700;font-style:normal;font-display:swap;
  src:url(/fonts/schola-700.woff2) format("woff2")}

:root{
  --bg:#E2E6E4; --plate:#F4F3EE; --plate-2:#EBEAE3; --sea:#C7D2D3;
  --ink:#18201E; --ink-2:#59645F; --ink-3:#8B948F;
  --line:#C4CCC8; --line-2:#DBDFD9;
  --sulfur:#A0730A; --heat:#A2381F; --cedar:#2C574A; --slate:#37576A;
  --ok:#2C574A; --non:#A2381F;
  --ombre:0 1px 2px rgba(24,32,30,.07);
  --entete-h:60px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1413; --plate:#1A211F; --plate-2:#151B19; --sea:#090D0D;
    --ink:#E8ECE8; --ink-2:#9BA5A0; --ink-3:#6C7570;
    --line:#2B3532; --line-2:#212927;
    --sulfur:#DCA93A; --heat:#D96C4E; --cedar:#6FA88E; --slate:#7FA3B6;
    --ok:#6FA88E; --non:#D96C4E;
    --ombre:0 1px 2px rgba(0,0,0,.35);
  }
}
:root[data-theme="dark"]{
  --bg:#0F1413; --plate:#1A211F; --plate-2:#151B19; --sea:#090D0D;
  --ink:#E8ECE8; --ink-2:#9BA5A0; --ink-3:#6C7570;
  --line:#2B3532; --line-2:#212927;
  --sulfur:#DCA93A; --heat:#D96C4E; --cedar:#6FA88E; --slate:#7FA3B6;
  --ok:#6FA88E; --non:#D96C4E;
  --ombre:0 1px 2px rgba(0,0,0,.35);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"Schola",Georgia,serif; font-size:15.5px; line-height:1.55;
  -webkit-font-smoothing:antialiased; overflow:hidden;
}
h1,h2,h3{margin:0; line-height:1.15; text-wrap:balance}
button,input,select,textarea{font:inherit; color:inherit}

.eyebrow{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-weight:700;
  text-transform:uppercase; letter-spacing:.15em; font-size:.68rem;
  color:var(--ink-3); margin:0;
}
.cn{font-family:"HerosCn",Arial Narrow,sans-serif}

/* ------------------------------------------------------------------ entete */
.entete{
  height:var(--entete-h); display:flex; align-items:center; gap:18px;
  padding:0 18px; background:var(--plate); border-bottom:1px solid var(--line);
  position:relative; z-index:1200;
}
.titre h1{font-size:1.12rem; letter-spacing:-.01em}
.presence{display:flex; gap:5px; margin-left:auto; align-items:center}
.pastille{
  width:29px; height:29px; border-radius:50%; display:grid; place-items:center;
  font-family:"HerosCn",Arial Narrow,sans-serif; font-weight:700; font-size:.82rem;
  background:var(--plate-2); color:var(--ink-2); border:1px solid var(--line);
}
.pastille.ici{background:var(--cedar); color:var(--plate); border-color:var(--cedar)}
.entete-actions{display:flex; align-items:center; gap:16px}
.lien{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.85rem;
  color:var(--ink-2); text-decoration:none; border-bottom:1px solid var(--line);
}
.lien:hover{color:var(--ink); border-color:var(--ink-3)}
.moi{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.85rem; color:var(--ink-3);
  white-space:nowrap;
}
.moi b{color:var(--ink); font-weight:700}

/* -------------------------------------------------------------------- plan */
.plan{display:grid; grid-template-columns:390px 1fr; height:calc(100% - var(--entete-h))}
.panneau{
  display:flex; flex-direction:column; min-height:0;
  background:var(--plate); border-right:1px solid var(--line);
}
.zone-carte{position:relative; min-width:0}
#carte{position:absolute; inset:0; background:var(--sea)}

/* --------------------------------------------------------------- recherche */
.recherche{padding:15px 16px 12px; border-bottom:1px solid var(--line)}
.champ{display:block}
.champ>span{
  display:block; font-family:"HerosCn",Arial Narrow,sans-serif; font-weight:700;
  text-transform:uppercase; letter-spacing:.13em; font-size:.66rem;
  color:var(--ink-3); margin-bottom:5px;
}
.champ input,.champ select,.champ textarea{
  width:100%; background:var(--bg); color:var(--ink);
  border:1px solid var(--line); border-radius:2px; padding:8px 10px;
  font-size:.95rem;
}
.champ textarea{resize:vertical; font-family:inherit}
.champ input:focus-visible,.champ select:focus-visible,.champ textarea:focus-visible{
  outline:2px solid var(--sulfur); outline-offset:-1px; border-color:var(--sulfur);
}
.aide{margin:8px 0 0; font-size:.82rem; color:var(--ink-3)}

.resultats{
  margin-top:8px; border:1px solid var(--line); border-radius:2px;
  background:var(--bg); max-height:240px; overflow-y:auto;
}
.resultat{
  display:block; width:100%; text-align:left; background:none; border:0;
  border-bottom:1px solid var(--line-2); padding:8px 10px; cursor:pointer;
}
.resultat:last-child{border-bottom:0}
.resultat:hover,.resultat:focus-visible{background:var(--plate-2); outline:none}
.resultat b{display:block; font-size:.93rem}
.resultat span{
  display:block; font-family:"HerosCn",Arial Narrow,sans-serif;
  font-size:.78rem; color:var(--ink-3); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap;
}

/* ---------------------------------------------------------------- onglets */
.onglets{display:flex; border-bottom:1px solid var(--line); background:var(--plate-2)}
.onglets button{
  flex:1; background:none; border:0; border-bottom:2px solid transparent;
  padding:10px 4px 8px; cursor:pointer; color:var(--ink-3);
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.78rem;
  text-transform:uppercase; letter-spacing:.08em;
}
.onglets button b{font-variant-numeric:tabular-nums; font-weight:700}
.onglets button[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--sulfur)}
.onglets button:hover{color:var(--ink)}
.onglets button:focus-visible{outline:2px solid var(--sulfur); outline-offset:-2px}

.corps{flex:1 1 auto; overflow-y:auto; min-height:0}

/* ----------------------------------------------------------------- listes */
.ligne{
  display:flex; gap:11px; align-items:flex-start; width:100%; text-align:left;
  background:none; border:0; border-bottom:1px solid var(--line-2);
  padding:11px 16px; cursor:pointer;
}
.ligne:hover{background:var(--plate-2)}
.ligne:focus-visible{outline:2px solid var(--sulfur); outline-offset:-2px}
.ligne.actif{background:var(--plate-2); box-shadow:inset 3px 0 0 var(--sulfur)}
.ligne .sym{flex:0 0 auto; margin-top:3px}
.ligne-corps{flex:1 1 auto; min-width:0}
.ligne-nom{font-weight:700; font-size:.97rem; letter-spacing:-.005em}
.ligne-meta{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.78rem; color:var(--ink-3);
  display:flex; gap:9px; flex-wrap:wrap; margin-top:1px;
}
.ligne-rang{
  flex:0 0 auto; width:22px; height:22px; border-radius:50%; background:var(--ink);
  color:var(--plate); display:grid; place-items:center; margin-top:2px;
  font-family:"HerosCn",Arial Narrow,sans-serif; font-weight:700; font-size:.76rem;
}
.vide{padding:26px 18px; color:var(--ink-3); font-style:italic; font-size:.93rem}

/* ------------------------------------------------------------------ fiche */
.fiche{padding:16px}
.fiche-retour{
  background:none; border:0; padding:0 0 12px; cursor:pointer;
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.78rem;
  text-transform:uppercase; letter-spacing:.12em; color:var(--ink-3);
}
.fiche-retour:hover{color:var(--ink)}
.fiche h2{font-size:1.25rem; letter-spacing:-.01em; margin-bottom:3px}
.fiche-meta{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.8rem; color:var(--ink-3);
  margin:0 0 12px; display:flex; gap:8px; flex-wrap:wrap; align-items:center;
}
.badge{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.68rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.12em; padding:2px 7px 1px;
  border:1px solid currentColor; border-radius:2px;
}
.badge.propose{color:var(--ink-3)}
.badge.valide{color:var(--ok)}
.badge.ecarte{color:var(--non)}
.fiche-note{white-space:pre-wrap; margin:0 0 14px; color:var(--ink-2); font-size:.95rem}
.coords{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.8rem; color:var(--ink-3);
  margin:0 0 12px; font-variant-numeric:tabular-nums;
}

.rangee{display:flex; gap:8px; flex-wrap:wrap}
.bouton{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.82rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.08em;
  background:var(--plate-2); color:var(--ink-2);
  border:1px solid var(--line); border-radius:2px; padding:7px 13px 6px; cursor:pointer;
}
.bouton:hover{border-color:var(--ink-3); color:var(--ink)}
.bouton:focus-visible{outline:2px solid var(--sulfur); outline-offset:2px}
.bouton.primaire{background:var(--ink); color:var(--plate); border-color:var(--ink)}
.bouton.primaire:hover{opacity:.86; color:var(--plate)}
.bouton.oui{color:var(--ok); border-color:var(--ok)}
.bouton.non{color:var(--non); border-color:var(--non)}
.bouton[disabled]{opacity:.45; cursor:default}

/* ------------------------------------------------------------ commentaires */
.commentaires{border-top:1px solid var(--line-2); margin-top:16px; padding-top:12px}
.commentaire{margin-bottom:11px}
.commentaire-tete{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.76rem; color:var(--ink-3);
}
.commentaire-tete b{color:var(--ink-2); font-weight:700}
.commentaire p{margin:1px 0 0; font-size:.93rem; white-space:pre-wrap}
.alerte{
  color:var(--non); font-size:.88rem; margin:0 0 10px;
  font-family:"HerosCn",Arial Narrow,sans-serif;
}

/* ------------------------------------------------------------- itineraire */
.trace-tete{
  padding:13px 16px; border-bottom:1px solid var(--line-2);
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.82rem; color:var(--ink-2);
  display:flex; justify-content:space-between; gap:10px; align-items:baseline;
}
.trace-tete b{font-variant-numeric:tabular-nums; color:var(--ink)}
.ligne[draggable="true"]{cursor:grab}
.ligne.glisse{opacity:.4}
.ligne.cible{box-shadow:inset 0 2px 0 var(--sulfur)}
.poignee{
  flex:0 0 auto; color:var(--ink-3); font-size:1rem; line-height:1; margin-top:4px;
  letter-spacing:-2px;
}

/* ------------------------------------------------------------- marqueurs */
.marq{display:grid; place-items:center}
.marq svg{overflow:visible; filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.marq.etat-propose svg{opacity:.95}
.marq.etat-ecarte svg{opacity:.4}
.marq-num{
  position:absolute; top:-9px; right:-11px; min-width:17px; height:17px;
  border-radius:9px; background:var(--ink); color:var(--plate);
  font-family:"HerosCn",Arial Narrow,sans-serif; font-weight:700; font-size:.68rem;
  display:grid; place-items:center; padding:0 4px; border:1.5px solid var(--plate);
}
/* Leaflet peint ses bulles et ses commandes en blanc dur : on les repasse
   sur les memes jetons que le reste, sinon le thema sombre garde des pavés
   blancs au milieu de la carte. */
.leaflet-container{font-family:"Schola",Georgia,serif; background:var(--sea)}
.leaflet-popup-content{margin:11px 13px; font-size:.93rem}
.leaflet-popup-content b{display:block; margin-bottom:2px}
.leaflet-popup-content span{
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.78rem; color:var(--ink-3);
}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{
  background:var(--plate); color:var(--ink);
  border:1px solid var(--line); box-shadow:var(--ombre);
}
.leaflet-popup-content-wrapper{border-radius:2px}
.leaflet-container a.leaflet-popup-close-button{color:var(--ink-3)}
.leaflet-container a.leaflet-popup-close-button:hover{color:var(--ink)}
.leaflet-bar a,.leaflet-bar a:hover{
  background:var(--plate); color:var(--ink-2); border-bottom-color:var(--line);
}
.leaflet-bar a:hover{background:var(--plate-2); color:var(--ink)}
.leaflet-bar{border-color:var(--line); box-shadow:var(--ombre)}
.leaflet-control-attribution{
  background:var(--plate); color:var(--ink-3); font-size:.72rem;
}
.leaflet-control-attribution a{color:var(--ink-2)}

.bandeau{
  position:absolute; left:50%; bottom:20px; transform:translateX(-50%);
  background:var(--plate); color:var(--ink); border:1px solid var(--line);
  border-radius:2px; padding:9px 15px; box-shadow:var(--ombre); z-index:900;
  font-family:"HerosCn",Arial Narrow,sans-serif; font-size:.85rem; max-width:80%;
}

/* -------------------------------------------------------------- connexion */
.porte{
  position:fixed; inset:0; z-index:2000; background:var(--bg);
  display:grid; place-items:center; padding:20px;
}
.porte-carte{
  background:var(--plate); border:1px solid var(--line); border-radius:2px;
  padding:30px 30px 26px; width:min(420px,100%); box-shadow:var(--ombre);
  display:grid; gap:14px;
}
.porte-carte h1{font-size:1.7rem; letter-spacing:-.015em}
.porte-texte{margin:0; color:var(--ink-2); font-size:.95rem}

/* ---------------------------------------------------------------- mobile */
@media (max-width:820px){
  body{overflow:auto}
  .plan{grid-template-columns:1fr; height:auto}
  .panneau{border-right:0; border-bottom:1px solid var(--line); max-height:none}
  .zone-carte{height:60vh; min-height:340px}
  .corps{overflow:visible}
  .entete{flex-wrap:wrap; height:auto; padding:10px 14px; gap:10px}
  .plan{height:auto}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none !important; animation:none !important}
}
