*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --rose:       #c9748a;
  --rose-light: #f7e8ec;
  --rose-dark:  #a0556a;
  --beige:      #fdf6f0;
  --text:       #3d2b33;
  --text-light: #7a5c66;
  --white:      #ffffff;
  --shadow:     0 4px 20px rgba(180,100,120,0.12);
  --radius:     16px;
  --font-serif: 'Playfair Display', Georgia, serif;
  --font-sans:  'Lato', sans-serif;
}
html { scroll-behavior: smooth; }
body { font-family: var(--font-sans); background: var(--beige); color: var(--text); min-height: 100vh; }

/* PASSWORD */
.password-screen { position:fixed;inset:0;background:linear-gradient(135deg,#fce4ec,#f8bbd0,#fce4ec);display:flex;align-items:center;justify-content:center;z-index:9999; }
.password-box { background:var(--white);border-radius:24px;padding:48px 40px;max-width:420px;width:90%;text-align:center;box-shadow:0 20px 60px rgba(180,100,120,.2);animation:fadeIn .5s ease; }
.password-box .hearts-deco { font-size:2.5rem;margin-bottom:12px; }
.password-box h1 { font-family:var(--font-serif);color:var(--rose-dark);margin-bottom:12px;font-size:2rem; }
.password-box p { color:var(--text-light);margin-bottom:24px;line-height:1.6; }

/* INPUTS */
input[type=text], input[type=password], textarea { width:100%;padding:12px 16px;border:2px solid #f0d6db;border-radius:12px;font-family:var(--font-sans);font-size:1rem;color:var(--text);background:var(--rose-light);outline:none;transition:border-color .2s;margin-bottom:12px; }
input:focus, textarea:focus { border-color:var(--rose); }
textarea { resize:vertical; }

/* BUTTONS */
.btn-primary { display:inline-block;padding:12px 28px;background:linear-gradient(135deg,var(--rose),var(--rose-dark));color:var(--white);border:none;border-radius:50px;font-size:1rem;font-weight:700;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 15px rgba(180,100,120,.3); }
.btn-primary:hover { transform:translateY(-2px);box-shadow:0 8px 25px rgba(180,100,120,.4); }
.btn-secondary { display:inline-block;padding:12px 28px;background:transparent;color:var(--rose-dark);border:2px solid var(--rose);border-radius:50px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .2s; }
.btn-secondary:hover { background:var(--rose-light); }
.btn-danger { padding:8px 14px;background:#e57373;color:white;border:none;border-radius:8px;cursor:pointer;font-size:.85rem; }
.btn-close { background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--text-light); }
.btn-admin { padding:8px 18px;background:var(--rose-light);color:var(--rose-dark);border:1px solid var(--rose);border-radius:50px;cursor:pointer;font-size:.85rem;font-weight:700; }

/* MUSIC PLAYER */
.music-player { position:fixed;bottom:16px;right:16px;z-index:100;background:var(--white);border:1px solid #f0d6db;border-radius:var(--radius);padding:10px 14px;box-shadow:var(--shadow);min-width:240px;max-width:300px; }
.music-info { display:flex;align-items:center;gap:8px;margin-bottom:6px; }
.music-icon { animation:pulse 2s infinite; }
#music-title { font-size:.78rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px; }
.music-controls { display:flex;align-items:center;gap:6px; }
.music-controls button { background:none;border:none;cursor:pointer;font-size:1rem;color:var(--rose-dark);padding:2px 4px; }
.music-controls button:hover { transform:scale(1.2); }
#volume-slider { width:65px;accent-color:var(--rose);cursor:pointer; }


/* NAVBAR */
.navbar { position:sticky;top:0;z-index:50;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:space-between;padding:14px 32px;border-bottom:1px solid #f0d6db;box-shadow:0 2px 12px rgba(180,100,120,.08); }
.nav-brand { font-family:var(--font-serif);font-size:1.2rem;color:var(--rose-dark); }
.nav-links { display:flex;align-items:center;gap:20px; }
.nav-links a { color:var(--text-light);text-decoration:none;font-size:.95rem;font-weight:600;transition:color .2s; }
.nav-links a:hover { color:var(--rose-dark); }
.nav-burger { display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--rose-dark); }

/* PAGES */
.page { display:none;min-height:calc(100vh - 60px);padding-bottom:60px; }
.page.active { display:block;animation:fadeIn .4s ease; }

/* HERO */
.hero { position:relative;overflow:hidden;background:linear-gradient(160deg,#fff0f3,#fce4ec 60%,#f8bbd0);padding:80px 24px 60px;text-align:center;min-height:80vh;display:flex;align-items:center;justify-content:center; }
.hero-content { position:relative;z-index:2;max-width:700px;margin:auto; }
.hero-tag { font-size:.9rem;text-transform:uppercase;letter-spacing:3px;color:var(--rose);margin-bottom:20px; }
.hero h1 { font-family:var(--font-serif);font-size:clamp(2.5rem,8vw,5rem);color:var(--rose-dark);line-height:1.15;margin-bottom:20px; }
.hero h1 em { color:var(--rose);font-style:italic; }
.hero-sub { font-size:1.1rem;color:var(--text-light);margin-bottom:16px; }
.hero-msg { font-size:1rem;color:var(--text-light);max-width:500px;margin:0 auto 32px;line-height:1.7; }
.hero-cta { display:flex;gap:16px;justify-content:center;flex-wrap:wrap; }

/* FLOATING HEARTS */
.floating-hearts { position:absolute;inset:0;pointer-events:none;overflow:hidden; }
.floating-hearts span { position:absolute;animation:floatUp linear infinite;font-size:1.5rem;opacity:.6; }
.floating-hearts span:nth-child(1){left:10%;animation-duration:8s;animation-delay:0s;font-size:1rem}
.floating-hearts span:nth-child(2){left:25%;animation-duration:10s;animation-delay:2s;font-size:1.8rem}
.floating-hearts span:nth-child(3){left:45%;animation-duration:7s;animation-delay:1s;font-size:1.2rem}
.floating-hearts span:nth-child(4){left:60%;animation-duration:9s;animation-delay:3s;font-size:1rem}
.floating-hearts span:nth-child(5){left:75%;animation-duration:11s;animation-delay:.5s;font-size:1.5rem}
.floating-hearts span:nth-child(6){left:88%;animation-duration:8s;animation-delay:4s;font-size:1.2rem}

/* COUNTDOWN */
.countdown-section { max-width:900px;margin:0 auto;padding:50px 24px;text-align:center; }
.countdown-section h2 { font-family:var(--font-serif);color:var(--rose-dark);font-size:2rem;margin-bottom:8px; }
.countdown-sub { color:var(--text-light);margin-bottom:28px;font-size:1rem; }
.countdown-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:700px;margin:0 auto; }
.countdown-grid.big { max-width:800px; }
.count-box { background:var(--white);border-radius:var(--radius);padding:28px 12px;box-shadow:var(--shadow);border-top:3px solid var(--rose); }
.count-box span { display:block;font-family:var(--font-serif);font-size:clamp(2rem,5vw,3.5rem);color:var(--rose-dark);line-height:1; }
.count-box small { display:block;margin-top:8px;color:var(--text-light);font-size:.85rem;text-transform:uppercase;letter-spacing:1px; }

/* STATS */
.stats-section { display:flex;justify-content:center;gap:24px;flex-wrap:wrap;padding:20px 24px 40px; }
.stat-card { background:var(--white);border-radius:var(--radius);padding:28px 36px;text-align:center;box-shadow:var(--shadow);min-width:140px;border-top:3px solid var(--rose); }
.stat-num { display:block;font-family:var(--font-serif);font-size:2.5rem;color:var(--rose-dark); }
.stat-label { font-size:.85rem;color:var(--text-light);margin-top:4px; }

/* PAGE HEADER */
.page-header { text-align:center;padding:50px 24px 30px; }
.page-header h2 { font-family:var(--font-serif);font-size:2.2rem;color:var(--rose-dark);margin-bottom:10px; }
.page-header p { color:var(--text-light); }

/* FORM */
.form-card { max-width:600px;margin:0 auto 40px;background:var(--white);border-radius:var(--radius);padding:32px;box-shadow:var(--shadow);border-top:3px solid var(--rose); }
.form-card h3 { font-family:var(--font-serif);color:var(--rose-dark);margin-bottom:20px; }
.upload-label { display:flex;align-items:center;gap:10px;background:var(--rose-light);border:2px dashed var(--rose);border-radius:12px;padding:14px 16px;cursor:pointer;font-size:.9rem;color:var(--rose-dark);margin-bottom:12px; }
.upload-label input { display:none; }
.photo-preview { width:100%;max-height:200px;object-fit:cover;border-radius:10px;margin-bottom:12px; }
.form-status { text-align:center;font-size:.9rem;margin-top:10px;color:var(--rose); }
.error-msg { color:#e57373;font-size:.9rem;margin-top:8px; }

/* MESSAGES */
.messages-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;max-width:1100px;margin:0 auto;padding:0 24px 40px; }
.message-card { background:var(--white);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border-left:4px solid var(--rose);animation:fadeIn .4s ease; }
.msg-nom { font-weight:700;color:var(--rose-dark);margin-bottom:8px; }
.msg-texte { color:var(--text);line-height:1.6;font-size:.95rem;margin-bottom:10px; }
.msg-photo { width:100%;border-radius:10px;margin-top:10px;cursor:pointer;transition:opacity .2s; }
.msg-photo:hover { opacity:.85; }
.msg-date { font-size:.75rem;color:#bbb;margin-top:8px; }
.msg-delete { font-size:.75rem;color:#e57373;cursor:pointer;float:right;display:none;background:none;border:none; }
.admin-active .msg-delete { display:inline; }

/* GALERIE */
.galerie-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;max-width:1100px;margin:0 auto;padding:0 24px 40px; }
.galerie-item { position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:1;cursor:pointer; }
.galerie-item img { width:100%;height:100%;object-fit:cover;transition:transform .3s; }
.galerie-item:hover img { transform:scale(1.05); }
.gal-delete { position:absolute;top:8px;right:8px;background:rgba(229,115,115,.9);color:white;border:none;border-radius:6px;padding:4px 8px;cursor:pointer;font-size:.75rem;display:none; }
.admin-active .gal-delete { display:block; }

/* ADMIN */
.admin-panel { position:fixed;right:16px;top:80px;z-index:200;background:var(--white);border-radius:var(--radius);width:min(380px,95vw);max-height:75vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.15);padding:24px; }
.admin-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:16px; }
.admin-header h3 { color:var(--rose-dark);font-family:var(--font-serif); }
.admin-info { color:#4caf50;font-size:.9rem;margin-bottom:16px; }
.admin-item { display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f0d6db;gap:10px; }
.admin-item-text { font-size:.85rem;color:var(--text);flex:1; }
.overlay { position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:150; }

/* LIGHTBOX */
.lightbox { position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:999;display:flex;align-items:center;justify-content:center;padding:20px; }
.lightbox img { max-width:90vw;max-height:90vh;border-radius:10px; }

/* FOOTER */
.footer { text-align:center;padding:24px;color:var(--text-light);font-size:.85rem;border-top:1px solid #f0d6db; }

/* LOADING */
.loading { text-align:center;color:var(--text-light);padding:40px;grid-column:1/-1; }

/* ANIMATIONS */
@keyframes fadeIn { from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)} }
@keyframes floatUp { 0%{transform:translateY(110vh) rotate(0deg);opacity:.6}100%{transform:translateY(-10vh) rotate(20deg);opacity:0} }
@keyframes pulse { 0%,100%{transform:scale(1)}50%{transform:scale(1.15)} }

/* RESPONSIVE */
@media(max-width:768px){
  .nav-links{display:none;flex-direction:column;position:absolute;top:60px;left:0;right:0;background:var(--white);padding:16px;border-bottom:1px solid #f0d6db;z-index:40}
  .nav-links.open{display:flex}
  .nav-burger{display:block}
  .navbar{padding:14px 20px;position:relative}
  .music-player{max-width:220px;bottom:8px;right:8px;padding:8px 10px}
  .form-card{padding:20px;margin:0 16px 32px}
  .messages-grid,.galerie-grid{padding:0 16px 32px}
  .admin-panel{right:50%;transform:translateX(50%);top:70px}
  .countdown-grid{grid-template-columns:repeat(2,1fr)}
}


/* ===== MINI COUNTDOWN ÉCRAN MOT DE PASSE ===== */
.pwd-countdown {
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #f0d6db;
}
.pwd-countdown-label {
  font-size: .85rem;
  color: var(--text-light);
  margin-bottom: 14px;
}
.pwd-countdown-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.pwd-count-box {
  background: var(--rose-light);
  border-radius: 10px;
  padding: 10px 6px;
  text-align: center;
  border-top: 2px solid var(--rose);
}
.pwd-count-box span {
  display: block;
  font-family: var(--font-serif);
  font-size: 1.4rem;
  color: var(--rose-dark);
  line-height: 1;
}
.pwd-count-box small {
  display: block;
  font-size: .65rem;
  color: var(--text-light);
  margin-top: 4px;
  text-transform: uppercase;
  letter-spacing: .5px;
}


/* ===== BOUTON DIAPORAMA ===== */
.btn-slideshow {
  margin-top: 14px;
  background: var(--rose);
  color: white;
  border: none;
  padding: 10px 22px;
  border-radius: 50px;
  font-size: .9rem;
  cursor: pointer;
  transition: background .2s, transform .2s;
}
.btn-slideshow:hover { background: var(--rose-dark); transform: scale(1.04); }

/* ===== MODAL DIAPORAMA ===== */
.slideshow-modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.slideshow-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.92);
}
.slideshow-container {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: 800px;
  padding: 20px;
}
.slideshow-img {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
  border-radius: 12px;
  opacity: 0;
  transition: opacity 0.8s ease-in-out;
}
.slideshow-img.visible { opacity: 1; }
.slideshow-nom {
  margin-top: 14px;
  color: #fff;
  font-family: var(--font-serif);
  font-size: 1.1rem;
  font-style: italic;
  opacity: .85;
  min-height: 1.4em;
  transition: opacity 0.5s;
}
.slideshow-controls {
  display: flex;
  gap: 12px;
  margin-top: 16px;
}
.slide-btn {
  background: rgba(255,255,255,.15);
  border: 1px solid rgba(255,255,255,.3);
  color: #fff;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  font-size: 1rem;
  cursor: pointer;
  transition: background .2s;
}
.slide-btn:hover { background: rgba(255,255,255,.3); }
.slide-close {
  background: rgba(220,50,50,.3);
  border-color: rgba(220,50,50,.5);
}
.slide-close:hover { background: rgba(220,50,50,.6); }
.slideshow-counter {
  margin-top: 10px;
  color: rgba(255,255,255,.5);
  font-size: .8rem;
}


/* ===== MULTI UPLOAD GALERIE ===== */
.gal-previews-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
  gap: 8px;
  margin-bottom: 14px;
}
.gal-preview-item {
  position: relative;
  aspect-ratio: 1;
  border-radius: 10px;
  overflow: hidden;
  border: 2px solid var(--rose-light);
}
.gal-preview-item img { width:100%; height:100%; object-fit:cover; }
.gal-preview-item .remove-btn {
  position: absolute;
  top: 3px; right: 3px;
  background: rgba(229,115,115,.9);
  color: white;
  border: none;
  border-radius: 50%;
  width: 20px; height: 20px;
  font-size: .65rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}


/* ===== NOM SOUS PHOTO GALERIE ===== */
.galerie-item {
  display: flex;
  flex-direction: column;
}
.galerie-item img {
  flex: 1;
  min-height: 0;
}
.gal-nom {
  background: rgba(255,255,255,0.92);
  color: var(--rose-dark);
  font-size: .75rem;
  font-weight: 700;
  text-align: center;
  padding: 5px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
