/* ═══════════════════════════════════════════════════════
   WEEKLIST — "Carnet d'aventures"
   Fusionné depuis weeklist-redesign.html + app.js
═══════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=DM+Sans:wght@300;400;500;700&display=swap');

:root {
  --sand:       #F5EFE4;
  --cream:      #FAF7F2;
  --bark:       #3D2B1F;
  --rust:       #C0572A;
  --rust-light: #E8744A;
  --moss:       #4A6741;
  --mist:       #B8C4B0;
  --shadow:     rgba(61,43,31,0.12);
  /* rétrocompat app.js */
  --bg1:#F5EFE4; --bg2:#FAF7F2;
  --card:rgba(255,255,255,.85);
  --stroke:rgba(61,43,31,.10);
  --text:#3D2B1F; --muted:rgba(61,43,31,.60);
  --brand:#C0572A; --brand2:#E8744A;
  --danger:#dc2626; --radius:16px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;}
body{
  font-family:'DM Sans',ui-sans-serif,system-ui,-apple-system,sans-serif;
  color:var(--bark);
  background:
    radial-gradient(900px 600px at 15% 5%,  rgba(192,87,42,.07),transparent 55%),
    radial-gradient(900px 600px at 85% 15%, rgba(74,103,65,.07), transparent 55%),
    linear-gradient(180deg,var(--cream),var(--sand));
  overflow-x:hidden;
}
a{color:inherit;}

/* ═══ LOGIN PAGE ═══ */
.login-page{display:flex;min-height:100vh;}

.login-left{
  flex:1;position:relative;overflow:hidden;display:none;
}
@media(min-width:768px){.login-left{display:block;}}
.login-bg-photo{
  position:absolute;inset:0;
  background-image:url('https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200&q=80');
  background-size:cover;background-position:center;
  filter:brightness(.55) saturate(.85);
}
.login-left::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(to top,rgba(20,10,5,.92) 0%,rgba(20,10,5,.2) 55%,transparent 100%);
  z-index:1;
}
.login-left-content{
  position:relative;z-index:2;padding:3rem;height:100%;
  display:flex;flex-direction:column;justify-content:space-between;
}
.login-brand{
  font-family:'Playfair Display',serif;
  font-size:1.8rem;color:var(--sand);letter-spacing:-.02em;
}
.login-brand span{color:var(--rust-light);font-style:italic;}
.login-tagline{
  color:rgba(245,239,228,.75);font-size:.95rem;font-weight:300;line-height:1.6;max-width:280px;
}
.login-tagline strong{
  display:block;font-family:'Playfair Display',serif;
  font-size:2rem;color:var(--sand);font-weight:400;line-height:1.2;margin-bottom:.5rem;
}

.login-right{
  width:100%;max-width:460px;
  display:flex;flex-direction:column;justify-content:center;
  padding:3rem 2.5rem;position:relative;background:var(--cream);
}
@media(min-width:768px){.login-right{min-height:100vh;}}
@media(max-width:767px){
  .login-page{
    background-image:url('https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?w=900&q=80');
    background-size:cover;background-position:center top;
  }
  .login-right{
    background:rgba(250,247,242,.89);
    backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    min-height:100vh;
  }
}

.mobile-logo{display:flex;align-items:center;gap:.75rem;margin-bottom:2.5rem;}
@media(min-width:768px){.mobile-logo{display:none;}}
.login-logo-img{width:80px;height:auto;filter:drop-shadow(0 4px 12px rgba(61,43,31,.15));}

.login-title{
  font-family:'Playfair Display',serif;
  font-size:2.2rem;font-weight:400;line-height:1.2;margin-bottom:.6rem;
}
.login-title em{color:var(--rust);font-style:italic;}
.login-subtitle{color:#7A6558;font-size:.9rem;font-weight:300;margin-bottom:2rem;}

.form-group{margin-bottom:1.2rem;}
.form-label{
  display:block;font-size:.78rem;font-weight:500;
  text-transform:uppercase;letter-spacing:.08em;color:#7A6558;margin-bottom:.5rem;
}
.form-input-wrap{position:relative;}
.form-input{
  width:100%;padding:.9rem 2.8rem .9rem 3rem;
  border:1.5px solid #DDD5C8;border-radius:12px;background:#fff;
  font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--bark);
  outline:none;transition:border-color .2s,box-shadow .2s;
  -webkit-appearance:none;letter-spacing:.15em;
}
.form-input:focus{border-color:var(--rust);box-shadow:0 0 0 3px rgba(192,87,42,.1);}
.form-input::placeholder{letter-spacing:0;color:#BDB5AC;}
.form-icon{
  position:absolute;left:1rem;top:50%;transform:translateY(-50%);
  font-size:1rem;pointer-events:none;color:#BDB5AC;
}
.form-toggle{
  position:absolute;right:1rem;top:50%;transform:translateY(-50%);
  background:none;border:none;cursor:pointer;color:#BDB5AC;font-size:.85rem;
}
.form-toggle:hover{color:var(--rust);}

.btn-login{
  width:100%;padding:1rem;margin-top:.25rem;
  background:linear-gradient(135deg,var(--rust),var(--rust-light));
  color:#fff;border:none;border-radius:12px;
  font-family:'DM Sans',sans-serif;font-size:1rem;font-weight:500;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:.5rem;
  box-shadow:0 4px 16px rgba(192,87,42,.30);
  transition:transform .15s,box-shadow .2s;
}
.btn-login:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(192,87,42,.42);}
.btn-login:active{transform:translateY(0);}
.btn-login-arrow{transition:transform .2s;}
.btn-login:hover .btn-login-arrow{transform:translateX(4px);}

.faceid-hint{
  margin-top:1.5rem;padding:.9rem 1rem;
  background:rgba(61,43,31,.05);border-radius:12px;
  display:flex;align-items:center;gap:.7rem;
  font-size:.82rem;color:#7A6558;
}
.faceid-hint-icon{font-size:1.3rem;flex-shrink:0;}
.login-footer{margin-top:2rem;font-size:.78rem;color:#BDB5AC;text-align:center;}

/* ═══ APP — Topbar ═══ */
#appView{display:flex;flex-direction:column;min-height:100vh;}

.wl-topbar{
  background:rgba(250,247,242,.95);
  border-bottom:1px solid rgba(61,43,31,.08);
  padding:0 1.25rem;height:60px;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  position:sticky;top:0;z-index:100;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.wl-topbar-left{display:flex;align-items:center;gap:.6rem;flex-shrink:0;}
.wl-topbar-logo{
  font-family:'Playfair Display',serif;font-size:1.3rem;color:var(--bark);
}
.wl-topbar-logo span{color:var(--rust);font-style:italic;}
.wl-topbar-badge{
  background:var(--rust);color:#fff;
  font-size:.65rem;font-weight:600;
  padding:.15rem .45rem;border-radius:20px;letter-spacing:.04em;
  white-space:nowrap;
}
.wl-topbar-search{flex:1;max-width:380px;position:relative;}
.wl-search-ico{
  position:absolute;left:.75rem;top:50%;transform:translateY(-50%);
  font-size:.95rem;pointer-events:none;opacity:.5;
}
.wl-search-input{
  width:100%;padding:.6rem .75rem .6rem 2.4rem;
  border:1.5px solid rgba(61,43,31,.12);border-radius:12px;
  background:#fff;outline:none;
  font-family:'DM Sans',sans-serif;font-size:.9rem;color:var(--bark);
  transition:border-color .2s,box-shadow .2s;
}
.wl-search-input:focus{border-color:var(--rust);box-shadow:0 0 0 3px rgba(192,87,42,.1);}
.wl-topbar-right{display:flex;align-items:center;gap:.4rem;flex-shrink:0;}
.wl-topbar-btn{
  width:38px;height:38px;border-radius:10px;border:none;background:transparent;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:1.1rem;color:var(--bark);transition:background .15s;
}
.wl-topbar-btn:hover{background:rgba(61,43,31,.08);}

/* ═══ APP — Tabs navigation ═══ */
.wl-tabs{
  background:rgba(250,247,242,.95);
  border-bottom:1px solid rgba(61,43,31,.08);
  display:flex;overflow-x:auto;
  scrollbar-width:none;-ms-overflow-style:none;
  padding:0 1rem;
  backdrop-filter:blur(8px);
}
.wl-tabs::-webkit-scrollbar{display:none;}
.wl-tab{
  flex-shrink:0;padding:.85rem 1.1rem;
  border:none;background:transparent;cursor:pointer;
  font-family:'DM Sans',sans-serif;font-size:.85rem;font-weight:400;color:#9A8E84;
  display:flex;align-items:center;gap:.4rem;
  position:relative;transition:color .15s;white-space:nowrap;
}
.wl-tab::after{
  content:'';position:absolute;bottom:0;left:0;right:0;
  height:2px;background:var(--rust);border-radius:2px 2px 0 0;
  transform:scaleX(0);transition:transform .2s;
}
.wl-tab:hover{color:var(--bark);}
.wl-tab.active{color:var(--bark);font-weight:500;}
.wl-tab.active::after{transform:scaleX(1);}
.wl-tab-ico{font-size:1rem;}
@media(max-width:600px){.wl-tabs{display:none;}}

/* ═══ APP — Content area ═══ */
.wl-content{
  flex:1;padding:1.5rem 1.25rem;
  max-width:1100px;width:100%;margin:0 auto;
}

/* ═══ Random CTA ═══ */
.wl-random-cta{
  background:linear-gradient(135deg,var(--bark),#5A3D2E);
  border-radius:16px;padding:1.25rem 1.5rem;margin-bottom:1.5rem;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  cursor:pointer;transition:transform .15s,box-shadow .2s;
}
.wl-random-cta:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(61,43,31,.2);}
.wl-random-text{color:var(--sand);}
.wl-random-text strong{
  display:block;font-family:'Playfair Display',serif;
  font-size:1.15rem;font-weight:400;margin-bottom:.2rem;
}
.wl-random-text span{font-size:.82rem;color:var(--mist);font-weight:300;}
.wl-dice{font-size:2.2rem;animation:wiggle 3s ease-in-out infinite;}
@keyframes wiggle{
  0%,80%,100%{transform:rotate(0);}
  85%{transform:rotate(-15deg);}
  92%{transform:rotate(12deg);}
}

/* ═══ Grille de cartes ═══ */
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
  gap:16px;
}
@media(min-width:1000px){.grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:600px){.grid{grid-template-columns:1fr;}}

/* ═══ Carte activité (avec photo en haut) ═══ */
.act-card{
  overflow:hidden;cursor:pointer;
  background:rgba(255,255,255,.90);
  border:1px solid rgba(61,43,31,.08);
  border-radius:16px;
  transition:transform .15s,box-shadow .15s,border-color .15s;
}
.act-card:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 32px rgba(61,43,31,.14);
  border-color:rgba(61,43,31,.14);
}

/* Wrapper photo (overflow caché pour zoom) */
.act-img-wrap,
.act-card > .act-img-wrap{
  overflow:hidden;height:160px;position:relative;
}
/* Si app.js génère directement <img class="act-img"> sans wrapper, on applique le style */
.act-img{
  width:100%;height:160px;object-fit:cover;display:block;
  transition:transform .35s ease;
}
.act-img-wrap .act-img,
.act-card:hover .act-img{transform:scale(1.04);}

/* Corps */
.act-body{padding:12px 14px 14px;}
.act-top{display:flex;align-items:flex-start;gap:10px;}
.act-title{
  margin:0 0 8px;font-size:15px;font-weight:600;flex:1;
  line-height:1.3;color:var(--bark);
}
.card-meta{display:flex;flex-direction:column;gap:5px;margin-top:2px;}
.card-meta .meta{
  display:flex;align-items:center;gap:8px;
  font-weight:500;font-size:13px;color:rgba(61,43,31,.72);
}
.card-meta .meta .i{
  display:inline-flex;align-items:center;justify-content:center;
  color:rgba(61,43,31,.55);
}
.sico{width:18px;height:18px;flex:0 0 auto;}

/* Bouton favori */
.favbox{
  border:1.5px solid rgba(61,43,31,.12);background:rgba(255,255,255,.75);
  border-radius:12px;padding:7px 9px;
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;user-select:none;flex-shrink:0;
  transition:border-color .15s,background .15s;
}
.favbox .h{font-size:15px;line-height:1;color:rgba(61,43,31,.35);}
.favbox.on{border-color:rgba(192,87,42,.35);background:rgba(192,87,42,.07);}
.favbox.on .h{color:var(--rust);}

/* ═══ List head ═══ */
.wl-list-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;margin-bottom:16px;flex-wrap:wrap;
}
.wl-list-head h2{
  margin:0;font-family:'Playfair Display',serif;font-weight:400;font-size:1.4rem;
}
.wl-list-actions{display:flex;gap:10px;flex-wrap:wrap;}
.list-items{display:flex;flex-direction:column;gap:10px;}
.list-row{
  background:rgba(255,255,255,.80);border:1px solid rgba(61,43,31,.08);
  border-radius:14px;padding:12px 14px;
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  transition:box-shadow .15s,transform .1s;
}
.list-row:hover{box-shadow:0 4px 14px rgba(61,43,31,.10);transform:translateY(-1px);}
.list-row .title{font-weight:600;font-size:.95rem;}
.list-row .meta{
  display:flex;gap:10px;flex-wrap:wrap;
  color:rgba(61,43,31,.65);font-weight:500;font-size:.85rem;margin-top:4px;
}
.list-desc{margin-top:6px;color:rgba(61,43,31,.65);font-size:.85rem;white-space:pre-wrap;}
.badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 10px;border-radius:999px;
  border:1px solid rgba(61,43,31,.10);
  background:rgba(255,255,255,.75);font-size:13px;
}

/* ═══ Map ═══ */
.wl-map-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.wl-map-head h2{margin:0;font-family:'Playfair Display',serif;font-weight:400;}
.wk-mapWrap{position:relative;}
.wk-map{
  width:100%;height:68vh;min-height:420px;
  border-radius:18px;border:1px solid rgba(61,43,31,.10);
  overflow:hidden;background:#f5f0e8;
}
@media(max-width:640px){.wk-map{height:60vh;min-height:360px;}}
.map-legend--overlay{
  position:absolute;left:14px;bottom:14px;
  display:flex;gap:10px;z-index:600;flex-wrap:wrap;
}
.map-legend--overlay .badge{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(0,0,0,.08);
  box-shadow:0 12px 30px rgba(0,0,0,.14);
  backdrop-filter:blur(6px);cursor:pointer;
}
.pin-mini{width:14px;height:18px;display:inline-block;transform:translateY(1px);}
.pin-mini svg{width:14px;height:18px;display:block;}
.wk-map-popup .leaflet-popup-content-wrapper{
  border-radius:18px;box-shadow:0 18px 50px rgba(61,43,31,.18);
  overflow:hidden;background:rgba(255,255,255,.96);padding:0;
}
.wk-map-popup .leaflet-popup-content{margin:0!important;width:248px!important;}
.wk-map-popup-card{width:248px;overflow:hidden;}
.wk-map-popup-img{
  display:block;width:248px!important;height:128px!important;
  object-fit:cover!important;background:#f3f4f6;
}
.wk-map-popup-body{padding:12px;}
.wk-map-popup-title{
  font-weight:700;font-size:15px;line-height:1.25;margin-bottom:6px;color:var(--bark);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.wk-map-popup-place{
  color:rgba(61,43,31,.62);font-size:13px;font-weight:500;margin-bottom:10px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.wk-map-open-btn{
  width:100%;border:none;border-radius:12px;padding:10px 12px;
  cursor:pointer;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--rust),var(--rust-light));
  box-shadow:0 4px 12px rgba(192,87,42,.28);
  transition:filter .15s,box-shadow .15s,transform .1s;
}
.wk-map-open-btn:hover{filter:brightness(1.05);transform:translateY(-1px);}
.wk-pin{
  width:34px;height:34px;border-radius:14px;
  display:grid;place-items:center;font-size:18px;
  border:1px solid rgba(61,43,31,.18);
  box-shadow:0 10px 22px rgba(61,43,31,.18);
  background:rgba(255,255,255,.92);
}
.wk-pin.act{background:rgba(192,87,42,.14);}
.wk-pin.nuit{background:rgba(74,103,65,.14);}
.wk-pin.fav{outline:3px solid rgba(192,87,42,.35);}
.wk-locate-control{border:0;background:transparent;box-shadow:none;}
.wk-locate-control .wk-locate-btn{
  width:44px;height:44px;border-radius:14px;
  border:1px solid rgba(0,0,0,.08);background:rgba(255,255,255,.92);
  box-shadow:0 10px 30px rgba(0,0,0,.12);font-size:20px;
  line-height:44px;text-align:center;cursor:pointer;
  backdrop-filter:blur(6px);display:block;
}

/* ═══ FAB ═══ */
.wl-fab{
  position:fixed;bottom:1.5rem;right:1.5rem;
  width:56px;height:56px;border-radius:16px;
  background:linear-gradient(135deg,var(--rust),var(--rust-light));
  color:#fff;border:none;cursor:pointer;font-size:1.5rem;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 20px rgba(192,87,42,.45);
  transition:transform .2s,box-shadow .2s;z-index:200;
}
.wl-fab:hover{transform:translateY(-2px) rotate(90deg);box-shadow:0 10px 28px rgba(192,87,42,.55);}
@media(max-width:600px){.wl-fab{bottom:calc(4.5rem + env(safe-area-inset-bottom));}}

/* ═══ Bottom nav (mobile) ═══ */
.wl-bottom-nav{display:none;}
@media(max-width:600px){
  .wl-bottom-nav{
    display:flex;position:fixed;bottom:0;left:0;right:0;
    background:rgba(250,247,242,.96);
    border-top:1px solid rgba(61,43,31,.08);
    padding:.5rem 0 calc(.5rem + env(safe-area-inset-bottom));
    z-index:150;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  }
  .wl-content{padding-bottom:5.5rem;}
}
.wl-bnav-item{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:.2rem;
  border:none;background:transparent;cursor:pointer;padding:.4rem .2rem;
  color:#9A8E84;font-family:'DM Sans',sans-serif;font-size:.62rem;font-weight:400;
  transition:color .15s;
}
.wl-bnav-ico{font-size:1.3rem;transition:transform .2s;}
.wl-bnav-item.active{color:var(--rust);}
.wl-bnav-item.active .wl-bnav-ico{transform:translateY(-2px);}

/* ═══ Boutons globaux ═══ */
.btn{
  border:1.5px solid rgba(61,43,31,.14);
  background:rgba(255,255,255,.85);
  padding:9px 14px;border-radius:12px;
  cursor:pointer;font-weight:500;font-size:14px;
  font-family:'DM Sans',sans-serif;
  transition:background .15s,transform .1s,box-shadow .15s;
}
.btn:hover{background:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(61,43,31,.10);}
.btn.primary{
  border:none;color:#fff;
  background:linear-gradient(135deg,var(--rust),var(--rust-light));
  padding:10px 16px;
  box-shadow:0 4px 14px rgba(192,87,42,.30);
}
.btn.primary:hover{
  background:linear-gradient(135deg,#A8471C,#D4633C);
  box-shadow:0 8px 22px rgba(192,87,42,.42);
  transform:translateY(-1px);
}
.btn.danger{
  border:none;color:#fff;
  background:linear-gradient(135deg,#7f1d1d,#dc2626);
  box-shadow:0 4px 14px rgba(220,38,38,.28);
}
.btn.danger:hover{
  filter:brightness(1.06);transform:translateY(-1px);
  box-shadow:0 8px 20px rgba(220,38,38,.40);
}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none;}
/* Delete compat app.js */
.btnDelete,#btnDelete,#m_btnDelete{
  background:linear-gradient(135deg,#7f1d1d,#dc2626)!important;
  color:#fff!important;border:none!important;
  box-shadow:0 4px 14px rgba(220,38,38,.30)!important;
}
.btnDelete:hover,#btnDelete:hover,#m_btnDelete:hover{
  transform:translateY(-1px)!important;
  box-shadow:0 8px 22px rgba(220,38,38,.42)!important;
}

/* ═══ Formulaires ═══ */
.label{
  font-size:11px;color:var(--muted);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;margin:0 0 6px;
}
.input,select,textarea{
  width:100%;padding:10px 12px;border-radius:12px;
  border:1.5px solid rgba(61,43,31,.14);outline:none;background:#fff;
  font-family:'DM Sans',sans-serif;font-size:14px;color:var(--bark);
  transition:border-color .2s,box-shadow .2s;
}
.input:focus,select:focus,textarea:focus{
  border-color:var(--rust);box-shadow:0 0 0 3px rgba(192,87,42,.08);
}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:640px){.form-grid{grid-template-columns:1fr;}}
.hint{font-size:13px;color:var(--muted);}
.muted,.wl-muted{color:var(--muted);}
.wl-empty{padding:2rem 0;color:var(--muted);font-weight:500;}

/* ═══ Nav sidebar (dans modales) ═══ */
.nav{display:flex;flex-direction:column;gap:6px;margin-top:10px;}
.nav-item,.nav button{
  width:100%;display:flex;align-items:center;gap:10px;
  padding:10px 12px;border-radius:12px;border:1.5px solid transparent;
  background:transparent;cursor:pointer;font-weight:500;
  font-family:'DM Sans',sans-serif;font-size:14px;color:rgba(61,43,31,.70);
  transition:background .15s,border-color .15s,color .15s;
}
.nav-item:hover,.nav button:hover{background:rgba(61,43,31,.05);color:var(--bark);}
.nav-item.active,.nav button.active{
  background:rgba(255,255,255,.88);border-color:rgba(61,43,31,.12);
  color:var(--bark);font-weight:600;
  box-shadow:0 2px 8px rgba(61,43,31,.07);
}
.nav .ico,.ico{width:22px;text-align:center;opacity:.7;}
.sep{border:none;border-top:1px solid rgba(61,43,31,.08);margin:14px 0;}

/* ═══ Modales ═══ */
.modal{
  position:fixed;inset:0;z-index:99999;
  display:flex;align-items:center;justify-content:center;padding:14px;
}
.modal-backdrop{
  position:absolute;inset:0;
  background:rgba(61,43,31,.42);backdrop-filter:blur(4px);
}
body.modal-open{overflow:hidden;}
.modal-card{
  position:relative;max-height:90vh;
  width:min(560px,100%);
  display:flex;flex-direction:column;overflow:hidden;
  background:rgba(250,247,242,.96);
  border:1px solid rgba(61,43,31,.10);
  border-radius:20px;
  box-shadow:0 24px 70px rgba(61,43,31,.22);
  padding:16px;
}
.modal-add{width:min(720px,100%);}
@media(max-width:640px){
  .modal{padding:0 10px 10px;}
  .modal-card{max-height:92vh;border-radius:20px;}
}
.modal-head{display:flex;align-items:flex-start;gap:12px;}
.modal-ico{
  width:44px;height:44px;border-radius:14px;
  display:grid;place-items:center;
  background:rgba(192,87,42,.10);border:1px solid rgba(192,87,42,.15);
  flex:0 0 auto;font-size:1.2rem;
}
.modal-title{font-weight:700;font-size:16px;margin-top:2px;color:var(--bark);}
.modal-sub{color:var(--muted);font-weight:400;font-size:12px;margin-top:2px;}
.modal-x{
  margin-left:auto;border:1.5px solid rgba(61,43,31,.12);
  background:rgba(255,255,255,.7);border-radius:12px;
  padding:7px 10px;cursor:pointer;font-weight:700;
  transition:background .15s;
}
.modal-x:hover{background:#fff;}
.modal-body{padding:14px 0;overflow-y:auto;flex:1;}
.modal-foot{
  display:flex;justify-content:flex-end;gap:10px;
  padding-top:12px;border-top:1px solid rgba(61,43,31,.08);margin-top:12px;flex-shrink:0;
}
.modal-list{margin:12px 0 0 18px;color:rgba(61,43,31,.80);font-weight:500;line-height:1.55;}
.modal-list li{margin:8px 0;}
.modal-actions{display:flex;justify-content:flex-end;margin-top:14px;}

/* ═══ Detail panel ═══ */
.wl-detail-card{background:rgba(255,255,255,.88);border:1px solid rgba(61,43,31,.08);border-radius:16px;overflow:hidden;}
.wl-detail-img-wrap{height:220px;overflow:hidden;}
.wl-detail-img{width:100%;height:100%;object-fit:cover;display:block;}
.wl-detail-body{padding:14px;}
.wl-detail-title{font-family:'Playfair Display',serif;font-weight:400;font-size:1.4rem;margin:0 0 8px;}
.wl-detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;font-size:.85rem;color:rgba(61,43,31,.70);}
.wl-detail-meta-row{display:flex;gap:10px;flex-wrap:wrap;}
.wl-detail-site{color:var(--rust);font-size:.85rem;word-break:break-all;}
.wl-detail-desc{color:rgba(61,43,31,.70);font-size:.9rem;line-height:1.55;margin:8px 0;white-space:pre-wrap;}
.wl-detail-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}

/* ═══ Ancien détail (compat app.js) ═══ */
.detail{padding:14px;}
.hero{height:220px;border-radius:16px;overflow:hidden;border:1px solid rgba(61,43,31,.08);background:#fff;}
.hero img{width:100%;height:100%;object-fit:cover;}
.metaRow{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px;}
.pill{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 12px;border:1px solid rgba(192,87,42,.18);
  background:rgba(192,87,42,.06);border-radius:999px;
  font-weight:500;font-size:13px;color:rgba(61,43,31,.78);
}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}
.empty{padding:14px;color:var(--muted);font-weight:500;}
.card{
  background:rgba(255,255,255,.88);border:1px solid rgba(61,43,31,.08);
  border-radius:var(--radius);
}

/* Animations */
.fade-in{animation:fadeIn .35s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

/* Toast */
#__toast{
  position:fixed;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom));
  transform:translateX(-50%);
  background:rgba(61,43,31,.92);color:var(--sand);
  padding:10px 16px;border-radius:14px;
  font-weight:600;font-size:13px;z-index:9999;max-width:92vw;
}

/* ═══ Calendrier ═══ */
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 8px;}
.cal-title{font-weight:700;font-size:16px;margin-left:8px;font-family:'Playfair Display',serif;}
.seg{display:inline-flex;padding:4px;border-radius:12px;background:rgba(61,43,31,.06);border:1px solid rgba(61,43,31,.10);}
.seg-btn{border:none;background:transparent;padding:7px 12px;border-radius:10px;font-weight:600;cursor:pointer;font-family:'DM Sans',sans-serif;}
.seg-active{background:rgba(255,255,255,.9);box-shadow:0 4px 12px rgba(61,43,31,.08);}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:15px;}
.cal-dow{font-size:12px;font-weight:700;opacity:.65;padding:6px 8px;}
.cal-cell{
  border:1px solid rgba(61,43,31,.08);background:rgba(255,255,255,.75);
  border-radius:12px;padding:8px;min-height:70px;
  cursor:pointer;position:relative;transition:border-color .15s,box-shadow .1s;
}
.cal-cell:hover{border-color:rgba(61,43,31,.15);box-shadow:0 2px 8px rgba(61,43,31,.10);}
.cal-cell.is-today{outline:2px solid rgba(192,87,42,.45);background:rgba(192,87,42,.05);}
.cal-cell.sel{outline:2px solid rgba(192,87,42,.45);box-shadow:0 8px 20px rgba(192,87,42,.14);}
.cal-num{font-weight:800;margin-bottom:4px;}
.cal-dots{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px;}
.dot{width:8px;height:8px;border-radius:999px;background:rgba(61,43,31,.25);}
.dot.garde{background:rgba(192,87,42,.9);}
.dot.match{background:rgba(239,68,68,.9);}
.dot.autre{background:rgba(74,103,65,.9);}
.cal-ev{margin-top:4px;padding:3px 6px;border-radius:6px;font-weight:600;font-size:11px;}
.type-garde{background:rgba(192,87,42,.12);color:var(--rust);}
.type-match{background:#ffd6d6;color:#c0392b;}
.type-autre{background:rgba(74,103,65,.12);color:var(--moss);}
.cal-pill{flex:0 0 auto;font-size:12px;font-weight:700;padding:6px 10px;border-radius:999px;color:#fff;}
.cal-pill.garde{background:var(--rust);}
.cal-pill.match{background:rgba(239,68,68,.95);}
.cal-pill.autre{background:var(--moss);}
.cal-item{
  display:flex;gap:10px;align-items:flex-start;
  padding:10px 12px;border-radius:12px;
  border:1px solid rgba(61,43,31,.08);background:rgba(255,255,255,.65);
  margin-top:10px;transition:box-shadow .1s;
}
.cal-item:hover{box-shadow:0 2px 8px rgba(61,43,31,.10);}
.cal-item h4{margin:0;font-size:14px;font-weight:700;}
.cal-item .meta{opacity:.7;font-weight:500;font-size:12px;margin-top:2px;}

/* Print */
.print-area{display:none;}
@media print{
  body{background:#fff!important;}
  #appView,.wl-topbar,.wl-tabs,.wl-fab,.wl-bottom-nav{display:none!important;}
  #printArea{display:block!important;padding:10mm;}
}

/* Misc compat */
.child-emoji{position:relative;font-size:20px;line-height:1;display:inline-block;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:720px){.grid2{grid-template-columns:1fr;}}
.act-done-btn.on{filter:saturate(1.1);}

/* ═══ Calendrier — styles manquants ═══ */
.cal-today { outline: 2px solid rgba(192,87,42,.50) !important; background: rgba(192,87,42,.06) !important; }
.cal-selected { outline: 2px solid var(--rust) !important; box-shadow: 0 4px 14px rgba(192,87,42,.18) !important; }
.cal-out { opacity: .4; }
.cal-week { border-radius: 14px; }
.cal-daynum { font-weight: 700; font-size: 13px; margin-bottom: 4px; }
.cal-time  { font-size: 12px; font-weight: 700; color: var(--muted); flex-shrink: 0; width: 42px; }
.cal-main  { flex: 1; }
.cal-title2{ font-weight: 600; font-size: 14px; }
.cal-sub2  { font-size: 12px; color: var(--muted); margin-top: 2px; }
.cal-row   { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid rgba(61,43,31,.06); }
.cal-row:last-child { border-bottom: none; }

/* Rand modal body */
.rand-title { font-family: 'Playfair Display', serif; font-weight: 400; font-size: 1.3rem; margin-bottom: 10px; }
.rand-meta  { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.rand-desc  { color: rgba(61,43,31,.70); font-size: .9rem; white-space: pre-wrap; margin-top: 8px; }

/* Login bg — s'applique sur #loginView visible */
body.login-bg {
  background-image: url('https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=2000&q=85');
  background-size: cover; background-repeat: no-repeat; background-position: center 40%;
}
body.login-bg::before {
  content: ''; position: fixed; inset: 0;
  background: linear-gradient(to bottom, rgba(30,15,8,.28) 0%, rgba(30,15,8,.55) 100%);
  z-index: 0;
}
#loginView { position: relative; z-index: 1; }
#loginPage { position: relative; z-index: 1; }

/* Forcer la page login à prendre tout l'écran */
#loginView { min-height: 100vh; }
.login-page { min-height: 100vh; }

/* Btn tiny (liste calendrier) */
.btn.tiny { padding: 5px 10px; font-size: 12px; border-radius: 8px; }

/* ═══ Centrage modales — correction ═══ */
.modal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 99999 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 16px !important;
}
.modal[style*="display:none"],
.modal[style*="display: none"] {
  display: none !important;
}
.modal-backdrop {
  position: fixed !important;
  inset: 0 !important;
  background: rgba(61,43,31,.45) !important;
  backdrop-filter: blur(4px) !important;
}
.modal-card {
  position: relative !important;
  z-index: 1 !important;
  max-height: 88vh !important;
  overflow-y: auto !important;
  width: min(560px, 100%) !important;
  margin: 0 !important;
}
.modal-add { width: min(680px, 100%) !important; }

/* Nuits insolites — s'assure que #view-nights est bien affiché */
#view-nights { width: 100%; }

/* Calendrier — cellule */
.cal-cell {
  min-height: 60px !important;
  padding: 6px 8px !important;
  cursor: pointer;
}
button.cal-cell {
  border: 1px solid rgba(61,43,31,.08);
  background: rgba(255,255,255,.75);
  border-radius: 12px;
  font-family: 'DM Sans', sans-serif;
  text-align: left;
  transition: border-color .15s, box-shadow .1s;
}
button.cal-cell:hover { border-color: rgba(61,43,31,.18); box-shadow: 0 2px 8px rgba(61,43,31,.10); }
button.cal-cell.cal-today { outline: 2px solid var(--rust); background: rgba(192,87,42,.05); }
button.cal-cell.cal-selected { outline: 2px solid var(--rust); box-shadow: 0 4px 14px rgba(192,87,42,.18); }
button.cal-cell.cal-out { opacity: .38; }

/* ═══ Modales affichées en flex (centrage garanti) ═══ */
.modal[style*="display: flex"],
.modal[style*="display:flex"] {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* Modal détail activité (créée dynamiquement par app.js) */
#activityDetailModal .modal-card {
  max-width: 680px !important;
  width: min(680px, 96vw) !important;
}
#activityDetailModal .act-modal-actions {
  display: flex !important;
  justify-content: space-between !important;
  gap: 10px !important;
  padding-top: 12px !important;
  border-top: 1px solid rgba(61,43,31,.08) !important;
  margin-top: 12px !important;
  flex-shrink: 0 !important;
}
#activityDetailModal .act-close-btn {
  background: rgba(255,255,255,.85) !important;
  border: 1.5px solid rgba(61,43,31,.14) !important;
  color: var(--bark) !important;
}
#activityDetailModal .act-edit-btn {
  background: linear-gradient(135deg, var(--rust), var(--rust-light)) !important;
  border: none !important;
  color: #fff !important;
}
