/* =============================================================
   Identité visuelle reprise de l'invitation papier :
   crème, bordeaux, terracotta, or, motifs géométriques.
   ============================================================= */
:root{
  --creme:        #FAF5EA;
  --creme-fonce:  #F3EBDA;
  --bordeaux:     #7E2230;
  --bordeaux-2:   #6A1B27;
  --terracotta:   #D99C8B;
  --or:           #B98A3B;
  --encre:        #2B2620;
  --ok:           #3E6B3A;
}

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

body{
  font-family:'Source Serif 4', Georgia, serif;
  background:var(--creme-fonce);
  color:var(--encre);
  line-height:1.6;
}

/* Bande décorative haut/bas de page, façon bordure tissée de l'invitation */
.bande-motif{
  height:26px;
  background:
    repeating-linear-gradient(135deg,
      var(--terracotta) 0 10px, var(--creme-fonce) 10px 20px,
      var(--bordeaux) 20px 30px, var(--creme-fonce) 30px 40px);
  border-block:3px solid var(--or);
}

.page{
  max-width:720px;
  margin:0 auto;
  padding:32px 20px 56px;
}

.carte{
  background:var(--creme);
  border:2px solid var(--or);
  box-shadow:0 6px 24px rgba(43,38,32,.12);
  padding:36px 32px;
}

h1, h2{
  font-family:'Yeseva One', serif;
  color:var(--bordeaux);
  text-align:center;
  line-height:1.15;
  font-weight:400;
}
h1{ font-size:2.1rem; margin-bottom:.4em; }
h2{ font-size:1.35rem; margin:1.4em 0 .5em; }

.separateur{
  width:180px; height:1px; margin:22px auto;
  background:linear-gradient(to right, transparent, var(--or) 25%, var(--or) 75%, transparent);
}

.centre{ text-align:center; }
.bordeaux{ color:var(--bordeaux); }
.petit{ font-size:.85rem; color:#5c5347; }

/* --- Bloc infos pratiques (Quand / Où / ...) --- */
.infos dt{
  font-weight:700; color:var(--bordeaux);
  font-variant:small-caps; letter-spacing:.5px;
  margin-top:14px;
}
.infos dd{ margin-left:0; }

/* --- Formulaires --- */
label{ display:block; font-weight:600; margin:16px 0 4px; }
input[type=text], input[type=tel], input[type=email],
input[type=number], input[type=password], textarea, select{
  width:100%;
  padding:10px 12px;
  font:inherit;
  border:1.5px solid var(--or);
  border-radius:2px;
  background:#fff;
}
input:focus, textarea:focus, select:focus{
  outline:2px solid var(--bordeaux);
  outline-offset:1px;
}
.deux-colonnes{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
@media (max-width:560px){ .deux-colonnes{ grid-template-columns:1fr; } }

button, .bouton{
  display:inline-block;
  margin-top:24px;
  padding:12px 28px;
  font:inherit; font-weight:700;
  color:var(--creme);
  background:var(--bordeaux);
  border:none; border-radius:2px;
  cursor:pointer;
  text-decoration:none;
}
button:hover, .bouton:hover{ background:var(--bordeaux-2); }
.bouton-secondaire{ background:var(--or); }
.bouton-petit{ margin:0; padding:6px 12px; font-size:.85rem; }

/* --- Messages --- */
.message-ok, .message-erreur{
  padding:14px 16px; margin:18px 0; border-radius:2px;
}
.message-ok{ background:#E8EFE4; border:1.5px solid var(--ok); }
.message-erreur{ background:#F6E3E3; border:1.5px solid var(--bordeaux); }

/* --- Code invité mis en évidence --- */
.code-invite{
  display:inline-block;
  font-family:'Yeseva One', serif;
  font-size:2rem;
  letter-spacing:6px;
  color:var(--bordeaux);
  border:2px dashed var(--or);
  padding:10px 22px;
  margin:12px 0;
  background:#fff;
}

/* --- Tableaux admin --- */
table{ width:100%; border-collapse:collapse; margin-top:18px; font-size:.92rem; }
th, td{ padding:8px 10px; border-bottom:1px solid var(--terracotta); text-align:left; vertical-align:top; }
th{ background:var(--bordeaux); color:var(--creme); }
tr:nth-child(even) td{ background:#F5EEDF; }

.badge{ padding:2px 8px; border-radius:10px; font-size:.78rem; white-space:nowrap; }
.badge-attente{ background:#F0E3C0; border:1px solid var(--or); }
.badge-valide{  background:#E8EFE4; border:1px solid var(--ok); }
.badge-refuse{  background:#F6E3E3; border:1px solid var(--bordeaux); }
.badge-present{ background:var(--ok); color:#fff; }

.stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:14px; margin:18px 0;
}
.stat{
  background:#fff; border:1.5px solid var(--or);
  padding:14px; text-align:center;
}
.stat .chiffre{ font-family:'Yeseva One',serif; font-size:1.8rem; color:var(--bordeaux); }

nav.admin-nav{ margin-bottom:20px; }
nav.admin-nav a{ color:var(--bordeaux); font-weight:700; margin-right:18px; }

/* --- Navigation publique, photo, carte --- */
.nav-publique{ text-align:center; margin-bottom:22px; }
.nav-publique a{
  color:var(--bordeaux); font-weight:700; margin:0 10px;
  text-decoration:none; border-bottom:2px solid var(--or); padding-bottom:2px;
}
.nav-publique a:hover{ color:var(--bordeaux-2); }

.photo-heros{
  width:200px; height:200px; object-fit:cover; border-radius:50%;
  border:4px solid var(--or); outline:2px solid var(--bordeaux); outline-offset:4px;
  margin:14px 0 6px;
}
.grand-repere{ font-size:1.15rem; }

.carte-osm{ width:100%; height:380px; border:2px solid var(--or); display:block; }
