:root{
  --bg:#070604;
  --panel:#14110e;
  --panel2:#211b14;
  --gold:#e99d22;
  --gold2:#ffd36d;
  --text:#f6efe4;
  --muted:#c6b7a4;
  --line:rgba(233,157,34,.30);
  --line-soft:rgba(255,255,255,.10);
  --danger:#ff735e;
  --ok:#8fe3a2;
  --shadow:0 20px 70px rgba(0,0,0,.34);
  --topbar-height:74px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#211a11 0,#080705 48%,#030302 100%);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
a{color:inherit}
.topbar{position:sticky;top:0;z-index:90;display:flex;align-items:center;justify-content:space-between;padding:12px clamp(14px,3vw,36px);background:rgba(7,6,5,.91);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;min-width:max-content}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--gold);border-radius:50%;background:linear-gradient(145deg,#2b2a28,#050505);color:var(--gold2);font-weight:950;font-size:13px;box-shadow:0 0 0 4px rgba(233,157,34,.06)}.brand strong{display:block;line-height:1}.brand small{display:block;color:var(--gold);text-transform:uppercase;font-size:11px;letter-spacing:.14em;margin-top:3px}.nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.nav a{color:var(--text);text-decoration:none;padding:9px 10px;border-radius:12px;font-size:14px;border:1px solid transparent}.nav a:hover,.nav a.active{background:rgba(233,157,34,.15);border-color:rgba(233,157,34,.25);color:var(--gold2)}.menu-toggle{display:none;background:transparent;color:var(--text);border:1px solid var(--line);border-radius:12px;padding:8px 11px;font-size:20px}.page-shell{width:min(1180px,94vw);margin:0 auto;padding:28px 0 38px}.footer{display:flex;justify-content:space-between;gap:12px;width:min(1180px,94vw);margin:0 auto;padding:18px 0 30px;color:#918577;font-size:12px;border-top:1px solid rgba(255,255,255,.06)}
.auth-bg{background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.72)),url('../img/cover-desktop.jpg') center/cover fixed}.auth-card{width:min(520px,94vw);margin:8vh auto;padding:28px;border:1px solid var(--line);border-radius:26px;background:rgba(13,11,8,.88);box-shadow:var(--shadow);backdrop-filter:blur(9px)}.eyebrow{color:var(--gold);text-transform:uppercase;letter-spacing:.12em;font-size:13px;font-weight:900}.auth-card h1,.page-title h1,.hero-panel h1{font-size:clamp(31px,5vw,58px);line-height:.95;margin:8px 0 12px;font-family:Georgia,serif;text-transform:uppercase;letter-spacing:-.03em}.auth-card p,.page-title p,.hero-panel p,.data-card p,.panel-card p{color:var(--muted);line-height:1.58}.page-title{margin-bottom:18px}.page-title.with-actions{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}.page-title.form-title{max-width:860px}.form-stack,.form-grid{display:grid;gap:15px}.form-grid{grid-template-columns:repeat(2,1fr)}.span-2{grid-column:1/-1}label{display:grid;gap:7px;font-weight:800;color:#f6eddc}input,textarea,select{width:100%;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:#0b0a08;color:var(--text);padding:13px 14px;font:inherit;min-height:48px;outline:none}input:focus,textarea:focus,select:focus{border-color:rgba(255,211,109,.75);box-shadow:0 0 0 4px rgba(233,157,34,.12)}textarea{resize:vertical}.check-line{display:flex;align-items:center;gap:10px;padding:10px 0}.check-line input{width:auto;min-height:0}.file-label small{color:var(--muted);font-weight:500}.btn-primary-wide,.btn-secondary-wide,.ghost-btn,.tiny-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 17px;border-radius:14px;text-decoration:none;font-weight:950;border:1px solid var(--line);cursor:pointer;transition:transform .15s ease, filter .15s ease, background .15s ease}.btn-primary-wide:hover,.btn-secondary-wide:hover,.ghost-btn:hover{transform:translateY(-1px);filter:brightness(1.05)}.btn-primary-wide{background:linear-gradient(180deg,var(--gold2),#c67614);color:#180f05;border-color:#ffe5a2}.btn-secondary-wide{background:#24201a;color:var(--text)}.ghost-btn,.tiny-btn{background:rgba(13,11,8,.72);color:var(--text)}.tiny-btn{min-height:32px;font-size:12px}.muted-link{font-size:14px}.muted-link a{color:var(--gold2)}.flash-wrap{display:grid;gap:8px;margin-bottom:14px}.flash{padding:12px 14px;border-radius:16px;background:#1b1813;border:1px solid var(--line)}.flash.success{border-color:rgba(143,227,162,.5)}.flash.error{border-color:rgba(255,115,94,.6)}.flash.warning{border-color:rgba(255,211,109,.6)}
.hero-panel,.panel-card,.data-card{background:linear-gradient(180deg,rgba(30,26,20,.96),rgba(14,12,10,.96));border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow)}.hero-panel{display:flex;justify-content:space-between;gap:22px;align-items:center;padding:28px;margin-bottom:18px}.hero-actions,.action-row{display:flex;gap:10px;flex-wrap:wrap}.vertical-mobile{align-items:stretch}.field-command-grid{display:grid;grid-template-columns:1.15fr repeat(3,1fr);gap:14px;margin:18px 0}.command-card{display:grid;gap:6px;align-content:start;min-height:132px;padding:18px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(23,19,14,.96),rgba(9,8,6,.96));text-decoration:none;color:var(--text);box-shadow:0 14px 42px rgba(0,0,0,.24)}.command-card.primary{background:linear-gradient(180deg,rgba(255,211,109,.16),rgba(17,13,8,.96));border-color:rgba(255,211,109,.55)}.command-card span{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:rgba(233,157,34,.14);color:var(--gold2);font-size:23px}.command-card strong{font-size:18px}.command-card small{color:var(--muted);line-height:1.35}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.stat-card{padding:20px;border-radius:22px;background:#14110e;border:1px solid var(--line);text-decoration:none;color:var(--text);box-shadow:0 14px 42px rgba(0,0,0,.18)}.stat-card span{display:block;color:var(--gold2);font-size:40px;font-weight:950;line-height:1}.stat-card strong{display:block;margin-top:7px;font-size:13px;text-transform:uppercase;letter-spacing:.06em}.module-grid{display:grid;gap:18px;margin:18px 0}.module-grid.two{grid-template-columns:repeat(2,1fr)}.panel-card{padding:22px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head h2{margin:0}.panel-head a{color:var(--gold2)}.list-cards{display:grid;gap:10px}.mini-card{padding:13px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(0,0,0,.24)}.mini-card strong,.mini-card span,.mini-card small{display:block}.mini-card span,.mini-card small{color:var(--muted);margin-top:3px}.rich-mini{border-left:3px solid rgba(233,157,34,.55)}.empty{color:var(--muted);padding:16px;border:1px dashed rgba(255,255,255,.17);border-radius:16px}.badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;background:rgba(143,227,162,.12);color:var(--ok);font-size:12px;font-weight:900}.badge.warn{background:rgba(255,115,94,.13);color:#ffb0a5}.badge.off{background:rgba(255,255,255,.09);color:var(--muted)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.data-card{padding:18px}.card-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.card-top strong{font-size:20px;color:var(--gold2)}.data-card h2{margin:10px 0 12px;font-family:Georgia,serif}.note-card{border-left:3px solid var(--gold);padding-left:12px;background:rgba(0,0,0,.16);border-radius:0 12px 12px 0}.field-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0}.field-facts span{display:grid;gap:2px;padding:10px;border:1px solid var(--line-soft);border-radius:14px;background:rgba(0,0,0,.17);color:var(--muted);line-height:1.3}.field-facts b{color:var(--gold2);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.today-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.today-stats div{padding:14px;border:1px solid var(--line-soft);border-radius:16px;background:rgba(0,0,0,.18)}.today-stats strong{display:block;color:var(--gold2);font-size:30px;line-height:1}.today-stats span{color:var(--muted);font-size:13px}.field-tip{padding:12px;border-radius:16px;background:rgba(233,157,34,.10);border:1px solid rgba(233,157,34,.20)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:12px;border-bottom:1px solid rgba(255,255,255,.08);text-align:left;vertical-align:top}th{color:var(--gold2);font-size:13px;text-transform:uppercase;letter-spacing:.06em}.thumb{width:100%;height:190px;object-fit:cover;border-radius:18px;margin-bottom:12px;border:1px solid rgba(255,255,255,.1)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.photo-card{margin:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;background:#13100d;box-shadow:0 16px 50px rgba(0,0,0,.22)}.photo-card img{width:100%;height:245px;object-fit:cover;display:block}.photo-card figcaption{padding:13px;color:var(--text)}.photo-card small{display:block;color:var(--muted);margin-top:4px}.form-panel{max-width:880px}.compact-form{max-width:680px}.form-actions{display:flex;gap:10px;flex-wrap:wrap}.terrain-form{position:relative}.export-card{display:grid;gap:12px}.export-card .btn-primary-wide{margin-top:auto}
.app-body.has-page-bg{background-image:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,var(--page-bg-opacity,.48))),var(--page-bg-desktop);background-size:cover;background-position:var(--page-bg-position,center center);background-repeat:no-repeat;background-attachment:fixed}.app-body.has-page-bg .hero-panel,.app-body.has-page-bg .panel-card,.app-body.has-page-bg .data-card,.app-body.has-page-bg .auth-card,.app-body.has-page-bg .command-card,.app-body.has-page-bg .stat-card{background:linear-gradient(180deg,rgba(30,26,20,.88),rgba(14,12,10,.91));backdrop-filter:blur(6px)}.admin-menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:18px}.admin-tile{display:block;padding:22px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,rgba(30,26,20,.94),rgba(14,12,10,.94));color:var(--text);text-decoration:none;box-shadow:var(--shadow)}.admin-tile strong{display:block;font-size:20px;color:var(--gold2);margin-bottom:8px}.admin-tile span{color:var(--muted);line-height:1.45}.background-admin-grid{display:grid;gap:18px}.background-card{display:grid;gap:14px;padding:18px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,rgba(30,26,20,.94),rgba(14,12,10,.94))}.background-card h2{margin:0;color:var(--gold2);font-family:Georgia,serif}.background-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.background-preview{min-height:150px;border:1px dashed rgba(255,255,255,.18);border-radius:16px;background:#090806 center/cover no-repeat;display:flex;align-items:flex-end;padding:10px;color:rgba(255,255,255,.82);font-size:12px;text-shadow:0 2px 8px #000}.background-preview.empty{align-items:center;justify-content:center;color:var(--muted);text-shadow:none}.form-inline-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.terrain-dock{display:none}
@media(max-width:980px){.nav a{font-size:13px;padding:8px 8px}.field-command-grid{grid-template-columns:repeat(2,1fr)}.module-grid.two{grid-template-columns:1fr}}
@media(max-width:820px){:root{--topbar-height:66px}.auth-bg{background-image:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.75)),url('../img/cover-mobile.jpg')}.menu-toggle{display:block}.nav{display:none;position:absolute;top:65px;left:0;right:0;flex-direction:column;align-items:stretch;padding:12px;background:rgba(8,7,5,.98);border-bottom:1px solid var(--line)}.nav.open{display:flex}.nav a{padding:13px 22px;font-size:15px}.hero-panel,.page-title.with-actions{display:grid}.hero-actions .btn-primary-wide,.hero-actions .btn-secondary-wide{width:100%}.stat-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.footer{display:grid;padding-bottom:94px}.auth-card{margin:4vh auto}.page-shell{padding-top:18px;padding-bottom:110px}.app-body.has-page-bg{background-image:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,var(--page-bg-opacity,.55))),var(--page-bg-mobile);background-attachment:scroll}.background-preview-grid{grid-template-columns:1fr}.terrain-dock{position:fixed;z-index:40;left:10px;right:10px;bottom:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px;border:1px solid rgba(255,211,109,.28);border-radius:22px;background:rgba(7,6,5,.88);backdrop-filter:blur(14px);box-shadow:0 15px 45px rgba(0,0,0,.45)}.terrain-dock a{display:grid;place-items:center;gap:2px;text-decoration:none;color:var(--text);font-size:11px;font-weight:900;padding:8px 4px;border-radius:16px;background:rgba(255,255,255,.06)}.terrain-dock span{color:var(--gold2);font-size:17px;line-height:1}.field-facts{grid-template-columns:1fr}.today-stats{grid-template-columns:1fr}.card-top{align-items:flex-start}.photo-card img{height:220px}}
@media(max-width:560px){:root{--topbar-height:58px}.field-command-grid{grid-template-columns:1fr}.command-card{min-height:auto;grid-template-columns:auto 1fr;align-items:center}.command-card small{grid-column:2}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:15px}.stat-card span{font-size:34px}.page-title h1,.hero-panel h1{font-size:38px}.page-title.with-actions .action-row,.page-title.with-actions .btn-primary-wide,.page-title.with-actions .ghost-btn{width:100%}.action-row a{flex:1 1 100%}.topbar{padding:10px 12px}.brand strong{font-size:14px}.brand-mark{width:36px;height:36px}.auth-card{padding:22px}.panel-card,.data-card,.hero-panel{border-radius:22px;padding:18px}.cards-grid,.photo-grid{grid-template-columns:1fr}input,textarea,select{font-size:16px}}

/* V1D — Boutons modifier / supprimer */
.card-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  margin-top:13px;
  padding-top:11px;
  border-top:1px solid rgba(255,255,255,.10);
}
.card-actions form{margin:0}
.edit-btn,
.delete-btn,
.tiny-btn{
  appearance:none;
  border:0;
  cursor:pointer;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-height:34px;
  padding:7px 11px;
  border-radius:999px;
  font-weight:900;
  font-size:12px;
  line-height:1;
  letter-spacing:.01em;
}
.edit-btn{
  color:#1d1607;
  background:linear-gradient(135deg,var(--gold2),var(--gold));
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.delete-btn{
  color:#fff;
  background:linear-gradient(135deg,#9b1c1c,#d33a2c);
  box-shadow:0 8px 22px rgba(80,0,0,.38);
}
.delete-btn:hover{filter:brightness(1.06)}
.edit-btn:hover{filter:brightness(1.05)}
.photo-actions{
  padding:12px;
  margin:0;
  border-top:1px solid rgba(255,255,255,.10);
  justify-content:center;
}
.current-photo-preview{
  display:grid;
  gap:8px;
  padding:12px;
  border:1px solid rgba(255,211,109,.20);
  border-radius:18px;
  background:rgba(0,0,0,.18);
}
.current-photo-preview span{
  color:var(--muted);
  font-weight:800;
  font-size:13px;
}
.current-photo-preview img{
  max-width:min(420px,100%);
  max-height:260px;
  object-fit:cover;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.12);
}
.mini-card .card-actions{padding-top:10px;margin-top:10px}
@media(max-width:560px){
  .card-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
    margin-top:12px;
    padding-top:10px;
  }
  .card-actions form,
  .card-actions button,
  .card-actions a{width:100%}
  .edit-btn,
  .delete-btn,
  .tiny-btn{
    min-height:36px;
    padding:7px 8px;
    font-size:12px;
    gap:4px;
  }
  .photo-actions{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:360px){
  .edit-btn,
  .delete-btn,
  .tiny-btn{
    font-size:11px;
    padding:6px 6px;
  }
}

/* V1D3 — Note réglementaire sur la page Saisons */
.season-regulation-note{
  display:grid;
  gap:5px;
  max-width:860px;
  margin-top:14px;
  padding:13px 15px;
  border:1px solid rgba(255,211,109,.28);
  border-radius:18px;
  background:rgba(7,6,5,.52);
  color:var(--muted);
  line-height:1.45;
  backdrop-filter:blur(6px);
}
.season-regulation-note strong{
  color:var(--gold2);
  font-weight:950;
}
.season-regulation-note a{
  color:var(--gold2);
  font-weight:950;
  text-decoration:underline;
  text-underline-offset:3px;
}
.season-regulation-note a:hover{filter:brightness(1.12)}
@media(max-width:560px){
  .season-regulation-note{
    font-size:14px;
    padding:12px;
    border-radius:16px;
  }
}

/* V1E — Rappels et suivi des stations */
.tracking-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin:0 0 18px;
}
.tracking-summary-card{
  display:grid;
  gap:4px;
  padding:14px 16px;
  border-radius:20px;
  text-decoration:none;
  border:1px solid rgba(255,211,109,.20);
  background:rgba(7,6,5,.54);
  color:var(--text);
  box-shadow:0 12px 28px rgba(0,0,0,.22);
  backdrop-filter:blur(7px);
}
.tracking-summary-card strong{
  font-size:26px;
  line-height:1;
  color:var(--gold2);
}
.tracking-summary-card span{
  color:var(--muted);
  font-weight:850;
  font-size:13px;
}
.tracking-summary-card.danger{border-color:rgba(211,58,44,.55)}
.tracking-summary-card.danger strong{color:#ffb0a8}
.tracking-summary-card.warn{border-color:rgba(255,211,109,.55)}
.tracking-summary-card.muted{opacity:.86}
.filter-notice{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
}
.compact-panel{padding:12px 14px}
.ghost-btn.small{min-height:32px;padding:7px 11px;font-size:12px}
.tracking-line{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:8px 0 4px;
}
.tracking-line small{color:var(--muted);font-weight:800}
.tracking-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  padding:5px 10px;
  border-radius:999px;
  font-weight:950;
  font-size:12px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.08);
  color:var(--text);
}
.tracking-pill.ok{background:rgba(76,175,80,.18);border-color:rgba(76,175,80,.35);color:#c8f6c9}
.tracking-pill.soon{background:rgba(255,211,109,.18);border-color:rgba(255,211,109,.45);color:var(--gold2)}
.tracking-pill.warn{background:rgba(255,160,0,.20);border-color:rgba(255,190,80,.55);color:#ffd28a}
.tracking-pill.danger{background:rgba(211,58,44,.22);border-color:rgba(211,58,44,.60);color:#ffb0a8}
.tracking-pill.muted{background:rgba(255,255,255,.06);color:var(--muted)}
.station-card.tracking-danger{border-color:rgba(211,58,44,.45)}
.station-card.tracking-warn{border-color:rgba(255,190,80,.45)}
.station-card.tracking-soon{border-color:rgba(255,211,109,.35)}
.check-btn{
  appearance:none;
  border:0;
  cursor:pointer;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-height:34px;
  padding:7px 11px;
  border-radius:999px;
  font-weight:900;
  font-size:12px;
  line-height:1;
  letter-spacing:.01em;
  color:#f8ffe8;
  background:linear-gradient(135deg,#2c6b3f,#4b9a5c);
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.check-btn:hover{filter:brightness(1.07)}
.station-actions{grid-template-columns:auto auto auto}
.form-help-box{
  padding:11px 13px;
  border-radius:16px;
  border:1px solid rgba(255,211,109,.18);
  background:rgba(255,211,109,.08);
  color:var(--muted);
  font-size:14px;
  font-weight:700;
  line-height:1.45;
}
.alert-stat{
  border-color:rgba(211,58,44,.45)!important;
}
.alert-stat span{color:#ffb0a8!important}
.tracking-mini.danger{border-left:4px solid #d33a2c}
.tracking-mini.warn{border-left:4px solid #f1a51d}
.tracking-mini.soon{border-left:4px solid var(--gold2)}
.stations-watch-card .ghost-btn{margin-top:12px}
.badge.warn{
  background:rgba(255,160,0,.18);
  border-color:rgba(255,190,80,.45);
  color:#ffd28a;
}
@media(max-width:760px){
  .tracking-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:560px){
  .tracking-summary-grid{gap:8px;margin-bottom:14px;}
  .tracking-summary-card{padding:11px 12px;border-radius:17px;}
  .tracking-summary-card strong{font-size:22px;}
  .tracking-line{align-items:flex-start;flex-direction:column;gap:5px;}
  .station-actions{grid-template-columns:repeat(3,minmax(0,1fr));}
  .station-actions .check-btn,
  .station-actions .edit-btn,
  .station-actions .delete-btn{
    min-height:34px;
    padding:7px 6px;
    font-size:11px;
    gap:3px;
  }
  .filter-notice{align-items:stretch;flex-direction:column;}
}
@media(max-width:380px){
  .station-actions{grid-template-columns:1fr;}
  .station-actions .check-btn,
  .station-actions .edit-btn,
  .station-actions .delete-btn{font-size:12px;}
}
.compact-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}

/* V1F — Recherche, filtres et consultation rapide */
.filter-panel{
  margin:0 0 18px;
}
.filter-panel .panel-head{
  margin-bottom:12px;
}
.filter-panel h2{
  margin:0;
  color:var(--gold2);
  font-family:Georgia,serif;
}
.filter-form{
  display:grid;
  grid-template-columns:repeat(4,minmax(150px,1fr));
  gap:12px;
  align-items:end;
}
.filter-form label{
  display:grid;
  gap:6px;
  color:var(--muted);
  font-weight:900;
  font-size:13px;
}
.filter-form .filter-wide{
  grid-column:span 2;
}
.filter-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.filter-submit{
  min-height:42px;
  padding:10px 16px;
}
.filter-meta{
  margin-top:10px;
  color:var(--muted);
  font-weight:800;
  font-size:13px;
}
.quick-search-card{
  margin-bottom:18px;
}
.quick-filter-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
.quick-filter-grid .ghost-btn{
  justify-content:center;
  text-align:center;
}
@media(max-width:980px){
  .filter-form{grid-template-columns:repeat(2,minmax(0,1fr));}
  .filter-form .filter-wide{grid-column:span 2;}
  .quick-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:560px){
  .filter-form{grid-template-columns:1fr;gap:10px;}
  .filter-form .filter-wide{grid-column:auto;}
  .filter-actions{display:grid;grid-template-columns:1fr 1fr;}
  .filter-actions .btn-primary-wide,
  .filter-actions .ghost-btn{width:100%;}
  .filter-panel{padding:15px;}
  .quick-filter-grid{grid-template-columns:1fr;}
}


/* V1G — Rapports imprimables */
.report-builder{max-width:820px}
.report-info-grid{margin-top:18px}
.featured-export{border-color:rgba(255,211,109,.42);background:linear-gradient(145deg,rgba(233,157,34,.15),rgba(20,17,14,.92))}
.report-body{background:#1a1510;color:#1f1a14;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.report-toolbar{position:sticky;top:0;z-index:50;display:flex;justify-content:center;gap:12px;padding:12px;background:rgba(7,6,5,.94);border-bottom:1px solid rgba(233,157,34,.28);backdrop-filter:blur(10px)}
.report-page{width:min(1120px,96vw);margin:24px auto 44px;background:#fffaf1;color:#1f1a14;border-radius:18px;box-shadow:0 25px 90px rgba(0,0,0,.45);overflow:hidden}
.report-cover{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:34px 38px;background:linear-gradient(135deg,#24180d,#4a2b10 52%,#0e0b08);color:#fff4df;border-bottom:5px solid #d69b3a}
.report-cover h1{font-family:Georgia,serif;text-transform:uppercase;font-size:clamp(34px,5vw,62px);line-height:.95;margin:8px 0 10px}
.report-cover p{margin:0;color:#f7dba4;font-weight:800}
.report-meta{display:grid;gap:5px;text-align:right;color:#f3e5ca}.report-meta strong{font-size:18px}.report-meta span{font-size:13px;color:#d8c3a6}
.report-section{padding:26px 38px;border-bottom:1px solid #eadcc7;break-inside:avoid}
.report-section h2{font-family:Georgia,serif;font-size:27px;margin:0 0 14px;color:#3b2510;text-transform:uppercase;letter-spacing:-.02em}
.report-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.report-summary-grid div{padding:16px;border:1px solid #ead8bd;border-radius:14px;background:#fff3df}
.report-summary-grid strong{display:block;font-size:28px;color:#5b330f}
.report-summary-grid span{display:block;font-weight:850;font-size:12px;color:#6d5c49;text-transform:uppercase;letter-spacing:.06em}
.report-territory-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.report-territory-grid div{padding:14px;border:1px solid #ead8bd;border-radius:14px;background:#fff8ec}
.report-territory-grid span{display:block;font-weight:850;font-size:11px;color:#6d5c49;text-transform:uppercase;letter-spacing:.06em}
.report-territory-grid strong{display:block;margin-top:4px;color:#3b2510;font-size:15px}
.small-note{font-size:12px;margin-top:12px}
.report-table{width:100%;border-collapse:collapse;font-size:13px}
.report-table th{background:#3a2615;color:#fff1db;text-align:left}
.report-table th,.report-table td{border:1px solid #e4d0b4;padding:8px 9px;vertical-align:top}
.report-table td{background:#fffdf8}.report-table tr:nth-child(even) td{background:#fff4e5}
.report-empty{padding:14px 16px;border:1px dashed #c9b18d;border-radius:12px;background:#fff6e8;color:#6b5a45}
.report-photo-list{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.report-photo-list article{display:grid;grid-template-columns:112px 1fr;gap:12px;align-items:center;border:1px solid #e4d0b4;border-radius:14px;padding:10px;background:#fff8ec;break-inside:avoid}
.report-photo-list img{width:112px;height:84px;object-fit:cover;border-radius:10px;border:1px solid #d8c19f}
.report-photo-list strong{display:block;color:#3a2615}.report-photo-list span{display:block;color:#6d5c49;font-size:12px;margin-top:5px}
.report-footer{padding:18px 38px;background:#f3e3c8;color:#5d4b37;font-size:12px}

@media (max-width:760px){
  .report-toolbar{flex-direction:column}
  .report-page{width:100vw;margin:0;border-radius:0}
  .report-cover{display:block;padding:26px 20px}.report-meta{text-align:left;margin-top:16px}
  .report-section{padding:22px 18px;overflow-x:auto}
  .report-summary-grid{grid-template-columns:repeat(2,1fr)}
  .report-territory-grid{grid-template-columns:1fr}
  .report-photo-list{grid-template-columns:1fr}
}

@media print{
  @page{size:letter;margin:12mm}
  body.report-body{background:white;color:#111}
  .no-print,.topbar,.terrain-dock,.footer{display:none!important}
  .report-page{width:auto;margin:0;box-shadow:none;border-radius:0;overflow:visible}
  .report-cover{background:#fff!important;color:#111!important;border-bottom:2px solid #111;padding:0 0 12px}
  .report-cover p,.report-meta,.report-meta span{color:#333!important}
  .report-section{padding:14px 0;border-bottom:1px solid #ccc;page-break-inside:avoid}
  .report-section h2{color:#111;font-size:20px}
  .report-summary-grid{grid-template-columns:repeat(4,1fr);gap:6px}
  .report-territory-grid{grid-template-columns:repeat(5,1fr);gap:6px}
  .report-summary-grid div{background:#fff;border-color:#aaa;padding:8px}
  .report-summary-grid strong{color:#111;font-size:20px}
  .report-table{font-size:10.5px}
  .report-table th{background:#eee!important;color:#111!important}
  .report-table th,.report-table td{border-color:#bbb;padding:5px}
  .report-table td,.report-table tr:nth-child(even) td{background:#fff!important}
  .report-photo-list{grid-template-columns:repeat(2,1fr);gap:8px}
  .report-photo-list article{background:#fff;border-color:#bbb;padding:6px}
  .report-photo-list img{width:90px;height:68px}
  .report-footer{background:#fff;padding:10px 0 0;border-top:1px solid #ccc}
}

/* V1H — Coordonnées GPS privées des installations */
.gps-box{
  display:grid;
  gap:14px;
  padding:16px;
  border:1px solid rgba(255,211,109,.28);
  border-radius:22px;
  background:rgba(7,6,5,.48);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);
}
.gps-box-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
}
.gps-box-head strong{
  display:block;
  color:var(--gold2);
  font-size:17px;
}
.gps-box-head p,
.gps-privacy-note{
  margin:5px 0 0;
  color:var(--muted);
  font-size:14px;
  line-height:1.45;
}
.gps-btn{
  appearance:none;
  border:1px solid rgba(255,211,109,.55);
  border-radius:999px;
  min-height:40px;
  padding:9px 13px;
  color:#1d1607;
  background:linear-gradient(135deg,var(--gold2),var(--gold));
  font-weight:950;
  cursor:pointer;
  white-space:nowrap;
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.gps-btn:disabled{opacity:.62;cursor:wait;filter:grayscale(.1)}
.gps-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.gps-actions{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.gps-status{
  color:var(--muted);
  font-size:13px;
  font-weight:750;
  line-height:1.35;
}
.gps-status[data-state="ok"]{color:#c8f6c9}
.gps-status[data-state="error"]{color:#ffb0a8}
.gps-status[data-state="loading"]{color:var(--gold2)}
.gps-privacy-note{
  padding-top:10px;
  border-top:1px solid rgba(255,255,255,.09);
  font-weight:850;
}
.gps-card-line{
  display:grid;
  gap:4px;
  margin-top:12px;
  padding:12px;
  border:1px solid rgba(255,211,109,.22);
  border-radius:18px;
  background:rgba(0,0,0,.20);
}
.gps-card-line strong{color:var(--gold2)}
.gps-card-line span,
.gps-card-line small{color:var(--muted);font-weight:800;line-height:1.35;overflow-wrap:anywhere}
.gps-copy-btn{width:max-content;margin-top:4px}
@media(max-width:900px){
  .gps-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .gps-box-head{flex-direction:column;}
  .gps-btn{width:100%;}
}
@media(max-width:560px){
  .gps-box{padding:13px;border-radius:18px;}
  .gps-grid{grid-template-columns:1fr;gap:10px;}
  .gps-actions{align-items:stretch;flex-direction:column;}
  .gps-actions .ghost-btn{width:100%;}
  .gps-copy-btn{width:100%;}
}


/* V1I — Exports GPS */
.export-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}
.export-actions .ghost-btn{
  flex:1 1 120px;
  min-width:120px;
}
@media(max-width:560px){
  .export-actions{display:grid;grid-template-columns:1fr;}
  .export-actions .ghost-btn{width:100%;}
}


/* V1I2 — Aperçu des icônes GPS style Carnet */
.map-icon-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 0.85rem;
  margin-top: 1rem;
}
.map-icon-grid div {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 0.35rem;
  min-height: 120px;
  padding: 0.75rem;
  border-radius: 18px;
  background: rgba(0, 0, 0, 0.30);
  box-shadow: inset 0 0 0 1px rgba(218, 161, 55, 0.20);
}
.map-icon-grid img {
  width: 64px;
  height: 64px;
  object-fit: contain;
  filter: drop-shadow(0 8px 10px rgba(0,0,0,.35));
}
.map-icon-grid span {
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.03em;
  color: #f0dfbd;
}
@media (max-width: 680px) {
  .map-icon-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .map-icon-grid img { width: 56px; height: 56px; }
}

/* V1J — Tableau de bord compact / portable */
.dashboard-compact{
  display:grid;
  gap:14px;
}
.dashboard-compact .hero-panel{
  margin-bottom:0;
}
.dashboard-compact .terrain-hero{
  min-height:0;
  padding:20px 26px;
  align-items:center;
  border-radius:24px;
}
.dashboard-compact .terrain-hero h1{
  font-size:clamp(34px,4.2vw,54px);
  line-height:.92;
  margin:6px 0 8px;
}
.dashboard-compact .terrain-hero p{
  margin:0;
}
.dashboard-compact .hero-actions{
  min-width:min(340px,38vw);
  display:grid;
  grid-template-columns:1fr;
  gap:9px;
}
.dashboard-compact .hero-actions .btn-primary-wide,
.dashboard-compact .hero-actions .btn-secondary-wide{
  min-height:42px;
  padding:9px 15px;
  border-radius:13px;
  white-space:nowrap;
}
.dashboard-compact .field-command-grid,
.dashboard-compact .stat-grid,
.dashboard-compact .module-grid{
  margin:0;
}
.dashboard-compact .field-command-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.dashboard-compact .command-card{
  min-height:92px;
  padding:13px 14px;
  border-radius:18px;
  grid-template-columns:auto 1fr;
  align-items:center;
  align-content:center;
  column-gap:10px;
  row-gap:2px;
}
.dashboard-compact .command-card span{
  grid-row:1 / span 2;
  width:38px;
  height:38px;
  border-radius:13px;
  font-size:21px;
}
.dashboard-compact .command-card strong{
  font-size:16px;
  line-height:1.1;
}
.dashboard-compact .command-card small{
  grid-column:2;
  font-size:13px;
  line-height:1.25;
}
.dashboard-compact .compact-stats{
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
}
.dashboard-compact .stat-card{
  min-height:76px;
  padding:12px 14px;
  border-radius:18px;
  display:flex;
  align-items:center;
  gap:10px;
}
.dashboard-compact .stat-card span{
  flex:0 0 auto;
  min-width:38px;
  font-size:34px;
  line-height:.9;
  text-align:center;
}
.dashboard-compact .stat-card strong{
  margin-top:0;
  font-size:12px;
  line-height:1.15;
}
.dashboard-compact .quick-search-card{
  margin:0;
  padding:16px 18px;
  border-radius:22px;
}
.dashboard-compact .quick-search-card .panel-head{
  margin-bottom:8px;
}
.dashboard-compact .quick-search-card h2{
  font-size:25px;
}
.dashboard-compact .quick-filter-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
.dashboard-compact .quick-filter-grid .ghost-btn{
  min-height:48px;
  padding:9px 12px;
  border-radius:14px;
  line-height:1.18;
}
.dashboard-compact .module-grid.two{
  gap:14px;
}
.dashboard-compact .panel-card{
  padding:18px;
  border-radius:22px;
}
.dashboard-compact .today-stats{
  gap:9px;
}
.dashboard-compact .mini-card{
  padding:10px 12px;
  border-radius:14px;
}
@media(max-width:1100px){
  .dashboard-compact .terrain-hero{
    padding:18px 22px;
  }
  .dashboard-compact .terrain-hero h1{
    font-size:clamp(32px,4vw,48px);
  }
  .dashboard-compact .command-card{
    padding:12px;
  }
  .dashboard-compact .command-card strong{
    font-size:15px;
  }
  .dashboard-compact .command-card small{
    font-size:12px;
  }
  .dashboard-compact .stat-card{
    padding:11px 12px;
  }
}
@media(max-width:980px){
  .dashboard-compact .field-command-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:9px;
  }
  .dashboard-compact .command-card{
    min-height:84px;
    grid-template-columns:1fr;
    justify-items:center;
    text-align:center;
    gap:5px;
  }
  .dashboard-compact .command-card span{
    grid-row:auto;
    width:34px;
    height:34px;
    font-size:19px;
  }
  .dashboard-compact .command-card small{
    grid-column:auto;
    display:none;
  }
  .dashboard-compact .compact-stats{
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:9px;
  }
  .dashboard-compact .stat-card{
    display:grid;
    justify-items:center;
    text-align:center;
    gap:4px;
    min-height:74px;
  }
  .dashboard-compact .stat-card span{
    min-width:0;
    font-size:31px;
  }
  .dashboard-compact .quick-filter-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px;
  }
  .dashboard-compact .quick-filter-grid .ghost-btn{
    font-size:13px;
    min-height:46px;
  }
}
@media(max-width:760px){
  .dashboard-compact{
    gap:12px;
  }
  .dashboard-compact .terrain-hero{
    padding:17px;
  }
  .dashboard-compact .terrain-hero h1{
    font-size:38px;
  }
  .dashboard-compact .hero-actions{
    min-width:0;
  }
  .dashboard-compact .field-command-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .dashboard-compact .command-card{
    min-height:80px;
  }
  .dashboard-compact .compact-stats{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .dashboard-compact .quick-filter-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .dashboard-compact .module-grid.two{
    grid-template-columns:1fr;
  }
}
@media(max-width:560px){
  .dashboard-compact .terrain-hero h1{
    font-size:34px;
  }
  .dashboard-compact .hero-actions .btn-primary-wide,
  .dashboard-compact .hero-actions .btn-secondary-wide{
    width:100%;
  }
  .dashboard-compact .field-command-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .dashboard-compact .command-card{
    padding:11px 9px;
    min-height:76px;
  }
  .dashboard-compact .command-card span{
    width:32px;
    height:32px;
  }
  .dashboard-compact .command-card strong{
    font-size:14px;
  }
  .dashboard-compact .compact-stats{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .dashboard-compact .stat-card{
    min-height:66px;
    padding:10px;
  }
  .dashboard-compact .stat-card span{
    font-size:28px;
  }
  .dashboard-compact .stat-card strong{
    font-size:11px;
  }
  .dashboard-compact .quick-search-card{
    padding:14px;
  }
  .dashboard-compact .quick-search-card h2{
    font-size:22px;
  }
  .dashboard-compact .quick-filter-grid{
    grid-template-columns:1fr;
  }
}
@media(max-width:380px){
  .dashboard-compact .field-command-grid{
    grid-template-columns:1fr;
  }
  .dashboard-compact .compact-stats{
    grid-template-columns:1fr 1fr;
  }
}



/* V1K — Apparence avancée / transparence administrable */
:root{
  --module-alpha:.88;
  --module-blur:6px;
}
.app-body .hero-panel,
.app-body .panel-card,
.app-body .data-card,
.app-body .auth-card,
.app-body .command-card,
.app-body .stat-card,
.app-body .admin-tile,
.app-body .background-card,
.app-body .photo-card,
.app-body .filter-panel,
.app-body .quick-search-card,
.app-body .export-card,
.app-body .report-card,
.app-body .report-section,
.app-body .gps-export-card{
  background:linear-gradient(180deg,rgba(30,26,20,var(--module-alpha,.88)),rgba(14,12,10,var(--module-alpha,.88)));
  backdrop-filter:blur(var(--module-blur,6px));
  -webkit-backdrop-filter:blur(var(--module-blur,6px));
}
.app-body .command-card.primary{
  background:linear-gradient(180deg,rgba(255,211,109,.16),rgba(17,13,8,var(--module-alpha,.88)));
}
.app-body .mini-card,
.app-body .note-card,
.app-body .map-icon-item{
  background:rgba(0,0,0,.30);
}
.appearance-panel{
  max-width:900px;
}
.appearance-form input[type="range"]{
  accent-color:var(--gold);
}
.range-value{
  color:var(--gold2);
  font-weight:950;
}
.appearance-preview{
  display:grid;
  grid-template-columns:1.4fr .8fr;
  gap:14px;
  align-items:stretch;
  padding:12px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:20px;
  background:linear-gradient(135deg,rgba(63,85,45,.55),rgba(10,8,6,.42)),url('../img/cover-desktop.jpg') center/cover no-repeat;
}
.preview-module{
  padding:16px;
  border:1px solid var(--line);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(30,26,20,var(--module-alpha,.88)),rgba(14,12,10,var(--module-alpha,.88)));
  backdrop-filter:blur(var(--module-blur,6px));
  -webkit-backdrop-filter:blur(var(--module-blur,6px));
  box-shadow:0 16px 45px rgba(0,0,0,.24);
}
.preview-module h2{
  margin:7px 0 8px;
  color:var(--gold2);
  font-family:Georgia,serif;
}
.preview-module p,
.preview-module small{
  color:var(--muted);
  line-height:1.45;
}
.preview-module.compact{
  display:grid;
  align-content:center;
  gap:8px;
}
@media(max-width:700px){
  .appearance-preview{
    grid-template-columns:1fr;
  }
}


/* V1L — Administration avancée */
.beta-message{
  white-space:pre-line;
  line-height:1.5;
  color:var(--text);
  border:1px solid rgba(255,211,109,.22);
  border-radius:18px;
  background:rgba(0,0,0,.28);
  padding:12px 14px;
}
.auth-beta-message{margin:12px 0 18px;color:var(--muted);}
.dashboard-beta-message{margin:-4px 0 16px;}
.cover-beta-message{
  max-width:680px;
  margin:8px auto 12px;
  color:#fff2da;
  text-shadow:0 2px 10px #000;
}
.admin-stats{grid-template-columns:repeat(4,minmax(0,1fr));}
.admin-form-panel{max-width:920px;}
.setting-switch{
  grid-template-columns:160px minmax(220px,320px);
  align-items:center;
  gap:10px 16px;
}
.setting-switch small{grid-column:1/-1;color:var(--muted);font-weight:500;}
.form-help{color:var(--muted);font-weight:500;}
.admin-preview-box{
  border:1px solid var(--line-soft);
  border-radius:18px;
  background:rgba(0,0,0,.22);
  padding:14px;
}
.admin-preview-box p{white-space:pre-line;color:var(--muted);margin:8px 0 0;}
.admin-table small,.muted{color:var(--muted);}
.admin-action-stack{display:flex;flex-wrap:wrap;gap:7px;}
.admin-action-stack form{margin:0;}
.danger-btn{
  border-color:rgba(255,115,94,.45)!important;
  color:#ffc0b8!important;
  background:rgba(111,20,12,.45)!important;
}
.backup-panel{display:grid;gap:12px;}
.backup-panel code{
  word-break:break-word;
  color:var(--gold2);
}
.compact-log-table td{font-size:13px;}
.app-body .beta-message,
.app-body .admin-preview-box{
  backdrop-filter:blur(var(--module-blur,6px));
  -webkit-backdrop-filter:blur(var(--module-blur,6px));
}
@media(max-width:820px){
  .admin-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
  .setting-switch{grid-template-columns:1fr;}
  .admin-action-stack{display:grid;grid-template-columns:1fr 1fr;}
  .admin-action-stack .tiny-btn{width:100%;}
}
@media(max-width:560px){
  .admin-stats{grid-template-columns:1fr 1fr;}
  .admin-action-stack{grid-template-columns:1fr;}
}

/* V1M — Photos, compression et partage Facebook */
.share-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  border:1px solid rgba(255,211,109,.36);
  border-radius:999px;
  padding:6px 9px;
  font-size:12px;
  line-height:1.1;
  font-weight:900;
  color:#ffe5a6;
  background:rgba(79,55,20,.38);
  text-decoration:none;
  min-height:32px;
}
.share-btn:hover{background:rgba(121,83,26,.52);}
.share-status{
  margin:8px 10px 0;
  padding:7px 10px;
  border-radius:13px;
  border:1px solid rgba(255,211,109,.25);
  background:rgba(0,0,0,.30);
  color:var(--gold2);
  font-size:12px;
  font-weight:850;
}
.share-status.success{
  border-color:rgba(152,220,120,.35);
  color:#d8ffc7;
}
.share-layout{
  display:grid;
  grid-template-columns:minmax(260px,.75fr) minmax(320px,1fr);
  gap:16px;
  align-items:start;
}
.share-preview-card,
.share-control-card{display:grid;gap:12px;}
.share-preview-card img,
.public-share-card img{
  width:100%;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 18px 60px rgba(0,0,0,.35);
}
.consent-line{
  align-items:flex-start!important;
  font-weight:750!important;
  line-height:1.35;
}
.public-share-box{
  display:grid;
  gap:10px;
  padding:14px;
  border:1px solid rgba(255,211,109,.24);
  border-radius:18px;
  background:rgba(0,0,0,.24);
}
.public-share-box h3{margin:0;color:var(--gold2);font-family:Georgia,serif;}
.public-share-box input[readonly]{
  width:100%;
  font-size:13px;
  color:#fff2d4;
  background:rgba(0,0,0,.32);
}
.share-actions-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.share-actions-row.centered{justify-content:center;}
.privacy-note{
  border:1px solid rgba(255,255,255,.12);
  border-radius:18px;
  padding:12px 14px;
  background:rgba(0,0,0,.25);
}
.privacy-note p{margin:6px 0 0;color:var(--muted);line-height:1.45;}
.public-share-body{
  min-height:100vh;
  margin:0;
  color:#f7efe0;
  background:radial-gradient(circle at 50% 0%,rgba(136,93,31,.25),transparent 42%),linear-gradient(135deg,#090806,#1c140d 52%,#070605);
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.public-share-shell{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:22px;
}
.public-share-card{
  width:min(920px,100%);
  display:grid;
  gap:14px;
  text-align:center;
  padding:20px;
  border:1px solid rgba(255,211,109,.22);
  border-radius:28px;
  background:linear-gradient(180deg,rgba(30,26,20,.92),rgba(13,11,8,.90));
  box-shadow:0 24px 90px rgba(0,0,0,.48);
}
.public-share-card h1{
  margin:0;
  color:var(--gold2,#f3c66a);
  font-family:Georgia,serif;
  font-size:clamp(1.55rem,4vw,2.4rem);
}
.public-share-card p{margin:0;color:#dccfb5;}
.public-share-card small{color:#bfae91;}
@media(max-width:860px){
  .share-layout{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .photo-actions.card-actions,
  .card-actions{
    gap:6px;
  }
  .share-btn{
    padding:6px 8px;
    font-size:11px;
    min-height:30px;
  }
  .share-actions-row{display:grid;grid-template-columns:1fr;}
}

/* V1M2 — Page publique photo : fond administrable + bandeau visible */
.public-share-body{
  position:relative;
  overflow-x:hidden;
}
.public-share-body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  background-size:cover;
  background-position:center center;
  background-repeat:no-repeat;
}
.public-share-body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  background:linear-gradient(135deg,rgba(6,5,4,.82),rgba(26,18,10,.56),rgba(6,5,4,.86));
  pointer-events:none;
}
.public-brand-banner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin:-2px auto 4px;
  padding:10px 16px;
  width:min(560px,100%);
  border-radius:999px;
  border:1px solid rgba(242,201,112,.34);
  background:linear-gradient(180deg,rgba(11,9,7,.88),rgba(30,22,13,.78));
  box-shadow:0 12px 34px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.08);
  color:#f6e7bd;
}
.public-brand-mark{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  flex:0 0 auto;
  border-radius:999px;
  border:2px solid rgba(242,201,112,.78);
  background:rgba(18,14,10,.92);
  color:#f2c970;
  font-family:Georgia,serif;
  font-weight:900;
  letter-spacing:.03em;
}
.public-brand-banner strong{
  display:block;
  font-family:Georgia,serif;
  font-size:1.08rem;
  color:#f2c970;
  line-height:1.05;
}
.public-brand-banner small{
  display:block;
  color:#e9dcc1;
  font-weight:750;
  font-size:.78rem;
  line-height:1.2;
}
@media(max-width:560px){
  .public-share-shell{padding:14px;}
  .public-share-card{padding:14px;border-radius:22px;}
  .public-brand-banner{border-radius:18px;justify-content:flex-start;padding:9px 11px;}
  .public-brand-mark{width:36px;height:36px;font-size:.9rem;}
}
.share-generated-preview{
  display:grid;
  gap:8px;
  padding:10px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:16px;
  background:rgba(0,0,0,.22);
}
.share-generated-preview strong{color:var(--gold2);font-size:.9rem;}
.share-generated-preview img{
  width:100%;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 36px rgba(0,0,0,.30);
}


/* V1M6 — administration du bandeau de partage Facebook */
.share-admin-panel .form-grid {
  gap: 1rem;
}

.share-banner-current {
  border: 1px solid rgba(226, 166, 50, .35);
  border-radius: 18px;
  padding: 1rem;
  background: rgba(0, 0, 0, .28);
}

.share-banner-current img {
  display: block;
  width: 100%;
  max-height: 180px;
  object-fit: contain;
  margin-top: .7rem;
  border-radius: 12px;
  background: rgba(0, 0, 0, .45);
}

.share-banner-current.empty p {
  margin: .5rem 0 0;
  color: rgba(255,255,255,.72);
}

.share-banner-preview {
  border: 1px dashed rgba(226, 166, 50, .45);
  border-radius: 18px;
  padding: 1rem;
  background: rgba(0, 0, 0, .22);
}

.default-share-banner-demo {
  margin-top: .75rem;
  min-height: 92px;
  display: grid;
  grid-template-columns: 74px 1fr auto;
  gap: 1rem;
  align-items: center;
  padding: .9rem 1.1rem;
  border-top: 6px solid #e2a632;
  border-bottom: 4px solid #7a4e18;
  background: rgba(8, 6, 4, .94);
  color: #fff7df;
}

.default-share-banner-demo .brand-dot {
  width: 58px;
  height: 58px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  border: 3px solid #ebbe5c;
  color: #f8d378;
  font-weight: 900;
  background: #18120b;
}

.default-share-banner-demo b {
  display: block;
  color: #f8d378;
  font-size: clamp(1.1rem, 2vw, 1.7rem);
}

.default-share-banner-demo small {
  display: block;
  color: rgba(255,247,223,.86);
}

.default-share-banner-demo em {
  color: rgba(255,247,223,.9);
  font-style: normal;
  font-weight: 800;
  text-align: right;
}

@media (max-width: 720px) {
  .default-share-banner-demo {
    grid-template-columns: 54px 1fr;
  }
  .default-share-banner-demo em {
    grid-column: 1 / -1;
    text-align: left;
  }
}

/* V1N — Permis et documents */
.ministry-note{margin-bottom:18px;border-color:rgba(255,211,109,.36)}
.permit-doc-grid .data-card h2{font-size:21px;line-height:1.15;margin:12px 0}
.permit-preview{width:100%;max-height:230px;object-fit:contain;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:rgba(0,0,0,.20);padding:6px;margin:10px 0 12px}
.permit-file-icon{display:grid;place-items:center;min-height:150px;border:1px dashed rgba(255,211,109,.35);border-radius:18px;background:rgba(0,0,0,.20);color:var(--gold2);font-size:34px;font-weight:950;letter-spacing:.08em;margin:10px 0 12px}
.permit-doc-card .card-actions{align-items:center}
.permit-doc-card .tiny-btn{min-height:34px;border-radius:999px}


/* V1O — Application installable / PWA */
.install-hero{
  background:linear-gradient(135deg,rgba(233,157,34,.16),rgba(14,12,10,.96) 42%,rgba(7,6,5,.98));
}
.install-status{
  display:block;
  max-width:330px;
  color:var(--muted);
  font-weight:800;
  line-height:1.35;
  font-size:13px;
}
.install-card{
  position:relative;
  overflow:hidden;
}
.install-card:before{
  content:'';
  position:absolute;
  inset:auto -45px -70px auto;
  width:170px;
  height:170px;
  border-radius:50%;
  background:rgba(233,157,34,.10);
  pointer-events:none;
}
.install-card h2{
  margin:8px 0 8px;
  color:var(--gold2);
  font-family:Georgia,serif;
  font-size:26px;
}
.install-icon{
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  border-radius:18px;
  background:rgba(233,157,34,.13);
  border:1px solid rgba(255,211,109,.22);
  font-size:27px;
}
button[data-install-pwa]{
  border:1px solid #ffe5a2;
}
button[data-install-pwa].install-ready{
  box-shadow:0 0 0 4px rgba(255,211,109,.12),0 12px 30px rgba(0,0,0,.28);
}
@media(max-width:560px){
  .install-status{max-width:100%;font-size:12px}
}


/* V1P1 — Préparation hors ligne sécuritaire */
.offline-status-bar{
  position:sticky;
  top:var(--topbar-height);
  z-index:70;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:30px;
  padding:5px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
  background:rgba(9,8,6,.86);
  color:rgba(255,247,223,.88);
  font-size:12px;
  font-weight:900;
  backdrop-filter:blur(12px);
}
.offline-status-bar[data-state="online"] .offline-dot{background:var(--ok);box-shadow:0 0 0 4px rgba(143,227,162,.12)}
.offline-status-bar[data-state="offline"]{background:rgba(55,21,14,.94);color:#ffe0d9;border-color:rgba(255,115,94,.35)}
.offline-status-bar[data-state="offline"] .offline-dot{background:#ff735e;box-shadow:0 0 0 4px rgba(255,115,94,.16)}
.offline-dot{width:9px;height:9px;border-radius:999px;display:inline-block}
.offline-pending{padding:3px 8px;border-radius:999px;background:rgba(255,211,109,.12);color:var(--gold2)}
.offline-prepare-status{
  display:block;
  max-width:360px;
  color:var(--muted);
  font-weight:800;
  line-height:1.35;
  font-size:13px;
}
.offline-prepare-status[data-state="ok"]{color:var(--ok)}
.offline-prepare-status[data-state="warn"]{color:var(--gold2)}
.offline-prepare-status[data-state="error"]{color:#ffb0a5}
.offline-prepare-status[data-state="loading"]{color:#fff2cc}
.offline-prep-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.offline-prep-grid div{padding:14px;border:1px solid var(--line-soft);border-radius:16px;background:rgba(0,0,0,.18)}
.offline-prep-grid strong{display:block;color:var(--gold2);font-size:16px;margin-bottom:4px}
.offline-prep-grid span{display:block;color:var(--muted);font-size:13px;line-height:1.35}
button.ghost-btn{font:inherit}
@media(max-width:720px){
  .offline-status-bar{font-size:11px;min-height:28px}
  .offline-prep-grid{grid-template-columns:1fr}
  .offline-prepare-status{max-width:100%;font-size:12px}
}

/* V1P2 — Synchronisation terrain hors ligne */
.offline-sync-btn{
  border:1px solid rgba(255,211,109,.35);
  background:rgba(255,211,109,.12);
  color:var(--gold2);
  border-radius:999px;
  padding:4px 10px;
  font-size:11px;
  font-weight:900;
  cursor:pointer;
}
.offline-sync-btn:hover{background:rgba(255,211,109,.2)}
.offline-status-bar .offline-pending[hidden] + .offline-sync-btn{display:none}
@media(max-width:560px){
  .offline-sync-btn{padding:3px 8px;font-size:10px}
}


/* V1P4 — Centre de synchronisation */
.sync-hero h1 { margin-bottom: .35rem; }
.sync-stats .stat-card span { font-size: clamp(1.05rem, 3vw, 1.8rem); }
.sync-grid .panel-card { min-height: 260px; }
.sync-list { display: grid; gap: .55rem; margin-top: .5rem; }
.sync-list.empty { color: rgba(255,255,255,.74); font-style: italic; }
.sync-row { display: flex; justify-content: space-between; gap: .75rem; align-items: center; padding: .72rem .82rem; border-radius: 16px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.09); }
.sync-row strong { display: block; }
.sync-row small { color: rgba(255,255,255,.72); }
.sync-pill { white-space: nowrap; border-radius: 999px; padding: .22rem .55rem; background: rgba(212,170,82,.18); color: #f7dfa4; font-weight: 800; font-size: .82rem; }
.sync-detail { margin-top: 1rem; display: grid; gap: .45rem; }
.sync-detail-item { padding: .58rem .7rem; border-radius: 14px; background: rgba(0,0,0,.18); color: rgba(255,255,255,.82); font-size: .9rem; }
.sync-actions { margin-top: 1rem; }
.ghost-btn.danger { border-color: rgba(255,88,88,.45); color: #ffd1d1; }
.danger-zone { border-color: rgba(255,88,88,.26); }
@media (max-width: 720px) {
  .sync-row { align-items: flex-start; flex-direction: column; }
  .sync-pill { align-self: flex-start; }
}


/* V1R3 — Transparence uniforme et seuil libre */
/* Ces règles sont placées en fin de fichier pour uniformiser les modules
   qui avaient encore un fond noir fixe dans certaines pages. */
.app-body :where(
  .hero-panel,
  .panel-card,
  .data-card,
  .auth-card,
  .stat-card,
  .admin-tile,
  .background-card,
  .photo-card,
  .filter-panel,
  .quick-search-card,
  .quick-card,
  .export-card,
  .report-card,
  .report-section,
  .gps-export-card,
  .form-card,
  .lock-card,
  .security-note,
  .ministry-note,
  .permit-doc-card,
  .install-card,
  .install-hero,
  .offline-prep-panel,
  .sync-grid .panel-card,
  .tracking-summary-card,
  .admin-preview-box,
  .beta-message,
  .backup-panel,
  .danger-zone
){
  background:linear-gradient(
    180deg,
    rgba(30,26,20,var(--module-alpha,.88)),
    rgba(14,12,10,var(--module-alpha,.88))
  ) !important;
  background-color:transparent !important;
  backdrop-filter:blur(var(--module-blur,6px));
  -webkit-backdrop-filter:blur(var(--module-blur,6px));
}

.app-body :where(
  .command-card:not(.primary),
  .mini-card,
  .note-card,
  .field-facts span,
  .today-stats div,
  .offline-prep-grid div,
  .sync-row,
  .sync-detail-item,
  .privacy-note,
  .public-share-box,
  .share-status,
  .share-banner-current,
  .share-banner-preview,
  .permit-file-icon,
  .permit-preview
){
  background:rgba(14,12,10,var(--module-alpha,.88)) !important;
  backdrop-filter:blur(var(--module-blur,6px));
  -webkit-backdrop-filter:blur(var(--module-blur,6px));
}

/* Les cartes principales dorées restent volontairement plus visibles. */
.app-body .command-card.primary{
  background:linear-gradient(180deg,rgba(255,211,109,.18),rgba(17,13,8,var(--module-alpha,.88))) !important;
}

/* Les champs restent légèrement plus foncés que les modules pour préserver la lecture,
   mais ils suivent maintenant un peu mieux le réglage global. */
.app-body :where(input, textarea, select){
  background:rgba(11,10,8,var(--module-alpha,.88)) !important;
}

/* Si l’admin descend très bas, on garde les bordures visibles pour voir les blocs. */
.app-body :where(.hero-panel,.panel-card,.data-card,.stat-card,.photo-card,.filter-panel,.quick-card,.permit-doc-card){
  border-color:rgba(233,157,34,.36);
}

/* V2B — Forfaits et utilisateurs */
.plan-badge{border-color:rgba(255,211,109,.42);}
.plan-decouverte{background:rgba(255,211,109,.14);color:var(--gold2)}
.plan-beta{background:rgba(76,175,80,.18);border-color:rgba(76,175,80,.38);color:#c8f6c9}
.plan-complet{background:rgba(120,160,255,.18);border-color:rgba(120,160,255,.42);color:#d8e3ff}
.admin-create-user-card{margin-bottom:18px}
.admin-create-grid{align-items:end}
.plan-limit-grid,.plan-usage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px;margin-top:10px}
.plan-limit-card,.plan-usage-item{display:grid;gap:4px;padding:12px 14px;border:1px solid rgba(255,211,109,.18);border-radius:18px;background:rgba(7,6,5,.36)}
.plan-limit-card strong,.plan-usage-item strong{font-size:24px;line-height:1;color:var(--gold2)}
.plan-limit-card span,.plan-usage-item span{font-size:12px;font-weight:850;color:var(--muted)}
.plan-status-card{margin-bottom:16px}
.muted-note{color:var(--muted);font-weight:700;line-height:1.45}
.user-admin-table td{vertical-align:top}
.v2b-actions{gap:8px;min-width:260px}
.mini-inline-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(0,0,0,.16)}
.mini-inline-form select,.mini-inline-form input[type="text"]{min-height:34px;padding:6px 9px;border-radius:12px;font-size:12px;max-width:190px}
.mini-inline-form button[disabled],.mini-inline-form select[disabled]{opacity:.55;cursor:not-allowed}
.mini-check{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:12px;font-weight:800;margin:0}
@media(max-width:760px){
  .admin-create-grid{grid-template-columns:1fr}
  .v2b-actions{min-width:0}
  .mini-inline-form{display:grid;grid-template-columns:1fr;align-items:stretch}
  .mini-inline-form select,.mini-inline-form input[type="text"]{max-width:none;width:100%}
}


/* V2B2B - Acceptation Beta */
.beta-terms-card { max-width: 920px; margin: 0 auto; }
.beta-terms-text p { margin: 0 0 1rem; line-height: 1.65; }
.beta-terms-note { margin: 1.25rem 0; }
.beta-terms-check { align-items: flex-start; gap: .75rem; font-weight: 700; }
.beta-terms-check input { margin-top: .25rem; transform: scale(1.2); }


/* V2A1 — Carte ZEC locale */
.map-hero {
  gap: 1rem;
}
.map-viewer-card {
  overflow: hidden;
}
.map-pdf-frame {
  width: 100%;
  height: min(78vh, 760px);
  min-height: 420px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 18px;
  overflow: hidden;
  background: rgba(8, 6, 4, 0.45);
}
.map-pdf-frame object {
  width: 100%;
  height: 100%;
  display: block;
}
@media (max-width: 760px) {
  .map-pdf-frame {
    height: 62vh;
    min-height: 360px;
  }
}


/* V2A2 — Carte interactive privée */
.zec-interactive-card { overflow: hidden; }
.map-panel-head { align-items: flex-start; }
.zec-map-toolbar { display: flex; flex-wrap: wrap; gap: .55rem; margin: 0 0 .85rem; }
.ghost-btn.compact { padding: .48rem .68rem; min-height: auto; font-size: .9rem; }
.zec-map-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 340px); gap: 1rem; align-items: stretch; }
.zec-map-viewport { position: relative; height: min(72vh, 780px); min-height: 470px; overflow: hidden; border-radius: 20px; border: 1px solid rgba(255,255,255,.18); background: rgba(8,6,4,.58); cursor: grab; touch-action: none; }
.zec-map-viewport.is-dragging { cursor: grabbing; }
.zec-map-canvas { position: absolute; left: 0; top: 0; transform-origin: 0 0; will-change: transform; }
.zec-map-canvas img { display: block; width: 100%; height: 100%; user-select: none; pointer-events: none; }
.zec-map-marker, .zec-map-user-marker { position: absolute; transform: translate(-50%, -100%); border: 0; border-radius: 999px; cursor: pointer; display: grid; place-items: center; box-shadow: 0 7px 18px rgba(0,0,0,.45); z-index: 3; }
.zec-map-marker { width: 30px; height: 30px; background: #f2d36b; color: #130f09; font-weight: 950; border: 2px solid rgba(0,0,0,.68); }
.zec-map-marker span { font-size: .78rem; line-height: 1; }
.zec-map-marker:hover, .zec-map-marker.active { transform: translate(-50%, -100%) scale(1.2); z-index: 6; }
.zec-map-marker.marker-ok { background: #7fd37b; }
.zec-map-marker.marker-bientot { background: #f3c55b; }
.zec-map-marker.marker-retard { background: #ff6868; color: #250707; }
.zec-map-marker.marker-installation { background: #d9d9d9; }
.zec-map-user-marker { width: 34px; height: 34px; background: #8fd7ff; color: #032033; border: 3px solid #fff; z-index: 7; }
.zec-map-sidebar { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 1rem; min-height: 0; }
.zec-selected-point, .zec-map-list { border: 1px solid rgba(255,255,255,.12); border-radius: 18px; background: rgba(8,6,4,.34); padding: .9rem; }
.zec-selected-point h3 { margin: .15rem 0 .45rem; }
.zec-selected-point p { white-space: pre-line; margin-bottom: .8rem; }
.zec-map-list { overflow: auto; max-height: min(72vh, 780px); }
.panel-head.mini { margin-bottom: .7rem; }
.zec-map-list-item { width: 100%; text-align: left; border: 1px solid rgba(255,255,255,.1); border-radius: 15px; padding: .72rem .78rem; background: rgba(255,255,255,.06); color: rgba(255,255,255,.9); display: grid; gap: .2rem; margin-bottom: .45rem; cursor: pointer; }
.zec-map-list-item:hover, .zec-map-list-item.active { border-color: rgba(255,211,109,.55); background: rgba(255,211,109,.14); }
.zec-map-list-item small { color: rgba(255,255,255,.72); }
.zec-map-list-item.off-map { opacity: .6; cursor: not-allowed; }
.zec-map-viewport.hide-points .zec-map-marker { display: none; }
@media (max-width: 980px) {
  .zec-map-layout { grid-template-columns: 1fr; }
  .zec-map-sidebar { grid-template-rows: auto auto; }
  .zec-map-list { max-height: 340px; }
}
@media (max-width: 760px) {
  .zec-map-viewport { height: 62vh; min-height: 390px; border-radius: 16px; }
  .zec-map-toolbar .ghost-btn { flex: 1 1 calc(50% - .55rem); }
  .zec-map-marker { width: 32px; height: 32px; }
}


/* V2A2D — Correctif cadrage carte interactive */
.zec-interactive-card {
  overflow: hidden !important;
  max-width: 100%;
}
.zec-map-layout {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}
.zec-map-viewport {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  contain: layout paint;
  isolation: isolate;
  overflow: hidden !important;
  z-index: 1;
}
.zec-map-canvas {
  max-width: none !important;
  z-index: 1;
}
.zec-map-canvas img {
  max-width: none !important;
}
.zec-map-marker,
.zec-map-user-marker {
  z-index: 5;
}
.zec-map-sidebar {
  position: relative;
  z-index: 2;
  overflow: hidden;
}
.zec-map-toolbar {
  position: relative;
  z-index: 3;
}
@media (min-width: 981px) {
  .zec-map-layout {
    grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
  }
  .zec-map-viewport {
    min-width: 0;
  }
}


/* V2A2E — Icônes personnalisées sur la carte ZEC */
.zec-map-marker {
  width: 44px !important;
  height: 44px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: inherit !important;
  box-shadow: none !important;
  transform: translate(-50%, -50%) !important;
  overflow: visible !important;
}
.zec-map-marker::after {
  content: "";
  position: absolute;
  inset: -3px;
  border-radius: 999px;
  border: 2px solid rgba(255, 211, 109, .78);
  box-shadow: 0 8px 20px rgba(0,0,0,.48);
  pointer-events: none;
}
.zec-map-marker.marker-ok::after { border-color: rgba(130, 220, 120, .9); }
.zec-map-marker.marker-bientot::after { border-color: rgba(255, 210, 95, .95); }
.zec-map-marker.marker-retard::after { border-color: rgba(255, 85, 85, .95); }
.zec-map-marker-icon {
  display: block;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  user-select: none;
  pointer-events: none;
  filter: drop-shadow(0 7px 14px rgba(0,0,0,.5));
}
.zec-map-marker:hover,
.zec-map-marker.active {
  transform: translate(-50%, -50%) scale(1.22) !important;
  z-index: 8 !important;
}
.zec-map-user-marker {
  transform: translate(-50%, -50%) !important;
}
.zec-map-list-item {
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
}
.zec-map-list-icon {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  filter: drop-shadow(0 4px 10px rgba(0,0,0,.4));
}
.zec-map-list-item span {
  min-width: 0;
  display: grid;
  gap: .18rem;
}
.zec-map-list-item strong,
.zec-map-list-item small {
  display: block;
}
@media (max-width: 760px) {
  .zec-map-marker,
  .zec-map-marker-icon { width: 40px !important; height: 40px !important; }
}


/* V2A2F — Carte ZEC : utiliser les mêmes icônes que la section Export/KMZ */
.zec-map-marker-icon,
.zec-map-list-icon {
  object-fit: contain !important;
}
.zec-map-marker {
  width: 42px !important;
  height: 42px !important;
}
.zec-map-marker-icon {
  width: 42px !important;
  height: 42px !important;
}
.zec-map-marker::after {
  display: none !important;
}
.zec-map-marker.active .zec-map-marker-icon,
.zec-map-marker:hover .zec-map-marker-icon {
  filter: drop-shadow(0 0 8px rgba(255,211,109,.9)) drop-shadow(0 8px 14px rgba(0,0,0,.55));
}
.zec-map-list-icon {
  object-fit: contain !important;
}
@media (max-width: 760px) {
  .zec-map-marker,
  .zec-map-marker-icon { width: 38px !important; height: 38px !important; }
}

/* V2A2G — PDF de carte ZEC masqué par défaut */
.map-pdf-toggle-row {
  margin-bottom: .85rem;
}
.map-pdf-frame.is-hidden,
.map-pdf-actions[hidden] {
  display: none !important;
}
.map-viewer-card .field-tip {
  margin-top: .25rem;
}
.map-pdf-actions {
  margin-top: .8rem;
}

/* V2S — Sécurité / Nettoyage production */
.status-grid,
.cleanup-group-grid,
.mini-stat-grid {
  display: grid;
  gap: 1rem;
}
.status-grid {
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  margin-bottom: 1rem;
}
.status-card,
.mini-stat,
.cleanup-choice {
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 18px;
  background: rgba(0, 0, 0, 0.28);
  padding: 1rem;
}
.status-card strong,
.status-card span,
.status-card p,
.mini-stat strong,
.mini-stat span,
.mini-stat small {
  display: block;
}
.status-card span {
  margin-top: .35rem;
  font-weight: 800;
}
.status-card.ok { border-color: rgba(91, 195, 117, 0.45); }
.status-card.warning { border-color: rgba(255, 199, 95, 0.55); }
.status-card.danger { border-color: rgba(255, 105, 97, 0.58); }
.mini-stat-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.mini-stat strong { font-size: 1.8rem; }
.cleanup-group-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin: 1rem 0; }
.cleanup-choice {
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease;
}
.cleanup-choice:hover { transform: translateY(-1px); border-color: rgba(255, 255, 255, 0.28); }
.cleanup-choice input { margin-right: .5rem; }
.cleanup-choice strong { display: inline-block; margin-bottom: .25rem; }
.cleanup-choice span,
.cleanup-choice small { display: block; opacity: .82; }
.cleanup-choice.cautious { border-color: rgba(255, 199, 95, 0.55); }
.cleanup-confirm { margin: 1rem 0; }
.cleanup-details { margin-top: 1rem; }
.cleanup-details summary { cursor: pointer; font-weight: 800; }
.compact-table code { word-break: break-all; }
.safe-clean-form,
.cleanup-media-form { margin-top: 1rem; }
.info-list code { word-break: break-all; }
.security-note { margin-bottom: 1rem; }
@media (max-width: 720px) {
  .status-grid,
  .cleanup-group-grid,
  .mini-stat-grid { grid-template-columns: 1fr; }
}

/* V2S2 — Menu Gestion de l’Appli */
.nav-dropdown{position:relative;display:inline-flex;align-items:center;color:var(--text);font-size:14px}
.nav-dropdown summary{list-style:none;display:inline-flex;align-items:center;gap:6px;color:var(--text);text-decoration:none;padding:9px 10px;border-radius:12px;font-size:14px;border:1px solid transparent;cursor:pointer;user-select:none;font-weight:700}
.nav-dropdown summary::-webkit-details-marker{display:none}
.nav-dropdown summary::after{content:'▾';font-size:11px;color:var(--gold2);line-height:1;transform:translateY(1px)}
.nav-dropdown[open] summary::after{content:'▴'}
.nav-dropdown:hover summary,.nav-dropdown.active summary,.nav-dropdown[open] summary{background:rgba(233,157,34,.15);border-color:rgba(233,157,34,.25);color:var(--gold2)}
.nav-dropdown-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:120;display:grid;min-width:235px;padding:8px;border:1px solid rgba(233,157,34,.25);border-radius:16px;background:rgba(8,7,5,.98);box-shadow:0 18px 48px rgba(0,0,0,.45);backdrop-filter:blur(12px)}
.nav .nav-dropdown-menu a{display:block;padding:11px 13px;border-radius:12px;font-size:14px;white-space:nowrap}
@media(max-width:820px){.nav-dropdown{display:block;width:100%}.nav-dropdown summary{width:100%;justify-content:space-between;padding:13px 22px;font-size:15px}.nav-dropdown-menu{position:static;min-width:0;margin:0 12px 8px 12px;padding:6px;background:rgba(255,255,255,.04);box-shadow:none;border-color:rgba(255,255,255,.10)}.nav .nav-dropdown-menu a{white-space:normal;padding:12px 14px}}


/* V2S3 — Le bandeau En ligne/Hors ligne reste sous le menu collant. */
.topbar{z-index:90}
.offline-status-bar{top:var(--topbar-height);z-index:70}
.nav-dropdown-menu{z-index:120}

/* V2T — formulaire export Excel */
.inline-export-form {
  display: grid;
  gap: 0.65rem;
  margin-top: 1rem;
}
.inline-export-form label {
  color: rgba(245, 238, 220, 0.86);
  font-weight: 800;
}
.inline-export-form select {
  width: 100%;
  max-width: 360px;
  padding: 0.75rem 0.9rem;
  border-radius: 14px;
  border: 1px solid rgba(217, 166, 65, 0.45);
  background: rgba(9, 8, 5, 0.78);
  color: #f5eedc;
  font: inherit;
}
.inline-export-form button {
  max-width: 360px;
}


/* V2V — Guide d’utilisation intégré */
.guide-hero {
  display: grid;
  gap: .8rem;
}
.guide-layout {
  display: grid;
  grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
}
.guide-toc {
  position: sticky;
  top: calc(var(--topbar-height) + 56px);
}
.guide-toc nav {
  display: grid;
  gap: .45rem;
}
.guide-toc a {
  color: var(--text);
  text-decoration: none;
  padding: .55rem .7rem;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.09);
  background: rgba(255,255,255,.035);
}
.guide-toc a:hover {
  color: var(--gold2);
  border-color: rgba(233,157,34,.28);
  background: rgba(233,157,34,.12);
}
.guide-content {
  display: grid;
  gap: 1rem;
}
.guide-section {
  scroll-margin-top: calc(var(--topbar-height) + 90px);
}
.guide-section h2 {
  margin-bottom: .55rem;
}
.guide-section h3 {
  margin-top: 1rem;
  margin-bottom: .35rem;
}
.guide-section ol,
.guide-section ul {
  padding-left: 1.35rem;
}
.guide-section li {
  margin: .28rem 0;
}
.guide-callout {
  border: 1px solid rgba(233,157,34,.28);
  background: rgba(233,157,34,.10);
  border-radius: 16px;
  padding: .9rem 1rem;
}
.guide-warning {
  border-color: rgba(255,199,95,.48);
  background: rgba(255,199,95,.10);
}
.guide-steps {
  display: grid;
  gap: .75rem;
}
.guide-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: .75rem;
}
.guide-mini-card {
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 16px;
  padding: .9rem;
  background: rgba(0,0,0,.22);
}
.guide-mini-card strong,
.guide-mini-card span {
  display: block;
}
.guide-mini-card span {
  margin-top: .25rem;
  opacity: .86;
}
@media (max-width: 900px) {
  .guide-layout { grid-template-columns: 1fr; }
  .guide-toc { position: static; }
}

/* V2X — Profil utilisateur / coordonnées */
.profile-status-card{margin-bottom:18px}
.profile-meta-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-top:12px;
}
.profile-meta-grid div{
  display:grid;
  gap:4px;
  padding:12px 14px;
  border:1px solid var(--line-soft);
  border-radius:16px;
  background:rgba(0,0,0,.18);
}
.profile-meta-grid strong{
  color:var(--gold2);
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.profile-meta-grid span{color:var(--muted);line-height:1.35}
.form-section-title{
  margin:6px 0 0;
  padding-top:4px;
  color:var(--gold2);
  font-family:Georgia,serif;
  border-top:1px solid rgba(255,255,255,.08);
}
.form-section-title:first-of-type{border-top:0;margin-top:0}
.profile-form-panel{max-width:980px}
.admin-action-stack a.tiny-btn{width:100%}
@media(max-width:820px){
  .profile-meta-grid{grid-template-columns:1fr}
}

/* V2Y — Suivi Beta / abonnements préparatoires */
.subscription-cell small{display:block;margin-top:4px;color:var(--muted);line-height:1.35}
.subscription-badge.subscription-actif{background:rgba(143,227,162,.14);color:var(--ok)}
.subscription-badge.subscription-en_attente{background:rgba(255,211,109,.14);color:var(--gold2)}
.subscription-badge.subscription-suspendu,.subscription-badge.subscription-expire{background:rgba(255,115,94,.13);color:#ffb0a5}
.subscription-badge.subscription-beta_gratuit{background:rgba(255,255,255,.09);color:var(--muted)}
.subscription-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:360px}
.subscription-form select,.subscription-form input,.subscription-form textarea{min-height:34px;padding:6px 9px;border-radius:12px;font-size:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);color:var(--text)}
.subscription-form textarea{grid-column:1/-1;min-height:54px;resize:vertical;max-width:none;width:100%;font-family:inherit}
.subscription-form button{grid-column:1/-1}
@media (max-width:760px){.subscription-form{min-width:0;grid-template-columns:1fr}.subscription-form select,.subscription-form input,.subscription-form textarea{width:100%}}


/* V2Z — Tableau admin / lancement */
.launch-summary-card,
.launch-status-card,
.launch-form-panel{margin-bottom:18px}
.launch-summary-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:10px;
  margin-top:10px;
}
.launch-summary-grid div{
  display:grid;
  gap:4px;
  padding:12px 14px;
  border:1px solid var(--line-soft);
  border-radius:16px;
  background:rgba(0,0,0,.18);
}
.launch-summary-grid strong{
  color:var(--gold2);
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.launch-summary-grid span{color:var(--muted);line-height:1.35}
.admin-cockpit-grid{margin-top:18px}
.admin-mini-list{display:grid;gap:10px}
.admin-mini-list div{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.09);
  background:rgba(255,255,255,.035);
}
.admin-mini-list strong{color:var(--gold2);font-size:1.25rem}
.admin-mini-list span{color:var(--muted);text-align:right}
.featured-admin-tile{border-color:rgba(233,157,34,.38);background:rgba(233,157,34,.10)}
.launch-message{border-color:rgba(143,227,162,.28);background:rgba(143,227,162,.10)}
.form-grid.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media(max-width:760px){.form-grid.two{grid-template-columns:1fr}.admin-mini-list div{align-items:flex-start}}

/* V3A — Page publique / Liste d’intérêt */
.public-interest-page .page-shell{width:min(1120px,94vw)}
.public-interest-hero h1{font-size:clamp(32px,5vw,58px)}
.public-interest-grid{align-items:start}.public-feature-card,.public-waitlist-card,.public-disclaimer-card{border-color:rgba(255,211,109,.22)}
.feature-list{display:grid;gap:10px}.feature-list>div{padding:12px 14px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.045)}.feature-list strong{display:block;color:var(--gold2);margin-bottom:4px}.feature-list span{color:var(--muted);font-size:14px}.required{color:var(--gold2);font-weight:900}.public-launch-message{margin-bottom:18px}.waitlist-form textarea{resize:vertical}.public-disclaimer-card .action-row{margin-top:12px}
.waitlist-stats{margin-bottom:18px}.waitlist-filter-row{margin:0 0 16px}.waitlist-filter-row .ghost-btn.active{background:rgba(233,157,34,.18);border-color:rgba(233,157,34,.45);color:var(--gold2)}.waitlist-admin-list{display:grid;gap:14px}.waitlist-admin-card{display:grid;gap:12px}.waitlist-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.waitlist-status.status-nouvelle{background:rgba(255,211,109,.16);color:var(--gold2);border-color:rgba(255,211,109,.35)}.waitlist-status.status-contactee{background:rgba(115,163,255,.15);color:#bcd0ff;border-color:rgba(115,163,255,.3)}.waitlist-status.status-acceptee{background:rgba(102,214,142,.15);color:#b7f0ca;border-color:rgba(102,214,142,.3)}.waitlist-status.status-refusee{background:rgba(255,118,118,.14);color:#ffc2c2;border-color:rgba(255,118,118,.28)}.waitlist-status.status-archivee{background:rgba(255,255,255,.08);color:var(--muted);border-color:rgba(255,255,255,.12)}.waitlist-admin-form{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}.compact-actions{margin-top:0}.wrap-actions{flex-wrap:wrap}
@media(max-width:820px){.waitlist-card-head{display:grid}.public-interest-hero .action-row{justify-content:flex-start}.public-interest-grid{grid-template-columns:1fr}}

/* V3B — Commercialisation préparatoire */
.commercialization-checklist div{align-items:flex-start}
.commercialization-checklist span{text-align:left}
.commercialization-checklist small{color:var(--muted);font-weight:700;line-height:1.35}
.commercialization-checklist b{color:var(--text)}

/* V3C — Stabilisation Beta */
.compact-inline-form{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08);display:grid;gap:10px}.inline-filter-form select{min-width:190px}.admin-beta-tester-card,.beta-feedback-admin-card{display:grid;gap:8px}.beta-feedback-admin-card p{margin:6px 0 0;padding:10px 12px;border-radius:14px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.06);color:var(--text)}
@media(max-width:760px){.inline-filter-form{width:100%}.inline-filter-form select{width:100%}}

/* V3D — Acceptation Beta / création utilisateur depuis liste d’intérêt */
.info-box{padding:12px 14px;margin:12px 0 16px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:rgba(255,255,255,.045)}
.info-box strong{display:block;color:var(--gold2);margin-bottom:4px}.info-box p{margin:0;color:var(--muted);line-height:1.4}.info-box.success{border-color:rgba(102,214,142,.28);background:rgba(102,214,142,.08)}.info-box.warning{border-color:rgba(255,211,109,.32);background:rgba(255,211,109,.08)}
.mini-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mini-meta-grid>div{padding:10px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.14)}.mini-meta-grid strong{display:block;color:var(--gold2);font-size:12px;text-transform:uppercase;letter-spacing:.05em}.mini-meta-grid span{display:block;color:var(--muted);font-size:13px;line-height:1.35}.compact-primary{width:auto;min-height:38px;padding:9px 14px;font-size:13px}
@media(max-width:760px){.mini-meta-grid{grid-template-columns:1fr}.compact-primary{width:100%}}

/* V3D8 — Visionneuse Permis mobile : images OK et PDF gardé dans une page avec retour application */
.permit-pdf-preview-link .permit-file-icon{
  width:100%;
  min-height:150px;
  display:grid;
  place-items:center;
  border-radius:18px;
  border:1px solid rgba(233,157,34,.24);
  background:rgba(0,0,0,.28);
  color:var(--gold2);
  font-weight:950;
  letter-spacing:.12em;
  font-size:1.35rem;
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.permit-pdf-preview-link:hover .permit-file-icon,
.permit-pdf-preview-link:focus-visible .permit-file-icon{
  transform:translateY(-1px);
  border-color:rgba(233,157,34,.44);
  background:rgba(233,157,34,.13);
}
.permit-viewer-page{
  overflow:hidden;
  background:#050403;
  overscroll-behavior:none;
}
.permit-viewer-page .topbar,
.permit-viewer-page .offline-status-bar{
  display:none !important;
}
.permit-viewer-page .page-shell{
  width:100vw;
  min-height:100dvh;
  padding:0;
  margin:0;
}
.permit-fullscreen-viewer{
  position:fixed;
  inset:0;
  z-index:500;
  display:grid;
  grid-template-rows:auto 1fr auto auto;
  min-height:100dvh;
  background:#050403;
  color:var(--text);
  overflow:hidden;
  overscroll-behavior:none;
}
.permit-viewer-close{
  position:fixed;
  top:max(12px,env(safe-area-inset-top));
  right:max(12px,env(safe-area-inset-right));
  z-index:540;
  width:50px;
  height:50px;
  display:grid;
  place-items:center;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(0,0,0,.78);
  color:#fff;
  text-decoration:none;
  font-size:27px;
  font-weight:950;
  line-height:1;
  box-shadow:0 10px 28px rgba(0,0,0,.42);
  -webkit-tap-highlight-color:transparent;
}
.permit-viewer-close:active{transform:scale(.96)}
.permit-viewer-title-card{
  position:relative;
  z-index:510;
  padding:calc(12px + env(safe-area-inset-top)) calc(78px + env(safe-area-inset-right)) 12px calc(14px + env(safe-area-inset-left));
  background:linear-gradient(180deg,rgba(0,0,0,.78),rgba(0,0,0,.48) 70%,rgba(0,0,0,0));
  pointer-events:none;
}
.permit-viewer-title-card h1{
  margin:3px 0 3px;
  font-size:clamp(20px,4vw,34px);
  line-height:1.05;
}
.permit-viewer-title-card p{
  margin:0;
  color:rgba(255,255,255,.74);
  font-size:13px;
  font-weight:750;
}
.permit-image-stage{
  position:relative;
  min-height:0;
  width:100%;
  height:100%;
  overflow:hidden;
  touch-action:none;
  cursor:grab;
  background:radial-gradient(circle at center,rgba(255,255,255,.06),rgba(0,0,0,.92));
  -webkit-user-select:none;
  user-select:none;
  -webkit-touch-callout:none;
  overscroll-behavior:none;
}
.permit-image-stage.is-dragging{cursor:grabbing}

.permit-fullscreen-viewer.is-landscape .permit-image-stage{background:radial-gradient(ellipse at center,rgba(255,255,255,.065),rgba(0,0,0,.92))}
.permit-fullscreen-viewer.is-portrait .permit-image-stage{background:radial-gradient(ellipse at center,rgba(255,255,255,.055),rgba(0,0,0,.94))}
.permit-image-stage img{pointer-events:none}
.permit-panzoom-image{
  position:absolute;
  left:50%;
  top:50%;
  display:block;
  max-width:none;
  max-height:none;
  transform-origin:center center;
  user-select:none;
  -webkit-user-select:none;
  -webkit-user-drag:none;
  will-change:transform;
  border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,.42);
  touch-action:none;
  cursor:grab;
}
.permit-fullscreen-viewer.is-landscape .permit-panzoom-image{border-radius:8px}
.permit-fullscreen-viewer.is-portrait .permit-panzoom-image{border-radius:12px}
.permit-image-controls{
  position:relative;
  z-index:520;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:8px;
  padding:8px calc(12px + env(safe-area-inset-right)) 2px calc(12px + env(safe-area-inset-left));
  background:linear-gradient(0deg,rgba(0,0,0,.72),rgba(0,0,0,.2));
}
.permit-image-controls button{
  min-width:46px;
  min-height:38px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.1);
  color:#fff;
  font-weight:900;
  font-size:16px;
  padding:8px 13px;
  -webkit-tap-highlight-color:transparent;
}
.permit-image-controls button:active{transform:scale(.96);background:rgba(233,157,34,.24)}
.permit-viewer-hint{
  position:relative;
  z-index:510;
  padding:6px calc(12px + env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left));
  text-align:center;
  color:rgba(255,255,255,.74);
  background:rgba(0,0,0,.72);
  font-size:13px;
  font-weight:750;
}
.permit-pdf-stage{
  position:relative;
  display:grid;
  min-height:0;
  height:100%;
  padding:calc(26px + env(safe-area-inset-top)) calc(14px + env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));
  place-items:center;
}
.permit-pdf-stage-simple{
  background:radial-gradient(circle at center,rgba(233,157,34,.1),rgba(0,0,0,.9));
}
.permit-pdf-stage-embedded{
  padding:calc(74px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));
  background:#050403;
  place-items:stretch;
}
.permit-pdf-frame{
  position:relative;
  z-index:500;
  width:100%;
  height:100%;
  min-height:0;
  border:0;
  border-radius:14px;
  background:#fff;
  box-shadow:0 12px 40px rgba(0,0,0,.38);
}
.permit-pdf-fallback{
  position:absolute;
  left:calc(18px + env(safe-area-inset-left));
  right:calc(18px + env(safe-area-inset-right));
  bottom:calc(16px + env(safe-area-inset-bottom));
  z-index:505;
  display:none;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(0,0,0,.78);
  color:rgba(255,255,255,.82);
  text-align:center;
  font-size:12px;
}
.permit-pdf-fallback strong{color:var(--gold2);display:block;margin-bottom:3px}
.permit-pdf-fallback p{margin:0;line-height:1.35}
.permit-pdf-native-box,
.permit-viewer-unknown{
  position:relative;
  z-index:510;
  width:min(680px,100%);
  display:grid;
  gap:11px;
  padding:18px 16px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:20px;
  background:rgba(0,0,0,.68);
  color:rgba(255,255,255,.82);
  text-align:center;
  box-shadow:0 18px 48px rgba(0,0,0,.32);
}
.permit-pdf-native-box strong,
.permit-viewer-unknown strong{
  color:var(--gold2);
  font-size:1.08rem;
}
.permit-pdf-native-box p,
.permit-viewer-unknown p{
  margin:0;
  line-height:1.4;
  font-size:14px;
}
.permit-pdf-native-box .btn-primary-wide,
.permit-viewer-unknown .btn-primary-wide{
  justify-self:center;
  width:min(320px,100%);
}
.permit-pdf-return-note{
  color:rgba(255,255,255,.7);
  font-size:12px !important;
}
.permit-fullscreen-viewer.is-unknown{
  place-items:center;
  padding:calc(74px + env(safe-area-inset-top)) 14px 14px;
}
@media(max-width:760px){
  .permit-fullscreen-viewer{grid-template-rows:auto 1fr auto auto}
  .permit-viewer-close{width:48px;height:48px;font-size:26px}
  .permit-viewer-title-card h1{font-size:22px}
  .permit-viewer-title-card p{font-size:12px}
  .permit-viewer-hint{font-size:12px}
  .permit-image-controls{padding-top:7px}
  .permit-image-controls button{min-height:38px;min-width:44px}
  .permit-pdf-stage{padding-left:10px;padding-right:10px}
  .permit-pdf-stage-embedded{padding:calc(64px + env(safe-area-inset-top)) calc(6px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(6px + env(safe-area-inset-left))}
  .permit-pdf-frame{border-radius:10px}
  .permit-pdf-native-box{padding:14px 13px;border-radius:18px}
}
@media(max-width:460px){
  .permit-viewer-title-card{
    padding-top:calc(10px + env(safe-area-inset-top));
    padding-bottom:8px;
  }
  .permit-viewer-title-card h1{font-size:20px}
  .permit-pdf-native-box p{font-size:12px}
}
@media(orientation:landscape) and (max-height:520px){
  .permit-viewer-title-card{padding-top:8px;padding-bottom:6px}
  .permit-viewer-title-card h1{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .permit-viewer-title-card p{display:none}
  .permit-viewer-hint{display:none}
  .permit-image-controls{padding-top:5px;padding-bottom:calc(5px + env(safe-area-inset-bottom))}
  .permit-viewer-close{width:44px;height:44px;font-size:24px}
}

/* V3D9 — PDF Permis rendu dans l'application avec PDF.js pour conserver le X de retour */
.permit-fullscreen-viewer.is-pdf{
  grid-template-rows:auto 1fr;
}
.permit-pdf-stage-canvas{
  position:relative;
  z-index:500;
  display:grid;
  grid-template-rows:auto auto 1fr;
  gap:8px;
  min-height:0;
  height:100%;
  padding:calc(66px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left));
  background:#050403;
  overflow:hidden;
  touch-action:pan-x pan-y pinch-zoom;
}
.permit-pdf-js-toolbar{
  position:relative;
  z-index:520;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:8px;
  pointer-events:auto;
}
.permit-pdf-js-toolbar button{
  min-width:46px;
  min-height:38px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.10);
  color:#fff;
  font-weight:900;
  font-size:15px;
  padding:8px 13px;
  -webkit-tap-highlight-color:transparent;
}
.permit-pdf-js-toolbar button:active{transform:scale(.96);background:rgba(233,157,34,.24)}
.permit-pdf-status{
  position:relative;
  z-index:520;
  justify-self:center;
  width:min(720px,100%);
  padding:9px 12px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(0,0,0,.70);
  color:rgba(255,255,255,.80);
  font-size:13px;
  font-weight:750;
  text-align:center;
}
.permit-pdf-status.is-error{
  border-color:rgba(255,120,120,.38);
  background:rgba(60,0,0,.72);
  color:#ffdede;
}
.permit-pdf-pages{
  position:relative;
  z-index:500;
  min-height:0;
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  display:grid;
  align-content:start;
  justify-items:center;
  gap:14px;
  padding:2px 2px 18px;
  touch-action:pan-x pan-y pinch-zoom;
}
.permit-pdf-page-wrap{
  width:max-content;
  max-width:100%;
  display:grid;
  justify-items:center;
  gap:5px;
}
.permit-pdf-page-label{
  color:rgba(255,255,255,.64);
  font-size:11px;
  font-weight:850;
  letter-spacing:.04em;
}
.permit-pdf-canvas{
  display:block;
  max-width:none;
  background:#fff;
  border-radius:8px;
  box-shadow:0 12px 36px rgba(0,0,0,.38);
}
@media(max-width:760px){
  .permit-pdf-stage-canvas{
    padding-top:calc(60px + env(safe-area-inset-top));
    gap:7px;
  }
  .permit-pdf-js-toolbar button{min-height:36px;font-size:14px;padding:7px 12px}
  .permit-pdf-status{font-size:12px;padding:8px 10px}
  .permit-pdf-pages{gap:12px;padding-bottom:14px}
}
@media(max-width:520px){
  .permit-pdf-stage-canvas{padding-left:6px;padding-right:6px}
  .permit-pdf-js-toolbar{gap:6px}
  .permit-pdf-js-toolbar button{min-width:42px}
}


/* V3E — Suppression définitive utilisateur */
.delete-user-panel h3{margin-top:18px;color:var(--gold2);}
.deletion-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:14px 0 18px;}
.deletion-summary-grid>div{padding:12px 14px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(0,0,0,.18);}
.deletion-summary-grid strong{display:block;color:var(--gold2);font-size:26px;line-height:1;}
.deletion-summary-grid span{display:block;color:var(--muted);font-size:13px;margin-top:5px;line-height:1.3;}
.delete-confirm-form{margin-top:16px;padding-top:16px;border-top:1px solid rgba(255,255,255,.08);}
.delete-confirm-form .danger-btn{font-size:14px;}

/* V3F — Facturation manuelle / commercialisation prudente */
.billing-stats .stat-card span {
  font-size: clamp(1.3rem, 2vw, 2.1rem);
}
.compact-billing-form textarea,
.invoice-edit-form textarea,
.billing-plan-card textarea {
  min-height: auto;
}
.billing-plan-stack {
  display: grid;
  gap: 1rem;
}
.billing-plan-card,
.invoice-admin-card {
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 18px;
  padding: 1rem;
  background: rgba(255,255,255,.055);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}
.billing-plan-title,
.invoice-card-head,
.invoice-badges,
.payment-list > div,
.payment-form {
  display: flex;
  gap: .65rem;
  align-items: center;
}
.billing-plan-title,
.invoice-card-head {
  justify-content: space-between;
  margin-bottom: .8rem;
}
.invoice-card-head small,
.invoice-mini-grid span,
.payment-list span {
  color: var(--muted, #b9c0b0);
}
.invoice-badges {
  flex-wrap: wrap;
  justify-content: flex-end;
}
.billing-invoice-list {
  display: grid;
  gap: 1rem;
}
.invoice-admin-card.highlight-card {
  outline: 2px solid rgba(232, 167, 73, .75);
}
.invoice-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: .65rem;
  margin: .75rem 0 1rem;
}
.invoice-mini-grid span {
  border-radius: 14px;
  padding: .65rem .75rem;
  background: rgba(0,0,0,.16);
}
.invoice-mini-grid b {
  display: block;
  color: var(--text, #f7f0dd);
  font-size: .8rem;
  margin-bottom: .2rem;
}
.invoice-edit-details {
  margin: .7rem 0;
}
.invoice-edit-details summary {
  cursor: pointer;
  font-weight: 700;
  margin-bottom: .75rem;
}
.payment-panel {
  margin-top: 1rem;
  border-top: 1px solid rgba(255,255,255,.12);
  padding-top: 1rem;
}
.payment-list {
  display: grid;
  gap: .45rem;
  margin: .65rem 0;
}
.payment-list > div {
  justify-content: space-between;
  border-radius: 12px;
  padding: .45rem .55rem;
  background: rgba(0,0,0,.14);
}
.payment-form {
  flex-wrap: wrap;
  align-items: stretch;
}
.payment-form input,
.payment-form select {
  min-width: 140px;
  flex: 1 1 140px;
}
.invoice-status-payee,
.subscription-actif {
  background: rgba(73, 180, 107, .25);
}
.invoice-status-en_retard,
.invoice-status-annulee {
  background: rgba(192, 79, 74, .28);
}
.invoice-status-partielle,
.invoice-status-envoyee {
  background: rgba(232, 167, 73, .25);
}
@media (max-width: 760px) {
  .billing-plan-title,
  .invoice-card-head,
  .payment-list > div {
    align-items: flex-start;
    flex-direction: column;
  }
  .invoice-badges {
    justify-content: flex-start;
  }
}


/* V3F2 — Forfaits commerciaux / aide-mémoire des limites */
.plan-memory-box {
  margin: .75rem 0;
  padding: .8rem .9rem;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  background: rgba(0,0,0,.18);
}
.plan-memory-box ul {
  margin: .45rem 0 .25rem;
  padding-left: 1.2rem;
}
.plan-memory-box li {
  margin: .2rem 0;
}
.plan-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1rem;
}
.plan-summary-card {
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 18px;
  padding: 1rem;
  background: rgba(255,255,255,.055);
}
.plan-summary-card h3 {
  margin: 0 0 .65rem;
  color: var(--gold2);
}
.plan-summary-card ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: .35rem;
}
.plan-summary-card li {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  border-bottom: 1px solid rgba(255,255,255,.08);
  padding-bottom: .28rem;
}
.plan-summary-card li span {
  color: var(--muted);
}

/* V3H — Installations GPS : fond satellite, couche ZEC et points discrets */
.zec-map-select-form {
  display: grid;
  gap: .45rem;
  margin: .85rem 0;
}
.zec-map-select-form label,
.zec-opacity-control {
  color: rgba(255,255,255,.82);
  font-weight: 800;
  font-size: .88rem;
}
.zec-map-select-form select {
  width: 100%;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 14px;
  padding: .82rem .9rem;
  background: rgba(0,0,0,.34);
  color: rgba(255,255,255,.95);
  font-weight: 800;
}
.zec-leaflet-card {
  overflow: hidden;
}
.zec-map-mode-toolbar {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-wrap: wrap;
  margin-bottom: .8rem;
  padding: .65rem;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 16px;
  background: rgba(0,0,0,.22);
}
.zec-map-mode-group {
  display: flex;
  gap: .45rem;
  flex-wrap: wrap;
}
.zec-map-mode-toolbar .ghost-btn.active {
  background: rgba(255,211,109,.24);
  border-color: rgba(255,211,109,.55);
  color: #fff2c2;
}
.zec-opacity-control {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
  min-width: min(100%, 280px);
}
.zec-opacity-control input[type="range"] {
  width: 140px;
  accent-color: #ffd36d;
}
.zec-leaflet-layout {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
}
.zec-leaflet-map {
  width: 100%;
  height: min(76vh, 780px);
  min-height: 520px;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.18);
  background: #1a1a16;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.22), 0 18px 44px rgba(0,0,0,.32);
  z-index: 1;
}
.zec-leaflet-map .leaflet-control-attribution {
  font-size: 10px;
  background: rgba(0,0,0,.48);
  color: rgba(255,255,255,.82);
}
.zec-leaflet-map .leaflet-control-attribution a {
  color: #ffe6a2;
}
.zec-leaflet-map .leaflet-control-zoom a {
  background: rgba(20,15,10,.88);
  color: #fff;
  border-color: rgba(255,255,255,.18);
}
.zec-leaflet-map .leaflet-tooltip {
  background: rgba(16,12,8,.92);
  color: #fff;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 8px 18px rgba(0,0,0,.35);
  font-weight: 800;
}
.zec-point-dot {
  display: inline-block;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  border: 2px solid #050505;
  box-shadow: 0 0 0 1px rgba(255,255,255,.22), 0 4px 12px rgba(0,0,0,.45);
  background: #ff7a00;
}
.zec-point-dot.marker-ok { background: #39ff14; }
.zec-point-dot.marker-bientot { background: #fff200; }
.zec-point-dot.marker-retard { background: #ff1744; }
.zec-point-dot.marker-photo { background: #00e5ff; }
.point-list-item {
  grid-template-columns: 28px minmax(0, 1fr) !important;
}
.point-list-item.active .zec-point-dot {
  transform: scale(1.22);
  box-shadow: 0 0 0 2px rgba(255,211,109,.8), 0 5px 15px rgba(0,0,0,.55);
}
.zec-source-card p {
  margin-bottom: .65rem;
}
@media (max-width: 980px) {
  .zec-leaflet-layout {
    grid-template-columns: 1fr;
  }
  .zec-leaflet-map {
    height: 66vh;
    min-height: 430px;
  }
}
@media (max-width: 760px) {
  .zec-map-mode-toolbar {
    align-items: stretch;
  }
  .zec-map-mode-group,
  .zec-map-mode-group .ghost-btn,
  .zec-map-mode-toolbar > .ghost-btn,
  .zec-opacity-control {
    width: 100%;
  }
  .zec-map-mode-group .ghost-btn {
    flex: 1 1 30%;
  }
  .zec-opacity-control input[type="range"] {
    width: 100%;
  }
  .zec-leaflet-map {
    min-height: 390px;
    height: 62vh;
    border-radius: 15px;
  }
}


/* V3I — Maquette interne page Forfaits / aperçu admin non public */
.admin-dropdown-menu{min-width:275px;max-height:min(76vh,720px);overflow:auto}.internal-preview-warning{display:flex;gap:12px;align-items:flex-start;margin-bottom:18px;border-color:rgba(255,211,109,.38);background:linear-gradient(135deg,rgba(233,157,34,.16),rgba(13,11,8,.94))}.internal-preview-warning strong{color:var(--gold2);min-width:max-content}.internal-preview-warning span{color:var(--muted);line-height:1.45}.plans-preview-shell{overflow:hidden;border-radius:28px;border:1px solid rgba(233,157,34,.28);background:#fffaf1;color:#130f0a;box-shadow:0 24px 90px rgba(0,0,0,.34);margin:18px 0 28px}.plans-preview-hero{background:#080705}.plans-preview-hero picture,.plans-preview-hero img{display:block;width:100%}.plans-preview-hero img{height:clamp(245px,25vw,360px);object-fit:cover;object-position:center}.plans-preview-content{padding:30px clamp(18px,4vw,34px);background:linear-gradient(180deg,#fffdfa,#f7f1e8)}.plans-public-heading{text-align:center;margin:0 auto 22px;max-width:780px}.plans-public-heading h2{font-size:clamp(31px,4vw,46px);line-height:1;margin:5px 0 8px;color:#080705;font-family:Georgia,serif}.plans-public-heading p{color:#261d13;margin:0 0 14px}.plans-season-note{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:min(100%,720px);padding:11px 16px;border:1px solid #eadfce;border-radius:10px;background:#f5efe5;color:#14100b;font-weight:900;font-size:14px}.plans-desktop-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:stretch}.plan-price-card{display:grid;grid-template-rows:auto auto auto auto 1fr auto auto;gap:10px;padding:22px 18px;border:1px solid #d7c9b6;border-radius:14px;background:linear-gradient(180deg,#fffefa,#f9f5ec);box-shadow:0 12px 32px rgba(0,0,0,.07);text-align:center;min-height:470px}.plan-price-card h3{margin:3px 0 0;text-transform:uppercase;font-size:20px;letter-spacing:.02em;color:#090806}.plan-icon{width:54px;height:54px;margin:0 auto;display:grid;place-items:center;border-radius:50%;font-size:31px;background:#edf1e7;color:#0f5d25}.plan-badge{display:inline-flex;justify-content:center;align-items:center;margin:0 auto;color:#0d5c26;font-size:13px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}.plan-price{display:grid;gap:1px;margin:2px 0 7px;color:#090806}.plan-price strong{font-size:34px;line-height:1;font-weight:950}.plan-price small,.plan-price span{font-weight:900}.plan-price small{color:#1d1711}.plan-price span{font-size:13px}.plan-limits-list{list-style:none;display:grid;gap:8px;margin:10px 0 0;padding:0;text-align:left;color:#111}.plan-limits-list li{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:750}.plan-limits-list li span{color:#0b6c2a;font-weight:950}.plan-limits-list li strong{font-weight:950}.plan-map-access{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:12px;border-radius:9px;background:#f0ebe3;color:#1d1711;font-weight:900;font-size:13px}.plan-map-access.included{background:#eaf2e4;color:#0b4f20}.plan-map-access span{font-weight:950}.plan-preview-button{border:1px solid currentColor;border-radius:8px;background:#0f652a;color:#fff;min-height:48px;padding:10px 12px;font-weight:950;cursor:not-allowed;opacity:1}.plan-preview-button small{display:block;font-weight:850}.plan-blue{border-color:#7ea5cf}.plan-blue .plan-icon,.plan-blue .plan-badge,.plan-blue .plan-limits-list li span{color:#064b88}.plan-blue .plan-icon{background:#e7f0fa}.plan-blue .plan-preview-button{background:#0c4c88}.plan-brown{border-color:#9a6d4c}.plan-brown .plan-icon,.plan-brown .plan-badge,.plan-brown .plan-limits-list li span{color:#5b2f12}.plan-brown .plan-icon{background:#f1e7dc}.plan-brown .plan-preview-button{background:#5a3218}.plan-map{border-color:#84a586}.plan-map .plan-icon,.plan-map .plan-badge,.plan-map .plan-limits-list li span{color:#0b5b24}.plan-map .plan-icon{background:#e7f4e5}.plans-accordion{display:none}.plan-accordion-card{border:1px solid #d7c9b6;border-radius:12px;background:#fffefa;margin-bottom:12px;box-shadow:0 10px 26px rgba(0,0,0,.06)}.plan-accordion-card summary{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:15px 16px;cursor:pointer;list-style:none;color:#0f0c08}.plan-accordion-card summary::-webkit-details-marker{display:none}.plan-accordion-card summary::after{content:'⌄';font-size:22px;color:#111}.plan-accordion-card[open] summary::after{content:'⌃'}.plan-accordion-card .plan-icon{margin:0;width:46px;height:46px;font-size:25px}.plan-accordion-card strong{display:block;text-transform:uppercase}.plan-accordion-card small{display:block;margin-top:3px;font-weight:850;color:#14100b}.plan-accordion-body{border-top:1px solid #eee1d1;padding:14px 16px 16px}.plan-limits-list.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}.plans-about-box{max-width:900px;margin:26px auto 0;padding:20px 22px;border:1px solid #e8dccb;border-radius:12px;background:#f7f0e7;color:#15110c}.plans-about-box strong{display:block;font-size:18px;margin-bottom:8px}.plans-about-box p{margin:5px 0;color:#271f16}.plans-preview-footer{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:22px clamp(18px,4vw,34px);background:linear-gradient(180deg,#11100e,#040403);color:#fff}.plans-preview-footer div{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;align-items:center}.plans-preview-footer span{grid-row:span 2;color:#c99534;font-size:25px}.plans-preview-footer strong{text-transform:uppercase;font-size:13px}.plans-preview-footer small{color:#e4d9c9;line-height:1.35}.plans-preview-body .page-shell{width:min(1280px,96vw)}
@media(max-width:1024px){.plans-preview-hero img{height:260px;object-position:center top}.plans-desktop-grid{display:none}.plans-accordion{display:block}.plans-preview-shell{border-radius:22px}.plans-preview-content{padding:24px 22px}.plans-preview-footer{grid-template-columns:repeat(4,1fr);text-align:center}.plans-preview-footer div{grid-template-columns:1fr}.plans-preview-footer span{grid-row:auto}.internal-preview-warning{display:grid}}
@media(max-width:640px){.plans-preview-title .action-row,.plans-preview-title .ghost-btn{width:100%}.plans-preview-hero img{height:250px;object-position:center 18%}.plans-preview-content{padding:20px 13px}.plans-season-note{font-size:12px;padding:10px}.plan-limits-list.compact{grid-template-columns:1fr}.plan-accordion-card summary{padding:12px 11px;gap:9px}.plan-accordion-card .plan-icon{width:40px;height:40px;font-size:22px}.plans-about-box{padding:16px}.plans-preview-footer{grid-template-columns:repeat(4,1fr);gap:6px;padding:18px 8px}.plans-preview-footer strong{font-size:10px}.plans-preview-footer small{display:none}.plans-preview-footer span{font-size:22px}.plans-public-heading h2{font-size:30px}.plans-public-heading p{font-size:14px}}

/* V3J3 — Support intelligent / interface épurée */
.support-widget{position:fixed;right:18px;bottom:92px;z-index:70;display:grid;justify-items:end;gap:10px}.support-widget-toggle{border:1px solid rgba(255,211,109,.6);background:linear-gradient(180deg,#f0b64a,#c97818);color:#1b1005;border-radius:999px;padding:12px 18px;font-weight:950;box-shadow:0 14px 42px rgba(0,0,0,.45);cursor:pointer}.support-widget-panel{width:min(360px,calc(100vw - 24px));padding:16px;border:1px solid rgba(255,211,109,.28);border-radius:22px;background:rgba(12,10,7,.97);box-shadow:0 22px 80px rgba(0,0,0,.55);backdrop-filter:blur(14px)}.support-widget-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.support-widget-head strong{color:var(--gold2);font-size:18px}.support-widget-head button{width:32px;height:32px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.08);color:var(--text);font-size:22px;line-height:1;cursor:pointer}.support-widget-panel p{margin:8px 0 12px;color:var(--muted)}.support-widget-form{display:grid;grid-template-columns:1fr auto;gap:8px}.support-widget-form input{min-height:42px;padding:9px 11px}.support-widget-form button{border-radius:13px;border:1px solid rgba(255,211,109,.65);background:rgba(233,157,34,.18);color:var(--gold2);font-weight:950;padding:0 12px}.support-widget-results{display:grid;gap:8px;margin:12px 0}.support-widget-results a{display:grid;gap:3px;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:rgba(255,255,255,.05);color:var(--text);text-decoration:none}.support-widget-results a strong{font-size:14px;color:var(--gold2)}.support-widget-results a span,.support-widget-empty{font-size:12px;color:var(--muted)}.support-widget-full{display:flex;align-items:center;justify-content:center;padding:10px;border-radius:14px;background:rgba(255,211,109,.11);color:var(--gold2);font-weight:900;text-decoration:none}.support-search-panel{display:grid;gap:16px}.support-main-search label{font-weight:950;color:var(--gold2)}.support-search-row{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:8px}.support-category-list{display:flex;gap:8px;flex-wrap:wrap}.support-category-list a{padding:8px 12px;border:1px solid var(--line-soft);border-radius:999px;background:rgba(0,0,0,.2);color:var(--text);text-decoration:none;font-weight:850}.support-category-list a.active{border-color:rgba(255,211,109,.65);color:var(--gold2);background:rgba(233,157,34,.12)}.support-category-list small{color:var(--muted);margin-left:4px}.support-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;margin-top:18px}.support-results-list{display:grid;gap:14px}.support-result-title{margin:0;color:var(--muted)}.support-answer-card{display:grid;gap:10px}.support-answer-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.support-answer-card h2{margin:0;font-family:Georgia,serif;color:var(--gold2)}.support-short-answer{font-size:18px;font-weight:850;margin:0}.support-detailed-answer{color:var(--text);line-height:1.6;padding:12px;border-radius:16px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.07)}.support-not-found-form{display:grid;gap:8px;border-color:rgba(255,211,109,.25)}.support-side-panel{display:grid;gap:14px;align-content:start}.support-mini-link{text-decoration:none;color:var(--text)}.admin-support-editor textarea{min-height:auto}.table-actions{display:flex;gap:6px;flex-wrap:wrap}.inline-form{display:inline}.unknown-follow-form{display:grid;grid-template-columns:120px minmax(180px,1fr) auto;gap:6px;align-items:center}.unknown-follow-form select,.unknown-follow-form input{min-height:34px;padding:7px 9px;font-size:13px}
@media(max-width:900px){.support-layout{grid-template-columns:1fr}.support-side-panel{order:-1}.support-search-row{grid-template-columns:1fr}.support-search-row .btn-primary-wide{width:100%}.unknown-follow-form{grid-template-columns:1fr}.support-widget{right:12px;bottom:94px}.support-widget-panel{width:calc(100vw - 24px)}}
@media(max-width:560px){.support-widget{bottom:86px}.support-widget-toggle{padding:10px 14px;font-size:13px}.support-widget-panel{border-radius:20px}.support-widget-form{grid-template-columns:1fr}.support-widget-form button{min-height:40px}.support-category-list a{width:100%;display:flex;justify-content:space-between}.support-short-answer{font-size:16px}}

/* V3J3 — Épuration visuelle de la page Support */
.support-category-meta{color:var(--muted);font-size:12px;font-weight:850;letter-spacing:.02em;text-transform:uppercase}.support-answer-top .support-category-meta{opacity:.85}

/* V3K — Premiers pas utilisateur */
.getting-started-page{max-width:1180px}.getting-started-hero h1{max-width:760px}.getting-progress-card{display:grid;gap:12px}.getting-progress-bar{height:14px;border-radius:999px;overflow:hidden;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.28)}.getting-progress-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,rgba(233,157,34,.85),rgba(255,211,109,.95))}.getting-steps-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0}.getting-step-card{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start;border-color:rgba(255,255,255,.10)}.getting-step-card.done{border-color:rgba(79,214,116,.36);background:linear-gradient(135deg,rgba(49,140,67,.14),rgba(13,11,8,.88))}.getting-step-status{display:grid;justify-items:center;gap:6px;min-width:58px}.getting-step-status span{display:grid;place-items:center;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,211,109,.46);background:rgba(233,157,34,.16);color:var(--gold2);font-weight:950}.getting-step-card.done .getting-step-status span{border-color:rgba(79,214,116,.55);background:rgba(79,214,116,.14);color:#96f2ab}.getting-step-status strong{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.getting-step-body h2{margin:0 0 6px;color:var(--gold2);font-family:Georgia,serif;font-size:22px}.getting-step-body p{margin:0 0 8px;line-height:1.5}.getting-step-body small{color:var(--muted);line-height:1.45;display:block}.getting-step-actions{grid-column:2;display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}.getting-step-actions .ghost-btn{min-height:40px}.getting-started-extra{margin-top:6px}.getting-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.getting-summary-grid div{padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(0,0,0,.18)}.getting-summary-grid strong{display:block;color:var(--gold2);font-size:22px}.getting-summary-grid span{color:var(--muted);font-size:13px;font-weight:850}
@media(max-width:880px){.getting-steps-grid{grid-template-columns:1fr}.getting-step-card{grid-template-columns:auto minmax(0,1fr)}.getting-summary-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.getting-step-card{grid-template-columns:1fr}.getting-step-status{display:flex;align-items:center;justify-content:flex-start;min-width:0}.getting-step-status span{width:38px;height:38px}.getting-step-actions{grid-column:1}.getting-step-actions .ghost-btn{width:100%}.getting-summary-grid{grid-template-columns:1fr}.getting-progress-card .panel-head{align-items:flex-start}}

/* V3L — Images Open Graph administrables */
.og-admin-intro{
  margin-bottom:18px;
}
.og-info-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:12px;
}
.og-info-grid div{
  padding:14px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:18px;
  background:rgba(0,0,0,.22);
}
.og-info-grid strong,
.og-info-grid span{
  display:block;
}
.og-info-grid strong{
  color:var(--gold2);
  margin-bottom:5px;
}
.og-info-grid span{
  color:var(--muted);
  line-height:1.4;
}
.og-admin-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:18px;
}
.og-card{
  display:grid;
  gap:14px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:24px;
  background:linear-gradient(180deg,rgba(30,26,20,var(--module-alpha,.92)),rgba(14,12,10,var(--module-alpha,.92)));
  box-shadow:var(--shadow);
}
.og-card h2{
  margin:0;
  color:var(--gold2);
  font-family:Georgia,serif;
}
.og-card-head{
  align-items:flex-start;
}
.og-badges{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.og-preview-wrap{
  width:100%;
  aspect-ratio:1200 / 630;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.30);
}
.og-preview-img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.og-preview-placeholder{
  height:100%;
  display:grid;
  place-items:center;
  padding:18px;
  text-align:center;
  color:var(--muted);
  border:1px dashed rgba(255,255,255,.18);
  border-radius:18px;
  background:linear-gradient(135deg,rgba(255,211,109,.08),rgba(0,0,0,.25));
}
.og-preview-placeholder.uses-default{
  color:var(--gold2);
  border-color:rgba(255,211,109,.34);
}
.og-current-meta{
  display:grid;
  gap:6px;
  padding:13px;
  border-radius:18px;
  background:rgba(0,0,0,.22);
  border:1px solid rgba(255,255,255,.09);
}
.og-current-meta strong{
  color:#fff6dc;
}
.og-current-meta span,
.og-current-meta small{
  color:var(--muted);
  line-height:1.42;
}
.og-current-meta a{
  color:var(--gold2);
  text-decoration:none;
  font-weight:800;
}
.og-form{
  gap:12px;
}
.og-form textarea{
  min-height:86px;
}
.ghost-btn.danger{
  border-color:rgba(255,108,108,.42);
  color:#ffd0d0;
}
@media (max-width:720px){
  .og-admin-grid{
    grid-template-columns:1fr;
  }
  .og-badges{
    justify-content:flex-start;
  }
}

/* V3N2 — Secteur hors ligne essentiel amélioré */
.offline-sector-hero {
  align-items: stretch;
}
.offline-sector-grid {
  align-items: stretch;
}
.offline-sector-map-wrap {
  min-height: 360px;
  border-radius: 24px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.14);
  background:
    linear-gradient(rgba(255,255,255,0.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.055) 1px, transparent 1px),
    radial-gradient(circle at 25% 20%, rgba(255,255,255,0.08), transparent 24%),
    rgba(10, 14, 12, 0.64);
  background-size: 20px 20px, 20px 20px, auto, auto;
}
.offline-sector-map {
  width: 100%;
  min-height: 360px;
  display: block;
  touch-action: manipulation;
}
.sector-map-label {
  font-size: 3px;
  fill: rgba(255,255,255,0.9);
  paint-order: stroke;
  stroke: rgba(0,0,0,0.78);
  stroke-width: 0.55px;
  stroke-linejoin: round;
}
.offline-sector-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 12px;
  color: rgba(255,255,255,0.78);
  font-size: 0.92rem;
}
.offline-sector-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.sector-dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 999px;
  border: 2px solid rgba(0,0,0,0.88);
  background: #ff7a00;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.24), 0 0 14px rgba(255,255,255,0.16);
  flex: 0 0 auto;
}
.sector-dot.ok { background: #39ff14; }
.sector-dot.bientot { background: #fff200; }
.sector-dot.retard { background: #ff1744; }
.sector-dot.installation { background: #ff7a00; }
.sector-dot.user { background: #00e5ff; }
.offline-sector-list {
  display: grid;
  gap: 10px;
}
.offline-sector-item {
  width: 100%;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  text-align: left;
  padding: 12px 14px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,0.12);
  background: rgba(0,0,0,0.22);
  color: inherit;
  cursor: pointer;
}
.offline-sector-item:hover,
.offline-sector-item.active {
  border-color: rgba(255,255,255,0.34);
  background: rgba(255,255,255,0.08);
}
.offline-sector-item strong,
.offline-sector-item small,
.offline-sector-item em {
  display: block;
}
.offline-sector-item small,
.offline-sector-item em {
  color: rgba(255,255,255,0.68);
  font-style: normal;
  font-size: 0.86rem;
}
.offline-sector-selected-card h3 {
  margin-top: 0;
}
@media (max-width: 760px) {
  .offline-sector-map-wrap,
  .offline-sector-map {
    min-height: 300px;
  }
  .offline-sector-item {
    grid-template-columns: auto 1fr;
  }
  .offline-sector-item em {
    grid-column: 2;
  }
}


.offline-sector-empty-card {
  border-color: rgba(255, 204, 92, 0.36);
}
.offline-sector-empty-card .button-row {
  margin-top: 14px;
}
.offline-sector-hero .field-tip[data-sector-storage-info] {
  display: block;
  max-width: 320px;
  color: rgba(255,255,255,0.66);
}
.offline-prepare-status[data-state="ok"] {
  color: #aaffaa;
}
.offline-prepare-status[data-state="warn"] {
  color: #ffe38f;
}
.offline-prepare-status[data-state="error"] {
  color: #ffb4b4;
}
.offline-prepare-status[data-state="loading"] {
  color: #cfe9ff;
}
.offline-sector-map polyline {
  pointer-events: none;
}


/* V3N3 — Correctif mobile : menus Gestion/Admin défilables sur téléphone */
@media (max-width: 820px) {
  .app-body.mobile-menu-open {
    overflow: hidden;
  }

  .topbar {
    position: sticky;
    top: 0;
    overflow: visible;
  }

  .nav {
    max-height: calc(100dvh - var(--topbar-height, 66px) - env(safe-area-inset-bottom, 0px) - 10px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    padding-bottom: calc(18px + env(safe-area-inset-bottom, 0px));
  }

  .nav.open {
    display: flex;
  }

  .nav-dropdown-menu,
  .admin-dropdown-menu {
    max-height: none;
    overflow: visible;
  }

  .nav-dropdown[open] .nav-dropdown-menu {
    display: grid;
  }

  .nav a,
  .nav-dropdown summary,
  .nav .nav-dropdown-menu a {
    min-height: 44px;
  }
}


/* V3N4 — Correctif mobile robuste : menu Admin visible et panneau réellement défilable */
@media (max-width: 820px) {
  .app-body.mobile-menu-open {
    overflow: hidden !important;
  }

  .topbar {
    position: sticky;
    top: 0;
    z-index: 1000;
    overflow: visible !important;
  }

  .nav {
    display: none;
    position: fixed !important;
    top: var(--topbar-height, 66px) !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    max-height: none !important;
    height: auto !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    z-index: 999 !important;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 6px;
    padding: 14px 12px calc(130px + env(safe-area-inset-bottom, 0px)) !important;
    background: rgba(5,4,3,.97) !important;
    border-top: 1px solid rgba(255,211,109,.15);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(12px);
  }

  .nav.open {
    display: flex !important;
  }

  .nav > a,
  .nav > .nav-dropdown {
    flex: 0 0 auto;
  }

  /* Pour les administrateurs : Admin reste visible avant le long bloc Gestion. */
  .nav > a { order: 10; }
  .nav > .admin-nav-dropdown { order: 20; }
  .nav > .gestion-nav-dropdown { order: 30; }
  .nav > .logout-link { order: 90; }

  .nav-dropdown-menu,
  .admin-dropdown-menu {
    position: static !important;
    top: auto !important;
    right: auto !important;
    min-width: 0 !important;
    max-height: none !important;
    overflow: visible !important;
    margin: 6px 0 10px 0 !important;
    padding: 8px !important;
    display: grid;
  }

  .nav-dropdown:not([open]) .nav-dropdown-menu {
    display: none !important;
  }

  .nav-dropdown[open] .nav-dropdown-menu {
    display: grid !important;
  }

  .nav a,
  .nav-dropdown summary,
  .nav .nav-dropdown-menu a {
    min-height: 46px;
    display: flex;
    align-items: center;
  }

  .nav-dropdown summary {
    border: 1px solid rgba(255,211,109,.30);
    background: rgba(233,157,34,.10);
  }

  .admin-nav-dropdown summary {
    color: var(--gold2);
    border-color: rgba(255,211,109,.55);
    background: rgba(233,157,34,.18);
  }
}


/* V3N5 — Correctif mobile final : tiroir vertical, défilable, Admin accessible.
   Objectif : éviter le menu horizontal sur téléphone et ne plus perdre Admin sous Gestion de l’Appli. */
@media (max-width: 1100px) {
  :root {
    --topbar-height: 72px;
  }

  .menu-toggle {
    display: block !important;
    flex: 0 0 auto;
  }

  .topbar {
    position: sticky !important;
    top: 0 !important;
    z-index: 3000 !important;
    overflow: visible !important;
  }

  .app-body.mobile-menu-open {
    overflow: hidden !important;
  }

  .nav {
    display: none !important;
    position: fixed !important;
    top: var(--topbar-height, 72px) !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
    touch-action: pan-y !important;
    z-index: 2999 !important;

    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 8px !important;

    padding: 16px 12px calc(160px + env(safe-area-inset-bottom, 0px)) !important;
    background: rgba(5, 4, 3, .985) !important;
    border-top: 1px solid rgba(255, 211, 109, .18) !important;
    border-bottom: 1px solid var(--line) !important;
    backdrop-filter: blur(12px) !important;
  }

  .nav.open {
    display: flex !important;
  }

  .nav > a,
  .nav > details,
  .nav > .nav-dropdown {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    box-sizing: border-box !important;
  }

  .nav > a,
  .nav-dropdown summary {
    width: 100% !important;
    min-height: 50px !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 14px 20px !important;
    border-radius: 16px !important;
    font-size: 16px !important;
    line-height: 1.2 !important;
    white-space: normal !important;
  }

  .nav-dropdown summary {
    border: 1px solid rgba(255, 211, 109, .30) !important;
    background: rgba(233, 157, 34, .10) !important;
  }

  .admin-nav-dropdown summary {
    color: var(--gold2) !important;
    border-color: rgba(255, 211, 109, .60) !important;
    background: rgba(233, 157, 34, .18) !important;
  }

  .gestion-nav-dropdown summary {
    color: var(--gold2) !important;
  }

  .nav-dropdown-menu,
  .admin-dropdown-menu {
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 5px !important;
    margin: 8px 0 12px 0 !important;
    padding: 8px !important;
    border-radius: 16px !important;
    background: rgba(255,255,255,.045) !important;
    box-shadow: none !important;
    border-color: rgba(255,255,255,.12) !important;
  }

  .nav-dropdown:not([open]) > .nav-dropdown-menu {
    display: none !important;
  }

  .nav-dropdown[open] > .nav-dropdown-menu {
    display: grid !important;
  }

  .nav .nav-dropdown-menu a,
  .nav .admin-dropdown-menu a {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    min-height: 46px !important;
    box-sizing: border-box !important;
    padding: 12px 16px !important;
    border-radius: 13px !important;
    white-space: normal !important;
  }

  .logout-link {
    margin-top: 4px !important;
  }
}

/* V3N6 — Menu mobile en vrai tiroir au premier plan.
   Le menu est déplacé temporairement dans <body> par JavaScript afin d'éviter
   qu'un panneau de page ou un élément avec backdrop/filter passe devant lui. */
@media (max-width: 1100px) {
  .app-body.mobile-menu-open {
    overflow: hidden !important;
  }

  .topbar {
    position: sticky !important;
    top: 0 !important;
    z-index: 2147483000 !important;
    overflow: visible !important;
  }

  .menu-toggle {
    display: block !important;
    position: relative !important;
    z-index: 2147483002 !important;
  }

  body > .nav.mobile-nav-portal,
  body > .nav.mobile-nav-portal.open {
    display: flex !important;
    position: fixed !important;
    top: var(--topbar-height, 72px) !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: calc(100dvh - var(--topbar-height, 72px)) !important;
    max-height: calc(100dvh - var(--topbar-height, 72px)) !important;
    min-height: 0 !important;
    z-index: 2147483001 !important;

    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 8px !important;

    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
    touch-action: pan-y !important;

    box-sizing: border-box !important;
    padding: 16px 14px calc(150px + env(safe-area-inset-bottom, 0px)) !important;
    background: #050403 !important;
    border-top: 1px solid rgba(255, 211, 109, .22) !important;
    box-shadow: 0 28px 90px rgba(0,0,0,.92) !important;
    backdrop-filter: none !important;
  }

  body > .nav.mobile-nav-portal:not(.open) {
    display: none !important;
  }

  body > .nav.mobile-nav-portal > a,
  body > .nav.mobile-nav-portal > details,
  body > .nav.mobile-nav-portal > .nav-dropdown {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    box-sizing: border-box !important;
  }

  body > .nav.mobile-nav-portal > a,
  body > .nav.mobile-nav-portal .nav-dropdown > summary {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    min-height: 54px !important;
    box-sizing: border-box !important;
    padding: 14px 22px !important;
    border-radius: 17px !important;
    border: 1px solid rgba(255, 211, 109, .20) !important;
    background: rgba(255,255,255,.035) !important;
    color: var(--text) !important;
    font-size: 17px !important;
    line-height: 1.2 !important;
    white-space: normal !important;
  }

  body > .nav.mobile-nav-portal .admin-nav-dropdown > summary {
    color: var(--gold2) !important;
    border-color: rgba(255,211,109,.62) !important;
    background: rgba(233,157,34,.18) !important;
  }

  body > .nav.mobile-nav-portal .gestion-nav-dropdown > summary {
    color: var(--gold2) !important;
    border-color: rgba(255,211,109,.45) !important;
    background: rgba(233,157,34,.14) !important;
  }

  body > .nav.mobile-nav-portal .nav-dropdown-menu,
  body > .nav.mobile-nav-portal .admin-dropdown-menu {
    position: static !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    max-height: none !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    margin: 8px 0 12px 0 !important;
    padding: 8px !important;
    border-radius: 17px !important;
    border: 1px solid rgba(255,255,255,.11) !important;
    background: rgba(255,255,255,.045) !important;
    box-shadow: none !important;
  }

  body > .nav.mobile-nav-portal .nav-dropdown:not([open]) > .nav-dropdown-menu {
    display: none !important;
  }

  body > .nav.mobile-nav-portal .nav-dropdown[open] > .nav-dropdown-menu {
    display: grid !important;
  }

  body > .nav.mobile-nav-portal .nav-dropdown-menu a,
  body > .nav.mobile-nav-portal .admin-dropdown-menu a {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    min-height: 48px !important;
    box-sizing: border-box !important;
    padding: 12px 16px !important;
    border-radius: 14px !important;
    white-space: normal !important;
  }

  body > .nav.mobile-nav-portal .logout-link {
    margin-top: 8px !important;
  }

  .terrain-dock {
    z-index: 40 !important;
  }
}

/* V3N9 — Finition Secteur hors ligne essentiel */
.offline-sector-device-status {
  border-color: rgba(255, 211, 109, 0.28);
}
.offline-sector-status-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 14px 0 10px;
}
.offline-sector-status-grid div {
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  background: rgba(0,0,0,0.22);
  padding: 13px 14px;
}
.offline-sector-status-grid span {
  display: block;
  color: rgba(255,255,255,0.66);
  font-size: 0.84rem;
  margin-bottom: 6px;
}
.offline-sector-status-grid strong {
  display: block;
  color: #fff7df;
  font-size: 1.08rem;
}
.offline-sector-help-card strong {
  color: var(--gold2);
}
.nav a.active[href*="secteur-hors-ligne"] {
  box-shadow: inset 0 -2px 0 rgba(255, 211, 109, 0.72);
}
@media (max-width: 860px) {
  .offline-sector-status-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 520px) {
  .offline-sector-status-grid {
    grid-template-columns: 1fr;
  }
}

/* V3O — Choix UGAF / territoire dans la saison */
.territory-info-box {
  margin-top: 1rem;
  padding: 1rem;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(0,0,0,.28);
  display: grid;
  gap: .35rem;
}
.territory-info-box strong { color: #fff3cf; }
.territory-info-box span { color: rgba(255,255,255,.86); line-height: 1.45; }
.territory-subsection {
  margin: .35rem 0 .55rem;
  padding: .9rem;
  border-radius: 16px;
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.13);
  display: grid;
  gap: .75rem;
}
.territory-subsection h3 {
  margin: 0;
  font-size: 1.03rem;
  color: #ffe6a8;
}
.territory-subsection p {
  margin: -.25rem 0 .1rem;
  color: rgba(255,255,255,.75);
  line-height: 1.45;
}
.form-two {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}
.territory-form small {
  display: block;
  margin-top: .35rem;
  color: rgba(255,255,255,.68);
  line-height: 1.35;
}
.season-territory-summary {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .45rem;
  margin: .35rem 0;
}
.season-territory-summary small {
  display: inline-flex;
  padding: .22rem .5rem;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(0,0,0,.18);
}
@media (max-width: 720px) {
  .form-two { grid-template-columns: 1fr; }
  .territory-subsection { padding: .75rem; }
}

/* V3O2 — Affichage territoire dans tableau, carte et installations */
.territory-dashboard-card,
.zec-territory-card {
  margin: 18px 0;
}
.territory-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0;
}
.territory-summary-grid div {
  padding: 12px 13px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.20);
  min-width: 0;
}
.territory-summary-grid span {
  display: block;
  color: rgba(255,255,255,.62);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .055em;
  margin-bottom: 5px;
}
.territory-summary-grid strong {
  display: block;
  color: #fff3cf;
  font-size: 17px;
  line-height: 1.25;
  word-break: break-word;
}
.territory-summary-grid.compact strong { font-size: 15px; }
.territory-prefill-box {
  padding: 12px 14px;
  border-radius: 16px;
  border: 1px solid rgba(143,227,162,.24);
  background: rgba(143,227,162,.08);
  color: rgba(255,255,255,.88);
  display: grid;
  gap: 4px;
}
.territory-prefill-box strong { color: #d8ffd8; }
.territory-prefill-box small { color: rgba(255,255,255,.68); font-weight: 650; }
@media (max-width: 860px) {
  .territory-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .territory-summary-grid { grid-template-columns: 1fr; }
}

/* V3O5 — Assistant Saison / Territoire / Hors ligne */
.territory-assistant-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
  gap: 18px;
  align-items: start;
}
.territory-assistant-main,
.territory-assistant-side,
.territory-assistant-card {
  border-color: rgba(255, 211, 109, 0.20);
}
.territory-assistant-card.needs-attention {
  border-color: rgba(255, 180, 80, 0.36);
  box-shadow: 0 0 0 1px rgba(255, 180, 80, 0.08), 0 18px 42px rgba(0,0,0,.22);
}
.territory-choice-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.territory-choice-grid label {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 10px;
  align-items: start;
  padding: 12px 13px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.13);
  background: rgba(0,0,0,.20);
  cursor: pointer;
}
.territory-choice-grid input { margin-top: 3px; }
.territory-choice-grid strong { color: #fff3cf; }
.territory-choice-grid small {
  grid-column: 2;
  color: rgba(255,255,255,.68);
  line-height: 1.35;
}
.territory-start-checklist {
  display: grid;
  gap: 10px;
  margin: 12px 0 14px;
}
.territory-start-checklist.compact {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.territory-start-checklist > div {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 0 10px;
  padding: 12px 13px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.20);
}
.territory-start-checklist > div.done {
  border-color: rgba(143,227,162,.30);
  background: rgba(143,227,162,.08);
}
.territory-start-checklist span {
  grid-row: span 2;
  display: inline-grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: rgba(255,211,109,.16);
  color: #ffe7ad;
  font-weight: 900;
}
.territory-start-checklist .done span {
  background: rgba(143,227,162,.22);
  color: #d9ffd7;
}
.territory-start-checklist strong { color: #fff3cf; }
.territory-start-checklist small {
  color: rgba(255,255,255,.68);
  line-height: 1.35;
}
.territory-next-actions {
  display: grid;
  gap: 8px;
  margin: 12px 0;
}
.territory-warning-box {
  padding: 12px 14px;
  border-radius: 16px;
  border: 1px solid rgba(255,180,80,.28);
  background: rgba(255,180,80,.08);
  color: rgba(255,255,255,.88);
  display: grid;
  gap: 6px;
}
.territory-warning-box strong { color: #ffe2a0; }
.territory-warning-box span { color: rgba(255,255,255,.78); }
@media (max-width: 980px) {
  .territory-assistant-grid { grid-template-columns: 1fr; }
  .territory-start-checklist.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
  .territory-choice-grid,
  .territory-start-checklist.compact { grid-template-columns: 1fr; }
}


/* V3O6B — Préparation terrain / vérification de saison */
.field-prep-card { border-color: rgba(143,227,162,.22); }
.field-prep-mini-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:14px 0; }
.field-prep-mini { display:grid; grid-template-columns:34px minmax(0,1fr); gap:0 10px; padding:12px; border-radius:16px; border:1px solid rgba(255,255,255,.12); background:rgba(0,0,0,.18); }
.field-prep-mini.done { border-color:rgba(143,227,162,.32); background:rgba(143,227,162,.08); }
.field-prep-mini span { grid-row:span 2; display:grid; place-items:center; width:30px; height:30px; border-radius:999px; background:rgba(255,211,109,.16); color:#ffe7ad; font-weight:950; }
.field-prep-mini.done span { background:rgba(143,227,162,.23); color:#d9ffd7; }
.field-prep-mini strong { color:#fff3cf; }
.field-prep-mini small { color:rgba(255,255,255,.68); line-height:1.35; }
.field-prep-mini em { font-style:normal; color:inherit; }
.field-prep-grid { display:grid; gap:12px; margin-top:14px; }
.field-prep-step { display:grid; grid-template-columns:42px minmax(0,1fr) auto; gap:14px; align-items:center; padding:14px; border-radius:20px; border:1px solid rgba(255,255,255,.12); background:rgba(0,0,0,.18); }
.field-prep-step.done { border-color:rgba(143,227,162,.32); background:rgba(143,227,162,.075); }
.field-prep-step.optional { border-style:dashed; }
.field-prep-step-icon { width:38px; height:38px; border-radius:999px; display:grid; place-items:center; background:rgba(255,211,109,.15); color:#ffe7ad; font-weight:950; }
.field-prep-step.done .field-prep-step-icon { background:rgba(143,227,162,.23); color:#d9ffd7; }
.field-prep-step-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.field-prep-step h3 { margin:0; color:#fff3cf; }
.field-prep-step p { margin:.3rem 0 .25rem; }
.field-prep-step small { color:rgba(255,255,255,.70); font-weight:700; }
.field-prep-overview .panel-head { align-items:flex-start; }
.field-prep-extra .getting-summary-grid.compact { grid-template-columns:repeat(2,minmax(0,1fr)); }
.badge.ready-warn { background:rgba(255,211,109,.14); color:#ffe7ad; }
.badge.ready-ok { background:rgba(143,227,162,.14); color:#d9ffd7; }
@media(max-width:900px){ .field-prep-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr));} .field-prep-step{grid-template-columns:38px minmax(0,1fr);} .field-prep-step>a{grid-column:2; justify-self:start;} }
@media(max-width:560px){ .field-prep-mini-grid{grid-template-columns:1fr;} .field-prep-step{grid-template-columns:1fr;} .field-prep-step-icon{width:34px;height:34px;} .field-prep-step-head{align-items:flex-start; flex-direction:column;} .field-prep-step>a{grid-column:auto; width:100%;} }


/* V3O7 — Démarrer / Préparation terrain unifié */
.start-title h1 { margin-bottom: 0.35rem; }
.start-hero { align-items: stretch; }
.start-path-card { margin-top: 1rem; }
.start-flow-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.start-flow-grid > div { min-height: 112px; }
.start-next-card { margin-top: 1rem; }
.compact-start-page .hero-panel { margin-bottom: 1rem; }
@media (max-width: 720px) {
  .start-flow-grid { grid-template-columns: 1fr; }
  .start-flow-grid > div { min-height: auto; }
}


/* V3P1 — Simplification navigation / tableau : raccourcis essentiels seulement. */
.dashboard-essential-links .panel-head{align-items:flex-start}
.compact-quick-links{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.compact-quick-links .ghost-btn{justify-content:center;text-align:center}
@media(max-width:560px){.dashboard-essential-links .muted-note{font-size:13px}.compact-quick-links{grid-template-columns:1fr}}


/* V3P2 — cohérence des pages terrain */
.terrain-details{margin:12px 0 0;border:1px solid rgba(255,255,255,.10);border-radius:16px;background:rgba(0,0,0,.14);padding:10px 12px;}
.terrain-details summary{cursor:pointer;font-weight:950;color:var(--gold2);list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.terrain-details summary::-webkit-details-marker{display:none;}
.terrain-details summary::after{content:'+';font-size:20px;line-height:1;color:var(--muted);}
.terrain-details[open] summary::after{content:'−';}
.terrain-details .field-facts{margin-top:10px;}
.terrain-details p{margin:10px 0 0;}
.compact-help-details{display:block;font-weight:700;}
.terrain-page-note{padding:16px 18px;}
.terrain-essential-facts span b{color:#ffe2a2;}

/* V3P3 — Gestion de l’Appli regroupée */
.nav-menu-heading{
  display:block;
  margin:8px 8px 3px;
  padding:6px 8px 4px;
  color:var(--gold2);
  font-size:11px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.08em;
  border-top:1px solid rgba(255,255,255,.08);
  opacity:.95;
}
.nav-menu-heading:first-child{border-top:0;margin-top:2px}
.gestion-menu{min-width:265px}
@media(max-width:820px){
  .nav-menu-heading{margin:10px 8px 2px;padding:7px 10px 4px;font-size:11px;color:#f4d793;background:rgba(233,157,34,.07);border-radius:10px;border-top:1px solid rgba(255,255,255,.08)}
  .nav-menu-heading:first-child{border-top:0}
}

/* V3P4 — cohérence admin */
.admin-page-title-compact .action-row.admin-primary-actions{gap:8px;justify-content:flex-end;align-content:flex-start}
.admin-guidance-card{border-color:rgba(255,211,109,.20);background:rgba(255,211,109,.055)}
.admin-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0;}
.admin-section-card{display:flex;flex-direction:column;gap:10px;}
.admin-section-card .muted-note{margin:0;color:rgba(255,255,255,.72)}
.admin-tile-list{display:grid;gap:9px;margin-top:2px;}
.admin-tile-list a{display:grid;gap:3px;padding:12px 13px;border-radius:16px;border:1px solid rgba(255,255,255,.10);background:rgba(0,0,0,.15);text-decoration:none;color:inherit;transition:transform .15s ease,border-color .15s ease,background .15s ease;}
.admin-tile-list a:hover{transform:translateY(-1px);border-color:rgba(255,211,109,.26);background:rgba(255,211,109,.06);}
.admin-tile-list strong{color:#fff3cf;font-weight:950;}
.admin-tile-list span{color:rgba(255,255,255,.70);font-size:13px;line-height:1.35;}
.compact-admin-links{grid-template-columns:1fr;}
.compact-data-list{margin-top:6px;}
.admin-secondary-summary{margin-top:16px;}
.admin-dropdown-menu{min-width:275px;}
.admin-dropdown-menu .nav-menu-heading{margin-top:8px;}
.admin-stats-compact .stat-card strong{font-size:13px;}
@media(max-width:980px){.admin-section-grid{grid-template-columns:1fr}.admin-page-title-compact .action-row.admin-primary-actions{justify-content:flex-start}.admin-primary-actions .ghost-btn{flex:1 1 170px;text-align:center;justify-content:center}}
@media(max-width:560px){.admin-primary-actions .ghost-btn{flex:1 1 100%;}.admin-tile-list a{padding:11px 12px}.admin-guidance-card{padding:14px}.admin-section-card .panel-head{align-items:flex-start}.admin-section-card .panel-head h2{font-size:1.05rem}}

/* V3P5 — vérification globale / finition cohérence */


/* V3Q0 — prototype admin MapLibre / PMTiles */
.maplibre-prototype-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 1rem;
  align-items: stretch;
}
.maplibre-zec-map {
  min-height: 70vh;
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 18px;
  overflow: hidden;
  background: #1a1a16;
}
.maplibre-prototype-card .zec-map-sidebar {
  max-height: 70vh;
  overflow: auto;
}
.pmtiles-test-form {
  display: grid;
  gap: 0.75rem;
}
.pmtiles-test-form input {
  width: 100%;
}
@media (max-width: 860px) {
  .maplibre-prototype-layout {
    grid-template-columns: 1fr;
  }
  .maplibre-zec-map {
    min-height: 62vh;
  }
  .maplibre-prototype-card .zec-map-sidebar {
    max-height: none;
  }
}

/* V3Q1 — Prototype MapLibre hors ligne léger */
.offline-test-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  align-items: center;
  margin: 0.75rem 0 0.8rem;
}
.maplibre-offline-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 1rem;
  align-items: stretch;
}
.offline-map-shell {
  position: relative;
  min-height: 620px;
  border-radius: 24px;
  overflow: hidden;
  background: #151512;
  border: 1px solid rgba(255,255,255,0.15);
  box-shadow: 0 18px 44px rgba(0,0,0,0.25);
}
.offline-map-image {
  width: 100%;
  height: 100%;
  min-height: 620px;
  object-fit: cover;
  display: block;
  filter: saturate(1.05) contrast(1.03);
}
.offline-map-marker-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.offline-map-marker {
  position: absolute;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  border: 3px solid #111;
  box-shadow: 0 0 0 2px rgba(255,255,255,0.9), 0 4px 12px rgba(0,0,0,0.45);
  transform: translate(-50%, -50%);
  cursor: pointer;
  pointer-events: auto;
}
.offline-map-marker.active {
  width: 24px;
  height: 24px;
  box-shadow: 0 0 0 4px #fff, 0 0 0 8px rgba(255,122,0,0.42), 0 8px 20px rgba(0,0,0,0.55);
  z-index: 5;
}
.offline-map-label {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  padding: 0.5rem 0.75rem;
  border-radius: 999px;
  background: rgba(0,0,0,0.68);
  color: #fff;
  font-weight: 700;
  font-size: 0.85rem;
}
.offline-state-card {
  padding: 0.85rem;
  margin: 0.85rem 0;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 16px;
  background: rgba(0,0,0,0.14);
}
.offline-state-card h3 {
  margin: 0 0 0.45rem;
}
.offline-state-card p {
  margin: 0.25rem 0;
  font-size: 0.92rem;
}
@media (max-width: 920px) {
  .maplibre-offline-layout {
    grid-template-columns: 1fr;
  }
  .offline-map-shell,
  .offline-map-image {
    min-height: 520px;
  }
}
@media (max-width: 560px) {
  .offline-test-actions .primary-btn,
  .offline-test-actions .ghost-btn {
    width: 100%;
    justify-content: center;
  }
  .offline-map-shell,
  .offline-map-image {
    min-height: 430px;
    border-radius: 18px;
  }
  .offline-map-marker {
    width: 20px;
    height: 20px;
  }
  .offline-map-label {
    left: 0.65rem;
    right: 0.65rem;
    text-align: center;
  }
}

/* V3Q1B — cadrage carte hors ligne et points au premier plan */
.maplibre-offline-card {
  overflow: hidden;
}
.maplibre-offline-layout {
  align-items: start;
}
.offline-map-shell {
  height: min(72vh, 760px);
  min-height: 480px;
  max-height: 760px;
  width: 100%;
  max-width: 100%;
  touch-action: none;
  isolation: isolate;
}
.offline-map-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: none;
  object-fit: contain;
  transform-origin: center center;
  will-change: transform;
  background: #11110f;
}
.offline-map-marker-layer {
  z-index: 4;
  overflow: hidden;
}
.offline-map-marker {
  z-index: 6;
}
.offline-map-label,
.offline-map-zoom-indicator {
  z-index: 7;
}
.offline-map-zoom-indicator {
  position: absolute;
  right: 1rem;
  bottom: 1rem;
  padding: 0.45rem 0.7rem;
  border-radius: 999px;
  background: rgba(0,0,0,0.72);
  color: #fff;
  font-weight: 900;
  font-size: 0.82rem;
  border: 1px solid rgba(255,255,255,0.16);
}
.offline-test-actions [data-v3q1-zoom-out],
.offline-test-actions [data-v3q1-zoom-in] {
  min-width: 44px;
  font-size: 1.15rem;
  font-weight: 950;
}
@media (max-width: 920px) {
  .offline-map-shell {
    height: 64vh;
    min-height: 420px;
    max-height: 650px;
  }
  .offline-map-image {
    min-height: 0;
  }
}
@media (max-width: 560px) {
  .offline-map-shell {
    height: 58vh;
    min-height: 360px;
    max-height: 520px;
  }
  .offline-map-image {
    min-height: 0;
  }
  .offline-map-zoom-indicator {
    right: 0.65rem;
    bottom: 3.1rem;
  }
}


/* V3Q1C — cadrage robuste mobile, zoom étendu et aucun débordement */
.maplibre-offline-card,
.maplibre-offline-card .maplibre-offline-layout,
.maplibre-offline-card .offline-map-shell,
.maplibre-offline-card .zec-map-sidebar {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.maplibre-offline-card .maplibre-offline-layout {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
  overflow: hidden;
}
.maplibre-offline-card .maplibre-offline-layout > * {
  min-width: 0;
}
.maplibre-offline-card .offline-map-shell {
  position: relative;
  width: 100%;
  height: clamp(420px, 68vh, 760px);
  min-height: 0;
  max-height: none;
  overflow: hidden !important;
  contain: layout paint;
  overscroll-behavior: contain;
  touch-action: none;
}
.maplibre-offline-card .offline-map-image {
  position: absolute !important;
  inset: 0 !important;
  display: block;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: contain !important;
  transform-origin: center center;
  user-select: none;
  -webkit-user-drag: none;
}
.maplibre-offline-card .offline-map-marker-layer {
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.maplibre-offline-card .offline-test-actions button:disabled {
  opacity: .65;
  cursor: wait;
}
@media (max-width: 920px) {
  .maplibre-offline-card .maplibre-offline-layout {
    grid-template-columns: minmax(0, 1fr);
  }
  .maplibre-offline-card .offline-map-shell {
    height: clamp(380px, 60vh, 620px);
  }
}
@media (max-width: 560px) {
  .maplibre-offline-card {
    overflow: hidden;
  }
  .maplibre-offline-card .offline-map-shell {
    width: 100%;
    height: min(58vh, 500px);
    min-height: 340px;
    border-radius: 16px;
  }
  .maplibre-offline-card .offline-test-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .55rem;
  }
  .maplibre-offline-card .offline-test-actions [data-v3q1-prepare],
  .maplibre-offline-card .offline-test-actions [data-v3q1-read],
  .maplibre-offline-card .offline-test-actions [data-v3q1-clear] {
    grid-column: 1 / -1;
  }
}

/* V3Q1D — contrôleur mobile neuf, zoom/pincement et scène cartographique confinée */
.maplibre-offline-card .offline-test-actions {
  position: relative;
  z-index: 20;
  pointer-events: auto !important;
}
.maplibre-offline-card .offline-test-actions button {
  position: relative;
  z-index: 21;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(255,211,109,.22);
}
.maplibre-offline-card .offline-map-shell {
  position: relative;
  overflow: hidden !important;
  touch-action: none !important;
  -ms-touch-action: none !important;
  user-select: none;
  -webkit-user-select: none;
  cursor: grab;
}
.maplibre-offline-card .offline-map-shell:active {
  cursor: grabbing;
}
.maplibre-offline-card .offline-map-stage {
  position: absolute;
  transform-origin: center center;
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  contain: layout paint;
}
.maplibre-offline-card .offline-map-stage .offline-map-image {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: fill !important;
  transform: none !important;
  pointer-events: none !important;
}
.maplibre-offline-card .offline-map-stage .offline-map-marker-layer {
  position: absolute !important;
  inset: 0 !important;
  overflow: visible !important;
  pointer-events: none;
}
.maplibre-offline-card .offline-map-stage .offline-map-marker {
  pointer-events: auto !important;
  touch-action: manipulation;
}
.maplibre-offline-card .offline-map-label,
.maplibre-offline-card .offline-map-zoom-indicator {
  pointer-events: none;
}
@media (max-width: 560px) {
  .maplibre-offline-card .offline-test-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .maplibre-offline-card .offline-test-actions [data-v3q1-prepare],
  .maplibre-offline-card .offline-test-actions [data-v3q1-read],
  .maplibre-offline-card .offline-test-actions [data-v3q1-clear] {
    grid-column: 1 / -1;
  }
  .maplibre-offline-card .offline-test-actions [data-v3q1-zoom-out],
  .maplibre-offline-card .offline-test-actions [data-v3q1-zoom-in],
  .maplibre-offline-card .offline-test-actions [data-v3q1-fit] {
    width: 100%;
    min-height: 50px;
  }
}


/* V3Q1E — points GPS à taille constante, indépendants du zoom de la carte */
.maplibre-offline-card .offline-map-marker-layer {
  position: absolute !important;
  inset: 0 !important;
  z-index: 12 !important;
  overflow: hidden !important;
  pointer-events: none !important;
  contain: layout paint;
}
.maplibre-offline-card .offline-map-marker-layer .offline-map-marker {
  position: absolute !important;
  width: 16px !important;
  height: 16px !important;
  min-width: 16px !important;
  min-height: 16px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 2px solid #111 !important;
  border-radius: 999px !important;
  box-sizing: border-box !important;
  transform: translate(-50%, -50%) !important;
  transform-origin: center center !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.92), 0 3px 8px rgba(0,0,0,.55) !important;
  pointer-events: auto !important;
  touch-action: manipulation !important;
  z-index: 13 !important;
}
.maplibre-offline-card .offline-map-marker-layer .offline-map-marker.active {
  width: 20px !important;
  height: 20px !important;
  min-width: 20px !important;
  min-height: 20px !important;
  box-shadow: 0 0 0 3px #fff, 0 0 0 6px rgba(255,122,0,.36), 0 4px 10px rgba(0,0,0,.62) !important;
  z-index: 15 !important;
}
.maplibre-offline-card .offline-map-label,
.maplibre-offline-card .offline-map-zoom-indicator {
  z-index: 20 !important;
}
@media (max-width: 560px) {
  .maplibre-offline-card .offline-map-marker-layer .offline-map-marker {
    width: 17px !important;
    height: 17px !important;
    min-width: 17px !important;
    min-height: 17px !important;
  }
  .maplibre-offline-card .offline-map-marker-layer .offline-map-marker.active {
    width: 21px !important;
    height: 21px !important;
    min-width: 21px !important;
    min-height: 21px !important;
  }
}

/* V3Q1F — Stabilisation mobile globale : aucune dérive horizontale des pages.
   Le zoom d’accessibilité du navigateur demeure disponible; la carte conserve
   ses propres gestes tactiles dans son cadre. */
html {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overscroll-behavior-x: none;
}
body,
.app-body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  overscroll-behavior-x: none;
  position: relative;
}

/* Les conteneurs flex/grid peuvent autrement imposer une largeur minimale. */
.page-shell,
.topbar,
.footer,
main,
section,
article,
.panel-card,
.data-card,
.hero-panel,
.module-grid,
.cards-grid,
.form-grid,
.action-row,
.nav,
.nav-dropdown,
.nav-dropdown-menu,
.table-wrap {
  min-width: 0;
  max-width: 100%;
}

img,
video,
svg,
canvas,
iframe {
  max-width: 100%;
}

/* Les textes, adresses, noms de fichiers et tableaux ne doivent plus élargir la page. */
pre,
code,
.long-value,
.breakable,
td,
th {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Les tiroirs mobiles utilisent left/right; 100vw peut créer une largeur excédentaire. */
@media (max-width: 820px) {
  .nav,
  body > .nav.mobile-nav-portal,
  body > .nav.mobile-nav-portal.open {
    width: auto !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  .page-shell,
  .footer,
  .auth-card {
    width: calc(100% - 24px);
    max-width: calc(100% - 24px);
  }

  .support-widget,
  .support-widget-panel,
  .terrain-dock {
    max-width: calc(100% - 20px);
  }

  /* Défilement vertical de l’application; gestes de carte inchangés. */
  body:not(.permit-viewer-page) {
    touch-action: pan-y pinch-zoom;
  }
}


/* V3Q1G — Correctif ciblé des menus déroulants sur ordinateur.
   Les tiroirs mobiles validés restent inchangés sous 1100 px. */
@media (min-width: 1101px) {
  .nav > .nav-dropdown {
    flex: 0 0 auto;
    min-width: max-content;
  }

  .nav-dropdown > summary {
    white-space: nowrap;
    min-width: max-content;
  }

  .admin-nav-dropdown > .admin-dropdown-menu {
    width: min(380px, calc(100vw - 32px));
    min-width: min(350px, calc(100vw - 32px));
    max-width: min(380px, calc(100vw - 32px));
    max-height: calc(100vh - 104px);
    overflow-y: auto;
    overflow-x: hidden;
    grid-template-columns: minmax(0, 1fr);
    scrollbar-gutter: stable;
  }

  .gestion-nav-dropdown > .gestion-menu {
    width: min(350px, calc(100vw - 32px));
    min-width: min(320px, calc(100vw - 32px));
    max-width: min(350px, calc(100vw - 32px));
    max-height: calc(100vh - 104px);
    overflow-y: auto;
    overflow-x: hidden;
    grid-template-columns: minmax(0, 1fr);
    scrollbar-gutter: stable;
  }

  .nav .admin-dropdown-menu a,
  .nav .gestion-menu a,
  .admin-dropdown-menu .nav-menu-heading,
  .gestion-menu .nav-menu-heading {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    line-height: 1.35;
  }

  .nav .admin-dropdown-menu a,
  .nav .gestion-menu a {
    padding: 11px 14px;
  }
}

/* V3Q2 — Prototype PMTiles vectoriel ZEC Maison-de-Pierre */
.pmtiles-intro-card,
.pmtiles-map-card,
.pmtiles-content-card,
.pmtiles-limit-card {
  overflow: hidden;
}
.pmtiles-summary-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.pmtiles-status-line {
  margin-top: 14px;
  padding: 11px 13px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.13);
  background: rgba(0,0,0,.20);
  color: rgba(255,255,255,.82);
  font-size: 13px;
  line-height: 1.4;
}
.pmtiles-status-line[data-state="ok"] {
  border-color: rgba(88,214,141,.35);
  background: rgba(27,112,65,.18);
  color: #d8ffe8;
}
.pmtiles-status-line[data-state="warn"] {
  border-color: rgba(255,205,91,.38);
  background: rgba(143,93,18,.19);
  color: #fff1c8;
}
.pmtiles-status-line[data-state="error"] {
  border-color: rgba(255,95,95,.38);
  background: rgba(124,30,30,.20);
  color: #ffd8d8;
}
.pmtiles-toolbar {
  margin-bottom: 12px;
}
.pmtiles-zec-map {
  min-height: 72vh;
}
.pmtiles-sidebar {
  display: grid;
  align-content: start;
  gap: 14px;
}
.pmtiles-layer-legend {
  padding: 13px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 16px;
  background: rgba(0,0,0,.17);
}
.pmtiles-legend-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  margin-top: 8px;
  color: rgba(255,255,255,.78);
  font-size: 13px;
}
.pmtiles-swatch {
  flex: 0 0 22px;
  width: 22px;
  height: 12px;
  border-radius: 4px;
  border: 1px solid rgba(255,255,255,.55);
  background: rgba(255,255,255,.18);
}
.pmtiles-swatch.lakes { background: #2f79a3; border-color: #8fc9e7; }
.pmtiles-swatch.ugaf { background: transparent; border: 2px solid #ff9e35; }
.pmtiles-swatch.forest { background: #596a3e; }
.pmtiles-swatch.protected { background: #2d6f45; }
.pmtiles-swatch.extent { background: transparent; border-style: dashed; border-color: #f4f0df; }
.pmtiles-layer-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.pmtiles-layer-grid article {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 13px;
  border-radius: 15px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.15);
}
.pmtiles-layer-grid strong {
  color: #fff2cc;
}
.pmtiles-layer-grid span {
  color: rgba(255,255,255,.70);
  font-size: 13px;
  line-height: 1.4;
}
.pmtiles-map-card .maplibregl-popup-content {
  color: #1c211b;
  line-height: 1.35;
}
.pmtiles-map-card .maplibregl-popup-content small {
  color: #4f5c50;
}

@media (max-width: 980px) {
  .pmtiles-summary-grid,
  .pmtiles-layer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 860px) {
  .pmtiles-zec-map {
    min-height: 64vh;
  }
  .pmtiles-toolbar {
    align-items: stretch;
  }
  .pmtiles-toolbar .zec-map-mode-group {
    width: 100%;
  }
  .pmtiles-toolbar .zec-map-mode-group .ghost-btn {
    flex: 1 1 150px;
  }
}
@media (max-width: 560px) {
  .pmtiles-summary-grid,
  .pmtiles-layer-grid {
    grid-template-columns: 1fr;
  }
  .pmtiles-zec-map {
    min-height: 58vh;
    border-radius: 14px;
  }
  .pmtiles-toolbar .zec-map-mode-group {
    display: grid;
    grid-template-columns: 1fr;
  }
  .pmtiles-toolbar > .ghost-btn {
    flex: 1 1 calc(50% - 6px);
  }
}


/* V3Q2B — Empilement propre de la barre latérale PMTiles.
   Le panneau entier défile verticalement; aucun sous-bloc ne se superpose. */
.pmtiles-prototype-note {
  margin: 0 0 12px;
  padding: 11px 13px;
  border-radius: 14px;
  border: 1px solid rgba(255, 211, 109, .20);
  background: rgba(255, 211, 109, .065);
  color: rgba(255,255,255,.80);
  font-size: 13px;
  line-height: 1.45;
}
.pmtiles-prototype-note strong { color: #fff1c4; }

.maplibre-prototype-card .pmtiles-sidebar {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  gap: 14px !important;
  grid-template-rows: none !important;
  grid-auto-rows: auto !important;
  max-height: 72vh !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding-right: 4px;
  scrollbar-gutter: stable;
}
.maplibre-prototype-card .pmtiles-sidebar > * {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  z-index: auto;
}
.maplibre-prototype-card .pmtiles-sidebar .zec-selected-point,
.maplibre-prototype-card .pmtiles-sidebar .pmtiles-layer-legend,
.maplibre-prototype-card .pmtiles-sidebar .zec-map-list {
  overflow: hidden;
}
.maplibre-prototype-card .pmtiles-sidebar .zec-map-list {
  max-height: none !important;
  overflow: visible !important;
}
.maplibre-prototype-card .pmtiles-sidebar .zec-selected-point p,
.maplibre-prototype-card .pmtiles-sidebar .zec-map-list-item strong,
.maplibre-prototype-card .pmtiles-sidebar .zec-map-list-item small,
.maplibre-prototype-card .pmtiles-sidebar .pmtiles-legend-row span {
  overflow-wrap: anywhere;
  word-break: normal;
}
.maplibre-prototype-card .pmtiles-sidebar .button-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.maplibre-prototype-card .pmtiles-sidebar .button-row > * {
  flex: 1 1 150px;
  min-width: 0;
}

@media (max-width: 860px) {
  .maplibre-prototype-card .pmtiles-sidebar {
    max-height: none !important;
    overflow: visible !important;
    padding-right: 0;
    scrollbar-gutter: auto;
  }
}


/* V3Q3/V3Q3B — Légende du fond terrain PMTiles détaillé. */
.pmtiles-swatch.terrain-roads {
  height: 5px;
  border: 0;
  border-radius: 999px;
  background: #d5a85c;
  box-shadow: 0 0 0 1px rgba(20,20,20,.75);
}
.pmtiles-swatch.terrain-water {
  background: #285d78;
  border-color: #73b8d4;
}
.pmtiles-swatch.terrain-forest {
  background: #263f2d;
  border-color: #5d805e;
}


/* V3Q3B — Lisibilité terrain, attribution compacte et finitions mobile. */
.pmtiles-swatch.terrain-roads {
  height: 7px;
  background: #ffd276;
  box-shadow: 0 0 0 2px #17120b;
}
.pmtiles-swatch.terrain-tracks {
  height: 7px;
  border: 0;
  border-radius: 999px;
  background: repeating-linear-gradient(90deg, #e9bb61 0 8px, transparent 8px 12px);
  box-shadow: 0 0 0 1px #10100d;
}
.maplibre-prototype-card .pmtiles-sidebar [hidden] {
  display: none !important;
}
.pmtiles-map-card .maplibregl-ctrl-attrib.maplibregl-compact {
  max-width: min(82vw, 320px);
}
.pmtiles-map-card .maplibregl-ctrl-attrib.maplibregl-compact:not(.maplibregl-compact-show) {
  background-color: rgba(255,255,255,.92);
}
@media (max-width: 860px) {
  .pmtiles-limit-card { margin-bottom: 118px; }
  .pmtiles-map-card .maplibregl-ctrl-attrib.maplibregl-compact {
    max-width: 72vw;
    font-size: 10px;
  }
}

/* TPMDP-P1 — Prototype admin des terrains de piégeage Maison-de-Pierre */
.tpmdp-summary-grid { margin-top: 1rem; }

.tpmdp-warning {
  margin-top: 1rem;
  padding: .9rem 1rem;
  border: 1px solid rgba(232, 190, 84, .55);
  border-radius: 12px;
  background: rgba(232, 190, 84, .12);
}

.tpmdp-status {
  margin-top: 1rem;
  padding: .75rem 1rem;
  border-radius: 10px;
  background: rgba(255, 255, 255, .06);
}

.tpmdp-status[data-state="ok"] { background: rgba(93, 185, 105, .16); }
.tpmdp-status[data-state="error"] { background: rgba(207, 81, 81, .18); }

.tpmdp-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 330px);
  gap: 1rem;
}

.tpmdp-map {
  min-height: 650px;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .14);
  background: #182219;
}

.tpmdp-sidebar { display: grid; align-content: start; gap: 1rem; }

.tpmdp-selected-card,
.tpmdp-list-card,
.tpmdp-legend {
  padding: 1rem;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, .12);
  background: rgba(12, 18, 13, .72);
}

.tpmdp-details { display: grid; gap: .5rem; margin: 1rem 0; }

.tpmdp-details div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: .45rem;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.tpmdp-details dt { color: var(--muted, #b7b7b7); }
.tpmdp-details dd { margin: 0; text-align: right; font-weight: 700; }

.tpmdp-list {
  display: grid;
  gap: .45rem;
  max-height: 485px;
  overflow: auto;
  padding-right: .25rem;
}

.tpmdp-list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  width: 100%;
  padding: .7rem .75rem;
  border: 1px solid rgba(255, 255, 255, .11);
  border-radius: 10px;
  background: rgba(255, 255, 255, .035);
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.tpmdp-list-item:hover,
.tpmdp-list-item.active {
  border-color: rgba(255, 211, 77, .8);
  background: rgba(255, 211, 77, .12);
}

.tpmdp-list-item small { color: var(--muted, #b7b7b7); }

.tpmdp-legend { display: grid; gap: .55rem; }

.tpmdp-legend > div {
  display: flex;
  align-items: center;
  gap: .6rem;
}

.tpmdp-swatch {
  width: 28px;
  height: 12px;
  border-radius: 3px;
  display: inline-block;
}

.tpmdp-swatch.tp {
  background: rgba(101, 185, 107, .55);
  border: 2px solid #f5f1d4;
}

.tpmdp-swatch.selected {
  background: rgba(255, 211, 77, .72);
  border: 2px solid #fff3a1;
}

.tpmdp-swatch.boundary {
  height: 0;
  border-top: 3px dashed #ffffff;
}

.tpmdp-swatch.aq {
  height: 0;
  border-top: 3px solid #ff9f43;
}

@media (max-width: 900px) {
  .tpmdp-layout { grid-template-columns: 1fr; }
  .tpmdp-map { min-height: 520px; }
  .tpmdp-list { max-height: 320px; }
}

/* TPMDP-P2R4 — brun exact et MultiPolygon complet */
.tpmdp-map {
  position: relative;
  width: 100%;
  height: clamp(580px, 72vh, 780px);
  min-height: 580px;
  isolation: isolate;
}

.tpmdp-map.maplibregl-map {
  width: 100%;
}

.tpmdp-map .maplibregl-canvas-container,
.tpmdp-map .maplibregl-canvas {
  max-width: none;
}

.tpmdp-map .maplibregl-ctrl-group {
  box-shadow: 0 0 0 2px rgba(0, 0, 0, .55);
}

.tpmdp-swatch.tp {
  background: rgba(101, 185, 107, .32);
  border: 3px solid #3b240c;
  box-shadow: 0 0 0 1px #f3e5c8;
}

.tpmdp-swatch.selected {
  background: rgba(255, 191, 0, .42);
  border: 3px solid #3b240c;
  box-shadow: 0 0 0 1px #f7e8c9;
}

@media (max-width: 900px) {
  .tpmdp-map {
    height: clamp(500px, 68vh, 680px);
    min-height: 500px;
  }
}

@media (max-width: 560px) {
  .tpmdp-map {
    height: 62vh;
    min-height: 460px;
  }
}

/* V3Q9F-B2TP4-UX1 — Carte terrain plein écran hors ligne */
body.v3q7c-fullscreen-map{
  overflow:hidden;
  background:#050403;
}
body.v3q7c-fullscreen-map .topbar,
body.v3q7c-fullscreen-map .offline-status-bar,
body.v3q7c-fullscreen-map [data-support-widget],
body.v3q7c-fullscreen-map .support-widget{
  display:none!important;
}
body.v3q7c-fullscreen-map .page-shell{
  width:100vw!important;
  max-width:none!important;
  min-height:100dvh!important;
  margin:0!important;
  padding:0!important;
}
body.v3q7c-fullscreen-map #v3q7cOfflineMap{
  position:fixed!important;
  inset:0!important;
  z-index:450;
  width:100vw!important;
  height:100dvh!important;
  min-height:100dvh!important;
  border:0!important;
  border-radius:0!important;
}
body.v3q7c-fullscreen-map .v3q7c-map-return{
  position:fixed;
  z-index:760;
  right:calc(12px + env(safe-area-inset-right));
  bottom:calc(14px + env(safe-area-inset-bottom));
  left:auto;
  top:auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:10px 14px;
  border-radius:999px;
  border:1px solid rgba(255,226,130,.70);
  background:linear-gradient(135deg,#ffd36d,#f29a24);
  color:#241407;
  font-weight:950;
  font-size:14px;
  line-height:1;
  text-decoration:none;
  box-shadow:0 12px 34px rgba(0,0,0,.46);
  backdrop-filter:blur(8px);
}
body.v3q7c-fullscreen-map .v3q7c-map-return:focus,
body.v3q7c-fullscreen-map .v3q7c-map-return:hover{
  background:linear-gradient(135deg,#ffe08a,#ffab32);
  color:#1f1206;
  transform:translateY(-1px);
}
body.v3q7c-fullscreen-map .maplibregl-ctrl-top-right{
  top:calc(10px + env(safe-area-inset-top));
}
body.v3q7c-fullscreen-map .maplibregl-ctrl-bottom-left,
body.v3q7c-fullscreen-map .maplibregl-ctrl-bottom-right{
  bottom:calc(8px + env(safe-area-inset-bottom));
}
@media(max-width:760px){
  body.v3q7c-fullscreen-map .v3q7c-map-return{
    right:calc(8px + env(safe-area-inset-right));
    bottom:calc(10px + env(safe-area-inset-bottom));
    left:auto;
    top:auto;
    min-height:42px;
    padding:9px 12px;
    font-size:13px;
  }
  body.v3q7c-fullscreen-map .maplibregl-ctrl-top-right{
    top:calc(8px + env(safe-area-inset-top));
  }
}
