/* =====================================================================
   FireFly 15.1 — habillage « verre » (style iPhone)
   Fonds translucides et floutés, coins arrondis, ombres douces, couleurs
   un peu plus discrètes. Chargé APRÈS styles.css et v10.css.
   ===================================================================== */
:root{
  --glass:rgba(255,255,255,.62);
  --glass-strong:rgba(255,255,255,.82);
  --glass-line:rgba(255,255,255,.65);
  --glass-edge:rgba(15,23,42,.07);
  --glass-shadow:0 8px 32px rgba(15,23,42,.08),0 1px 0 rgba(255,255,255,.7) inset;
  --blur:saturate(180%) blur(20px);
  --ff-radius:20px;--ff-radius-lg:26px;
  --ink:#0f172a;--ink-2:#475569;--ink-3:#64748b;
}
html,body{background:#eef2f7}
body{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",Inter,"Segoe UI",sans-serif;
  color:var(--ink);-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1100px 700px at 8% -10%,color-mix(in srgb,var(--ff-red) 14%,transparent),transparent 60%),
    radial-gradient(900px 600px at 105% 10%,rgba(37,99,235,.12),transparent 60%),
    radial-gradient(900px 700px at 50% 120%,rgba(24,135,84,.08),transparent 60%),
    #eef2f7;
  background-attachment:fixed;
}
h1{letter-spacing:-.03em;font-weight:800}h2,h3{letter-spacing:-.015em}

/* Surfaces en verre */
.panel,.kpi,.carditem,.ranking-card,.campaign-card,.ov-tile,.preview-card,.led-member,.version-card,.hist-camp,.asset-row,.sector-row,.wk-mail,.diagnostic-card{
  background:var(--glass)!important;
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid var(--glass-line)!important;
  box-shadow:var(--glass-shadow)!important;
  border-radius:var(--ff-radius);
}
.panel{padding:18px}
.kpi:before{opacity:.55}
.sidebar,.glass,.mobilebar,.bottomnav,.maptools,.terrain-status,.eraser-bar,.lex-panel{
  background:rgba(255,255,255,.7)!important;
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border:1px solid var(--glass-line)!important;
  box-shadow:0 10px 40px rgba(15,23,42,.12)!important;
}
.modal{background:rgba(15,23,42,.28)!important;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.modalbox{background:var(--glass-strong)!important;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-line)!important;box-shadow:0 30px 80px rgba(15,23,42,.25)!important}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:rgba(255,255,255,.88);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.leaflet-popup-content-wrapper{border-radius:20px;border:1px solid var(--glass-line)}
.doc-viewer-box{background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}

/* Boutons */
button{border-radius:14px;font-weight:650;letter-spacing:-.005em}
button:not(.secondary):not(.linklike):not(.lex-item):not(.wk-mail-att):not(.nav-group-title):hover{box-shadow:0 8px 20px color-mix(in srgb,var(--ff-red) 28%,transparent)}
button.secondary{background:rgba(255,255,255,.6)!important;border:1px solid rgba(15,23,42,.08)!important;color:#1e293b!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
button.secondary:hover{background:rgba(255,255,255,.9)!important}
button.danger{background:#dc2626}

/* Champs */
input,select,textarea,.rich-editor{background:rgba(255,255,255,.75)!important;border:1px solid rgba(15,23,42,.10)!important;border-radius:12px!important}
input:focus,select:focus,textarea:focus,.rich-editor:focus{border-color:color-mix(in srgb,var(--ff-red) 55%,#fff)!important;box-shadow:0 0 0 4px color-mix(in srgb,var(--ff-red) 14%,transparent)!important;background:#fff!important}
textarea{width:100%;max-width:100%;box-sizing:border-box;resize:vertical;min-height:72px;overflow-wrap:anywhere;line-height:1.45}
.rich-editor{max-width:100%;overflow-wrap:anywhere;word-break:break-word}.rich-editor img{max-width:100%;height:auto}
label{min-width:0}input,select{max-width:100%;min-width:0}

/* Tableaux : toujours dans leur cadre */
.table-scroll{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px}
table{background:transparent!important}
th{background:rgba(248,250,252,.85)!important;color:var(--ink-3)!important}
td{border-bottom:1px solid rgba(15,23,42,.06)!important}
tr:hover td{background:rgba(255,255,255,.55)!important}
.page,.content,.panel{min-width:0;max-width:100%}
.page{overflow-x:hidden}
img,canvas,svg,video{max-width:100%}

/* Menu latéral regroupé */
.sidebar{overflow-y:auto;scrollbar-width:thin}
.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-nav>*{flex:0 0 auto}
.sidebar button.active{background:var(--ff-red)!important;color:#fff!important;box-shadow:0 6px 16px color-mix(in srgb,var(--ff-red) 30%,transparent)}
.nav-group{display:grid;margin-top:6px}
.nav-group-title{display:flex!important;justify-content:space-between;align-items:center;background:transparent!important;color:var(--ink-3)!important;font-size:11px!important;font-weight:750!important;text-transform:uppercase;letter-spacing:.06em;padding:8px 12px!important;min-height:0!important;box-shadow:none!important}
.nav-group-title i{font-style:normal;transition:transform .2s;font-size:15px}.nav-group.open .nav-group-title i{transform:rotate(90deg)}
.nav-group-items{display:none;gap:2px}.nav-group.open .nav-group-items{display:grid}
.nav-group-items button{padding-left:20px!important}

/* Pastilles d'état plus douces */
.status-pill,.badge{border-radius:999px}

/* Carte */
#map .leaflet-control-zoom,#sectorMap .leaflet-control-zoom{border:0;border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(15,23,42,.15)}
#map .leaflet-control-zoom a,#sectorMap .leaflet-control-zoom a{background:rgba(255,255,255,.82);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.basemap-switch,.eraser-switch{background:rgba(255,255,255,.82)!important;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}

/* Mobile */
@media(max-width:800px){
  .panel{padding:14px;border-radius:18px}
  .content h1{font-size:26px}
  .bottomnav{border-radius:24px!important}
  .modalbox{border-radius:26px 26px 0 0!important}
  .toolbar{grid-template-columns:1fr}
  .tablewrap table,.table-scroll table{min-width:560px}
  .ov-table{min-width:0!important}
}
/* Moins d'effets si le téléphone le demande (économie de batterie / accessibilité) */
@media (prefers-reduced-transparency:reduce){
  .panel,.kpi,.carditem,.sidebar,.glass,.mobilebar,.bottomnav,.modalbox,.ov-tile{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#fff!important}
}
.v-body{overflow-wrap:anywhere;min-width:0}.v-body pre{max-width:100%;white-space:pre-wrap}.version-card summary{min-width:0}.version-card summary>*{min-width:0;overflow-wrap:anywhere}
@media(max-width:800px){.sidebar{overflow-y:auto!important;-webkit-overflow-scrolling:touch}.sidebar-nav{flex:0 0 auto!important;overflow:visible!important;min-height:auto!important}.sidebar>*{flex-shrink:0}}
/* V15.2 */
.login-legal{margin:12px 0 0;text-align:center;font-size:12px}.login-legal a{color:#64748b}
.login-center{margin:4px 0 8px;font-weight:700;text-align:center}
a.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border-radius:14px;padding:10px 14px;font-weight:650}
a.button.secondary{background:rgba(255,255,255,.6);border:1px solid rgba(15,23,42,.08);color:#1e293b}

/* ===== V15.3 : SumUp ===== */
.sumup-pay{display:flex;flex-direction:column;gap:6px;margin:6px 0 10px}
.sumup-btn{width:100%;padding:14px;border-radius:14px;font-weight:700;background:#0f172a;color:#fff;border:0}
.sumup-pay small{color:var(--muted,#64748b)}
.sumup-pending,.sumup-state{padding:10px 12px;border-radius:12px;margin:6px 0 10px;background:rgba(14,165,233,.12);border:1px solid rgba(14,165,233,.35);font-size:14px}
.sumup-state.s-confirme{background:rgba(22,163,74,.12);border-color:rgba(22,163,74,.35)}
.sumup-state.s-introuvable,.sumup-state.s-ecart,.sumup-state.s-annulee,.sumup-state.s-rembourse{background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.35)}
.sumup-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12.5px;font-weight:600;background:rgba(100,116,139,.15);white-space:nowrap}
.sumup-badge.s-confirme{background:rgba(22,163,74,.15);color:#15803d}
.sumup-badge.s-introuvable,.sumup-badge.s-ecart,.sumup-badge.s-annulee{background:rgba(220,38,38,.12);color:#b91c1c}
.sumup-badge.s-attente{background:rgba(234,179,8,.18);color:#854d0e}
.sumup-table{width:100%;border-collapse:collapse}.sumup-table td,.sumup-table th{padding:8px;text-align:left;vertical-align:top;border-bottom:1px solid rgba(100,116,139,.18)}
.sumup-table tr.ignored{opacity:.5}
button.small{padding:6px 10px;font-size:13px}
.sumup-cands{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}
.sumup-cand{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;background:rgba(255,255,255,.7);color:inherit;border:1px solid rgba(100,116,139,.25)}
.sumup-cand.same{border-color:#16a34a}
label.check{display:flex;align-items:center;gap:8px;flex-direction:row}label.check input{width:auto}
#sumupPage .toolbar select{max-width:280px}
@media(max-width:600px){.sumup-table thead{display:none}.sumup-table tr{display:block;padding:8px 0;border-bottom:1px solid rgba(100,116,139,.25)}.sumup-table td{display:block;border:0;padding:3px 4px}.sumup-table td[data-l]::before{content:attr(data-l)" : ";color:#64748b;font-size:12px}}
@media(prefers-color-scheme:dark){.sumup-cand{background:rgba(30,41,59,.7)}}

/* ===== V15.4 : fluidité sur téléphone =====
   Le flou « verre » (backdrop-filter) est recalculé à chaque image quand la carte bouge :
   c'est ce qui fait ramer les téléphones. Sur écran tactile, on garde le même look avec des
   fonds presque opaques, sans flou. Le fond dégradé ne reste plus « fixe » au défilement. */
@media (pointer:coarse){
  :root{--glass:rgba(255,255,255,.9);--glass-strong:rgba(255,255,255,.96)}
  *,*::before,*::after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .sidebar,.glass,.mobilebar,.bottomnav,.maptools,.terrain-status,.eraser-bar,.lex-panel{background:rgba(255,255,255,.95)!important}
  .modal{background:rgba(15,23,42,.38)!important}
  .modalbox{background:#fff!important}
  button.secondary{background:rgba(255,255,255,.92)!important}
  .leaflet-popup-content-wrapper,.leaflet-popup-tip,.basemap-switch,.eraser-switch,#map .leaflet-control-zoom a{background:rgba(255,255,255,.96)!important}
  body{background-attachment:scroll}
  /* ombres plus légères : moins de travail de dessin */
  .panel,.kpi,.carditem,.ranking-card,.campaign-card,.ov-tile,.preview-card,.led-member,.version-card{box-shadow:0 2px 10px rgba(15,23,42,.06)!important}
}
/* V15.4 : fiche du donateur */
.donor-card{padding:12px 14px;border-radius:14px;margin:0 0 12px;background:rgba(37,99,235,.07);border:1px solid rgba(37,99,235,.22)}
.donor-head{font-size:16px;margin-bottom:6px}.donor-lines{display:flex;flex-direction:column;gap:3px;font-size:14px;margin-bottom:8px;overflow-wrap:anywhere}
